dsh-life-pack 0.1.0 → 0.1.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.
package/dist/client.js CHANGED
@@ -1,21 +1,114 @@
1
- /** dsh-life-pack 客户端存根(P10 脚手架)。
2
- *
3
- * 只导航:写死槽位原生组件描述,不做动态按需加载,不做外嵌页。
4
- * 面板只经 host.call 触发导航,跨技能取数由各单品走自家 host.call 链,
5
- * 总管不 import 单品实现(见 boundaries 断言)。
6
- * 缺席纯条件渲染,无轮询(本文件无任何定时器)。
7
- */
8
- import { MANAGER_TABS, openManagerTab } from './nav.js';
9
- export const MANAGER_COMPONENT = { kind: 'native', name: 'LifePackNav' };
10
- export function mountManagerClient(port) {
11
- const order = [...MANAGER_TABS].sort((a, b) => a.order - b.order);
12
- void order;
13
- return () => { };
14
- }
15
- export function requestOpenViaHost(host, slotId) {
16
- return host.call('ilife.manager.open', { slotId });
17
- }
18
- export function openViaPort(port, slotId, sessionId) {
19
- openManagerTab(port, slotId, sessionId);
20
- }
1
+ window.__ModuleLoader__.load({
2
+ id: "dsh-life-pack",
3
+ factory: (require) => {
4
+ var module = { exports: {} };
5
+ var exports = module.exports;
6
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
7
+ //#region \0rolldown/runtime.js
8
+ var __create = Object.create;
9
+ var __defProp = Object.defineProperty;
10
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
11
+ var __getOwnPropNames = Object.getOwnPropertyNames;
12
+ var __getProtoOf = Object.getPrototypeOf;
13
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
14
+ var __copyProps = (to, from, except, desc) => {
15
+ if (from && typeof from === "object" || typeof from === "function") for (var keys = __getOwnPropNames(from), i = 0, n = keys.length, key; i < n; i++) {
16
+ key = keys[i];
17
+ if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
18
+ get: ((k) => from[k]).bind(null, key),
19
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
20
+ });
21
+ }
22
+ return to;
23
+ };
24
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule || !__hasOwnProp.call(mod, "default") ? __defProp(target, "default", {
25
+ value: mod,
26
+ enumerable: true
27
+ }) : target, mod));
28
+ //#endregion
29
+ let react = require("react");
30
+ react = __toESM(react, 1);
31
+ //#region src/nav.ts
32
+ function dualInstallCmd(singlePlugin) {
33
+ return "dsh plugin add dsh-life-pack " + singlePlugin;
34
+ }
35
+ /** P3 定案 6 tab(order 升序即 + 号菜单顺序;已打开条不受 order 控制)。 */
36
+ const MANAGER_TABS = [
37
+ {
38
+ skill: "memo",
39
+ slotId: "ilife:memo",
40
+ order: 70,
41
+ title: "备忘录",
42
+ plugin: "dsh-memo-ilife"
43
+ },
44
+ {
45
+ skill: "calorie",
46
+ slotId: "ilife:calorie",
47
+ order: 75,
48
+ title: "卡路里",
49
+ plugin: "dsh-calorie"
50
+ },
51
+ {
52
+ skill: "schedule",
53
+ slotId: "ilife:schedule",
54
+ order: 80,
55
+ title: "作息",
56
+ plugin: "dsh-schedule-ilife"
57
+ },
58
+ {
59
+ skill: "home",
60
+ slotId: "ilife:home",
61
+ order: 85,
62
+ title: "居家",
63
+ plugin: "dsh-home-ilife"
64
+ },
65
+ {
66
+ skill: "chef",
67
+ slotId: "ilife:chef",
68
+ order: 90,
69
+ title: "大厨",
70
+ plugin: "dsh-chef"
71
+ },
72
+ {
73
+ skill: "bill",
74
+ slotId: "ilife:cookie",
75
+ order: 95,
76
+ title: "记账",
77
+ plugin: "dsh-bill-ilife"
78
+ }
79
+ ];
80
+ //#endregion
81
+ //#region src/client.ts
82
+ /** dsh-life-pack client 适配器(六边形:browser 侧)。
83
+ *
84
+ * 真实 DSH 契约(出处见 docs/agents/dsh-client-contract.md):
85
+ * - 本文件经 tsdown 打成 loader 工厂包(browser/CJS + 注册包裹),classic 执行
86
+ * 只注册,副作用全在 factory 内;传递闭包禁 node 内建与 ESM 语法(回路
87
+ * test/client-bundle-48.test.mjs 看门)。
88
+ * - inject 短名 ['slots'](总管机制范围无 RPC,不声明 connection);apply 只注册
89
+ * 一处 settings.section(kind list,id 必填)。
90
+ * - 组件 React.createElement 手写(禁 JSX),纯渲染 MANAGER_TABS 六行
91
+ * (title/slotId/order)+ 每行补装命令(dualInstallCmd)只读文本——无假导航
92
+ * (无真实导航 API 就不装有)、无轮询、无 document/window/process。
93
+ */
94
+ const inject = ["slots"];
95
+ function LifePackSection() {
96
+ return react.createElement("div", null, react.createElement("h2", null, "爱生活总管"), MANAGER_TABS.map((t) => react.createElement("div", { key: t.slotId }, react.createElement("div", null, t.title + " · " + t.slotId + " · order " + String(t.order)), react.createElement("code", null, dualInstallCmd(t.plugin)))));
97
+ }
98
+ function apply(ctx) {
99
+ ctx.slots.inject("settings.section", () => ctx.slots.register({
100
+ name: "settings.section",
101
+ id: "dsh-life-pack",
102
+ order: 21,
103
+ label: () => "爱生活总管",
104
+ inject: () => ({})
105
+ }, LifePackSection));
106
+ }
107
+ //#endregion
108
+ exports.apply = apply;
109
+ exports.inject = inject;
110
+ return module.exports;
111
+ }
112
+ });
113
+
21
114
  //# sourceMappingURL=client.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAOxD,MAAM,CAAC,MAAM,iBAAiB,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAW,CAAC;AAElF,MAAM,UAAU,kBAAkB,CAAC,IAAiB;IAClD,MAAM,KAAK,GAAG,CAAC,GAAG,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;IAClE,KAAK,KAAK,CAAC;IACX,OAAO,GAAG,EAAE,GAAE,CAAC,CAAC;AAClB,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,IAAgB,EAAE,MAAc;IACjE,OAAO,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;AACrD,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,IAAiB,EAAE,MAAc,EAAE,SAAkB;IAC/E,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;AAC1C,CAAC"}
