@dsh-workbench/core 0.3.11 → 1.0.0-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.
Files changed (224) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +148 -117
  3. package/bin/dsh-workbench +130 -29
  4. package/bin/dsh-workbench.cmd +5 -0
  5. package/bin/opencli-isolated +3 -2
  6. package/bin/opencli-isolated.mjs +44 -0
  7. package/bin/opencli-node-mode.cjs +1 -0
  8. package/bin/seed-workshop-windows.mjs +307 -0
  9. package/client.js +4632 -2002
  10. package/cordis.patch.yml +3 -3
  11. package/dist/client/client.body.js +4632 -2002
  12. package/dist/client/index.js +5306 -2676
  13. package/dist/host/index.js +6990 -5879
  14. package/dist/types/app/client.d.ts +1 -0
  15. package/dist/types/app/host.d.ts +2 -1
  16. package/dist/types/app/layouts/approval-detail.d.ts +3 -0
  17. package/dist/types/app/layouts/env-gate/boot-gate.d.ts +1 -12
  18. package/dist/types/app/layouts/env-gate/gate-text.d.ts +2 -1
  19. package/dist/types/app/layouts/market/DiscoverPanel.d.ts +8 -0
  20. package/dist/types/app/layouts/market/add-module-text.d.ts +1 -1
  21. package/dist/types/app/layouts/market/discover-categories.d.ts +8 -0
  22. package/dist/types/app/layouts/market/discover-confirm.d.ts +14 -0
  23. package/dist/types/app/layouts/market/discover-detail.d.ts +12 -0
  24. package/dist/types/app/layouts/market/discover-dialogs.d.ts +7 -0
  25. package/dist/types/app/layouts/market/discover-doc.d.ts +18 -0
  26. package/dist/types/app/layouts/market/discover-init-dialog.d.ts +10 -0
  27. package/dist/types/app/layouts/market/discover-rows.d.ts +24 -0
  28. package/dist/types/app/layouts/market/discover-sources-dialog.d.ts +17 -0
  29. package/dist/types/app/layouts/market/discover-states.d.ts +22 -0
  30. package/dist/types/app/layouts/market/discover-toolbar.d.ts +23 -0
  31. package/dist/types/app/layouts/market/discover-versions.d.ts +9 -0
  32. package/dist/types/app/layouts/market/discover-view.d.ts +38 -0
  33. package/dist/types/app/layouts/market/market-header.d.ts +13 -0
  34. package/dist/types/app/layouts/market/panel.d.ts +1 -1
  35. package/dist/types/app/layouts/market/use-add-module.d.ts +1 -1
  36. package/dist/types/app/layouts/market/use-discover.d.ts +73 -0
  37. package/dist/types/app/layouts/market/use-module-versions.d.ts +1 -8
  38. package/dist/types/app/layouts/rightbar/MarketView.d.ts +1 -1
  39. package/dist/types/app/layouts/rightbar/Rightbar.d.ts +1 -1
  40. package/dist/types/app/layouts/rightbar/board-shape.d.ts +1 -14
  41. package/dist/types/app/layouts/rightbar/market-busy.d.ts +0 -22
  42. package/dist/types/app/layouts/rightbar/market-change.d.ts +1 -1
  43. package/dist/types/app/layouts/rightbar/market-hint.d.ts +1 -7
  44. package/dist/types/app/layouts/rightbar/market-plugin-rows.d.ts +0 -7
  45. package/dist/types/app/layouts/rightbar/market-row-icon.d.ts +1 -1
  46. package/dist/types/app/layouts/rightbar/market-row-types.d.ts +2 -2
  47. package/dist/types/app/layouts/rightbar/market-rows.d.ts +1 -1
  48. package/dist/types/app/layouts/rightbar/market-section-icon.d.ts +1 -1
  49. package/dist/types/app/layouts/rightbar/market-settle-hold.d.ts +1 -1
  50. package/dist/types/app/layouts/rightbar/market-settle.d.ts +4 -7
  51. package/dist/types/app/layouts/rightbar/market-shared-rows.d.ts +1 -1
  52. package/dist/types/app/layouts/rightbar/market-update-verdict.d.ts +1 -11
  53. package/dist/types/app/layouts/rightbar/market-view-text.d.ts +5 -1
  54. package/dist/types/app/layouts/rightbar/market-workbench-row.d.ts +1 -1
  55. package/dist/types/app/layouts/rightbar/store.d.ts +0 -12
  56. package/dist/types/app/layouts/sidebar/LongTaskDot.d.ts +0 -6
  57. package/dist/types/app/layouts/sidebar/LongTaskHover.d.ts +0 -6
  58. package/dist/types/app/layouts/sidebar/edition-boot.d.ts +1 -19
  59. package/dist/types/app/layouts/sidebar/edition.d.ts +1 -18
  60. package/dist/types/app/layouts/sidebar/use-attention.d.ts +0 -4
  61. package/dist/types/app/layouts/sidebar/workshop-preset.d.ts +2 -0
  62. package/dist/types/app/layouts/workbench-settings/AdapterSetItem.d.ts +5 -0
  63. package/dist/types/app/layouts/workbench-settings/ConfigSyncRows.d.ts +11 -0
  64. package/dist/types/app/layouts/workbench-settings/NewWorkbenchItem.d.ts +5 -0
  65. package/dist/types/app/layouts/workbench-settings/SettingsItem.d.ts +0 -9
  66. package/dist/types/app/layouts/workbench-settings/SidebarEditionItem.d.ts +0 -6
  67. package/dist/types/app/layouts/workbench-settings/WorkbenchSettingsSection.d.ts +0 -6
  68. package/dist/types/app/units/manifests.d.ts +1 -1
  69. package/dist/types/{app/units → kernel/client}/registry.d.ts +1 -1
  70. package/dist/types/kernel/contract/bundle-install.d.ts +2 -0
  71. package/dist/types/kernel/contract/config-sync.d.ts +2 -0
  72. package/dist/types/kernel/contract/diy.d.ts +1 -0
  73. package/dist/types/kernel/contract/dsh-plugins.d.ts +2 -0
  74. package/dist/types/kernel/contract/index.d.ts +5 -0
  75. package/dist/types/kernel/contract/long-tasks.d.ts +2 -0
  76. package/dist/types/kernel/contract/market-index.d.ts +2 -0
  77. package/dist/types/kernel/contract/platform.d.ts +1 -0
  78. package/dist/types/kernel/contract/preflight-wake.d.ts +2 -0
  79. package/dist/types/kernel/contract/profile-create.d.ts +2 -0
  80. package/dist/types/kernel/contract/sidebar-edition.d.ts +2 -0
  81. package/dist/types/kernel/contract/unit-manifests.d.ts +2 -0
  82. package/dist/types/{shared/api → kernel}/host/mount-units.d.ts +5 -1
  83. package/dist/types/modules/panels/client.d.ts +1 -1
  84. package/dist/types/modules/panels/model/approval.d.ts +3 -15
  85. package/dist/types/modules/panels/model/diy-changelog.d.ts +2 -0
  86. package/dist/types/modules/panels/model/diy-context.d.ts +1 -16
  87. package/dist/types/modules/panels/model/diy-page.d.ts +1 -0
  88. package/dist/types/modules/panels/model/diy-record-open.d.ts +0 -15
  89. package/dist/types/modules/panels/model/diy-record-text.d.ts +0 -2
  90. package/dist/types/modules/panels/model/diy-record.d.ts +0 -30
  91. package/dist/types/modules/panels/model/diy-tools.d.ts +1 -0
  92. package/dist/types/modules/panels/model/long-task-tools.d.ts +0 -11
  93. package/dist/types/modules/panels/model/market-dependency-update.d.ts +1 -7
  94. package/dist/types/modules/panels/model/market-dependency.d.ts +15 -10
  95. package/dist/types/modules/panels/model/market-discover-routes.d.ts +3 -0
  96. package/dist/types/modules/panels/model/market-discover.d.ts +33 -0
  97. package/dist/types/modules/panels/model/market-dispatch.d.ts +3 -3
  98. package/dist/types/modules/panels/model/market-env.d.ts +2 -3
  99. package/dist/types/modules/panels/model/market-registry.d.ts +3 -3
  100. package/dist/types/modules/panels/model/market-restart.d.ts +1 -1
  101. package/dist/types/modules/panels/model/market-route.d.ts +5 -3
  102. package/dist/types/modules/panels/model/market-sources-act.d.ts +9 -0
  103. package/dist/types/modules/panels/model/market-types.d.ts +6 -13
  104. package/dist/types/modules/panels/model/market-update-bundle.d.ts +3 -9
  105. package/dist/types/modules/panels/model/market-verify.d.ts +3 -19
  106. package/dist/types/modules/panels/model/market-workbench-update.d.ts +3 -2
  107. package/dist/types/modules/panels/model/market.d.ts +6 -5
  108. package/dist/types/modules/panels/model/plugin-actions.d.ts +2 -1
  109. package/dist/types/modules/panels/model/plugin-section.d.ts +3 -1
  110. package/dist/types/modules/panels/model/publish-preview-routes.d.ts +2 -0
  111. package/dist/types/modules/panels/unit.d.ts +7 -3
  112. package/dist/types/modules/sessions/model/attention.d.ts +0 -11
  113. package/dist/types/modules/sessions/model/session-node.d.ts +0 -10
  114. package/dist/types/shared/api/diy.d.ts +6 -4
  115. package/dist/types/shared/api/host/approval-call.d.ts +0 -9
  116. package/dist/types/shared/api/host/approval-gate.d.ts +0 -13
  117. package/dist/types/shared/api/host/bundle-routes.d.ts +1 -1
  118. package/dist/types/shared/api/host/diy-artifacts.d.ts +0 -11
  119. package/dist/types/shared/api/host/diy-changelog.d.ts +13 -0
  120. package/dist/types/shared/api/host/diy-components.d.ts +2 -3
  121. package/dist/types/shared/api/host/diy-modules.d.ts +0 -16
  122. package/dist/types/shared/api/host/diy-publish-preview.d.ts +4 -0
  123. package/dist/types/shared/api/host/diy-recon-fs.d.ts +2 -2
  124. package/dist/types/shared/api/host/diy-tokens.d.ts +8 -0
  125. package/dist/types/shared/api/host/host-routes.d.ts +3 -6
  126. package/dist/types/shared/api/host/long-task-notice.d.ts +0 -20
  127. package/dist/types/shared/api/host/long-tasks.d.ts +1 -8
  128. package/dist/types/shared/api/host/market-doc.d.ts +21 -0
  129. package/dist/types/shared/api/host/market-index-fetch.d.ts +37 -0
  130. package/dist/types/shared/api/host/market-source-init.d.ts +22 -0
  131. package/dist/types/shared/api/host/market-sources-store.d.ts +15 -0
  132. package/dist/types/shared/api/host/permission-mode.d.ts +0 -5
  133. package/dist/types/shared/api/host/post-channels.d.ts +1 -1
  134. package/dist/types/shared/api/host/sidebar-edition.d.ts +1 -33
  135. package/dist/types/shared/api/host/unit-roster-facts.d.ts +1 -1
  136. package/dist/types/shared/api/host/workspace-root.d.ts +0 -7
  137. package/dist/types/shared/api/platform/client.d.ts +10 -0
  138. package/dist/types/shared/api/unit-board.d.ts +0 -16
  139. package/dist/types/shared/api/write-outcome.d.ts +0 -12
  140. package/dist/types/shared/components/IconModules.d.ts +0 -6
  141. package/dist/types/shared/components/PanelFoot.d.ts +0 -9
  142. package/dist/types/shared/components/blocker-action.d.ts +0 -13
  143. package/dist/types/shared/dev-surface/index.d.ts +5 -0
  144. package/dist/types/shared/dev-surface/types.d.ts +79 -0
  145. package/dist/types/shared/hooks/bundle-queries.d.ts +1 -13
  146. package/dist/types/shared/hooks/fact-transport.d.ts +4 -0
  147. package/dist/types/shared/hooks/fact-transports.d.ts +0 -4
  148. package/dist/types/shared/hooks/market-queries.d.ts +11 -0
  149. package/dist/types/shared/hooks/panel-state-report.d.ts +0 -12
  150. package/dist/types/shared/hooks/sidebar-edition.d.ts +1 -6
  151. package/dist/types/shared/hooks/use-blocker-actions.d.ts +0 -8
  152. package/dist/types/shared/hooks/use-capabilities.d.ts +0 -59
  153. package/dist/types/shared/hooks/use-diy-debug.d.ts +0 -13
  154. package/dist/types/shared/hooks/use-diy-record.d.ts +0 -13
  155. package/dist/types/shared/hooks/use-shell-long-tasks.d.ts +1 -7
  156. package/icon.svg +17 -28
  157. package/package.json +33 -13
  158. package/preset/diy.patch.yml +1 -1
  159. package/profile/isolation.patch.yml +8 -8
  160. package/profile/sandbox.patch.yml +2 -2
  161. package/scripts/clone-profile.mjs +268 -0
  162. package/scripts/create-workbench.mjs +166 -0
  163. package/scripts/seed-profile.sh +22 -10
  164. package/scripts/seed-workshop.sh +17 -19
  165. package/skills/workbench-module-diy/BUILD.md +4 -11
  166. package/skills/workbench-module-diy/COPY.md +1 -1
  167. package/skills/workbench-module-diy/DATASOURCE.md +107 -22
  168. package/skills/workbench-module-diy/DESIGN.md +2 -1
  169. package/skills/workbench-module-diy/FAMILY.md +48 -68
  170. package/skills/workbench-module-diy/KIT.md +6 -3
  171. package/skills/workbench-module-diy/LINKAGE.md +1 -1
  172. package/skills/workbench-module-diy/PANEL.md +5 -3
  173. package/skills/workbench-module-diy/REVIEW.md +7 -7
  174. package/skills/workbench-module-diy/SKILL.md +20 -11
  175. package/skills/workbench-module-diy/STEPS.md +1 -1
  176. package/skills/workbench-module-diy/TOOLS.md +33 -9
  177. package/skills/workbench-module-diy/WIRING.md +18 -6
  178. package/skills/workbench-module-diy/WRITES.md +30 -4
  179. package/dist/types/shared/api/bundle-install.d.ts +0 -136
  180. package/dist/types/shared/api/config-sync.d.ts +0 -35
  181. package/dist/types/shared/api/dsh-plugins.d.ts +0 -11
  182. package/dist/types/shared/api/host/bundle-manager.d.ts +0 -11
  183. package/dist/types/shared/api/host/config-sync.d.ts +0 -46
  184. package/dist/types/shared/api/host/diy-preset-health.d.ts +0 -35
  185. package/dist/types/shared/api/host/dsh-plugins.d.ts +0 -5
  186. package/dist/types/shared/api/host/installed-module.d.ts +0 -54
  187. package/dist/types/shared/api/host/installed-module.test.d.ts +0 -1
  188. package/dist/types/shared/api/host/opencli-command.d.ts +0 -10
  189. package/dist/types/shared/api/host/opencli-command.test.d.ts +0 -1
  190. package/dist/types/shared/api/host/opencli.test.d.ts +0 -1
  191. package/dist/types/shared/api/host/package-content.d.ts +0 -6
  192. package/dist/types/shared/api/host/package-content.test.d.ts +0 -1
  193. package/dist/types/shared/api/host/package-kind.d.ts +0 -21
  194. package/dist/types/shared/api/host/package-kind.test.d.ts +0 -1
  195. package/dist/types/shared/api/host/package-route.d.ts +0 -23
  196. package/dist/types/shared/api/host/package-route.test.d.ts +0 -1
  197. package/dist/types/shared/api/host/plugin-catalog.d.ts +0 -65
  198. package/dist/types/shared/api/host/plugin-login-hint.d.ts +0 -2
  199. package/dist/types/shared/api/host/plugin-tools.d.ts +0 -14
  200. package/dist/types/shared/api/host/plugin-units.d.ts +0 -48
  201. package/dist/types/shared/api/host/preflight-route.d.ts +0 -15
  202. package/dist/types/shared/api/host/preflight.d.ts +0 -75
  203. package/dist/types/shared/api/host/probe-cache.d.ts +0 -6
  204. package/dist/types/shared/api/host/probe-libs.d.ts +0 -11
  205. package/dist/types/shared/api/host/probe-units.d.ts +0 -17
  206. package/dist/types/shared/api/host/probe-verdict.d.ts +0 -7
  207. package/dist/types/shared/api/host/profile-registries.d.ts +0 -21
  208. package/dist/types/shared/api/host/registry-declaration.d.ts +0 -23
  209. package/dist/types/shared/api/host/release.d.ts +0 -24
  210. package/dist/types/shared/api/host/runtime-seed.d.ts +0 -40
  211. package/dist/types/shared/api/host/self-update.d.ts +0 -52
  212. package/dist/types/shared/api/host/version-range.d.ts +0 -2
  213. package/dist/types/shared/api/long-tasks.d.ts +0 -19
  214. package/dist/types/shared/api/sidebar-edition.d.ts +0 -14
  215. package/dist/types/shared/api/unit-manifests.d.ts +0 -6
  216. package/docs/HANDOFF.md +0 -333
  217. package/docs/OPERATIONS.md +0 -240
  218. package/skills/workbench-module-diy/TOOLING.md +0 -38
  219. /package/dist/types/{app/layouts/rightbar/registry.d.ts → kernel/client/board-registry.d.ts} +0 -0
  220. /package/dist/types/{app/layouts/rightbar/registry.test.d.ts → kernel/contract/contracts.test.d.ts} +0 -0
  221. /package/dist/types/{shared/api/host/bundle-manager.test.d.ts → kernel/contract/index.test.d.ts} +0 -0
  222. /package/dist/types/{shared/api → kernel}/host/unit-readiness.d.ts +0 -0
  223. /package/dist/types/{shared/api → kernel}/host/unit-registry.d.ts +0 -0
  224. /package/dist/types/shared/{api/host/dsh-plugins.test.d.ts → dev-surface/install.d.ts} +0 -0
