dsh-plugin-shop 0.1.3 → 0.2.0
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.md +30 -13
- package/cordis.patch.yml +4 -4
- package/lib/client.js +237 -236
- package/lib/index.js +13 -13
- package/lib/typert.host.js +63 -63
- package/lib/typert.remote-client.d.ts +13 -13
- package/lib/typert.remote-client.js +41 -41
- package/lib/types/client/{StoreTab.d.ts → ShopTab.d.ts} +11 -11
- package/lib/types/client/index.d.ts +12 -12
- package/lib/types/client/locales.d.ts +3 -3
- package/lib/types/client/present.d.ts +12 -11
- package/lib/types/client/useInstall.d.ts +3 -3
- package/lib/types/host/executor.d.ts +1 -1
- package/lib/types/host/index.d.ts +22 -22
- package/lib/types/host/types.d.ts +1 -1
- package/lib/types/index.d.ts +2 -2
- package/package.json +3 -3
package/lib/index.js
CHANGED
|
@@ -232,7 +232,7 @@ function chain(profile, task) {
|
|
|
232
232
|
* The §7.2 step-6 confirm: after a zero exit, re-read the profile manifest and
|
|
233
233
|
* verify the bundle actually landed in `dsh.profile.bundles`. Exit 0 alone is
|
|
234
234
|
* not success — a library-that-looked-like-a-plugin, or a stale catalog,
|
|
235
|
-
* exits 0 while changing nothing (§10). The
|
|
235
|
+
* exits 0 while changing nothing (§10). The shop cannot force a client
|
|
236
236
|
* refresh in P1, so the detail carries the signal. A manifest that cannot be
|
|
237
237
|
* read or parsed is the same outcome, naming the file: the install's result
|
|
238
238
|
* is then unknown, and a bare `done` would be plausible-but-wrong. `home` is
|
|
@@ -251,7 +251,7 @@ function confirmBundleActivation(profile, home, expectedName) {
|
|
|
251
251
|
/**
|
|
252
252
|
* Run one `dsh plugin --profile <profile> add <spec>` and track it.
|
|
253
253
|
* Never rolls back; a failure surfaces stderr verbatim plus the recovery hint
|
|
254
|
-
* (§10). The
|
|
254
|
+
* (§10). The shop never passes build-script flags: `allowBuilds` stays the
|
|
255
255
|
* user's explicit decision in the CLI (§7.2).
|
|
256
256
|
* The child inherits the current environment unless `env` is given — the
|
|
257
257
|
* real-install test pins DSH_HOME to a temporary directory this way.
|
|
@@ -364,7 +364,7 @@ function discoverProfile(startPath, baseDir) {
|
|
|
364
364
|
throw new Error(`dsh-plugin-shop: no profile directory found above ${startPath}`);
|
|
365
365
|
}
|
|
366
366
|
/** A directory is a profile when it holds the Loader root next to the bundle
|
|
367
|
-
* manifest the
|
|
367
|
+
* manifest the shop's own package.json declares itself part of. */
|
|
368
368
|
function isProfileDir(dir) {
|
|
369
369
|
if (!existsSync(join(dir, "cordis.yml"))) return false;
|
|
370
370
|
try {
|
|
@@ -374,7 +374,7 @@ function isProfileDir(dir) {
|
|
|
374
374
|
return false;
|
|
375
375
|
}
|
|
376
376
|
/** Resolve symlinks through the deepest ancestor of `startPath` that exists.
|
|
377
|
-
* The leaf — the
|
|
377
|
+
* The leaf — the shop's own module file — need not be present yet for
|
|
378
378
|
* discovery to know where it lives. */
|
|
379
379
|
function realpathNearestExisting(startPath) {
|
|
380
380
|
let current = startPath;
|
|
@@ -406,7 +406,7 @@ function setUserLayerRow(options) {
|
|
|
406
406
|
}
|
|
407
407
|
//#endregion
|
|
408
408
|
//#region src/host/index.ts
|
|
409
|
-
/**
|
|
409
|
+
/** ShopGateway: the Host half of dsh-plugin-shop (§5.1). */
|
|
410
410
|
var __runInitializers = function(thisArg, initializers, value) {
|
|
411
411
|
var useValue = arguments.length > 2;
|
|
412
412
|
for (var i = 0; i < initializers.length; i++) value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);
|
|
@@ -447,10 +447,10 @@ var __esDecorate = function(ctor, descriptorIn, decorators, contextIn, initializ
|
|
|
447
447
|
if (target) Object.defineProperty(target, contextIn.name, descriptor);
|
|
448
448
|
done = true;
|
|
449
449
|
};
|
|
450
|
-
/** Remote-only service exposing the
|
|
450
|
+
/** Remote-only service exposing the shop Remote methods of §7.3.
|
|
451
451
|
*
|
|
452
|
-
* @typert service
|
|
453
|
-
let
|
|
452
|
+
* @typert service shop */
|
|
453
|
+
let ShopGateway = (() => {
|
|
454
454
|
let _classSuper = TypertRemoteService;
|
|
455
455
|
let _instanceExtraInitializers = [];
|
|
456
456
|
let _setEnabled_decorators;
|
|
@@ -458,7 +458,7 @@ let StoreGateway = (() => {
|
|
|
458
458
|
let _install_decorators;
|
|
459
459
|
let _installStatus_decorators;
|
|
460
460
|
let _outdated_decorators;
|
|
461
|
-
return class
|
|
461
|
+
return class ShopGateway extends _classSuper {
|
|
462
462
|
static {
|
|
463
463
|
const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
|
|
464
464
|
_setEnabled_decorators = [Remote("setEnabled")];
|
|
@@ -548,7 +548,7 @@ let StoreGateway = (() => {
|
|
|
548
548
|
/** Every install id in insertion order, oldest first; finished-record eviction walks this from the front. */
|
|
549
549
|
installOrder = [];
|
|
550
550
|
constructor(ctx, options = {}) {
|
|
551
|
-
super(ctx, "
|
|
551
|
+
super(ctx, "shop");
|
|
552
552
|
this.options = options;
|
|
553
553
|
this.profile = options.profile ?? discoverProfile(fileURLToPath(import.meta.url), this.bootBaseDir()).name;
|
|
554
554
|
this.profileDir = options.profileDir;
|
|
@@ -606,7 +606,7 @@ let StoreGateway = (() => {
|
|
|
606
606
|
const config = (this.ctx.loader?.entries().find((entry) => entry.options.name === "dsh-plugin-shop"))?.options.config;
|
|
607
607
|
const catalogUrl = config?.catalogUrl;
|
|
608
608
|
const cacheDir = config?.cacheDir;
|
|
609
|
-
if (typeof catalogUrl !== "string" || typeof cacheDir !== "string") throw new Error("dsh-plugin-shop: the
|
|
609
|
+
if (typeof catalogUrl !== "string" || typeof cacheDir !== "string") throw new Error("dsh-plugin-shop: the shop row is missing catalogUrl or cacheDir config");
|
|
610
610
|
return {
|
|
611
611
|
catalogUrl,
|
|
612
612
|
cacheDir
|
|
@@ -672,7 +672,7 @@ let StoreGateway = (() => {
|
|
|
672
672
|
const record = this.installs.get(id);
|
|
673
673
|
if (record !== void 0 && record.status().state !== "running") finishedIds.push(id);
|
|
674
674
|
}
|
|
675
|
-
const excess = Math.max(0, finishedIds.length -
|
|
675
|
+
const excess = Math.max(0, finishedIds.length - ShopGateway.MAX_FINISHED_INSTALLS);
|
|
676
676
|
for (const id of finishedIds.slice(0, excess)) this.installs.delete(id);
|
|
677
677
|
}
|
|
678
678
|
/** Poll one install's progress (§7.2); unknown ids report `found: false`. */
|
|
@@ -722,4 +722,4 @@ let StoreGateway = (() => {
|
|
|
722
722
|
};
|
|
723
723
|
})();
|
|
724
724
|
//#endregion
|
|
725
|
-
export {
|
|
725
|
+
export { ShopGateway, ShopGateway as default };
|
package/lib/typert.host.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
/* Generated by @deepseek-ai/dsh-typert-generator from FaceModel — do not edit. */
|
|
2
2
|
import { z } from 'zod'
|
|
3
3
|
|
|
4
|
-
const
|
|
4
|
+
const dsh_plugin_shop_shop_catalog_parameter_0$schema = z.union([z.undefined(), z.object({
|
|
5
5
|
'refresh': z.union([z.undefined(), z.literal(false), z.literal(true)]).optional(),
|
|
6
6
|
})])
|
|
7
|
-
const
|
|
7
|
+
const dsh_plugin_shop_shop_catalog_result$schema = z.object({
|
|
8
8
|
'schemaVersion': z.number(),
|
|
9
9
|
'builtAt': z.string(),
|
|
10
10
|
'stale': z.boolean(),
|
|
@@ -37,12 +37,12 @@ const dsh_plugin_shop_store_catalog_result$schema = z.object({
|
|
|
37
37
|
'detail': z.string(),
|
|
38
38
|
})),
|
|
39
39
|
})
|
|
40
|
-
const
|
|
40
|
+
const dsh_plugin_shop_shop_installStart_parameter_0$schema = z.object({
|
|
41
41
|
'name': z.string(),
|
|
42
42
|
'version': z.string(),
|
|
43
43
|
'acknowledged': z.union([z.undefined(), z.literal(false), z.literal(true)]).optional(),
|
|
44
44
|
})
|
|
45
|
-
const
|
|
45
|
+
const dsh_plugin_shop_shop_installStart_result$schema = z.union([z.object({
|
|
46
46
|
'ok': z.literal(true),
|
|
47
47
|
'installId': z.string(),
|
|
48
48
|
}), z.object({
|
|
@@ -50,26 +50,26 @@ const dsh_plugin_shop_store_installStart_result$schema = z.union([z.object({
|
|
|
50
50
|
'code': z.union([z.literal("not-in-catalog"), z.literal("denied"), z.literal("version-mismatch"), z.literal("needs-acknowledgement")]),
|
|
51
51
|
'detail': z.string(),
|
|
52
52
|
})])
|
|
53
|
-
const
|
|
53
|
+
const dsh_plugin_shop_shop_installStatus_parameter_0$schema = z.object({
|
|
54
54
|
'installId': z.string(),
|
|
55
55
|
})
|
|
56
|
-
const
|
|
56
|
+
const dsh_plugin_shop_shop_installStatus_result$schema = z.object({
|
|
57
57
|
'found': z.boolean(),
|
|
58
58
|
'state': z.union([z.literal("running"), z.literal("done"), z.literal("failed")]),
|
|
59
59
|
'log': z.array(z.string()),
|
|
60
60
|
'needsRestart': z.union([z.undefined(), z.literal(false), z.literal(true)]).optional(),
|
|
61
61
|
'detail': z.union([z.undefined(), z.string()]).optional(),
|
|
62
62
|
})
|
|
63
|
-
const
|
|
63
|
+
const dsh_plugin_shop_shop_outdated_result$schema = z.array(z.object({
|
|
64
64
|
'name': z.string(),
|
|
65
65
|
'installed': z.string(),
|
|
66
66
|
'latest': z.string(),
|
|
67
67
|
}))
|
|
68
|
-
const
|
|
68
|
+
const dsh_plugin_shop_shop_setEnabled_parameter_0$schema = z.object({
|
|
69
69
|
'name': z.string(),
|
|
70
70
|
'enabled': z.boolean(),
|
|
71
71
|
})
|
|
72
|
-
const
|
|
72
|
+
const dsh_plugin_shop_shop_setEnabled_result$schema = z.object({
|
|
73
73
|
'ok': z.boolean(),
|
|
74
74
|
'detail': z.union([z.undefined(), z.string()]).optional(),
|
|
75
75
|
})
|
|
@@ -81,9 +81,9 @@ export const TYPERT = {
|
|
|
81
81
|
],
|
|
82
82
|
invocations: [
|
|
83
83
|
{
|
|
84
|
-
id: 'dsh-plugin-shop#
|
|
85
|
-
service: '
|
|
86
|
-
namespace: '
|
|
84
|
+
id: 'dsh-plugin-shop#shop/catalog',
|
|
85
|
+
service: 'shop',
|
|
86
|
+
namespace: 'shop',
|
|
87
87
|
method: 'catalog',
|
|
88
88
|
invocation: { kind: 'direct' },
|
|
89
89
|
parameters: [
|
|
@@ -94,22 +94,22 @@ export const TYPERT = {
|
|
|
94
94
|
acceptsUndefined: true,
|
|
95
95
|
codec: {
|
|
96
96
|
mode: 'strict',
|
|
97
|
-
typeSymbol: 'dsh-plugin-shop#
|
|
98
|
-
schema:
|
|
97
|
+
typeSymbol: 'dsh-plugin-shop#shop/catalog:args',
|
|
98
|
+
schema: dsh_plugin_shop_shop_catalog_parameter_0$schema,
|
|
99
99
|
},
|
|
100
100
|
},
|
|
101
101
|
],
|
|
102
102
|
result: {
|
|
103
103
|
mode: 'strict',
|
|
104
|
-
typeSymbol: 'dsh-plugin-shop/types#
|
|
105
|
-
schema:
|
|
104
|
+
typeSymbol: 'dsh-plugin-shop/types#ShopCatalogResult',
|
|
105
|
+
schema: dsh_plugin_shop_shop_catalog_result$schema,
|
|
106
106
|
},
|
|
107
107
|
sourceLocation: {"file":"packages/dsh-plugin-shop/src/host/index.ts","line":177,"column":9},
|
|
108
108
|
},
|
|
109
109
|
{
|
|
110
|
-
id: 'dsh-plugin-shop#
|
|
111
|
-
service: '
|
|
112
|
-
namespace: '
|
|
110
|
+
id: 'dsh-plugin-shop#shop/installStart',
|
|
111
|
+
service: 'shop',
|
|
112
|
+
namespace: 'shop',
|
|
113
113
|
method: 'installStart',
|
|
114
114
|
implementation: 'install',
|
|
115
115
|
invocation: { kind: 'direct' },
|
|
@@ -121,21 +121,21 @@ export const TYPERT = {
|
|
|
121
121
|
codec: {
|
|
122
122
|
mode: 'strict',
|
|
123
123
|
typeSymbol: 'dsh-plugin-shop/types#InstallArgs',
|
|
124
|
-
schema:
|
|
124
|
+
schema: dsh_plugin_shop_shop_installStart_parameter_0$schema,
|
|
125
125
|
},
|
|
126
126
|
},
|
|
127
127
|
],
|
|
128
128
|
result: {
|
|
129
129
|
mode: 'strict',
|
|
130
|
-
typeSymbol: 'dsh-plugin-shop/types#
|
|
131
|
-
schema:
|
|
130
|
+
typeSymbol: 'dsh-plugin-shop/types#ShopInstallResult',
|
|
131
|
+
schema: dsh_plugin_shop_shop_installStart_result$schema,
|
|
132
132
|
},
|
|
133
133
|
sourceLocation: {"file":"packages/dsh-plugin-shop/src/host/index.ts","line":202,"column":9},
|
|
134
134
|
},
|
|
135
135
|
{
|
|
136
|
-
id: 'dsh-plugin-shop#
|
|
137
|
-
service: '
|
|
138
|
-
namespace: '
|
|
136
|
+
id: 'dsh-plugin-shop#shop/installStatus',
|
|
137
|
+
service: 'shop',
|
|
138
|
+
namespace: 'shop',
|
|
139
139
|
method: 'installStatus',
|
|
140
140
|
invocation: { kind: 'direct' },
|
|
141
141
|
parameters: [
|
|
@@ -145,37 +145,37 @@ export const TYPERT = {
|
|
|
145
145
|
source: 'json',
|
|
146
146
|
codec: {
|
|
147
147
|
mode: 'strict',
|
|
148
|
-
typeSymbol: 'dsh-plugin-shop#
|
|
149
|
-
schema:
|
|
148
|
+
typeSymbol: 'dsh-plugin-shop#shop/installStatus:args',
|
|
149
|
+
schema: dsh_plugin_shop_shop_installStatus_parameter_0$schema,
|
|
150
150
|
},
|
|
151
151
|
},
|
|
152
152
|
],
|
|
153
153
|
result: {
|
|
154
154
|
mode: 'strict',
|
|
155
|
-
typeSymbol: 'dsh-plugin-shop/types#
|
|
156
|
-
schema:
|
|
155
|
+
typeSymbol: 'dsh-plugin-shop/types#ShopInstallStatusResult',
|
|
156
|
+
schema: dsh_plugin_shop_shop_installStatus_result$schema,
|
|
157
157
|
},
|
|
158
158
|
sourceLocation: {"file":"packages/dsh-plugin-shop/src/host/index.ts","line":240,"column":3},
|
|
159
159
|
},
|
|
160
160
|
{
|
|
161
|
-
id: 'dsh-plugin-shop#
|
|
162
|
-
service: '
|
|
163
|
-
namespace: '
|
|
161
|
+
id: 'dsh-plugin-shop#shop/outdated',
|
|
162
|
+
service: 'shop',
|
|
163
|
+
namespace: 'shop',
|
|
164
164
|
method: 'outdated',
|
|
165
165
|
invocation: { kind: 'direct' },
|
|
166
166
|
parameters: [
|
|
167
167
|
],
|
|
168
168
|
result: {
|
|
169
169
|
mode: 'strict',
|
|
170
|
-
typeSymbol: 'dsh-plugin-shop#
|
|
171
|
-
schema:
|
|
170
|
+
typeSymbol: 'dsh-plugin-shop#shop/outdated:result',
|
|
171
|
+
schema: dsh_plugin_shop_shop_outdated_result$schema,
|
|
172
172
|
},
|
|
173
173
|
sourceLocation: {"file":"packages/dsh-plugin-shop/src/host/index.ts","line":248,"column":9},
|
|
174
174
|
},
|
|
175
175
|
{
|
|
176
|
-
id: 'dsh-plugin-shop#
|
|
177
|
-
service: '
|
|
178
|
-
namespace: '
|
|
176
|
+
id: 'dsh-plugin-shop#shop/setEnabled',
|
|
177
|
+
service: 'shop',
|
|
178
|
+
namespace: 'shop',
|
|
179
179
|
method: 'setEnabled',
|
|
180
180
|
invocation: { kind: 'direct' },
|
|
181
181
|
parameters: [
|
|
@@ -185,15 +185,15 @@ export const TYPERT = {
|
|
|
185
185
|
source: 'json',
|
|
186
186
|
codec: {
|
|
187
187
|
mode: 'strict',
|
|
188
|
-
typeSymbol: 'dsh-plugin-shop#
|
|
189
|
-
schema:
|
|
188
|
+
typeSymbol: 'dsh-plugin-shop#shop/setEnabled:args',
|
|
189
|
+
schema: dsh_plugin_shop_shop_setEnabled_parameter_0$schema,
|
|
190
190
|
},
|
|
191
191
|
},
|
|
192
192
|
],
|
|
193
193
|
result: {
|
|
194
194
|
mode: 'strict',
|
|
195
|
-
typeSymbol: 'dsh-plugin-shop/types#
|
|
196
|
-
schema:
|
|
195
|
+
typeSymbol: 'dsh-plugin-shop/types#ShopSetEnabledResult',
|
|
196
|
+
schema: dsh_plugin_shop_shop_setEnabled_result$schema,
|
|
197
197
|
},
|
|
198
198
|
sourceLocation: {"file":"packages/dsh-plugin-shop/src/host/index.ts","line":146,"column":3},
|
|
199
199
|
},
|
|
@@ -201,51 +201,51 @@ export const TYPERT = {
|
|
|
201
201
|
model: {
|
|
202
202
|
"services": [
|
|
203
203
|
{
|
|
204
|
-
"description": "Remote-only service exposing the
|
|
205
|
-
"summary": "Remote-only service exposing the
|
|
204
|
+
"description": "Remote-only service exposing the shop Remote methods of §7.3.",
|
|
205
|
+
"summary": "Remote-only service exposing the shop Remote methods of §7.3.",
|
|
206
206
|
"tags": [
|
|
207
207
|
{
|
|
208
208
|
"name": "typert",
|
|
209
|
-
"comment": "service
|
|
210
|
-
"text": "@typert service
|
|
209
|
+
"comment": "service shop",
|
|
210
|
+
"text": "@typert service shop"
|
|
211
211
|
}
|
|
212
212
|
],
|
|
213
|
-
"jsDoc": "/** Remote-only service exposing the
|
|
214
|
-
"key": "
|
|
215
|
-
"exportName": "
|
|
213
|
+
"jsDoc": "/** Remote-only service exposing the shop Remote methods of §7.3.\n *\n * @typert service shop */",
|
|
214
|
+
"key": "shop",
|
|
215
|
+
"exportName": "ShopGateway",
|
|
216
216
|
"members": [
|
|
217
217
|
{
|
|
218
218
|
"kind": "method",
|
|
219
219
|
"name": "setEnabled",
|
|
220
|
-
"signature": "@Remote('setEnabled') setEnabled(args: { name: string; enabled: boolean }):
|
|
220
|
+
"signature": "@Remote('setEnabled') setEnabled(args: { name: string; enabled: boolean }): ShopSetEnabledResult",
|
|
221
221
|
"summary": "Enable or disable one installed plugin, hot (§8): a disable writes the row to the user layer, an enable drops it again so the bundle default rules — the CLI's watchUserPatches applies either through HMR.",
|
|
222
222
|
"jsDoc": "/** Enable or disable one installed plugin, hot (§8): a disable writes the\n * row to the user layer, an enable drops it again so the bundle default\n * rules — the CLI's watchUserPatches applies either through HMR. */"
|
|
223
223
|
},
|
|
224
224
|
{
|
|
225
225
|
"kind": "method",
|
|
226
226
|
"name": "catalog",
|
|
227
|
-
"signature": "@Remote('catalog') async catalog(args?: { refresh?: boolean }): Promise<
|
|
227
|
+
"signature": "@Remote('catalog') async catalog(args?: { refresh?: boolean }): Promise<ShopCatalogResult>",
|
|
228
228
|
"summary": "Browse the catalog (§7.3): cached snapshot, refreshed on demand.",
|
|
229
229
|
"jsDoc": "/** Browse the catalog (§7.3): cached snapshot, refreshed on demand. */"
|
|
230
230
|
},
|
|
231
231
|
{
|
|
232
232
|
"kind": "method",
|
|
233
233
|
"name": "install",
|
|
234
|
-
"signature": "@Remote('installStart') async install(args: InstallArgs): Promise<
|
|
234
|
+
"signature": "@Remote('installStart') async install(args: InstallArgs): Promise<ShopInstallResult>",
|
|
235
235
|
"summary": "Install one cataloged version into the profile (§7.2).",
|
|
236
236
|
"jsDoc": "/**\n * Install one cataloged version into the profile (§7.2). The four rejection\n * paths run against this Host's snapshot before anything is spawned; only a\n * passing request reaches the executor.\n */"
|
|
237
237
|
},
|
|
238
238
|
{
|
|
239
239
|
"kind": "method",
|
|
240
240
|
"name": "installStatus",
|
|
241
|
-
"signature": "@Remote('installStatus') installStatus(args: { installId: string }):
|
|
241
|
+
"signature": "@Remote('installStatus') installStatus(args: { installId: string }): ShopInstallStatusResult",
|
|
242
242
|
"summary": "Poll one install's progress (§7.2); unknown ids report `found: false`.",
|
|
243
243
|
"jsDoc": "/** Poll one install's progress (§7.2); unknown ids report `found: false`. */"
|
|
244
244
|
},
|
|
245
245
|
{
|
|
246
246
|
"kind": "method",
|
|
247
247
|
"name": "outdated",
|
|
248
|
-
"signature": "@Remote('outdated') async outdated(): Promise<
|
|
248
|
+
"signature": "@Remote('outdated') async outdated(): Promise<ShopOutdatedEntry[]>",
|
|
249
249
|
"summary": "Installed plugins whose installed version is older than the catalog's (§7.3).",
|
|
250
250
|
"jsDoc": "/** Installed plugins whose installed version is older than the catalog's (§7.3). */"
|
|
251
251
|
}
|
|
@@ -284,24 +284,24 @@ export const TYPERT = {
|
|
|
284
284
|
"declaration": "export interface InstallStatus {\n state: InstallState;\n log: string[];\n needsRestart?: boolean;\n detail?: string;\n}"
|
|
285
285
|
},
|
|
286
286
|
{
|
|
287
|
-
"name": "
|
|
288
|
-
"declaration": "export interface
|
|
287
|
+
"name": "ShopCatalogResult",
|
|
288
|
+
"declaration": "export interface ShopCatalogResult {\n schemaVersion: number;\n builtAt: string;\n stale: boolean;\n plugins: CatalogEntry[];\n denied: DeniedEntry[];\n}"
|
|
289
289
|
},
|
|
290
290
|
{
|
|
291
|
-
"name": "
|
|
292
|
-
"declaration": "export type
|
|
291
|
+
"name": "ShopInstallResult",
|
|
292
|
+
"declaration": "export type ShopInstallResult = { ok: true; installId: string; } | { ok: false; code: InstallRejectionCode; detail: string; };"
|
|
293
293
|
},
|
|
294
294
|
{
|
|
295
|
-
"name": "
|
|
296
|
-
"declaration": "export interface
|
|
295
|
+
"name": "ShopInstallStatusResult",
|
|
296
|
+
"declaration": "export interface ShopInstallStatusResult extends InstallStatus {\n found: boolean;\n}"
|
|
297
297
|
},
|
|
298
298
|
{
|
|
299
|
-
"name": "
|
|
300
|
-
"declaration": "export interface
|
|
299
|
+
"name": "ShopOutdatedEntry",
|
|
300
|
+
"declaration": "export interface ShopOutdatedEntry {\n name: string;\n installed: string;\n latest: string;\n}"
|
|
301
301
|
},
|
|
302
302
|
{
|
|
303
|
-
"name": "
|
|
304
|
-
"declaration": "export interface
|
|
303
|
+
"name": "ShopSetEnabledResult",
|
|
304
|
+
"declaration": "export interface ShopSetEnabledResult {\n ok: boolean;\n detail?: string;\n}"
|
|
305
305
|
}
|
|
306
306
|
]
|
|
307
307
|
}
|
|
@@ -3,25 +3,25 @@ import type {
|
|
|
3
3
|
RemoteResult,
|
|
4
4
|
TypertRemoteContribution,
|
|
5
5
|
} from '@deepseek-ai/dsh-typert-protocol'
|
|
6
|
-
import type { InstallArgs,
|
|
6
|
+
import type { InstallArgs, ShopCatalogResult, ShopInstallResult, ShopInstallStatusResult, ShopOutdatedEntry, ShopSetEnabledResult } from 'dsh-plugin-shop/types'
|
|
7
7
|
|
|
8
8
|
declare module '@deepseek-ai/dsh-typert-protocol' {
|
|
9
|
-
interface TypertRemoteNamespace$
|
|
10
|
-
catalog: (args?: { refresh?: boolean; }) => Promise<RemoteResult<
|
|
11
|
-
installStart: (args: InstallArgs) => Promise<RemoteResult<
|
|
12
|
-
installStatus: (args: { installId: string; }) => Promise<RemoteResult<
|
|
13
|
-
outdated: () => Promise<RemoteResult<
|
|
14
|
-
setEnabled: (args: { name: string; enabled: boolean; }) => Promise<RemoteResult<
|
|
9
|
+
interface TypertRemoteNamespace$73686f70 {
|
|
10
|
+
catalog: (args?: { refresh?: boolean; }) => Promise<RemoteResult<ShopCatalogResult>>
|
|
11
|
+
installStart: (args: InstallArgs) => Promise<RemoteResult<ShopInstallResult>>
|
|
12
|
+
installStatus: (args: { installId: string; }) => Promise<RemoteResult<ShopInstallStatusResult>>
|
|
13
|
+
outdated: () => Promise<RemoteResult<ShopOutdatedEntry[]>>
|
|
14
|
+
setEnabled: (args: { name: string; enabled: boolean; }) => Promise<RemoteResult<ShopSetEnabledResult>>
|
|
15
15
|
}
|
|
16
16
|
interface TypertRemoteMap {
|
|
17
|
-
'
|
|
18
|
-
'
|
|
19
|
-
'
|
|
20
|
-
'
|
|
21
|
-
'
|
|
17
|
+
'shop/catalog': (args?: { refresh?: boolean; }) => Promise<RemoteResult<ShopCatalogResult>>
|
|
18
|
+
'shop/installStart': (args: InstallArgs) => Promise<RemoteResult<ShopInstallResult>>
|
|
19
|
+
'shop/installStatus': (args: { installId: string; }) => Promise<RemoteResult<ShopInstallStatusResult>>
|
|
20
|
+
'shop/outdated': () => Promise<RemoteResult<ShopOutdatedEntry[]>>
|
|
21
|
+
'shop/setEnabled': (args: { name: string; enabled: boolean; }) => Promise<RemoteResult<ShopSetEnabledResult>>
|
|
22
22
|
}
|
|
23
23
|
interface TypertRemoteNamespaceMap {
|
|
24
|
-
'
|
|
24
|
+
'shop': TypertRemoteNamespace$73686f70
|
|
25
25
|
}
|
|
26
26
|
}
|
|
27
27
|
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
/* Generated by @deepseek-ai/dsh-typert-generator from the Host FaceModel — do not edit. */
|
|
2
2
|
import { z } from 'zod'
|
|
3
3
|
|
|
4
|
-
const
|
|
4
|
+
const dsh_plugin_shop_shop_catalog_parameter_0$schema = z.union([z.undefined(), z.object({
|
|
5
5
|
'refresh': z.union([z.undefined(), z.literal(false), z.literal(true)]).optional(),
|
|
6
6
|
})])
|
|
7
|
-
const
|
|
7
|
+
const dsh_plugin_shop_shop_catalog_result$schema = z.object({
|
|
8
8
|
'schemaVersion': z.number(),
|
|
9
9
|
'builtAt': z.string(),
|
|
10
10
|
'stale': z.boolean(),
|
|
@@ -37,12 +37,12 @@ const dsh_plugin_shop_store_catalog_result$schema = z.object({
|
|
|
37
37
|
'detail': z.string(),
|
|
38
38
|
})),
|
|
39
39
|
})
|
|
40
|
-
const
|
|
40
|
+
const dsh_plugin_shop_shop_installStart_parameter_0$schema = z.object({
|
|
41
41
|
'name': z.string(),
|
|
42
42
|
'version': z.string(),
|
|
43
43
|
'acknowledged': z.union([z.undefined(), z.literal(false), z.literal(true)]).optional(),
|
|
44
44
|
})
|
|
45
|
-
const
|
|
45
|
+
const dsh_plugin_shop_shop_installStart_result$schema = z.union([z.object({
|
|
46
46
|
'ok': z.literal(true),
|
|
47
47
|
'installId': z.string(),
|
|
48
48
|
}), z.object({
|
|
@@ -50,26 +50,26 @@ const dsh_plugin_shop_store_installStart_result$schema = z.union([z.object({
|
|
|
50
50
|
'code': z.union([z.literal("not-in-catalog"), z.literal("denied"), z.literal("version-mismatch"), z.literal("needs-acknowledgement")]),
|
|
51
51
|
'detail': z.string(),
|
|
52
52
|
})])
|
|
53
|
-
const
|
|
53
|
+
const dsh_plugin_shop_shop_installStatus_parameter_0$schema = z.object({
|
|
54
54
|
'installId': z.string(),
|
|
55
55
|
})
|
|
56
|
-
const
|
|
56
|
+
const dsh_plugin_shop_shop_installStatus_result$schema = z.object({
|
|
57
57
|
'found': z.boolean(),
|
|
58
58
|
'state': z.union([z.literal("running"), z.literal("done"), z.literal("failed")]),
|
|
59
59
|
'log': z.array(z.string()),
|
|
60
60
|
'needsRestart': z.union([z.undefined(), z.literal(false), z.literal(true)]).optional(),
|
|
61
61
|
'detail': z.union([z.undefined(), z.string()]).optional(),
|
|
62
62
|
})
|
|
63
|
-
const
|
|
63
|
+
const dsh_plugin_shop_shop_outdated_result$schema = z.array(z.object({
|
|
64
64
|
'name': z.string(),
|
|
65
65
|
'installed': z.string(),
|
|
66
66
|
'latest': z.string(),
|
|
67
67
|
}))
|
|
68
|
-
const
|
|
68
|
+
const dsh_plugin_shop_shop_setEnabled_parameter_0$schema = z.object({
|
|
69
69
|
'name': z.string(),
|
|
70
70
|
'enabled': z.boolean(),
|
|
71
71
|
})
|
|
72
|
-
const
|
|
72
|
+
const dsh_plugin_shop_shop_setEnabled_result$schema = z.object({
|
|
73
73
|
'ok': z.boolean(),
|
|
74
74
|
'detail': z.union([z.undefined(), z.string()]).optional(),
|
|
75
75
|
})
|
|
@@ -78,9 +78,9 @@ export const TYPERT_REMOTE = {
|
|
|
78
78
|
package: 'dsh-plugin-shop',
|
|
79
79
|
descriptors: [
|
|
80
80
|
{
|
|
81
|
-
id: 'dsh-plugin-shop#
|
|
82
|
-
service: '
|
|
83
|
-
namespace: '
|
|
81
|
+
id: 'dsh-plugin-shop#shop/catalog',
|
|
82
|
+
service: 'shop',
|
|
83
|
+
namespace: 'shop',
|
|
84
84
|
method: 'catalog',
|
|
85
85
|
invocation: { kind: 'direct' },
|
|
86
86
|
parameters: [
|
|
@@ -91,22 +91,22 @@ export const TYPERT_REMOTE = {
|
|
|
91
91
|
acceptsUndefined: true,
|
|
92
92
|
codec: {
|
|
93
93
|
mode: 'strict',
|
|
94
|
-
typeSymbol: 'dsh-plugin-shop#
|
|
95
|
-
schema:
|
|
94
|
+
typeSymbol: 'dsh-plugin-shop#shop/catalog:args',
|
|
95
|
+
schema: dsh_plugin_shop_shop_catalog_parameter_0$schema,
|
|
96
96
|
},
|
|
97
97
|
},
|
|
98
98
|
],
|
|
99
99
|
result: {
|
|
100
100
|
mode: 'strict',
|
|
101
|
-
typeSymbol: 'dsh-plugin-shop/types#
|
|
102
|
-
schema:
|
|
101
|
+
typeSymbol: 'dsh-plugin-shop/types#ShopCatalogResult',
|
|
102
|
+
schema: dsh_plugin_shop_shop_catalog_result$schema,
|
|
103
103
|
},
|
|
104
104
|
sourceLocation: {"file":"packages/dsh-plugin-shop/src/host/index.ts","line":177,"column":9},
|
|
105
105
|
},
|
|
106
106
|
{
|
|
107
|
-
id: 'dsh-plugin-shop#
|
|
108
|
-
service: '
|
|
109
|
-
namespace: '
|
|
107
|
+
id: 'dsh-plugin-shop#shop/installStart',
|
|
108
|
+
service: 'shop',
|
|
109
|
+
namespace: 'shop',
|
|
110
110
|
method: 'installStart',
|
|
111
111
|
implementation: 'install',
|
|
112
112
|
invocation: { kind: 'direct' },
|
|
@@ -118,21 +118,21 @@ export const TYPERT_REMOTE = {
|
|
|
118
118
|
codec: {
|
|
119
119
|
mode: 'strict',
|
|
120
120
|
typeSymbol: 'dsh-plugin-shop/types#InstallArgs',
|
|
121
|
-
schema:
|
|
121
|
+
schema: dsh_plugin_shop_shop_installStart_parameter_0$schema,
|
|
122
122
|
},
|
|
123
123
|
},
|
|
124
124
|
],
|
|
125
125
|
result: {
|
|
126
126
|
mode: 'strict',
|
|
127
|
-
typeSymbol: 'dsh-plugin-shop/types#
|
|
128
|
-
schema:
|
|
127
|
+
typeSymbol: 'dsh-plugin-shop/types#ShopInstallResult',
|
|
128
|
+
schema: dsh_plugin_shop_shop_installStart_result$schema,
|
|
129
129
|
},
|
|
130
130
|
sourceLocation: {"file":"packages/dsh-plugin-shop/src/host/index.ts","line":202,"column":9},
|
|
131
131
|
},
|
|
132
132
|
{
|
|
133
|
-
id: 'dsh-plugin-shop#
|
|
134
|
-
service: '
|
|
135
|
-
namespace: '
|
|
133
|
+
id: 'dsh-plugin-shop#shop/installStatus',
|
|
134
|
+
service: 'shop',
|
|
135
|
+
namespace: 'shop',
|
|
136
136
|
method: 'installStatus',
|
|
137
137
|
invocation: { kind: 'direct' },
|
|
138
138
|
parameters: [
|
|
@@ -142,37 +142,37 @@ export const TYPERT_REMOTE = {
|
|
|
142
142
|
source: 'json',
|
|
143
143
|
codec: {
|
|
144
144
|
mode: 'strict',
|
|
145
|
-
typeSymbol: 'dsh-plugin-shop#
|
|
146
|
-
schema:
|
|
145
|
+
typeSymbol: 'dsh-plugin-shop#shop/installStatus:args',
|
|
146
|
+
schema: dsh_plugin_shop_shop_installStatus_parameter_0$schema,
|
|
147
147
|
},
|
|
148
148
|
},
|
|
149
149
|
],
|
|
150
150
|
result: {
|
|
151
151
|
mode: 'strict',
|
|
152
|
-
typeSymbol: 'dsh-plugin-shop/types#
|
|
153
|
-
schema:
|
|
152
|
+
typeSymbol: 'dsh-plugin-shop/types#ShopInstallStatusResult',
|
|
153
|
+
schema: dsh_plugin_shop_shop_installStatus_result$schema,
|
|
154
154
|
},
|
|
155
155
|
sourceLocation: {"file":"packages/dsh-plugin-shop/src/host/index.ts","line":240,"column":3},
|
|
156
156
|
},
|
|
157
157
|
{
|
|
158
|
-
id: 'dsh-plugin-shop#
|
|
159
|
-
service: '
|
|
160
|
-
namespace: '
|
|
158
|
+
id: 'dsh-plugin-shop#shop/outdated',
|
|
159
|
+
service: 'shop',
|
|
160
|
+
namespace: 'shop',
|
|
161
161
|
method: 'outdated',
|
|
162
162
|
invocation: { kind: 'direct' },
|
|
163
163
|
parameters: [
|
|
164
164
|
],
|
|
165
165
|
result: {
|
|
166
166
|
mode: 'strict',
|
|
167
|
-
typeSymbol: 'dsh-plugin-shop#
|
|
168
|
-
schema:
|
|
167
|
+
typeSymbol: 'dsh-plugin-shop#shop/outdated:result',
|
|
168
|
+
schema: dsh_plugin_shop_shop_outdated_result$schema,
|
|
169
169
|
},
|
|
170
170
|
sourceLocation: {"file":"packages/dsh-plugin-shop/src/host/index.ts","line":248,"column":9},
|
|
171
171
|
},
|
|
172
172
|
{
|
|
173
|
-
id: 'dsh-plugin-shop#
|
|
174
|
-
service: '
|
|
175
|
-
namespace: '
|
|
173
|
+
id: 'dsh-plugin-shop#shop/setEnabled',
|
|
174
|
+
service: 'shop',
|
|
175
|
+
namespace: 'shop',
|
|
176
176
|
method: 'setEnabled',
|
|
177
177
|
invocation: { kind: 'direct' },
|
|
178
178
|
parameters: [
|
|
@@ -182,15 +182,15 @@ export const TYPERT_REMOTE = {
|
|
|
182
182
|
source: 'json',
|
|
183
183
|
codec: {
|
|
184
184
|
mode: 'strict',
|
|
185
|
-
typeSymbol: 'dsh-plugin-shop#
|
|
186
|
-
schema:
|
|
185
|
+
typeSymbol: 'dsh-plugin-shop#shop/setEnabled:args',
|
|
186
|
+
schema: dsh_plugin_shop_shop_setEnabled_parameter_0$schema,
|
|
187
187
|
},
|
|
188
188
|
},
|
|
189
189
|
],
|
|
190
190
|
result: {
|
|
191
191
|
mode: 'strict',
|
|
192
|
-
typeSymbol: 'dsh-plugin-shop/types#
|
|
193
|
-
schema:
|
|
192
|
+
typeSymbol: 'dsh-plugin-shop/types#ShopSetEnabledResult',
|
|
193
|
+
schema: dsh_plugin_shop_shop_setEnabled_result$schema,
|
|
194
194
|
},
|
|
195
195
|
sourceLocation: {"file":"packages/dsh-plugin-shop/src/host/index.ts","line":146,"column":3},
|
|
196
196
|
},
|