@dsh-workbench/core 1.1.10 → 1.1.12
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/client.js +1229 -856
- package/dist/client/client.body.js +1229 -856
- package/dist/client/index.js +1090 -717
- package/dist/host/index.js +37 -24
- package/dist/types/app/layouts/market/use-market-reload.d.ts +10 -4
- package/dist/types/app/layouts/market/use-module-versions.d.ts +9 -8
- package/dist/types/app/layouts/rightbar/MarketView.d.ts +4 -26
- package/dist/types/app/layouts/rightbar/market-act.d.ts +2 -3
- package/dist/types/app/layouts/rightbar/market-body.d.ts +25 -0
- package/dist/types/app/layouts/rightbar/market-detail-facts.d.ts +14 -0
- package/dist/types/app/layouts/rightbar/market-detail-page.d.ts +20 -0
- package/dist/types/app/layouts/rightbar/market-detail.d.ts +17 -0
- package/dist/types/app/layouts/rightbar/market-row-types.d.ts +7 -0
- package/dist/types/app/layouts/rightbar/market-rows.d.ts +2 -0
- package/dist/types/app/layouts/rightbar/market-scene-view.d.ts +33 -0
- package/dist/types/app/layouts/rightbar/market-section.d.ts +23 -4
- package/dist/types/app/layouts/rightbar/market-view-text.d.ts +1 -0
- package/dist/types/modules/panels/model/plugin-section.d.ts +1 -0
- package/dist/types/shared/api/installed-plugins.d.ts +2 -0
- package/dist/types/shared/hooks/bundle-queries.d.ts +2 -2
- package/package.json +4 -4
package/dist/host/index.js
CHANGED
|
@@ -6501,6 +6501,22 @@ function migrationFollowUp(input) {
|
|
|
6501
6501
|
} : void 0;
|
|
6502
6502
|
}
|
|
6503
6503
|
//#endregion
|
|
6504
|
+
//#region src/shared/api/host/profile-dependencies.ts
|
|
6505
|
+
function dependencyReader(profileDir) {
|
|
6506
|
+
if (profileDir === null) return () => void 0;
|
|
6507
|
+
let dependencies;
|
|
6508
|
+
return (pkg) => {
|
|
6509
|
+
if (dependencies === void 0) try {
|
|
6510
|
+
const raw = JSON.parse(readFileSync(join(profileDir, "package.json"), "utf8")).dependencies;
|
|
6511
|
+
dependencies = typeof raw === "object" && raw !== null ? raw : {};
|
|
6512
|
+
} catch {
|
|
6513
|
+
dependencies = {};
|
|
6514
|
+
}
|
|
6515
|
+
const value = dependencies[pkg];
|
|
6516
|
+
return typeof value === "string" ? value : void 0;
|
|
6517
|
+
};
|
|
6518
|
+
}
|
|
6519
|
+
//#endregion
|
|
6504
6520
|
//#region src/shared/api/host/bundle-routes.ts
|
|
6505
6521
|
function registryOf(search) {
|
|
6506
6522
|
const raw = param(search, "registry");
|
|
@@ -6564,9 +6580,10 @@ async function latestIfReleaseReady(supply, input) {
|
|
|
6564
6580
|
async function workbenchVersion(supply, input) {
|
|
6565
6581
|
const read = supply.readProfilePackage(input.dir, PLUGIN_ID);
|
|
6566
6582
|
if (read === void 0) return void 0;
|
|
6583
|
+
const spec = dependencyReader(input.dir)(PLUGIN_ID);
|
|
6567
6584
|
const registry = read.registry ?? input.fallback;
|
|
6568
6585
|
const shell = input.shell;
|
|
6569
|
-
const queried = read.local === true || shell === void 0 || registry === void 0 ? void 0 : await supply.latestVersion({
|
|
6586
|
+
const queried = read.local === true || !input.check || shell === void 0 || registry === void 0 ? void 0 : await supply.latestVersion({
|
|
6570
6587
|
shell,
|
|
6571
6588
|
name: read.pkg,
|
|
6572
6589
|
registry,
|
|
@@ -6586,7 +6603,9 @@ async function workbenchVersion(supply, input) {
|
|
|
6586
6603
|
...latest === void 0 ? {} : { latest },
|
|
6587
6604
|
...input.running === void 0 ? {} : { running: input.running },
|
|
6588
6605
|
...read.local === true ? { local: true } : {},
|
|
6589
|
-
...input.followUp === void 0 ? {} : { followUp: input.followUp }
|
|
6606
|
+
...input.followUp === void 0 ? {} : { followUp: input.followUp },
|
|
6607
|
+
...spec === void 0 ? {} : { spec },
|
|
6608
|
+
...registry === void 0 || read.local === true ? {} : { registry }
|
|
6590
6609
|
};
|
|
6591
6610
|
}
|
|
6592
6611
|
function moduleVersionsHandler(ctx, shell, running, selfUpdate) {
|
|
@@ -6601,12 +6620,15 @@ function moduleVersionsHandler(ctx, shell, running, selfUpdate) {
|
|
|
6601
6620
|
const found = supply.profileModules(dir);
|
|
6602
6621
|
const refusals = new Map((ctx.get("workbenchUnits")?.refusals() ?? []).filter((one) => one.unit !== "").map((one) => [one.unit, one.reasons]));
|
|
6603
6622
|
const force = param(search, "force") === "1";
|
|
6623
|
+
const check = param(search, "check") !== "0";
|
|
6604
6624
|
const fallback = (await manager.registries())?.resolved ?? void 0;
|
|
6625
|
+
const dependencyOf = dependencyReader(dir);
|
|
6605
6626
|
const modules = await Promise.all(found.map(async (module) => {
|
|
6606
6627
|
const local = module.local === true;
|
|
6607
6628
|
const fromRegistry = module.fromRegistry !== false;
|
|
6608
6629
|
const registry = fromRegistry ? module.registry ?? fallback : void 0;
|
|
6609
|
-
const
|
|
6630
|
+
const spec = dependencyOf(module.pkg);
|
|
6631
|
+
const latest = local || !fromRegistry || !check || shell === void 0 || registry === void 0 ? void 0 : await supply.latestVersion({
|
|
6610
6632
|
shell,
|
|
6611
6633
|
name: module.pkg,
|
|
6612
6634
|
registry,
|
|
@@ -6641,8 +6663,10 @@ function moduleVersionsHandler(ctx, shell, running, selfUpdate) {
|
|
|
6641
6663
|
...local ? {
|
|
6642
6664
|
local: true,
|
|
6643
6665
|
latestUnavailable: "local"
|
|
6644
|
-
} : latest !== void 0 ? {} : { latestUnavailable:
|
|
6645
|
-
...refused === void 0 ? {} : { refused }
|
|
6666
|
+
} : latest !== void 0 ? {} : !fromRegistry ? { latestUnavailable: "not-registry" } : registry === void 0 ? { latestUnavailable: "no-registry" } : check ? { latestUnavailable: "probe-failed" } : {},
|
|
6667
|
+
...refused === void 0 ? {} : { refused },
|
|
6668
|
+
...spec === void 0 ? {} : { spec },
|
|
6669
|
+
...registry === void 0 ? {} : { registry }
|
|
6646
6670
|
};
|
|
6647
6671
|
}));
|
|
6648
6672
|
const selfUpdateNow = selfUpdate?.();
|
|
@@ -6658,6 +6682,7 @@ function moduleVersionsHandler(ctx, shell, running, selfUpdate) {
|
|
|
6658
6682
|
shell,
|
|
6659
6683
|
fallback,
|
|
6660
6684
|
force,
|
|
6685
|
+
check,
|
|
6661
6686
|
...running === void 0 ? {} : { running },
|
|
6662
6687
|
...followUp === void 0 ? {} : { followUp },
|
|
6663
6688
|
logger: ctx.logger
|
|
@@ -14646,22 +14671,6 @@ function transportOfSpec(spec) {
|
|
|
14646
14671
|
};
|
|
14647
14672
|
}
|
|
14648
14673
|
//#endregion
|
|
14649
|
-
//#region src/shared/api/host/profile-dependencies.ts
|
|
14650
|
-
function dependencyReader(profileDir) {
|
|
14651
|
-
if (profileDir === null) return () => void 0;
|
|
14652
|
-
let dependencies;
|
|
14653
|
-
return (pkg) => {
|
|
14654
|
-
if (dependencies === void 0) try {
|
|
14655
|
-
const raw = JSON.parse(readFileSync(join(profileDir, "package.json"), "utf8")).dependencies;
|
|
14656
|
-
dependencies = typeof raw === "object" && raw !== null ? raw : {};
|
|
14657
|
-
} catch {
|
|
14658
|
-
dependencies = {};
|
|
14659
|
-
}
|
|
14660
|
-
const value = dependencies[pkg];
|
|
14661
|
-
return typeof value === "string" ? value : void 0;
|
|
14662
|
-
};
|
|
14663
|
-
}
|
|
14664
|
-
//#endregion
|
|
14665
14674
|
//#region src/modules/panels/model/market-sources-act.ts
|
|
14666
14675
|
function marketSourcesRoutes(store) {
|
|
14667
14676
|
return { [MARKET_SOURCES_ROUTE]: async () => ({
|
|
@@ -16636,7 +16645,7 @@ var INSTALLED_PLUGINS_ROUTE = "panels/plugins";
|
|
|
16636
16645
|
//#endregion
|
|
16637
16646
|
//#region src/modules/panels/model/plugin-section.ts
|
|
16638
16647
|
async function installedPlugins(options) {
|
|
16639
|
-
const { ledger, shell, force = false } = options;
|
|
16648
|
+
const { ledger, shell, force = false, check = true } = options;
|
|
16640
16649
|
const supply = options.supply ?? requireSupply();
|
|
16641
16650
|
const rows = [];
|
|
16642
16651
|
for (const entry of ledger.list()) {
|
|
@@ -16644,7 +16653,8 @@ async function installedPlugins(options) {
|
|
|
16644
16653
|
shell,
|
|
16645
16654
|
package: entry.package,
|
|
16646
16655
|
registry: entry.registry,
|
|
16647
|
-
force
|
|
16656
|
+
force,
|
|
16657
|
+
check
|
|
16648
16658
|
});
|
|
16649
16659
|
rows.push({
|
|
16650
16660
|
pkg: entry.package,
|
|
@@ -16654,6 +16664,8 @@ async function installedPlugins(options) {
|
|
|
16654
16664
|
...release.latest === void 0 ? {} : { latest: release.latest }
|
|
16655
16665
|
},
|
|
16656
16666
|
...entry.local === true ? { local: true } : {},
|
|
16667
|
+
...entry.registry === void 0 ? {} : { registry: entry.registry },
|
|
16668
|
+
...entry.installedAt === void 0 ? {} : { installedAt: entry.installedAt },
|
|
16657
16669
|
...pluginOnDisk(entry, ledger.pluginFiles) ? {} : { broken: true }
|
|
16658
16670
|
});
|
|
16659
16671
|
}
|
|
@@ -16667,7 +16679,8 @@ function pluginRoutes(options) {
|
|
|
16667
16679
|
ledger: options.ledger,
|
|
16668
16680
|
...options.shell === void 0 ? {} : { shell: options.shell },
|
|
16669
16681
|
...options.supply === void 0 ? {} : { supply: options.supply },
|
|
16670
|
-
force: param(search, "force") === "1"
|
|
16682
|
+
force: param(search, "force") === "1",
|
|
16683
|
+
check: param(search, "check") !== "0"
|
|
16671
16684
|
})
|
|
16672
16685
|
};
|
|
16673
16686
|
} };
|
|
@@ -1,8 +1,14 @@
|
|
|
1
|
-
import { type ModuleVersionsView, type VersionsPart } from './use-module-versions';
|
|
1
|
+
import { type ModuleVersionsView, type VersionsPart, type VersionsScope } from './use-module-versions';
|
|
2
|
+
export interface MarketReloadOptions {
|
|
3
|
+
readonly force?: boolean;
|
|
4
|
+
}
|
|
5
|
+
export interface MarketCheckOptions {
|
|
6
|
+
readonly force?: boolean;
|
|
7
|
+
readonly scope?: VersionsScope;
|
|
8
|
+
}
|
|
2
9
|
export interface MarketReload {
|
|
3
|
-
readonly reload: (options?:
|
|
4
|
-
|
|
5
|
-
}) => void;
|
|
10
|
+
readonly reload: (options?: MarketReloadOptions) => void;
|
|
11
|
+
readonly recheck: () => void;
|
|
6
12
|
readonly checkPart: (part: VersionsPart) => void;
|
|
7
13
|
}
|
|
8
14
|
export interface MarketReloadInput {
|
|
@@ -18,19 +18,19 @@ export interface ModuleVersionsState {
|
|
|
18
18
|
readonly modulesCheck: VersionsCheck;
|
|
19
19
|
readonly pluginsCheck: VersionsCheck;
|
|
20
20
|
}
|
|
21
|
-
export interface ModuleVersionsView extends ModuleVersionsState {
|
|
22
|
-
readonly checking: boolean;
|
|
23
|
-
reload(options?: {
|
|
24
|
-
readonly force?: boolean;
|
|
25
|
-
readonly fresh?: boolean;
|
|
26
|
-
readonly scope?: VersionsScope;
|
|
27
|
-
}): void;
|
|
28
|
-
}
|
|
29
21
|
export interface ModuleVersionsRead {
|
|
22
|
+
check?: boolean;
|
|
30
23
|
force?: boolean;
|
|
31
24
|
fresh?: boolean;
|
|
32
25
|
scope?: VersionsScope;
|
|
33
26
|
}
|
|
27
|
+
export interface InstalledReadOptions {
|
|
28
|
+
readonly fresh?: boolean;
|
|
29
|
+
}
|
|
30
|
+
export interface ModuleVersionsView extends ModuleVersionsState {
|
|
31
|
+
readonly checking: boolean;
|
|
32
|
+
reload(options?: ModuleVersionsRead): void;
|
|
33
|
+
}
|
|
34
34
|
export declare function bumpModuleVersionsEpoch(): void;
|
|
35
35
|
export declare function moduleVersionsValue(): ModuleVersionsState;
|
|
36
36
|
export declare function resetModuleVersions(): void;
|
|
@@ -39,4 +39,5 @@ export declare function withMarketUpdates(modules: readonly ModuleVersion[], row
|
|
|
39
39
|
export declare function moduleVersionsCheckedAt(now: ModuleVersionsState): number | null;
|
|
40
40
|
export declare function moduleVersionsChecking(value: ModuleVersionsState): boolean;
|
|
41
41
|
export declare function runModuleVersionsRead(force?: boolean, fresh?: boolean, scope?: VersionsScope): Promise<void>;
|
|
42
|
+
export declare function runInstalledRead(options?: InstalledReadOptions): Promise<void>;
|
|
42
43
|
export declare function useModuleVersions(): ModuleVersionsView;
|
|
@@ -1,16 +1,15 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { Translate } from '@dsh-workbench/shared';
|
|
2
2
|
import type { UnitManifest } from '@dsh-workbench/shared';
|
|
3
3
|
import type { CapabilityMap } from '../../../shared/hooks/use-capabilities';
|
|
4
4
|
import type { MarketFreshness } from './market-freshness';
|
|
5
5
|
import type { InstalledPlugin } from '../../../shared/api/installed-plugins';
|
|
6
|
-
import { type InstalledWorkbenchModule
|
|
6
|
+
import { type InstalledWorkbenchModule } from './market-rows';
|
|
7
7
|
import type { TitleResolve } from './market-names';
|
|
8
8
|
import type { MarketMock } from './market-mock';
|
|
9
|
-
import type { MarketFailure } from './market-row-types';
|
|
10
9
|
import type { ModuleUpdateMap } from './market-rows';
|
|
11
10
|
import type { WorkbenchSelfUpdate, WorkbenchVersion } from '../../../kernel/contract/bundle-install';
|
|
12
|
-
import { type Pending } from './market-view-text';
|
|
13
11
|
import type { VersionsCheck, VersionsPart } from '../market/use-module-versions';
|
|
12
|
+
import type { MarketReloadOptions } from '../market/use-market-reload';
|
|
14
13
|
export interface MarketViewProps {
|
|
15
14
|
readonly t: Translate;
|
|
16
15
|
readonly titleOf: TitleResolve;
|
|
@@ -19,9 +18,7 @@ export interface MarketViewProps {
|
|
|
19
18
|
readonly capabilities: CapabilityMap | null;
|
|
20
19
|
readonly runtimePluginMarket?: boolean | undefined;
|
|
21
20
|
readonly freshness: MarketFreshness;
|
|
22
|
-
readonly onChanged: (options?:
|
|
23
|
-
readonly force?: boolean;
|
|
24
|
-
}) => void;
|
|
21
|
+
readonly onChanged: (options?: MarketReloadOptions) => void;
|
|
25
22
|
readonly onPending?: ((pending: boolean) => void) | undefined;
|
|
26
23
|
readonly updates?: ModuleUpdateMap | undefined;
|
|
27
24
|
readonly modulesCheck?: VersionsCheck | undefined;
|
|
@@ -38,23 +35,4 @@ export interface MarketViewProps {
|
|
|
38
35
|
readonly defaults?: readonly string[] | undefined;
|
|
39
36
|
readonly changed?: Readonly<Record<string, number>> | undefined;
|
|
40
37
|
}
|
|
41
|
-
export declare function MarketBody({ t, self, shown, pluginList, installedList, shared, pending, failed, notice, act, onConfirming, setDefault, boardBusy, checks, onRecheck, rechecking, runtimePluginMarket, }: {
|
|
42
|
-
readonly t: Translate;
|
|
43
|
-
readonly runtimePluginMarket?: boolean | undefined;
|
|
44
|
-
readonly self: MarketRow | undefined;
|
|
45
|
-
readonly shown: readonly MarketRow[];
|
|
46
|
-
readonly pluginList: readonly MarketRow[];
|
|
47
|
-
readonly installedList: readonly MarketRow[];
|
|
48
|
-
readonly shared: readonly SharedRow[];
|
|
49
|
-
readonly pending: Pending | null;
|
|
50
|
-
readonly failed: MarketFailure | null;
|
|
51
|
-
readonly notice: string | null;
|
|
52
|
-
readonly act: (id: string, action: MarketRowAction) => Promise<void>;
|
|
53
|
-
readonly onConfirming: (id: string | null) => void;
|
|
54
|
-
readonly setDefault: (id: string, next: boolean) => Promise<void>;
|
|
55
|
-
readonly boardBusy: boolean;
|
|
56
|
-
readonly checks: Readonly<Record<VersionsPart, ReactNode>>;
|
|
57
|
-
readonly onRecheck: () => void;
|
|
58
|
-
readonly rechecking: boolean;
|
|
59
|
-
}): JSX.Element;
|
|
60
38
|
export declare function MarketView({ t, titleOf, manifests, installable, capabilities, runtimePluginMarket, freshness, onChanged, onPending, updates, modulesCheck, pluginsCheck, onCheck, installed, installedRead, workbench, selfUpdate, plugins, settling, installing, mock, defaults, changed, }: MarketViewProps): JSX.Element;
|
|
@@ -2,6 +2,7 @@ import type { Translate, WriteOutcome } from '@dsh-workbench/shared';
|
|
|
2
2
|
import type { MarketFailure, MarketRow } from './market-row-types';
|
|
3
3
|
import { type MarketRowAction } from './market-rows';
|
|
4
4
|
import { type HeldRow, type Pending } from './market-view-text';
|
|
5
|
+
import type { MarketReloadOptions } from '../market/use-market-reload';
|
|
5
6
|
export interface MarketActSeats {
|
|
6
7
|
readonly setPending: (next: Pending | null) => void;
|
|
7
8
|
readonly setHeld: (next: HeldRow | undefined) => void;
|
|
@@ -15,8 +16,6 @@ export interface MarketActOptions {
|
|
|
15
16
|
readonly rowOf: (id: string) => MarketRow | undefined;
|
|
16
17
|
readonly seats: MarketActSeats;
|
|
17
18
|
readonly send: (body: Record<string, unknown>) => Promise<WriteOutcome<unknown>>;
|
|
18
|
-
readonly onChanged: (options?:
|
|
19
|
-
readonly force?: boolean;
|
|
20
|
-
}) => void;
|
|
19
|
+
readonly onChanged: (options?: MarketReloadOptions) => void;
|
|
21
20
|
}
|
|
22
21
|
export declare function marketActOf(options: MarketActOptions): (id: string, action: MarketRowAction) => Promise<void>;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { ReactNode, Translate } from '@dsh-workbench/shared';
|
|
2
|
+
import type { MarketFailure, MarketRow, MarketRowAction } from './market-row-types';
|
|
3
|
+
import type { SharedRow } from './market-shared-rows';
|
|
4
|
+
import type { Pending } from './market-view-text';
|
|
5
|
+
import type { VersionsPart } from '../market/use-module-versions';
|
|
6
|
+
export declare function MarketBody({ t, self, shown, pluginList, installedList, shared, pending, failed, notice, act, onConfirming, setDefault, boardBusy, checks, onRecheck, rechecking, runtimePluginMarket, onOpenDetail, }: {
|
|
7
|
+
readonly t: Translate;
|
|
8
|
+
readonly runtimePluginMarket?: boolean | undefined;
|
|
9
|
+
readonly self: MarketRow | undefined;
|
|
10
|
+
readonly shown: readonly MarketRow[];
|
|
11
|
+
readonly pluginList: readonly MarketRow[];
|
|
12
|
+
readonly installedList: readonly MarketRow[];
|
|
13
|
+
readonly shared: readonly SharedRow[];
|
|
14
|
+
readonly pending: Pending | null;
|
|
15
|
+
readonly failed: MarketFailure | null;
|
|
16
|
+
readonly notice: string | null;
|
|
17
|
+
readonly act: (id: string, action: MarketRowAction) => Promise<void>;
|
|
18
|
+
readonly onConfirming: (id: string | null) => void;
|
|
19
|
+
readonly setDefault: (id: string, next: boolean) => Promise<void>;
|
|
20
|
+
readonly boardBusy: boolean;
|
|
21
|
+
readonly checks: Readonly<Record<VersionsPart, ReactNode>>;
|
|
22
|
+
readonly onRecheck: () => void;
|
|
23
|
+
readonly rechecking: boolean;
|
|
24
|
+
readonly onOpenDetail?: ((id: string) => void) | undefined;
|
|
25
|
+
}): JSX.Element;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { Translate } from '@dsh-workbench/shared';
|
|
2
|
+
import type { MarketRow } from './market-row-types';
|
|
3
|
+
export interface MarketDetailFact {
|
|
4
|
+
readonly labelKey: string;
|
|
5
|
+
readonly value: string;
|
|
6
|
+
readonly code?: boolean;
|
|
7
|
+
}
|
|
8
|
+
export declare function isDirectSourceSpec(spec: string): boolean;
|
|
9
|
+
export declare function localPathOf(row: MarketRow): string | undefined;
|
|
10
|
+
export declare function installSourceOf(row: MarketRow, t: Translate): {
|
|
11
|
+
readonly text: string;
|
|
12
|
+
readonly code: boolean;
|
|
13
|
+
};
|
|
14
|
+
export declare function marketDetailFacts(row: MarketRow, t: Translate): readonly MarketDetailFact[];
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { Translate } from '@dsh-workbench/shared';
|
|
2
|
+
import type { MarketFailure, MarketRow, MarketRowAction } from './market-row-types';
|
|
3
|
+
import type { Pending } from './market-view-text';
|
|
4
|
+
export declare function MarketDetailPage({ t, row, pending, failure, notice, boardBusy, confirming, confirmingRow, rowById, onBack, onConfirming, onDefault, onAct, onRecheck, rechecking, }: {
|
|
5
|
+
readonly t: Translate;
|
|
6
|
+
readonly row: MarketRow;
|
|
7
|
+
readonly pending: Pending | null;
|
|
8
|
+
readonly failure: MarketFailure | null;
|
|
9
|
+
readonly notice: string | null;
|
|
10
|
+
readonly boardBusy?: boolean | undefined;
|
|
11
|
+
readonly confirming: string | null;
|
|
12
|
+
readonly confirmingRow: MarketRow | undefined;
|
|
13
|
+
readonly rowById: ReadonlyMap<string, MarketRow>;
|
|
14
|
+
readonly onBack: () => void;
|
|
15
|
+
readonly onConfirming: (id: string | null) => void;
|
|
16
|
+
readonly onDefault: (id: string, next: boolean) => Promise<void>;
|
|
17
|
+
readonly onAct: (id: string, action: MarketRowAction) => Promise<void>;
|
|
18
|
+
readonly onRecheck: () => void;
|
|
19
|
+
readonly rechecking: boolean;
|
|
20
|
+
}): JSX.Element;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { Translate } from '@dsh-workbench/shared';
|
|
2
|
+
import type { MarketFailure, MarketRow, MarketRowAction } from './market-row-types';
|
|
3
|
+
import type { Pending } from './market-view-text';
|
|
4
|
+
export interface MarketDetailProps {
|
|
5
|
+
readonly t: Translate;
|
|
6
|
+
readonly row: MarketRow;
|
|
7
|
+
readonly pending: Pending | null;
|
|
8
|
+
readonly failure: MarketFailure | null;
|
|
9
|
+
readonly notice: string | null;
|
|
10
|
+
readonly boardBusy?: boolean | undefined;
|
|
11
|
+
readonly onBack: () => void;
|
|
12
|
+
readonly onRequest: (action: MarketRowAction) => void;
|
|
13
|
+
readonly onDefault?: ((next: boolean) => void) | undefined;
|
|
14
|
+
readonly onRecheck: () => void;
|
|
15
|
+
readonly rechecking: boolean;
|
|
16
|
+
}
|
|
17
|
+
export declare function MarketDetail({ t, row, pending, failure, notice, boardBusy, onBack, onRequest, onDefault, onRecheck, rechecking, }: MarketDetailProps): JSX.Element;
|
|
@@ -22,6 +22,9 @@ export interface ModuleUpdate {
|
|
|
22
22
|
readonly local?: boolean;
|
|
23
23
|
readonly blocked?: ModuleUpdateBlock;
|
|
24
24
|
readonly market?: MarketInstalledModule;
|
|
25
|
+
readonly pkg?: string;
|
|
26
|
+
readonly spec?: string;
|
|
27
|
+
readonly registry?: string;
|
|
25
28
|
}
|
|
26
29
|
export interface MarketFollowUp {
|
|
27
30
|
readonly id: string;
|
|
@@ -53,4 +56,8 @@ export interface MarketRow {
|
|
|
53
56
|
readonly defaultChanged?: number;
|
|
54
57
|
readonly broken?: boolean;
|
|
55
58
|
readonly followUp?: MarketFollowUp;
|
|
59
|
+
readonly spec?: string;
|
|
60
|
+
readonly registry?: string;
|
|
61
|
+
readonly installedAt?: string;
|
|
62
|
+
readonly removeViaBundle?: boolean;
|
|
56
63
|
}
|
|
@@ -25,6 +25,8 @@ export interface InstalledWorkbenchModule {
|
|
|
25
25
|
readonly refused?: readonly string[] | undefined;
|
|
26
26
|
readonly clientRefused?: readonly string[] | undefined;
|
|
27
27
|
readonly market?: MarketInstalledModule | undefined;
|
|
28
|
+
readonly spec?: string | undefined;
|
|
29
|
+
readonly registry?: string | undefined;
|
|
28
30
|
}
|
|
29
31
|
export declare function withClientRefusals(modules: readonly InstalledWorkbenchModule[], refusals: readonly {
|
|
30
32
|
readonly unit: string;
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import type { ReactNode, Translate } from '@dsh-workbench/shared';
|
|
2
|
+
import type { MarketFailure, MarketRow, MarketRowAction } from './market-row-types';
|
|
3
|
+
import type { SharedRow } from './market-shared-rows';
|
|
4
|
+
import type { VersionsPart } from '../market/use-module-versions';
|
|
5
|
+
import type { Pending } from './market-view-text';
|
|
6
|
+
export declare function MarketSceneView({ t, runtimePluginMarket, self, shown, pluginList, installedList, shared, pending, failed, notice, act, onConfirming, setDefault, boardBusy, checks, onRecheck, rechecking, onOpenDetail, detailRow, confirming, confirmingRow, rowById, settled, nothing, settlingSize, onBack, }: {
|
|
7
|
+
readonly t: Translate;
|
|
8
|
+
readonly runtimePluginMarket?: boolean | undefined;
|
|
9
|
+
readonly self: MarketRow | undefined;
|
|
10
|
+
readonly shown: readonly MarketRow[];
|
|
11
|
+
readonly pluginList: readonly MarketRow[];
|
|
12
|
+
readonly installedList: readonly MarketRow[];
|
|
13
|
+
readonly shared: readonly SharedRow[];
|
|
14
|
+
readonly pending: Pending | null;
|
|
15
|
+
readonly failed: MarketFailure | null;
|
|
16
|
+
readonly notice: string | null;
|
|
17
|
+
readonly act: (id: string, action: MarketRowAction) => Promise<void>;
|
|
18
|
+
readonly onConfirming: (id: string | null) => void;
|
|
19
|
+
readonly setDefault: (id: string, next: boolean) => Promise<void>;
|
|
20
|
+
readonly boardBusy: boolean;
|
|
21
|
+
readonly checks: Readonly<Record<VersionsPart, ReactNode>>;
|
|
22
|
+
readonly onRecheck: () => void;
|
|
23
|
+
readonly rechecking: boolean;
|
|
24
|
+
readonly onOpenDetail: (id: string) => void;
|
|
25
|
+
readonly detailRow: MarketRow | undefined;
|
|
26
|
+
readonly confirming: string | null;
|
|
27
|
+
readonly confirmingRow: MarketRow | undefined;
|
|
28
|
+
readonly rowById: ReadonlyMap<string, MarketRow>;
|
|
29
|
+
readonly settled: boolean;
|
|
30
|
+
readonly nothing: boolean;
|
|
31
|
+
readonly settlingSize: number;
|
|
32
|
+
readonly onBack: () => void;
|
|
33
|
+
}): JSX.Element;
|
|
@@ -1,9 +1,27 @@
|
|
|
1
1
|
import type { ReactNode, Translate } from '@dsh-workbench/shared';
|
|
2
|
-
import type { MarketFailure, MarketRow } from './market-row-types';
|
|
3
|
-
import { type MarketRowAction } from './market-rows';
|
|
4
|
-
import type { MarketSectionIcon } from './market-section-icon';
|
|
2
|
+
import type { MarketFailure, MarketRow, MarketRowAction } from './market-row-types';
|
|
5
3
|
import { type Pending } from './market-view-text';
|
|
6
|
-
|
|
4
|
+
import type { MarketSectionIcon } from './market-section-icon';
|
|
5
|
+
export declare function MarketLineStatus({ t, row, quiet, }: {
|
|
6
|
+
readonly t: Translate;
|
|
7
|
+
readonly row: MarketRow;
|
|
8
|
+
readonly quiet: boolean;
|
|
9
|
+
}): JSX.Element | null;
|
|
10
|
+
export declare function MarketRowFailure({ t, failure, onRecheck, rechecking, }: {
|
|
11
|
+
readonly t: Translate;
|
|
12
|
+
readonly failure: MarketFailure | null;
|
|
13
|
+
readonly onRecheck: () => void;
|
|
14
|
+
readonly rechecking: boolean;
|
|
15
|
+
}): JSX.Element | null;
|
|
16
|
+
export declare function MarketRowControls({ t, row, pending, boardBusy, onRequest, onDefault, }: {
|
|
17
|
+
readonly t: Translate;
|
|
18
|
+
readonly row: MarketRow;
|
|
19
|
+
readonly pending: Pending | null;
|
|
20
|
+
readonly boardBusy?: boolean | undefined;
|
|
21
|
+
readonly onRequest: (action: MarketRowAction) => void;
|
|
22
|
+
readonly onDefault?: ((next: boolean) => void) | undefined;
|
|
23
|
+
}): JSX.Element;
|
|
24
|
+
export declare function MarketSection({ t, titleKey, icon, rows, pending, failureOf, act, confirmActions, onConfirming, onDefault, onOpenDetail, boardBusy, headAction, keepHead, onRecheck, rechecking, }: {
|
|
7
25
|
readonly t: Translate;
|
|
8
26
|
readonly titleKey?: string;
|
|
9
27
|
readonly icon?: MarketSectionIcon;
|
|
@@ -12,6 +30,7 @@ export declare function MarketSection({ t, titleKey, icon, rows, pending, failur
|
|
|
12
30
|
readonly failureOf: (id: string) => MarketFailure | null;
|
|
13
31
|
readonly act: (id: string, action: MarketRowAction) => Promise<void>;
|
|
14
32
|
readonly onDefault?: ((id: string, next: boolean) => void) | undefined;
|
|
33
|
+
readonly onOpenDetail?: ((id: string) => void) | undefined;
|
|
15
34
|
readonly boardBusy?: boolean | undefined;
|
|
16
35
|
readonly confirmActions: readonly MarketRowAction[];
|
|
17
36
|
readonly onConfirming: (id: string | null) => void;
|
|
@@ -34,6 +34,7 @@ export declare function heldIdOf(pending: Pending | null, held: HeldRow | undefi
|
|
|
34
34
|
export declare function pinnedRowOf(pending: Pending | null, held: HeldRow | undefined): MarketRow | undefined;
|
|
35
35
|
export declare function withPinnedRow(rows: readonly MarketRow[], pinned: MarketRow | undefined): MarketRow[];
|
|
36
36
|
export declare function marketFootVisible(shown: readonly MarketRow[], installed: readonly MarketRow[]): boolean;
|
|
37
|
+
export declare function marketRowMap(shown: readonly MarketRow[], self: MarketRow | undefined, installed: readonly MarketRow[], plugins: readonly MarketRow[]): ReadonlyMap<string, MarketRow>;
|
|
37
38
|
export declare function marketNamesOf(t: Translate, modules: readonly NameSource[], titleOf: TitleResolve, mocked: boolean): MarketNameMap;
|
|
38
39
|
export interface HeldRowControl {
|
|
39
40
|
readonly held: HeldRow | undefined;
|
|
@@ -6,6 +6,7 @@ export declare function installedPlugins(options: {
|
|
|
6
6
|
readonly ledger: PluginLedger;
|
|
7
7
|
readonly shell?: DshShell | undefined;
|
|
8
8
|
readonly force?: boolean;
|
|
9
|
+
readonly check?: boolean;
|
|
9
10
|
readonly supply?: SupplyPort | undefined;
|
|
10
11
|
}): Promise<readonly InstalledPlugin[]>;
|
|
11
12
|
export declare function pluginRoutes(options: {
|
|
@@ -6,6 +6,8 @@ export interface InstalledPlugin {
|
|
|
6
6
|
readonly latest?: string;
|
|
7
7
|
readonly local?: boolean;
|
|
8
8
|
readonly broken?: boolean;
|
|
9
|
+
readonly registry?: string;
|
|
10
|
+
readonly installedAt?: string;
|
|
9
11
|
}
|
|
10
12
|
export interface InstalledPluginsPayload {
|
|
11
13
|
readonly plugins: readonly InstalledPlugin[];
|
|
@@ -3,5 +3,5 @@ import { type BundleInspectionPayload, type BundleRegistriesPayload, type Module
|
|
|
3
3
|
import { type InstalledPluginsPayload } from '../api/installed-plugins';
|
|
4
4
|
export declare function readBundleRegistries(): Promise<ApiResponse<BundleRegistriesPayload>>;
|
|
5
5
|
export declare function readBundleInspection(spec: string, registry?: string): Promise<ApiResponse<BundleInspectionPayload>>;
|
|
6
|
-
export declare function readModuleVersions(force?: boolean): Promise<ApiResponse<ModuleVersionsPayload>>;
|
|
7
|
-
export declare function readInstalledPlugins(force?: boolean): Promise<ApiResponse<InstalledPluginsPayload>>;
|
|
6
|
+
export declare function readModuleVersions(force?: boolean, check?: boolean): Promise<ApiResponse<ModuleVersionsPayload>>;
|
|
7
|
+
export declare function readInstalledPlugins(force?: boolean, check?: boolean): Promise<ApiResponse<InstalledPluginsPayload>>;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dsh-workbench/core",
|
|
3
|
-
"version": "1.1.
|
|
3
|
+
"version": "1.1.12",
|
|
4
4
|
"description": "个人工作台:Agent 工作台(左栏 + 常驻对话 + 自研右侧数据面板)。",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"icon": "./icon.svg",
|
|
@@ -76,7 +76,7 @@
|
|
|
76
76
|
}
|
|
77
77
|
},
|
|
78
78
|
"devDependencies": {
|
|
79
|
-
"@arch-guard/core": "^0.11.
|
|
79
|
+
"@arch-guard/core": "^0.11.2",
|
|
80
80
|
"@deepseek-ai/dsh-client-ui-primitives": "0.2.1-rc.2",
|
|
81
81
|
"@types/node": "^24.19.0",
|
|
82
82
|
"@types/proper-lockfile": "^4.1.4",
|
|
@@ -100,8 +100,8 @@
|
|
|
100
100
|
"proper-lockfile": "^4.1.2",
|
|
101
101
|
"which": "^7.0.0",
|
|
102
102
|
"write-file-atomic": "^8.0.0",
|
|
103
|
-
"@dsh-workbench/
|
|
104
|
-
"@dsh-workbench/
|
|
103
|
+
"@dsh-workbench/adapters-default": "1.1.12",
|
|
104
|
+
"@dsh-workbench/shared": "1.1.12"
|
|
105
105
|
},
|
|
106
106
|
"license": "MIT",
|
|
107
107
|
"repository": {
|