@dsh-workbench/shared 0.3.10 → 1.0.0-beta.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/LICENSE +21 -0
- package/README.md +97 -0
- package/dist/api/blocker-table.d.ts +3 -3
- package/dist/api/blocker-table.js +47 -23
- package/dist/api/dsh.d.ts +19 -1
- package/dist/api/host-write.d.ts +0 -15
- package/dist/api/host-write.js +1 -35
- package/dist/api/workbench-client.js +2 -1
- package/dist/components/Activity.css +0 -1
- package/dist/components/ApprovalDetail.css +1 -2
- package/dist/components/ApprovalDetail.d.ts +1 -1
- package/dist/components/ApprovalPlan.css +0 -1
- package/dist/components/Card.css +0 -1
- package/dist/components/Card.d.ts +1 -1
- package/dist/components/CardBoundary.d.ts +1 -1
- package/dist/components/CardHead.css +0 -1
- package/dist/components/CardHead.d.ts +1 -1
- package/dist/components/ChoiceGroup.css +1 -2
- package/dist/components/ConfirmBar.d.ts +1 -1
- package/dist/components/ConfirmBar.js +1 -1
- package/dist/components/Form.css +1 -1
- package/dist/components/FormActions.js +1 -1
- package/dist/components/LongTaskRow.css +1 -2
- package/dist/components/LongTaskRow.d.ts +1 -1
- package/dist/components/LongTaskRow.js +1 -1
- package/dist/components/Note.css +0 -1
- package/dist/components/ResourceStates.css +0 -1
- package/dist/components/SettingsSection.css +0 -1
- package/dist/components/Spinner.css +0 -1
- package/dist/components/Stack.css +0 -1
- package/dist/components/StateBlock.css +0 -1
- package/dist/components/board-module.d.ts +3 -3
- package/dist/components/icons.d.ts +1 -7
- package/dist/components/icons.js +11 -16
- package/dist/config/constants.d.ts +2 -2
- package/dist/config/constants.js +2 -2
- package/dist/config/storage.d.ts +0 -4
- package/dist/config/storage.js +0 -11
- package/dist/contract/adapters.d.ts +10 -0
- package/dist/contract/cli.d.ts +3 -0
- package/dist/contract/data.d.ts +126 -0
- package/dist/{api → contract}/facts.d.ts +12 -3
- package/dist/{api → contract}/facts.js +19 -1
- package/dist/contract/needs.d.ts +132 -0
- package/dist/contract/needs.js +232 -0
- package/dist/contract/plugin-source.d.ts +1 -0
- package/dist/contract/plugin-source.js +1 -0
- package/dist/contract/protocol/bundle-install.d.ts +136 -0
- package/dist/contract/protocol/bundle-install.js +12 -0
- package/dist/contract/protocol/config-sync.d.ts +55 -0
- package/dist/contract/protocol/config-sync.js +2 -0
- package/dist/contract/protocol/diy.d.ts +4 -0
- package/dist/contract/protocol/diy.js +4 -0
- package/dist/contract/protocol/dsh-plugins.d.ts +11 -0
- package/dist/contract/protocol/dsh-plugins.js +1 -0
- package/dist/contract/protocol/long-tasks.d.ts +13 -0
- package/dist/contract/protocol/long-tasks.js +1 -0
- package/dist/contract/protocol/market-index.d.ts +195 -0
- package/dist/contract/protocol/market-index.js +7 -0
- package/dist/contract/protocol/platform.d.ts +44 -0
- package/dist/contract/protocol/platform.js +1 -0
- package/dist/contract/protocol/preflight-wake.d.ts +7 -0
- package/dist/contract/protocol/preflight-wake.js +1 -0
- package/dist/contract/protocol/profile-create.d.ts +30 -0
- package/dist/contract/protocol/profile-create.js +2 -0
- package/dist/contract/protocol/sidebar-edition.d.ts +14 -0
- package/dist/contract/protocol/sidebar-edition.js +2 -0
- package/dist/contract/protocol/unit-manifests.d.ts +6 -0
- package/dist/contract/protocol/unit-manifests.js +1 -0
- package/dist/contract/unit-board.d.ts +18 -0
- package/dist/contract/unit-board.js +1 -0
- package/dist/contract/unit-capability.d.ts +34 -0
- package/dist/contract/unit-capability.js +1 -0
- package/dist/{api → contract}/unit-declaration.d.ts +7 -5
- package/dist/{api → contract}/unit-declaration.js +19 -13
- package/dist/contract/unit.d.ts +57 -0
- package/dist/contract/unit.js +24 -0
- package/dist/contract/workbench-contract.d.ts +15 -0
- package/dist/contract/workbench-contract.js +1 -0
- package/dist/host/adapter-set.d.ts +26 -0
- package/dist/host/adapter-set.js +243 -0
- package/dist/host/adapter-types.d.ts +79 -0
- package/dist/host/adapter-types.js +23 -0
- package/dist/host/adapters.d.ts +22 -0
- package/dist/host/adapters.js +9 -0
- package/dist/host/browser.d.ts +3 -0
- package/dist/host/browser.js +3 -0
- package/dist/host/changelog.d.ts +21 -0
- package/dist/host/changelog.js +188 -0
- package/dist/host/channel-plugin.d.ts +15 -0
- package/dist/host/channel-plugin.js +42 -0
- package/dist/host/cli.d.ts +4 -0
- package/dist/host/cli.js +7 -0
- package/dist/host/command-name.d.ts +1 -0
- package/dist/host/command-name.js +14 -0
- package/dist/host/data-error.d.ts +13 -0
- package/dist/host/data-error.js +20 -0
- package/dist/host/data-root.js +3 -0
- package/dist/host/diy-debug.js +2 -1
- package/dist/host/diy-record.js +2 -1
- package/dist/host/facts.d.ts +1 -1
- package/dist/host/facts.js +3 -2
- package/dist/host/git.js +2 -2
- package/dist/host/http.js +1 -1
- package/dist/host/lib-capabilities.d.ts +22 -0
- package/dist/host/lib-capabilities.js +37 -0
- package/dist/host/lib-install.d.ts +9 -0
- package/dist/host/lib-install.js +10 -0
- package/dist/host/long-task.d.ts +1 -1
- package/dist/host/long-task.js +4 -3
- package/dist/host/market-index.d.ts +22 -0
- package/dist/host/market-index.js +420 -0
- package/dist/host/needs.d.ts +4 -0
- package/dist/host/needs.js +2 -0
- package/dist/host/patch.d.ts +9 -0
- package/dist/host/patch.js +78 -0
- package/dist/host/paths.d.ts +12 -0
- package/dist/host/paths.js +28 -0
- package/dist/host/platform.d.ts +14 -0
- package/dist/host/platform.js +40 -0
- package/dist/host/plugin-source.d.ts +8 -6
- package/dist/host/plugin-source.js +43 -33
- package/dist/host/plugin.d.ts +4 -0
- package/dist/host/plugin.js +39 -0
- package/dist/host/port-types.d.ts +191 -0
- package/dist/host/port-types.js +1 -0
- package/dist/host/preflight.d.ts +28 -0
- package/dist/host/preflight.js +1 -0
- package/dist/host/profile-port.d.ts +4 -0
- package/dist/host/profile-port.js +4 -0
- package/dist/host/provision.d.ts +2 -2
- package/dist/host/provision.js +5 -3
- package/dist/host/recipe-rules.d.ts +5 -0
- package/dist/host/recipe-rules.js +382 -0
- package/dist/host/recipe.d.ts +14 -0
- package/dist/host/recipe.js +283 -0
- package/dist/host/shell-text.d.ts +9 -2
- package/dist/host/shell-text.js +15 -3
- package/dist/host/shell.d.ts +2 -0
- package/dist/host/shell.js +7 -0
- package/dist/host/spec.d.ts +8 -0
- package/dist/host/spec.js +24 -0
- package/dist/host/supply-index.d.ts +34 -0
- package/dist/host/supply-index.js +202 -0
- package/dist/host/supply-port.d.ts +5 -0
- package/dist/host/supply-port.js +39 -0
- package/dist/host/time.d.ts +12 -0
- package/dist/host/time.js +19 -0
- package/dist/host/tokens.d.ts +26 -0
- package/dist/host/tokens.js +154 -0
- package/dist/host/tool-approval.d.ts +12 -0
- package/dist/host/tool-approval.js +4 -0
- package/dist/host/tool-kit.js +1 -1
- package/dist/host/unit-face.d.ts +5 -4
- package/dist/host/version-range.d.ts +2 -0
- package/dist/host/version-range.js +73 -0
- package/dist/host/version.d.ts +3 -0
- package/dist/host/version.js +29 -0
- package/dist/host.d.ts +47 -16
- package/dist/host.js +47 -16
- package/dist/i18n/en.js +259 -86
- package/dist/i18n/index.d.ts +333 -88
- package/dist/i18n/merge.js +1 -1
- package/dist/i18n/need-text.d.ts +26 -0
- package/dist/i18n/need-text.js +26 -0
- package/dist/i18n/settings.d.ts +70 -0
- package/dist/i18n/settings.js +136 -0
- package/dist/i18n/zh.d.ts +332 -87
- package/dist/i18n/zh.js +260 -87
- package/dist/index.d.ts +24 -8
- package/dist/index.js +24 -8
- package/dist/lib/blocker-action.d.ts +0 -15
- package/dist/lib/blocker-action.js +1 -25
- package/dist/{api → lib}/dsh-client.d.ts +12 -1
- package/dist/lib/dsh-client.js +1 -0
- package/dist/lib/market-index.d.ts +7 -0
- package/dist/lib/market-index.js +25 -0
- package/dist/lib/react-types.d.ts +5 -0
- package/dist/lib/react-types.js +1 -0
- package/dist/lib/react.d.ts +1 -40
- package/dist/lib/react.js +0 -36
- package/dist/lib/ui.js +3 -9
- package/dist/testing/data.d.ts +13 -0
- package/dist/testing/data.js +46 -0
- package/dist/testing/declaration.d.ts +1 -1
- package/dist/testing/declaration.js +1 -1
- package/dist/testing/host-fakes.d.ts +0 -13
- package/dist/testing/host-fakes.js +0 -24
- package/dist/testing/needs.d.ts +16 -0
- package/dist/testing/needs.js +46 -0
- package/dist/testing.d.ts +2 -0
- package/dist/testing.js +2 -0
- package/package.json +18 -2
- package/src/api/__tests__/blocker-table.test.ts +135 -86
- package/src/api/blocker-table.ts +52 -26
- package/src/api/dsh.ts +17 -1
- package/src/api/host-write.ts +0 -43
- package/src/api/workbench-client.test.ts +2 -2
- package/src/api/workbench-client.ts +2 -1
- package/src/components/Activity.css +0 -1
- package/src/components/ApprovalDetail.css +1 -2
- package/src/components/ApprovalDetail.tsx +1 -1
- package/src/components/ApprovalPlan.css +0 -1
- package/src/components/Card.css +0 -1
- package/src/components/Card.tsx +1 -1
- package/src/components/CardAnchor.test.tsx +1 -1
- package/src/components/CardBoundary.tsx +1 -1
- package/src/components/CardHead.css +0 -1
- package/src/components/CardHead.tsx +1 -1
- package/src/components/ChoiceGroup.css +1 -2
- package/src/components/ConfirmBar.tsx +1 -1
- package/src/components/Form.css +1 -1
- package/src/components/Form.tsx +1 -1
- package/src/components/FormActions.tsx +1 -1
- package/src/components/LongTaskRow.css +1 -2
- package/src/components/LongTaskRow.tsx +1 -1
- package/src/components/Note.css +0 -1
- package/src/components/ResourceStates.css +0 -1
- package/src/components/SelectFieldNodes.tsx +0 -1
- package/src/components/SettingsSection.css +0 -1
- package/src/components/Spinner.css +0 -1
- package/src/components/Stack.css +0 -1
- package/src/components/StateBlock.css +0 -1
- package/src/components/__tests__/long-task-row.test.ts +1 -1
- package/src/components/board-module.ts +3 -3
- package/src/components/icons.tsx +16 -24
- package/src/config/constants.ts +2 -2
- package/src/config/storage.test.ts +1 -25
- package/src/config/storage.ts +0 -12
- package/src/{api → contract}/__tests__/facts.test.ts +73 -25
- package/src/{api → contract}/__tests__/long-task.test.ts +3 -3
- package/src/contract/__tests__/needs.test.ts +74 -0
- package/src/{host → contract}/__tests__/unit-declaration.test.ts +1 -1
- package/src/contract/__tests__/unit.test.ts +43 -0
- package/src/contract/adapters.ts +9 -0
- package/src/contract/cli.ts +3 -0
- package/src/contract/data.ts +145 -0
- package/src/{api → contract}/facts.ts +34 -4
- package/src/contract/needs.ts +331 -0
- package/src/contract/plugin-source.ts +1 -0
- package/src/contract/protocol/bundle-install.ts +198 -0
- package/src/contract/protocol/config-sync.ts +65 -0
- package/src/contract/protocol/diy.ts +4 -0
- package/src/contract/protocol/dsh-plugins.ts +13 -0
- package/src/contract/protocol/long-tasks.ts +16 -0
- package/src/contract/protocol/market-index.ts +246 -0
- package/src/contract/protocol/platform.ts +47 -0
- package/src/contract/protocol/preflight-wake.ts +17 -0
- package/src/contract/protocol/profile-create.ts +36 -0
- package/src/contract/protocol/sidebar-edition.ts +19 -0
- package/src/contract/protocol/unit-manifests.ts +8 -0
- package/src/contract/unit-board.ts +23 -0
- package/src/contract/unit-capability.ts +37 -0
- package/src/{host → contract}/unit-declaration.ts +22 -18
- package/src/contract/unit.ts +76 -0
- package/src/contract/workbench-contract.ts +30 -0
- package/src/host/__tests__/adapter-set.test.ts +228 -0
- package/src/host/__tests__/adapters.test.ts +27 -0
- package/src/host/__tests__/changelog.test.ts +102 -0
- package/src/host/__tests__/command-name.test.ts +16 -0
- package/src/host/__tests__/diy-record.test.ts +3 -3
- package/src/host/__tests__/facts.test.ts +5 -5
- package/src/host/__tests__/long-task.test.ts +1 -1
- package/src/host/__tests__/market-index.test.ts +179 -0
- package/src/host/__tests__/plugin-ledger.test.ts +10 -10
- package/src/host/__tests__/provision.test.ts +7 -6
- package/src/host/__tests__/shell-text.test.ts +16 -1
- package/src/host/__tests__/supply-index.test.ts +137 -0
- package/src/host/__tests__/tokens.test.ts +110 -0
- package/src/host/__tests__/version-range.test.ts +21 -0
- package/src/host/adapter-set.ts +298 -0
- package/src/host/adapter-types.ts +105 -0
- package/src/host/adapters.ts +44 -0
- package/src/host/browser.ts +3 -0
- package/src/host/changelog.ts +212 -0
- package/src/host/channel-plugin.ts +55 -0
- package/src/host/cli.ts +11 -0
- package/src/host/command-name.ts +15 -0
- package/src/host/data-error.ts +21 -0
- package/src/host/data-root.ts +2 -0
- package/src/host/diy-debug.ts +2 -1
- package/src/host/diy-record.ts +2 -1
- package/src/host/facts.ts +4 -3
- package/src/host/git.ts +2 -2
- package/src/host/http.ts +1 -1
- package/src/host/lib-capabilities.ts +52 -0
- package/src/host/lib-install.ts +18 -0
- package/src/host/long-task.ts +4 -3
- package/src/host/market-index.ts +413 -0
- package/src/host/needs.ts +6 -0
- package/src/host/patch.ts +93 -0
- package/src/host/paths.ts +37 -0
- package/src/host/platform.ts +48 -0
- package/src/host/plugin-source.ts +48 -56
- package/src/host/plugin.ts +39 -0
- package/src/host/port-types.ts +222 -0
- package/src/host/preflight.ts +31 -0
- package/src/host/profile-port.ts +9 -0
- package/src/host/provision.ts +7 -4
- package/src/host/recipe-rules.ts +330 -0
- package/src/host/recipe.test.ts +334 -0
- package/src/host/recipe.ts +323 -0
- package/src/host/shell-text.ts +15 -3
- package/src/host/shell.ts +9 -0
- package/src/host/spec.ts +32 -0
- package/src/host/supply-index.ts +256 -0
- package/src/host/supply-port.ts +45 -0
- package/src/host/time.ts +22 -0
- package/src/host/tokens.ts +186 -0
- package/src/host/tool-approval.ts +17 -0
- package/src/host/tool-kit.ts +1 -1
- package/src/host/unit-face.ts +5 -4
- package/src/host/version-range.ts +71 -0
- package/src/host/version.ts +30 -0
- package/src/host.ts +47 -16
- package/src/i18n/en.ts +261 -86
- package/src/i18n/merge.test.ts +6 -6
- package/src/i18n/merge.ts +1 -1
- package/src/i18n/need-text.ts +27 -0
- package/src/i18n/settings.ts +141 -0
- package/src/i18n/zh.ts +263 -87
- package/src/index.ts +24 -8
- package/src/lib/blocker-action.ts +0 -28
- package/src/{api → lib}/dsh-client.ts +16 -2
- package/src/lib/market-index.ts +36 -0
- package/src/lib/react-types.ts +5 -0
- package/src/lib/react.ts +1 -40
- package/src/lib/text.test.ts +2 -2
- package/src/lib/ui.test.ts +6 -5
- package/src/lib/ui.ts +3 -9
- package/src/testing/__tests__/declaration.test.ts +1 -1
- package/src/testing/data.ts +66 -0
- package/src/testing/declaration.ts +2 -2
- package/src/testing/host-fakes.ts +0 -38
- package/src/testing/needs.ts +80 -0
- package/src/testing.ts +2 -0
- package/dist/api/unit-board.d.ts +0 -39
- package/dist/api/unit-board.js +0 -45
- package/dist/api/unit.d.ts +0 -85
- package/dist/api/unit.js +0 -8
- package/dist/api/workbench-contract.d.ts +0 -44
- package/dist/components/MockStrip.css +0 -39
- package/dist/components/MockStrip.d.ts +0 -15
- package/dist/components/MockStrip.js +0 -8
- package/dist/components/SaveBar.css +0 -7
- package/dist/host/browser-find.d.ts +0 -38
- package/dist/host/browser-find.js +0 -242
- package/dist/host/browser-read.d.ts +0 -28
- package/dist/host/browser-read.js +0 -243
- package/dist/host/opencli-runtime.d.ts +0 -25
- package/dist/host/opencli-runtime.js +0 -56
- package/dist/host/opencli-window.d.ts +0 -2
- package/dist/host/opencli-window.js +0 -8
- package/dist/host/opencli.d.ts +0 -37
- package/dist/host/opencli.js +0 -155
- package/dist/host/unit-declaration.d.ts +0 -65
- package/dist/host/unit-declaration.js +0 -213
- package/dist/host/unit-libs.d.ts +0 -37
- package/dist/lib/diy-debug.d.ts +0 -80
- package/dist/lib/diy-debug.js +0 -88
- package/dist/lib/diy-record.d.ts +0 -135
- package/dist/lib/diy-record.js +0 -162
- package/dist/lib/lint-probe.d.ts +0 -1
- package/dist/lib/lint-probe.js +0 -6
- package/dist/lib/panel-state.d.ts +0 -120
- package/dist/lib/panel-state.js +0 -176
- package/src/api/__tests__/host-write.test.ts +0 -75
- package/src/api/__tests__/unit-board.test.ts +0 -76
- package/src/api/__tests__/unit.test.ts +0 -38
- package/src/api/unit-board.ts +0 -69
- package/src/api/unit.ts +0 -93
- package/src/api/workbench-contract.ts +0 -59
- package/src/host/__tests__/browser-find.test.ts +0 -330
- package/src/host/__tests__/browser-read.test.ts +0 -228
- package/src/host/__tests__/opencli-runtime.test.ts +0 -46
- package/src/host/browser-find.ts +0 -311
- package/src/host/browser-read.ts +0 -311
- package/src/host/opencli-runtime.ts +0 -79
- package/src/host/opencli-window.ts +0 -11
- package/src/host/opencli.ts +0 -213
- package/src/host/unit-libs.ts +0 -41
- package/src/lib/blocker-action.test.ts +0 -40
- /package/dist/{api/blocker.js → contract/adapters.js} +0 -0
- /package/dist/{api → contract}/blocker.d.ts +0 -0
- /package/dist/{api/dsh-client.js → contract/blocker.js} +0 -0
- /package/dist/{api/workbench-contract.js → contract/cli.js} +0 -0
- /package/dist/{host/unit-libs.js → contract/data.js} +0 -0
- /package/dist/{api → contract}/long-task.d.ts +0 -0
- /package/dist/{api → contract}/long-task.js +0 -0
- /package/src/{api → contract}/blocker.ts +0 -0
- /package/src/{api → contract}/long-task.ts +0 -0
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import type { DshHostContext } from '../api/dsh.js';
|
|
2
|
+
import { adaptersOf } from './adapters.js';
|
|
3
|
+
import type { SupplyPort } from './port-types.js';
|
|
4
|
+
export type { SupplyPort } from './port-types.js';
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
export function supplyPortOf(ctx: DshHostContext): SupplyPort {
|
|
8
|
+
const set = adaptersOf(ctx);
|
|
9
|
+
const env = set.supply;
|
|
10
|
+
const modules = set.modules;
|
|
11
|
+
return {
|
|
12
|
+
env,
|
|
13
|
+
modules,
|
|
14
|
+
resolvePluginSource: (source, environment, options) => env.resolvePluginSource(source, environment, options),
|
|
15
|
+
libInstallCommand: (options) => env.libInstallCommand(options),
|
|
16
|
+
pluginInstallPlan: (options) => env.pluginInstallPlan(options),
|
|
17
|
+
latestVersion: (options) => env.latestVersion(options),
|
|
18
|
+
missingReleaseParts: (options) => env.missingReleaseParts(options),
|
|
19
|
+
probeRelease: (options) => env.probeRelease(options),
|
|
20
|
+
splitNpmSpec: (spec) => env.splitNpmSpec(spec),
|
|
21
|
+
isolatedHome: () => modules.isolatedHome(),
|
|
22
|
+
cliCatalogPath: () => modules.cliCatalogPath(),
|
|
23
|
+
vendorPluginsDir: () => modules.vendorPluginsDir(),
|
|
24
|
+
opencliInstallCommand: () => modules.opencliInstallCommand(),
|
|
25
|
+
profileDirOf: (context) => modules.profileDirOf(context),
|
|
26
|
+
profileModules: (dir) => modules.profileModules(dir),
|
|
27
|
+
readInstalledModule: (dir, pkg) => modules.readInstalledModule(dir, pkg),
|
|
28
|
+
readProfilePackage: (dir, pkg) => modules.readProfilePackage(dir, pkg),
|
|
29
|
+
readBundleManager: (context) => modules.readBundleManager(context),
|
|
30
|
+
createRegistryNotebook: (dir) => modules.createRegistryNotebook(dir),
|
|
31
|
+
declarationGaps: (dir) => modules.declarationGaps(dir),
|
|
32
|
+
moduleDeclarationOf: (dir, pkg) => modules.moduleDeclarationOf(dir, pkg),
|
|
33
|
+
registryDeclarationOf: (options) => modules.registryDeclarationOf(options),
|
|
34
|
+
pathDeclarationOf: (spec) => modules.pathDeclarationOf(spec),
|
|
35
|
+
declarationRefusalOf: (name, raw) => modules.declarationRefusalOf(name, raw),
|
|
36
|
+
refusalReason: () => modules.refusalReason(),
|
|
37
|
+
packageRouteOf: (options) => modules.packageRouteOf(options),
|
|
38
|
+
isNewerVersion: (left, right) => modules.isNewerVersion(left, right),
|
|
39
|
+
startSelfUpdate: (request, onError) => modules.startSelfUpdate(request, onError),
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
export function requireSupply(): SupplyPort {
|
|
44
|
+
throw new Error('workbenchSupply 未提供');
|
|
45
|
+
}
|
package/src/host/time.ts
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import dayjs from 'dayjs';
|
|
2
|
+
import utc from 'dayjs/plugin/utc.js';
|
|
3
|
+
|
|
4
|
+
dayjs.extend(utc);
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* UTC 时钟(`HH:mm:ss`):日志与状态行只给人看时分秒,不带日期。
|
|
8
|
+
* @param value ISO 字符串、时间戳或 Date。
|
|
9
|
+
* @returns `HH:mm:ss`;非法时间返回 `Invalid Date`。
|
|
10
|
+
*/
|
|
11
|
+
export function clockOf(value: string | number | Date): string {
|
|
12
|
+
return dayjs(value).utc().format('HH:mm:ss');
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* 把时间戳/ISO 字符串转成毫秒;非法输入给 `NaN`(调用方据此回退)。
|
|
17
|
+
* @param value ISO 字符串、时间戳或 Date。
|
|
18
|
+
* @returns 毫秒时间戳或 `NaN`。
|
|
19
|
+
*/
|
|
20
|
+
export function epochOf(value: string | number | Date): number {
|
|
21
|
+
return dayjs(value).valueOf();
|
|
22
|
+
}
|
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
import { existsSync, readFileSync } from 'node:fs';
|
|
2
|
+
import { dirname, join, resolve } from 'node:path';
|
|
3
|
+
|
|
4
|
+
export const DSH_THEME_PACKAGE = '@deepseek-ai/dsh-client-ui-theme';
|
|
5
|
+
export const SHELL_PACKAGE = '@dsh-workbench/core';
|
|
6
|
+
export const DSW_PREFIX = '--dsw-';
|
|
7
|
+
export const WB_PREFIX = '--wb-';
|
|
8
|
+
|
|
9
|
+
export interface TokenValues {
|
|
10
|
+
readonly light: string | null;
|
|
11
|
+
readonly dark: string | null;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
export interface TokenEntry {
|
|
15
|
+
readonly name: string;
|
|
16
|
+
readonly values: TokenValues;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
export interface TokenSource {
|
|
20
|
+
readonly package: string;
|
|
21
|
+
readonly version: string | null;
|
|
22
|
+
readonly file: string;
|
|
23
|
+
readonly entries: readonly TokenEntry[];
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
export interface TokenSet {
|
|
27
|
+
readonly dsw: TokenSource | null;
|
|
28
|
+
readonly wb: TokenSource | null;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
const BLOCK = /([^{}]*)\{([^{}]*)\}/g;
|
|
32
|
+
const DECLARATION = /(--[a-z0-9-]+)\s*:\s*([^;{}]+)/g;
|
|
33
|
+
const DARK_BLOCK = /data-ds-dark-theme/;
|
|
34
|
+
const VAR_USE = /var\(\s*(--[a-z0-9-]+)\s*(?:,[^()]*)?\)/g;
|
|
35
|
+
|
|
36
|
+
function rawDefinitionsIn(text: string, prefix: string): Map<string, { light?: string; dark?: string }> {
|
|
37
|
+
const defs = new Map<string, { light?: string; dark?: string }>();
|
|
38
|
+
for (const block of text.matchAll(BLOCK)) {
|
|
39
|
+
const selector = block[1] ?? '';
|
|
40
|
+
const dark = DARK_BLOCK.test(selector);
|
|
41
|
+
for (const declaration of (block[2] ?? '').matchAll(DECLARATION)) {
|
|
42
|
+
const name = declaration[1] ?? '';
|
|
43
|
+
const value = (declaration[2] ?? '').trim();
|
|
44
|
+
if (!name.startsWith(prefix) || value === '') continue;
|
|
45
|
+
const found = defs.get(name) ?? {};
|
|
46
|
+
const key = dark ? 'dark' : 'light';
|
|
47
|
+
if (found[key] === undefined) found[key] = value;
|
|
48
|
+
defs.set(name, found);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
return defs;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
function resolved(value: string, scheme: 'light' | 'dark', defs: Map<string, { light?: string; dark?: string }>, depth = 0): string {
|
|
55
|
+
if (depth >= 4 || !value.includes('var(')) return value;
|
|
56
|
+
return value.replace(VAR_USE, (whole, name: string) => {
|
|
57
|
+
const found = defs.get(name);
|
|
58
|
+
if (found === undefined) return whole;
|
|
59
|
+
const next = scheme === 'dark' ? found.dark ?? found.light : found.light ?? found.dark;
|
|
60
|
+
return next === undefined ? whole : resolved(next, scheme, defs, depth + 1);
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
export function tokenEntriesIn(text: string, prefix: string): readonly TokenEntry[] {
|
|
65
|
+
const defs = rawDefinitionsIn(text, prefix);
|
|
66
|
+
return [...defs.entries()]
|
|
67
|
+
.map(([name, found]) => ({
|
|
68
|
+
name,
|
|
69
|
+
values: {
|
|
70
|
+
light: found.light === undefined ? null : resolved(found.light, 'light', defs),
|
|
71
|
+
dark: found.dark === undefined ? null : resolved(found.dark, 'dark', defs),
|
|
72
|
+
},
|
|
73
|
+
}))
|
|
74
|
+
.sort((left, right) => left.name.localeCompare(right.name));
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
interface PackageManifest {
|
|
78
|
+
readonly name: string | null;
|
|
79
|
+
readonly version: string | null;
|
|
80
|
+
readonly root: string;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
function manifestAt(root: string): PackageManifest | null {
|
|
84
|
+
try {
|
|
85
|
+
const manifest: unknown = JSON.parse(readFileSync(join(root, 'package.json'), 'utf8'));
|
|
86
|
+
if (typeof manifest !== 'object' || manifest === null) return null;
|
|
87
|
+
const record = manifest as { name?: unknown; version?: unknown };
|
|
88
|
+
return {
|
|
89
|
+
name: typeof record.name === 'string' ? record.name : null,
|
|
90
|
+
version: typeof record.version === 'string' ? record.version : null,
|
|
91
|
+
root,
|
|
92
|
+
};
|
|
93
|
+
} catch {
|
|
94
|
+
return null;
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
function findPackage(startDirs: readonly string[], packageName: string): PackageManifest | null {
|
|
99
|
+
for (const start of startDirs) {
|
|
100
|
+
if (start.trim() === '') continue;
|
|
101
|
+
const own = manifestAt(start);
|
|
102
|
+
if (own !== null && own.name === packageName) return own;
|
|
103
|
+
let at = resolve(start);
|
|
104
|
+
for (;;) {
|
|
105
|
+
const candidate = join(at, 'node_modules', ...packageName.split('/'));
|
|
106
|
+
const manifest = manifestAt(candidate);
|
|
107
|
+
if (manifest !== null && (manifest.name === null || manifest.name === packageName)) return manifest;
|
|
108
|
+
const parent = dirname(at);
|
|
109
|
+
if (parent === at) break;
|
|
110
|
+
at = parent;
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
return null;
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
function sourceAt(
|
|
117
|
+
startDirs: readonly string[],
|
|
118
|
+
packageName: string,
|
|
119
|
+
tail: string,
|
|
120
|
+
prefix: string,
|
|
121
|
+
): TokenSource | null {
|
|
122
|
+
const manifest = findPackage(startDirs, packageName);
|
|
123
|
+
if (manifest === null) return null;
|
|
124
|
+
const file = join(manifest.root, tail);
|
|
125
|
+
if (!existsSync(file)) return null;
|
|
126
|
+
return {
|
|
127
|
+
package: packageName,
|
|
128
|
+
version: manifest.version,
|
|
129
|
+
file,
|
|
130
|
+
entries: tokenEntriesIn(readFileSync(file, 'utf8'), prefix),
|
|
131
|
+
};
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
export function readTokens(startDirs: readonly string[]): TokenSet {
|
|
135
|
+
const dsw = sourceAt(startDirs, DSH_THEME_PACKAGE, join('lib', 'client.js'), DSW_PREFIX);
|
|
136
|
+
const wb = sourceAt(startDirs, SHELL_PACKAGE, 'client.js', WB_PREFIX);
|
|
137
|
+
return { dsw, wb };
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
function distance(left: string, right: string): number {
|
|
141
|
+
let previous = Array.from({ length: right.length + 1 }, (_unused, index) => index);
|
|
142
|
+
for (let row = 1; row <= left.length; row += 1) {
|
|
143
|
+
const current = [row];
|
|
144
|
+
for (let column = 1; column <= right.length; column += 1) {
|
|
145
|
+
const same = left[row - 1] === right[column - 1] ? 0 : 1;
|
|
146
|
+
current.push(
|
|
147
|
+
Math.min((previous[column] ?? 0) + 1, (current[column - 1] ?? 0) + 1, (previous[column - 1] ?? 0) + same),
|
|
148
|
+
);
|
|
149
|
+
}
|
|
150
|
+
previous = current;
|
|
151
|
+
}
|
|
152
|
+
return previous[right.length] ?? 0;
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
function commonPrefixLength(left: string, right: string): number {
|
|
156
|
+
const cap = Math.min(left.length, right.length);
|
|
157
|
+
let at = 0;
|
|
158
|
+
while (at < cap && left[at] === right[at]) at += 1;
|
|
159
|
+
return at;
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
export function nearestTokens(name: string, names: readonly string[], limit = 6): readonly string[] {
|
|
163
|
+
const wanted = name.trim().toLowerCase();
|
|
164
|
+
if (wanted === '') return [];
|
|
165
|
+
const shared = wanted.slice(0, wanted.lastIndexOf('-') + 1);
|
|
166
|
+
return names
|
|
167
|
+
.flatMap((one) => {
|
|
168
|
+
const lower = one.toLowerCase();
|
|
169
|
+
const typos = lower.length < 3 ? Number.POSITIVE_INFINITY : distance(lower, wanted);
|
|
170
|
+
if (typos <= 2) return [{ one, typos }];
|
|
171
|
+
const prefix = commonPrefixLength(lower, wanted);
|
|
172
|
+
if (prefix < 8) return [];
|
|
173
|
+
const sameStem = shared.length >= 8 && lower.startsWith(shared);
|
|
174
|
+
const score = 10 + typos - prefix + (sameStem ? 0 : 20);
|
|
175
|
+
return score < 20 ? [{ one, typos: score }] : [];
|
|
176
|
+
})
|
|
177
|
+
.sort((left, right) => left.typos - right.typos || left.one.length - right.one.length || left.one.localeCompare(right.one))
|
|
178
|
+
.slice(0, limit)
|
|
179
|
+
.map((one) => one.one);
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
export function tokenFamilyOf(name: string): string {
|
|
183
|
+
const rest = name.startsWith(DSW_PREFIX) ? name.slice(DSW_PREFIX.length) : name.startsWith(WB_PREFIX) ? name.slice(WB_PREFIX.length) : name;
|
|
184
|
+
const cut = rest.indexOf('-');
|
|
185
|
+
return cut === -1 ? rest : rest.slice(0, cut);
|
|
186
|
+
}
|
|
@@ -75,9 +75,17 @@ export interface ApprovalCall {
|
|
|
75
75
|
readonly session?: string | undefined;
|
|
76
76
|
}
|
|
77
77
|
|
|
78
|
+
/**
|
|
79
|
+
* 套件对一次写调用给出的判定:`read` 只是看看、`allow` 会写但本套件不问、`deny` 这一次根本跑不成
|
|
80
|
+
* (连问都不该问,`reason` 原样交给 agent)、`ask` 要用户点头(`question` 接在明细后,`fallback` 是没明细时的整句)。
|
|
81
|
+
*/
|
|
78
82
|
export type ApprovalVerdict =
|
|
79
83
|
| { readonly kind: 'read' }
|
|
80
84
|
| { readonly kind: 'allow' }
|
|
85
|
+
| {
|
|
86
|
+
readonly kind: 'deny';
|
|
87
|
+
readonly reason: string;
|
|
88
|
+
}
|
|
81
89
|
| {
|
|
82
90
|
readonly kind: 'ask';
|
|
83
91
|
readonly reason: string;
|
|
@@ -87,10 +95,15 @@ export type ApprovalVerdict =
|
|
|
87
95
|
|
|
88
96
|
export type ApprovalPolicy = (call: ApprovalCall) => ApprovalVerdict | undefined;
|
|
89
97
|
|
|
98
|
+
/**
|
|
99
|
+
* 闸门的输入:`skipAsk` 为真表示会话已经不要审批提示(完全权限)—— 认领检查、`{blocked}` 与套件自己的
|
|
100
|
+
* `deny` 照旧,只是不再返回 `ask`;dsh 在 `approval: never` 下会把 `ask` 直接拒掉。
|
|
101
|
+
*/
|
|
90
102
|
export interface ApprovalContext {
|
|
91
103
|
readonly writes?: boolean | undefined;
|
|
92
104
|
readonly policy?: ApprovalPolicy | undefined;
|
|
93
105
|
readonly declaredNote?: boolean | undefined;
|
|
106
|
+
readonly skipAsk?: boolean | undefined;
|
|
94
107
|
readonly detailOf?:
|
|
95
108
|
| ((call: ApprovalCall) => ApprovalFacts | undefined | Promise<ApprovalFacts | undefined>)
|
|
96
109
|
| undefined;
|
|
@@ -134,6 +147,8 @@ export async function approvalFor(
|
|
|
134
147
|
|
|
135
148
|
if (verdict?.kind === 'read' || verdict?.kind === 'allow') return undefined;
|
|
136
149
|
|
|
150
|
+
if (verdict?.kind === 'deny') return { kind: 'deny', reason: verdict.reason };
|
|
151
|
+
|
|
137
152
|
if (verdict?.kind !== 'ask') {
|
|
138
153
|
return {
|
|
139
154
|
kind: 'deny',
|
|
@@ -151,6 +166,8 @@ export async function approvalFor(
|
|
|
151
166
|
}
|
|
152
167
|
if (facts !== undefined && 'blocked' in facts) return { kind: 'deny', reason: facts.blocked };
|
|
153
168
|
|
|
169
|
+
if (context.skipAsk === true) return undefined;
|
|
170
|
+
|
|
154
171
|
return {
|
|
155
172
|
kind: 'ask',
|
|
156
173
|
reason: verdict.reason,
|
package/src/host/tool-kit.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { DshToolRunContext } from '../api/dsh.js';
|
|
2
|
-
import { WorkbenchDataError } from './
|
|
2
|
+
import { WorkbenchDataError } from './data-error.js';
|
|
3
3
|
|
|
4
4
|
export function sessionWorkspace(exec: DshToolRunContext | undefined): string | null {
|
|
5
5
|
const cwd = exec?.agent?.session?.header?.cwd;
|
package/src/host/unit-face.ts
CHANGED
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
import type { DshHostContext } from '../api/dsh.js';
|
|
2
|
-
import type { UnitManifest } from '../
|
|
2
|
+
import type { UnitManifest } from '../contract/unit.js';
|
|
3
3
|
import type { RouteTable } from '../host/http.js';
|
|
4
4
|
import type { LongTaskBase, LongTaskHost, LongTaskRegistry } from '../host/long-task.js';
|
|
5
|
-
import type { ProvisionHandler } from '
|
|
6
|
-
import type { UnitCapability } from '
|
|
5
|
+
import type { ProvisionHandler } from './provision.js';
|
|
6
|
+
import type { UnitCapability } from '../contract/unit-capability.js';
|
|
7
7
|
import type { ApprovalCall, ApprovalFacts, ApprovalPolicy } from '../host/tool-approval.js';
|
|
8
8
|
import type { ValueHandoff } from '../host/value-handoff.js';
|
|
9
9
|
import type { WorkspaceStore } from '../host/workspace-store.js';
|
|
10
|
+
import type { DataReader } from '../contract/data.js';
|
|
10
11
|
|
|
11
12
|
export interface ToolScopeContext {
|
|
12
13
|
readonly workspace: string | null;
|
|
@@ -20,7 +21,7 @@ export interface UnitMountDeps {
|
|
|
20
21
|
readonly manifests: () => readonly UnitManifest[];
|
|
21
22
|
readonly ownedUnits: () => readonly string[];
|
|
22
23
|
readonly installable?: (() => readonly string[]) | undefined;
|
|
23
|
-
readonly
|
|
24
|
+
readonly data: DataReader;
|
|
24
25
|
readonly store: WorkspaceStore;
|
|
25
26
|
readonly values?: ValueHandoff | undefined;
|
|
26
27
|
readonly probe?: (
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import { compareVersions } from './version.js';
|
|
2
|
+
|
|
3
|
+
export type VersionVerdict = 'satisfied' | 'unsatisfied' | 'malformed';
|
|
4
|
+
|
|
5
|
+
function readable(version: string): boolean {
|
|
6
|
+
return compareVersions(version, '0.0.0') !== undefined;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
function segmentsOf(version: string): number[] | undefined {
|
|
10
|
+
if (!readable(version)) return undefined;
|
|
11
|
+
return version.split('.').map((part) => Number.parseInt(part, 10));
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
function caretUpper(base: readonly number[]): string {
|
|
15
|
+
const [major = 0, minor = 0, patch = 0] = base;
|
|
16
|
+
if (major > 0) return `${major + 1}.0.0`;
|
|
17
|
+
return minor > 0 ? `0.${minor + 1}.0` : `0.0.${patch + 1}`;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
function tildeUpper(base: readonly number[]): string {
|
|
21
|
+
const [major = 0, minor = 0] = base;
|
|
22
|
+
return `${major}.${minor + 1}.0`;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
function comparator(token: string, version: string): boolean | undefined {
|
|
26
|
+
const match = /^(>=|<=|>|<|=|\^|~)?\s*(.+)$/.exec(token.trim());
|
|
27
|
+
if (match === null) return undefined;
|
|
28
|
+
const [, operator = '', raw = ''] = match;
|
|
29
|
+
const base = segmentsOf(raw.trim());
|
|
30
|
+
if (base === undefined) return undefined;
|
|
31
|
+
const at = (other: string): number | undefined => compareVersions(version, other);
|
|
32
|
+
switch (operator) {
|
|
33
|
+
case '^':
|
|
34
|
+
return (at(raw) ?? -1) >= 0 && (at(caretUpper(base)) ?? 1) < 0;
|
|
35
|
+
case '~':
|
|
36
|
+
return (at(raw) ?? -1) >= 0 && (at(tildeUpper(base)) ?? 1) < 0;
|
|
37
|
+
default:
|
|
38
|
+
break;
|
|
39
|
+
}
|
|
40
|
+
const compared = at(raw.trim());
|
|
41
|
+
if (compared === undefined) return undefined;
|
|
42
|
+
switch (operator) {
|
|
43
|
+
case '>=':
|
|
44
|
+
return compared >= 0;
|
|
45
|
+
case '<=':
|
|
46
|
+
return compared <= 0;
|
|
47
|
+
case '>':
|
|
48
|
+
return compared > 0;
|
|
49
|
+
case '<':
|
|
50
|
+
return compared < 0;
|
|
51
|
+
case '=':
|
|
52
|
+
case '':
|
|
53
|
+
return compared === 0;
|
|
54
|
+
default:
|
|
55
|
+
return undefined;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
export function checkVersionRange(contract: string | undefined, version: string): VersionVerdict {
|
|
60
|
+
const spec = contract?.trim() ?? '';
|
|
61
|
+
if (spec === '') return 'satisfied';
|
|
62
|
+
if (!readable(version)) return 'malformed';
|
|
63
|
+
const tokens = spec.split(/\s+/).filter((token) => token !== '');
|
|
64
|
+
if (tokens.length === 0) return 'satisfied';
|
|
65
|
+
for (const token of tokens) {
|
|
66
|
+
const verdict = comparator(token, version);
|
|
67
|
+
if (verdict === undefined) return 'malformed';
|
|
68
|
+
if (!verdict) return 'unsatisfied';
|
|
69
|
+
}
|
|
70
|
+
return 'satisfied';
|
|
71
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { readFileSync } from 'node:fs';
|
|
2
|
+
|
|
3
|
+
export function runningVersionOf(moduleUrl: string): string | undefined {
|
|
4
|
+
try {
|
|
5
|
+
const read = JSON.parse(readFileSync(new URL('../../package.json', moduleUrl), 'utf8')) as {
|
|
6
|
+
readonly version?: unknown;
|
|
7
|
+
};
|
|
8
|
+
return typeof read.version === 'string' && read.version !== '' ? read.version : undefined;
|
|
9
|
+
} catch {
|
|
10
|
+
return undefined;
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
export function compareVersions(a: string, b: string): number | undefined {
|
|
15
|
+
const na = a.split('.').map((part) => Number.parseInt(part, 10));
|
|
16
|
+
const nb = b.split('.').map((part) => Number.parseInt(part, 10));
|
|
17
|
+
if (na.some(Number.isNaN) || nb.some(Number.isNaN)) return undefined;
|
|
18
|
+
for (let index = 0; index < Math.max(na.length, nb.length); index += 1) {
|
|
19
|
+
const left = na[index] ?? 0;
|
|
20
|
+
const right = nb[index] ?? 0;
|
|
21
|
+
if (left !== right) return left > right ? 1 : -1;
|
|
22
|
+
}
|
|
23
|
+
return 0;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
export function isNewerVersion(latest: string, installed: string): boolean {
|
|
27
|
+
if (latest === installed) return false;
|
|
28
|
+
const compared = compareVersions(latest, installed);
|
|
29
|
+
return compared === undefined ? true : compared > 0;
|
|
30
|
+
}
|
package/src/host.ts
CHANGED
|
@@ -1,38 +1,69 @@
|
|
|
1
1
|
export * from './config/constants.js';
|
|
2
2
|
export * from './api/context-ref.js';
|
|
3
|
-
export * from './
|
|
4
|
-
export * from './
|
|
5
|
-
export * from './
|
|
3
|
+
export * from './contract/unit.js';
|
|
4
|
+
export * from './contract/needs.js';
|
|
5
|
+
export * from './contract/data.js';
|
|
6
|
+
export * from './contract/unit-board.js';
|
|
7
|
+
export * from './contract/workbench-contract.js';
|
|
8
|
+
export * from './contract/blocker.js';
|
|
9
|
+
export * from './contract/facts.js';
|
|
10
|
+
export * from './contract/long-task.js';
|
|
6
11
|
export * from './lib/text.js';
|
|
7
12
|
export * from './lib/ui.js';
|
|
8
13
|
export * from './lib/board-fact.js';
|
|
9
14
|
export * from './api/blocker-table.js';
|
|
15
|
+
export * from './contract/unit-declaration.js';
|
|
10
16
|
export * from './host/board-fact.js';
|
|
11
|
-
export * from './host/browser-find.js';
|
|
12
|
-
export * from './host/browser-read.js';
|
|
13
|
-
export * from './host/cli-error.js';
|
|
14
17
|
export * from './host/context-ref.js';
|
|
15
|
-
export * from './host/data-root.js';
|
|
16
18
|
export * from './host/diy-debug.js';
|
|
17
19
|
export * from './host/diy-record.js';
|
|
18
20
|
export * from './host/facts.js';
|
|
19
21
|
export * from './host/git.js';
|
|
20
22
|
export * from './host/http.js';
|
|
23
|
+
export * from './host/lib-capabilities.js';
|
|
21
24
|
export * from './host/long-task.js';
|
|
22
|
-
export * from './host/opencli-runtime.js';
|
|
23
|
-
export * from './host/opencli-window.js';
|
|
24
|
-
export * from './host/opencli.js';
|
|
25
25
|
export * from './host/panel-state.js';
|
|
26
26
|
export * from './host/plugin-ledger.js';
|
|
27
|
-
export * from './host/
|
|
28
|
-
export * from './host/
|
|
29
|
-
export * from './host/shell-text.js';
|
|
30
|
-
export * from './host/shell.js';
|
|
27
|
+
export * from './host/time.js';
|
|
28
|
+
export * from './host/tokens.js';
|
|
31
29
|
export * from './host/tool-approval.js';
|
|
32
30
|
export * from './host/tool-kit.js';
|
|
33
|
-
export * from './host/unit-declaration.js';
|
|
34
31
|
export * from './host/unit-face.js';
|
|
35
|
-
export * from './host/unit-libs.js';
|
|
36
32
|
export * from './host/value-handoff.js';
|
|
37
33
|
export * from './host/workspace-store.js';
|
|
38
34
|
export * from './host/write-result.js';
|
|
35
|
+
export * from './host/cli-error.js';
|
|
36
|
+
export * from './host/data-root.js';
|
|
37
|
+
export * from './host/shell-text.js';
|
|
38
|
+
export * from './host/shell.js';
|
|
39
|
+
export * from './host/data-error.js';
|
|
40
|
+
export * from './host/provision.js';
|
|
41
|
+
export * from './host/channel-plugin.js';
|
|
42
|
+
export * from './host/recipe.js';
|
|
43
|
+
export * from './host/recipe-rules.js';
|
|
44
|
+
export * from './contract/unit-capability.js';
|
|
45
|
+
export * from './contract/plugin-source.js';
|
|
46
|
+
export * from './contract/cli.js';
|
|
47
|
+
export * from './host/cli.js';
|
|
48
|
+
export * from './host/command-name.js';
|
|
49
|
+
export * from './host/browser.js';
|
|
50
|
+
export * from './host/preflight.js';
|
|
51
|
+
export * from './host/platform.js';
|
|
52
|
+
export * from './host/profile-port.js';
|
|
53
|
+
export * from './host/supply-port.js';
|
|
54
|
+
export * from './host/version.js';
|
|
55
|
+
export * from './host/adapter-types.js';
|
|
56
|
+
export * from './host/paths.js';
|
|
57
|
+
export * from './host/plugin.js';
|
|
58
|
+
export * from './host/spec.js';
|
|
59
|
+
export * from './host/plugin-source.js';
|
|
60
|
+
export * from './host/lib-install.js';
|
|
61
|
+
export * from './host/supply-index.js';
|
|
62
|
+
export * from './host/patch.js';
|
|
63
|
+
export * from './host/adapters.js';
|
|
64
|
+
export * from './host/adapter-set.js';
|
|
65
|
+
export * from './host/needs.js';
|
|
66
|
+
export * from './host/port-types.js';
|
|
67
|
+
export * from './host/version-range.js';
|
|
68
|
+
export * from './host/market-index.js';
|
|
69
|
+
export * from './host/changelog.js';
|