dsh-deeppilot 0.8.0 → 0.8.1

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/COMPATIBILITY.md CHANGED
@@ -7,7 +7,7 @@ This file separates tested evidence from intended behavior. Passing unit tests d
7
7
  | Component | Baseline | Evidence |
8
8
  |---|---|---|
9
9
  | Node.js | 22 or newer | package engine and CI |
10
- | DSH CLI and Host API | the `0.1.5-rc.*` and `0.1.6-*`/`0.1.6` lines, `0.1.5-rc.1` minimum, for plugin `0.7.x` | plugin source typecheck, unit suite (265 tests) and `tsdown` build run against the `0.1.5-rc.2`, `0.1.6-alpha.1` and `0.1.6-alpha.2` package families; the `deeppilot/report` contribution registered through both the `0.1.6-alpha.1` and the `0.1.6-alpha.2` `TypertRegistry`; bridge and `/phone` protocol tests |
10
+ | DSH CLI and Host API | the `0.1.5-rc.*` and `0.1.6-*`/`0.1.6` lines, `0.1.5-rc.1` minimum, for plugin `0.7.x` | plugin source typecheck, unit suite (301 tests) and `tsdown` build run against the `0.1.5-rc.2`, `0.1.6-alpha.1` and `0.1.6-alpha.2` package families; the `deeppilot/report` contribution registered through both the `0.1.6-alpha.1` and the `0.1.6-alpha.2` `TypertRegistry`; bridge and `/phone` protocol tests |
11
11
  | Host OS | macOS, Linux, Windows on packaged amd64/arm64 helper targets | helper checksums plus user-confirmed Windows/Linux Funnel launch and connection; local LAN validation remains part of alpha testing |
12
12
  | Remote access | Tailscale Funnel, ports 443/8443/10000 | helper and supervisor tests |
13
13
  | iOS | native DeepPilot client, protocol v2 | simulator build and v2 pairing/challenge evidence |
@@ -57,6 +57,24 @@ This file separates tested evidence from intended behavior. Passing unit tests d
57
57
  The other `alpha.2` Typert change — a contributed schema's materialized
58
58
  `schema` becoming a lazy `create()` factory — does not apply here: this
59
59
  Remote contributes no schemas, which the same test asserts.
60
+ - DSH `0.1.7-alpha.1` reordered the Host `typertGateway.wireStream.open`
61
+ parameters from `(endpoint, payload, signal)` to
62
+ `(endpoint, payload, uplink, peer, signal)`. The reorder is not additive: a
63
+ 3-argument call lands the `AbortSignal` in the `uplink` slot, leaves `signal`
64
+ undefined, and the Host fails every stream inside
65
+ `AbortSignal.any([signal, …])` with
66
+ `TypeError [ERR_INVALID_ARG_TYPE]: The "signals[0]" argument must be an
67
+ instance of AbortSignal`. The resident Client's Connection treats that dead
68
+ generation as a lost connection and prints an endless
69
+ `[connection] connection lost, retry #N` loop with exponential backoff while
70
+ the phone's approval and question round-trips stay broken.
71
+ `openHostStream()` in `src/dsh012-remote-interactions.ts` selects the
72
+ contract from the published arity (`open.length`) and passes `undefined` for
73
+ both `uplink` and `peer` on 0.1.7 — the documented "operator's in-process
74
+ carrier" case, since DeepPilot's carrier owns the Host in process and has no
75
+ Client-to-Host uplink. `tests/dsh012-wire-stream-contract.test.ts` pins the
76
+ argument binding for a 3-arity and a 5-arity Host, and asserts the signal
77
+ lands in each contract's declared slot.
60
78
  - DSH `0.1.7-alpha.1` rewrote the settings subsystem: `installSection`,
61
79
  `SettingsSectionHooks`, and the client `settingsScope` service are gone,
62
80
  section values persist in this plugin own profile config entry, and the
@@ -91,6 +109,17 @@ This file separates tested evidence from intended behavior. Passing unit tests d
91
109
  the volatile annotations on the four live fields (devDependency floor:
92
110
  `@deepseek-ai/schemastery` 3.18.3, which is also what a profile install
93
111
  resolves through the `^3.18.2` peer range).
