@artenx/dshb 0.1.12 → 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.
- package/lib/client.js +0 -23
- package/lib/client.js.map +1 -1
- package/lib/exec-docker/docker-backend.d.ts +1 -0
- package/lib/exec-docker/docker-client.d.ts +1 -0
- package/lib/exec-docker/docker-client.js +18 -2
- package/lib/exec-docker/docker-client.js.map +1 -1
- package/lib/exec-docker/fs-provider.d.ts +4 -0
- package/lib/exec-docker/fs-provider.js +4 -0
- package/lib/exec-docker/fs-provider.js.map +1 -1
- package/lib/exec-docker/remote-docker-cli.d.ts +1 -0
- package/lib/exec-docker/remote-docker-cli.js +20 -3
- package/lib/exec-docker/remote-docker-cli.js.map +1 -1
- package/lib/exec-docker/world.d.ts +1 -1
- package/lib/exec-ssh/executor.d.ts +1 -0
- package/lib/exec-ssh/executor.js +25 -0
- package/lib/exec-ssh/executor.js.map +1 -1
- package/lib/exec-ssh/fs-provider.d.ts +4 -0
- package/lib/exec-ssh/fs-provider.js +4 -0
- package/lib/exec-ssh/fs-provider.js.map +1 -1
- package/lib/exec-ssh/world.d.ts +1 -1
- package/lib/router/decorate-fs.js +18 -1
- package/lib/router/decorate-fs.js.map +1 -1
- package/lib/router/decorate-shell.d.ts +1 -1
- package/lib/router/index.d.ts +1 -1
- package/lib/router/resolve.d.ts +1 -1
- package/lib/router/router-fs.d.ts +4 -0
- package/lib/router/router-fs.js +14 -1
- package/lib/router/router-fs.js.map +1 -1
- package/lib/router/types.d.ts +1 -1
- package/lib/{types-DPP05ZsA.d.ts → types-_0vpT-jm.d.ts} +5 -1
- package/package.json +1 -1
package/lib/router/resolve.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { _ as WorkspaceBindings, v as WorldRef, y as WorldRegistry } from "../types-
|
|
1
|
+
import { _ as WorkspaceBindings, v as WorldRef, y as WorldRegistry } from "../types-_0vpT-jm.js";
|
|
2
2
|
//#region src/router/resolve.d.ts
|
|
3
3
|
interface BindingHit {
|
|
4
4
|
nodeId: string;
|
|
@@ -14,6 +14,10 @@ declare class RouterFileSystem extends SandboxedFileSystem {
|
|
|
14
14
|
readText(target: FsTarget, signal?: AbortSignal): Promise<string>;
|
|
15
15
|
streamText(target: FsTarget, signal?: AbortSignal): Promise<AsyncIterable<string>>;
|
|
16
16
|
readBytes(target: FsTarget, signal: AbortSignal | undefined, maxBytes: number): Promise<Uint8Array>;
|
|
17
|
+
readByteRange(target: FsTarget, range: {
|
|
18
|
+
offset: number;
|
|
19
|
+
length: number;
|
|
20
|
+
}, signal?: AbortSignal): Promise<Uint8Array>;
|
|
17
21
|
listDir(target: FsTarget, signal?: AbortSignal): Promise<FsDirEntry[]>;
|
|
18
22
|
writeText(target: FsTarget, content: string, expected?: FsWriteIntent, signal?: AbortSignal, sandboxPolicy?: SandboxExecutionPolicy): Promise<FsWriteOutcome>;
|
|
19
23
|
editText(target: FsTarget, edit: FsEditRequest, expected?: {
|
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);
|
|
@@ -39,6 +43,15 @@ var RouterFileSystem = class extends SandboxedFileSystem {
|
|
|
39
43
|
if (ref.kind === "unrouted") throw new Error(`node ${ref.nodeId} world not available`);
|
|
40
44
|
return ref.provider.fs.readBytes(ref.remotePath, signal, maxBytes);
|
|
41
45
|
}
|
|
46
|
+
async readByteRange(target, range, signal) {
|
|
47
|
+
const ref = this.resolver.resolve(this.targetPath(target));
|
|
48
|
+
if (ref.kind === "local") {
|
|
49
|
+
const end = range.offset + range.length;
|
|
50
|
+
return (await super.readBytes(target, signal, end)).subarray(range.offset, end);
|
|
51
|
+
}
|
|
52
|
+
if (ref.kind === "unrouted") throw new Error(`node ${ref.nodeId} world not available`);
|
|
53
|
+
return ref.provider.fs.readByteRange(ref.remotePath, range, signal);
|
|
54
|
+
}
|
|
42
55
|
async listDir(target, signal) {
|
|
43
56
|
const ref = this.resolver.resolve(this.targetPath(target));
|
|
44
57
|
if (ref.kind === "local") return super.listDir(target, 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/lib/router/types.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { _ as WorkspaceBindings, a as NodeTestReport, c as ShellExecSpec, d as SubprocessDelegate, f as SubprocessHandle, g as SubprocessTerminalSpawnSpec, h as SubprocessTerminalHandle, i as FsTargetLike, l as ShellProcess, m as SubprocessSpawnSpec, n as FileSystem, o as ShellDelegate, p as SubprocessRuntime, r as FsDelegate, s as ShellExecRequest, t as ExecutionWorldProvider, u as ShellRunResult, v as WorldRef, y as WorldRegistry } from "../types-
|
|
1
|
+
import { _ as WorkspaceBindings, a as NodeTestReport, c as ShellExecSpec, d as SubprocessDelegate, f as SubprocessHandle, g as SubprocessTerminalSpawnSpec, h as SubprocessTerminalHandle, i as FsTargetLike, l as ShellProcess, m as SubprocessSpawnSpec, n as FileSystem, o as ShellDelegate, p as SubprocessRuntime, r as FsDelegate, s as ShellExecRequest, t as ExecutionWorldProvider, u as ShellRunResult, v as WorldRef, y as WorldRegistry } from "../types-_0vpT-jm.js";
|
|
2
2
|
export { ExecutionWorldProvider, type FileSystem, FsDelegate, FsTargetLike, NodeTestReport, ShellDelegate, type ShellExecRequest, type ShellExecSpec, type ShellProcess, type ShellRunResult, SubprocessDelegate, type SubprocessHandle, type SubprocessRuntime, type SubprocessSpawnSpec, type SubprocessTerminalHandle, type SubprocessTerminalSpawnSpec, WorkspaceBindings, WorldRef, WorldRegistry };
|
|
@@ -21,6 +21,10 @@ interface FsDelegate {
|
|
|
21
21
|
readText(target: FsTargetLike, signal?: AbortSignal): Promise<string>;
|
|
22
22
|
streamText(target: FsTargetLike, signal?: AbortSignal): Promise<AsyncIterable<string>>;
|
|
23
23
|
readBytes(target: FsTargetLike, signal: AbortSignal | undefined, maxBytes: number): Promise<Uint8Array>;
|
|
24
|
+
readByteRange(target: FsTargetLike, range: {
|
|
25
|
+
offset: number;
|
|
26
|
+
length: number;
|
|
27
|
+
}, signal?: AbortSignal): Promise<Uint8Array>;
|
|
24
28
|
listDir(target: FsTargetLike, signal?: AbortSignal): Promise<unknown[]>;
|
|
25
29
|
writeText(target: FsTargetLike, content: string, expected?: unknown, signal?: AbortSignal, policy?: unknown): Promise<unknown>;
|
|
26
30
|
editText(target: FsTargetLike, edit: unknown, expected?: unknown, signal?: AbortSignal, policy?: unknown): Promise<unknown>;
|
|
@@ -66,4 +70,4 @@ type WorldRef = {
|
|
|
66
70
|
};
|
|
67
71
|
//#endregion
|
|
68
72
|
export { WorkspaceBindings as _, NodeTestReport as a, ShellExecSpec$1 as c, SubprocessDelegate as d, SubprocessHandle$1 as f, SubprocessTerminalSpawnSpec$1 as g, SubprocessTerminalHandle$1 as h, FsTargetLike as i, ShellProcess$1 as l, SubprocessSpawnSpec$1 as m, FileSystem$1 as n, ShellDelegate as o, SubprocessRuntime$1 as p, FsDelegate as r, ShellExecRequest$1 as s, ExecutionWorldProvider as t, ShellRunResult$1 as u, WorldRef as v, WorldRegistry as y };
|
|
69
|
-
//# sourceMappingURL=types-
|
|
73
|
+
//# sourceMappingURL=types-_0vpT-jm.d.ts.map
|
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",
|