@deepseek-ai/dsh-plugin-manager 0.1.6-alpha.2 → 0.1.7-alpha.2

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.
@@ -9,6 +9,10 @@ const _deepseek_ai_dsh_plugin_manager_pluginManager_cancelInstall_result$schema
9
9
  }))
10
10
  let _deepseek_ai_dsh_plugin_manager_pluginManager_inspect_parameter_0$schema$value
11
11
  const _deepseek_ai_dsh_plugin_manager_pluginManager_inspect_parameter_0$schema = () => (_deepseek_ai_dsh_plugin_manager_pluginManager_inspect_parameter_0$schema$value ??= z.string())
12
+ let _deepseek_ai_dsh_plugin_manager_pluginManager_inspect_parameter_1$schema$value
13
+ const _deepseek_ai_dsh_plugin_manager_pluginManager_inspect_parameter_1$schema = () => (_deepseek_ai_dsh_plugin_manager_pluginManager_inspect_parameter_1$schema$value ??= z.union([z.undefined(), z.object({
14
+ 'registry': z.union([z.literal(null), z.string()]).readonly().optional(),
15
+ })]))
12
16
  let _deepseek_ai_dsh_plugin_manager_pluginManager_inspect_result$schema$value
13
17
  const _deepseek_ai_dsh_plugin_manager_pluginManager_inspect_result$schema = () => (_deepseek_ai_dsh_plugin_manager_pluginManager_inspect_result$schema$value ??= z.union([z.object({
14
18
  'status': z.literal("accepted").readonly(),
@@ -17,10 +21,13 @@ const _deepseek_ai_dsh_plugin_manager_pluginManager_inspect_result$schema = () =
17
21
  'version': z.string().readonly().optional(),
18
22
  'description': z.string().readonly().optional(),
19
23
  'bundle': z.union([z.literal(null), z.literal(false), z.literal(true)]).readonly(),
24
+ 'registry': z.union([z.literal(null), z.string()]).readonly(),
25
+ 'host': z.string().readonly().optional(),
20
26
  }), z.object({
21
27
  'status': z.literal("refused").readonly(),
22
- 'problem': z.union([z.literal("invalid-spec"), z.literal("already-installed"), z.literal("not-found"), z.literal("not-a-package"), z.literal("not-a-bundle"), z.literal("network"), z.literal("unknown")]).readonly(),
28
+ 'problem': z.union([z.literal("network"), z.literal("unknown"), z.literal("invalid-spec"), z.literal("already-installed"), z.literal("not-found"), z.literal("not-a-package"), z.literal("not-a-bundle")]).readonly(),
23
29
  'reason': z.string().readonly(),
30
+ 'registries': z.array(z.union([z.literal(null), z.string()])).readonly().optional(),
24
31
  })]))
25
32
  let _deepseek_ai_dsh_plugin_manager_pluginManager_installBundle_parameter_0$schema$value
26
33
  const _deepseek_ai_dsh_plugin_manager_pluginManager_installBundle_parameter_0$schema = () => (_deepseek_ai_dsh_plugin_manager_pluginManager_installBundle_parameter_0$schema$value ??= z.string())
@@ -29,11 +36,12 @@ const _deepseek_ai_dsh_plugin_manager_pluginManager_installBundle_parameter_1$sc
29
36
  'enabled': z.boolean().optional(),
30
37
  'requestId': z.intersection(z.string(), z.unknown()).optional(),
31
38
  'approvedBuilds': z.array(z.string()).optional(),
39
+ 'registry': z.union([z.literal(null), z.string()]).optional(),
32
40
  })]))
33
41
  let _deepseek_ai_dsh_plugin_manager_pluginManager_installBundle_result$schema$value
34
42
  const _deepseek_ai_dsh_plugin_manager_pluginManager_installBundle_result$schema = () => (_deepseek_ai_dsh_plugin_manager_pluginManager_installBundle_result$schema$value ??= z.object({
35
43
  'changed': z.boolean(),
36
- 'application': z.union([z.literal("failed"), z.literal("cancelled"), z.literal("applied"), z.literal("restart-required"), z.literal("overridden")]),
44
+ 'application': z.union([z.literal("cancelled"), z.literal("failed"), z.literal("applied"), z.literal("restart-required"), z.literal("overridden")]),
37
45
  'stage': z.union([z.literal("remove"), z.literal("install"), z.literal("enable")]),
38
46
  'target': z.string(),
39
47
  'enabled': z.boolean().optional(),
@@ -47,16 +55,28 @@ const _deepseek_ai_dsh_plugin_manager_pluginManager_installBundle_result$schema
47
55
  'output': z.string(),
48
56
  'truncated': z.boolean(),
49
57
  'logPath': z.string(),
50
- 'kind': z.union([z.literal("not-found"), z.literal("network"), z.literal("unknown"), z.literal("pnpm-missing"), z.literal("timeout"), z.literal("no-matching-version"), z.literal("disk-full"), z.literal("permission"), z.literal("build-blocked"), z.literal("integrity")]).optional(),
58
+ 'kind': z.union([z.literal("network"), z.literal("unknown"), z.literal("timeout"), z.literal("integrity"), z.literal("not-found"), z.literal("pnpm-missing"), z.literal("no-matching-version"), z.literal("disk-full"), z.literal("permission"), z.literal("build-blocked")]).optional(),
51
59
  }).optional(),
52
60
  'bundle': z.string().optional(),
53
61
  'pendingBuilds': z.array(z.string()).optional(),
54
62
  'approvedBuilds': z.array(z.string()).optional(),
63
+ 'registries': z.array(z.union([z.literal(null), z.string()])).optional(),
64
+ 'failedAt': z.union([z.literal("registry"), z.literal("spec-host")]).optional(),
55
65
  }))
56
66
  let _deepseek_ai_dsh_plugin_manager_pluginManager_listBundles_result$schema$value
