dsh-plugin-shop 0.8.3 → 0.8.4-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,4 +1,5 @@
1
1
  /* Generated by @deepseek-ai/dsh-typert-generator from FaceModel — do not edit. */
2
+ /* dsh-plugin-shop: create() added beside every schema for harness 0.1.7 (scripts/typert-dual-codecs.ts). */
2
3
  import { z } from 'zod'
3
4
 
4
5
  const dsh_plugin_shop_shop_catalog_parameter_0$schema = z.union([z.undefined(), z.object({
@@ -44,6 +45,11 @@ const dsh_plugin_shop_shop_catalog_result$schema = z.object({
44
45
  })]).optional(),
45
46
  'added': z.union([z.undefined(), z.string()]).optional(),
46
47
  'peers': z.union([z.undefined(), z.array(z.string())]).optional(),
48
+ 'compatibility': z.union([z.undefined(), z.object({
49
+ 'dsh': z.union([z.undefined(), z.string()]).optional(),
50
+ 'profiles': z.union([z.undefined(), z.array(z.string())]).optional(),
51
+ })]).optional(),
52
+ 'dshPeers': z.union([z.undefined(), z.record(z.string(), z.string())]).optional(),
47
53
  'unpackedSize': z.union([z.undefined(), z.number()]).optional(),
48
54
  'installSize': z.union([z.undefined(), z.number()]).optional(),
49
55
  })),
@@ -55,6 +61,21 @@ const dsh_plugin_shop_shop_catalog_result$schema = z.object({
55
61
  'notAShop': z.union([z.undefined(), z.array(z.string())]).optional(),
56
62
  'stars': z.record(z.string(), z.number()),
57
63
  'incompatible': z.record(z.string(), z.array(z.string())),
64
+ 'incompatibleHarness': z.record(z.string(), z.object({
65
+ 'dsh': z.union([z.undefined(), z.object({
66
+ 'range': z.string(),
67
+ 'running': z.string(),
68
+ })]).optional(),
69
+ 'profile': z.union([z.undefined(), z.object({
70
+ 'declared': z.array(z.string()),
71
+ 'running': z.string(),
72
+ })]).optional(),
73
+ 'peers': z.union([z.undefined(), z.object({
74
+ 'refused': z.record(z.string(), z.string()),
75
+ 'running': z.string(),
76
+ 'allowCommand': z.union([z.literal(null), z.string()]),
77
+ })]).optional(),
78
+ })),
58
79
  })
