@artenx/dshb 0.1.13 → 0.1.14
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.
|
@@ -23,7 +23,11 @@ function decorateFileSystem(fs) {
|
|
|
23
23
|
return ref.provider.fs.stat(ref.remotePath, signal);
|
|
24
24
|
};
|
|
25
25
|
fs.lstat = async (path, opts, signal) => {
|
|
26
|
-
const
|
|
26
|
+
const resolved = await fs.resolve(path, {
|
|
27
|
+
cwd: opts?.cwd,
|
|
28
|
+
signal
|
|
29
|
+
});
|
|
30
|
+
const ref = resolver.resolve(fs.processPath(resolved));
|
|
27
31
|
if (ref.kind === "local") return origLstat(path, opts, signal);
|
|
28
32
|
if (ref.kind === "unrouted") throw new Error(`node ${ref.nodeId} world not available`);
|
|
29
33
|
return ref.provider.fs.lstat(ref.remotePath, opts, signal);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"decorate-fs.js","names":[],"sources":["../../src/router/decorate-fs.ts"],"sourcesContent":["import { join } from 'node:path'\nimport { FsTargetKey } from '@deepseek-ai/dsh-fs'\nimport type { FileSystem } from '@deepseek-ai/dsh-fs'\nimport type { FsEditOutcome, FsEditRequest, FsTarget, FsVersion, FsWriteIntent, FsWriteOutcome, FsDirEntry, FsInfo, FsPathInfo } from '@deepseek-ai/dsh-fs'\nimport type { SandboxExecutionPolicy } from '@deepseek-ai/dsh-sandbox'\nimport { sharedWorldResolver } from './resolve.js'\n\nexport function decorateFileSystem(fs: FileSystem): () => void {\n const resolver = sharedWorldResolver()\n\n const origStat = fs.stat.bind(fs)\n const origLstat = fs.lstat.bind(fs)\n const origReadText = fs.readText.bind(fs)\n const origStreamText = fs.streamText.bind(fs)\n const origReadBytes = fs.readBytes.bind(fs)\n const origReadByteRange = typeof fs.readByteRange === 'function' ? fs.readByteRange.bind(fs) : undefined\n const origListDir = fs.listDir.bind(fs)\n const origWriteText = fs.writeText.bind(fs)\n const origEditText = fs.editText.bind(fs)\n\n function targetPath(target: FsTarget): string {\n return fs.processPath(target)\n }\n\n fs.stat = async (target: FsTarget, signal?: AbortSignal): Promise<FsInfo | undefined> => {\n const ref = resolver.resolve(targetPath(target))\n if (ref.kind === 'local') return origStat(target, signal)\n if (ref.kind === 'unrouted') throw new Error(`node ${ref.nodeId} world not available`)\n return ref.provider.fs.stat(ref.remotePath, signal) as Promise<FsInfo | undefined>\n }\n\n fs.lstat = async (path: string, opts?: { cwd?: string }, signal?: AbortSignal): Promise<FsPathInfo | undefined> => {\n const ref = resolver.resolve(
|
|
1
|
+
{"version":3,"file":"decorate-fs.js","names":[],"sources":["../../src/router/decorate-fs.ts"],"sourcesContent":["import { join } from 'node:path'\nimport { FsTargetKey } from '@deepseek-ai/dsh-fs'\nimport type { FileSystem } from '@deepseek-ai/dsh-fs'\nimport type { FsEditOutcome, FsEditRequest, FsTarget, FsVersion, FsWriteIntent, FsWriteOutcome, FsDirEntry, FsInfo, FsPathInfo } from '@deepseek-ai/dsh-fs'\nimport type { SandboxExecutionPolicy } from '@deepseek-ai/dsh-sandbox'\nimport { sharedWorldResolver } from './resolve.js'\n\nexport function decorateFileSystem(fs: FileSystem): () => void {\n const resolver = sharedWorldResolver()\n\n const origStat = fs.stat.bind(fs)\n const origLstat = fs.lstat.bind(fs)\n const origReadText = fs.readText.bind(fs)\n const origStreamText = fs.streamText.bind(fs)\n const origReadBytes = fs.readBytes.bind(fs)\n const origReadByteRange = typeof fs.readByteRange === 'function' ? fs.readByteRange.bind(fs) : undefined\n const origListDir = fs.listDir.bind(fs)\n const origWriteText = fs.writeText.bind(fs)\n const origEditText = fs.editText.bind(fs)\n\n function targetPath(target: FsTarget): string {\n return fs.processPath(target)\n }\n\n fs.stat = async (target: FsTarget, signal?: AbortSignal): Promise<FsInfo | undefined> => {\n const ref = resolver.resolve(targetPath(target))\n if (ref.kind === 'local') return origStat(target, signal)\n if (ref.kind === 'unrouted') throw new Error(`node ${ref.nodeId} world not available`)\n return ref.provider.fs.stat(ref.remotePath, signal) as Promise<FsInfo | undefined>\n }\n\n fs.lstat = async (path: string, opts?: { cwd?: string }, signal?: AbortSignal): Promise<FsPathInfo | undefined> => {\n const resolved = await fs.resolve(path, { cwd: opts?.cwd, signal })\n const ref = resolver.resolve(fs.processPath(resolved))\n if (ref.kind === 'local') return origLstat(path, opts, signal)\n if (ref.kind === 'unrouted') throw new Error(`node ${ref.nodeId} world not available`)\n return ref.provider.fs.lstat(ref.remotePath, opts, signal) as Promise<FsPathInfo | undefined>\n }\n\n fs.readText = async (target: FsTarget, signal?: AbortSignal): Promise<string> => {\n const ref = resolver.resolve(targetPath(target))\n if (ref.kind === 'local') return origReadText(target, signal)\n if (ref.kind === 'unrouted') throw new Error(`node ${ref.nodeId} world not available`)\n return ref.provider.fs.readText(ref.remotePath, signal)\n }\n\n fs.streamText = async (target: FsTarget, signal?: AbortSignal): Promise<AsyncIterable<string>> => {\n const ref = resolver.resolve(targetPath(target))\n if (ref.kind === 'local') return origStreamText(target, signal)\n if (ref.kind === 'unrouted') throw new Error(`node ${ref.nodeId} world not available`)\n return ref.provider.fs.streamText(ref.remotePath, signal)\n }\n\n fs.readBytes = async (target: FsTarget, signal: AbortSignal | undefined, maxBytes: number): Promise<Uint8Array> => {\n const ref = resolver.resolve(targetPath(target))\n if (ref.kind === 'local') return origReadBytes(target, signal, maxBytes)\n if (ref.kind === 'unrouted') throw new Error(`node ${ref.nodeId} world not available`)\n return ref.provider.fs.readBytes(ref.remotePath, signal, maxBytes)\n }\n\n fs.readByteRange = async (target: FsTarget, range: { offset: number; length: number }, signal?: AbortSignal): Promise<Uint8Array> => {\n const ref = resolver.resolve(targetPath(target))\n if (ref.kind === 'local') {\n if (origReadByteRange) return origReadByteRange(target, range, signal)\n const end = range.offset + range.length\n const bytes = await origReadBytes(target, signal, end)\n return bytes.subarray(range.offset, end)\n }\n if (ref.kind === 'unrouted') throw new Error(`node ${ref.nodeId} world not available`)\n return ref.provider.fs.readByteRange(ref.remotePath, range, signal)\n }\n\n fs.listDir = async (target: FsTarget, signal?: AbortSignal): Promise<FsDirEntry[]> => {\n const parentPath = targetPath(target)\n const ref = resolver.resolve(parentPath)\n if (ref.kind === 'local') return origListDir(target, signal)\n if (ref.kind === 'unrouted') throw new Error(`node ${ref.nodeId} world not available`)\n const entries = await ref.provider.fs.listDir(ref.remotePath, signal) as Array<{\n name: string\n isDirectory?: boolean\n isFile?: boolean\n isSymlink?: boolean\n size?: number\n }>\n return entries.map((entry) => {\n const childPath = join(parentPath, entry.name)\n return {\n name: entry.name,\n type: entry.isDirectory ? 'directory' : entry.isFile ? 'file' : 'other',\n target: { targetKey: FsTargetKey(childPath), displayPath: childPath },\n ...(entry.size === undefined ? {} : { size: entry.size }),\n }\n })\n }\n\n fs.writeText = async (target: FsTarget, content: string, expected?: FsWriteIntent, signal?: AbortSignal, sandboxPolicy?: SandboxExecutionPolicy): Promise<FsWriteOutcome> => {\n const ref = resolver.resolve(targetPath(target))\n if (ref.kind === 'local') return origWriteText(target, content, expected, signal, sandboxPolicy)\n if (ref.kind === 'unrouted') throw new Error(`node ${ref.nodeId} world not available`)\n return ref.provider.fs.writeText(ref.remotePath, content, expected, signal, sandboxPolicy) as Promise<FsWriteOutcome>\n }\n\n fs.editText = async (target: FsTarget, edit: FsEditRequest, expected?: { version: FsVersion }, signal?: AbortSignal, sandboxPolicy?: SandboxExecutionPolicy): Promise<FsEditOutcome> => {\n const ref = resolver.resolve(targetPath(target))\n if (ref.kind === 'local') return origEditText(target, edit, expected, signal, sandboxPolicy)\n if (ref.kind === 'unrouted') throw new Error(`node ${ref.nodeId} world not available`)\n return ref.provider.fs.editText(ref.remotePath, edit, expected, signal, sandboxPolicy) as Promise<FsEditOutcome>\n }\n\n return () => {\n fs.stat = origStat\n fs.lstat = origLstat\n fs.readText = origReadText\n fs.streamText = origStreamText\n fs.readBytes = origReadBytes\n if (origReadByteRange) fs.readByteRange = origReadByteRange\n else delete (fs as unknown as { readByteRange?: unknown }).readByteRange\n fs.listDir = origListDir\n fs.writeText = origWriteText\n fs.editText = origEditText\n }\n}\n"],"mappings":"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"}
|
package/lib/router/router-fs.js
CHANGED
|
@@ -16,7 +16,11 @@ var RouterFileSystem = class extends SandboxedFileSystem {
|
|
|
16
16
|
return ref.provider.fs.stat(ref.remotePath, signal);
|
|
17
17
|
}
|
|
18
18
|
async lstat(path, opts, signal) {
|
|
19
|
-
const
|
|
19
|
+
const resolved = await super.resolve(path, {
|
|
20
|
+
cwd: opts?.cwd,
|
|
21
|
+
signal
|
|
22
|
+
});
|
|
23
|
+
const ref = this.resolver.resolve(super.processPath(resolved));
|
|
20
24
|
if (ref.kind === "local") return super.lstat(path, opts, signal);
|
|
21
25
|
if (ref.kind === "unrouted") throw new Error(`node ${ref.nodeId} world not available`);
|
|
22
26
|
return ref.provider.fs.lstat(ref.remotePath, opts, signal);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"router-fs.js","names":[],"sources":["../../src/router/router-fs.ts"],"sourcesContent":["import SandboxedFileSystem from '@deepseek-ai/dsh-fs-sandbox'\nimport type { Context } from '@deepseek-ai/cordis'\nimport type { FsEditOutcome, FsEditRequest, FsTarget, FsVersion, FsWriteIntent, FsWriteOutcome, FsDirEntry, FsInfo, FsPathInfo } from '@deepseek-ai/dsh-fs'\nimport type { SandboxExecutionPolicy } from '@deepseek-ai/dsh-sandbox'\nimport type { FsDelegate } from './types.js'\nimport { sharedWorldResolver } from './resolve.js'\n\nexport default class RouterFileSystem extends SandboxedFileSystem {\n private readonly resolver = sharedWorldResolver()\n\n constructor(ctx: Context, config: unknown) {\n super(ctx, config as never)\n }\n\n private targetPath(target: FsTarget): string {\n return this.processPath(target)\n }\n\n override async stat(target: FsTarget, signal?: AbortSignal): Promise<FsInfo | undefined> {\n const ref = this.resolver.resolve(this.targetPath(target))\n if (ref.kind === 'local') return super.stat(target, signal)\n if (ref.kind === 'unrouted') throw new Error(`node ${ref.nodeId} world not available`)\n return ref.provider.fs.stat(ref.remotePath, signal) as Promise<FsInfo | undefined>\n }\n\n override async lstat(path: string, opts?: { cwd?: string }, signal?: AbortSignal): Promise<FsPathInfo | undefined> {\n const ref = this.resolver.resolve(
|
|
1
|
+
{"version":3,"file":"router-fs.js","names":[],"sources":["../../src/router/router-fs.ts"],"sourcesContent":["import SandboxedFileSystem from '@deepseek-ai/dsh-fs-sandbox'\nimport type { Context } from '@deepseek-ai/cordis'\nimport type { FsEditOutcome, FsEditRequest, FsTarget, FsVersion, FsWriteIntent, FsWriteOutcome, FsDirEntry, FsInfo, FsPathInfo } from '@deepseek-ai/dsh-fs'\nimport type { SandboxExecutionPolicy } from '@deepseek-ai/dsh-sandbox'\nimport type { FsDelegate } from './types.js'\nimport { sharedWorldResolver } from './resolve.js'\n\nexport default class RouterFileSystem extends SandboxedFileSystem {\n private readonly resolver = sharedWorldResolver()\n\n constructor(ctx: Context, config: unknown) {\n super(ctx, config as never)\n }\n\n private targetPath(target: FsTarget): string {\n return this.processPath(target)\n }\n\n override async stat(target: FsTarget, signal?: AbortSignal): Promise<FsInfo | undefined> {\n const ref = this.resolver.resolve(this.targetPath(target))\n if (ref.kind === 'local') return super.stat(target, signal)\n if (ref.kind === 'unrouted') throw new Error(`node ${ref.nodeId} world not available`)\n return ref.provider.fs.stat(ref.remotePath, signal) as Promise<FsInfo | undefined>\n }\n\n override async lstat(path: string, opts?: { cwd?: string }, signal?: AbortSignal): Promise<FsPathInfo | undefined> {\n const resolved = await super.resolve(path, { cwd: opts?.cwd, signal })\n const ref = this.resolver.resolve(super.processPath(resolved))\n if (ref.kind === 'local') return super.lstat(path, opts, signal)\n if (ref.kind === 'unrouted') throw new Error(`node ${ref.nodeId} world not available`)\n return ref.provider.fs.lstat(ref.remotePath, opts, signal) as Promise<FsPathInfo | undefined>\n }\n\n override async readText(target: FsTarget, signal?: AbortSignal): Promise<string> {\n const ref = this.resolver.resolve(this.targetPath(target))\n if (ref.kind === 'local') return super.readText(target, signal)\n if (ref.kind === 'unrouted') throw new Error(`node ${ref.nodeId} world not available`)\n return ref.provider.fs.readText(ref.remotePath, signal)\n }\n\n override async streamText(target: FsTarget, signal?: AbortSignal): Promise<AsyncIterable<string>> {\n const ref = this.resolver.resolve(this.targetPath(target))\n if (ref.kind === 'local') return super.streamText(target, signal)\n if (ref.kind === 'unrouted') throw new Error(`node ${ref.nodeId} world not available`)\n return ref.provider.fs.streamText(ref.remotePath, signal)\n }\n\n override async readBytes(target: FsTarget, signal: AbortSignal | undefined, maxBytes: number): Promise<Uint8Array> {\n const ref = this.resolver.resolve(this.targetPath(target))\n if (ref.kind === 'local') return super.readBytes(target, signal, maxBytes)\n if (ref.kind === 'unrouted') throw new Error(`node ${ref.nodeId} world not available`)\n return ref.provider.fs.readBytes(ref.remotePath, signal, maxBytes)\n }\n\n override async readByteRange(target: FsTarget, range: { offset: number; length: number }, signal?: AbortSignal): Promise<Uint8Array> {\n const ref = this.resolver.resolve(this.targetPath(target))\n if (ref.kind === 'local') {\n const end = range.offset + range.length\n const bytes = await super.readBytes(target, signal, end)\n return bytes.subarray(range.offset, end)\n }\n if (ref.kind === 'unrouted') throw new Error(`node ${ref.nodeId} world not available`)\n return ref.provider.fs.readByteRange(ref.remotePath, range, signal)\n }\n\n override async listDir(target: FsTarget, signal?: AbortSignal): Promise<FsDirEntry[]> {\n const ref = this.resolver.resolve(this.targetPath(target))\n if (ref.kind === 'local') return super.listDir(target, signal)\n if (ref.kind === 'unrouted') throw new Error(`node ${ref.nodeId} world not available`)\n return ref.provider.fs.listDir(ref.remotePath, signal) as Promise<FsDirEntry[]>\n }\n\n override async writeText(target: FsTarget, content: string, expected?: FsWriteIntent, signal?: AbortSignal, sandboxPolicy?: SandboxExecutionPolicy): Promise<FsWriteOutcome> {\n const ref = this.resolver.resolve(this.targetPath(target))\n if (ref.kind === 'local') return super.writeText(target, content, expected, signal, sandboxPolicy)\n if (ref.kind === 'unrouted') throw new Error(`node ${ref.nodeId} world not available`)\n return ref.provider.fs.writeText(ref.remotePath, content, expected, signal, sandboxPolicy) as Promise<FsWriteOutcome>\n }\n\n override async editText(target: FsTarget, edit: FsEditRequest, expected?: { version: FsVersion }, signal?: AbortSignal, sandboxPolicy?: SandboxExecutionPolicy): Promise<FsEditOutcome> {\n const ref = this.resolver.resolve(this.targetPath(target))\n if (ref.kind === 'local') return super.editText(target, edit, expected, signal, sandboxPolicy)\n if (ref.kind === 'unrouted') throw new Error(`node ${ref.nodeId} world not available`)\n return ref.provider.fs.editText(ref.remotePath, edit, expected, signal, sandboxPolicy) as Promise<FsEditOutcome>\n }\n}\n"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@artenx/dshb",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.14",
|
|
4
4
|
"description": "Routes DSH filesystem, shell, subprocess, and PTY operations to local, SSH, and Docker execution nodes, with a node registry, an authentication gate, a mobile-aware management UI, and per-workspace custom project instructions.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "lib/index.js",
|