@deepailab/dal-remote-daemon 0.1.0 → 0.1.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.
Files changed (59) hide show
  1. package/NOTICE +21 -1
  2. package/THIRD-PARTY-NOTICES.md +192 -0
  3. package/node_modules/@deepailab/dal-remote-server/NOTICE +21 -1
  4. package/node_modules/@deepailab/dal-remote-server/dist/server/server/agent/providers/acp-agent.js +9 -5
  5. package/node_modules/@deepailab/dal-remote-server/dist/server/server/agent/providers/claude/query.js +3 -2
  6. package/node_modules/@deepailab/dal-remote-server/dist/server/server/agent/providers/claude/rewind.js +2 -2
  7. package/node_modules/@deepailab/dal-remote-server/dist/server/server/agent/providers/cursor-acp-agent.js +13 -9
  8. package/node_modules/@deepailab/dal-remote-server/dist/server/server/agent/providers/opencode/event-consumer.js +2 -2
  9. package/node_modules/@deepailab/dal-remote-server/dist/server/server/agent/providers/opencode/v2/runtime.js +2 -1
  10. package/node_modules/@deepailab/dal-remote-server/dist/server/server/agent/providers/opencode-agent.js +2 -2
  11. package/node_modules/@deepailab/dal-remote-server/dist/server/server/agent/providers/provider-sdk.js +46 -0
  12. package/node_modules/@deepailab/dal-remote-server/package.json +2 -5
  13. package/node_modules/@getpaseo/client/NOTICE +21 -1
  14. package/node_modules/@getpaseo/client/package.json +2 -1
  15. package/node_modules/@getpaseo/highlight/NOTICE +21 -1
  16. package/node_modules/@getpaseo/highlight/package.json +2 -1
  17. package/node_modules/@getpaseo/plugin/NOTICE +21 -1
  18. package/node_modules/@getpaseo/plugin/package.json +2 -1
  19. package/node_modules/@getpaseo/protocol/NOTICE +21 -1
  20. package/node_modules/@getpaseo/protocol/package.json +2 -1
  21. package/node_modules/@getpaseo/relay/NOTICE +21 -1
  22. package/node_modules/@getpaseo/relay/package.json +2 -1
  23. package/package.json +3 -8
  24. package/node_modules/@agentclientprotocol/sdk/LICENSE +0 -191
  25. package/node_modules/@agentclientprotocol/sdk/dist/acp.js +0 -1001
  26. package/node_modules/@agentclientprotocol/sdk/dist/schema/index.js +0 -32
  27. package/node_modules/@agentclientprotocol/sdk/dist/schema/zod.gen.js +0 -2054
  28. package/node_modules/@agentclientprotocol/sdk/dist/stream.js +0 -64
  29. package/node_modules/@agentclientprotocol/sdk/package.json +0 -33
  30. package/node_modules/@anthropic-ai/claude-agent-sdk/LICENSE.md +0 -1
  31. package/node_modules/@anthropic-ai/claude-agent-sdk/package.json +0 -74
  32. package/node_modules/@anthropic-ai/claude-agent-sdk/sdk.mjs +0 -165
  33. package/node_modules/@deepailab/dal-remote-server/node_modules/@opencode-ai/sdk/dist/error-interceptor.js +0 -43
  34. package/node_modules/@deepailab/dal-remote-server/node_modules/@opencode-ai/sdk/dist/v2/client.js +0 -78
  35. package/node_modules/@deepailab/dal-remote-server/node_modules/@opencode-ai/sdk/dist/v2/gen/client/client.gen.js +0 -232
  36. package/node_modules/@deepailab/dal-remote-server/node_modules/@opencode-ai/sdk/dist/v2/gen/client/index.js +0 -6
  37. package/node_modules/@deepailab/dal-remote-server/node_modules/@opencode-ai/sdk/dist/v2/gen/client/utils.gen.js +0 -226
  38. package/node_modules/@deepailab/dal-remote-server/node_modules/@opencode-ai/sdk/dist/v2/gen/client.gen.js +0 -3
  39. package/node_modules/@deepailab/dal-remote-server/node_modules/@opencode-ai/sdk/dist/v2/gen/core/auth.gen.js +0 -14
  40. package/node_modules/@deepailab/dal-remote-server/node_modules/@opencode-ai/sdk/dist/v2/gen/core/bodySerializer.gen.js +0 -57
  41. package/node_modules/@deepailab/dal-remote-server/node_modules/@opencode-ai/sdk/dist/v2/gen/core/params.gen.js +0 -102
  42. package/node_modules/@deepailab/dal-remote-server/node_modules/@opencode-ai/sdk/dist/v2/gen/core/pathSerializer.gen.js +0 -106
  43. package/node_modules/@deepailab/dal-remote-server/node_modules/@opencode-ai/sdk/dist/v2/gen/core/queryKeySerializer.gen.js +0 -93
  44. package/node_modules/@deepailab/dal-remote-server/node_modules/@opencode-ai/sdk/dist/v2/gen/core/serverSentEvents.gen.js +0 -139
  45. package/node_modules/@deepailab/dal-remote-server/node_modules/@opencode-ai/sdk/dist/v2/gen/core/utils.gen.js +0 -87
  46. package/node_modules/@deepailab/dal-remote-server/node_modules/@opencode-ai/sdk/dist/v2/gen/sdk.gen.js +0 -3176
  47. package/node_modules/@deepailab/dal-remote-server/node_modules/@opencode-ai/sdk/dist/v2/gen/types.gen.js +0 -2
  48. package/node_modules/@deepailab/dal-remote-server/node_modules/@opencode-ai/sdk/package.json +0 -43
  49. package/node_modules/@opencode/client/dist/chunks/service-contender-1tbj6z39.js +0 -81
  50. package/node_modules/@opencode/client/dist/chunks/service-contender-4tveyqeh.js +0 -34
  51. package/node_modules/@opencode/client/dist/chunks/service-contender-7p1wryha.js +0 -30
  52. package/node_modules/@opencode/client/dist/chunks/service-contender-9rqn6x4v.js +0 -16
  53. package/node_modules/@opencode/client/dist/chunks/service-contender-frbwqjmf.js +0 -145
  54. package/node_modules/@opencode/client/dist/chunks/service-contender-m2eywc8w.js +0 -0
  55. package/node_modules/@opencode/client/dist/chunks/service-contender-n3c99vt5.js +0 -11
  56. package/node_modules/@opencode/client/dist/chunks/service-contender-radw39tv.js +0 -1402
  57. package/node_modules/@opencode/client/dist/chunks/service-contender-vyas3vgt.js +0 -0
  58. package/node_modules/@opencode/client/dist/promise/index.js +0 -79
  59. package/node_modules/@opencode/client/package.json +0 -54
