super-dsh 0.3.1-a → 0.3.1-d

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "super-dsh",
3
- "version": "0.3.1-a",
3
+ "version": "0.3.1-d",
4
4
  "description": "Super D for the DeepSeek Harness (DSH) — one dsh plugin that mounts the superd hub (runtime selector, roster, per-runtime agents) and joins local foreign-agent runtimes (OMP, Codex, Claude, Pi, Hermes, Antigravity) into the DSH Web UI. Each runtime keeps its native home and session store; the hub only bridges.",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -0,0 +1,35 @@
1
+ {
2
+ "format": 1,
3
+ "name": "superd-run",
4
+ "ver": "0.3.1-d.b596",
5
+ "protocol": 1,
6
+ "targets": {
7
+ "aarch64-apple-darwin": {
8
+ "file": "superd-run",
9
+ "bytes": 337808,
10
+ "sha256": "a8fd11a5e6a2cb146deb599414434a299ebf78c53cfc1d3e5f42617ee11c1706"
11
+ },
12
+ "aarch64-unknown-linux-musl": {
13
+ "file": "superd-run",
14
+ "bytes": 397592,
15
+ "sha256": "3a8660fa099f1e71de6e08313ee2aaace00503f74365475ee46e2d2a89228397"
16
+ },
17
+ "x86_64-pc-windows-gnu": {
18
+ "file": "superd-run.exe",
19
+ "bytes": 337408,
20
+ "sha256": "1372450238c5bda702b4529f4148aa79e80a255c3c125d1a6229afd4693e9d90"
21
+ },
22
+ "x86_64-unknown-linux-musl": {
23
+ "file": "superd-run",
24
+ "bytes": 447152,
25
+ "sha256": "05b428657942abf22a0ad609433d5cab6b6182fe389851345459a0274b5a6533"
26
+ }
27
+ },
28
+ "sources": {
29
+ "Cargo.toml": "129ab8360e9da872f9dfd6e713d81fe1389735a74d781f3d9c15e110f92d2757",
30
+ "build.rs": "c4fb356956b1ec700e99bdeca07d657a7d3b2a4026582db136411676da3d125e",
31
+ "src/main.rs": "47f1648ea1abc30583839edab219a9062c83d57be981c0505ab6bf79c6fbff54",
32
+ "src/unix.rs": "56c5f523b7b1a9efd50ef24ccdabc024bc065dd2f904fdbecdf0ca49fe7f3393",
33
+ "src/windows.rs": "6c1537424b1adc05ed17c7cf8bf376fb5711602b9da1697d596155bf21d541da"
34
+ }
35
+ }
@@ -0,0 +1 @@
1
+ 0.3.1-d.b596
@@ -0,0 +1 @@
1
+ 0.3.1-d.b596
@@ -0,0 +1 @@
1
+ 0.3.1-d.b596
@@ -99,7 +99,9 @@ declare class SshTargets {
99
99
  clear(): void;
100
100
  }