57
67
  const _deepseek_ai_dsh_plugin_manager_pluginManager_listBundles_result$schema = () => (_deepseek_ai_dsh_plugin_manager_pluginManager_listBundles_result$schema$value ??= z.array(z.object({
58
68
  'name': z.string(),
59
69
  'version': z.string().optional(),
70
+ 'meta': z.object({
71
+ 'title': z.union([z.string(), z.intersection(z.object({
72
+ 'en': z.string().readonly(),
73
+ }), z.record(z.string(), z.string()).readonly())]).readonly().optional(),
74
+ 'description': z.union([z.string(), z.intersection(z.object({
75
+ 'en': z.string().readonly(),
76
+ }), z.record(z.string(), z.string()).readonly())]).readonly().optional(),
77
+ 'icon': z.string().readonly().optional(),
78
+ 'error': z.string().readonly().optional(),
79
+ }).optional(),
60
80
  'description': z.string().optional(),
61
81
  'enabled': z.boolean(),
62
82
  'installed': z.boolean(),
@@ -70,6 +90,16 @@ const _deepseek_ai_dsh_plugin_manager_pluginManager_listBundles_result$schema =
70
90
  'rows': z.array(z.object({
71
91
  'rowId': z.string(),
72
92
  'moduleName': z.string(),
93
+ 'meta': z.object({
94
+ 'title': z.union([z.string(), z.intersection(z.object({
95
+ 'en': z.string().readonly(),
96
+ }), z.record(z.string(), z.string()).readonly())]).readonly().optional(),
97
+ 'description': z.union([z.string(), z.intersection(z.object({
98
+ 'en': z.string().readonly(),
99
+ }), z.record(z.string(), z.string()).readonly())]).readonly().optional(),
100
+ 'icon': z.string().readonly().optional(),
101
+ 'error': z.string().readonly().optional(),
102
+ }).optional(),
73
103
  'entryId': z.intersection(z.string(), z.unknown()).optional(),
74
104
  })),
75
105
  'overrides': z.array(z.string()),
@@ -78,26 +108,52 @@ let _deepseek_ai_dsh_plugin_manager_pluginManager_listPlugins_result$schema$valu
78
108
  const _deepseek_ai_dsh_plugin_manager_pluginManager_listPlugins_result$schema = () => (_deepseek_ai_dsh_plugin_manager_pluginManager_listPlugins_result$schema$value ??= z.array(z.union([z.intersection(z.object({
79
109
  'entryId': z.intersection(z.string(), z.unknown()).readonly(),
80
110
  'moduleName': z.string().readonly(),
111
+ 'meta': z.object({
112
+ 'title': z.union([z.string(), z.intersection(z.object({
113
+ 'en': z.string().readonly(),
114
+ }), z.record(z.string(), z.string()).readonly())]).readonly().optional(),
115
+ 'description': z.union([z.string(), z.intersection(z.object({
116
+ 'en': z.string().readonly(),
117
+ }), z.record(z.string(), z.string()).readonly())]).readonly().optional(),
118
+ 'icon': z.string().readonly().optional(),
119
+ 'error': z.string().readonly().optional(),
120
+ }).readonly().optional(),
81
121
  'enabled': z.boolean().readonly(),
82
- 'fiberPhase': z.union([z.literal(null), z.literal("pending"), z.literal("active"), z.literal("failed"), z.literal("loading"), z.literal("unloading")]).readonly(),
122
+ 'fiberPhase': z.union([z.literal(null), z.literal("failed"), z.literal("pending"), z.literal("active"), z.literal("loading"), z.literal("unloading")]).readonly(),
83
123
  }), z.object({
84
124
  'patchId': z.string(),
85
125
  'readOnlyReason': z.never().optional(),
86
126
  })), z.intersection(z.object({
87
127
  'entryId': z.intersection(z.string(), z.unknown()).readonly(),
88
128
  'moduleName': z.string().readonly(),
129
+ 'meta': z.object({
130
+ 'title': z.union([z.string(), z.intersection(z.object({
131
+ 'en': z.string().readonly(),
132
+ }), z.record(z.string(), z.string()).readonly())]).readonly().optional(),
133
+ 'description': z.union([z.string(), z.intersection(z.object({
134
+ 'en': z.string().readonly(),
135
+ }), z.record(z.string(), z.string()).readonly())]).readonly().optional(),
136
+ 'icon': z.string().readonly().optional(),
137
+ 'error': z.string().readonly().optional(),
138
+ }).readonly().optional(),
89
139
  'enabled': z.boolean().readonly(),
90
- 'fiberPhase': z.union([z.literal(null), z.literal("pending"), z.literal("active"), z.literal("failed"), z.literal("loading"), z.literal("unloading")]).readonly(),
140
+ 'fiberPhase': z.union([z.literal(null), z.literal("failed"), z.literal("pending"), z.literal("active"), z.literal("loading"), z.literal("unloading")]).readonly(),
91
141
  }), z.object({
92
142
  'patchId': z.never().optional(),
93
143
  'readOnlyReason': z.union([z.literal("management-required"), z.literal("unaddressable")]),
94
144
  }))])))
145
+ let _deepseek_ai_dsh_plugin_manager_pluginManager_registries_result$schema$value
146
+ const _deepseek_ai_dsh_plugin_manager_pluginManager_registries_result$schema = () => (_deepseek_ai_dsh_plugin_manager_pluginManager_registries_result$schema$value ??= z.object({
147
+ 'registry': z.union([z.literal(null), z.string()]).readonly(),
148
+ 'fallbackRegistries': z.array(z.string()).readonly(),
149
+ 'resolved': z.union([z.literal(null), z.string()]).readonly(),
150
+ }))
95
151
  let _deepseek_ai_dsh_plugin_manager_pluginManager_removeBundle_parameter_0$schema$value
96
152
  const _deepseek_ai_dsh_plugin_manager_pluginManager_removeBundle_parameter_0$schema = () => (_deepseek_ai_dsh_plugin_manager_pluginManager_removeBundle_parameter_0$schema$value ??= z.string())
97
153
  let _deepseek_ai_dsh_plugin_manager_pluginManager_removeBundle_result$schema$value
98
154
  const _deepseek_ai_dsh_plugin_manager_pluginManager_removeBundle_result$schema = () => (_deepseek_ai_dsh_plugin_manager_pluginManager_removeBundle_result$schema$value ??= z.object({
99
155
  'changed': z.boolean(),
100
- 'application': z.union([z.literal("failed"), z.literal("cancelled"), z.literal("applied"), z.literal("restart-required"), z.literal("overridden")]),
156
+ 'application': z.union([z.literal("cancelled"), z.literal("failed"), z.literal("applied"), z.literal("restart-required"), z.literal("overridden")]),
101
157
  'stage': z.union([z.literal("remove"), z.literal("install"), z.literal("enable")]),
102
158
  'target': z.string(),
103
159
  'enabled': z.boolean().optional(),
@@ -111,11 +167,13 @@ const _deepseek_ai_dsh_plugin_manager_pluginManager_removeBundle_result$schema =
111
167
  'output': z.string(),
112
168
  'truncated': z.boolean(),
113
169
  'logPath': z.string(),
114
- 'kind': z.union([z.literal("not-found"), z.literal("network"), z.literal("unknown"), z.literal("pnpm-missing"), z.literal("timeout"), z.literal("no-matching-version"), z.literal("disk-full"), z.literal("permission"), z.literal("build-blocked"), z.literal("integrity")]).optional(),
170
+ 'kind': z.union([z.literal("network"), z.literal("unknown"), z.literal("timeout"), z.literal("integrity"), z.literal("not-found"), z.literal("pnpm-missing"), z.literal("no-matching-version"), z.literal("disk-full"), z.literal("permission"), z.literal("build-blocked")]).optional(),
115
171
  }).optional(),
116
172
  'bundle': z.string().optional(),
117
173
  'pendingBuilds': z.array(z.string()).optional(),
118
174
  'approvedBuilds': z.array(z.string()).optional(),
175
+ 'registries': z.array(z.union([z.literal(null), z.string()])).optional(),
176
+ 'failedAt': z.union([z.literal("registry"), z.literal("spec-host")]).optional(),
119
177
  }))
120
178
  let _deepseek_ai_dsh_plugin_manager_pluginManager_setBundleEnabled_parameter_0$schema$value
121
179
  const _deepseek_ai_dsh_plugin_manager_pluginManager_setBundleEnabled_parameter_0$schema = () => (_deepseek_ai_dsh_plugin_manager_pluginManager_setBundleEnabled_parameter_0$schema$value ??= z.string())
@@ -124,7 +182,7 @@ const _deepseek_ai_dsh_plugin_manager_pluginManager_setBundleEnabled_parameter_1
124
182
  let _deepseek_ai_dsh_plugin_manager_pluginManager_setBundleEnabled_result$schema$value
125
183
  const _deepseek_ai_dsh_plugin_manager_pluginManager_setBundleEnabled_result$schema = () => (_deepseek_ai_dsh_plugin_manager_pluginManager_setBundleEnabled_result$schema$value ??= z.object({
126
184
  'changed': z.boolean(),
127
- 'application': z.union([z.literal("failed"), z.literal("cancelled"), z.literal("applied"), z.literal("restart-required"), z.literal("overridden")]),
185
+ 'application': z.union([z.literal("cancelled"), z.literal("failed"), z.literal("applied"), z.literal("restart-required"), z.literal("overridden")]),
128
186
  'stage': z.union([z.literal("remove"), z.literal("install"), z.literal("enable")]),
129
187
  'target': z.string(),
130
188
  'enabled': z.boolean().optional(),
@@ -138,11 +196,13 @@ const _deepseek_ai_dsh_plugin_manager_pluginManager_setBundleEnabled_result$sche
138
196
  'output': z.string(),
139
197
  'truncated': z.boolean(),
140
198
  'logPath': z.string(),
141
- 'kind': z.union([z.literal("not-found"), z.literal("network"), z.literal("unknown"), z.literal("pnpm-missing"), z.literal("timeout"), z.literal("no-matching-version"), z.literal("disk-full"), z.literal("permission"), z.literal("build-blocked"), z.literal("integrity")]).optional(),
199
+ 'kind': z.union([z.literal("network"), z.literal("unknown"), z.literal("timeout"), z.literal("integrity"), z.literal("not-found"), z.literal("pnpm-missing"), z.literal("no-matching-version"), z.literal("disk-full"), z.literal("permission"), z.literal("build-blocked")]).optional(),
142
200
  }).optional(),
143
201
  'bundle': z.string().optional(),
144
202
  'pendingBuilds': z.array(z.string()).optional(),
145
203
  'approvedBuilds': z.array(z.string()).optional(),
204
+ 'registries': z.array(z.union([z.literal(null), z.string()])).optional(),
205
+ 'failedAt': z.union([z.literal("registry"), z.literal("spec-host")]).optional(),
146
206
  }))