package/NOTICE CHANGED
@@ -191,11 +191,31 @@ Modifications by DeepAILab LLC
191
191
  The daemon, its web UI and every dependency it loads are bundled into the
192
192
  npm package @deepailab/dal-remote-daemon, which `dal remote enable`
193
193
  installs without install scripts and runs as a per-user service.
194
+ The brand starts only the built-in plugins its shell configuration lists
195
+ (none for DAL Code), so the daemon starts no plugin processes for the
196
+ providers the brand hides.
194
197
  New files:
195
198
  packages/remote-daemon/bin/dal-remote-daemon.mjs
196
199
  packages/remote-daemon/scripts/build-package.mjs
197
200
  packages/remote-daemon/.gitignore
198
201
  Changed files:
199
- package.json
202
+ package.json, shell-config/dal.json, scripts/shell-config.mjs
203
+ packages/protocol/src/shell-config.gen.ts
204
+ packages/server/src/server/plugins/builtin/index.ts (+ test)
205
+
206
+ 2026-10-18 Provider SDKs loaded on use; licence check for the daemon package
207
+ Provider SDKs (Claude, ACP, OpenCode) load when their provider is first
208
+ used and report "not included in this build" when absent, so the phone
209
+ daemon package carries only the SDKs of the providers the brand shows.
210
+ The package build refuses any bundled package without a permissive
211
+ licence and lists every bundled package's licence in
212
+ THIRD-PARTY-NOTICES.md.
213
+ New files:
214
+ packages/server/src/server/agent/providers/provider-sdk.ts (+ test)
215
+ Changed files:
216
+ packages/server/src/server/agent/providers/acp-agent.ts,
217
+ cursor-acp-agent.ts, claude/query.ts, claude/rewind.ts,
218
+ opencode-agent.ts, opencode/event-consumer.ts, opencode/v2/runtime.ts
219
+ packages/remote-daemon/scripts/build-package.mjs
200
220
 
201
221
  2026-10-18 This NOTICE file