112
+ - `icon.svg` is a vector recreation of the iOS app icon, built from the
113
+ private app's own Icon Composer sources (`ios/DeepPilot.icon/icon.json`
114
+ plus `Assets/deepseek.svg`) and the in-app composition its
115
+ `AppIconArtwork` applies: a white field, the DeepSeek brand glyph fitted
116
+ with 13% padding, and a `Color(white: 0.25)` → black vertical gradient.
117
+ The app's `.icon` bundle is not distributable through npm — the host
118
+ inlines a single relative SVG, PNG, JPEG, or WebP file under 256 KiB as a
119
+ `data:` URI — so the recreation is the only way to keep the two icons
120
+ visually identical. `tests/package-meta.test.ts` pins the host's reader
121
+ rules; regenerate the SVG from the app sources whenever the app icon
122
+ changes.
94
123
  - DSH `0.1.6-alpha.2` made runtime plugin removal real, through both the
95
124
  Plugin Manager and the client entry reconciler. Every long-lived resource is
96
125
  registered through `ctx.effect`, and the settings-page stylesheet stamps
@@ -111,8 +140,11 @@ This file separates tested evidence from intended behavior. Passing unit tests d
111
140
  - Intel macOS support for the embedded helper;
112
141
  - signed/notarized helper distribution;
113
142
  - validation against the `0.1.7-*` package line: the peer range admits
114
- `0.1.7-alpha.1` and later `0.1.7` releases, but typecheck, unit-suite, and
115
- runtime evidence against those host packages have not been produced yet;
143
+ `0.1.7-alpha.1` and later `0.1.7` releases, and the `wireStream.open`
144
+ reorder that release introduced is adapted and pinned by
145
+ `tests/dsh012-wire-stream-contract.test.ts`, but the unit suite still runs
146
+ against the `0.1.5-rc.1`/`0.1.6-*` package families and no `0.1.7`
147
+ typecheck or full-suite evidence has been produced yet;
116
148
  - repair or migration of persisted history rejected by the Host's own session
117
149
  reader;
118
150
  - every DSH developer-preview revision;
package/icon.svg CHANGED
@@ -1,13 +1,12 @@
1
1
  <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 128 128" role="img" aria-label="DeepPilot">
2
2
  <defs>
3
- <linearGradient id="dp-bg" x1="0" y1="0" x2="128" y2="128" gradientUnits="userSpaceOnUse">
4
- <stop offset="0" stop-color="#2563eb"/>
5
- <stop offset="1" stop-color="#0c1b4a"/>
3
+ <linearGradient id="dp-glyph" x1="0" y1="-18.1112" x2="0" y2="52.2563" gradientUnits="userSpaceOnUse">
4
+ <stop offset="0" stop-color="#404040"/>
5
+ <stop offset="1" stop-color="#000000"/>
6
6
  </linearGradient>
7
7
  </defs>