@@ -0,0 +1,33 @@
1
+ import type { DshShell } from '@dsh-workbench/shared';
2
+ import type { ProfileModule } from '@dsh-workbench/shared/host';
3
+ import type { DiscoverDoc, DiscoverDocKind, DiscoverEntry, DiscoverFilter, DiscoverPayload } from '@dsh-workbench/shared/contract/protocol/market-index';
4
+ import type { MarketIndexReader } from '../../../shared/api/host/market-index-fetch';
5
+ import type { MarketDocReader } from '../../../shared/api/host/market-doc';
6
+ import type { MarketSourcesStore } from '../../../shared/api/host/market-sources-store';
7
+ export interface MarketDiscover {
8
+ snapshot(filter?: DiscoverFilter & {
9
+ readonly force?: boolean;
10
+ }): Promise<DiscoverPayload>;
11
+ document(name: string, version: string, kind: DiscoverDocKind): Promise<DiscoverDoc>;
12
+ }
13
+ export interface MarketDiscoverOptions {
14
+ readonly store: MarketSourcesStore;
15
+ readonly reader: MarketIndexReader;
16
+ readonly docs: MarketDocReader;
17
+ readonly modules: () => readonly ProfileModule[];
18
+ readonly defaultRegistry: () => Promise<string | undefined>;
19
+ readonly shell?: DshShell | undefined;
20
+ readonly shellVersion?: string | undefined;
21
+ readonly fetchImpl?: ((url: string, init: RequestInit) => Promise<Response>) | undefined;
22
+ readonly now?: (() => number) | undefined;
23
+ readonly peerTtlMs?: number | undefined;
24
+ readonly timeoutMs?: number | undefined;
25
+ readonly logger?: {
26
+ warn?(message: string): void;
27
+ } | undefined;
28
+ }
29
+ export declare function installTargetOf(entry: DiscoverEntry, version: string): {
30
+ readonly spec: string;
31
+ readonly registry?: string;
32
+ } | undefined;
33
+ export declare function createMarketDiscover(options: MarketDiscoverOptions): MarketDiscover;
@@ -1,6 +1,6 @@
1
1
  import type { ProvisionRequest } from '@dsh-workbench/shared/host';
