@deepseek-ai/dsh-plugin-manager 0.1.7-alpha.2 → 0.1.7-rc.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.
- package/README.i18n.yaml +54 -5
- package/README.md +17 -2
- package/README.zh.md +17 -2
- package/lib/index.js +757 -154
- package/lib/typert.host.js +237 -26
- package/lib/typert.remote-client.d.ts +4 -0
- package/lib/typert.remote-client.js +215 -22
- package/lib/types/failure.d.ts +15 -3
- package/lib/types/failure.js +19 -2
- package/lib/types/github-connection.d.ts +21 -0
- package/lib/types/github-connection.js +61 -0
- package/lib/types/index.d.ts +28 -4
- package/lib/types/index.js +111 -21
- package/lib/types/install-failure.js +1 -0
- package/lib/types/operations.d.ts +15 -1
- package/lib/types/operations.js +403 -22
- package/lib/types/run-tree.d.ts +44 -0
- package/lib/types/run-tree.js +57 -0
- package/lib/types/tools.js +13 -3
- package/lib/types/types.d.ts +17 -3
- package/package.json +28 -28
|
@@ -25,7 +25,7 @@ const _deepseek_ai_dsh_plugin_manager_pluginManager_inspect_result$schema = () =
|
|
|
25
25
|
'host': z.string().readonly().optional(),
|
|
26
26
|
}), z.object({
|
|
27
27
|
'status': z.literal("refused").readonly(),
|
|
28
|
-
'problem': z.union([z.literal("network"), z.literal("unknown"), z.literal("invalid-spec"), z.literal("
|
|
28
|
+
'problem': z.union([z.literal("network"), z.literal("unknown"), z.literal("invalid-spec"), z.literal("not-found"), z.literal("already-installed"), z.literal("not-a-package"), z.literal("not-a-bundle")]).readonly(),
|
|
29
29
|
'reason': z.string().readonly(),
|
|
30
30
|
'registries': z.array(z.union([z.literal(null), z.string()])).readonly().optional(),
|
|
31
31
|
})]))
|
|
@@ -46,8 +46,14 @@ const _deepseek_ai_dsh_plugin_manager_pluginManager_installBundle_result$schema
|
|
|
46
46
|
'target': z.string(),
|
|
47
47
|
'enabled': z.boolean().optional(),
|
|
48
48
|
'error': z.object({
|
|
49
|
-
'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")]),
|
|
49
|
+
'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("incompatible-version"), z.literal("operation-error")]),
|
|
50
50
|
'diagnostic': z.string().optional(),
|
|
51
|
+
'incompatible': z.array(z.object({
|
|
52
|
+
'name': z.string(),
|
|
53
|
+
'version': z.string(),
|
|
54
|
+
'runtimeVersion': z.string(),
|
|
55
|
+
'peers': z.record(z.string(), z.string()),
|
|
56
|
+
})).optional(),
|
|
51
57
|
}).optional(),
|
|
52
58
|
'warnings': z.array(z.string()).optional(),
|
|
53
59
|
'packageResult': z.object({
|
|
@@ -55,7 +61,14 @@ const _deepseek_ai_dsh_plugin_manager_pluginManager_installBundle_result$schema
|
|
|
55
61
|
'output': z.string(),
|
|
56
62
|
'truncated': z.boolean(),
|
|
57
63
|
'logPath': z.string(),
|
|
58
|
-
'kind': z.union([z.literal("network"), z.literal("unknown"), z.literal("timeout"), z.literal("integrity"), z.literal("
|
|
64
|
+
'kind': z.union([z.literal("network"), z.literal("unknown"), z.literal("timeout"), z.literal("integrity"), z.literal("pnpm-missing"), z.literal("not-found"), z.literal("no-matching-version"), z.literal("disk-full"), z.literal("permission"), z.literal("build-blocked")]).optional(),
|
|
65
|
+
'timedOut': z.boolean().optional(),
|
|
66
|
+
'incompatible': z.array(z.object({
|
|
67
|
+
'name': z.string(),
|
|
68
|
+
'version': z.string(),
|
|
69
|
+
'runtimeVersion': z.string(),
|
|
70
|
+
'peers': z.record(z.string(), z.string()),
|
|
71
|
+
})).optional(),
|
|
59
72
|
}).optional(),
|
|
60
73
|
'bundle': z.string().optional(),
|
|
61
74
|
'pendingBuilds': z.array(z.string()).optional(),
|
|
@@ -84,8 +97,14 @@ const _deepseek_ai_dsh_plugin_manager_pluginManager_listBundles_result$schema =
|
|
|
84
97
|
'removable': z.boolean(),
|
|
85
98
|
'readOnlyReason': z.union([z.literal("management-required"), z.literal("unaddressable")]).optional(),
|
|
86
99
|
'error': z.object({
|
|
87
|
-
'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")]),
|
|
100
|
+
'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("incompatible-version"), z.literal("operation-error")]),
|
|
88
101
|
'diagnostic': z.string().optional(),
|
|
102
|
+
'incompatible': z.array(z.object({
|
|
103
|
+
'name': z.string(),
|
|
104
|
+
'version': z.string(),
|
|
105
|
+
'runtimeVersion': z.string(),
|
|
106
|
+
'peers': z.record(z.string(), z.string()),
|
|
107
|
+
})).optional(),
|
|
89
108
|
}).optional(),
|
|
90
109
|
'rows': z.array(z.object({
|
|
91
110
|
'rowId': z.string(),
|
|
@@ -142,6 +161,11 @@ const _deepseek_ai_dsh_plugin_manager_pluginManager_listPlugins_result$schema =
|
|
|
142
161
|
'patchId': z.never().optional(),
|
|
143
162
|
'readOnlyReason': z.union([z.literal("management-required"), z.literal("unaddressable")]),
|
|
144
163
|
}))])))
|
|
164
|
+
let _deepseek_ai_dsh_plugin_manager_pluginManager_listVersionExemptions_result$schema$value
|
|
165
|
+
const _deepseek_ai_dsh_plugin_manager_pluginManager_listVersionExemptions_result$schema = () => (_deepseek_ai_dsh_plugin_manager_pluginManager_listVersionExemptions_result$schema$value ??= z.object({
|
|
166
|
+
'exemptions': z.record(z.string(), z.array(z.string())),
|
|
167
|
+
'warnings': z.array(z.string()),
|
|
168
|
+
}))
|
|
145
169
|
let _deepseek_ai_dsh_plugin_manager_pluginManager_registries_result$schema$value
|
|
146
170
|
const _deepseek_ai_dsh_plugin_manager_pluginManager_registries_result$schema = () => (_deepseek_ai_dsh_plugin_manager_pluginManager_registries_result$schema$value ??= z.object({
|
|
147
171
|
'registry': z.union([z.literal(null), z.string()]).readonly(),
|
|
@@ -158,8 +182,14 @@ const _deepseek_ai_dsh_plugin_manager_pluginManager_removeBundle_result$schema =
|
|
|
158
182
|
'target': z.string(),
|
|
159
183
|
'enabled': z.boolean().optional(),
|
|
160
184
|
'error': z.object({
|
|
161
|
-
'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")]),
|
|
185
|
+
'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("incompatible-version"), z.literal("operation-error")]),
|
|
162
186
|
'diagnostic': z.string().optional(),
|
|
187
|
+
'incompatible': z.array(z.object({
|
|
188
|
+
'name': z.string(),
|
|
189
|
+
'version': z.string(),
|
|
190
|
+
'runtimeVersion': z.string(),
|
|
191
|
+
'peers': z.record(z.string(), z.string()),
|
|
192
|
+
})).optional(),
|
|
163
193
|
}).optional(),
|
|
164
194
|
'warnings': z.array(z.string()).optional(),
|
|
165
195
|
'packageResult': z.object({
|
|
@@ -167,7 +197,14 @@ const _deepseek_ai_dsh_plugin_manager_pluginManager_removeBundle_result$schema =
|
|
|
167
197
|
'output': z.string(),
|
|
168
198
|
'truncated': z.boolean(),
|
|
169
199
|
'logPath': z.string(),
|
|
170
|
-
'kind': z.union([z.literal("network"), z.literal("unknown"), z.literal("timeout"), z.literal("integrity"), z.literal("
|
|
200
|
+
'kind': z.union([z.literal("network"), z.literal("unknown"), z.literal("timeout"), z.literal("integrity"), z.literal("pnpm-missing"), z.literal("not-found"), z.literal("no-matching-version"), z.literal("disk-full"), z.literal("permission"), z.literal("build-blocked")]).optional(),
|
|
201
|
+
'timedOut': z.boolean().optional(),
|
|
202
|
+
'incompatible': z.array(z.object({
|
|
203
|
+
'name': z.string(),
|
|
204
|
+
'version': z.string(),
|
|
205
|
+
'runtimeVersion': z.string(),
|
|
206
|
+
'peers': z.record(z.string(), z.string()),
|
|
207
|
+
})).optional(),
|
|
171
208
|
}).optional(),
|
|
172
209
|
'bundle': z.string().optional(),
|
|
173
210
|
'pendingBuilds': z.array(z.string()).optional(),
|
|
@@ -187,8 +224,14 @@ const _deepseek_ai_dsh_plugin_manager_pluginManager_setBundleEnabled_result$sche
|
|
|
187
224
|
'target': z.string(),
|
|
188
225
|
'enabled': z.boolean().optional(),
|
|
189
226
|
'error': z.object({
|
|
190
|
-
'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")]),
|
|
227
|
+
'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("incompatible-version"), z.literal("operation-error")]),
|
|
191
228
|
'diagnostic': z.string().optional(),
|
|
229
|
+
'incompatible': z.array(z.object({
|
|
230
|
+
'name': z.string(),
|
|
231
|
+
'version': z.string(),
|
|
232
|
+
'runtimeVersion': z.string(),
|
|
233
|
+
'peers': z.record(z.string(), z.string()),
|
|
234
|
+
})).optional(),
|
|
192
235
|
}).optional(),
|
|
193
236
|
'warnings': z.array(z.string()).optional(),
|
|
194
237
|
'packageResult': z.object({
|
|
@@ -196,7 +239,14 @@ const _deepseek_ai_dsh_plugin_manager_pluginManager_setBundleEnabled_result$sche
|
|
|
196
239
|
'output': z.string(),
|
|
197
240
|
'truncated': z.boolean(),
|
|
198
241
|
'logPath': z.string(),
|
|
199
|
-
'kind': z.union([z.literal("network"), z.literal("unknown"), z.literal("timeout"), z.literal("integrity"), z.literal("
|
|
242
|
+
'kind': z.union([z.literal("network"), z.literal("unknown"), z.literal("timeout"), z.literal("integrity"), z.literal("pnpm-missing"), z.literal("not-found"), z.literal("no-matching-version"), z.literal("disk-full"), z.literal("permission"), z.literal("build-blocked")]).optional(),
|
|
243
|
+
'timedOut': z.boolean().optional(),
|
|
244
|
+
'incompatible': z.array(z.object({
|
|
245
|
+
'name': z.string(),
|
|
246
|
+
'version': z.string(),
|
|
247
|
+
'runtimeVersion': z.string(),
|
|
248
|
+
'peers': z.record(z.string(), z.string()),
|
|
249
|
+
})).optional(),
|
|
200
250
|
}).optional(),
|
|
201
251
|
'bundle': z.string().optional(),
|
|
202
252
|
'pendingBuilds': z.array(z.string()).optional(),
|
|
@@ -216,8 +266,60 @@ const _deepseek_ai_dsh_plugin_manager_pluginManager_setPluginEnabled_result$sche
|
|
|
216
266
|
'target': z.string(),
|
|
217
267
|
'enabled': z.boolean().optional(),
|
|
218
268
|
'error': z.object({
|
|
219
|
-
'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")]),
|
|
269
|
+
'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("incompatible-version"), z.literal("operation-error")]),
|
|
270
|
+
'diagnostic': z.string().optional(),
|
|
271
|
+
'incompatible': z.array(z.object({
|
|
272
|
+
'name': z.string(),
|
|
273
|
+
'version': z.string(),
|
|
274
|
+
'runtimeVersion': z.string(),
|
|
275
|
+
'peers': z.record(z.string(), z.string()),
|
|
276
|
+
})).optional(),
|
|
277
|
+
}).optional(),
|
|
278
|
+
'warnings': z.array(z.string()).optional(),
|
|
279
|
+
'packageResult': z.object({
|
|
280
|
+
'exitCode': z.number(),
|
|
281
|
+
'output': z.string(),
|
|
282
|
+
'truncated': z.boolean(),
|
|
283
|
+
'logPath': z.string(),
|
|
284
|
+
'kind': z.union([z.literal("network"), z.literal("unknown"), z.literal("timeout"), z.literal("integrity"), z.literal("pnpm-missing"), z.literal("not-found"), z.literal("no-matching-version"), z.literal("disk-full"), z.literal("permission"), z.literal("build-blocked")]).optional(),
|
|
285
|
+
'timedOut': z.boolean().optional(),
|
|
286
|
+
'incompatible': z.array(z.object({
|
|
287
|
+
'name': z.string(),
|
|
288
|
+
'version': z.string(),
|
|
289
|
+
'runtimeVersion': z.string(),
|
|
290
|
+
'peers': z.record(z.string(), z.string()),
|
|
291
|
+
})).optional(),
|
|
292
|
+
}).optional(),
|
|
293
|
+
'bundle': z.string().optional(),
|
|
294
|
+
'pendingBuilds': z.array(z.string()).optional(),
|
|
295
|
+
'approvedBuilds': z.array(z.string()).optional(),
|
|
296
|
+
'registries': z.array(z.union([z.literal(null), z.string()])).optional(),
|
|
297
|
+
'failedAt': z.union([z.literal("registry"), z.literal("spec-host")]).optional(),
|
|
298
|
+
}))
|
|
299
|
+
let _deepseek_ai_dsh_plugin_manager_pluginManager_setVersionExemption_parameter_0$schema$value
|
|
300
|
+
const _deepseek_ai_dsh_plugin_manager_pluginManager_setVersionExemption_parameter_0$schema = () => (_deepseek_ai_dsh_plugin_manager_pluginManager_setVersionExemption_parameter_0$schema$value ??= z.string())
|
|
301
|
+
let _deepseek_ai_dsh_plugin_manager_pluginManager_setVersionExemption_parameter_1$schema$value
|
|
302
|
+
const _deepseek_ai_dsh_plugin_manager_pluginManager_setVersionExemption_parameter_1$schema = () => (_deepseek_ai_dsh_plugin_manager_pluginManager_setVersionExemption_parameter_1$schema$value ??= z.string())
|
|
303
|
+
let _deepseek_ai_dsh_plugin_manager_pluginManager_setVersionExemption_parameter_2$schema$value
|
|
304
|
+
const _deepseek_ai_dsh_plugin_manager_pluginManager_setVersionExemption_parameter_2$schema = () => (_deepseek_ai_dsh_plugin_manager_pluginManager_setVersionExemption_parameter_2$schema$value ??= z.boolean())
|
|
305
|
+
let _deepseek_ai_dsh_plugin_manager_pluginManager_setVersionExemption_parameter_3$schema$value
|
|
306
|
+
const _deepseek_ai_dsh_plugin_manager_pluginManager_setVersionExemption_parameter_3$schema = () => (_deepseek_ai_dsh_plugin_manager_pluginManager_setVersionExemption_parameter_3$schema$value ??= z.union([z.undefined(), z.literal(false), z.literal(true)]))
|
|
307
|
+
let _deepseek_ai_dsh_plugin_manager_pluginManager_setVersionExemption_result$schema$value
|
|
308
|
+
const _deepseek_ai_dsh_plugin_manager_pluginManager_setVersionExemption_result$schema = () => (_deepseek_ai_dsh_plugin_manager_pluginManager_setVersionExemption_result$schema$value ??= z.object({
|
|
309
|
+
'changed': z.boolean(),
|
|
310
|
+
'application': z.union([z.literal("cancelled"), z.literal("failed"), z.literal("applied"), z.literal("restart-required"), z.literal("overridden")]),
|
|
311
|
+
'stage': z.union([z.literal("remove"), z.literal("install"), z.literal("enable")]),
|
|
312
|
+
'target': z.string(),
|
|
313
|
+
'enabled': z.boolean().optional(),
|
|
314
|
+
'error': z.object({
|
|
315
|
+
'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("incompatible-version"), z.literal("operation-error")]),
|
|
220
316
|
'diagnostic': z.string().optional(),
|
|
317
|
+
'incompatible': z.array(z.object({
|
|
318
|
+
'name': z.string(),
|
|
319
|
+
'version': z.string(),
|
|
320
|
+
'runtimeVersion': z.string(),
|
|
321
|
+
'peers': z.record(z.string(), z.string()),
|
|
322
|
+
})).optional(),
|
|
221
323
|
}).optional(),
|
|
222
324
|
'warnings': z.array(z.string()).optional(),
|
|
223
325
|
'packageResult': z.object({
|
|
@@ -225,7 +327,14 @@ const _deepseek_ai_dsh_plugin_manager_pluginManager_setPluginEnabled_result$sche
|
|
|
225
327
|
'output': z.string(),
|
|
226
328
|
'truncated': z.boolean(),
|
|
227
329
|
'logPath': z.string(),
|
|
228
|
-
'kind': z.union([z.literal("network"), z.literal("unknown"), z.literal("timeout"), z.literal("integrity"), z.literal("
|
|
330
|
+
'kind': z.union([z.literal("network"), z.literal("unknown"), z.literal("timeout"), z.literal("integrity"), z.literal("pnpm-missing"), z.literal("not-found"), z.literal("no-matching-version"), z.literal("disk-full"), z.literal("permission"), z.literal("build-blocked")]).optional(),
|
|
331
|
+
'timedOut': z.boolean().optional(),
|
|
332
|
+
'incompatible': z.array(z.object({
|
|
333
|
+
'name': z.string(),
|
|
334
|
+
'version': z.string(),
|
|
335
|
+
'runtimeVersion': z.string(),
|
|
336
|
+
'peers': z.record(z.string(), z.string()),
|
|
337
|
+
})).optional(),
|
|
229
338
|
}).optional(),
|
|
230
339
|
'bundle': z.string().optional(),
|
|
231
340
|
'pendingBuilds': z.array(z.string()).optional(),
|
|
@@ -243,8 +352,14 @@ const _deepseek_ai_dsh_plugin_manager_pluginManager_waitForInstall_result$schema
|
|
|
243
352
|
'target': z.string(),
|
|
244
353
|
'enabled': z.boolean().optional(),
|
|
245
354
|
'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")]),
|
|
355
|
+
'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("incompatible-version"), z.literal("operation-error")]),
|
|
247
356
|
'diagnostic': z.string().optional(),
|
|
357
|
+
'incompatible': z.array(z.object({
|
|
358
|
+
'name': z.string(),
|
|
359
|
+
'version': z.string(),
|
|
360
|
+
'runtimeVersion': z.string(),
|
|
361
|
+
'peers': z.record(z.string(), z.string()),
|
|
362
|
+
})).optional(),
|
|
248
363
|
}).optional(),
|
|
249
364
|
'warnings': z.array(z.string()).optional(),
|
|
250
365
|
'packageResult': z.object({
|
|
@@ -252,7 +367,14 @@ const _deepseek_ai_dsh_plugin_manager_pluginManager_waitForInstall_result$schema
|
|
|
252
367
|
'output': z.string(),
|
|
253
368
|
'truncated': z.boolean(),
|
|
254
369
|
'logPath': z.string(),
|
|
255
|
-
'kind': z.union([z.literal("network"), z.literal("unknown"), z.literal("timeout"), z.literal("integrity"), z.literal("
|
|
370
|
+
'kind': z.union([z.literal("network"), z.literal("unknown"), z.literal("timeout"), z.literal("integrity"), z.literal("pnpm-missing"), z.literal("not-found"), z.literal("no-matching-version"), z.literal("disk-full"), z.literal("permission"), z.literal("build-blocked")]).optional(),
|
|
371
|
+
'timedOut': z.boolean().optional(),
|
|
372
|
+
'incompatible': z.array(z.object({
|
|
373
|
+
'name': z.string(),
|
|
374
|
+
'version': z.string(),
|
|
375
|
+
'runtimeVersion': z.string(),
|
|
376
|
+
'peers': z.record(z.string(), z.string()),
|
|
377
|
+
})).optional(),
|
|
256
378
|
}).optional(),
|
|
257
379
|
'bundle': z.string().optional(),
|
|
258
380
|
'pendingBuilds': z.array(z.string()).optional(),
|
|
@@ -287,7 +409,7 @@ export const TYPERT_REMOTE = {
|
|
|
287
409
|
typeSymbol: '@deepseek-ai/dsh-plugin-manager/types#PluginInstallCancellation',
|
|
288
410
|
create: _deepseek_ai_dsh_plugin_manager_pluginManager_cancelInstall_result$schema,
|
|
289
411
|
},
|
|
290
|
-
sourceLocation: {"file":"packages/boot/plugin-manager/src/index.ts","line":
|
|
412
|
+
sourceLocation: {"file":"packages/boot/plugin-manager/src/index.ts","line":585,"column":9},
|
|
291
413
|
},
|
|
292
414
|
{
|
|
293
415
|
id: '@deepseek-ai/dsh-plugin-manager#pluginManager/inspect',
|
|
@@ -324,7 +446,7 @@ export const TYPERT_REMOTE = {
|
|
|
324
446
|
typeSymbol: '@deepseek-ai/dsh-plugin-manager/types#PluginSpecInspection',
|
|
325
447
|
create: _deepseek_ai_dsh_plugin_manager_pluginManager_inspect_result$schema,
|
|
326
448
|
},
|
|
327
|
-
sourceLocation: {"file":"packages/boot/plugin-manager/src/index.ts","line":
|
|
449
|
+
sourceLocation: {"file":"packages/boot/plugin-manager/src/index.ts","line":341,"column":9},
|
|
328
450
|
},
|
|
329
451
|
{
|
|
330
452
|
id: '@deepseek-ai/dsh-plugin-manager#pluginManager/installBundle',
|
|
@@ -360,7 +482,7 @@ export const TYPERT_REMOTE = {
|
|
|
360
482
|
typeSymbol: '@deepseek-ai/dsh-plugin-manager/types#ChangeResult',
|
|
361
483
|
create: _deepseek_ai_dsh_plugin_manager_pluginManager_installBundle_result$schema,
|
|
362
484
|
},
|
|
363
|
-
sourceLocation: {"file":"packages/boot/plugin-manager/src/index.ts","line":
|
|
485
|
+
sourceLocation: {"file":"packages/boot/plugin-manager/src/index.ts","line":462,"column":3},
|
|
364
486
|
},
|
|
365
487
|
{
|
|
366
488
|
id: '@deepseek-ai/dsh-plugin-manager#pluginManager/listBundles',
|
|
@@ -375,7 +497,7 @@ export const TYPERT_REMOTE = {
|
|
|
375
497
|
typeSymbol: '@deepseek-ai/dsh-plugin-manager#pluginManager/listBundles:result',
|
|
376
498
|
create: _deepseek_ai_dsh_plugin_manager_pluginManager_listBundles_result$schema,
|
|
377
499
|
},
|
|
378
|
-
sourceLocation: {"file":"packages/boot/plugin-manager/src/index.ts","line":
|
|
500
|
+
sourceLocation: {"file":"packages/boot/plugin-manager/src/index.ts","line":280,"column":3},
|
|
379
501
|
},
|
|
380
502
|
{
|
|
381
503
|
id: '@deepseek-ai/dsh-plugin-manager#pluginManager/listPlugins',
|
|
@@ -390,7 +512,22 @@ export const TYPERT_REMOTE = {
|
|
|
390
512
|
typeSymbol: '@deepseek-ai/dsh-plugin-manager#pluginManager/listPlugins:result',
|
|
391
513
|
create: _deepseek_ai_dsh_plugin_manager_pluginManager_listPlugins_result$schema,
|
|
392
514
|
},
|
|
393
|
-
sourceLocation: {"file":"packages/boot/plugin-manager/src/index.ts","line":
|
|
515
|
+
sourceLocation: {"file":"packages/boot/plugin-manager/src/index.ts","line":256,"column":9},
|
|
516
|
+
},
|
|
517
|
+
{
|
|
518
|
+
id: '@deepseek-ai/dsh-plugin-manager#pluginManager/listVersionExemptions',
|
|
519
|
+
service: 'pluginManager',
|
|
520
|
+
namespace: 'pluginManager',
|
|
521
|
+
method: 'listVersionExemptions',
|
|
522
|
+
invocation: { kind: 'direct' },
|
|
523
|
+
parameters: [
|
|
524
|
+
],
|
|
525
|
+
result: {
|
|
526
|
+
mode: 'strict',
|
|
527
|
+
typeSymbol: '@deepseek-ai/dsh-plugin-manager#pluginManager/listVersionExemptions:result',
|
|
528
|
+
create: _deepseek_ai_dsh_plugin_manager_pluginManager_listVersionExemptions_result$schema,
|
|
529
|
+
},
|
|
530
|
+
sourceLocation: {"file":"packages/boot/plugin-manager/src/index.ts","line":232,"column":3},
|
|
394
531
|
},
|
|
395
532
|
{
|
|
396
533
|
id: '@deepseek-ai/dsh-plugin-manager#pluginManager/registries',
|
|
@@ -405,7 +542,7 @@ export const TYPERT_REMOTE = {
|
|
|
405
542
|
typeSymbol: '@deepseek-ai/dsh-plugin-manager/types#PluginRegistries',
|
|
406
543
|
create: _deepseek_ai_dsh_plugin_manager_pluginManager_registries_result$schema,
|
|
407
544
|
},
|
|
408
|
-
sourceLocation: {"file":"packages/boot/plugin-manager/src/index.ts","line":
|
|
545
|
+
sourceLocation: {"file":"packages/boot/plugin-manager/src/index.ts","line":325,"column":9},
|
|
409
546
|
},
|
|
410
547
|
{
|
|
411
548
|
id: '@deepseek-ai/dsh-plugin-manager#pluginManager/removeBundle',
|
|
@@ -430,7 +567,7 @@ export const TYPERT_REMOTE = {
|
|
|
430
567
|
typeSymbol: '@deepseek-ai/dsh-plugin-manager/types#ChangeResult',
|
|
431
568
|
create: _deepseek_ai_dsh_plugin_manager_pluginManager_removeBundle_result$schema,
|
|
432
569
|
},
|
|
433
|
-
sourceLocation: {"file":"packages/boot/plugin-manager/src/index.ts","line":
|
|
570
|
+
sourceLocation: {"file":"packages/boot/plugin-manager/src/index.ts","line":601,"column":3},
|
|
434
571
|
},
|
|
435
572
|
{
|
|
436
573
|
id: '@deepseek-ai/dsh-plugin-manager#pluginManager/setBundleEnabled',
|
|
@@ -465,7 +602,7 @@ export const TYPERT_REMOTE = {
|
|
|
465
602
|
typeSymbol: '@deepseek-ai/dsh-plugin-manager/types#ChangeResult',
|
|
466
603
|
create: _deepseek_ai_dsh_plugin_manager_pluginManager_setBundleEnabled_result$schema,
|
|
467
604
|
},
|
|
468
|
-
sourceLocation: {"file":"packages/boot/plugin-manager/src/index.ts","line":
|
|
605
|
+
sourceLocation: {"file":"packages/boot/plugin-manager/src/index.ts","line":443,"column":3},
|
|
469
606
|
},
|
|
470
607
|
{
|
|
471
608
|
id: '@deepseek-ai/dsh-plugin-manager#pluginManager/setPluginEnabled',
|
|
@@ -500,7 +637,63 @@ export const TYPERT_REMOTE = {
|
|
|
500
637
|
typeSymbol: '@deepseek-ai/dsh-plugin-manager/types#ChangeResult',
|
|
501
638
|
create: _deepseek_ai_dsh_plugin_manager_pluginManager_setPluginEnabled_result$schema,
|
|
502
639
|
},
|
|
503
|
-
sourceLocation: {"file":"packages/boot/plugin-manager/src/index.ts","line":
|
|
640
|
+
sourceLocation: {"file":"packages/boot/plugin-manager/src/index.ts","line":425,"column":3},
|
|
641
|
+
},
|
|
642
|
+
{
|
|
643
|
+
id: '@deepseek-ai/dsh-plugin-manager#pluginManager/setVersionExemption',
|
|
644
|
+
service: 'pluginManager',
|
|
645
|
+
namespace: 'pluginManager',
|
|
646
|
+
method: 'setVersionExemption',
|
|
647
|
+
invocation: { kind: 'direct' },
|
|
648
|
+
parameters: [
|
|
649
|
+
{
|
|
650
|
+
name: 'packageVersion',
|
|
651
|
+
wire: 'packageVersion',
|
|
652
|
+
source: 'json',
|
|
653
|
+
codec: {
|
|
654
|
+
mode: 'strict',
|
|
655
|
+
typeSymbol: '@deepseek-ai/dsh-plugin-manager#pluginManager/setVersionExemption:packageVersion',
|
|
656
|
+
create: _deepseek_ai_dsh_plugin_manager_pluginManager_setVersionExemption_parameter_0$schema,
|
|
657
|
+
},
|
|
658
|
+
},
|
|
659
|
+
{
|
|
660
|
+
name: 'runtimeVersion',
|
|
661
|
+
wire: 'runtimeVersion',
|
|
662
|
+
source: 'json',
|
|
663
|
+
codec: {
|
|
664
|
+
mode: 'strict',
|
|
665
|
+
typeSymbol: '@deepseek-ai/dsh-plugin-manager#pluginManager/setVersionExemption:runtimeVersion',
|
|
666
|
+
create: _deepseek_ai_dsh_plugin_manager_pluginManager_setVersionExemption_parameter_1$schema,
|
|
667
|
+
},
|
|
668
|
+
},
|
|
669
|
+
{
|
|
670
|
+
name: 'enabled',
|
|
671
|
+
wire: 'enabled',
|
|
672
|
+
source: 'json',
|
|
673
|
+
codec: {
|
|
674
|
+
mode: 'strict',
|
|
675
|
+
typeSymbol: '@deepseek-ai/dsh-plugin-manager#pluginManager/setVersionExemption:enabled',
|
|
676
|
+
create: _deepseek_ai_dsh_plugin_manager_pluginManager_setVersionExemption_parameter_2$schema,
|
|
677
|
+
},
|
|
678
|
+
},
|
|
679
|
+
{
|
|
680
|
+
name: 'acceptRisk',
|
|
681
|
+
wire: 'acceptRisk',
|
|
682
|
+
source: 'json',
|
|
683
|
+
acceptsUndefined: true,
|
|
684
|
+
codec: {
|
|
685
|
+
mode: 'strict',
|
|
686
|
+
typeSymbol: '@deepseek-ai/dsh-plugin-manager#pluginManager/setVersionExemption:acceptRisk',
|
|
687
|
+
create: _deepseek_ai_dsh_plugin_manager_pluginManager_setVersionExemption_parameter_3$schema,
|
|
688
|
+
},
|
|
689
|
+
},
|
|
690
|
+
],
|
|
691
|
+
result: {
|
|
692
|
+
mode: 'strict',
|
|
693
|
+
typeSymbol: '@deepseek-ai/dsh-plugin-manager/types#ChangeResult',
|
|
694
|
+
create: _deepseek_ai_dsh_plugin_manager_pluginManager_setVersionExemption_result$schema,
|
|
695
|
+
},
|
|
696
|
+
sourceLocation: {"file":"packages/boot/plugin-manager/src/index.ts","line":245,"column":3},
|
|
504
697
|
},
|
|
505
698
|
{
|
|
506
699
|
id: '@deepseek-ai/dsh-plugin-manager#pluginManager/waitForInstall',
|
|
@@ -525,7 +718,7 @@ export const TYPERT_REMOTE = {
|
|
|
525
718
|
typeSymbol: '@deepseek-ai/dsh-plugin-manager#pluginManager/waitForInstall:result',
|
|
526
719
|
create: _deepseek_ai_dsh_plugin_manager_pluginManager_waitForInstall_result$schema,
|
|
527
720
|
},
|
|
528
|
-
sourceLocation: {"file":"packages/boot/plugin-manager/src/index.ts","line":
|
|
721
|
+
sourceLocation: {"file":"packages/boot/plugin-manager/src/index.ts","line":575,"column":9},
|
|
529
722
|
},
|
|
530
723
|
],
|
|
531
724
|
}
|
package/lib/types/failure.d.ts
CHANGED
|
@@ -1,10 +1,22 @@
|
|
|
1
1
|
/** Localizable rejections shared by profile management operations. */
|
|
2
|
-
import type {
|
|
2
|
+
import type { PluginCompatibility } from '@deepseek-ai/dsh-app-boot';
|
|
3
|
+
import type { IncompatiblePlugin, ManagementError } from './types.ts';
|
|
3
4
|
/** Expected management rejection; presentation belongs to the caller's locale. */
|
|
4
5
|
export declare class ManagementFailure extends Error {
|
|
5
6
|
/** Code rendered by the caller's locale dictionary. */
|
|
6
7
|
readonly code: ManagementError['code'];
|
|
7
|
-
/**
|
|
8
|
-
|
|
8
|
+
/** The packages an `incompatible-version` rejection names. */
|
|
9
|
+
readonly incompatible: IncompatiblePlugin[] | undefined;
|
|
10
|
+
/**
|
|
11
|
+
* @param code Localizable management rejection.
|
|
12
|
+
* @param incompatible Packages the running DSH version rejects, for `incompatible-version`.
|
|
13
|
+
*/
|
|
14
|
+
constructor(code: ManagementError['code'], incompatible?: IncompatiblePlugin[]);
|
|
9
15
|
}
|
|
16
|
+
/**
|
|
17
|
+
* Drop the exemption status from an unexempted compatibility result.
|
|
18
|
+
* @param issue Result whose exemption is not active.
|
|
19
|
+
* @returns The package, runtime, and rejected peer ranges.
|
|
20
|
+
*/
|
|
21
|
+
export declare function incompatiblePlugin(issue: PluginCompatibility): IncompatiblePlugin;
|
|
10
22
|
//# sourceMappingURL=failure.d.ts.map
|
package/lib/types/failure.js
CHANGED
|
@@ -2,7 +2,24 @@
|
|
|
2
2
|
export class ManagementFailure extends Error {
|
|
3
3
|
/** Code rendered by the caller's locale dictionary. */
|
|
4
4
|
code;
|
|
5
|
-
/**
|
|
6
|
-
|
|
5
|
+
/** The packages an `incompatible-version` rejection names. */
|
|
6
|
+
incompatible;
|
|
7
|
+
/**
|
|
8
|
+
* @param code Localizable management rejection.
|
|
9
|
+
* @param incompatible Packages the running DSH version rejects, for `incompatible-version`.
|
|
10
|
+
*/
|
|
11
|
+
constructor(code, incompatible) {
|
|
12
|
+
super(code);
|
|
13
|
+
this.code = code;
|
|
14
|
+
this.incompatible = incompatible;
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Drop the exemption status from an unexempted compatibility result.
|
|
19
|
+
* @param issue Result whose exemption is not active.
|
|
20
|
+
* @returns The package, runtime, and rejected peer ranges.
|
|
21
|
+
*/
|
|
22
|
+
export function incompatiblePlugin(issue) {
|
|
23
|
+
return { name: issue.name, version: issue.version, runtimeVersion: issue.runtimeVersion, peers: issue.peers };
|
|
7
24
|
}
|
|
8
25
|
//# sourceMappingURL=failure.js.map
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { ParsedInstallSpec } from './install-spec.ts';
|
|
2
|
+
import type { PackageResult } from './types.ts';
|
|
3
|
+
/** Deadline, diagnostics and cancellation for one read-only GitHub check. */
|
|
4
|
+
export interface GithubConnectionOptions {
|
|
5
|
+
timeoutMs: number;
|
|
6
|
+
outputBytes: number;
|
|
7
|
+
signal: AbortSignal;
|
|
8
|
+
/** The application-owned package manager's environment, also used by its Git children. */
|
|
9
|
+
env?: Readonly<Record<string, string>>;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Check a GitHub repository before pnpm starts, without downloading or building its package.
|
|
13
|
+
* Git reads the profile's Git and proxy configuration without invoking credential helpers or prompting.
|
|
14
|
+
* Timeout and cancellation terminate its descendants too; pnpm owns authentication and transport fallback.
|
|
15
|
+
* @param spec The parsed installation address; npm packages, local paths and other hosts are not checked.
|
|
16
|
+
* @param dir The profile directory where installation runs.
|
|
17
|
+
* @param options The connection deadline, output bound and operation cancellation.
|
|
18
|
+
* @returns A failed check with bounded output and a complete log at logPath, or undefined for a reachable repository or an unhandled spec.
|
|
19
|
+
*/
|
|
20
|
+
export declare function checkGithubConnection(spec: ParsedInstallSpec, dir: string, options: GithubConnectionOptions): Promise<PackageResult | undefined>;
|
|
21
|
+
//# sourceMappingURL=github-connection.d.ts.map
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/** Bounded GitHub repository checks using the installer's Git configuration and environment. */
|
|
2
|
+
import { mkdir, mkdtemp, open } from 'node:fs/promises';
|
|
3
|
+
import { join } from 'node:path';
|
|
4
|
+
import { execa } from 'execa';
|
|
5
|
+
import { scrubbedParentEnv } from '@deepseek-ai/dsh-subprocess';
|
|
6
|
+
import { classifyInstallFailure } from "./install-failure.js";
|
|
7
|
+
/**
|
|
8
|
+
* Check a GitHub repository before pnpm starts, without downloading or building its package.
|
|
9
|
+
* Git reads the profile's Git and proxy configuration without invoking credential helpers or prompting.
|
|
10
|
+
* Timeout and cancellation terminate its descendants too; pnpm owns authentication and transport fallback.
|
|
11
|
+
* @param spec The parsed installation address; npm packages, local paths and other hosts are not checked.
|
|
12
|
+
* @param dir The profile directory where installation runs.
|
|
13
|
+
* @param options The connection deadline, output bound and operation cancellation.
|
|
14
|
+
* @returns A failed check with bounded output and a complete log at logPath, or undefined for a reachable repository or an unhandled spec.
|
|
15
|
+
*/
|
|
16
|
+
export async function checkGithubConnection(spec, dir, options) {
|
|
17
|
+
if (spec.kind !== 'git')
|
|
18
|
+
return undefined;
|
|
19
|
+
const host = spec.host.toLowerCase().replace(/:.*$/, '');
|
|
20
|
+
if (host !== 'github.com' && !host.endsWith('.github.com'))
|
|
21
|
+
return undefined;
|
|
22
|
+
const repository = spec.spec.replace(/#.*$/s, '')
|
|
23
|
+
.replace(/^github:/i, 'https://github.com/')
|
|
24
|
+
.replace(/^gist:/i, 'https://gist.github.com/')
|
|
25
|
+
.replace(/^git\+/i, '');
|
|
26
|
+
const logRoot = join(dir, '.plugin-manager', 'logs');
|
|
27
|
+
await mkdir(logRoot, { recursive: true, mode: 0o700 });
|
|
28
|
+
const logDir = await mkdtemp(join(logRoot, 'github-connection-'));
|
|
29
|
+
const logPath = join(logDir, 'git.log');
|
|
30
|
+
const log = await open(logPath, 'ax+', 0o600);
|
|
31
|
+
try {
|
|
32
|
+
const result = await execa('git', ['-c', 'credential.helper=', 'ls-remote', '--', repository, 'HEAD'], {
|
|
33
|
+
cwd: dir,
|
|
34
|
+
env: {
|
|
35
|
+
...scrubbedParentEnv(), ...options.env, LC_ALL: 'C', GIT_TERMINAL_PROMPT: '0',
|
|
36
|
+
GIT_ASKPASS: '', SSH_ASKPASS: '', SSH_ASKPASS_REQUIRE: 'never',
|
|
37
|
+
},
|
|
38
|
+
extendEnv: false,
|
|
39
|
+
stdin: 'ignore', stdout: 'ignore', stderr: { file: logPath, append: true }, buffer: false, reject: false,
|
|
40
|
+
timeout: options.timeoutMs, cancelSignal: options.signal, killDescendants: true, killSignal: 'SIGKILL',
|
|
41
|
+
});
|
|
42
|
+
if (!result.failed)
|
|
43
|
+
return undefined;
|
|
44
|
+
if (result.timedOut)
|
|
45
|
+
await log.write(`dsh: connection to ${spec.host} timed out after ${String(options.timeoutMs)}ms\n`);
|
|
46
|
+
if ((await log.stat()).size === 0)
|
|
47
|
+
await log.write(result.shortMessage ?? 'GitHub connection check failed');
|
|
48
|
+
const { size } = await log.stat();
|
|
49
|
+
const bytes = Buffer.alloc(Math.min(size, options.outputBytes));
|
|
50
|
+
await log.read(bytes, 0, bytes.length, size - bytes.length);
|
|
51
|
+
const output = bytes.toString('utf8');
|
|
52
|
+
return {
|
|
53
|
+
exitCode: result.exitCode ?? (result.code === 'ENOENT' ? 127 : 1), output, truncated: size > options.outputBytes, logPath,
|
|
54
|
+
kind: classifyInstallFailure({ log: output, timedOut: result.timedOut }),
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
finally {
|
|
58
|
+
await log.close();
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=github-connection.js.map
|
package/lib/types/index.d.ts
CHANGED
|
@@ -5,16 +5,20 @@ import type { BundleInfo, ChangeResult, InspectOptions, InstallBundleOptions, Pl
|
|
|
5
5
|
export type * from './types.ts';
|
|
6
6
|
export { classifyInstallFailure, type InstallFailureFacts } from './install-failure.ts';
|
|
7
7
|
export { InvalidInstallSpecError, parseInstallSpec, type ParsedInstallSpec } from './install-spec.ts';
|
|
8
|
-
/** The pnpm executable,
|
|
8
|
+
/** The pnpm executable, registries, and limits for diagnostics, lookups and connection checks. */
|
|
9
9
|
export interface Config {
|
|
10
10
|
/** The pnpm executable name or path; resolved through `PATH` like the `dsh plugin` command. */
|
|
11
11
|
pnpmCommand?: string;
|
|
12
|
-
/** Maximum retained
|
|
12
|
+
/** Maximum retained package-operation diagnostic bytes. */
|
|
13
13
|
outputBytes?: number;
|
|
14
14
|
/** Maximum time to wait for another process's profile package operation. */
|
|
15
15
|
lockWaitMs?: number;
|
|
16
16
|
/** Bound on one registry lookup an inspection runs, in milliseconds. */
|
|
17
17
|
inspectTimeoutMs?: number;
|
|
18
|
+
/** Maximum duration of the GitHub repository connection check before installation, in milliseconds. */
|
|
19
|
+
githubConnectionTimeoutMs?: number;
|
|
20
|
+
/** Maximum time one captured package run may print nothing before the manager terminates it, in milliseconds. */
|
|
21
|
+
idleTimeoutMs?: number;
|
|
18
22
|
/** The registry lookups and installations ask first, as an http(s) URL; absent, the one pnpm's own configuration names. */
|
|
19
23
|
registry?: string;
|
|
20
24
|
/**
|
|
@@ -42,6 +46,8 @@ export declare class PluginManager extends TypertRemoteService {
|
|
|
42
46
|
private readonly outputBytes;
|
|
43
47
|
private readonly lockWaitMs;
|
|
44
48
|
private readonly inspectTimeoutMs;
|
|
49
|
+
private readonly githubConnectionTimeoutMs;
|
|
50
|
+
private readonly idleTimeoutMs;
|
|
45
51
|
private readonly pnpmCommand;
|
|
46
52
|
private readonly configuredRegistries;
|
|
47
53
|
private readonly ownerContext;
|
|
@@ -49,6 +55,22 @@ export declare class PluginManager extends TypertRemoteService {
|
|
|
49
55
|
/** Installations by request id, from their call until it settles. */
|
|
50
56
|
private readonly installs;
|
|
51
57
|
constructor(ctx: Context, config: Config);
|
|
58
|
+
/** Read exact plugin-version exemptions saved in this profile.
|
|
59
|
+
* @returns Accepted package-name@version keys with the runtime versions they may run on, and any
|
|
60
|
+
* record or file problem the reader rejected, which the caller reports instead of failing.
|
|
61
|
+
*/
|
|
62
|
+
listVersionExemptions(): {
|
|
63
|
+
exemptions: Record<string, string[]>;
|
|
64
|
+
warnings: string[];
|
|
65
|
+
};
|
|
66
|
+
/** Grant or revoke one exact plugin/runtime exemption and reevaluate live plugins.
|
|
67
|
+
* @param packageVersion Exact manifest package name followed by @ and its version; never an installation spec or alias.
|
|
68
|
+
* @param runtimeVersion Exact current DSH version for grants; revocation may name a previous runtime.
|
|
69
|
+
* @param enabled Whether to grant rather than revoke the exemption.
|
|
70
|
+
* @param acceptRisk Required true for grants after the user accepts possible crashes and data loss.
|
|
71
|
+
* @returns Saved and runtime outcomes. Startup-only profiles require restart.
|
|
72
|
+
*/
|
|
73
|
+
setVersionExemption(packageVersion: string, runtimeVersion: string, enabled: boolean, acceptRisk?: boolean): Promise<ChangeResult>;
|
|
52
74
|
/** Read current plugins, including why a row cannot be changed through the profile patch.
|
|
53
75
|
* @returns Current runtime entries with persistent patch targets.
|
|
54
76
|
*/
|
|
@@ -83,7 +105,9 @@ export declare class PluginManager extends TypertRemoteService {
|
|
|
83
105
|
*/
|
|
84
106
|
setBundleEnabled(name: string, enabled: boolean): Promise<ChangeResult>;
|
|
85
107
|
/**
|
|
86
|
-
* Install a package using the same pnpm implementation as dsh plugin.
|
|
108
|
+
* Install a package using the same pnpm implementation as dsh plugin. GitHub
|
|
109
|
+
* repositories get a connection check bounded by githubConnectionTimeoutMs before pnpm starts;
|
|
110
|
+
* only network failures or timeouts stop installation, while pnpm owns authentication and transport fallback. A run
|
|
87
111
|
* that fails, is cancelled, or adds a package without a bundle patch restores
|
|
88
112
|
* `package.json` and `pnpm-lock.yaml` as they were; downloaded files can stay.
|
|
89
113
|
* @param spec One package spec, including local paths relative to the invocation directory.
|
|
@@ -100,7 +124,7 @@ export declare class PluginManager extends TypertRemoteService {
|
|
|
100
124
|
waitForInstall(requestId: PluginInstallRequestId): Promise<ChangeResult | null>;
|
|
101
125
|
/** Stop an installation this manager owns and wait until its files are back.
|
|
102
126
|
* @param requestId The id the installation was started with.
|
|
103
|
-
* @returns `cancelled` once pnpm exited and the files are restored, `too-late` once the bundle is being
|
|
127
|
+
* @returns `cancelled` once the Git check or pnpm exited and the files are restored, `too-late` once the bundle is being
|
|
104
128
|
* applied, `not-running` for any other id.
|
|
105
129
|
*/
|
|
106
130
|
cancelInstall(requestId: PluginInstallRequestId): Promise<PluginInstallCancellation>;
|