147
207
  let _deepseek_ai_dsh_plugin_manager_pluginManager_setPluginEnabled_parameter_0$schema$value
148
208
  const _deepseek_ai_dsh_plugin_manager_pluginManager_setPluginEnabled_parameter_0$schema = () => (_deepseek_ai_dsh_plugin_manager_pluginManager_setPluginEnabled_parameter_0$schema$value ??= z.intersection(z.string(), z.unknown()))
@@ -151,7 +211,7 @@ const _deepseek_ai_dsh_plugin_manager_pluginManager_setPluginEnabled_parameter_1
151
211
  let _deepseek_ai_dsh_plugin_manager_pluginManager_setPluginEnabled_result$schema$value
152
212
  const _deepseek_ai_dsh_plugin_manager_pluginManager_setPluginEnabled_result$schema = () => (_deepseek_ai_dsh_plugin_manager_pluginManager_setPluginEnabled_result$schema$value ??= z.object({
153
213
  'changed': z.boolean(),
154
- 'application': z.union([z.literal("failed"), z.literal("cancelled"), z.literal("applied"), z.literal("restart-required"), z.literal("overridden")]),
214
+ 'application': z.union([z.literal("cancelled"), z.literal("failed"), z.literal("applied"), z.literal("restart-required"), z.literal("overridden")]),
155
215
  'stage': z.union([z.literal("remove"), z.literal("install"), z.literal("enable")]),
156
216
  'target': z.string(),
157
217
  'enabled': z.boolean().optional(),
@@ -165,12 +225,41 @@ const _deepseek_ai_dsh_plugin_manager_pluginManager_setPluginEnabled_result$sche
165
225
  'output': z.string(),
166
226
  'truncated': z.boolean(),
167
227
  'logPath': z.string(),
168
- 'kind': z.union([z.literal("not-found"), z.literal("network"), z.literal("unknown"), z.literal("pnpm-missing"), z.literal("timeout"), z.literal("no-matching-version"), z.literal("disk-full"), z.literal("permission"), z.literal("build-blocked"), z.literal("integrity")]).optional(),
228
+ 'kind': z.union([z.literal("network"), z.literal("unknown"), z.literal("timeout"), z.literal("integrity"), z.literal("not-found"), z.literal("pnpm-missing"), z.literal("no-matching-version"), z.literal("disk-full"), z.literal("permission"), z.literal("build-blocked")]).optional(),
169
229
  }).optional(),
170
230
  'bundle': z.string().optional(),
171
231
  'pendingBuilds': z.array(z.string()).optional(),
172
232
  'approvedBuilds': z.array(z.string()).optional(),
233
+ 'registries': z.array(z.union([z.literal(null), z.string()])).optional(),
234
+ 'failedAt': z.union([z.literal("registry"), z.literal("spec-host")]).optional(),
173
235
  }))