59
80
  const dsh_plugin_shop_shop_installed_result$schema = z.array(z.object({
60
81
  'name': z.string(),
@@ -81,7 +102,7 @@ const dsh_plugin_shop_shop_installStart_result$schema = z.union([z.object({
81
102
  'state': z.union([z.literal("downloading"), z.literal("running"), z.literal("done"), z.literal("failed")]),
82
103
  }), z.object({
83
104
  'ok': z.literal(false),
84
- 'code': z.union([z.literal("not-in-catalog"), z.literal("denied"), z.literal("version-mismatch"), z.literal("needs-acknowledgement"), z.literal("tarball-integrity"), z.literal("ambiguous-identity"), z.literal("name-taken")]),
105
+ 'code': z.union([z.literal("not-in-catalog"), z.literal("denied"), z.literal("version-mismatch"), z.literal("needs-acknowledgement"), z.literal("tarball-integrity"), z.literal("ambiguous-identity"), z.literal("name-taken"), z.literal("desktop-profile")]),
85
106
  'detail': z.string(),
86
107
  })])
87
108
  const dsh_plugin_shop_shop_installStatus_parameter_0$schema = z.object({
@@ -92,11 +113,12 @@ const dsh_plugin_shop_shop_installStatus_result$schema = z.object({
92
113
  'state': z.union([z.literal("downloading"), z.literal("running"), z.literal("done"), z.literal("failed")]),
93
114
  'log': z.array(z.string()),
94
115
  'activation': z.union([z.undefined(), z.literal("live"), z.literal("reload"), z.literal("restart")]).optional(),
95
- 'restartReason': z.union([z.undefined(), z.literal("no-patch"), z.literal("not-simple"), z.literal("host-unsupported"), z.literal("timeout"), z.literal("mount-failed"), z.literal("client-half")]).optional(),
116
+ 'restartReason': z.union([z.undefined(), z.literal("no-patch"), z.literal("not-simple"), z.literal("host-unsupported"), z.literal("timeout"), z.literal("mount-failed"), z.literal("already-loaded")]).optional(),
96
117
  'detail': z.union([z.undefined(), z.string()]).optional(),
97
118
  })
98
119
  const dsh_plugin_shop_shop_restart_result$schema = z.union([z.object({
99
120
  'ok': z.literal(true),
121
+ 'logFile': z.union([z.undefined(), z.string()]).optional(),
100
122
  }), z.object({
101
123
  'ok': z.literal(false),
102
124
  'detail': z.string(),
@@ -137,7 +159,8 @@ const dsh_plugin_shop_shop_version_result$schema = z.object({
137
159
  'installed': z.string(),
138
160
  'latest': z.union([z.literal(null), z.string()]),
139
161
  'outdated': z.boolean(),
140
- 'restartBlocked': z.union([z.literal(null), z.literal("windows"), z.literal("systemd"), z.literal("port-zero")]),
162
+ 'restartBlocked': z.union([z.literal(null), z.literal("desktop"), z.literal("windows"), z.literal("systemd"), z.literal("port-zero")]),
163
+ 'pendingVersion': z.union([z.undefined(), z.literal(null), z.string()]).optional(),
141
164
  })
142
165
 
143
166
  export const TYPERT = {
@@ -162,6 +185,7 @@ export const TYPERT = {
162
185
  mode: 'strict',
163
186
  typeSymbol: 'dsh-plugin-shop#shop/catalog:args',
164
187
  schema: dsh_plugin_shop_shop_catalog_parameter_0$schema,
188
+ create: () => dsh_plugin_shop_shop_catalog_parameter_0$schema,
165
189
  },
166
190
  },
167
191
  ],
@@ -169,8 +193,9 @@ export const TYPERT = {
169
193
  mode: 'strict',
170
194
  typeSymbol: 'dsh-plugin-shop/types#ShopCatalogResult',
171
195
  schema: dsh_plugin_shop_shop_catalog_result$schema,
196
+ create: () => dsh_plugin_shop_shop_catalog_result$schema,
172
197
  },
173
- sourceLocation: {"file":"packages/dsh-plugin-shop/src/host/index.ts","line":867,"column":9},
198
+ sourceLocation: {"file":"packages/dsh-plugin-shop/src/host/index.ts","line":1253,"column":9},
174
199
  },
175
200
  {
176
201
  id: 'dsh-plugin-shop#shop/installed',
@@ -184,8 +209,9 @@ export const TYPERT = {
184
209
  mode: 'strict',
185
210
  typeSymbol: 'dsh-plugin-shop#shop/installed:result',
186
211
  schema: dsh_plugin_shop_shop_installed_result$schema,
212
+ create: () => dsh_plugin_shop_shop_installed_result$schema,
187
213
  },
188
- sourceLocation: {"file":"packages/dsh-plugin-shop/src/host/index.ts","line":1140,"column":9},
214
+ sourceLocation: {"file":"packages/dsh-plugin-shop/src/host/index.ts","line":1720,"column":9},
189
215
  },
190
216
  {
191
217
  id: 'dsh-plugin-shop#shop/installedSpecs',
@@ -199,8 +225,9 @@ export const TYPERT = {
199
225
  mode: 'strict',
200
226
  typeSymbol: 'dsh-plugin-shop#shop/installedSpecs:result',
201
227
  schema: dsh_plugin_shop_shop_installedSpecs_result$schema,
228
+ create: () => dsh_plugin_shop_shop_installedSpecs_result$schema,
202
229
  },
203
- sourceLocation: {"file":"packages/dsh-plugin-shop/src/host/index.ts","line":1131,"column":9},
230
+ sourceLocation: {"file":"packages/dsh-plugin-shop/src/host/index.ts","line":1711,"column":9},
204
231
  },
205
232
  {
206
233
  id: 'dsh-plugin-shop#shop/installStart',
@@ -218,6 +245,7 @@ export const TYPERT = {
218
245
  mode: 'strict',
219
246
  typeSymbol: 'dsh-plugin-shop/types#InstallArgs',
220
247
  schema: dsh_plugin_shop_shop_installStart_parameter_0$schema,
248
+ create: () => dsh_plugin_shop_shop_installStart_parameter_0$schema,
221
249
  },
222
250
  },
223
251
  ],
@@ -225,8 +253,9 @@ export const TYPERT = {
225
253
  mode: 'strict',
226
254
  typeSymbol: 'dsh-plugin-shop/types#ShopInstallResult',
227
255
  schema: dsh_plugin_shop_shop_installStart_result$schema,
256
+ create: () => dsh_plugin_shop_shop_installStart_result$schema,
228
257
  },
229
- sourceLocation: {"file":"packages/dsh-plugin-shop/src/host/index.ts","line":915,"column":9},
258
+ sourceLocation: {"file":"packages/dsh-plugin-shop/src/host/index.ts","line":1379,"column":9},
230
259
  },
231
260
  {
232
261
  id: 'dsh-plugin-shop#shop/installStatus',
@@ -243,6 +272,7 @@ export const TYPERT = {
243
272
  mode: 'strict',
244
273
  typeSymbol: 'dsh-plugin-shop#shop/installStatus:args',
245
274
  schema: dsh_plugin_shop_shop_installStatus_parameter_0$schema,
275
+ create: () => dsh_plugin_shop_shop_installStatus_parameter_0$schema,
246
276
  },
247
277
  },
248
278
  ],
@@ -250,8 +280,9 @@ export const TYPERT = {
250
280
  mode: 'strict',
251
281
  typeSymbol: 'dsh-plugin-shop/types#ShopInstallStatusResult',
252
282
  schema: dsh_plugin_shop_shop_installStatus_result$schema,
283
+ create: () => dsh_plugin_shop_shop_installStatus_result$schema,
253
284
  },
254
- sourceLocation: {"file":"packages/dsh-plugin-shop/src/host/index.ts","line":1107,"column":3},
285
+ sourceLocation: {"file":"packages/dsh-plugin-shop/src/host/index.ts","line":1687,"column":3},
255
286
  },
256
287
  {
257
288
  id: 'dsh-plugin-shop#shop/restart',
@@ -265,8 +296,9 @@ export const TYPERT = {
265
296
  mode: 'strict',
266
297
  typeSymbol: 'dsh-plugin-shop/types#ShopRestartResult',
267
298
  schema: dsh_plugin_shop_shop_restart_result$schema,
299
+ create: () => dsh_plugin_shop_shop_restart_result$schema,
268
300
  },
269
- sourceLocation: {"file":"packages/dsh-plugin-shop/src/host/index.ts","line":1319,"column":9},
301
+ sourceLocation: {"file":"packages/dsh-plugin-shop/src/host/index.ts","line":1916,"column":9},
270
302
  },
271
303
  {
272
304
  id: 'dsh-plugin-shop#shop/setEnabled',
@@ -283,6 +315,7 @@ export const TYPERT = {
283
315
  mode: 'strict',
284
316
  typeSymbol: 'dsh-plugin-shop#shop/setEnabled:args',
285
317
  schema: dsh_plugin_shop_shop_setEnabled_parameter_0$schema,
318
+ create: () => dsh_plugin_shop_shop_setEnabled_parameter_0$schema,
286
319
  },
287
320
  },
288
321
  ],
@@ -290,8 +323,9 @@ export const TYPERT = {
290
323
  mode: 'strict',
291
324
  typeSymbol: 'dsh-plugin-shop/types#ShopSetEnabledResult',
292
325
  schema: dsh_plugin_shop_shop_setEnabled_result$schema,
326
+ create: () => dsh_plugin_shop_shop_setEnabled_result$schema,
293
327
  },
294
- sourceLocation: {"file":"packages/dsh-plugin-shop/src/host/index.ts","line":692,"column":9},
328
+ sourceLocation: {"file":"packages/dsh-plugin-shop/src/host/index.ts","line":924,"column":9},
295
329
  },
296
330
  {
297
331
  id: 'dsh-plugin-shop#shop/uninstallStart',
@@ -309,6 +343,7 @@ export const TYPERT = {
309
343
  mode: 'strict',
310
344
  typeSymbol: 'dsh-plugin-shop#shop/uninstallStart:args',
311
345
  schema: dsh_plugin_shop_shop_uninstallStart_parameter_0$schema,
346
+ create: () => dsh_plugin_shop_shop_uninstallStart_parameter_0$schema,
312
347
  },
313
348
  },
314
349
  ],