8
- <rect width="128" height="128" rx="28" fill="url(#dp-bg)"/>
9
- <g transform="translate(24 24) scale(3.5)" fill="none" stroke="#ffffff" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
10
- <path d="m22 2-7 20-4-9-9-4Z"/>
11
- <path d="M22 2 11 13"/>
8
+ <rect width="128" height="128" fill="#ffffff"/>
9
+ <g transform="translate(17.5525 17.0725) scale(3.950123)">
10
+ <path fill="url(#dp-glyph)" fill-rule="evenodd" d="M23.748 4.482c-.254-.124-.364.113-.512.234-.051.039-.094.09-.137.136-.372.397-.806.657-1.373.626-.829-.046-1.537.214-2.163.848-.133-.782-.575-1.248-1.247-1.548-.352-.156-.708-.311-.955-.65-.172-.241-.219-.51-.305-.774-.055-.16-.11-.323-.293-.35-.2-.031-.278.136-.356.276-.313.572-.434 1.202-.422 1.84.027 1.436.633 2.58 1.838 3.393.137.093.172.187.129.323-.082.28-.18.552-.266.833-.055.179-.137.217-.329.14a5.526 5.526 0 01-1.736-1.18c-.857-.828-1.631-1.742-2.597-2.458a11.365 11.365 0 00-.689-.471c-.985-.957.13-1.743.388-1.836.27-.098.093-.432-.779-.428-.872.004-1.67.295-2.687.684a3.055 3.055 0 01-.465.137 9.597 9.597 0 00-2.883-.102c-1.885.21-3.39 1.102-4.497 2.623C.082 8.606-.231 10.684.152 12.85c.403 2.284 1.569 4.175 3.36 5.653 1.858 1.533 3.997 2.284 6.438 2.14 1.482-.085 3.133-.284 4.994-1.86.47.234.962.327 1.78.397.63.059 1.236-.03 1.705-.128.735-.156.684-.837.419-.961-2.155-1.004-1.682-.595-2.113-.926 1.096-1.296 2.746-2.642 3.392-7.003.05-.347.007-.565 0-.845-.004-.17.035-.237.23-.256a4.173 4.173 0 001.545-.475c1.396-.763 1.96-2.015 2.093-3.517.02-.23-.004-.467-.247-.588zM11.581 18c-2.089-1.642-3.102-2.183-3.52-2.16-.392.024-.321.471-.235.763.09.288.207.486.371.739.114.167.192.416-.113.603-.673.416-1.842-.14-1.897-.167-1.361-.802-2.5-1.86-3.301-3.307-.774-1.393-1.224-2.887-1.298-4.482-.02-.386.093-.522.477-.592a4.696 4.696 0 011.529-.039c2.132.312 3.946 1.265 5.468 2.774.868.86 1.525 1.887 2.202 2.891.72 1.066 1.494 2.082 2.48 2.914.348.292.625.514.891.677-.802.09-2.14.11-3.054-.614zm1-6.44a.306.306 0 01.415-.287.302.302 0 01.2.288.306.306 0 01-.31.307.303.303 0 01-.304-.308zm3.11 1.596c-.2.081-.399.151-.59.16a1.245 1.245 0 01-.798-.254c-.274-.23-.47-.358-.552-.758a1.73 1.73 0 01.016-.588c.07-.327-.008-.537-.239-.727-.187-.156-.426-.199-.688-.199a.559.559 0 01-.254-.078c-.11-.054-.2-.19-.114-.358.028-.054.16-.186.192-.21.356-.202.767-.136 1.146.016.352.144.618.408 1.001.782.391.451.462.576.685.914.176.265.336.537.445.848.067.195-.019.354-.25.452z"/>
12
11
  </g>
13
12
  </svg>
package/lib/index.js CHANGED
@@ -3369,9 +3369,32 @@ function createAgentScope(ctx, identity) {
3369
3369
  }
3370
3370
  });
3371
3371
  }
3372
+ /**
3373
+ * Arity of the Host's published `wireStream.open`. 0.1.7-alpha.1 declares
3374
+ * `(endpoint, payload, uplink, peer, signal)`; every earlier generation
3375
+ * declares `(endpoint, payload, signal)`. Both are plain arrow functions with
3376
+ * no default or rest parameters, so `length` is a reliable contract selector —
3377
+ * unlike a capability probe, it opens no trial stream. A future signature that
3378
+ * rest-parameterizes (reporting `0`) falls back to the 3-argument call, which
3379
+ * every generation through `0.1.6-*` accepts.
3380
+ */
3381
+ function hostWireStreamArity(open) {
3382
+ return open.length;
3383
+ }
3384
+ /**
3385
+ * Open one Host logical stream on whichever `wireStream.open` contract the
3386
+ * running Host publishes. DeepPilot's carrier owns the Host in process and has
3387
+ * no Client-to-Host uplink, so the 5-argument form sends `undefined` for both
3388
+ * `uplink` and `peer` — the documented "operator's in-process carrier" case.
3389
+ */
3390
+ function openHostStream(gateway, endpoint, payload, signal) {
3391
+ const open = gateway.wireStream.open;
3392
+ if (hostWireStreamArity(open) >= 5) return open(endpoint, payload, void 0, void 0, signal);
3393
+ return open(endpoint, payload, signal);
3394
+ }
3372
3395
  function inProcessStream(gateway, endpoint, payload, signal) {
3373
3396
  return (async function* () {
3374
- yield* await gateway.wireStream.open(endpoint, payload, signal);
3397
+ yield* await openHostStream(gateway, endpoint, payload, signal);
3375
3398
  })();
3376
3399
  }
3377
3400
  /**