236
+ let _deepseek_ai_dsh_plugin_manager_pluginManager_waitForInstall_parameter_0$schema$value
237
+ const _deepseek_ai_dsh_plugin_manager_pluginManager_waitForInstall_parameter_0$schema = () => (_deepseek_ai_dsh_plugin_manager_pluginManager_waitForInstall_parameter_0$schema$value ??= z.intersection(z.string(), z.unknown()))
238
+ let _deepseek_ai_dsh_plugin_manager_pluginManager_waitForInstall_result$schema$value
239
+ const _deepseek_ai_dsh_plugin_manager_pluginManager_waitForInstall_result$schema = () => (_deepseek_ai_dsh_plugin_manager_pluginManager_waitForInstall_result$schema$value ??= z.union([z.literal(null), z.object({
240
+ 'changed': z.boolean(),
241
+ 'application': z.union([z.literal("cancelled"), z.literal("failed"), z.literal("applied"), z.literal("restart-required"), z.literal("overridden")]),
242
+ 'stage': z.union([z.literal("remove"), z.literal("install"), z.literal("enable")]),
243
+ 'target': z.string(),
244
+ 'enabled': z.boolean().optional(),
245
+ 'error': z.object({
246
+ 'code': z.union([z.literal("management-required"), z.literal("unaddressable"), z.literal("unknown-plugin"), z.literal("invalid-spec"), z.literal("ambiguous-install"), z.literal("not-bundle"), z.literal("not-removable"), z.literal("stop-profile"), z.literal("bundle-in-use"), z.literal("stale-approval"), z.literal("operation-error")]),
247
+ 'diagnostic': z.string().optional(),
248
+ }).optional(),
249
+ 'warnings': z.array(z.string()).optional(),
250
+ 'packageResult': z.object({
251
+ 'exitCode': z.number(),
252
+ 'output': z.string(),
253
+ 'truncated': z.boolean(),
254
+ 'logPath': z.string(),
255
+ 'kind': z.union([z.literal("network"), z.literal("unknown"), z.literal("timeout"), z.literal("integrity"), z.literal("not-found"), z.literal("pnpm-missing"), z.literal("no-matching-version"), z.literal("disk-full"), z.literal("permission"), z.literal("build-blocked")]).optional(),
256
+ }).optional(),
257
+ 'bundle': z.string().optional(),
258
+ 'pendingBuilds': z.array(z.string()).optional(),
259
+ 'approvedBuilds': z.array(z.string()).optional(),
260
+ 'registries': z.array(z.union([z.literal(null), z.string()])).optional(),
261
+ 'failedAt': z.union([z.literal("registry"), z.literal("spec-host")]).optional(),
262
+ })]))
174
263
 
175
264
  export const TYPERT = {
176
265
  package: '@deepseek-ai/dsh-plugin-manager',
@@ -201,7 +290,7 @@ export const TYPERT = {
201
290
  typeSymbol: '@deepseek-ai/dsh-plugin-manager/types#PluginInstallCancellation',
202
291
  create: _deepseek_ai_dsh_plugin_manager_pluginManager_cancelInstall_result$schema,
203
292
  },
204
- sourceLocation: {"file":"packages/boot/plugin-manager/src/index.ts","line":406,"column":9},
293
+ sourceLocation: {"file":"packages/boot/plugin-manager/src/index.ts","line":516,"column":9},
205
294
  },
206
295
  {
207
296
  id: '@deepseek-ai/dsh-plugin-manager#pluginManager/inspect',
@@ -220,6 +309,17 @@ export const TYPERT = {
220
309
  create: _deepseek_ai_dsh_plugin_manager_pluginManager_inspect_parameter_0$schema,
221
310
  },
222
311
  },