101
101
  /** Shared by execution, probes and file/relay consumers. extraArgs is trusted
102
- * internal SSH argv (e.g. forwarding), never a model-provided shell string. */
102
+ * internal SSH argv (e.g. forwarding), never a model-provided shell string.
103
+ * Identity assembly lives in ssh-argv.ts (the ONE policy — 2026-10-17 ruling);
104
+ * this wrapper only picks the tty/batch dialect base. */
103
105
  declare function sshArgv(connection: SshConnection, options?: {
104
106
  tty?: boolean;
105
107
  extraArgs?: readonly string[];
@@ -117,7 +119,12 @@ interface TransferReceipt {
117
119
  action: 'copy';
118
120
  src: string;
119
121
  dst: string;
120
- verified: boolean;
122
+ route: 'hub-staged';
123
+ /** S4: tier actually performed — sha256 digests ran and matched, or explicitly skipped. */
124
+ verification: 'sha256' | 'not-applicable';
125
+ /** S3 unified failure envelope. */
126
+ ok: boolean;
127
+ reason?: 'digest-mismatch' | 'staging-error' | 'aborted';
121
128
  sourceDigest?: string;
122
129
  destinationDigest?: string;
123
130
  bytes: number;
@@ -154,8 +161,16 @@ interface NativeCopyReceipt {
154
161
  stdout: string[];
155
162
  stderr: string[];
156
163
  outputTruncated: boolean;
157
- /** Native CLI success only — no independent digest was computed for this path. */
158
- verified: false;
164
+ /** S3/S4 (spec §3.3): verification names the tier actually performed — native routes are exit-code-only (D1=A). */
165
+ verification: 'native-exit-only';
166
+ /** S3 unified failure envelope: all native exits zero. */
167
+ ok: boolean;
168
+ /** Failure class when ok is false. */
169
+ reason?: 'non-zero-exit' | 'aborted';
170
+ /** Human context, e.g. two-segment 'push not started: pull failed' (prose moved out of route, S8). */
171
+ note?: string;
172
+ /** D3 mkdir pre-hop outcome: true = created this call, false = already existed, 'n-a' = skipped or unavailable (detail in note). */
173
+ created?: true | false | 'n-a';
159
174
  /** Tool-owned staging/config release: released on normal/observed exit, unknown when a channel was lost. */
160
175
  cleanup: 'released' | 'unknown' | 'none-required';
161
176
  }
@@ -203,6 +218,10 @@ interface RsyncReceipt extends RunResult {
203
218
  transferredBytes?: number;
204
219
  /** Two-SSH route actually used, when applicable. */
205
220
  route?: 'local-ssh' | 'ssh-ssh-forward' | 'ssh-ssh-stdio';
221
+ /** S3/S4: exit-code-only tier (D1=A) + unified failure envelope. */
222
+ verification: 'native-exit-only';
223
+ ok: boolean;
224
+ reason?: 'non-zero-exit' | 'aborted';
206
225
  }
207
226
  /**
208
227
  * Native rsync with ordered caller options. Local↔SSH runs rsync directly with
@@ -213,6 +232,23 @@ interface RsyncReceipt extends RunResult {
213
232
  */
214
233
  declare function runRsync(request: RsyncRequest, source: RsyncEndpoint, destination: RsyncEndpoint, signal: AbortSignal, options?: RelayRsyncOptions): Promise<RsyncReceipt>;
215
234
  //#endregion
235
+ //#region src/remote/helper.d.ts
236
+ interface HelperManifest {
237
+ format: 1;
238
+ name: string;
239
+ ver: string;
240
+ protocol: number;
241
+ targets: Record<string, {
242
+ file: string;
243
+ bytes: number;
244
+ sha256: string;
245
+ }>;
246
+ }
247
+ interface HelperAssets {
248
+ dir: string;
249
+ manifest: HelperManifest;
250
+ }
251
+ //#endregion
216
252
  //#region src/remote/process.d.ts
217
253
  declare const PROCESS_CLEANUP_BOUND_MS: number;
218
254
  interface ProcessOptions {
@@ -287,6 +323,8 @@ interface RemoteCallResult {
287
323
  session?: string;
288
324
  /** 引导/教学行(同 label 重复给 spawn 时的「可省略 spawn」提示等);无则省略。 */
289
325
  notice?: string;
326
+ /** oneshot 监督路径的如实标注:`superd-run <ver> (<triple>)` 或 `posix-shim`(spec remote-rescope §5)。 */
327
+ runner?: string;
290
328
  }
291
329
  interface RemoteAuditRecord {
292
330
  target: string;
@@ -311,6 +349,8 @@ interface RemoteDriverOptions {
311
349
  ptyArgvFor?: (plan: TargetPlan) => string[];
312
350
  spawnArgvFor?: (spawnCommand: string) => string[];
313
351
  probeRunner?: ProbeOptions['runner'];
352
+ /** 测试/验收缝:helper 资产来源(默认 lib 旁挂 helper-bin);显式 null 强制 shim 路径。 */
353
+ helperAssetsFor?: () => HelperAssets | null;
314
354
  /** 测试缝:roster 扫描执行器(bare-name 解析复用)。 */
315
355
  rosterRunner?: RosterOptions['runner'];
316
356
  /** 测试缝:ssh config 读取(bare-name 解析复用)。 */
@@ -327,6 +367,9 @@ declare class RemoteDriver {
327
367
  private readonly starting;
328
368
  private readonly fileAbort;
329
369
  private disposed;
370
+ /** undefined = 未尝试;null = 资产缺失(shim-only);registry = 每 target sticky 状态机。 */
371
+ private helpers;
372
+ private readonly runnerOf;
330
373
  private disposal;
331
374
  constructor(opts?: RemoteDriverOptions);
332
375
  call(params: RemoteCallParams, callCtx?: {
@@ -350,6 +393,10 @@ declare class RemoteDriver {
350
393
  start(input: RemoteInput, signal: AbortSignal): Promise<RemoteProcess>;
351
394
  private startPrepared;
352
395
  private nativeProcess;
396
+ /** Helper bootstrap is best-effort and sticky: any failure parks null for this driver
397
+ * lifetime and the shim stays the path. First call to a target pays probe (+ upload). */
398
+ private ensureHelper;
399
+ private helperExec;
353
400
  private own;
354
401
  /** Ruling 16/17:on-demand 探测 + 会话层,两行如实陈述。 */
355
402
  /**