@@ -0,0 +1,192 @@
1
+ # Third-party notices
2
+
3
+ @deepailab/dal-remote-daemon@0.1.1 bundles the packages below. Each keeps its own licence;
4
+ its licence and notice files are in its directory under node_modules/.
5
+
6
+ | Package | Version | Licence | Licence files |
7
+ |---|---|---|---|
8
+ | @agentclientprotocol/sdk | 1.4.0 | Apache-2.0 | node_modules/@getpaseo/plugin/node_modules/@agentclientprotocol/sdk/LICENSE |
9
+ | @codemirror/language | 6.12.4 | MIT | node_modules/@codemirror/language/LICENSE |
10
+ | @codemirror/legacy-modes | 6.5.3 | MIT | node_modules/@codemirror/legacy-modes/LICENSE |
11
+ | @codemirror/state | 6.7.1 | MIT | node_modules/@codemirror/state/LICENSE |
12
+ | @codemirror/view | 6.43.6 | MIT | node_modules/@codemirror/view/LICENSE |
13
+ | @esbuild/darwin-arm64 | 0.25.12 | MIT | - |
14
+ | @esbuild/darwin-x64 | 0.25.12 | MIT | - |
15
+ | @esbuild/linux-arm64 | 0.25.12 | MIT | - |
16
+ | @esbuild/linux-x64 | 0.25.12 | MIT | - |
17
+ | @getpaseo/client | 0.12.0-beta.1 | Apache-2.0 | node_modules/@getpaseo/client/LICENSE, node_modules/@getpaseo/client/NOTICE |
18
+ | @getpaseo/highlight | 0.12.0-beta.1 | Apache-2.0 | node_modules/@getpaseo/highlight/LICENSE, node_modules/@getpaseo/highlight/NOTICE |
19
+ | @getpaseo/plugin | 0.12.0-beta.1 | Apache-2.0 | node_modules/@getpaseo/plugin/LICENSE, node_modules/@getpaseo/plugin/NOTICE |
20
+ | @getpaseo/protocol | 0.12.0-beta.1 | Apache-2.0 | node_modules/@getpaseo/protocol/LICENSE, node_modules/@getpaseo/protocol/NOTICE |
21
+ | @getpaseo/relay | 0.12.0-beta.1 | Apache-2.0 | node_modules/@getpaseo/relay/LICENSE, node_modules/@getpaseo/relay/NOTICE |
22
+ | @getpaseo/server | 0.12.0-beta.1 | Apache-2.0 | node_modules/@deepailab/dal-remote-server/LICENSE, node_modules/@deepailab/dal-remote-server/NOTICE |
23
+ | @hono/node-server | 1.19.14 | MIT | node_modules/@hono/node-server/LICENSE |
24
+ | @isaacs/ttlcache | 2.1.4 | BlueOak-1.0.0 | - |
25
+ | @lezer/common | 1.5.1 | MIT | node_modules/@lezer/common/LICENSE |
26
+ | @lezer/cpp | 1.1.5 | MIT | node_modules/@lezer/cpp/LICENSE |
27
+ | @lezer/css | 1.3.1 | MIT | node_modules/@lezer/css/LICENSE |
28
+ | @lezer/go | 1.0.1 | MIT | node_modules/@lezer/go/LICENSE |
29
+ | @lezer/highlight | 1.2.3 | MIT | node_modules/@lezer/highlight/LICENSE |
30
+ | @lezer/html | 1.3.13 | MIT | node_modules/@lezer/html/LICENSE |
31
+ | @lezer/java | 1.1.3 | MIT | node_modules/@lezer/java/LICENSE |
32
+ | @lezer/javascript | 1.5.4 | MIT | node_modules/@lezer/javascript/LICENSE |
33
+ | @lezer/json | 1.0.3 | MIT | node_modules/@lezer/json/LICENSE |
34
+ | @lezer/lr | 1.4.8 | MIT | node_modules/@lezer/lr/LICENSE |
35
+ | @lezer/markdown | 1.6.3 | MIT | node_modules/@lezer/markdown/LICENSE |
36
+ | @lezer/php | 1.0.5 | MIT | node_modules/@lezer/php/LICENSE |
37
+ | @lezer/python | 1.1.18 | MIT | node_modules/@lezer/python/LICENSE |
38
+ | @lezer/rust | 1.0.2 | MIT | node_modules/@lezer/rust/LICENSE |
39
+ | @lezer/xml | 1.0.6 | MIT | node_modules/@lezer/xml/LICENSE |
40
+ | @lezer/yaml | 1.0.4 | MIT | node_modules/@lezer/yaml/LICENSE |
41
+ | @marijn/find-cluster-break | 1.0.2 | MIT | node_modules/@marijn/find-cluster-break/LICENSE |
42
+ | @modelcontextprotocol/sdk | 1.29.0 | MIT | node_modules/@modelcontextprotocol/sdk/LICENSE |
43
+ | @pinojs/redact | 0.4.0 | MIT | node_modules/@pinojs/redact/LICENSE |
44
+ | @xterm/headless | 6.0.0 | MIT | - |
45
+ | accepts | 1.3.8 | MIT | node_modules/accepts/LICENSE |
46
+ | ajv-formats | 3.0.1 | MIT | node_modules/@modelcontextprotocol/sdk/node_modules/ajv-formats/LICENSE |
47
+ | ajv | 8.20.0 | MIT | - |
48
+ | ajv | 8.20.0 | MIT | node_modules/@modelcontextprotocol/sdk/node_modules/ajv/LICENSE |
49
+ | ansi-regex | 6.2.2 | MIT | - |
50
+ | array-flatten | 1.1.1 | MIT | node_modules/array-flatten/LICENSE |
51
+ | atomic-sleep | 1.0.0 | MIT | node_modules/atomic-sleep/LICENSE |
52
+ | base64-js | 1.5.1 | MIT | node_modules/base64-js/LICENSE |
53
+ | bcryptjs | 3.0.3 | BSD-3-Clause | node_modules/bcryptjs/LICENSE |
54
+ | body-parser | 1.20.4 | MIT | node_modules/body-parser/LICENSE |
55
+ | buffer-from | 1.1.2 | MIT | node_modules/buffer-from/LICENSE |
56
+ | bytes | 3.1.2 | MIT | node_modules/bytes/LICENSE |
57
+ | call-bind-apply-helpers | 1.0.2 | MIT | node_modules/call-bind-apply-helpers/LICENSE |
58
+ | call-bound | 1.0.4 | MIT | node_modules/call-bound/LICENSE |
59
+ | colorette | 2.0.20 | MIT | node_modules/colorette/LICENSE.md |
60
+ | content-disposition | 0.5.4 | MIT | node_modules/content-disposition/LICENSE |
61
+ | content-type | 1.0.5 | MIT | node_modules/content-type/LICENSE |
62
+ | cookie-signature | 1.0.7 | MIT | - |
63
+ | cookie | 0.7.2 | MIT | node_modules/cookie/LICENSE |
64
+ | crelt | 1.0.6 | MIT | node_modules/crelt/LICENSE |
65
+ | cross-spawn | 7.0.6 | MIT | node_modules/cross-spawn/LICENSE |
66
+ | dateformat | 4.6.3 | MIT | node_modules/dateformat/LICENSE |
67
+ | debug | 2.6.9 | MIT | node_modules/body-parser/node_modules/debug/LICENSE |
68
+ | debug | 2.6.9 | MIT | node_modules/express/node_modules/debug/LICENSE |
69
+ | debug | 2.6.9 | MIT | node_modules/send/node_modules/debug/LICENSE |
70
+ | depd | 2.0.0 | MIT | node_modules/depd/LICENSE |
71
+ | destroy | 1.2.0 | MIT | node_modules/destroy/LICENSE |
72
+ | dijkstrajs | 1.0.3 | MIT | node_modules/dijkstrajs/LICENSE.md |
73
+ | dunder-proto | 1.0.1 | MIT | node_modules/dunder-proto/LICENSE |
74
+ | ee-first | 1.1.1 | MIT | node_modules/ee-first/LICENSE |
75
+ | encodeurl | 2.0.0 | MIT | node_modules/encodeurl/LICENSE |
76
+ | end-of-stream | 1.4.5 | MIT | node_modules/end-of-stream/LICENSE |
77
+ | entities | 2.0.3 | BSD-2-Clause | node_modules/markdown-it/node_modules/entities/LICENSE |
78
+ | es-define-property | 1.0.1 | MIT | node_modules/es-define-property/LICENSE |
79
+ | es-errors | 1.3.0 | MIT | node_modules/es-errors/LICENSE |
80
+ | es-object-atoms | 1.1.1 | MIT | node_modules/es-object-atoms/LICENSE |
81
+ | esbuild | 0.25.12 | MIT | - |
82
+ | escape-html | 1.0.3 | MIT | node_modules/escape-html/LICENSE |
83
+ | etag | 1.8.1 | MIT | node_modules/etag/LICENSE |
84
+ | eventsource-parser | 3.0.6 | MIT | node_modules/eventsource-parser/LICENSE |
85
+ | eventsource | 3.0.7 | MIT | node_modules/eventsource/LICENSE |
86
+ | express | 4.22.1 | MIT | node_modules/express/LICENSE |
87
+ | fast-copy | 4.0.2 | MIT | node_modules/fast-copy/LICENSE |
88
+ | fast-deep-equal | 3.1.3 | MIT | node_modules/fast-deep-equal/LICENSE |
89
+ | fast-safe-stringify | 2.1.1 | MIT | node_modules/fast-safe-stringify/LICENSE |
90
+ | fast-uri | 3.1.2 | BSD-3-Clause | node_modules/fast-uri/LICENSE |
91
+ | finalhandler | 1.3.2 | MIT | node_modules/express/node_modules/finalhandler/LICENSE |
92
+ | forwarded | 0.2.0 | MIT | node_modules/forwarded/LICENSE |
93
+ | fresh | 0.5.2 | MIT | node_modules/fresh/LICENSE |
94
+ | function-bind | 1.1.2 | MIT | node_modules/function-bind/LICENSE |
95
+ | get-intrinsic | 1.3.0 | MIT | node_modules/get-intrinsic/LICENSE |
96
+ | get-proto | 1.0.1 | MIT | node_modules/get-proto/LICENSE |
97
+ | gopd | 1.2.0 | MIT | node_modules/gopd/LICENSE |
98
+ | has-symbols | 1.1.0 | MIT | node_modules/has-symbols/LICENSE |
99
+ | hasown | 2.0.2 | MIT | node_modules/hasown/LICENSE |
100
+ | http-errors | 2.0.1 | MIT | node_modules/http-errors/LICENSE |
101
+ | iconv-lite | 0.4.24 | MIT | node_modules/body-parser/node_modules/iconv-lite/LICENSE |
102
+ | iconv-lite | 0.4.24 | MIT | node_modules/raw-body/node_modules/iconv-lite/LICENSE |
103
+ | inherits | 2.0.4 | ISC | node_modules/inherits/LICENSE |
104
+ | ipaddr.js | 1.9.1 | MIT | node_modules/ipaddr.js/LICENSE |
105
+ | isexe | 2.0.0 | ISC | node_modules/isexe/LICENSE |
106
+ | isexe | 3.1.5 | BlueOak-1.0.0 | - |
107
+ | json-schema-traverse | 1.0.0 | MIT | node_modules/json-schema-traverse/LICENSE |
108
+ | lezer-elixir | 1.1.3 | Apache-2.0 | node_modules/lezer-elixir/LICENSE |
109
+ | linkify-it | 2.2.0 | MIT | node_modules/linkify-it/LICENSE |
110
+ | lru-cache | 11.5.1 | BlueOak-1.0.0 | - |
111
+ | markdown-it | 10.0.0 | MIT | node_modules/markdown-it/LICENSE |
112
+ | math-intrinsics | 1.1.0 | MIT | node_modules/math-intrinsics/LICENSE |
113
+ | mdurl | 1.0.1 | MIT | node_modules/mdurl/LICENSE |
114
+ | media-typer | 0.3.0 | MIT | node_modules/media-typer/LICENSE |
115
+ | merge-descriptors | 1.0.3 | MIT | node_modules/merge-descriptors/LICENSE |
116
+ | methods | 1.1.2 | MIT | node_modules/methods/LICENSE |
117
+ | mime-db | 1.52.0 | MIT | node_modules/mime-types/node_modules/mime-db/LICENSE |
118
+ | mime-types | 2.1.35 | MIT | node_modules/mime-types/LICENSE |
119
+ | mime | 1.6.0 | MIT | node_modules/send/node_modules/mime/LICENSE |
120
+ | mnemonic-id | 3.2.7 | MIT | node_modules/mnemonic-id/LICENSE |
121
+ | ms | 2.0.0 | MIT | node_modules/body-parser/node_modules/ms/license.md |
122
+ | ms | 2.0.0 | MIT | node_modules/express/node_modules/ms/license.md |
123
+ | ms | 2.0.0 | MIT | node_modules/send/node_modules/debug/node_modules/ms/license.md |
124
+ | ms | 2.1.3 | MIT | node_modules/ms/license.md |
125
+ | negotiator | 0.6.3 | MIT | node_modules/negotiator/LICENSE |
126
+ | node-pty | 1.2.0-beta.15 | MIT | - |
127
+ | object-inspect | 1.13.4 | MIT | node_modules/object-inspect/LICENSE |
128
+ | on-exit-leak-free | 2.1.2 | MIT | node_modules/on-exit-leak-free/LICENSE |
129
+ | on-finished | 2.4.1 | MIT | node_modules/on-finished/LICENSE |
130
+ | once | 1.4.0 | ISC | node_modules/once/LICENSE |
131
+ | openai | 6.44.0 | Apache-2.0 | - |
132
+ | p-limit | 7.3.0 | MIT | - |
133
+ | p-throttle | 8.1.0 | MIT | node_modules/p-throttle/license |
134
+ | parseurl | 1.3.3 | MIT | node_modules/parseurl/LICENSE |
135
+ | path-key | 3.1.1 | MIT | node_modules/path-key/license |
136
+ | path-to-regexp | 0.1.13 | MIT | node_modules/path-to-regexp/LICENSE |
137
+ | pino-abstract-transport | 3.0.0 | MIT | node_modules/pino-abstract-transport/LICENSE |
138
+ | pino-pretty | 13.1.3 | MIT | node_modules/pino-pretty/LICENSE |
139
+ | pino-std-serializers | 7.1.0 | MIT | node_modules/pino-std-serializers/LICENSE |
140
+ | pino | 10.3.1 | MIT | node_modules/pino/LICENSE |
141
+ | pkce-challenge | 5.0.1 | MIT | node_modules/pkce-challenge/LICENSE |
142
+ | pngjs | 5.0.0 | MIT | node_modules/qrcode/node_modules/pngjs/LICENSE |
143
+ | proxy-addr | 2.0.7 | MIT | node_modules/proxy-addr/LICENSE |
144
+ | pump | 3.0.4 | MIT | node_modules/pump/LICENSE |
145
+ | qrcode | 1.5.4 | MIT | node_modules/qrcode/license |
146
+ | qs | 6.14.2 | BSD-3-Clause | node_modules/qs/LICENSE.md |
147
+ | quick-format-unescaped | 4.0.4 | MIT | node_modules/quick-format-unescaped/LICENSE |
148
+ | range-parser | 1.2.1 | MIT | node_modules/range-parser/LICENSE |
149
+ | raw-body | 2.5.3 | MIT | node_modules/raw-body/LICENSE |
150
+ | real-require | 0.2.0 | MIT | node_modules/real-require/LICENSE.md |
151
+ | rotating-file-stream | 3.2.9 | MIT | node_modules/rotating-file-stream/LICENSE |
152
+ | safe-buffer | 5.2.1 | MIT | node_modules/safe-buffer/LICENSE |
153
+ | safe-stable-stringify | 2.5.0 | MIT | node_modules/safe-stable-stringify/LICENSE |
154
+ | safer-buffer | 2.1.2 | MIT | node_modules/safer-buffer/LICENSE |
155
+ | secure-json-parse | 4.1.0 | BSD-3-Clause | node_modules/secure-json-parse/LICENSE |
156
+ | semver | 7.8.5 | ISC | - |
157
+ | semver | 7.8.5 | ISC | node_modules/@getpaseo/protocol/node_modules/semver/LICENSE |
158
+ | send | 0.19.2 | MIT | node_modules/send/LICENSE |
159
+ | serve-static | 1.16.3 | MIT | node_modules/serve-static/LICENSE |
160
+ | setprototypeof | 1.2.0 | ISC | node_modules/setprototypeof/LICENSE |
161
+ | shebang-command | 2.0.0 | MIT | node_modules/shebang-command/license |
162
+ | shebang-regex | 3.0.0 | MIT | node_modules/shebang-regex/license |
163
+ | side-channel-list | 1.0.0 | MIT | node_modules/side-channel-list/LICENSE |
164
+ | side-channel-map | 1.0.1 | MIT | node_modules/side-channel-map/LICENSE |
165
+ | side-channel-weakmap | 1.0.2 | MIT | node_modules/side-channel-weakmap/LICENSE |
166
+ | side-channel | 1.1.0 | MIT | node_modules/side-channel/LICENSE |
167
+ | sonic-boom | 4.2.1 | MIT | node_modules/sonic-boom/LICENSE |
168
+ | source-map-support | 0.5.21 | MIT | node_modules/source-map-support/LICENSE.md |
169
+ | source-map | 0.6.1 | BSD-3-Clause | node_modules/source-map-support/node_modules/source-map/LICENSE |
170
+ | split2 | 4.2.0 | ISC | node_modules/split2/LICENSE |
171
+ | statuses | 2.0.2 | MIT | node_modules/statuses/LICENSE |
172
+ | strip-ansi | 7.1.2 | MIT | - |
173
+ | style-mod | 4.1.3 | MIT | node_modules/style-mod/LICENSE |
174
+ | thread-stream | 4.0.0 | MIT | node_modules/thread-stream/LICENSE |
175
+ | toidentifier | 1.0.1 | MIT | node_modules/toidentifier/LICENSE |
176
+ | tree-kill | 1.2.2 | MIT | node_modules/tree-kill/LICENSE |
177
+ | tweetnacl | 1.0.3 | Unlicense | node_modules/tweetnacl/AUTHORS.md, node_modules/tweetnacl/LICENSE |
178
+ | type-is | 1.6.18 | MIT | node_modules/type-is/LICENSE |
179
+ | typescript | 5.9.3 | Apache-2.0 | node_modules/typescript/LICENSE.txt |
180
+ | uc.micro | 1.0.6 | MIT | node_modules/uc.micro/LICENSE.txt |
181
+ | unpipe | 1.0.0 | MIT | node_modules/unpipe/LICENSE |
182
+ | utils-merge | 1.0.1 | MIT | node_modules/utils-merge/LICENSE |
183
+ | uuid | 9.0.1 | MIT | node_modules/uuid/LICENSE.md |
184
+ | vary | 1.1.2 | MIT | node_modules/vary/LICENSE |
185
+ | w3c-keyname | 2.2.8 | MIT | node_modules/w3c-keyname/LICENSE |
186
+ | which | 2.0.2 | ISC | node_modules/which/LICENSE |
187
+ | which | 5.0.0 | ISC | - |
188
+ | wrappy | 1.0.2 | ISC | node_modules/wrappy/LICENSE |
189
+ | ws | 8.20.0 | MIT | node_modules/ws/LICENSE |
190
+ | yocto-queue | 1.2.2 | MIT | - |
191
+ | zod-to-json-schema | 3.25.1 | ISC | node_modules/zod-to-json-schema/LICENSE |
192
+ | zod | 4.4.3 | MIT | node_modules/zod/LICENSE |
@@ -191,11 +191,31 @@ Modifications by DeepAILab LLC
191
191
  The daemon, its web UI and every dependency it loads are bundled into the