312
+ {
313
+ name: 'options',
314
+ wire: 'options',
315
+ source: 'json',
316
+ acceptsUndefined: true,
317
+ codec: {
318
+ mode: 'strict',
319
+ typeSymbol: '@deepseek-ai/dsh-plugin-manager/types#InspectOptions',
320
+ create: _deepseek_ai_dsh_plugin_manager_pluginManager_inspect_parameter_1$schema,
321
+ },
322
+ },
223
323
  ],
224
324
  cancellation: { parameter: 'signal' },
225
325
  result: {
@@ -227,7 +327,7 @@ export const TYPERT = {
227
327
  typeSymbol: '@deepseek-ai/dsh-plugin-manager/types#PluginSpecInspection',
228
328
  create: _deepseek_ai_dsh_plugin_manager_pluginManager_inspect_result$schema,
229
329
  },
230
- sourceLocation: {"file":"packages/boot/plugin-manager/src/index.ts","line":233,"column":9},
330
+ sourceLocation: {"file":"packages/boot/plugin-manager/src/index.ts","line":299,"column":9},
231
331
  },
232
332
  {
233
333
  id: '@deepseek-ai/dsh-plugin-manager#pluginManager/installBundle',
@@ -263,7 +363,7 @@ export const TYPERT = {
263
363
  typeSymbol: '@deepseek-ai/dsh-plugin-manager/types#ChangeResult',
264
364
  create: _deepseek_ai_dsh_plugin_manager_pluginManager_installBundle_result$schema,
265
365
  },
266
- sourceLocation: {"file":"packages/boot/plugin-manager/src/index.ts","line":338,"column":3},
366
+ sourceLocation: {"file":"packages/boot/plugin-manager/src/index.ts","line":418,"column":3},
267
367
  },
268
368
  {
269
369
  id: '@deepseek-ai/dsh-plugin-manager#pluginManager/listBundles',
@@ -278,7 +378,7 @@ export const TYPERT = {
278
378
  typeSymbol: '@deepseek-ai/dsh-plugin-manager#pluginManager/listBundles:result',
279
379
  create: _deepseek_ai_dsh_plugin_manager_pluginManager_listBundles_result$schema,
280
380
  },
281
- sourceLocation: {"file":"packages/boot/plugin-manager/src/index.ts","line":194,"column":3},
381
+ sourceLocation: {"file":"packages/boot/plugin-manager/src/index.ts","line":241,"column":3},
282
382
  },
283
383
  {
284
384
  id: '@deepseek-ai/dsh-plugin-manager#pluginManager/listPlugins',
@@ -293,7 +393,22 @@ export const TYPERT = {
293
393
  typeSymbol: '@deepseek-ai/dsh-plugin-manager#pluginManager/listPlugins:result',
294
394
  create: _deepseek_ai_dsh_plugin_manager_pluginManager_listPlugins_result$schema,
295
395
  },
296
- sourceLocation: {"file":"packages/boot/plugin-manager/src/index.ts","line":170,"column":9},
396
+ sourceLocation: {"file":"packages/boot/plugin-manager/src/index.ts","line":217,"column":9},
397
+ },
398
+ {
399
+ id: '@deepseek-ai/dsh-plugin-manager#pluginManager/registries',
400
+ service: 'pluginManager',
401
+ namespace: 'pluginManager',
402
+ method: 'registries',
403
+ invocation: { kind: 'direct' },
404
+ parameters: [
405
+ ],
406
+ result: {
407
+ mode: 'strict',
408
+ typeSymbol: '@deepseek-ai/dsh-plugin-manager/types#PluginRegistries',
409
+ create: _deepseek_ai_dsh_plugin_manager_pluginManager_registries_result$schema,
410
+ },
411
+ sourceLocation: {"file":"packages/boot/plugin-manager/src/index.ts","line":283,"column":9},
297
412
  },
298
413
  {
299
414
  id: '@deepseek-ai/dsh-plugin-manager#pluginManager/removeBundle',
@@ -318,7 +433,7 @@ export const TYPERT = {
318
433
  typeSymbol: '@deepseek-ai/dsh-plugin-manager/types#ChangeResult',
319
434
  create: _deepseek_ai_dsh_plugin_manager_pluginManager_removeBundle_result$schema,
320
435
  },
321
- sourceLocation: {"file":"packages/boot/plugin-manager/src/index.ts","line":421,"column":3},
436
+ sourceLocation: {"file":"packages/boot/plugin-manager/src/index.ts","line":532,"column":3},
322
437
  },
323
438
  {
324
439
  id: '@deepseek-ai/dsh-plugin-manager#pluginManager/setBundleEnabled',
@@ -353,7 +468,7 @@ export const TYPERT = {
353
468
  typeSymbol: '@deepseek-ai/dsh-plugin-manager/types#ChangeResult',
354
469
  create: _deepseek_ai_dsh_plugin_manager_pluginManager_setBundleEnabled_result$schema,
355
470
  },
356
- sourceLocation: {"file":"packages/boot/plugin-manager/src/index.ts","line":321,"column":3},
471
+ sourceLocation: {"file":"packages/boot/plugin-manager/src/index.ts","line":401,"column":3},
357
472
  },