1
+ {"version":3,"file":"client.js","names":["React"],"sources":["../src/nav.ts","../src/client.ts"],"sourcesContent":["/** dsh-life-pack 导航表(P10 脚手架,P3 #4 定案 order)。\n *\n * 总管只导航:6 tab 描述子仅做 openTab 路径导航,内容由各单品包自注册\n * slot 提供;总管不 import 任何单品页/单品包(见 boundaries 断言)。\n * 缺席纯条件渲染:present 缺谁就回谁的 reco(推荐安装+补装提示),不轮询。\n * 子页不占栏:卡路里 diet/exercise/goal 等 ilife:calorie:* 后缀只在单品\n * 主面板内导航,绝不在此表另起 tab 行。\n * 60 deck:map 为 matt 探针已占位,本表不动它。\n */\n\nexport interface ManagerTab {\n readonly skill: string;\n readonly slotId: string;\n readonly order: number;\n readonly title: string;\n /** 提供该 tab 的单品插件包名(仅文档级引用,不 import)。 */\n readonly plugin: string;\n}\n\nexport interface RecoTab extends ManagerTab {\n readonly kind: 'reco';\n /** 补装命令(单命令双包口径,总管必须已在位)。 */\n readonly installCmd: string;\n readonly hint: string;\n}\n\nexport const MANAGER_PLUGIN = 'dsh-life-pack' as const;\n\nexport const DUAL_ADD_PREFIX = 'dsh plugin add dsh-life-pack' as const;\n\nexport function dualInstallCmd(singlePlugin: string): string {\n return DUAL_ADD_PREFIX + ' ' + singlePlugin;\n}\n\n/** P3 定案 6 tab(order 升序即 + 号菜单顺序;已打开条不受 order 控制)。 */\nexport const MANAGER_TABS: readonly ManagerTab[] = [\n { skill: 'memo', slotId: 'ilife:memo', order: 70, title: '备忘录', plugin: 'dsh-memo-ilife' },\n { skill: 'calorie', slotId: 'ilife:calorie', order: 75, title: '卡路里', plugin: 'dsh-calorie' },\n { skill: 'schedule', slotId: 'ilife:schedule', order: 80, title: '作息', plugin: 'dsh-schedule-ilife' },\n { skill: 'home', slotId: 'ilife:home', order: 85, title: '居家', plugin: 'dsh-home-ilife' },\n { skill: 'chef', slotId: 'ilife:chef', order: 90, title: '大厨', plugin: 'dsh-chef' },\n { skill: 'bill', slotId: 'ilife:cookie', order: 95, title: '记账', plugin: 'dsh-bill-ilife' },\n];\n\nexport function recoFor(tab: ManagerTab): RecoTab {\n const installCmd = dualInstallCmd(tab.plugin);\n return {\n ...tab,\n kind: 'reco',\n installCmd,\n hint: '未安装[' + tab.plugin + '],请补装后使用:' + installCmd,\n };\n}\n\nexport type Presence = ReadonlySet<string>;\n\nexport function tabsForPresence(present: Presence): readonly (ManagerTab | RecoTab)[] {\n return MANAGER_TABS.map((t) => (present.has(t.slotId) ? t : recoFor(t)));\n}\n\nexport interface OpenPort {\n openTab(seed: { readonly type: string; readonly path: string }, scope?: { readonly sessionId?: string }): void;\n}\n\nexport interface HasTabsPort extends OpenPort {\n hasTabs(): boolean;\n}\n\n/** 总管导航:只做 openTab 路径导航(内容型打开),缺席由调用方渲染 reco。 */\nexport function openManagerTab(port: HasTabsPort, slotId: string, sessionId?: string): void {\n if (!port.hasTabs()) return;\n port.openTab({ type: slotId, path: slotId }, sessionId ? { sessionId } : undefined);\n}\n","/** dsh-life-pack client 适配器(六边形:browser 侧)。\n *\n * 真实 DSH 契约(出处见 docs/agents/dsh-client-contract.md):\n * - 本文件经 tsdown 打成 loader 工厂包(browser/CJS + 注册包裹),classic 执行\n * 只注册,副作用全在 factory 内;传递闭包禁 node 内建与 ESM 语法(回路\n * test/client-bundle-48.test.mjs 看门)。\n * - inject 短名 ['slots'](总管机制范围无 RPC,不声明 connection);apply 只注册\n * 一处 settings.section(kind list,id 必填)。\n * - 组件 React.createElement 手写(禁 JSX),纯渲染 MANAGER_TABS 六行\n * (title/slotId/order)+ 每行补装命令(dualInstallCmd)只读文本——无假导航\n * (无真实导航 API 就不装有)、无轮询、无 document/window/process。\n */\n\nimport * as React from 'react';\nimport { MANAGER_TABS, dualInstallCmd } from './nav.js';\nimport type { ClientCtx } from './dsh-ctx.js';\n\nexport const inject = ['slots'];\n\nfunction LifePackSection(): React.ReactElement {\n return React.createElement(\n 'div',\n null,\n React.createElement('h2', null, '爱生活总管'),\n MANAGER_TABS.map((t) =>\n React.createElement(\n 'div',\n { key: t.slotId },\n React.createElement('div', null, t.title + ' · ' + t.slotId + ' · order ' + String(t.order)),\n React.createElement('code', null, dualInstallCmd(t.plugin)),\n ),\n ),\n );\n}\n\nexport function apply(ctx: ClientCtx): void {\n ctx.slots.inject('settings.section', () =>\n ctx.slots.register(\n {\n name: 'settings.section',\n id: 'dsh-life-pack',\n order: 21,\n label: () => '爱生活总管',\n inject: () => ({}),\n },\n LifePackSection,\n ),\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA8BA,SAAgB,eAAe,cAA8B;GAC3D,OAAO,kCAAwB;EACjC;;EAGA,MAAa,eAAsC;GACjD;IAAE,OAAO;IAAQ,QAAQ;IAAc,OAAO;IAAI,OAAO;IAAO,QAAQ;GAAiB;GACzF;IAAE,OAAO;IAAW,QAAQ;IAAiB,OAAO;IAAI,OAAO;IAAO,QAAQ;GAAc;GAC5F;IAAE,OAAO;IAAY,QAAQ;IAAkB,OAAO;IAAI,OAAO;IAAM,QAAQ;GAAqB;GACpG;IAAE,OAAO;IAAQ,QAAQ;IAAc,OAAO;IAAI,OAAO;IAAM,QAAQ;GAAiB;GACxF;IAAE,OAAO;IAAQ,QAAQ;IAAc,OAAO;IAAI,OAAO;IAAM,QAAQ;GAAW;GAClF;IAAE,OAAO;IAAQ,QAAQ;IAAgB,OAAO;IAAI,OAAO;IAAM,QAAQ;GAAiB;EAC5F;;;;;;;;;;;;;;;ECzBA,MAAa,SAAS,CAAC,OAAO;EAE9B,SAAS,kBAAsC;GAC7C,OAAOA,MAAM,cACX,OACA,MACAA,MAAM,cAAc,MAAM,MAAM,OAAO,GACvC,aAAa,KAAK,MAChBA,MAAM,cACJ,OACA,EAAE,KAAK,EAAE,OAAO,GAChBA,MAAM,cAAc,OAAO,MAAM,EAAE,QAAQ,QAAQ,EAAE,SAAS,cAAc,OAAO,EAAE,KAAK,CAAC,GAC3FA,MAAM,cAAc,QAAQ,MAAM,eAAe,EAAE,MAAM,CAAC,CAC5D,CACF,CACF;EACF;EAEA,SAAgB,MAAM,KAAsB;GAC1C,IAAI,MAAM,OAAO,0BACf,IAAI,MAAM,SACR;IACE,MAAM;IACN,IAAI;IACJ,OAAO;IACP,aAAa;IACb,eAAe,CAAC;GAClB,GACA,eACF,CACF;EACF"}
@@ -0,0 +1,53 @@
1
+ /** DSH ctx 最小镜像:只含本仓实际使用的面(type-only,构建期擦除,零运行时)。
2
+ *
3
+ * 每条成员的用法出处见 docs/agents/dsh-client-contract.md(附源码路径+行)。
4
+ * 禁止加镜外成员:要用新能力,先在 cookbook 落出处,再加镜像。用 `import type` 引用本文件。
5
+ * (本文件与各单品包内同名文件逐字一致;模板复制即用,同步源见 cookbook。)
6
+ */
7
+ export interface SlotsRegisterOptions {
8
+ readonly name: string;
9
+ readonly id?: string;
10
+ readonly order?: number;
11
+ readonly label?: string | (() => string);
12
+ readonly locale?: string;
13
+ readonly inject?: () => Record<string, unknown>;
14
+ }
15
+ export interface SlotsFace {
16
+ inject(key: string, callback: () => (() => void) | Iterable<() => void>): () => void;
17
+ register(options: SlotsRegisterOptions, component: unknown): () => void;
18
+ }
19
+ export type RpcCallResult = {
20
+ readonly ok: true;
21
+ readonly value: unknown;
22
+ } | {
23
+ readonly ok: false;
24
+ readonly error: {
25
+ readonly code: string;
26
+ readonly message: string;
27
+ readonly details: Record<string, unknown>;
28
+ };
29
+ };
30
+ export interface RpcCallFace {
31
+ (channel: string, endpoint: string, payload: unknown, signal?: AbortSignal): Promise<RpcCallResult>;
32
+ }
33
+ export interface ClientCtx {
34
+ readonly slots: SlotsFace;
35
+ readonly connection?: {
36
+ readonly rpc?: {
37
+ readonly call: RpcCallFace;
38
+ };
39
+ };
40
+ effect(callback: () => ((() => void) | void), label?: string): () => void;
41
+ get?(name: string): unknown;
42
+ }
43
+ export type RpcHandler = (endpoint: string, payload: unknown, signal?: AbortSignal) => Promise<unknown>;
44
+ export interface HostCtx {
45
+ readonly connection: {
46
+ readonly rpc: {
47
+ handle(channel: string, handler: RpcHandler): () => void;
48
+ };
49
+ };
50
+ effect(callback: () => ((() => void) | void), label?: string): () => void;
51
+ readonly logger?: unknown;
52
+ }
53
+ //# sourceMappingURL=dsh-ctx.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dsh-ctx.d.ts","sourceRoot":"","sources":["../src/dsh-ctx.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,CAAC,MAAM,MAAM,CAAC,CAAC;IACzC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACjD;AAED,MAAM,WAAW,SAAS;IACxB,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,MAAM,IAAI,CAAC,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,GAAG,MAAM,IAAI,CAAC;IACrF,QAAQ,CAAC,OAAO,EAAE,oBAAoB,EAAE,SAAS,EAAE,OAAO,GAAG,MAAM,IAAI,CAAC;CACzE;AAED,MAAM,MAAM,aAAa,GACrB;IAAE,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAA;CAAE,GAC9C;IAAE,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE;QAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,CAAA;CAAE,CAAC;AAE3I,MAAM,WAAW,WAAW;IAC1B,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;CACrG;AAED,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC;IAC1B,QAAQ,CAAC,UAAU,CAAC,EAAE;QAAE,QAAQ,CAAC,GAAG,CAAC,EAAE;YAAE,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAA;SAAE,CAAA;KAAE,CAAC;IACxE,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,MAAM,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,IAAI,CAAC;IAC1E,GAAG,CAAC,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;CAC7B;AAED,MAAM,MAAM,UAAU,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;AAExG,MAAM,WAAW,OAAO;IACtB,QAAQ,CAAC,UAAU,EAAE;QAAE,QAAQ,CAAC,GAAG,EAAE;YAAE,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,GAAG,MAAM,IAAI,CAAA;SAAE,CAAA;KAAE,CAAC;IACpG,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,MAAM,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,IAAI,CAAC;IAC1E,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;CAC3B"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=dsh-ctx.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dsh-ctx.js","sourceRoot":"","sources":["../src/dsh-ctx.ts"],"names":[],"mappings":""}
package/dist/index.d.ts CHANGED
@@ -1,15 +1,13 @@
1
- /** dsh-life-pack host 半(P10 脚手架,照抄 DSH 官方插件包模式)。
1
+ /** dsh-life-pack host 半(六边形:host 侧;总管机制范围无 RPC,保持 noop)。
2
2
  *
3
3
  * 形态:cordis 插件(name/inject/apply)+ dsh.bundle.patch 装配行。
4
- * 本包无单品依赖、无单品 import;设置页不住这里(住各单品包,
5
- * 由一次 registerTab 自动在 DSH 设置页 side 卡片多一张小卡)。
4
+ * 本包无单品依赖、无单品 import。虚构 client 重导出已删(#48 H4:mount/request/open
5
+ * 全是想象 API,测试无用);真实 client 适配器见 src/client.ts(tsdown 独立打包)。
6
+ * 对外只保留纯数据口径(nav)与安装口径(install)。
6
7
  */
7
8
  export declare const name = "dsh-life-pack";
8
9
  export declare const inject: readonly string[];
9
10
  export declare function apply(_ctx: unknown): void;
10
- export { MANAGER_TABS, MANAGER_PLUGIN, DUAL_ADD_PREFIX, dualInstallCmd, recoFor, tabsForPresence, openManagerTab } from './nav.js';
11
- export type { ManagerTab, RecoTab, Presence, HasTabsPort, OpenPort } from './nav.js';
11
+ export { MANAGER_TABS, tabsForPresence } from './nav.js';
12
12
  export { MANAGER_PACKAGE, SINGLE_PLUGINS, reconcileBundles, assertDualBundles, assertNegativeSingleOnly } from './install.js';
13
- export { MANAGER_COMPONENT, mountManagerClient, requestOpenViaHost, openViaPort } from './client.js';
14
- export type { HostCaller } from './client.js';
15
13
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,eAAO,MAAM,IAAI,kBAAkB,CAAC;AACpC,eAAO,MAAM,MAAM,EAAE,SAAS,MAAM,EAAO,CAAC;AAE5C,wBAAgB,KAAK,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,CAEzC;AAED,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,eAAe,EAAE,cAAc,EAAE,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AACnI,YAAY,EAAE,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AACrF,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,wBAAwB,EAAE,MAAM,cAAc,CAAC;AAC9H,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AACrG,YAAY,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,eAAO,MAAM,IAAI,kBAAkB,CAAC;AACpC,eAAO,MAAM,MAAM,EAAE,SAAS,MAAM,EAAO,CAAC;AAE5C,wBAAgB,KAAK,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,CAEzC;AAED,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,wBAAwB,EAAE,MAAM,cAAc,CAAC"}
package/dist/index.js CHANGED
@@ -1,15 +1,15 @@
1
- /** dsh-life-pack host 半(P10 脚手架,照抄 DSH 官方插件包模式)。
1
+ /** dsh-life-pack host 半(六边形:host 侧;总管机制范围无 RPC,保持 noop)。
2
2
  *
3
3
  * 形态:cordis 插件(name/inject/apply)+ dsh.bundle.patch 装配行。
4
- * 本包无单品依赖、无单品 import;设置页不住这里(住各单品包,
5
- * 由一次 registerTab 自动在 DSH 设置页 side 卡片多一张小卡)。
4
+ * 本包无单品依赖、无单品 import。虚构 client 重导出已删(#48 H4:mount/request/open
5
+ * 全是想象 API,测试无用);真实 client 适配器见 src/client.ts(tsdown 独立打包)。
6
+ * 对外只保留纯数据口径(nav)与安装口径(install)。
6
7
  */
7
8
  export const name = 'dsh-life-pack';
8
9
  export const inject = [];
9
10
  export function apply(_ctx) {
10
11
  void _ctx;
11
12
  }
12
- export { MANAGER_TABS, MANAGER_PLUGIN, DUAL_ADD_PREFIX, dualInstallCmd, recoFor, tabsForPresence, openManagerTab } from './nav.js';
13
+ export { MANAGER_TABS, tabsForPresence } from './nav.js';
13
14
  export { MANAGER_PACKAGE, SINGLE_PLUGINS, reconcileBundles, assertDualBundles, assertNegativeSingleOnly } from './install.js';
14
- export { MANAGER_COMPONENT, mountManagerClient, requestOpenViaHost, openViaPort } from './client.js';
15
15
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,CAAC,MAAM,IAAI,GAAG,eAAe,CAAC;AACpC,MAAM,CAAC,MAAM,MAAM,GAAsB,EAAE,CAAC;AAE5C,MAAM,UAAU,KAAK,CAAC,IAAa;IACjC,KAAK,IAAI,CAAC;AACZ,CAAC;AAED,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,eAAe,EAAE,cAAc,EAAE,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAEnI,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,wBAAwB,EAAE,MAAM,cAAc,CAAC;AAC9H,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,MAAM,CAAC,MAAM,IAAI,GAAG,eAAe,CAAC;AACpC,MAAM,CAAC,MAAM,MAAM,GAAsB,EAAE,CAAC;AAE5C,MAAM,UAAU,KAAK,CAAC,IAAa;IACjC,KAAK,IAAI,CAAC;AACZ,CAAC;AAED,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,wBAAwB,EAAE,MAAM,cAAc,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dsh-life-pack",
3
- "version": "0.1.0",
3
+ "version": "0.1.1",
4
4
  "description": "爱生活总管插件 P10 脚手架:6 tab 只导航+推荐安装,不依赖单品、不 import 单品页",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -30,11 +30,21 @@
30
30
  },
31
31
  "client": {
32
32
  "platform": "web",
33
- "inject": []
33
+ "inject": [
34
+ "@deepseek-ai/dsh-client-ui-slots"
35
+ ]
34
36
  }
35
37
  },
36
38
  "scripts": {
37
- "build": "tsc -b",
39
+ "build": "npm run build:host && npm run build:client",
40
+ "build:host": "tsc -b",
41
+ "build:client": "tsdown",
42
+ "typecheck": "tsc -p tsconfig.client.json",
38
43
  "test": "node --test test/smoke.test.mjs"
44
+ },
45
+ "devDependencies": {
46
+ "@types/react": "19.2.18",
47
+ "react": "19.2.8",
48
+ "tsdown": "0.22.14"
39
49
  }
40
50
  }