@@ -316,8 +351,9 @@ export const TYPERT = {
316
351
  mode: 'strict',
317
352
  typeSymbol: 'dsh-plugin-shop/types#ShopUninstallResult',
318
353
  schema: dsh_plugin_shop_shop_uninstallStart_result$schema,
354
+ create: () => dsh_plugin_shop_shop_uninstallStart_result$schema,
319
355
  },
320
- sourceLocation: {"file":"packages/dsh-plugin-shop/src/host/index.ts","line":1241,"column":9},
356
+ sourceLocation: {"file":"packages/dsh-plugin-shop/src/host/index.ts","line":1827,"column":9},
321
357
  },
322
358
  {
323
359
  id: 'dsh-plugin-shop#shop/updateStart',
@@ -334,6 +370,7 @@ export const TYPERT = {
334
370
  mode: 'strict',
335
371
  typeSymbol: 'dsh-plugin-shop#shop/updateStart:args',
336
372
  schema: dsh_plugin_shop_shop_updateStart_parameter_0$schema,
373
+ create: () => dsh_plugin_shop_shop_updateStart_parameter_0$schema,
337
374
  },
338
375
  },
339
376
  ],
@@ -341,8 +378,9 @@ export const TYPERT = {
341
378
  mode: 'strict',
342
379
  typeSymbol: 'dsh-plugin-shop/types#ShopUpdateResult',
343
380
  schema: dsh_plugin_shop_shop_updateStart_result$schema,
381
+ create: () => dsh_plugin_shop_shop_updateStart_result$schema,
344
382
  },
345
- sourceLocation: {"file":"packages/dsh-plugin-shop/src/host/index.ts","line":1387,"column":9},
383
+ sourceLocation: {"file":"packages/dsh-plugin-shop/src/host/index.ts","line":2020,"column":9},
346
384
  },
347
385
  {
348
386
  id: 'dsh-plugin-shop#shop/version',
@@ -356,8 +394,9 @@ export const TYPERT = {
356
394
  mode: 'strict',
357
395
  typeSymbol: 'dsh-plugin-shop/types#ShopVersionResult',
358
396
  schema: dsh_plugin_shop_shop_version_result$schema,
397
+ create: () => dsh_plugin_shop_shop_version_result$schema,
359
398
  },
360
- sourceLocation: {"file":"packages/dsh-plugin-shop/src/host/index.ts","line":1371,"column":9},
399
+ sourceLocation: {"file":"packages/dsh-plugin-shop/src/host/index.ts","line":1978,"column":9},
361
400
  },
362
401
  ],