358
473
  {
359
474
  id: '@deepseek-ai/dsh-plugin-manager#pluginManager/setPluginEnabled',
@@ -388,7 +503,32 @@ export const TYPERT = {
388
503
  typeSymbol: '@deepseek-ai/dsh-plugin-manager/types#ChangeResult',
389
504
  create: _deepseek_ai_dsh_plugin_manager_pluginManager_setPluginEnabled_result$schema,
390
505
  },
391
- sourceLocation: {"file":"packages/boot/plugin-manager/src/index.ts","line":303,"column":3},
506
+ sourceLocation: {"file":"packages/boot/plugin-manager/src/index.ts","line":383,"column":3},
507
+ },
508
+ {
509
+ id: '@deepseek-ai/dsh-plugin-manager#pluginManager/waitForInstall',
510
+ service: 'pluginManager',
511
+ namespace: 'pluginManager',
512
+ method: 'waitForInstall',
513
+ invocation: { kind: 'direct' },
514
+ parameters: [
515
+ {
516
+ name: 'requestId',
517
+ wire: 'requestId',
518
+ source: 'json',
519
+ codec: {
520
+ mode: 'strict',
521
+ typeSymbol: '@deepseek-ai/dsh-plugin-manager/types#PluginInstallRequestId',
522
+ create: _deepseek_ai_dsh_plugin_manager_pluginManager_waitForInstall_parameter_0$schema,
523
+ },
524
+ },
525
+ ],
526
+ result: {
527
+ mode: 'strict',
528
+ typeSymbol: '@deepseek-ai/dsh-plugin-manager#pluginManager/waitForInstall:result',
529
+ create: _deepseek_ai_dsh_plugin_manager_pluginManager_waitForInstall_result$schema,
530
+ },
531
+ sourceLocation: {"file":"packages/boot/plugin-manager/src/index.ts","line":506,"column":9},
392
532
  },
393
533
  ],