192
192
  npm package @deepailab/dal-remote-daemon, which `dal remote enable`
193
193
  installs without install scripts and runs as a per-user service.
194
+ The brand starts only the built-in plugins its shell configuration lists
195
+ (none for DAL Code), so the daemon starts no plugin processes for the
196
+ providers the brand hides.
194
197
  New files:
195
198
  packages/remote-daemon/bin/dal-remote-daemon.mjs
196
199
  packages/remote-daemon/scripts/build-package.mjs
197
200
  packages/remote-daemon/.gitignore
198
201
  Changed files:
199
- package.json
202
+ package.json, shell-config/dal.json, scripts/shell-config.mjs
203
+ packages/protocol/src/shell-config.gen.ts
204
+ packages/server/src/server/plugins/builtin/index.ts (+ test)
205
+
206
+ 2026-10-18 Provider SDKs loaded on use; licence check for the daemon package
207
+ Provider SDKs (Claude, ACP, OpenCode) load when their provider is first
208
+ used and report "not included in this build" when absent, so the phone
209
+ daemon package carries only the SDKs of the providers the brand shows.
210
+ The package build refuses any bundled package without a permissive
211
+ licence and lists every bundled package's licence in
212
+ THIRD-PARTY-NOTICES.md.
213
+ New files:
214
+ packages/server/src/server/agent/providers/provider-sdk.ts (+ test)
215
+ Changed files:
216
+ packages/server/src/server/agent/providers/acp-agent.ts,
217
+ cursor-acp-agent.ts, claude/query.ts, claude/rewind.ts,
218
+ opencode-agent.ts, opencode/event-consumer.ts, opencode/v2/runtime.ts
219
+ packages/remote-daemon/scripts/build-package.mjs
200
220
 