363
402
  model: {
@@ -380,8 +419,8 @@ export const TYPERT = {
380
419
  "kind": "method",
381
420
  "name": "setEnabled",
382
421
  "signature": "@Remote('setEnabled') async setEnabled(args: { name: string; enabled: boolean }): Promise<ShopSetEnabledResult>",
383
- "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.",
384
- "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. The shop's\n * own row and the framework's bundles are never toggleable: disabling the\n * host chain would break HMR itself. */"
422
+ "summary": "Enable or disable one installed plugin, hot (§8): the write sets the `disabled` key of each owned entry's row in the user layer and changes nothing else there (design 2026-09-26-market-borrowings §2) — the CLI's watchUserPatches applies it through HMR.",
423
+ "jsDoc": "/** Enable or disable one installed plugin, hot (§8): the write sets the\n * `disabled` key of each owned entry's row in the user layer and changes\n * nothing else there (design 2026-09-26-market-borrowings §2) — the CLI's\n * watchUserPatches applies it through HMR. The shop's own row and the\n * framework's bundles are never toggleable: disabling the host chain would\n * break HMR itself. */"
385
424
  },
386
425
  {
387
426
  "kind": "method",
@@ -454,7 +493,7 @@ export const TYPERT = {
454
493
  },
455
494
  {
456
495
  "name": "CatalogEntry",
457
- "declaration": "export interface CatalogEntry {\n name: string;\n version: string;\n integrity: string | null;\n publishedAt: string | null;\n repository: string | null;\n license: string | null;\n tier: 'verified' | 'verified-stale' | 'community';\n metadata: 'declared' | 'derived';\n review?: { reviewedVersion?: string; reviewedCommit?: string; reviewedSha256?: string; repo?: string; reviewer: string; reviewCommit: string; notes: string; };\n catalog?: CatalogSection;\n source: 'npm' | 'github';\n publisher?: string;\n repo?: string;\n subdir?: string;\n tarball?: { url: string; sha256: string; };\n added?: string;\n peers?: string[];\n unpackedSize?: number;\n installSize?: number;\n}"
496
+ "declaration": "export interface CatalogEntry {\n name: string;\n version: string;\n integrity: string | null;\n publishedAt: string | null;\n repository: string | null;\n license: string | null;\n tier: 'verified' | 'verified-stale' | 'community';\n metadata: 'declared' | 'derived';\n review?: { reviewedVersion?: string; reviewedCommit?: string; reviewedSha256?: string; repo?: string; reviewer: string; reviewCommit: string; notes: string; };\n catalog?: CatalogSection;\n source: 'npm' | 'github';\n publisher?: string;\n repo?: string;\n subdir?: string;\n tarball?: { url: string; sha256: string; };\n added?: string;\n peers?: string[];\n compatibility?: { dsh?: string; profiles?: string[]; };\n dshPeers?: Record<string, string>;\n unpackedSize?: number;\n installSize?: number;\n}"
458
497
  },
459
498
  {
460
499
  "name": "CatalogSection",
@@ -468,9 +507,13 @@ export const TYPERT = {
468
507
  "name": "DeniedEntry",
469
508
  "declaration": "export interface DeniedEntry {\n name: string;\n detail: string;\n replacement?: string;\n}"
470
509
  },
510
+ {
511
+ "name": "HarnessVerdict",
512
+ "declaration": "export interface HarnessVerdict {\n dsh?: { range: string; running: string; };\n profile?: { declared: string[]; running: string; };\n peers?: PeerVerdict;\n}"
513
+ },
471
514
  {
472
515
  "name": "HotRestartReason",
473
- "declaration": "export type HotRestartReason = 'no-patch' | 'not-simple' | 'host-unsupported' | 'timeout' | 'mount-failed' | 'client-half';"
516
+ "declaration": "export type HotRestartReason = 'no-patch' | 'not-simple' | 'host-unsupported' | 'timeout' | 'mount-failed' | 'already-loaded';"
474
517
  },
475
518
  {
476
519
  "name": "InstallArgs",
@@ -478,7 +521,7 @@ export const TYPERT = {
478
521
  },
479
522
  {
480
523
  "name": "InstallRejectionCode",
481
- "declaration": "export type InstallRejectionCode = 'not-in-catalog' | 'denied' | 'version-mismatch' | 'needs-acknowledgement' | 'tarball-integrity' | 'ambiguous-identity' | 'name-taken';"
524
+ "declaration": "export type InstallRejectionCode = 'not-in-catalog' | 'denied' | 'version-mismatch' | 'needs-acknowledgement' | 'tarball-integrity' | 'ambiguous-identity' | 'name-taken' | 'desktop-profile';"
482
525
  },
483
526
  {
484
527
  "name": "InstallState",
@@ -488,17 +531,21 @@ export const TYPERT = {
488
531
  "name": "InstallStatus",
489
532
  "declaration": "export interface InstallStatus {\n state: InstallState;\n log: string[];\n activation?: Activation;\n restartReason?: HotRestartReason;\n detail?: string;\n}"
490
533
  },
534
+ {
535
+ "name": "PeerVerdict",
536
+ "declaration": "export interface PeerVerdict {\n refused: Record<string, string>;\n running: string;\n allowCommand: string | null;\n}"
537
+ },
491
538
  {
492
539
  "name": "RestartBlockedReason",
493
- "declaration": "export type RestartBlockedReason = 'windows' | 'systemd' | 'port-zero';"
540
+ "declaration": "export type RestartBlockedReason = 'desktop' | 'windows' | 'systemd' | 'port-zero';"
494
541
  },
495
542
  {
496
543
  "name": "RestartOutcome",
497
- "declaration": "export type RestartOutcome = { ok: true; } | { ok: false; detail: string; };"
544
+ "declaration": "export type RestartOutcome = { ok: true; logFile?: string; } | { ok: false; detail: string; };"
498
545
  },
499
546
  {
500
547
  "name": "ShopCatalogResult",
501
- "declaration": "export interface ShopCatalogResult {\n schemaVersion: number;\n builtAt: string;\n stale: boolean;\n plugins: CatalogEntry[];\n denied: DeniedEntry[];\n notAShop?: string[];\n stars: Record<string, number>;\n incompatible: Record<string, string[]>;\n}"
548
+ "declaration": "export interface ShopCatalogResult {\n schemaVersion: number;\n builtAt: string;\n stale: boolean;\n plugins: CatalogEntry[];\n denied: DeniedEntry[];\n notAShop?: string[];\n stars: Record<string, number>;\n incompatible: Record<string, string[]>;\n incompatibleHarness: Record<string, HarnessVerdict>;\n}"
502
549
  },
503
550
  {
504
551
  "name": "ShopInstalledEntry",
@@ -530,7 +577,7 @@ export const TYPERT = {
530
577
  },
531
578
  {
532
579
  "name": "ShopVersionResult",
533
- "declaration": "export interface ShopVersionResult {\n installed: string;\n latest: string | null;\n outdated: boolean;\n restartBlocked: RestartBlockedReason | null;\n}"
580
+ "declaration": "export interface ShopVersionResult {\n installed: string;\n latest: string | null;\n outdated: boolean;\n restartBlocked: RestartBlockedReason | null;\n pendingVersion?: string | null;\n}"
534
581
  }
535
582
  ]
536
583
  }
@@ -1,4 +1,5 @@
1
1
  /* Generated by @deepseek-ai/dsh-typert-generator from the Host FaceModel — do not edit. */
2
+ /* dsh-plugin-shop: create() added beside every schema for harness 0.1.7 (scripts/typert-dual-codecs.ts). */
2
3
  import { z } from 'zod'
3
4
 
4
5
  const dsh_plugin_shop_shop_catalog_parameter_0$schema = z.union([z.undefined(), z.object({
@@ -44,6 +45,11 @@ const dsh_plugin_shop_shop_catalog_result$schema = z.object({
44
45
  })]).optional(),
45
46
  'added': z.union([z.undefined(), z.string()]).optional(),
46
47
  'peers': z.union([z.undefined(), z.array(z.string())]).optional(),
48
+ 'compatibility': z.union([z.undefined(), z.object({
49
+ 'dsh': z.union([z.undefined(), z.string()]).optional(),
50
+ 'profiles': z.union([z.undefined(), z.array(z.string())]).optional(),
51
+ })]).optional(),
52
+ 'dshPeers': z.union([z.undefined(), z.record(z.string(), z.string())]).optional(),
47
53
  'unpackedSize': z.union([z.undefined(), z.number()]).optional(),
48
54
  'installSize': z.union([z.undefined(), z.number()]).optional(),
49
55
  })),
@@ -55,6 +61,21 @@ const dsh_plugin_shop_shop_catalog_result$schema = z.object({
55
61
  'notAShop': z.union([z.undefined(), z.array(z.string())]).optional(),
56
62
  'stars': z.record(z.string(), z.number()),
57
63
  'incompatible': z.record(z.string(), z.array(z.string())),
64
+ 'incompatibleHarness': z.record(z.string(), z.object({
65
+ 'dsh': z.union([z.undefined(), z.object({
66
+ 'range': z.string(),
67
+ 'running': z.string(),
68
+ })]).optional(),
69
+ 'profile': z.union([z.undefined(), z.object({
70
+ 'declared': z.array(z.string()),
71
+ 'running': z.string(),
72
+ })]).optional(),
73
+ 'peers': z.union([z.undefined(), z.object({
74
+ 'refused': z.record(z.string(), z.string()),
75
+ 'running': z.string(),
76
+ 'allowCommand': z.union([z.literal(null), z.string()]),
77
+ })]).optional(),
78
+ })),
58
79
  })
59
80
  const dsh_plugin_shop_shop_installed_result$schema = z.array(z.object({
60
81
  'name': z.string(),
@@ -81,7 +102,7 @@ const dsh_plugin_shop_shop_installStart_result$schema = z.union([z.object({
81
102
  'state': z.union([z.literal("downloading"), z.literal("running"), z.literal("done"), z.literal("failed")]),
82
103
  }), z.object({
83
104
  'ok': z.literal(false),
84
- 'code': z.union([z.literal("not-in-catalog"), z.literal("denied"), z.literal("version-mismatch"), z.literal("needs-acknowledgement"), z.literal("tarball-integrity"), z.literal("ambiguous-identity"), z.literal("name-taken")]),
105
+ 'code': z.union([z.literal("not-in-catalog"), z.literal("denied"), z.literal("version-mismatch"), z.literal("needs-acknowledgement"), z.literal("tarball-integrity"), z.literal("ambiguous-identity"), z.literal("name-taken"), z.literal("desktop-profile")]),
85
106
  'detail': z.string(),
86
107
  })])
87
108
  const dsh_plugin_shop_shop_installStatus_parameter_0$schema = z.object({
@@ -92,11 +113,12 @@ const dsh_plugin_shop_shop_installStatus_result$schema = z.object({
92
113
  'state': z.union([z.literal("downloading"), z.literal("running"), z.literal("done"), z.literal("failed")]),
93
114
  'log': z.array(z.string()),
94
115
  'activation': z.union([z.undefined(), z.literal("live"), z.literal("reload"), z.literal("restart")]).optional(),
95
- 'restartReason': z.union([z.undefined(), z.literal("no-patch"), z.literal("not-simple"), z.literal("host-unsupported"), z.literal("timeout"), z.literal("mount-failed"), z.literal("client-half")]).optional(),
116
+ 'restartReason': z.union([z.undefined(), z.literal("no-patch"), z.literal("not-simple"), z.literal("host-unsupported"), z.literal("timeout"), z.literal("mount-failed"), z.literal("already-loaded")]).optional(),
96
117
  'detail': z.union([z.undefined(), z.string()]).optional(),
97
118
  })
98
119
  const dsh_plugin_shop_shop_restart_result$schema = z.union([z.object({
99
120
  'ok': z.literal(true),
121
+ 'logFile': z.union([z.undefined(), z.string()]).optional(),
100
122
  }), z.object({
101
123
  'ok': z.literal(false),
102
124
  'detail': z.string(),
@@ -137,7 +159,8 @@ const dsh_plugin_shop_shop_version_result$schema = z.object({
137
159
  'installed': z.string(),
138
160
  'latest': z.union([z.literal(null), z.string()]),
139
161
  'outdated': z.boolean(),
140
- 'restartBlocked': z.union([z.literal(null), z.literal("windows"), z.literal("systemd"), z.literal("port-zero")]),
162
+ 'restartBlocked': z.union([z.literal(null), z.literal("desktop"), z.literal("windows"), z.literal("systemd"), z.literal("port-zero")]),
163
+ 'pendingVersion': z.union([z.undefined(), z.literal(null), z.string()]).optional(),
141
164
  })
142
165
 
143
166
  export const TYPERT_REMOTE = {
@@ -159,6 +182,7 @@ export const TYPERT_REMOTE = {
159
182
  mode: 'strict',
160
183
  typeSymbol: 'dsh-plugin-shop#shop/catalog:args',
161
184
  schema: dsh_plugin_shop_shop_catalog_parameter_0$schema,
185
+ create: () => dsh_plugin_shop_shop_catalog_parameter_0$schema,
162
186
  },
163
187
  },
164
188
  ],
@@ -166,8 +190,9 @@ export const TYPERT_REMOTE = {
166
190
  mode: 'strict',
167
191
  typeSymbol: 'dsh-plugin-shop/types#ShopCatalogResult',
168
192
  schema: dsh_plugin_shop_shop_catalog_result$schema,
193
+ create: () => dsh_plugin_shop_shop_catalog_result$schema,
169
194
  },
170
- sourceLocation: {"file":"packages/dsh-plugin-shop/src/host/index.ts","line":867,"column":9},
195
+ sourceLocation: {"file":"packages/dsh-plugin-shop/src/host/index.ts","line":1253,"column":9},
171
196
  },
172
197
  {
173
198
  id: 'dsh-plugin-shop#shop/installed',
@@ -181,8 +206,9 @@ export const TYPERT_REMOTE = {
181
206
  mode: 'strict',
182
207
  typeSymbol: 'dsh-plugin-shop#shop/installed:result',
183
208
  schema: dsh_plugin_shop_shop_installed_result$schema,
209
+ create: () => dsh_plugin_shop_shop_installed_result$schema,
184
210
  },
185
- sourceLocation: {"file":"packages/dsh-plugin-shop/src/host/index.ts","line":1140,"column":9},
211
+ sourceLocation: {"file":"packages/dsh-plugin-shop/src/host/index.ts","line":1720,"column":9},
186
212
  },
187
213
  {
188
214
  id: 'dsh-plugin-shop#shop/installedSpecs',
@@ -196,8 +222,9 @@ export const TYPERT_REMOTE = {
196
222
  mode: 'strict',
197
223
  typeSymbol: 'dsh-plugin-shop#shop/installedSpecs:result',
198
224
  schema: dsh_plugin_shop_shop_installedSpecs_result$schema,
225
+ create: () => dsh_plugin_shop_shop_installedSpecs_result$schema,
199
226
  },
200
- sourceLocation: {"file":"packages/dsh-plugin-shop/src/host/index.ts","line":1131,"column":9},
227
+ sourceLocation: {"file":"packages/dsh-plugin-shop/src/host/index.ts","line":1711,"column":9},
201
228
  },
202
229
  {
203
230
  id: 'dsh-plugin-shop#shop/installStart',
@@ -215,6 +242,7 @@ export const TYPERT_REMOTE = {
215
242
  mode: 'strict',
216
243
  typeSymbol: 'dsh-plugin-shop/types#InstallArgs',
217
244
  schema: dsh_plugin_shop_shop_installStart_parameter_0$schema,
245
+ create: () => dsh_plugin_shop_shop_installStart_parameter_0$schema,
218
246
  },
219
247
  },
220
248
  ],
@@ -222,8 +250,9 @@ export const TYPERT_REMOTE = {
222
250
  mode: 'strict',
223
251
  typeSymbol: 'dsh-plugin-shop/types#ShopInstallResult',
224
252
  schema: dsh_plugin_shop_shop_installStart_result$schema,
253
+ create: () => dsh_plugin_shop_shop_installStart_result$schema,
225
254
  },
226
- sourceLocation: {"file":"packages/dsh-plugin-shop/src/host/index.ts","line":915,"column":9},
255
+ sourceLocation: {"file":"packages/dsh-plugin-shop/src/host/index.ts","line":1379,"column":9},
227
256
  },
228
257
  {
229
258
  id: 'dsh-plugin-shop#shop/installStatus',
@@ -240,6 +269,7 @@ export const TYPERT_REMOTE = {
240
269
  mode: 'strict',
241
270
  typeSymbol: 'dsh-plugin-shop#shop/installStatus:args',
242
271
  schema: dsh_plugin_shop_shop_installStatus_parameter_0$schema,
272
+ create: () => dsh_plugin_shop_shop_installStatus_parameter_0$schema,
243
273
  },
244
274
  },
245
275
  ],
@@ -247,8 +277,9 @@ export const TYPERT_REMOTE = {
247
277
  mode: 'strict',
248
278
  typeSymbol: 'dsh-plugin-shop/types#ShopInstallStatusResult',
249
279
  schema: dsh_plugin_shop_shop_installStatus_result$schema,
280
+ create: () => dsh_plugin_shop_shop_installStatus_result$schema,
250
281
  },
251
- sourceLocation: {"file":"packages/dsh-plugin-shop/src/host/index.ts","line":1107,"column":3},
282
+ sourceLocation: {"file":"packages/dsh-plugin-shop/src/host/index.ts","line":1687,"column":3},
252
283
  },
253
284
  {
254
285
  id: 'dsh-plugin-shop#shop/restart',
@@ -262,8 +293,9 @@ export const TYPERT_REMOTE = {
262
293
  mode: 'strict',
263
294
  typeSymbol: 'dsh-plugin-shop/types#ShopRestartResult',
264
295
  schema: dsh_plugin_shop_shop_restart_result$schema,
296
+ create: () => dsh_plugin_shop_shop_restart_result$schema,
265
297
  },
266
- sourceLocation: {"file":"packages/dsh-plugin-shop/src/host/index.ts","line":1319,"column":9},
298
+ sourceLocation: {"file":"packages/dsh-plugin-shop/src/host/index.ts","line":1916,"column":9},
267
299
  },
268
300
  {
269
301
  id: 'dsh-plugin-shop#shop/setEnabled',
@@ -280,6 +312,7 @@ export const TYPERT_REMOTE = {
280
312
  mode: 'strict',
281
313
  typeSymbol: 'dsh-plugin-shop#shop/setEnabled:args',
282
314
  schema: dsh_plugin_shop_shop_setEnabled_parameter_0$schema,
315
+ create: () => dsh_plugin_shop_shop_setEnabled_parameter_0$schema,
283
316
  },
284
317
  },
285
318
  ],
@@ -287,8 +320,9 @@ export const TYPERT_REMOTE = {
287
320
  mode: 'strict',
288
321
  typeSymbol: 'dsh-plugin-shop/types#ShopSetEnabledResult',
289
322
  schema: dsh_plugin_shop_shop_setEnabled_result$schema,
323
+ create: () => dsh_plugin_shop_shop_setEnabled_result$schema,
290
324
  },
291
- sourceLocation: {"file":"packages/dsh-plugin-shop/src/host/index.ts","line":692,"column":9},
325
+ sourceLocation: {"file":"packages/dsh-plugin-shop/src/host/index.ts","line":924,"column":9},
292
326
  },
293
327
  {
294
328
  id: 'dsh-plugin-shop#shop/uninstallStart',
@@ -306,6 +340,7 @@ export const TYPERT_REMOTE = {
306
340
  mode: 'strict',
307
341
  typeSymbol: 'dsh-plugin-shop#shop/uninstallStart:args',
308
342
  schema: dsh_plugin_shop_shop_uninstallStart_parameter_0$schema,
343
+ create: () => dsh_plugin_shop_shop_uninstallStart_parameter_0$schema,
309
344
  },
310
345
  },
311
346
  ],
@@ -313,8 +348,9 @@ export const TYPERT_REMOTE = {
313
348
  mode: 'strict',
314
349
  typeSymbol: 'dsh-plugin-shop/types#ShopUninstallResult',
315
350
  schema: dsh_plugin_shop_shop_uninstallStart_result$schema,
351
+ create: () => dsh_plugin_shop_shop_uninstallStart_result$schema,
316
352
  },
317
- sourceLocation: {"file":"packages/dsh-plugin-shop/src/host/index.ts","line":1241,"column":9},
353
+ sourceLocation: {"file":"packages/dsh-plugin-shop/src/host/index.ts","line":1827,"column":9},
318
354
  },
319
355
  {
320
356
  id: 'dsh-plugin-shop#shop/updateStart',
@@ -331,6 +367,7 @@ export const TYPERT_REMOTE = {
331
367
  mode: 'strict',
332
368
  typeSymbol: 'dsh-plugin-shop#shop/updateStart:args',
333
369
  schema: dsh_plugin_shop_shop_updateStart_parameter_0$schema,
370
+ create: () => dsh_plugin_shop_shop_updateStart_parameter_0$schema,
334
371
  },
335
372
  },
336
373
  ],
@@ -338,8 +375,9 @@ export const TYPERT_REMOTE = {
338
375
  mode: 'strict',
339
376
  typeSymbol: 'dsh-plugin-shop/types#ShopUpdateResult',
340
377
  schema: dsh_plugin_shop_shop_updateStart_result$schema,
378
+ create: () => dsh_plugin_shop_shop_updateStart_result$schema,
341
379
  },
342
- sourceLocation: {"file":"packages/dsh-plugin-shop/src/host/index.ts","line":1387,"column":9},
380
+ sourceLocation: {"file":"packages/dsh-plugin-shop/src/host/index.ts","line":2020,"column":9},
343
381
  },