394
534
  model: {
@@ -413,14 +553,21 @@ export const TYPERT = {
413
553
  "name": "listBundles",
414
554
  "signature": "@Remote listBundles(): Promise<BundleInfo[]>",
415
555
  "summary": "Read the profile's installed bundles, the bundles this dsh installation supplies, and the selected names that are not bundles.",
416
- "jsDoc": "/** Read the profile's installed bundles, the bundles this dsh installation supplies, and the selected names that are not bundles.\n * A dependency without a bundle patch is listed, as a `not-bundle` problem, only while it is selected.\n * @returns Package versions, one-liners, rows, activation selections, whether the installation offers the\n * bundle, and removal availability.\n */"
556
+ "jsDoc": "/** Read the profile's installed bundles, the bundles this dsh installation supplies, and the selected names that are not bundles.\n * A dependency without a bundle patch is listed, as a `not-bundle` problem, only while it is selected.\n * @returns Package versions, manifest descriptions, rows, optional display metadata, activation selections,\n * whether the installation offers the bundle, and removal availability.\n */"
557
+ },
558
+ {
559
+ "kind": "method",
560
+ "name": "registries",
561
+ "signature": "@Remote async registries(): Promise<PluginRegistries>",
562
+ "summary": "Read the registries this manager asks: the configured first one, its fallbacks in order, and what pnpm's own configuration names.",
563
+ "jsDoc": "/** Read the registries this manager asks: the configured first one, its fallbacks in order, and what pnpm's own configuration names.\n * @returns The registries in pnpm's comparison form; null is the one pnpm's own configuration names, `resolved` as pnpm reads it now.\n */"
417
564
  },
418
565
  {
419
566
  "kind": "method",
420
567
  "name": "inspect",
421
- "signature": "@Remote async inspect(spec: string, signal?: AbortSignal): Promise<PluginSpecInspection>",
568
+ "signature": "@Remote async inspect(spec: string, options?: InspectOptions, signal?: AbortSignal): Promise<PluginSpecInspection>",
422
569
  "summary": "Read what a spec names before installing it.",
423
- "jsDoc": "/** Read what a spec names before installing it.\n * @param spec One package spec: a registry name, an absolute path, a git address, or a tarball.\n * @param signal Ends a registry lookup early.\n * @returns The package the spec names, or why it is refused.\n */"
570
+ "jsDoc": "/** Read what a spec names before installing it.\n * @param spec One package spec: a registry name, an absolute path, a git address, or a tarball.\n * @param options The registry asked first.\n * @param signal Ends a registry lookup early.\n * @returns The package the spec names, or why it is refused.\n */"
424
571
  },
425
572
  {
426
573
  "kind": "method",
@@ -441,7 +588,14 @@ export const TYPERT = {
441
588
  "name": "installBundle",
442
589
  "signature": "@Remote installBundle(spec: string, options?: InstallBundleOptions): Promise<ChangeResult>",
443
590
  "summary": "Install a package using the same pnpm implementation as dsh plugin.",
444
- "jsDoc": "/**\n * Install a package using the same pnpm implementation as dsh plugin. A run\n * that fails, is cancelled, or adds a package without a bundle patch restores\n * `package.json` and `pnpm-lock.yaml` as they were; downloaded files can stay.\n * @param spec One package spec, including local paths relative to the invocation directory.\n * @param options Whether to activate the installed bundle (defaults to true), the request id a cancellation names, and\n * the pending build scripts to allow for this profile before pnpm runs.\n * @returns Package-manager diagnostics and observed activation outcome.\n */"
591
+ "jsDoc": "/**\n * Install a package using the same pnpm implementation as dsh plugin. A run\n * that fails, is cancelled, or adds a package without a bundle patch restores\n * `package.json` and `pnpm-lock.yaml` as they were; downloaded files can stay.\n * @param spec One package spec, including local paths relative to the invocation directory.\n * @param options Whether to activate the installed bundle (defaults to true), the request id a cancellation names,\n * the pending build scripts to allow for this profile before pnpm runs, and the registry asked first.\n * @returns Package-manager diagnostics, the registries asked, and the observed activation outcome.\n */"
592
+ },
593
+ {
594
+ "kind": "method",
595
+ "name": "waitForInstall",
596
+ "signature": "@Remote async waitForInstall(requestId: PluginInstallRequestId): Promise<ChangeResult | null>",
597
+ "summary": "Recover the result of an active installation without cancelling it.",
598
+ "jsDoc": "/** Recover the result of an active installation without cancelling it.\n * @param requestId The id supplied when installation started.\n * @returns The installation's outcome after it settles, or null if no active request has that id.\n * Completed results are not retained; null establishes neither success nor cancellation.\n */"
445
599
  },
446
600
  {
447
601
  "kind": "method",
@@ -465,24 +619,32 @@ export const TYPERT = {
465
619
  },
466
620
  {
467
621
  "name": "BundleInfo",
468
- "declaration": "export interface BundleInfo {\n name: string;\n version?: string;\n description?: string;\n enabled: boolean;\n installed: boolean;\n optional: boolean;\n removable: boolean;\n readOnlyReason?: ReadOnlyReason;\n error?: ManagementError;\n rows: BundleRowInfo[];\n overrides: string[];\n}"
622
+ "declaration": "export interface BundleInfo {\n name: string;\n version?: string;\n meta?: PluginLocalizedMeta;\n description?: string;\n enabled: boolean;\n installed: boolean;\n optional: boolean;\n removable: boolean;\n readOnlyReason?: ReadOnlyReason;\n error?: ManagementError;\n rows: BundleRowInfo[];\n overrides: string[];\n}"
469
623
  },
470
624
  {
471
625
  "name": "BundleRowInfo",
472
- "declaration": "export interface BundleRowInfo {\n rowId: string;\n moduleName: string;\n entryId?: PluginEntryId;\n}"
626
+ "declaration": "export interface BundleRowInfo {\n rowId: string;\n moduleName: string;\n meta?: PluginLocalizedMeta;\n entryId?: PluginEntryId;\n}"
473
627
  },
474
628
  {
475
629
  "name": "ChangeResult",
476
- "declaration": "export interface ChangeResult {\n changed: boolean;\n application: 'applied' | 'restart-required' | 'overridden' | 'failed' | 'cancelled';\n stage: 'install' | 'enable' | 'remove';\n target: string;\n enabled?: boolean;\n error?: ManagementError;\n warnings?: string[];\n packageResult?: PackageResult;\n bundle?: string;\n pendingBuilds?: string[];\n approvedBuilds?: string[];\n}"
630
+ "declaration": "export interface ChangeResult {\n changed: boolean;\n application: 'applied' | 'restart-required' | 'overridden' | 'failed' | 'cancelled';\n stage: 'install' | 'enable' | 'remove';\n target: string;\n enabled?: boolean;\n error?: ManagementError;\n warnings?: string[];\n packageResult?: PackageResult;\n bundle?: string;\n pendingBuilds?: string[];\n approvedBuilds?: string[];\n registries?: Registry[];\n failedAt?: 'registry' | 'spec-host';\n}"
631
+ },
632
+ {
633
+ "name": "InspectOptions",
634
+ "declaration": "export interface InspectOptions {\n readonly registry?: Registry;\n}"
477
635
  },
478
636
  {
479
637
  "name": "InstallBundleOptions",
480
- "declaration": "export interface InstallBundleOptions {\n enabled?: boolean;\n requestId?: PluginInstallRequestId;\n approvedBuilds?: string[];\n}"
638
+ "declaration": "export interface InstallBundleOptions {\n enabled?: boolean;\n requestId?: PluginInstallRequestId;\n approvedBuilds?: string[];\n registry?: Registry;\n}"
481
639
  },
482
640
  {
483
641
  "name": "InstallSpecKind",
484
642
  "declaration": "export type InstallSpecKind = 'registry' | 'path' | 'git' | 'tarball';"
485
643
  },
644
+ {
645
+ "name": "LocalizedText",
646
+ "declaration": "export type LocalizedText = string | { readonly en: string; readonly [locale: string]: string; };"
647
+ },
486
648
  {
487
649
  "name": "ManagementError",
488
650
  "declaration": "export interface ManagementError {\n code: ReadOnlyReason | 'unknown-plugin' | 'invalid-spec' | 'ambiguous-install' | 'not-bundle' | 'not-removable' | 'stop-profile' | 'bundle-in-use' | 'stale-approval' | 'operation-error';\n diagnostic?: string;\n}"
@@ -521,15 +683,27 @@ export const TYPERT = {
521
683
  },
522
684
  {
523
685
  "name": "PluginInventoryEntry",
524
- "declaration": "export interface PluginInventoryEntry {\n readonly entryId: PluginEntryId;\n readonly moduleName: string;\n readonly enabled: boolean;\n readonly fiberPhase: PluginFiberPhase;\n}"
686
+ "declaration": "export interface PluginInventoryEntry {\n readonly entryId: PluginEntryId;\n readonly moduleName: string;\n readonly meta?: PluginLocalizedMeta;\n readonly enabled: boolean;\n readonly fiberPhase: PluginFiberPhase;\n}"
687
+ },
688
+ {
689
+ "name": "PluginLocalizedMeta",
690
+ "declaration": "export interface PluginLocalizedMeta {\n readonly title?: LocalizedText;\n readonly description?: LocalizedText;\n readonly icon?: string;\n readonly error?: string;\n}"
691
+ },
692
+ {
693
+ "name": "PluginRegistries",
694
+ "declaration": "export interface PluginRegistries {\n readonly registry: Registry;\n readonly fallbackRegistries: readonly string[];\n readonly resolved: string | null;\n}"
525
695
  },
526
696
  {
527
697
  "name": "PluginSpecInspection",
528
- "declaration": "export type PluginSpecInspection = { readonly status: 'accepted'; readonly kind: InstallSpecKind; readonly name?: string; readonly version?: string; readonly description?: string; readonly bundle: boolean | null; } | { readonly status: 'refused'; readonly problem: PluginInspectProblem; readonly reason: string; };"
698
+ "declaration": "export type PluginSpecInspection = { readonly status: 'accepted'; readonly kind: InstallSpecKind; readonly name?: string; readonly version?: string; readonly description?: string; readonly bundle: boolean | null; readonly registry: Registry; readonly host?: string; } | { readonly status: 'refused'; readonly problem: PluginInspectProblem; readonly reason: string; readonly registries?: Registry[]; };"
529
699
  },
530
700
  {
531
701
  "name": "ReadOnlyReason",
532
702
  "declaration": "export type ReadOnlyReason = 'management-required' | 'unaddressable';"
703
+ },
704
+ {
705
+ "name": "Registry",
706
+ "declaration": "export type Registry = string | null;"
533
707
  }
534
708
  ]
535
709
  }
@@ -578,7 +752,7 @@ export const TYPERT = {
578
752
  "signature": "'plugin-manager/install-log'(chunk: PluginInstallLogChunk): void"
579
753
  },
580
754
  {
581
- "description": "An installation moved between its Host phases.",
755
+ "description": "An installation moved between its Host phases. `installing` is announced once per registry the installation asks, with the attempt's registry and position; `cancelling` and `applying` once.",
582
756
  "summary": "An installation moved between its Host phases.",
583
757
  "tags": [
584
758
  {
@@ -589,11 +763,11 @@ export const TYPERT = {
589
763
  {
590
764
  "name": "param",
591
765
  "argument": "progress",
592
- "comment": "- the installation's request id and phase.",
593
- "text": "@param progress - the installation's request id and phase."
766
+ "comment": "- the installation's request id and phase, with the attempt while installing.",
767
+ "text": "@param progress - the installation's request id and phase, with the attempt while installing."
594
768
  }
595
769
  ],
596
- "jsDoc": "/**\n * An installation moved between its Host phases.\n * @mode emit\n * @param progress - the installation's request id and phase.\n */",
770
+ "jsDoc": "/**\n * An installation moved between its Host phases. `installing` is announced once per registry the\n * installation asks, with the attempt's registry and position; `cancelling` and `applying` once.\n * @mode emit\n * @param progress - the installation's request id and phase, with the attempt while installing.\n */",
597
771
  "name": "plugin-manager/install-state",
598
772
  "mode": "emit",
599
773
  "signature": "'plugin-manager/install-state'(progress: PluginInstallProgress): void"
@@ -4,28 +4,32 @@ import type {
4
4
  TypertRemoteContribution,
5
5
  } from '@deepseek-ai/dsh-typert-protocol'
6
6
  import type { PluginEntryId } from '@deepseek-ai/dsh-host-plugin-inventory/types'
7
- import type { BundleInfo, ChangeResult, InstallBundleOptions, PluginInfo, PluginInstallCancellation, PluginInstallRequestId, PluginSpecInspection } from '@deepseek-ai/dsh-plugin-manager/types'
7
+ import type { BundleInfo, ChangeResult, InspectOptions, InstallBundleOptions, PluginInfo, PluginInstallCancellation, PluginInstallRequestId, PluginRegistries, PluginSpecInspection } from '@deepseek-ai/dsh-plugin-manager/types'
8
8
 
9
9
  declare module '@deepseek-ai/dsh-typert-protocol' {
10
10
  interface TypertRemoteNamespace$706c7567696e4d616e61676572 {
11
11
  cancelInstall: (requestId: PluginInstallRequestId) => Promise<RemoteResult<PluginInstallCancellation>>
12
- inspect: (spec: string, signal?: AbortSignal) => Promise<RemoteResult<PluginSpecInspection>>
12
+ inspect: (spec: string, options?: InspectOptions, signal?: AbortSignal) => Promise<RemoteResult<PluginSpecInspection>>
13
13
  installBundle: (spec: string, options?: InstallBundleOptions) => Promise<RemoteResult<ChangeResult>>
14
14
  listBundles: () => Promise<RemoteResult<BundleInfo[]>>
15
15
  listPlugins: () => Promise<RemoteResult<PluginInfo[]>>
16
+ registries: () => Promise<RemoteResult<PluginRegistries>>
16
17
  removeBundle: (name: string) => Promise<RemoteResult<ChangeResult>>
17
18
  setBundleEnabled: (name: string, enabled: boolean) => Promise<RemoteResult<ChangeResult>>
18
19
  setPluginEnabled: (id: PluginEntryId, enabled: boolean) => Promise<RemoteResult<ChangeResult>>
20
+ waitForInstall: (requestId: PluginInstallRequestId) => Promise<RemoteResult<ChangeResult | null>>
19
21
  }
20
22
  interface TypertRemoteMap {
21
23
  'pluginManager/cancelInstall': (requestId: PluginInstallRequestId) => Promise<RemoteResult<PluginInstallCancellation>>
22
- 'pluginManager/inspect': (spec: string, signal?: AbortSignal) => Promise<RemoteResult<PluginSpecInspection>>
24
+ 'pluginManager/inspect': (spec: string, options?: InspectOptions, signal?: AbortSignal) => Promise<RemoteResult<PluginSpecInspection>>
23
25
  'pluginManager/installBundle': (spec: string, options?: InstallBundleOptions) => Promise<RemoteResult<ChangeResult>>
24
26
  'pluginManager/listBundles': () => Promise<RemoteResult<BundleInfo[]>>
25
27
  'pluginManager/listPlugins': () => Promise<RemoteResult<PluginInfo[]>>
28
+ 'pluginManager/registries': () => Promise<RemoteResult<PluginRegistries>>
26
29
  'pluginManager/removeBundle': (name: string) => Promise<RemoteResult<ChangeResult>>
27
30
  'pluginManager/setBundleEnabled': (name: string, enabled: boolean) => Promise<RemoteResult<ChangeResult>>
28
31
  'pluginManager/setPluginEnabled': (id: PluginEntryId, enabled: boolean) => Promise<RemoteResult<ChangeResult>>
32
+ 'pluginManager/waitForInstall': (requestId: PluginInstallRequestId) => Promise<RemoteResult<ChangeResult | null>>
29
33
  }
30
34
  interface TypertRemoteNamespaceMap {
31
35
  'pluginManager': TypertRemoteNamespace$706c7567696e4d616e61676572