dsh-chef 0.1.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.
@@ -0,0 +1,6 @@
1
+ # dsh-chef bundle 层:单命令双包由 dsh plugin add 装配(包声明 dsh.bundle.patch),
2
+ # 无需手改任何 profile 文件;dsh plugin remove 时自动移除。
3
+ - insert:
4
+ - id: dsh-chef
5
+ name: 'dsh-chef'
6
+ config: {}
@@ -0,0 +1,20 @@
1
+ export declare const SKILL_PACKAGE: "skill-chef";
2
+ export declare const SKILL_CLI: "packages/skill-chef/dist/cli/cmd_read.js";
3
+ export declare const HOST_CALL_METHOD: "ilife.chef.read";
4
+ export declare const MANAGER_PACKAGE: "dsh-life-pack";
5
+ export declare const MANAGER_MISSING_HINT = "\u603B\u7BA1\u7F3A\u5E2D\uFF0C\u8BF7\u8865\u88C5\uFF1Adsh plugin add dsh-life-pack dsh-chef\uFF08\u4E0D\u8BB8\u5355\u5378\u603B\u7BA1\uFF09";
6
+ export declare class SkillBridgeError extends Error {
7
+ readonly code: 'missing-cli' | 'fetch-failed' | 'bad-json' | 'key-mismatch';
8
+ constructor(code: SkillBridgeError['code'], message: string);
9
+ }
10
+ export declare function cliPath(): string;
11
+ export declare function assertCliPresent(path?: string): void;
12
+ /** host.call 侧处理函数:由 host 注册到 connection RPC,供面板调用。 */
13
+ export declare function handleHostCall(key: string, params?: Record<string, unknown>): unknown;
14
+ /** 面板侧请求函数:只经 host.call,不直调技能实现。 */
15
+ export declare function requestViaHost(host: {
16
+ call(method: string, args: unknown): Promise<unknown>;
17
+ }, key: string, params?: Record<string, unknown>): Promise<unknown>;
18
+ /** 同步取数:spawn 技能 cmd_read,返回 envelope data(缺失阻断)。 */
19
+ export declare function readViaCli(key: string, params?: Record<string, unknown>): unknown;
20
+ //# sourceMappingURL=bridge.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bridge.d.ts","sourceRoot":"","sources":["../src/bridge.ts"],"names":[],"mappings":"AAaA,eAAO,MAAM,aAAa,EAAG,YAAqB,CAAC;AACnD,eAAO,MAAM,SAAS,EAAG,0CAAmD,CAAC;AAC7E,eAAO,MAAM,gBAAgB,EAAG,iBAA0B,CAAC;AAC3D,eAAO,MAAM,eAAe,EAAG,eAAwB,CAAC;AAExD,eAAO,MAAM,oBAAoB,gJACyB,CAAC;AAE3D,qBAAa,gBAAiB,SAAQ,KAAK;IACzC,QAAQ,CAAC,IAAI,EAAE,aAAa,GAAG,cAAc,GAAG,UAAU,GAAG,cAAc,CAAC;gBAChE,IAAI,EAAE,gBAAgB,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,MAAM;CAK5D;AAMD,wBAAgB,OAAO,IAAI,MAAM,CAEhC;AAED,wBAAgB,gBAAgB,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAOpD;AAED,uDAAuD;AACvD,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,GAAG,OAAO,CAEzF;AAED,oCAAoC;AACpC,wBAAgB,cAAc,CAAC,IAAI,EAAE;IAAE,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;CAAE,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAEnK;AAED,qDAAqD;AACrD,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,GAAG,OAAO,CAmBrF"}
package/dist/bridge.js ADDED
@@ -0,0 +1,74 @@
1
+ /** dsh-chef 取数桥(P10 脚手架:纯 CLI 单轨)。
2
+ *
3
+ * 面板与跨技能只经 host.call 触发本桥,本桥只经 spawn 调技能包唯一出口
4
+ * packages/skill-chef/dist/cli/cmd_read.js(argv+JSON+exit,stdout 纯 envelope JSON 一行)。
5
+ * 本文件不 import 任何技能实现(只读消费其 dist/CLI);缺失阻断不返空:
6
+ * CLI 缺席/非 0/非 JSON/回执 key 不符一律抛错,绝不返回空数组冒充正常。
7
+ * 技能包不动(只读);combos.yaml 不动。
8
+ */
9
+ import { spawnSync } from 'node:child_process';
10
+ import { accessSync, constants } from 'node:fs';
11
+ import { join, dirname } from 'node:path';
12
+ import { fileURLToPath } from 'node:url';
13
+ export const SKILL_PACKAGE = 'skill-chef';
14
+ export const SKILL_CLI = 'packages/skill-chef/dist/cli/cmd_read.js';
15
+ export const HOST_CALL_METHOD = 'ilife.chef.read';
16
+ export const MANAGER_PACKAGE = 'dsh-life-pack';
17
+ export const MANAGER_MISSING_HINT = '总管缺席,请补装:dsh plugin add dsh-life-pack dsh-chef(不许单卸总管)';
18
+ export class SkillBridgeError extends Error {
19
+ code;
20
+ constructor(code, message) {
21
+ super(message);
22
+ this.name = 'SkillBridgeError';
23
+ this.code = code;
24
+ }
25
+ }
26
+ function repoRoot() {
27
+ return join(dirname(fileURLToPath(import.meta.url)), '..', '..', '..');
28
+ }
29
+ export function cliPath() {
30
+ return join(repoRoot(), SKILL_CLI);
31
+ }
32
+ export function assertCliPresent(path) {
33
+ const p = path ?? cliPath();
34
+ try {
35
+ accessSync(p, constants.R_OK);
36
+ }
37
+ catch {
38
+ throw new SkillBridgeError('missing-cli', '技能出口缺失(先构建对应包):' + p);
39
+ }
40
+ }
41
+ /** host.call 侧处理函数:由 host 注册到 connection RPC,供面板调用。 */
42
+ export function handleHostCall(key, params = {}) {
43
+ return readViaCli(key, params);
44
+ }
45
+ /** 面板侧请求函数:只经 host.call,不直调技能实现。 */
46
+ export function requestViaHost(host, key, params = {}) {
47
+ return host.call(HOST_CALL_METHOD, { key, params });
48
+ }
49
+ /** 同步取数:spawn 技能 cmd_read,返回 envelope data(缺失阻断)。 */
50
+ export function readViaCli(key, params = {}) {
51
+ const bin = cliPath();
52
+ assertCliPresent(bin);
53
+ const node = process.execPath;
54
+ const r = spawnSync(node, [bin, key, '--params', JSON.stringify(params)], { encoding: 'utf8' });
55
+ if (r.error)
56
+ throw new SkillBridgeError('fetch-failed', '出口 spawn 失败:' + r.error.message);
57
+ if (r.status !== 0) {
58
+ const tail = String(r.stderr ?? '').trim().split('\n').pop() ?? '';
59
+ throw new SkillBridgeError('fetch-failed', '出口非 0(' + String(r.status) + '):' + tail);
60
+ }
61
+ let env;
62
+ try {
63
+ env = JSON.parse(String(r.stdout));
64
+ }
65
+ catch {
66
+ throw new SkillBridgeError('bad-json', '出口非 JSON');
67
+ }
68
+ if (!env || env.key !== key)
69
+ throw new SkillBridgeError('key-mismatch', '出口回执 key 不符');
70
+ if (env.data === null || env.data === undefined)
71
+ throw new SkillBridgeError('fetch-failed', '缺失阻断取数,不返空:' + key);
72
+ return env.data;
73
+ }
74
+ //# sourceMappingURL=bridge.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bridge.js","sourceRoot":"","sources":["../src/bridge.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ /** dsh-chef 客户端存根(P10 脚手架)。
2
+ *
3
+ * 写死槽位原生组件,不做动态按需加载,不做外嵌页。
4
+ * 面板取数只经 host.call 进 host 桥(见 bridge.ts),不 import 技能实现。
5
+ * 缺席纯条件渲染,无轮询(本文件无任何定时器)。
6
+ */
7
+ import type { TabsPort } from './slot.js';
8
+ export interface HostCaller {
9
+ call(method: string, args: unknown): Promise<unknown>;
10
+ }
11
+ export declare const CLIENT_COMPONENT: {
12
+ readonly kind: "native";
13
+ readonly name: "ChefPanel";
14
+ };
15
+ export declare const CLIENT_METHOD: "ilife.chef.read";
16
+ export declare function mountSingleClient(port: TabsPort): (() => void) | null;
17
+ export declare function openSingleClient(port: TabsPort, sessionId?: string): void;
18
+ export declare function requestReadViaHost(host: HostCaller, key: string, params?: Record<string, unknown>): Promise<unknown>;
19
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAG1C,MAAM,WAAW,UAAU;IACzB,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CACvD;AAED,eAAO,MAAM,gBAAgB;;;CAAgB,CAAC;AAC9C,eAAO,MAAM,aAAa,mBAAmB,CAAC;AAE9C,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,QAAQ,GAAG,CAAC,MAAM,IAAI,CAAC,GAAG,IAAI,CAErE;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,QAAQ,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAEzE;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,UAAU,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAExH"}
package/dist/client.js ADDED
@@ -0,0 +1,20 @@
1
+ /** dsh-chef 客户端存根(P10 脚手架)。
2
+ *
3
+ * 写死槽位原生组件,不做动态按需加载,不做外嵌页。
4
+ * 面板取数只经 host.call 进 host 桥(见 bridge.ts),不 import 技能实现。
5
+ * 缺席纯条件渲染,无轮询(本文件无任何定时器)。
6
+ */
7
+ import { TAB_COMPONENT, registerSingle, openSingle } from './slot.js';
8
+ import { HOST_CALL_METHOD } from './bridge.js';
9
+ export const CLIENT_COMPONENT = TAB_COMPONENT;
10
+ export const CLIENT_METHOD = HOST_CALL_METHOD;
11
+ export function mountSingleClient(port) {
12
+ return registerSingle(port);
13
+ }
14
+ export function openSingleClient(port, sessionId) {
15
+ openSingle(port, sessionId);
16
+ }
17
+ export function requestReadViaHost(host, key, params = {}) {
18
+ return host.call(HOST_CALL_METHOD, { key, params });
19
+ }
20
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAEtE,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAM/C,MAAM,CAAC,MAAM,gBAAgB,GAAG,aAAa,CAAC;AAC9C,MAAM,CAAC,MAAM,aAAa,GAAG,gBAAgB,CAAC;AAE9C,MAAM,UAAU,iBAAiB,CAAC,IAAc;IAC9C,OAAO,cAAc,CAAC,IAAI,CAAC,CAAC;AAC9B,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,IAAc,EAAE,SAAkB;IACjE,UAAU,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;AAC9B,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,IAAgB,EAAE,GAAW,EAAE,SAAkC,EAAE;IACpG,OAAO,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,CAAC;AACtD,CAAC"}
@@ -0,0 +1,16 @@
1
+ /** dsh-chef host 半(P10 脚手架,照抄 DSH 官方插件包模式)。
2
+ *
3
+ * 形态:cordis 插件(name/inject/apply)+ dsh.bundle.patch 装配行。
4
+ * 单品硬依赖总管(dependencies,非 peer,见 package.json);设置页住本包。
5
+ */
6
+ export declare const name = "dsh-chef";
7
+ export declare const inject: readonly string[];
8
+ export declare function apply(_ctx: unknown): void;
9
+ export { SKILL, SLOT_ID, SLOT_ORDER, SLOT_TITLE, PLUGIN, MANAGER_PLUGIN, slotDescriptor, TAB_COMPONENT, registerSingle, openSingle } from './slot.js';
10
+ export type { SlotDescriptor, TabsPort } from './slot.js';
11
+ export { SETTINGS_OWNER, SETTINGS_SLOT, SETTING_ROWS } from './settings.js';
12
+ export type { SettingRow } from './settings.js';
13
+ export { SKILL_PACKAGE, SKILL_CLI, HOST_CALL_METHOD, MANAGER_MISSING_HINT, SkillBridgeError, cliPath, assertCliPresent, handleHostCall, requestViaHost, readViaCli } from './bridge.js';
14
+ export { CLIENT_COMPONENT, CLIENT_METHOD, mountSingleClient, openSingleClient, requestReadViaHost } from './client.js';
15
+ export type { HostCaller } from './client.js';
16
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,eAAO,MAAM,IAAI,aAAa,CAAC;AAC/B,eAAO,MAAM,MAAM,EAAE,SAAS,MAAM,EAAO,CAAC;AAE5C,wBAAgB,KAAK,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,CAEzC;AAED,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,EAAE,cAAc,EAAE,cAAc,EAAE,aAAa,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACtJ,YAAY,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC5E,YAAY,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACxL,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACvH,YAAY,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,15 @@
1
+ /** dsh-chef host 半(P10 脚手架,照抄 DSH 官方插件包模式)。
2
+ *
3
+ * 形态:cordis 插件(name/inject/apply)+ dsh.bundle.patch 装配行。
4
+ * 单品硬依赖总管(dependencies,非 peer,见 package.json);设置页住本包。
5
+ */
6
+ export const name = 'dsh-chef';
7
+ export const inject = [];
8
+ export function apply(_ctx) {
9
+ void _ctx;
10
+ }
11
+ export { SKILL, SLOT_ID, SLOT_ORDER, SLOT_TITLE, PLUGIN, MANAGER_PLUGIN, slotDescriptor, TAB_COMPONENT, registerSingle, openSingle } from './slot.js';
12
+ export { SETTINGS_OWNER, SETTINGS_SLOT, SETTING_ROWS } from './settings.js';
13
+ export { SKILL_PACKAGE, SKILL_CLI, HOST_CALL_METHOD, MANAGER_MISSING_HINT, SkillBridgeError, cliPath, assertCliPresent, handleHostCall, requestViaHost, readViaCli } from './bridge.js';
14
+ export { CLIENT_COMPONENT, CLIENT_METHOD, mountSingleClient, openSingleClient, requestReadViaHost } from './client.js';
15
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,CAAC,MAAM,IAAI,GAAG,UAAU,CAAC;AAC/B,MAAM,CAAC,MAAM,MAAM,GAAsB,EAAE,CAAC;AAE5C,MAAM,UAAU,KAAK,CAAC,IAAa;IACjC,KAAK,IAAI,CAAC;AACZ,CAAC;AAED,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,EAAE,cAAc,EAAE,cAAc,EAAE,aAAa,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAEtJ,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAE5E,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACxL,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC"}
@@ -0,0 +1,16 @@
1
+ /** dsh-chef 设置页(P10 脚手架:设置页住单品包)。
2
+ *
3
+ * 一次 registerTab,两处呈现:边栏 + 号菜单多一项,DSH 设置页侧边卡片
4
+ * 分区自动多一张小卡片(注册表驱动、无硬编码,开关缺省启用)。
5
+ * 本文件只声明本单品自己的设置行;总管不声明设置(见 boundaries 断言)。
6
+ */
7
+ export declare const SETTINGS_OWNER: "dsh-chef";
8
+ export declare const SETTINGS_SLOT: "ilife:chef";
9
+ export interface SettingRow {
10
+ readonly key: string;
11
+ readonly title: string;
12
+ readonly control: 'switch' | 'text' | 'number';
13
+ }
14
+ /** 脚手架期唯一设置行:总开关(缺省启用,与官方关闭语义对齐)。 */
15
+ export declare const SETTING_ROWS: readonly SettingRow[];
16
+ //# sourceMappingURL=settings.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"settings.d.ts","sourceRoot":"","sources":["../src/settings.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,eAAO,MAAM,cAAc,EAAG,UAAmB,CAAC;AAClD,eAAO,MAAM,aAAa,EAAG,YAAqB,CAAC;AAEnD,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE,QAAQ,GAAG,MAAM,GAAG,QAAQ,CAAC;CAChD;AAED,qCAAqC;AACrC,eAAO,MAAM,YAAY,EAAE,SAAS,UAAU,EAE7C,CAAC"}
@@ -0,0 +1,13 @@
1
+ /** dsh-chef 设置页(P10 脚手架:设置页住单品包)。
2
+ *
3
+ * 一次 registerTab,两处呈现:边栏 + 号菜单多一项,DSH 设置页侧边卡片
4
+ * 分区自动多一张小卡片(注册表驱动、无硬编码,开关缺省启用)。
5
+ * 本文件只声明本单品自己的设置行;总管不声明设置(见 boundaries 断言)。
6
+ */
7
+ export const SETTINGS_OWNER = 'dsh-chef';
8
+ export const SETTINGS_SLOT = 'ilife:chef';
9
+ /** 脚手架期唯一设置行:总开关(缺省启用,与官方关闭语义对齐)。 */
10
+ export const SETTING_ROWS = [
11
+ { key: 'enabled', title: '大厨面板启用', control: 'switch' },
12
+ ];
13
+ //# sourceMappingURL=settings.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"settings.js","sourceRoot":"","sources":["../src/settings.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,CAAC,MAAM,cAAc,GAAG,UAAmB,CAAC;AAClD,MAAM,CAAC,MAAM,aAAa,GAAG,YAAqB,CAAC;AAQnD,qCAAqC;AACrC,MAAM,CAAC,MAAM,YAAY,GAA0B;IACjD,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE;CACvD,CAAC"}
package/dist/slot.d.ts ADDED
@@ -0,0 +1,47 @@
1
+ /** dsh-chef 槽位描述(P10 脚手架,P3 #4 定案)。
2
+ *
3
+ * 写死槽位原生组件:id 命名空间 ilife:chef,order 90。
4
+ * 注册与打开只走 registerTab/openTab 的路径导航;子页后缀(如 ilife:chef:*)
5
+ * 只在主面板内导航,不占栏。缺席纯条件渲染,不轮询(本文件无定时器;
6
+ * 有界重试归一由 base-render 拥有,单品不自建)。
7
+ */
8
+ export declare const SKILL: "chef";
9
+ export declare const SLOT_ID: "ilife:chef";
10
+ export declare const SLOT_ORDER: 90;
11
+ export declare const SLOT_TITLE: "\u5927\u53A8";
12
+ export declare const PLUGIN: "dsh-chef";
13
+ export declare const MANAGER_PLUGIN: "dsh-life-pack";
14
+ export interface SlotDescriptor {
15
+ readonly skill: string;
16
+ readonly slotId: string;
17
+ readonly order: number;
18
+ readonly title: string;
19
+ readonly kind: 'page';
20
+ }
21
+ export declare function slotDescriptor(): SlotDescriptor;
22
+ /** 写死原生组件描述(纯数据,无按需加载,无外嵌页)。 */
23
+ export declare const TAB_COMPONENT: {
24
+ readonly kind: "native";
25
+ readonly name: "ChefPanel";
26
+ };
27
+ export interface TabsPort {
28
+ hasTabs(): boolean;
29
+ registerTab(entry: {
30
+ readonly id: string;
31
+ readonly title: string;
32
+ readonly order: number;
33
+ readonly single: boolean;
34
+ readonly component: unknown;
35
+ }): () => void;
36
+ openTab(seed: {
37
+ readonly type: string;
38
+ readonly path: string;
39
+ }, scope?: {
40
+ readonly sessionId?: string;
41
+ }): void;
42
+ }
43
+ /** 自注册:幂等(调用方持 disposer),失败返回 false 由调用方决定重试。 */
44
+ export declare function registerSingle(port: TabsPort): (() => void) | null;
45
+ /** 内容型打开:path seed,折叠面板自动展开。 */
46
+ export declare function openSingle(port: TabsPort, sessionId?: string): void;
47
+ //# sourceMappingURL=slot.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"slot.d.ts","sourceRoot":"","sources":["../src/slot.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,eAAO,MAAM,KAAK,EAAG,MAAe,CAAC;AACrC,eAAO,MAAM,OAAO,EAAG,YAAqB,CAAC;AAC7C,eAAO,MAAM,UAAU,EAAG,EAAW,CAAC;AACtC,eAAO,MAAM,UAAU,EAAG,cAAa,CAAC;AACxC,eAAO,MAAM,MAAM,EAAG,UAAmB,CAAC;AAC1C,eAAO,MAAM,cAAc,EAAG,eAAwB,CAAC;AAEvD,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED,wBAAgB,cAAc,IAAI,cAAc,CAE/C;AAED,gCAAgC;AAChC,eAAO,MAAM,aAAa;;;CAAiD,CAAC;AAE5E,MAAM,WAAW,QAAQ;IACvB,OAAO,IAAI,OAAO,CAAC;IACnB,WAAW,CAAC,KAAK,EAAE;QAAE,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;QAAC,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAA;KAAE,GAAG,MAAM,IAAI,CAAC;IAC/J,OAAO,CAAC,IAAI,EAAE;QAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,KAAK,CAAC,EAAE;QAAE,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;CAChH;AAED,iDAAiD;AACjD,wBAAgB,cAAc,CAAC,IAAI,EAAE,QAAQ,GAAG,CAAC,MAAM,IAAI,CAAC,GAAG,IAAI,CAGlE;AAED,gCAAgC;AAChC,wBAAgB,UAAU,CAAC,IAAI,EAAE,QAAQ,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAGnE"}
package/dist/slot.js ADDED
@@ -0,0 +1,31 @@
1
+ /** dsh-chef 槽位描述(P10 脚手架,P3 #4 定案)。
2
+ *
3
+ * 写死槽位原生组件:id 命名空间 ilife:chef,order 90。
4
+ * 注册与打开只走 registerTab/openTab 的路径导航;子页后缀(如 ilife:chef:*)
5
+ * 只在主面板内导航,不占栏。缺席纯条件渲染,不轮询(本文件无定时器;
6
+ * 有界重试归一由 base-render 拥有,单品不自建)。
7
+ */
8
+ export const SKILL = 'chef';
9
+ export const SLOT_ID = 'ilife:chef';
10
+ export const SLOT_ORDER = 90;
11
+ export const SLOT_TITLE = '大厨';
12
+ export const PLUGIN = 'dsh-chef';
13
+ export const MANAGER_PLUGIN = 'dsh-life-pack';
14
+ export function slotDescriptor() {
15
+ return { skill: SKILL, slotId: SLOT_ID, order: SLOT_ORDER, title: SLOT_TITLE, kind: 'page' };
16
+ }
17
+ /** 写死原生组件描述(纯数据,无按需加载,无外嵌页)。 */
18
+ export const TAB_COMPONENT = { kind: 'native', name: 'ChefPanel' };
19
+ /** 自注册:幂等(调用方持 disposer),失败返回 false 由调用方决定重试。 */
20
+ export function registerSingle(port) {
21
+ if (!port.hasTabs())
22
+ return null;
23
+ return port.registerTab({ id: SLOT_ID, title: SLOT_TITLE, order: SLOT_ORDER, single: true, component: TAB_COMPONENT });
24
+ }
25
+ /** 内容型打开:path seed,折叠面板自动展开。 */
26
+ export function openSingle(port, sessionId) {
27
+ if (!port.hasTabs())
28
+ return;
29
+ port.openTab({ type: SLOT_ID, path: SLOT_ID }, sessionId ? { sessionId } : undefined);
30
+ }
31
+ //# sourceMappingURL=slot.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"slot.js","sourceRoot":"","sources":["../src/slot.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,MAAM,CAAC,MAAM,KAAK,GAAG,MAAe,CAAC;AACrC,MAAM,CAAC,MAAM,OAAO,GAAG,YAAqB,CAAC;AAC7C,MAAM,CAAC,MAAM,UAAU,GAAG,EAAW,CAAC;AACtC,MAAM,CAAC,MAAM,UAAU,GAAG,IAAa,CAAC;AACxC,MAAM,CAAC,MAAM,MAAM,GAAG,UAAmB,CAAC;AAC1C,MAAM,CAAC,MAAM,cAAc,GAAG,eAAwB,CAAC;AAUvD,MAAM,UAAU,cAAc;IAC5B,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;AAC/F,CAAC;AAED,gCAAgC;AAChC,MAAM,CAAC,MAAM,aAAa,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAW,CAAC;AAQ5E,iDAAiD;AACjD,MAAM,UAAU,cAAc,CAAC,IAAc;IAC3C,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;QAAE,OAAO,IAAI,CAAC;IACjC,OAAO,IAAI,CAAC,WAAW,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,aAAa,EAAE,CAAC,CAAC;AACzH,CAAC;AAED,gCAAgC;AAChC,MAAM,UAAU,UAAU,CAAC,IAAc,EAAE,SAAkB;IAC3D,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;QAAE,OAAO;IAC5B,IAAI,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;AACxF,CAAC"}
package/package.json ADDED
@@ -0,0 +1,43 @@
1
+ {
2
+ "name": "dsh-chef",
3
+ "version": "0.1.0",
4
+ "description": "爱生活单品插件 P10 脚手架:大厨(ilife:chef order 90),硬依赖总管 dsh-life-pack",
5
+ "type": "module",
6
+ "main": "./dist/index.js",
7
+ "types": "./dist/index.d.ts",
8
+ "exports": {
9
+ ".": "./dist/index.js",
10
+ "./client": "./dist/client.js",
11
+ "./package.json": "./package.json"
12
+ },
13
+ "files": [
14
+ "dist",
15
+ "cordis.patch.yml"
16
+ ],
17
+ "keywords": [
18
+ "dsh",
19
+ "deepseek-harness",
20
+ "plugin",
21
+ "ilife"
22
+ ],
23
+ "license": "MIT",
24
+ "engines": {
25
+ "node": ">=22.13"
26
+ },
27
+ "dependencies": {
28
+ "dsh-life-pack": "workspace:*"
29
+ },
30
+ "dsh": {
31
+ "bundle": {
32
+ "patch": "./cordis.patch.yml"
33
+ },
34
+ "client": {
35
+ "platform": "web",
36
+ "inject": []
37
+ }
38
+ },
39
+ "scripts": {
40
+ "build": "tsc -b",
41
+ "test": "node --test test/smoke.test.mjs"
42
+ }
43
+ }