344
382
  {
345
383
  id: 'dsh-plugin-shop#shop/version',
@@ -353,8 +391,9 @@ export const TYPERT_REMOTE = {
353
391
  mode: 'strict',
354
392
  typeSymbol: 'dsh-plugin-shop/types#ShopVersionResult',
355
393
  schema: dsh_plugin_shop_shop_version_result$schema,
394
+ create: () => dsh_plugin_shop_shop_version_result$schema,
356
395
  },
357
- sourceLocation: {"file":"packages/dsh-plugin-shop/src/host/index.ts","line":1371,"column":9},
396
+ sourceLocation: {"file":"packages/dsh-plugin-shop/src/host/index.ts","line":1978,"column":9},
358
397
  },
359
398
  ],
360
399
  }
@@ -10,8 +10,16 @@ import type { InstallArgs, ShopCatalogResult, ShopInstalledEntry, ShopInstallRes
10
10
  * wire envelope by `index.ts`; `catalog` throws on a wire error so the tab's
11
11
  * error state renders. */
12
12
  export interface ShopTabInjected {
13
+ /** `reverdict: true` means "judge again against the installation as it
14
+ * stands now" — the host's own snapshot and freshness window, asked with
15
+ * the same plain call as a stash-expired open, never a network refresh. A
16
+ * plain open can still serve the stash; a reverdict always bypasses it (the
17
+ * install or uninstall that triggered it predates whatever the stash
18
+ * holds). It is a client-only instruction: `index.ts` never lets it reach
19
+ * the host RPC, which accepts only `{ refresh?: boolean }`. */
13
20
  catalog: (args?: {
14
21
  refresh?: boolean;
22
+ reverdict?: boolean;
15
23
  }) => Promise<ShopCatalogResult>;
16
24
  install: (args: InstallArgs) => Promise<ShopInstallResult>;
17
25
  installStatus: (args: {
@@ -29,6 +37,14 @@ export interface ShopTabInjected {
29
37
  uninstall: (args: {
30
38
  name: string;
31
39
  }) => Promise<ShopUninstallResult>;
40
+ /** Tells the client half that this page uninstalled `name`, so the module
41
+ * table's refinement never vouches for it again (the page-removed set,
42
+ * design 2026-09-01-harness-compatibility section 9.1): a graph row or a
43
+ * `loadCache` record can outlive a restart-free uninstall, and would
44
+ * otherwise clear a badge the host is still right to show. Optional — a
45
+ * stub or an old host face may not offer it — and installs need no
46
+ * counterpart, since a reinstalled package resolves on the host again. */
47
+ noteUninstalled?: (name: string) => void;
32
48
  restart: () => Promise<ShopRestartResult>;
33
49
  version: () => Promise<ShopVersionResult>;
34
50
  updateStart: (args: {
@@ -41,6 +57,7 @@ export interface ShopTabInjected {
41
57
  }
42
58
  /** Full component props assembled by the Settings slot renderer. */
43
59
  export type ShopTabProps = PropsRuntime<'settings.plugins.tab'> & PropsLocale<'settings.shop'> & InjectFace<ShopTabInjected>;
44
- /** The shop tab root: browse, search, refresh, and render one card per
45
- * entry. Data attributes on the e2e-relevant nodes follow the Task 3 list. */
60
+ /** The tab as the settings slot registers it (`index.ts`): the body inside the
61
+ * shop's own error boundary. Exported under the name the body used to carry,
62
+ * so nothing can register the tab without the boundary. */
46
63
  export declare function ShopTab(props: ShopTabProps): ReactNode;