201
221
  2026-10-18 This NOTICE file
@@ -5,7 +5,7 @@ import { homedir } from "node:os";
5
5
  import path from "node:path";
6
6
  import { Readable, Writable } from "node:stream";
7
7
  import { terminateWithTreeKill } from "../../../utils/tree-kill.js";
8
- import { ClientSideConnection, PROTOCOL_VERSION, } from "@agentclientprotocol/sdk";
8
+ import { loadProviderSdk } from "./provider-sdk.js";
9
9
  import { getAgentStreamEventTurnId, } from "../agent-sdk-types.js";
10
10
  import { raceProviderRefreshAbort, runProviderRefreshActivity, } from "../provider-refresh-deadline.js";
11
11
  import { isDefaultAgentCreateConfigUnattended, resolveDefaultAgentCreateConfig, } from "../create-agent-mode.js";
@@ -808,7 +808,7 @@ export class ACPAgentClient {
808
808
  });
809
809
  });
810
810
  const stream = createLoggedNdJsonStream(Writable.toWeb(child.stdin), Readable.toWeb(child.stdout), { logger: this.logger, provider: this.provider });
811
- const connection = new ClientSideConnection(() => client, stream);
811
+ const connection = new (acpSdk().ClientSideConnection)(() => client, stream);
812
812
  return {
813
813
  child,
814
814
  connection,
@@ -830,7 +830,7 @@ export class ACPAgentClient {
830
830
  try {
831
831
  return await this.runACPRequest(() => Promise.race([
832
832
  transport.connection.initialize({
833
- protocolVersion: PROTOCOL_VERSION,
833
+ protocolVersion: acpSdk().PROTOCOL_VERSION,
834
834
  clientCapabilities: buildACPClientCapabilities(this.clientCapabilityMeta, configuredOptions.clientCapabilities ?? this.clientCapabilities),
835
835
  clientInfo: { name: SHELL_CONFIG.productName, version: "dev" },
836
836
  }),
@@ -1981,14 +1981,14 @@ export class ACPAgentSession {
1981
1981
  }
1982
1982
  });
1983
1983
  const stream = createLoggedNdJsonStream(Writable.toWeb(child.stdin), Readable.toWeb(child.stdout), { logger: this.logger, provider: this.provider });
1984
- const connection = new ClientSideConnection(() => this, stream);
1984
+ const connection = new (acpSdk().ClientSideConnection)(() => this, stream);
1985
1985
  // Take ownership before initialize so the outer initialization guard can
1986
1986
  // close the process even when the ACP handshake itself rejects.
1987
1987
  this.child = child;
1988
1988
  this.connection = connection;
1989
1989
  const initialize = await this.runACPRequest(() => Promise.race([
1990
1990
  connection.initialize({
1991
- protocolVersion: PROTOCOL_VERSION,
1991
+ protocolVersion: acpSdk().PROTOCOL_VERSION,
1992
1992
  clientCapabilities: buildACPClientCapabilities(this.clientCapabilityMeta, this.clientCapabilities),
1993
1993
  clientInfo: { name: SHELL_CONFIG.productName, version: "dev" },
1994
1994
  }),
@@ -2995,4 +2995,8 @@ async function terminateChildProcess(child, timeoutMs, terminate) {
2995
2995
  child.stderr.destroy();
2996
2996
  }
2997
2997
  }
2998
+ /** The ACP SDK, loaded when an ACP provider first starts (it is not in every build). */
2999
+ function acpSdk() {
3000
+ return loadProviderSdk("ACP", "@agentclientprotocol/sdk");
3001
+ }
2998
3002
  //# sourceMappingURL=acp-agent.js.map
@@ -1,7 +1,7 @@
1
- import { query } from "@anthropic-ai/claude-agent-sdk";
2
1
  import { createProviderEnv, createProviderEnvSpec, } from "../../provider-launch-config.js";
3
2
  import { buildSelfNodeCommand } from "../../../paseo-env.js";
4
3
  import { spawnProcess } from "../../../../utils/spawn.js";
4
+ import { loadProviderSdk } from "../provider-sdk.js";
5
5
  function isChildProcessWithStreams(child) {
6
6
  return child.stdin !== null && child.stdout !== null && child.stderr !== null;
7
7
  }
@@ -77,7 +77,8 @@ function applyRuntimeSettingsToClaudeOptions(options, context) {
77
77
  };
78
78
  }
79
79
  export function claudeQuery(input, context = {}) {
80
- const launchQuery = context.queryFactory ?? query;
80
+ const launchQuery = context.queryFactory ??
81
+ loadProviderSdk("Claude", "@anthropic-ai/claude-agent-sdk").query;
81
82
  return launchQuery({
82
83
  ...input,
83
84
  options: applyRuntimeSettingsToClaudeOptions(input.options, context),
@@ -1,11 +1,11 @@
1
1
  import { appendFile, readFile } from "node:fs/promises";
2
2
  import path from "node:path";
3
- import { forkSession as claudeForkSession, } from "@anthropic-ai/claude-agent-sdk";
3
+ import { loadProviderSdk } from "../provider-sdk.js";
4
4
  // On its own, the SDK looks for the session under the daemon's CLAUDE_CONFIG_DIR, while a
5
5
  // provider can point Claude Code at another one. Forking through a store rooted at the
6
6
  // transcript's folder reads the session where Claude Code wrote it and writes the fork beside it.
7
7
  export const realClaudeRewindSdk = {
8
- forkSession: (sessionId, options) => claudeForkSession(sessionId, {
8
+ forkSession: (sessionId, options) => loadProviderSdk("Claude", "@anthropic-ai/claude-agent-sdk").forkSession(sessionId, {
9
9
  upToMessageId: options.upToMessageId,
10
10
  sessionStore: projectFolderSessionStore(path.dirname(options.transcriptPath)),
11
11
  }),
@@ -1,7 +1,7 @@
1
- import { zSessionConfigOption } from "@agentclientprotocol/sdk/dist/schema/zod.gen.js";
2
1
  import { z } from "zod";
3
2
  import { deriveSelectorOptions, } from "./acp-agent.js";
4
3
  import { GenericACPAgentClient } from "./generic-acp-agent.js";
4
+ import { loadProviderSdk } from "./provider-sdk.js";
5
5
  const CURSOR_INITIAL_COMMANDS_WAIT_TIMEOUT_MS = 10000;
6
6
  const CURSOR_CLIENT_CAPABILITY_META = {
7
7
  parameterizedModelPicker: true,
@@ -14,13 +14,17 @@ export const CURSOR_FAST_FEATURE_OPTION = {
14
14
  tooltip: "Select Cursor fast mode",
15
15
  icon: "zap",
16
16
  };
17
- const CursorModelCatalogSchema = z.object({
18
- models: z.array(z.object({
19
- value: z.string().min(1),
20
- name: z.string(),
21
- configOptions: z.array(zSessionConfigOption),
22
- })),
23
- });
17
+ // Built on first use: the ACP SDK's schemas are not in every build.
18
+ function cursorModelCatalogSchema() {
19
+ const { zSessionConfigOption } = loadProviderSdk("Cursor", "@agentclientprotocol/sdk/dist/schema/zod.gen.js");
20
+ return z.object({
21
+ models: z.array(z.object({
22
+ value: z.string().min(1),
23
+ name: z.string(),
24
+ configOptions: z.array(zSessionConfigOption),
25
+ })),
26
+ });
27
+ }
24
28
  // Cursor model switches persist CLI preferences, even in a throwaway probe session.
25
29
  // Its extension returns each model's parameter definitions without selecting it.
26
30
  export async function resolveCursorCatalogModels({ connection, models, provider, runRequest, }) {
@@ -42,7 +46,7 @@ export async function resolveCursorCatalogModels({ connection, models, provider,
42
46
  async function fetchCursorModelCatalog(connection) {
43
47
  try {
44
48
  const response = await connection.extMethod("cursor/list_available_models", {});
45
- return CursorModelCatalogSchema.parse(response);
49
+ return cursorModelCatalogSchema().parse(response);
46
50
  }
47
51
  catch (error) {
48
52
  const extensionUnavailable = typeof error === "object" && error !== null && "code" in error && error.code === -32601;
@@ -1,4 +1,4 @@
1
- import { createOpencodeClient, } from "@opencode-ai/sdk/v2/client";
1
+ import { loadProviderSdk } from "../provider-sdk.js";
2
2
  const FIRST_RECORD_WATCHDOG_MS = 5000;
3
3
  const WATCHDOG_MS = 30000;
4
4
  const MAX_BACKOFF_MS = 5000;
@@ -35,7 +35,7 @@ export class OpenCodeEventConsumer {
35
35
  this.closed = false;
36
36
  this.client =
37
37
  options.createClient?.(options.serverUrl) ??
38
- createOpencodeClient({ baseUrl: options.serverUrl });
38
+ loadProviderSdk("OpenCode", "@opencode-ai/sdk/v2/client").createOpencodeClient({ baseUrl: options.serverUrl });
39
39
  this.logger = options.logger;
40
40
  this.timing = options.timing ?? systemTiming;
41
41
  this.readyPromise = new Promise((resolve, reject) => {
@@ -1,9 +1,9 @@
1
1
  import { decorateOpenCodeV2Env, materializeOpenCodeV2Plugin } from "../bridge.js";
2
2
  import { resolvePaseoHome } from "../../../../paseo-home.js";
3
- import { OpenCode } from "@opencode/client";
4
3
  import { randomBytes } from "node:crypto";
5
4
  import { mkdir } from "node:fs/promises";
6
5
  import { spawnProcess } from "../../../../../utils/spawn.js";
6
+ import { loadProviderSdk } from "../../provider-sdk.js";
7
7
  import { terminateWithTreeKill } from "../../../../../utils/tree-kill.js";
8
8
  import { createProviderEnvSpec, resolveProviderLaunch, } from "../../../provider-launch-config.js";
9
9
  import { resolveOpenCodeHomeDir } from "../paths.js";
@@ -194,6 +194,7 @@ export class V2Runtime {
194
194
  // Drain stderr without retaining provider output that may contain credentials.
195
195
  process.stderr?.on("data", () => undefined);
196
196
  });
197
+ const { OpenCode } = loadProviderSdk("OpenCode", "@opencode/client");
197
198
  const client = OpenCode.make({
198
199
  baseUrl: url,
199
200
  headers: {
@@ -1,5 +1,5 @@
1
1
  import { validateProviderOptions } from "../provider-options.js";
2
- import { createOpencodeClient, } from "@opencode-ai/sdk/v2/client";
2
+ import { loadProviderSdk } from "./provider-sdk.js";
3
3
  import fs from "node:fs/promises";
4
4
  import { randomBytes, randomUUID } from "node:crypto";
5
5
  import { isDeepStrictEqual } from "node:util";
@@ -967,7 +967,7 @@ export const __openCodeInternals = {
967
967
  },
968
968
  };
969
969
  function createSdkOpenCodeClient(options) {
970
- return createOpencodeClient(options);
970
+ return loadProviderSdk("OpenCode", "@opencode-ai/sdk/v2/client").createOpencodeClient(options);
971
971
  }
972
972
  export class OpenCodeAgentClient {
973
973
  constructor(logger, runtimeSettings, deps = {}) {
@@ -0,0 +1,46 @@
1
+ import { createRequire } from "node:module";
2
+ import { fileURLToPath } from "node:url";
3
+ const requireModule = createRequire(import.meta.url);
4
+ /**
5
+ * A provider whose SDK this build does not ship. A white-label build carries only the SDKs of the
6
+ * providers its brand shows (shell-config `providers.visible`); the others fail here, on first use,
7
+ * instead of when the daemon starts.
8
+ */
9
+ export class ProviderSdkNotIncludedError extends Error {
10
+ constructor(provider, specifier, cause) {
11
+ super(`此版本不包含 ${provider}(${provider} is not included in this build: ${specifier})`, {
12
+ cause,
13
+ });
14
+ this.name = "ProviderSdkNotIncludedError";
15
+ this.provider = provider;
16
+ this.specifier = specifier;
17
+ }
18
+ }
19
+ function isMissingModule(error) {
20
+ const code = error instanceof Error ? Reflect.get(error, "code") : undefined;
21
+ return code === "ERR_MODULE_NOT_FOUND" || code === "MODULE_NOT_FOUND";
22
+ }
23
+ const loaded = new Map();
24
+ /**
25
+ * Loads a provider's SDK when the provider is first used. Synchronous (ESM through require), so
26
+ * provider classes keep their synchronous constructors and factories. `T` is the module's type,
27
+ * written as `typeof import("<specifier>")`.
28
+ */
29
+ export function loadProviderSdk(provider, specifier) {
30
+ const cached = loaded.get(specifier);
31
+ if (cached)
32
+ return cached;
33
+ let file;
34
+ try {
35
+ file = fileURLToPath(import.meta.resolve(specifier));
36
+ }
37
+ catch (error) {
38
+ if (isMissingModule(error))
39
+ throw new ProviderSdkNotIncludedError(provider, specifier, error);
40
+ throw error;
41
+ }
42
+ const module = requireModule(file);
43
+ loaded.set(specifier, module);
44
+ return module;
45
+ }
46
+ //# sourceMappingURL=provider-sdk.js.map
@@ -69,8 +69,6 @@
69
69
  "access": "public"
70
70
  },
71
71
  "dependencies": {
72
- "@agentclientprotocol/sdk": "^0.17.1",
73
- "@anthropic-ai/claude-agent-sdk": "0.3.246",
74
72
  "@getpaseo/client": "0.12.0-beta.1",
75
73
  "@getpaseo/highlight": "0.12.0-beta.1",
76
74
  "@getpaseo/plugin": "0.12.0-beta.1",
@@ -78,8 +76,6 @@
78
76
  "@getpaseo/relay": "0.12.0-beta.1",
79
77
  "@isaacs/ttlcache": "^2.1.4",
80
78
  "@modelcontextprotocol/sdk": "1.29.0",
81
- "@opencode-ai/sdk": "1.14.46",
82
- "@opencode/client": "2.0.10",
83
79
  "@xterm/headless": "^6.0.0",
84
80
  "ajv": "^8.20.0",
85
81
  "bcryptjs": "^3.0.3",
@@ -108,5 +104,6 @@
108
104
  },
109
105
  "overrides": {
110
106
  "lightningcss": "1.30.1"
111
- }
107
+ },
108
+ "license": "Apache-2.0"
112
109
  }
@@ -191,11 +191,31 @@ Modifications by DeepAILab LLC
191
191
  The daemon, its web UI and every dependency it loads are bundled into the
192
192
  npm package @deepailab/dal-remote-daemon, which `dal remote enable`
193
193
  installs without install scripts and runs as a per-user service.
194
+ The brand starts only the built-in plugins its shell configuration lists
195
+ (none for DAL Code), so the daemon starts no plugin processes for the
196
+ providers the brand hides.
194
197
  New files:
195
198
  packages/remote-daemon/bin/dal-remote-daemon.mjs
196
199
  packages/remote-daemon/scripts/build-package.mjs
197
200
  packages/remote-daemon/.gitignore
198
201
  Changed files:
199
- package.json
202
+ package.json, shell-config/dal.json, scripts/shell-config.mjs
203
+ packages/protocol/src/shell-config.gen.ts
204
+ packages/server/src/server/plugins/builtin/index.ts (+ test)
205
+
206
+ 2026-10-18 Provider SDKs loaded on use; licence check for the daemon package
207
+ Provider SDKs (Claude, ACP, OpenCode) load when their provider is first
208
+ used and report "not included in this build" when absent, so the phone
209
+ daemon package carries only the SDKs of the providers the brand shows.
210
+ The package build refuses any bundled package without a permissive
211
+ licence and lists every bundled package's licence in
212
+ THIRD-PARTY-NOTICES.md.
213
+ New files:
214
+ packages/server/src/server/agent/providers/provider-sdk.ts (+ test)
215
+ Changed files:
216
+ packages/server/src/server/agent/providers/acp-agent.ts,
217
+ cursor-acp-agent.ts, claude/query.ts, claude/rewind.ts,
218
+ opencode-agent.ts, opencode/event-consumer.ts, opencode/v2/runtime.ts
219
+ packages/remote-daemon/scripts/build-package.mjs
200
220
 
201
221
  2026-10-18 This NOTICE file
@@ -34,5 +34,6 @@
34
34
  "@getpaseo/protocol": "0.12.0-beta.1",
35
35
  "@getpaseo/relay": "0.12.0-beta.1",
36
36
  "zod": "^4.4.3"
37
- }
37
+ },
38
+ "license": "Apache-2.0"
38
39
  }
@@ -191,11 +191,31 @@ Modifications by DeepAILab LLC
191
191
  The daemon, its web UI and every dependency it loads are bundled into the
192
192
  npm package @deepailab/dal-remote-daemon, which `dal remote enable`
193
193
  installs without install scripts and runs as a per-user service.
194
+ The brand starts only the built-in plugins its shell configuration lists
195
+ (none for DAL Code), so the daemon starts no plugin processes for the
196
+ providers the brand hides.
194
197
  New files:
195
198
  packages/remote-daemon/bin/dal-remote-daemon.mjs
196
199
  packages/remote-daemon/scripts/build-package.mjs
197
200
  packages/remote-daemon/.gitignore
198
201
  Changed files:
199
- package.json
202
+ package.json, shell-config/dal.json, scripts/shell-config.mjs
203
+ packages/protocol/src/shell-config.gen.ts
204
+ packages/server/src/server/plugins/builtin/index.ts (+ test)
205
+
206
+ 2026-10-18 Provider SDKs loaded on use; licence check for the daemon package
207
+ Provider SDKs (Claude, ACP, OpenCode) load when their provider is first
208
+ used and report "not included in this build" when absent, so the phone
209
+ daemon package carries only the SDKs of the providers the brand shows.
210
+ The package build refuses any bundled package without a permissive
211
+ licence and lists every bundled package's licence in
212
+ THIRD-PARTY-NOTICES.md.
213
+ New files:
214
+ packages/server/src/server/agent/providers/provider-sdk.ts (+ test)
215
+ Changed files:
216
+ packages/server/src/server/agent/providers/acp-agent.ts,
217
+ cursor-acp-agent.ts, claude/query.ts, claude/rewind.ts,
218
+ opencode-agent.ts, opencode/event-consumer.ts, opencode/v2/runtime.ts
219
+ packages/remote-daemon/scripts/build-package.mjs
200
220
 
201
221
  2026-10-18 This NOTICE file
@@ -40,5 +40,6 @@
40
40
  "@lezer/xml": "^1.0.6",
41
41
  "@lezer/yaml": "^1.0.4",
42
42
  "lezer-elixir": "^1.1.2"
43
- }
43
+ },
44
+ "license": "Apache-2.0"
44
45
  }
@@ -191,11 +191,31 @@ Modifications by DeepAILab LLC
191
191
  The daemon, its web UI and every dependency it loads are bundled into the
192
192
  npm package @deepailab/dal-remote-daemon, which `dal remote enable`
193
193
  installs without install scripts and runs as a per-user service.
194
+ The brand starts only the built-in plugins its shell configuration lists
195
+ (none for DAL Code), so the daemon starts no plugin processes for the
196
+ providers the brand hides.
194
197
  New files:
195
198
  packages/remote-daemon/bin/dal-remote-daemon.mjs
196
199
  packages/remote-daemon/scripts/build-package.mjs
197
200
  packages/remote-daemon/.gitignore
198
201
  Changed files:
199
- package.json
202
+ package.json, shell-config/dal.json, scripts/shell-config.mjs
203
+ packages/protocol/src/shell-config.gen.ts
204
+ packages/server/src/server/plugins/builtin/index.ts (+ test)
205
+
206
+ 2026-10-18 Provider SDKs loaded on use; licence check for the daemon package
207
+ Provider SDKs (Claude, ACP, OpenCode) load when their provider is first
208
+ used and report "not included in this build" when absent, so the phone
209
+ daemon package carries only the SDKs of the providers the brand shows.
210
+ The package build refuses any bundled package without a permissive
211
+ licence and lists every bundled package's licence in
212
+ THIRD-PARTY-NOTICES.md.
213
+ New files:
214
+ packages/server/src/server/agent/providers/provider-sdk.ts (+ test)
215
+ Changed files:
216
+ packages/server/src/server/agent/providers/acp-agent.ts,
217
+ cursor-acp-agent.ts, claude/query.ts, claude/rewind.ts,
218
+ opencode-agent.ts, opencode/event-consumer.ts, opencode/v2/runtime.ts
219
+ packages/remote-daemon/scripts/build-package.mjs
200
220
 
201
221
  2026-10-18 This NOTICE file