2
- import type { BundleCancellation, BundleChange } from '../../../shared/api/bundle-install';
3
- import type { InstalledModule } from '../../../shared/api/host/installed-module';
2
+ import type { BundleCancellation, BundleChange } from '../../../kernel/contract/bundle-install';
3
+ import type { InstalledModule } from '@dsh-workbench/shared/host';
4
4
  import type { BundleSupply, MarketEntry, MarketService } from './market';
5
5
  import type { PluginKept } from './plugin-actions';
6
6
  import type { SharedDependency } from './market-dependency';
@@ -16,7 +16,7 @@ export type ProvisionResult = {
16
16
  readonly shared: readonly SharedDependency[];
17
17
  } | {
18
18
  readonly ok: true;
19
- readonly action: 'install-bundle' | 'update-bundle';
19
+ readonly action: 'install-bundle' | 'install-version' | 'update-bundle';
20
20
  readonly change: BundleChange;
21
21
  readonly module: InstalledModule;
22
22
  readonly supply: BundleSupply;
@@ -1,10 +1,9 @@
1
- import type { UnitEnvNeeds, UnitManifest } from '@dsh-workbench/shared';
2
- import type { UnitCapability } from '../../../shared/api/host/probe-units';
1
+ import type { Need, UnitCapability, UnitManifest } from '@dsh-workbench/shared/host';
3
2
  import { type PluginReferences } from './plugin-actions';
4
3
  import type { PluginLedger } from './plugin-ledger';
5
4
  export interface EnvDropper {
6
5
  usersOf(plugin: string, except?: string): string[];
7
- drop(unit: string, env: UnitEnvNeeds | undefined, before: UnitCapability): Promise<string[]>;
6
+ drop(unit: string, needs: readonly Need[] | undefined, before: UnitCapability): Promise<string[]>;
8
7
  }
9
8
  export declare function createEnvDropper(options: {
10
9
  readonly catalog: () => readonly UnitManifest[];
@@ -1,6 +1,6 @@
1
- import type { BundleChange } from '../../../shared/api/bundle-install';
2
- import type { BundleManager } from '../../../shared/api/host/bundle-manager';
3
- import { type RegistryNotebook } from '../../../shared/api/host/profile-registries';
1
+ import type { BundleChange } from '../../../kernel/contract/bundle-install';
2
+ import type { BundleManager } from '@dsh-workbench/shared/host';
3
+ import type { RegistryNotebook } from '@dsh-workbench/shared/host';
4
4
  export interface RegistryFixDeps {
5
5
  readonly registries?: RegistryNotebook | undefined;
6
6
  readonly logger?: {
@@ -1,2 +1,2 @@
1
- import type { BundleChange } from '../../../shared/api/bundle-install';
1
+ import type { BundleChange } from '../../../kernel/contract/bundle-install';
2
2
  export declare function restartLogLine(change: BundleChange | null | undefined): string | undefined;
@@ -1,8 +1,9 @@
1
1
  import type { DshShell } from '@dsh-workbench/shared';
2
2
  import type { PluginSourceCommand } from '@dsh-workbench/shared/host';
3
- import type { BundleChange } from '../../../shared/api/bundle-install';
4
- import type { BundleManager } from '../../../shared/api/host/bundle-manager';
5
- import type { InstalledModule } from '../../../shared/api/host/installed-module';
3
+ import type { BundleChange } from '../../../kernel/contract/bundle-install';
4
+ import type { BundleManager } from '@dsh-workbench/shared/host';
5
+ import type { InstalledModule } from '@dsh-workbench/shared/host';
6
+ import { type SupplyPort } from '@dsh-workbench/shared/host';
6
7
  import type { PluginLedger } from './plugin-ledger';
7
8
  import type { BundleInstallOptions, BundleInstallOutcome, BundleSupply } from './market-types';
8
9
  export interface BundleInstallDeps {
@@ -11,6 +12,7 @@ export interface BundleInstallDeps {
11
12
  readonly registry?: string | undefined;
12
13
  readonly command: string;
13
14
  readonly shell?: DshShell | undefined;
15
+ readonly supply?: SupplyPort | undefined;
14
16
  readonly manager: BundleManager;
15
17
  readonly installed?: ((pkg: string) => InstalledModule) | undefined;
16
18
  readonly logger?: {
@@ -0,0 +1,9 @@
1
+ import type { MarketSourcesAction } from '@dsh-workbench/shared/contract/protocol/market-index';
2
+ import type { MarketSourceInitializer } from '../../../shared/api/host/market-source-init';
3
+ import type { MarketSourcesStore } from '../../../shared/api/host/market-sources-store';
4
+ export declare const MARKET_SOURCES_ACTION_RESOURCE = "market-sources";
5
+ export declare function parseMarketSourcesAction(payload: unknown): MarketSourcesAction;
6
+ export declare function marketSourcesAction(store: MarketSourcesStore, init?: MarketSourceInitializer | undefined): {
7
+ readonly resource: string;
8
+ handle(payload: unknown): Promise<unknown>;
9
+ };
@@ -1,23 +1,15 @@
1
- import type { PluginSource } from '@dsh-workbench/shared';
1
+ import type { Need } from '@dsh-workbench/shared';
2
2
  import type { ProvisionAction } from '@dsh-workbench/shared/host';
3
- import type { BundleCancellation, BundleChange, BundleInstalledPlugin } from '../../../shared/api/bundle-install';
4
- import type { InstalledModule } from '../../../shared/api/host/installed-module';
5
- import type { UnitCapability } from '../../../shared/api/host/probe-units';
3
+ import type { BundleCancellation, BundleChange, BundleInstalledPlugin } from '../../../kernel/contract/bundle-install';
4
+ import type { InstalledModule } from '@dsh-workbench/shared/host';
5
+ import type { UnitCapability } from '@dsh-workbench/shared/host';
6
6
  import type { PluginUninstallOutcome, PluginUpdateOutcome } from './plugin-actions';
7
7
  import type { SharedDependency } from './market-dependency';
8
8
  export type MarketAction = ProvisionAction;
9
9
  export interface MarketEntry {
10
10
  readonly unit: string;
11
11
  readonly titleKey: string;
12
- readonly plugins: readonly {
13
- readonly name: string;
14
- readonly source?: PluginSource;
15
- }[];
16
- readonly libs: readonly {
17
- readonly name: string;
18
- readonly version?: string | undefined;
19
- readonly purpose: string;
20
- }[];
12
+ readonly needs: readonly Need[];
21
13
  readonly capability: UnitCapability;
22
14
  }
23
15
  export interface UninstallResult {
@@ -64,6 +56,7 @@ export interface MarketService {
64
56
  uninstall(unit: string): Promise<UninstallResult>;
65
57
  updateDependency(id: string): Promise<readonly SharedDependency[]>;
66
58
  installBundle(spec: string, options?: BundleInstallOptions): Promise<BundleInstallOutcome>;
59
+ replaceBundle(spec: string, options?: BundleInstallOptions): Promise<BundleInstallOutcome>;
67
60
  updateBundle(unit: string): Promise<BundleInstallOutcome | null>;
68
61
  updateWorkbench(pkg: string): Promise<BundleInstallOutcome>;
69
62
  removeBundle(pkg: string): Promise<BundleRemoveOutcome>;
@@ -1,6 +1,6 @@
1
1
  import type { DshShell } from '@dsh-workbench/shared';
2
- import type { BundleManager } from '../../../shared/api/host/bundle-manager';
3
- import type { InstalledModule, ProfileModule } from '../../../shared/api/host/installed-module';
2
+ import type { BundleManager, SupplyPort } from '@dsh-workbench/shared/host';
3
+ import type { InstalledModule, ProfileModule } from '@dsh-workbench/shared/host';
4
4
  import { type ReplaceBundleDeps } from './market-route';
5
5
  import type { BundleInstallOutcome } from './market-types';
6
6
  export interface BundleUpdateDeps {
@@ -14,12 +14,6 @@ export interface BundleUpdateDeps {
14
14
  readonly logger?: {
15
15
  warn?(message: string): void;
16
16
  } | undefined;
17
+ readonly supply?: SupplyPort | undefined;
17
18
  }
18
- /**
19
- * 模块行那一颗「更新」:拿源上最新那一版(问不到就让源决定),有包就「先卸再装」,
20
- * 跑完**重新读盘对账**——版本没动、模块丢了、没到最新,都不许回一句“成了”。
21
- * @param unit 市场行的单元 id(模块包自己的 `dsh.workbench.unit`)。
22
- * @returns 管理器那一跳 + 校正后的 `change`、盘上实际 `module`、装丢后回滚成功的 `restored`;
23
- * 这份 profile 里没有这个模块时回 `null`。
24
- */
25
19
  export declare function updateModuleBundle(unit: string, deps: BundleUpdateDeps): Promise<BundleInstallOutcome | null>;
@@ -1,15 +1,7 @@
1
- import type { BundleChange } from '../../../shared/api/bundle-install';
2
- import type { InstalledModule } from '../../../shared/api/host/installed-module';
3
- import type { UnitCapability } from '../../../shared/api/host/probe-units';
1
+ import type { BundleChange } from '../../../kernel/contract/bundle-install';
2
+ import type { InstalledModule } from '@dsh-workbench/shared/host';
3
+ import type { UnitCapability } from '@dsh-workbench/shared/host';
4
4
  import type { DependencyTarget } from './market-dependency';
5
- /**
6
- * 更新跑完拿盘上的真实结果核对一次:dsh 回 `applied` 只代表"这一跳跑完了",不代表版本真的动了
7
- * (源上给的版本可能不是最新、`pnpm` 也可能按供应策略暂缓)。判据是**点下去那一版 vs 盘上这一版**:
8
- * 没动就是 `no-change`,装完读不到模块就是 `module-gone`;两种情况都会把红字交给界面,而不是假装成功。
9
- * @param input.change 管理器回的那一跳;`before` 点下去之前盘上的版本;`after` 跑完再读的盘上结果。
10
- * @param input.restored 装丢之后回滚成功时装回去的版本(失败的那一跳仍然是失败)。
11
- * @returns 校正后的 `change`(成功时带 `version` = 盘上实际版本)与 `restored`。
12
- */
13
5
  export declare function verifyBundleUpdate(input: {
14
6
  readonly change: BundleChange;
15
7
  readonly before: string | undefined;
@@ -19,13 +11,5 @@ export declare function verifyBundleUpdate(input: {
19
11
  readonly change: BundleChange;
20
12
  readonly restored?: string;
21
13
  };
22
- /**
23
- * 命令那一跳(升 opencli 插件 / 库)跑完还落后时给一句人话:`undefined` = 真追上。
24
- * @param after 跑完重新探到的能力格;只认它自己的 `fix === 'update'`,别的失败不在这里下结论。
25
- */
26
14
  export declare function supplyUpdateStillBehind(after: UnitCapability): string | undefined;
27
- /**
28
- * 共用依赖行更新完还落后(插件 `outdated` 或库 `outdated` / `unsatisfied`)时给一句人话。
29
- * @param target 这一行代表的那份依赖;`capabilities` 是跑完后**强探**过的那批声明者。
30
- */
31
15
  export declare function dependencyStillBehind(target: DependencyTarget, capabilities: ReadonlyMap<string, UnitCapability>): string | undefined;
@@ -1,6 +1,6 @@
1
1
  import type { DshShell } from '@dsh-workbench/shared';
2
- import type { InstalledModule, ProfilePackage } from '../../../shared/api/host/installed-module';
3
- import { type SelfUpdateRequest, type SelfUpdateStart } from '../../../shared/api/host/self-update';
2
+ import type { InstalledModule, ProfilePackage, SupplyPort } from '@dsh-workbench/shared/host';
3
+ import type { SelfUpdateRequest, SelfUpdateStart } from '@dsh-workbench/shared/host';
4
4
  import type { BundleInstallOutcome } from './market-types';
5
5
  export interface WorkbenchUpdateDeps {
6
6
  readonly asked: string;
@@ -15,5 +15,6 @@ export interface WorkbenchUpdateDeps {
15
15
  info?(message: string): void;
16
16
  warn?(message: string): void;
17
17
  } | undefined;
18
+ readonly supply?: SupplyPort | undefined;
18
19
  }
19
20
  export declare function updateWorkbenchOnce(deps: WorkbenchUpdateDeps): Promise<BundleInstallOutcome>;
@@ -1,10 +1,10 @@
1
1
  import type { DshShell } from '@dsh-workbench/shared';
2
2
  import type { UnitManifest } from '@dsh-workbench/shared';
3
- import type { BundleManager } from '../../../shared/api/host/bundle-manager';
4
- import type { InstalledModule, ProfileModule, ProfilePackage } from '../../../shared/api/host/installed-module';
5
- import type { RegistryNotebook } from '../../../shared/api/host/profile-registries';
6
- import type { UnitMountDeps } from '@dsh-workbench/shared/host';
7
- import type { SelfUpdateRequest, SelfUpdateStart } from '../../../shared/api/host/self-update';
3
+ import type { BundleManager } from '@dsh-workbench/shared/host';
4
+ import type { InstalledModule, ProfileModule, ProfilePackage } from '@dsh-workbench/shared/host';
5
+ import type { RegistryNotebook } from '@dsh-workbench/shared/host';
6
+ import { type SupplyPort, type UnitMountDeps } from '@dsh-workbench/shared/host';
7
+ import type { SelfUpdateRequest, SelfUpdateStart } from '@dsh-workbench/shared/host';
8
8
  import { type PluginReferences } from './plugin-actions';
9
9
  import type { PluginLedger } from './plugin-ledger';
10
10
  import type { MarketService } from './market-types';
@@ -33,4 +33,5 @@ export declare function createMarketService(options: {
33
33
  info?(message: string): void;
34
34
  warn?(message: string): void;
35
35
  } | undefined;
36
+ supply?: SupplyPort | undefined;
36
37
  }): MarketService;
@@ -1,5 +1,5 @@
1
1
  import type { DshShell } from '@dsh-workbench/shared';
2
- import { type PluginSourceCommand } from '@dsh-workbench/shared/host';
2
+ import { type PluginSourceCommand, type SupplyPort } from '@dsh-workbench/shared/host';
3
3
  import type { PluginLedger } from './plugin-ledger';
4
4
  export type PluginKept = {
5
5
  readonly kind: 'held';
@@ -47,4 +47,5 @@ export declare function createPluginActions(options: {
47
47
  info?(message: string): void;
48
48
  warn?(message: string): void;
49
49
  } | undefined;
50
+ readonly supply?: SupplyPort | undefined;
50
51
  }): PluginActions;
@@ -1,13 +1,15 @@
1
1
  import type { DshShell } from '@dsh-workbench/shared';
2
- import { type RouteTable } from '@dsh-workbench/shared/host';
2
+ import { type RouteTable, type SupplyPort } from '@dsh-workbench/shared/host';
3
3
  import type { InstalledPlugin } from '../../../shared/api/installed-plugins';
4
4
  import type { PluginLedger } from './plugin-ledger';
5
5
  export declare function installedPlugins(options: {
6
6
  readonly ledger: PluginLedger;
7
7
  readonly shell?: DshShell | undefined;
8
8
  readonly force?: boolean;
9
+ readonly supply?: SupplyPort | undefined;
9
10
  }): Promise<readonly InstalledPlugin[]>;
10
11
  export declare function pluginRoutes(options: {
11
12
  readonly ledger: PluginLedger;
12
13
  readonly shell?: DshShell | undefined;
14
+ readonly supply?: SupplyPort | undefined;
13
15
  }): RouteTable;
@@ -0,0 +1,2 @@
1
+ import type { RouteTable } from '@dsh-workbench/shared/host';
2
+ export declare function publishPreviewRoutes(workshop: string | null): RouteTable;
@@ -19,7 +19,9 @@ export declare const DIY_PANEL_TOOL = "workbench_diy_panel";
19
19
  export declare const DIY_COMPONENTS_TOOL = "workbench_diy_components";
20
20
  export declare const DIY_RECON_TOOL = "workbench_diy_recon";
21
21
  export declare const DIY_SPEC_TOOL = "workbench_diy_spec";
22
+ export declare const DIY_CHANGELOG_TOOL = "workbench_diy_changelog";
22
23
  export declare const DIY_INSTALL_TOOL = "workbench_diy_install";
24
+ export declare const DIY_PUBLISH_TOOL = "workbench_diy_publish";
23
25
  export declare const DIY_SHOW_TOOL = "workbench_diy_show";
24
26
  export declare const DIY_STATE_TOOL = "workbench_diy_state";
25
27
  export declare const DIY_HTML_TOOL = "workbench_diy_html";
@@ -48,11 +50,13 @@ export declare const DIY_DEBUG_START_TOOL = "workbench_diy_debug_start";
48
50
  export declare const DIY_DEBUG_PAUSE_TOOL = "workbench_diy_debug_pause";
49
51
  export declare const DIY_DEBUG_RESUME_TOOL = "workbench_diy_debug_resume";
50
52
  export declare const DIY_DEBUG_STOP_TOOL = "workbench_diy_debug_stop";
51
- export declare const ALL_TOOLS: readonly ["workbench_panels_list", "workbench_panels_show", "workbench_panels_hide", "workbench_panels_move", "workbench_panels_reset", "workbench_panels_follow", "workbench_modules_list", "workbench_modules_install", "workbench_modules_update", "workbench_modules_uninstall", "workbench_modules_install_bundle", "workbench_modules_update_dependency", "workbench_modules_update_plugin", "workbench_modules_uninstall_plugin", "workbench_modules_update_workbench", "workbench_diy_status", "workbench_diy_panel", "workbench_diy_components", "workbench_diy_recon", "workbench_diy_spec", "workbench_diy_install", "workbench_diy_show", "workbench_diy_state", "workbench_diy_html", "workbench_diy_find", "workbench_diy_click", "workbench_diy_hover", "workbench_diy_type", "workbench_diy_fill", "workbench_diy_keys", "workbench_diy_scroll", "workbench_diy_wait", "workbench_diy_eval", "workbench_diy_screenshot", "workbench_diy_network", "workbench_diy_dialog", "workbench_diy_logs_watch", "workbench_diy_logs_read", "workbench_diy_logs_stop", "workbench_diy_record_prepare", "workbench_diy_record_read", "workbench_diy_record_detail", "workbench_diy_record_stop", "workbench_diy_debug_start", "workbench_diy_debug_pause", "workbench_diy_debug_resume", "workbench_diy_debug_stop", "workbench_long_tasks_list", "workbench_long_tasks_stop"];
53
+ export declare const ALL_TOOLS: readonly ["workbench_panels_list", "workbench_panels_show", "workbench_panels_hide", "workbench_panels_move", "workbench_panels_reset", "workbench_panels_follow", "workbench_modules_list", "workbench_modules_install", "workbench_modules_update", "workbench_modules_uninstall", "workbench_modules_install_bundle", "workbench_modules_update_dependency", "workbench_modules_update_plugin", "workbench_modules_uninstall_plugin", "workbench_modules_update_workbench", "workbench_diy_status", "workbench_diy_panel", "workbench_diy_components", "workbench_diy_recon", "workbench_diy_spec", "workbench_diy_changelog", "workbench_diy_install", "workbench_diy_publish", "workbench_diy_show", "workbench_diy_state", "workbench_diy_html", "workbench_diy_find", "workbench_diy_click", "workbench_diy_hover", "workbench_diy_type", "workbench_diy_fill", "workbench_diy_keys", "workbench_diy_scroll", "workbench_diy_wait", "workbench_diy_eval", "workbench_diy_screenshot", "workbench_diy_network", "workbench_diy_dialog", "workbench_diy_logs_watch", "workbench_diy_logs_read", "workbench_diy_logs_stop", "workbench_diy_record_prepare", "workbench_diy_record_read", "workbench_diy_record_detail", "workbench_diy_record_stop", "workbench_diy_debug_start", "workbench_diy_debug_pause", "workbench_diy_debug_resume", "workbench_diy_debug_stop", "workbench_long_tasks_list", "workbench_long_tasks_stop"];
52
54
  export type PanelsToolName = (typeof ALL_TOOLS)[number];
53
55
  export declare const READ_TOOLS: readonly ["workbench_panels_list", "workbench_modules_list", "workbench_diy_status", "workbench_diy_panel", "workbench_diy_components", "workbench_diy_recon", "workbench_diy_spec", "workbench_diy_state", "workbench_diy_html", "workbench_diy_find", "workbench_diy_click", "workbench_diy_hover", "workbench_diy_type", "workbench_diy_fill", "workbench_diy_keys", "workbench_diy_scroll", "workbench_diy_wait", "workbench_diy_eval", "workbench_diy_screenshot", "workbench_diy_network", "workbench_diy_dialog", "workbench_diy_logs_watch", "workbench_diy_logs_read", "workbench_diy_logs_stop", "workbench_diy_record_read", "workbench_diy_record_detail", "workbench_diy_record_stop", "workbench_long_tasks_list"];
54
- export declare const WRITE_TOOLS: readonly ["workbench_panels_show", "workbench_panels_hide", "workbench_panels_move", "workbench_panels_reset", "workbench_panels_follow", "workbench_modules_install", "workbench_modules_update", "workbench_modules_uninstall", "workbench_modules_install_bundle", "workbench_modules_update_dependency", "workbench_modules_update_plugin", "workbench_modules_uninstall_plugin", "workbench_modules_update_workbench", "workbench_diy_install", "workbench_diy_show", "workbench_diy_record_prepare", "workbench_diy_debug_start", "workbench_diy_debug_pause", "workbench_diy_debug_resume", "workbench_diy_debug_stop", "workbench_long_tasks_stop"];
55
- export declare const DIY_TOOLS: readonly ["workbench_diy_status", "workbench_diy_panel", "workbench_diy_components", "workbench_diy_recon", "workbench_diy_spec", "workbench_diy_install", "workbench_diy_show", "workbench_diy_state", "workbench_diy_html", "workbench_diy_find", "workbench_diy_click", "workbench_diy_hover", "workbench_diy_type", "workbench_diy_fill", "workbench_diy_keys", "workbench_diy_scroll", "workbench_diy_wait", "workbench_diy_eval", "workbench_diy_screenshot", "workbench_diy_network", "workbench_diy_dialog", "workbench_diy_logs_watch", "workbench_diy_logs_read", "workbench_diy_logs_stop"];
56
+ export declare const WRITE_TOOLS: readonly ["workbench_panels_show", "workbench_panels_hide", "workbench_panels_move", "workbench_panels_reset", "workbench_panels_follow", "workbench_modules_install", "workbench_modules_update", "workbench_modules_uninstall", "workbench_modules_install_bundle", "workbench_modules_update_dependency", "workbench_modules_update_plugin", "workbench_modules_uninstall_plugin", "workbench_modules_update_workbench", "workbench_diy_changelog", "workbench_diy_install", "workbench_diy_publish", "workbench_diy_show", "workbench_diy_record_prepare", "workbench_diy_debug_start", "workbench_diy_debug_pause", "workbench_diy_debug_resume", "workbench_diy_debug_stop", "workbench_long_tasks_stop"];
57
+ export declare const DIY_TOOLS: readonly ["workbench_diy_status", "workbench_diy_panel", "workbench_diy_components", "workbench_diy_recon", "workbench_diy_spec", "workbench_diy_changelog", "workbench_diy_install", "workbench_diy_publish", "workbench_diy_show", "workbench_diy_state", "workbench_diy_html", "workbench_diy_find", "workbench_diy_click", "workbench_diy_hover", "workbench_diy_type", "workbench_diy_fill", "workbench_diy_keys", "workbench_diy_scroll", "workbench_diy_wait", "workbench_diy_eval", "workbench_diy_screenshot", "workbench_diy_network", "workbench_diy_dialog", "workbench_diy_logs_watch", "workbench_diy_logs_read", "workbench_diy_logs_stop"];
56
58
  export declare const DIY_RECORD_TOOLS: readonly ["workbench_diy_record_prepare", "workbench_diy_record_read", "workbench_diy_record_detail", "workbench_diy_record_stop"];
57
59
  export declare const DIY_DEBUG_TOOLS: readonly ["workbench_diy_debug_start", "workbench_diy_debug_pause", "workbench_diy_debug_resume", "workbench_diy_debug_stop"];
60
+ export declare const DIY_LOGS_TOOLS: readonly ["workbench_diy_logs_watch", "workbench_diy_logs_read", "workbench_diy_logs_stop"];
61
+ export declare function screenOnlyToolsFor(pageDebug: boolean): readonly PanelsToolName[];
58
62
  export declare const panelsUnit: UnitManifest;
@@ -1,25 +1,14 @@
1
1
  import type { SessionStatusSnapshot, SessionSummary, SessionsSnapshot, Translate, WorkspaceView } from '@dsh-workbench/shared';
2
2
  export type AttentionSeverity = 'warning' | 'ongoing' | 'done';
3
- /**
4
- * 一个工作区那颗状态点:`count` 是**会话**条数(照旧,长任务没有会话可归时它是 0);
5
- * `longTask` 为真表示这一档说的是长任务而不是会话 —— 只改那句人话的措辞。
6
- */
7
3
  export interface WorkspaceAttention {
8
4
  readonly severity: AttentionSeverity;
9
5
  readonly count: number;
10
6
  readonly longTask?: boolean | undefined;
11
7
  }
12
- /** 还在跑的长任务按两边归:会话行那颗 loading 点看 `bySession`,项目下拉每一行看 `byWorkspace`(按工作区路径数条数)。 */
13
8
  export interface LongTaskPresence {
14
9
  readonly bySession: ReadonlySet<string>;
15
10
  readonly byWorkspace: ReadonlyMap<string, number>;
16
11
  }
17
- /**
18
- * 把外壳那条长任务读口交回的行折成两侧的归属:有会话可归的进 `bySession`(那一行自己亮),
19
- * 每一条都按它属于哪个工作区进 `byWorkspace`(没有会话可归的那些只有这一侧看得见)。
20
- * @param rows 还在跑的长任务;每行要有它属于哪个工作区,会话那格可以没有。
21
- * @returns 两侧的归属;空输入就是两侧都空。
22
- */
23
12
  export declare function longTaskPresenceOf(rows: readonly {
24
13
  readonly workspace: string;
25
14
  readonly session?: string | undefined;
@@ -17,16 +17,6 @@ export interface SessionStatusDot {
17
17
  readonly trailingLabel?: string;
18
18
  }
19
19
  export declare function visiblePendingKind(kind: string | undefined): string | undefined;
20
- /**
21
- * 把一条会话读成行上要的那几格。
22
- * @param summary 会话摘要。
23
- * @param statusById 会话状态表。
24
- * @param list 会话快照(子代理花名册在这里)。
25
- * @param pinnedIds 置顶的那些。
26
- * @param archivedIds 归档的那些。
27
- * @param longTaskIds 有长任务在跑的那些会话(外壳那条读口按“这趟是谁起的”算出来的);不给就是都没有。
28
- * @returns 行模型;`longTask` 为真表示这条会话起的某趟长任务还在跑(它自己那一轮可能早结束了)。
29
- */
30
20
  export declare function sessionNode(summary: SessionSummary, statusById: SessionStatusSnapshot, list: SessionsSnapshot, pinnedIds: ReadonlySet<string>, archivedIds: ReadonlySet<string>, longTaskIds?: ReadonlySet<string>): SessionNode;
31
21
  export declare function sessionStatuses(node: SessionNode, t: Translate): SessionStatusDot[];
32
22
  export declare function currentSessionId(list: SessionsSnapshot, panelActive: boolean): string | undefined;
@@ -1,9 +1,11 @@
1
- export declare const DIY_PRESET_ID = "workbench-diy";
2
- export declare const WORKSHOP_RELATIVE = "workbench/diy";
3
- export declare const WORKSHOP_TITLE = "\u5DE5\u4F5C\u53F0DIY";
4
- export declare const WORKSHOP_PAST_TITLES: readonly string[];
1
+ export { DIY_PRESET_ID, WORKSHOP_PAST_TITLES, WORKSHOP_RELATIVE, WORKSHOP_TITLE } from '../../kernel/contract/diy';
5
2
  export declare function isWorkshopPath(path: string): boolean;
6
3
  export interface DiyStartOptions {
7
4
  readonly agentPreset: string;
8
5
  }
9
6
  export declare function diyStartOptions(workspaceId: string, workshopId: string | undefined): DiyStartOptions | undefined;
7
+ export declare function workshopPresetUpgrade(input: {
8
+ readonly workshop: boolean;
9
+ readonly blank: boolean;
10
+ readonly preset: unknown;
11
+ }): string | undefined;
@@ -1,16 +1,7 @@
1
1
  import type { DshToolRunContext } from '@dsh-workbench/shared';
2
2
  import { type ApprovalCall } from '@dsh-workbench/shared/host';
3
- /**
4
- * 审批那一拍看到的这次工具调用:工具名 / 实参 / 所在工作区 / 发起的会话。
5
- */
6
3
  export interface ApprovalExec {
7
4
  readonly arguments?: unknown;
8
5
  readonly agent?: DshToolRunContext['agent'];
9
6
  }
10
- /**
11
- * 把 dsh 交来的那次工具调用折成审批策略要看的那份 call:工作区与发起会话都从 `exec` 现取,取不到就不写那个键。
12
- * @param exec dsh 交来的执行上下文;没有就只有实参这一格。
13
- * @param name 工具名;`undefined` = 这次调用没名字,不写这个键。
14
- * @returns 交给 `approvalFor` 的 `ApprovalCall`。
15
- */
16
7
  export declare function approvalCallOf(exec: ApprovalExec | undefined, name: string | undefined): ApprovalCall;
@@ -1,16 +1,10 @@
1
1
  import type { DshHostContext, DshToolRunContext } from '@dsh-workbench/shared';
2
2
  import { type ToolUnit, type UnitMountResult } from '@dsh-workbench/shared/host';
3
- /**
4
- * dsh 交来的 `tools/pre-execute` 现场:工具名、实参与发起它的 agent。
5
- */
6
3
  export interface ApprovalGateExec {
7
4
  readonly name?: string;
8
5
  readonly arguments?: unknown;
9
6
  readonly agent?: DshToolRunContext['agent'];
10
7
  }
11
- /**
12
- * 外壳这一拍能交出的判定:与 dsh 的 pre-execute 判定同形。
13
- */
14
8
  export type ApprovalGateDecision = {
15
9
  readonly kind: 'allow';
16
10
  } | {
@@ -23,17 +17,10 @@ export type ApprovalGateDecision = {
23
17
  readonly reason?: string;
24
18
  readonly displayReason?: Record<string, string>;
25
19
  };
26
- /**
27
- * 造审批监听器要从当前挂载表现取的三件事:这把工具属于哪个套件、那个套件的面、以及哪些工具声明了附注。
28
- */
29
20
  export interface ApprovalGateDeps {
30
21
  readonly ctx: DshHostContext;
31
22
  readonly toolOf: (name: string) => ToolUnit | undefined;
32
23
  readonly faceOf: (unit: string) => UnitMountResult | undefined;
33
24
  readonly declaredNotes: () => ReadonlySet<string>;
34
25
  }
35
- /**
36
- * 造 `tools/pre-execute` 的监听器:先让后面那道闸判,只有它说 allow 才轮到外壳的写审批。
37
- * 完全权限下不再把 `ask` 交出去(dsh 的 `never` 会直接拒),认领与 `{blocked}` 仍由 `approvalFor` 守。
38
- */
39
26
  export declare function createApprovalGate(deps: ApprovalGateDeps): (exec: ApprovalGateExec, next: () => Promise<ApprovalGateDecision>) => Promise<ApprovalGateDecision>;
@@ -1,6 +1,6 @@
1
1
  import type { DshHostContext, DshShell } from '@dsh-workbench/shared';
2
2
  import { type RouteHandler } from '@dsh-workbench/shared/host';
3
- import { type WorkbenchSelfUpdate } from '../bundle-install.js';
3
+ import { type WorkbenchSelfUpdate } from '../../../kernel/contract/bundle-install';
4
4
  export declare function bundleRegistriesHandler(ctx: DshHostContext): RouteHandler;
5
5
  export declare function resetRefusalLog(): void;
6
6
  export declare function resetHoldLog(): void;
@@ -1,14 +1,3 @@
1
1
  import type { DshHostContext } from '@dsh-workbench/shared';
2
- /**
3
- * 这次会话的取证材料落哪儿(截图 / `rec-*.jsonl` / `net-*.jsonl`):外壳自己的目录,按工作区分桶
4
- * (目录名 + 路径哈希前 8 位)。**不落用户仓库、也不落任何模块目录** —— 它在 opencli 的可写根内。
5
- * @param ctx - 宿主上下文(要 `dshHomePath` 服务)。
6
- * @param root - 工作区根(会话的登记 path)。
7
- * @returns 绝对路径;这台机器没有 `dshHomePath` 时抛错。
8
- */
9
2
  export declare function artifactsDirOf(ctx: DshHostContext, root: string): string;
10
- /**
11
- * 把这个目录建出来(宿主进程直接建 —— 不走 agent 的 shell,沙箱只放行会话工作区)。
12
- * @param dir - 要建的绝对路径;已存在就什么都不做。
13
- */
14
3
  export declare function ensureDirOf(dir: string): void;
@@ -0,0 +1,13 @@
1
+ import type { ChangelogKind } from '@dsh-workbench/shared/host';
2
+ export interface ChangelogWrite {
3
+ readonly file: string;
4
+ readonly section: string;
5
+ readonly text: string;
6
+ }
7
+ export declare function moduleVersionOf(dir: string): string;
8
+ export declare function writeChangelogEntry(dir: string, input: {
9
+ readonly version: string;
10
+ readonly kind: ChangelogKind;
11
+ readonly note: string;
12
+ readonly date?: string;
13
+ }): ChangelogWrite;
@@ -6,7 +6,7 @@ export declare const NEAR_LIMIT = 8;
6
6
  export declare const PRUNE_CHARS = 8192;
7
7
  export declare const PRIMITIVES_PKG = "@deepseek-ai/dsh-client-ui-primitives";
8
8
  export declare const MANIFEST_TAIL = "//# sourceMappingURL=";
9
- export type SurfaceScope = 'all' | 'primitives' | 'kit';
9
+ export type SurfaceScope = 'all' | 'primitives' | 'kit' | 'tokens';
10
10
  export interface SurfacePayload {
11
11
  readonly [key: string]: unknown;
12
12
  }
@@ -32,7 +32,6 @@ export declare function findFileOf(name: string, query: SurfaceQuery): {
32
32
  } | null;
33
33
  export declare function excerptOf(text: string, maxLines?: number): string;
34
34
  export declare function excerptAt(file: string, maxLines?: number): string;
35
- /** 指引目录:从宿主产物往上找 `skills/workbench-module-diy`(找不到回 `null`)。 */
36
35
  export declare function skillDirOf(from: string): string | null;
37
36
  export declare function byLocationOf(payload: SurfacePayload): readonly {
38
37
  readonly where: string;
@@ -49,7 +48,7 @@ export declare function bucketNamesOf(query: SurfaceQuery): readonly {
49
48
  readonly face: 'kit' | 'primitives';
50
49
  readonly keys: readonly string[];
51
50
  }[];
52
- export declare const TWO_FACE_ALL = "\u26A0\uFE0F \u4E24\u4E2A\u9762\u4E00\u8D77\u4E0D\u7ED9\u5168\u8868 \u2014\u2014 \u8981\u5168\u8868\u5C31\u6307\u540D\u4E00\u9762\uFF1Ascope=kit \u6216 scope=primitives\u3002";
51
+ export declare const TWO_FACE_ALL = "\u26A0\uFE0F \u8981\u5168\u8868\u5C31\u6307\u540D\u4E00\u9762\uFF1Ascope=kit / primitives / tokens\u3002";
53
52
  export declare function refusesEvery(scope: SurfaceScope, all: boolean, focused: boolean): boolean;
54
53
  export declare function renderSurfaceText(query: SurfaceQuery, options: {
55
54
  scope: SurfaceScope;
@@ -7,23 +7,7 @@ export interface DiyModule {
7
7
  }
8
8
  export declare function insideRoot(root: string, target: string): boolean;
9
9
  export type WorkspaceShape = 'workspace' | 'package' | 'bare';
10
- /**
11
- * 这个工作区**像什么**(只用来把话说清楚,不用来拒绝任何事):自己声明了 workspace(`pnpm-workspace.yaml`
12
- * 或 `package.json` 的 `workspaces`)就是 `workspace`;有 `package.json` 但没声明 workspace 是 `package`;
13
- * 连 `package.json` 都没有是 `bare`(空项目 / 一堆散文件都算这一档 —— DIY 的看与调不挑结构)。
14
- * @param root - 工作区根。
15
- * @returns 这三种形状之一。
16
- */
17
10
  export declare function shapeOf(root: string): WorkspaceShape;
18
- /**
19
- * 这个工作区里有哪些 DIY 模块:工作区根自己的 `package.json`、加上它声明的 workspace 包目录
20
- * (`pnpm-workspace.yaml` 的 `packages:`,或 `package.json` 的 `workspaces`),凡在
21
- * `dsh.workbench.unit` 里报了 id 的都算(ADR-0038 的声明协议)。
22
- * **只读声明、不猜目录**:工作区是什么结构都行(空项目 / 单包 / monorepo),找不到就是空数组。
23
- * @param root - 工作区根(会话的登记 path)。
24
- * @param installed - 已经装进 profile 的单元 id(会标在每一行上)。
25
- * @returns 按 unit 排好序的模块表;一个都没有就给空数组。
26
- */
27
11
  export declare function modulesIn(root: string, installed?: readonly string[]): readonly DiyModule[];
28
12
  export declare function readDesignOfModule(dir: string): unknown;
29
13
  export interface SyncState {
@@ -0,0 +1,4 @@
1
+ import type { PublishPreview } from '@dsh-workbench/shared/contract/protocol/market-index';
2
+ export declare function publishPreviewOf(root: string | null | undefined, unit: string, options?: {
3
+ readonly version?: string | undefined;
4
+ }): PublishPreview | null;
@@ -1,3 +1,3 @@
1
1
  import { type ReconCommand, type ReconPlugin } from './diy-recon';
2
- export declare function reconCatalogOf(path?: string): readonly ReconCommand[] | undefined;
3
- export declare function installedPluginsOf(dir?: string): readonly ReconPlugin[];
2
+ export declare function reconCatalogOf(path: string): readonly ReconCommand[] | undefined;
3
+ export declare function installedPluginsOf(dir: string): readonly ReconPlugin[];
@@ -0,0 +1,8 @@
1
+ import type { TokenSet } from '@dsh-workbench/shared/host';
2
+ export interface TokenRenderOptions {
3
+ readonly name: string;
4
+ readonly bucket: string;
5
+ readonly all: boolean;
6
+ readonly searched: readonly string[];
7
+ }
8
+ export declare function renderTokensText(set: TokenSet, options: TokenRenderOptions): string;
@@ -1,13 +1,10 @@
1
1
  import type { DshHostContext } from '@dsh-workbench/shared';
2
- import type { FactLog, RouteTable } from '@dsh-workbench/shared/host';
3
- import type { OpencliResolution } from './opencli-command';
4
- /**
5
- * 外壳的几条读口路由(健康 / 事实 / 插件 / 模块版本 / 装前预检)。
6
- * @param input.ctx 宿主上下文;`running` 是**加载它的进程**里那一版(不是盘上),自更新后两者会不同。
7
- */
2
+ import type { FactLog, ProfilePort, RouteTable } from '@dsh-workbench/shared/host';
3
+ import type { OpencliResolution } from '@dsh-workbench/shared/host';
8
4
  export declare function createHostRoutes(input: {
9
5
  readonly ctx: DshHostContext;
10
6
  readonly facts: FactLog;
11
7
  readonly opencli: OpencliResolution;
12
8
  readonly running: string | undefined;
9
+ readonly profile: ProfilePort;
13
10
  }): RouteTable;
@@ -1,30 +1,10 @@
1
1
  import type { LongTaskBase, LongTaskChange } from '@dsh-workbench/shared/host';
2
2
  import { type AgentsLookup, type NoticeDelivery, type NoticeMessage } from './diy-debug-act';
3
- /**
4
- * 这条 notice 的来源标识(`source.kind`)—— 长任务自己一格,与调试 / 录制分开。
5
- */
6
3
  export declare const LONG_TASK_NOTICE_KIND = "workbench-long-task";
7
- /**
8
- * 一条"这一趟被停了"的 notice:发给谁(`session`)、说什么(`message` / `summary`)。
9
- */
10
4
  export interface LongTaskStopNotice {
11
5
  readonly session: string;
12
6
  readonly message: NoticeMessage;
13
7
  readonly summary: string;
14
8
  }
15
- /**
16
- * 判这一趟被停要不要回流给发起它的那个会话,并把话写好。
17
- * 只有"结算 + `stopped` + 这一趟记得会话 + 不是它自己停的"才回一条;跑完 / 失败 / 界面起的(没记会话)/ 自己停的回 `null`。
18
- * @param unit 这一趟属于哪个单元(进文案)。
19
- * @param change 长任务那一次变更;只有 `kind: 'settle'` 且 `snapshot.status === 'stopped'` 才可能成。
20
- * @returns 该发的那条(带收件会话),或者 `null`(不发)。
21
- */
22
9
  export declare function longTaskStopNotice(unit: string, change: LongTaskChange<LongTaskBase>): LongTaskStopNotice | null;
23
- /**
24
- * 把"这一趟被停了"送出去:正在跑的会话 inject 一条、闲着的跳过、没有这个 agent 就当没发生(模式 `drop`)。
25
- * @param agents 会话表(宿主从 `ctx.get('agents')` 拿);拿不到就什么都不发。
26
- * @param unit 这一趟属于哪个单元。
27
- * @param change 长任务那一次变更。
28
- * @returns 送出去的结果;判据说不该发(`longTaskStopNotice` 回 `null`)就回 `null`。
29
- */
30
10
  export declare function notifyLongTaskStop(agents: AgentsLookup | undefined, unit: string, change: LongTaskChange<LongTaskBase>): NoticeDelivery | null;