skill-chef 0.3.0 → 0.3.2
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/SKILL.md +2 -2
- package/dist/add/commands.d.ts +15 -0
- package/dist/add/commands.d.ts.map +1 -0
- package/dist/add/commands.js +22 -0
- package/dist/add/commands.js.map +1 -0
- package/dist/add/index.d.ts +10 -0
- package/dist/add/index.d.ts.map +1 -0
- package/dist/add/index.js +10 -0
- package/dist/add/index.js.map +1 -0
- package/dist/add/routes.d.ts +11 -0
- package/dist/add/routes.d.ts.map +1 -0
- package/dist/add/routes.js +23 -0
- package/dist/add/routes.js.map +1 -0
- package/dist/add/run-write.d.ts +37 -0
- package/dist/add/run-write.d.ts.map +1 -0
- package/dist/add/run-write.js +187 -0
- package/dist/add/run-write.js.map +1 -0
- package/dist/cli/cmd_read.js +32 -289
- package/dist/cli/cmd_read.js.map +1 -1
- package/dist/cli/config.d.ts +6 -2
- package/dist/cli/config.d.ts.map +1 -1
- package/dist/cli/config.js +9 -3
- package/dist/cli/config.js.map +1 -1
- package/dist/cli/keys.d.ts +12 -0
- package/dist/cli/keys.d.ts.map +1 -0
- package/dist/cli/keys.js +58 -0
- package/dist/cli/keys.js.map +1 -0
- package/dist/config.d.ts +14 -6
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +73 -18
- package/dist/config.js.map +1 -1
- package/dist/cook/commands.d.ts +13 -0
- package/dist/cook/commands.d.ts.map +1 -0
- package/dist/cook/commands.js +21 -0
- package/dist/cook/commands.js.map +1 -0
- package/dist/cook/index.d.ts +9 -0
- package/dist/cook/index.d.ts.map +1 -0
- package/dist/cook/index.js +9 -0
- package/dist/cook/index.js.map +1 -0
- package/dist/cook/routes.d.ts +11 -0
- package/dist/cook/routes.d.ts.map +1 -0
- package/dist/cook/routes.js +35 -0
- package/dist/cook/routes.js.map +1 -0
- package/dist/cook/run.d.ts +24 -0
- package/dist/cook/run.d.ts.map +1 -0
- package/dist/cook/run.js +46 -0
- package/dist/cook/run.js.map +1 -0
- package/dist/data/commands.d.ts +12 -0
- package/dist/data/commands.d.ts.map +1 -0
- package/dist/data/commands.js +11 -0
- package/dist/data/commands.js.map +1 -0
- package/dist/data/index.d.ts +9 -0
- package/dist/data/index.d.ts.map +1 -0
- package/dist/data/index.js +9 -0
- package/dist/data/index.js.map +1 -0
- package/dist/data/routes.d.ts +12 -0
- package/dist/data/routes.d.ts.map +1 -0
- package/dist/data/routes.js +19 -0
- package/dist/data/routes.js.map +1 -0
- package/dist/data/run-query.d.ts +15 -0
- package/dist/data/run-query.d.ts.map +1 -0
- package/dist/data/run-query.js +73 -0
- package/dist/data/run-query.js.map +1 -0
- package/dist/fetch/db.d.ts +11 -31
- package/dist/fetch/db.d.ts.map +1 -1
- package/dist/fetch/db.js +39 -317
- package/dist/fetch/db.js.map +1 -1
- package/dist/fetch/index.d.ts +7 -1
- package/dist/fetch/index.d.ts.map +1 -1
- package/dist/fetch/index.js +9 -1
- package/dist/fetch/index.js.map +1 -1
- package/dist/fetch/paths.d.ts +37 -3
- package/dist/fetch/paths.d.ts.map +1 -1
- package/dist/fetch/paths.js +59 -8
- package/dist/fetch/paths.js.map +1 -1
- package/dist/fetch/schema.d.ts +7 -0
- package/dist/fetch/schema.d.ts.map +1 -0
- package/dist/fetch/schema.js +53 -0
- package/dist/fetch/schema.js.map +1 -0
- package/dist/health.d.ts.map +1 -1
- package/dist/health.js +7 -16
- package/dist/health.js.map +1 -1
- package/dist/help/manifest.d.ts +12 -5
- package/dist/help/manifest.d.ts.map +1 -1
- package/dist/help/manifest.js +15 -7
- package/dist/help/manifest.js.map +1 -1
- package/dist/history/commands.d.ts +32 -0
- package/dist/history/commands.d.ts.map +1 -0
- package/dist/history/commands.js +32 -0
- package/dist/history/commands.js.map +1 -0
- package/dist/history/index.d.ts +11 -0
- package/dist/history/index.d.ts.map +1 -0
- package/dist/history/index.js +9 -0
- package/dist/history/index.js.map +1 -0
- package/dist/history/routes.d.ts +19 -0
- package/dist/history/routes.d.ts.map +1 -0
- package/dist/history/routes.js +49 -0
- package/dist/history/routes.js.map +1 -0
- package/dist/history/run-query.d.ts +13 -0
- package/dist/history/run-query.d.ts.map +1 -0
- package/dist/history/run-query.js +44 -0
- package/dist/history/run-query.js.map +1 -0
- package/dist/history/run-record.d.ts +21 -0
- package/dist/history/run-record.d.ts.map +1 -0
- package/dist/history/run-record.js +71 -0
- package/dist/history/run-record.js.map +1 -0
- package/dist/relation/commands.d.ts +10 -0
- package/dist/relation/commands.d.ts.map +1 -0
- package/dist/relation/commands.js +9 -0
- package/dist/relation/commands.js.map +1 -0
- package/dist/relation/index.d.ts +8 -0
- package/dist/relation/index.d.ts.map +1 -0
- package/dist/relation/index.js +8 -0
- package/dist/relation/index.js.map +1 -0
- package/dist/relation/routes.d.ts +10 -0
- package/dist/relation/routes.d.ts.map +1 -0
- package/dist/relation/routes.js +28 -0
- package/dist/relation/routes.js.map +1 -0
- package/dist/render/index.d.ts +7 -1
- package/dist/render/index.d.ts.map +1 -1
- package/dist/render/index.js +9 -1
- package/dist/render/index.js.map +1 -1
- package/dist/render/views.d.ts +1 -39
- package/dist/render/views.d.ts.map +1 -1
- package/dist/render/views.js +6 -56
- package/dist/render/views.js.map +1 -1
- package/dist/search/commands.d.ts +14 -0
- package/dist/search/commands.d.ts.map +1 -0
- package/dist/search/commands.js +22 -0
- package/dist/search/commands.js.map +1 -0
- package/dist/search/index.d.ts +9 -0
- package/dist/search/index.d.ts.map +1 -0
- package/dist/search/index.js +9 -0
- package/dist/search/index.js.map +1 -0
- package/dist/search/routes.d.ts +11 -0
- package/dist/search/routes.d.ts.map +1 -0
- package/dist/search/routes.js +59 -0
- package/dist/search/routes.js.map +1 -0
- package/dist/search/run.d.ts +22 -0
- package/dist/search/run.d.ts.map +1 -0
- package/dist/search/run.js +105 -0
- package/dist/search/run.js.map +1 -0
- package/dist/setup/commands.d.ts +10 -0
- package/dist/setup/commands.d.ts.map +1 -0
- package/dist/setup/commands.js +9 -0
- package/dist/setup/commands.js.map +1 -0
- package/dist/setup/index.d.ts +8 -0
- package/dist/setup/index.d.ts.map +1 -0
- package/dist/setup/index.js +8 -0
- package/dist/setup/index.js.map +1 -0
- package/dist/setup/routes.d.ts +10 -0
- package/dist/setup/routes.d.ts.map +1 -0
- package/dist/setup/routes.js +16 -0
- package/dist/setup/routes.js.map +1 -0
- package/dist/shared/command-spec.d.ts +42 -0
- package/dist/shared/command-spec.d.ts.map +1 -0
- package/dist/shared/command-spec.js +15 -0
- package/dist/shared/command-spec.js.map +1 -0
- package/dist/shared/slots.d.ts +24 -0
- package/dist/shared/slots.d.ts.map +1 -0
- package/dist/shared/slots.js +63 -0
- package/dist/shared/slots.js.map +1 -0
- package/dist/shopping/commands.d.ts +13 -0
- package/dist/shopping/commands.d.ts.map +1 -0
- package/dist/shopping/commands.js +21 -0
- package/dist/shopping/commands.js.map +1 -0
- package/dist/shopping/index.d.ts +9 -0
- package/dist/shopping/index.d.ts.map +1 -0
- package/dist/shopping/index.js +9 -0
- package/dist/shopping/index.js.map +1 -0
- package/dist/shopping/routes.d.ts +11 -0
- package/dist/shopping/routes.d.ts.map +1 -0
- package/dist/shopping/routes.js +35 -0
- package/dist/shopping/routes.js.map +1 -0
- package/dist/shopping/run.d.ts +24 -0
- package/dist/shopping/run.d.ts.map +1 -0
- package/dist/shopping/run.js +74 -0
- package/dist/shopping/run.js.map +1 -0
- package/dist/triggers/chef-scenes.d.ts +47 -0
- package/dist/triggers/chef-scenes.d.ts.map +1 -0
- package/dist/triggers/chef-scenes.js +174 -0
- package/dist/triggers/chef-scenes.js.map +1 -0
- package/dist/update/commands.d.ts +12 -0
- package/dist/update/commands.d.ts.map +1 -0
- package/dist/update/commands.js +11 -0
- package/dist/update/commands.js.map +1 -0
- package/dist/update/index.d.ts +9 -0
- package/dist/update/index.d.ts.map +1 -0
- package/dist/update/index.js +9 -0
- package/dist/update/index.js.map +1 -0
- package/dist/update/routes.d.ts +12 -0
- package/dist/update/routes.d.ts.map +1 -0
- package/dist/update/routes.js +24 -0
- package/dist/update/routes.js.map +1 -0
- package/dist/update/run-write.d.ts +19 -0
- package/dist/update/run-write.d.ts.map +1 -0
- package/dist/update/run-write.js +99 -0
- package/dist/update/run-write.js.map +1 -0
- package/dist/view/commands.d.ts +14 -0
- package/dist/view/commands.d.ts.map +1 -0
- package/dist/view/commands.js +22 -0
- package/dist/view/commands.js.map +1 -0
- package/dist/view/index.d.ts +9 -0
- package/dist/view/index.d.ts.map +1 -0
- package/dist/view/index.js +9 -0
- package/dist/view/index.js.map +1 -0
- package/dist/view/routes.d.ts +11 -0
- package/dist/view/routes.d.ts.map +1 -0
- package/dist/view/routes.js +53 -0
- package/dist/view/routes.js.map +1 -0
- package/dist/view/run.d.ts +13 -0
- package/dist/view/run.d.ts.map +1 -0
- package/dist/view/run.js +34 -0
- package/dist/view/run.js.map +1 -0
- package/dist/zzshapeprobe/commands.d.ts +3 -0
- package/dist/zzshapeprobe/commands.d.ts.map +1 -0
- package/dist/zzshapeprobe/commands.js +3 -0
- package/dist/zzshapeprobe/commands.js.map +1 -0
- package/dist/zzshapeprobe/index.d.ts +3 -0
- package/dist/zzshapeprobe/index.d.ts.map +1 -0
- package/dist/zzshapeprobe/index.js +3 -0
- package/dist/zzshapeprobe/index.js.map +1 -0
- package/dist/zzshapeprobe/routes.d.ts +3 -0
- package/dist/zzshapeprobe/routes.d.ts.map +1 -0
- package/dist/zzshapeprobe/routes.js +3 -0
- package/dist/zzshapeprobe/routes.js.map +1 -0
- package/package.json +3 -3
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"commands.js","sourceRoot":"","sources":["../../src/history/commands.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAsBH,kDAAkD;AAClD,MAAM,CAAC,MAAM,gBAAgB,GAAkC;IAC7D;QACE,IAAI,EAAE,OAAO;QACb,GAAG,EAAE,qBAAqB;QAC1B,KAAK,EAAE,MAAM;QACb,QAAQ,EAAE,MAAM;QAChB,OAAO,EAAE,gEAAgE;KAC1E;IACD;QACE,IAAI,EAAE,MAAM;QACZ,GAAG,EAAE,oBAAoB;QACzB,KAAK,EAAE,MAAuB;QAC9B,KAAK,EAAE,MAAM;QACb,QAAQ,EAAE,MAAM;QAChB,OAAO,EAAE,gEAAgE;KAC1E;CACF,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/** 历史能力门:能力对外只经这里(结构纪律铁律一、铁律五)。
|
|
2
|
+
*
|
|
3
|
+
* 对外四件:命令声明表、路由声明表与两路处理函数(写/查)。类型两件不干活。
|
|
4
|
+
*/
|
|
5
|
+
export { HISTORY_COMMANDS } from './commands.js';
|
|
6
|
+
export type { HistoryCommandSpec } from './commands.js';
|
|
7
|
+
export { HISTORY_ROUTES } from './routes.js';
|
|
8
|
+
export type { HistoryRouteDecl } from './routes.js';
|
|
9
|
+
export { buildHistoryRecord, recordHistory, runHistoryRecord } from './run-record.js';
|
|
10
|
+
export { runHistoryQuery, toHistoryItem } from './run-query.js';
|
|
11
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/history/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,YAAY,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,YAAY,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACtF,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/** 历史能力门:能力对外只经这里(结构纪律铁律一、铁律五)。
|
|
2
|
+
*
|
|
3
|
+
* 对外四件:命令声明表、路由声明表与两路处理函数(写/查)。类型两件不干活。
|
|
4
|
+
*/
|
|
5
|
+
export { HISTORY_COMMANDS } from './commands.js';
|
|
6
|
+
export { HISTORY_ROUTES } from './routes.js';
|
|
7
|
+
export { buildHistoryRecord, recordHistory, runHistoryRecord } from './run-record.js';
|
|
8
|
+
export { runHistoryQuery, toHistoryItem } from './run-query.js';
|
|
9
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/history/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAEjD,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE7C,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACtF,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/** 历史能力的路由声明(唤醒词命中哪条命令,声明面唯一一处)。
|
|
2
|
+
*
|
|
3
|
+
* 六行对应 `src/policy/wakewords.ts` 里历史六句唤醒词:记录做菜/补录做菜/改评分
|
|
4
|
+
* 进 `chef.history.record`,查看历史/查看统计/体检进 `chef.history.query`。
|
|
5
|
+
* `order` 沿用唤醒词表里的相对顺序(31–36),只保证本文件内有序;全表级顺序
|
|
6
|
+
* 由整包落位票统一到场景表,本票不另立顺序。
|
|
7
|
+
* 命令行写法照 `packages/skill-chef/SKILL.md` 同命令示例:需菜名的带菜名,
|
|
8
|
+
* 查统计与体检带 `kind`(空库可跑的那一行)。
|
|
9
|
+
*/
|
|
10
|
+
/** 历史能力一条路由声明。 */
|
|
11
|
+
export interface HistoryRouteDecl {
|
|
12
|
+
readonly order: number;
|
|
13
|
+
readonly wakeWord: string;
|
|
14
|
+
readonly key: string;
|
|
15
|
+
readonly cli: string;
|
|
16
|
+
}
|
|
17
|
+
/** 历史能力的路由声明表:恰好导出一个声明数组。 */
|
|
18
|
+
export declare const HISTORY_ROUTES: readonly HistoryRouteDecl[];
|
|
19
|
+
//# sourceMappingURL=routes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"routes.d.ts","sourceRoot":"","sources":["../../src/history/routes.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,kBAAkB;AAClB,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;CACtB;AAED,6BAA6B;AAC7B,eAAO,MAAM,cAAc,EAAE,SAAS,gBAAgB,EAqCrD,CAAC"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/** 历史能力的路由声明(唤醒词命中哪条命令,声明面唯一一处)。
|
|
2
|
+
*
|
|
3
|
+
* 六行对应 `src/policy/wakewords.ts` 里历史六句唤醒词:记录做菜/补录做菜/改评分
|
|
4
|
+
* 进 `chef.history.record`,查看历史/查看统计/体检进 `chef.history.query`。
|
|
5
|
+
* `order` 沿用唤醒词表里的相对顺序(31–36),只保证本文件内有序;全表级顺序
|
|
6
|
+
* 由整包落位票统一到场景表,本票不另立顺序。
|
|
7
|
+
* 命令行写法照 `packages/skill-chef/SKILL.md` 同命令示例:需菜名的带菜名,
|
|
8
|
+
* 查统计与体检带 `kind`(空库可跑的那一行)。
|
|
9
|
+
*/
|
|
10
|
+
/** 历史能力的路由声明表:恰好导出一个声明数组。 */
|
|
11
|
+
export const HISTORY_ROUTES = [
|
|
12
|
+
{
|
|
13
|
+
order: 31,
|
|
14
|
+
wakeWord: '记录做菜',
|
|
15
|
+
key: 'chef.history.record',
|
|
16
|
+
cli: 'chef-cmd-read chef.history.record --params \'{"name":"宫保虾球"}\'',
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
order: 32,
|
|
20
|
+
wakeWord: '补录做菜',
|
|
21
|
+
key: 'chef.history.record',
|
|
22
|
+
cli: 'chef-cmd-read chef.history.record --params \'{"name":"宫保虾球"}\'',
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
order: 33,
|
|
26
|
+
wakeWord: '改评分',
|
|
27
|
+
key: 'chef.history.record',
|
|
28
|
+
cli: 'chef-cmd-read chef.history.record --params \'{"name":"宫保虾球"}\'',
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
order: 34,
|
|
32
|
+
wakeWord: '查看历史',
|
|
33
|
+
key: 'chef.history.query',
|
|
34
|
+
cli: 'chef-cmd-read chef.history.query --params \'{"name":"宫保虾球"}\'',
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
order: 35,
|
|
38
|
+
wakeWord: '查看统计',
|
|
39
|
+
key: 'chef.history.query',
|
|
40
|
+
cli: 'chef-cmd-read chef.history.query --params \'{"kind":"stats"}\'',
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
order: 36,
|
|
44
|
+
wakeWord: '体检',
|
|
45
|
+
key: 'chef.history.query',
|
|
46
|
+
cli: 'chef-cmd-read chef.history.query --params \'{"kind":"quality"}\'',
|
|
47
|
+
},
|
|
48
|
+
];
|
|
49
|
+
//# sourceMappingURL=routes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"routes.js","sourceRoot":"","sources":["../../src/history/routes.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAUH,6BAA6B;AAC7B,MAAM,CAAC,MAAM,cAAc,GAAgC;IACzD;QACE,KAAK,EAAE,EAAE;QACT,QAAQ,EAAE,MAAM;QAChB,GAAG,EAAE,qBAAqB;QAC1B,GAAG,EAAE,gEAAgE;KACtE;IACD;QACE,KAAK,EAAE,EAAE;QACT,QAAQ,EAAE,MAAM;QAChB,GAAG,EAAE,qBAAqB;QAC1B,GAAG,EAAE,gEAAgE;KACtE;IACD;QACE,KAAK,EAAE,EAAE;QACT,QAAQ,EAAE,KAAK;QACf,GAAG,EAAE,qBAAqB;QAC1B,GAAG,EAAE,gEAAgE;KACtE;IACD;QACE,KAAK,EAAE,EAAE;QACT,QAAQ,EAAE,MAAM;QAChB,GAAG,EAAE,oBAAoB;QACzB,GAAG,EAAE,+DAA+D;KACrE;IACD;QACE,KAAK,EAAE,EAAE;QACT,QAAQ,EAAE,MAAM;QAChB,GAAG,EAAE,oBAAoB;QACzB,GAAG,EAAE,gEAAgE;KACtE;IACD;QACE,KAAK,EAAE,EAAE;QACT,QAAQ,EAAE,IAAI;QACd,GAAG,EAAE,oBAAoB;QACzB,GAAG,EAAE,kEAAkE;KACxE;CACF,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/** 历史能力的查处理(`chef.history.query` 的 timeline/stats 两 kind)+ 本域独占的行装配。
|
|
2
|
+
*
|
|
3
|
+
* 老分派层(`src/cli/cmd_read.ts`)`chef.history.query` 分支中 timeline/stats 两路逐字节下沉:
|
|
4
|
+
* 只改 import 出处,判定与装配一字不动。quality/backup 两路住数据管理域
|
|
5
|
+
* (`src/data/run-query.ts`);kind 路由由入口注册表做(非法 kind 入口已拦,落不到这里)。
|
|
6
|
+
* `toHistoryItem`(原 `src/render/views.ts`)只被本域调用,随行搬入;旧址改转出(搬迁债务)。
|
|
7
|
+
*/
|
|
8
|
+
import type { ChefDb, HistoryRow } from '../fetch/db.js';
|
|
9
|
+
/** 历史行+菜名拼条目。原 `src/render/views.ts`,本域独占。 */
|
|
10
|
+
export declare function toHistoryItem(h: HistoryRow, recipeName?: string): Record<string, unknown>;
|
|
11
|
+
/** 跑 `chef.history.query` 的 timeline/stats:`kind` 由入口注册表算好下传,本函数只做本域两路分支。 */
|
|
12
|
+
export declare function runHistoryQuery(handle: ChefDb, params: Record<string, unknown>, kind: string): unknown;
|
|
13
|
+
//# sourceMappingURL=run-query.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run-query.d.ts","sourceRoot":"","sources":["../../src/history/run-query.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAMzD,8CAA8C;AAC9C,wBAAgB,aAAa,CAAC,CAAC,EAAE,UAAU,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAIzF;AAED,6EAA6E;AAC7E,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAuBtG"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/** 历史能力的查处理(`chef.history.query` 的 timeline/stats 两 kind)+ 本域独占的行装配。
|
|
2
|
+
*
|
|
3
|
+
* 老分派层(`src/cli/cmd_read.ts`)`chef.history.query` 分支中 timeline/stats 两路逐字节下沉:
|
|
4
|
+
* 只改 import 出处,判定与装配一字不动。quality/backup 两路住数据管理域
|
|
5
|
+
* (`src/data/run-query.ts`);kind 路由由入口注册表做(非法 kind 入口已拦,落不到这里)。
|
|
6
|
+
* `toHistoryItem`(原 `src/render/views.ts`)只被本域调用,随行搬入;旧址改转出(搬迁债务)。
|
|
7
|
+
*/
|
|
8
|
+
import { getRecipeDetail, historyStats, listRecipes, queryHistory } from '../fetch/db.js';
|
|
9
|
+
import { ChefPolicyError } from '../fetch/errors.js';
|
|
10
|
+
import { buildHistoryQuery } from '../render/index.js';
|
|
11
|
+
import { needName } from '../policy/index.js';
|
|
12
|
+
/** 历史行+菜名拼条目。原 `src/render/views.ts`,本域独占。 */
|
|
13
|
+
export function toHistoryItem(h, recipeName) {
|
|
14
|
+
const out = { ...h };
|
|
15
|
+
if (recipeName !== undefined)
|
|
16
|
+
out.recipe_name = recipeName;
|
|
17
|
+
return out;
|
|
18
|
+
}
|
|
19
|
+
/** 跑 `chef.history.query` 的 timeline/stats:`kind` 由入口注册表算好下传,本函数只做本域两路分支。 */
|
|
20
|
+
export function runHistoryQuery(handle, params, kind) {
|
|
21
|
+
if (kind === 'timeline') {
|
|
22
|
+
const name = needName(params);
|
|
23
|
+
const detail = getRecipeDetail(handle, name);
|
|
24
|
+
const rows = queryHistory(handle, detail.recipe.id);
|
|
25
|
+
return buildHistoryQuery('timeline:' + detail.recipe.name, rows.map((h) => toHistoryItem(h, detail.recipe.name)));
|
|
26
|
+
}
|
|
27
|
+
if (kind === 'stats') {
|
|
28
|
+
const name = params.name;
|
|
29
|
+
if (typeof name === 'string' && name.trim()) {
|
|
30
|
+
const detail = getRecipeDetail(handle, name.trim());
|
|
31
|
+
const st = historyStats(handle, detail.recipe.id);
|
|
32
|
+
return buildHistoryQuery('stats:' + detail.recipe.name, [{ name: detail.recipe.name, count: st.count, avgRating: st.avgRating }]);
|
|
33
|
+
}
|
|
34
|
+
const recipes = listRecipes(handle);
|
|
35
|
+
const items = recipes.map((r) => {
|
|
36
|
+
const st = historyStats(handle, r.id);
|
|
37
|
+
return { id: r.id, name: r.name, count: st.count, avgRating: st.avgRating };
|
|
38
|
+
});
|
|
39
|
+
return buildHistoryQuery('stats:all', items);
|
|
40
|
+
}
|
|
41
|
+
// 不可达:入口注册表已拦过非法 kind(原文分支尾 fail(2) 同报文,归用法错 exit 2)。
|
|
42
|
+
throw new ChefPolicyError('POLICY_BAD_INPUT', 'history.query 只接受 kind=timeline/stats/quality/backup');
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=run-query.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run-query.js","sourceRoot":"","sources":["../../src/history/run-query.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC1F,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAE9C,8CAA8C;AAC9C,MAAM,UAAU,aAAa,CAAC,CAAa,EAAE,UAAmB;IAC9D,MAAM,GAAG,GAA4B,EAAE,GAAG,CAAC,EAAE,CAAC;IAC9C,IAAI,UAAU,KAAK,SAAS;QAAE,GAAG,CAAC,WAAW,GAAG,UAAU,CAAC;IAC3D,OAAO,GAAG,CAAC;AACb,CAAC;AAED,6EAA6E;AAC7E,MAAM,UAAU,eAAe,CAAC,MAAc,EAAE,MAA+B,EAAE,IAAY;IAC3F,IAAI,IAAI,KAAK,UAAU,EAAE,CAAC;QACxB,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;QAC9B,MAAM,MAAM,GAAG,eAAe,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAC7C,MAAM,IAAI,GAAG,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACpD,OAAO,iBAAiB,CAAC,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,aAAa,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpH,CAAC;IACD,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;QACrB,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;QACzB,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;YAC5C,MAAM,MAAM,GAAG,eAAe,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;YACpD,MAAM,EAAE,GAAG,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YAClD,OAAO,iBAAiB,CAAC,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;QACpI,CAAC;QACD,MAAM,OAAO,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;QACpC,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;YAC9B,MAAM,EAAE,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;YACtC,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE,CAAC,SAAS,EAAE,CAAC;QAC9E,CAAC,CAAC,CAAC;QACH,OAAO,iBAAiB,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;IAC/C,CAAC;IACD,sDAAsD;IACtD,MAAM,IAAI,eAAe,CAAC,kBAAkB,EAAE,sDAAsD,CAAC,CAAC;AACxG,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/** 历史能力的写处理(`chef.history.record`)+ 本域独占的取数与回执装配。
|
|
2
|
+
*
|
|
3
|
+
* 老分派层(`src/cli/cmd_read.ts`)分支逐字节下沉:只改 import 出处,判定与装配一字不动。
|
|
4
|
+
* `recordHistory`(原 `src/fetch/db.ts`)与 `buildHistoryRecord`(原 `src/render/views.ts`)
|
|
5
|
+
* 只被本域调用,按“写不出的留回域目录”搬入本文件;旧址改转出(搬迁债务,见对应 index)。
|
|
6
|
+
*/
|
|
7
|
+
import type { ChefDb, HistoryRow } from '../fetch/db.js';
|
|
8
|
+
/** 记一次做菜(评分必填:老库 rating NOT NULL,缺评分直接拦)。原 `src/fetch/db.ts`,本域独占。 */
|
|
9
|
+
export declare function recordHistory(h: ChefDb, input: {
|
|
10
|
+
recipe_id: string;
|
|
11
|
+
rating?: number | null;
|
|
12
|
+
feedback?: string;
|
|
13
|
+
cook_date?: string;
|
|
14
|
+
}): HistoryRow;
|
|
15
|
+
export declare function buildHistoryRecord(message: string): {
|
|
16
|
+
ok: boolean;
|
|
17
|
+
message: string;
|
|
18
|
+
};
|
|
19
|
+
/** 跑 `chef.history.record`:定位母菜+评分校验+落历史(receipt 形)。 */
|
|
20
|
+
export declare function runHistoryRecord(handle: ChefDb, params: Record<string, unknown>): unknown;
|
|
21
|
+
//# sourceMappingURL=run-record.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run-record.d.ts","sourceRoot":"","sources":["../../src/history/run-record.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AASzD,sEAAsE;AACtE,wBAAgB,aAAa,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,UAAU,CA4BhJ;AAGD,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG;IAAE,EAAE,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAEpF;AAED,wDAAwD;AACxD,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAYzF"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
/** 历史能力的写处理(`chef.history.record`)+ 本域独占的取数与回执装配。
|
|
2
|
+
*
|
|
3
|
+
* 老分派层(`src/cli/cmd_read.ts`)分支逐字节下沉:只改 import 出处,判定与装配一字不动。
|
|
4
|
+
* `recordHistory`(原 `src/fetch/db.ts`)与 `buildHistoryRecord`(原 `src/render/views.ts`)
|
|
5
|
+
* 只被本域调用,按“写不出的留回域目录”搬入本文件;旧址改转出(搬迁债务,见对应 index)。
|
|
6
|
+
*/
|
|
7
|
+
import { randomUUID } from 'node:crypto';
|
|
8
|
+
import { ChefFetchError } from '../fetch/errors.js';
|
|
9
|
+
import { getRecipeDetail, mustRecipe, now, qGet, qRun, toHistory } from '../fetch/db.js';
|
|
10
|
+
import { needName, validateRating } from '../policy/index.js';
|
|
11
|
+
/** 当日日期(本域独占:落历史默认 cook_date 与补录默认 date;原 db.ts `today()`,随 recordHistory 搬入)。 */
|
|
12
|
+
function today() {
|
|
13
|
+
return new Date().toISOString().slice(0, 10);
|
|
14
|
+
}
|
|
15
|
+
/** 记一次做菜(评分必填:老库 rating NOT NULL,缺评分直接拦)。原 `src/fetch/db.ts`,本域独占。 */
|
|
16
|
+
export function recordHistory(h, input) {
|
|
17
|
+
const rid = typeof input?.recipe_id === 'string' ? input.recipe_id.trim() : '';
|
|
18
|
+
if (!rid)
|
|
19
|
+
throw new ChefFetchError('CHEF_BAD_QUERY', '记录做菜须给 recipe_id');
|
|
20
|
+
const recipe = mustRecipe(h, rid);
|
|
21
|
+
let rating = null;
|
|
22
|
+
const rawRt = input.rating;
|
|
23
|
+
// 818 定案(甲):老库 rating REAL NOT NULL,本次不改 schema;卡面“选填”暂改“必填”,缺评分不写历史,直接拦下。
|
|
24
|
+
if (rawRt === undefined || rawRt === null || rawRt === '')
|
|
25
|
+
throw new ChefFetchError('CHEF_BAD_QUERY', '记录做菜须给评分 rating(0-5 数字;老库 NOT NULL,未评分请先问用户要分)');
|
|
26
|
+
{
|
|
27
|
+
const n = typeof rawRt === 'string' ? Number(String(rawRt).trim()) : rawRt;
|
|
28
|
+
if (typeof n !== 'number' || !Number.isFinite(n))
|
|
29
|
+
throw new ChefFetchError('CHEF_HISTORY_CORRUPT', '评分须为数字');
|
|
30
|
+
if (n < 0 || n > 5)
|
|
31
|
+
throw new ChefFetchError('CHEF_HISTORY_CORRUPT', '评分须在 0-5 内');
|
|
32
|
+
rating = n;
|
|
33
|
+
}
|
|
34
|
+
const cookDate = typeof input.cook_date === 'string' && input.cook_date.trim() ? input.cook_date.trim() : today();
|
|
35
|
+
const maxRow = qGet(h, 'SELECT MAX(cook_sequence) AS m FROM recipe_history WHERE recipe_id = ?', [recipe.id]);
|
|
36
|
+
const seq = (maxRow?.m ?? 0) + 1;
|
|
37
|
+
const id = randomUUID();
|
|
38
|
+
try {
|
|
39
|
+
qRun(h, 'INSERT INTO recipe_history (id, recipe_id, cook_date, cook_sequence, rating, feedback) VALUES (?, ?, ?, ?, ?, ?)', [id, recipe.id, cookDate, seq, rating, input.feedback ?? '']);
|
|
40
|
+
if (recipe.status === '未做')
|
|
41
|
+
qRun(h, 'UPDATE recipes SET status = ?, updated_at = ? WHERE id = ?', ['已做', now(), recipe.id]);
|
|
42
|
+
}
|
|
43
|
+
catch (e) {
|
|
44
|
+
if (e instanceof ChefFetchError)
|
|
45
|
+
throw e;
|
|
46
|
+
throw new ChefFetchError('CHEF_DB_UNREADABLE', '历史写盘失败', { cause: e });
|
|
47
|
+
}
|
|
48
|
+
const row = qGet(h, 'SELECT * FROM recipe_history WHERE id = ?', [id]);
|
|
49
|
+
if (!row)
|
|
50
|
+
throw new ChefFetchError('CHEF_HISTORY_CORRUPT', '历史写后读回失败');
|
|
51
|
+
return toHistory(row);
|
|
52
|
+
}
|
|
53
|
+
// 记做菜回执 receipt。原 `src/render/views.ts`,本域独占。
|
|
54
|
+
export function buildHistoryRecord(message) {
|
|
55
|
+
return { ok: true, message };
|
|
56
|
+
}
|
|
57
|
+
/** 跑 `chef.history.record`:定位母菜+评分校验+落历史(receipt 形)。 */
|
|
58
|
+
export function runHistoryRecord(handle, params) {
|
|
59
|
+
const name = needName(params);
|
|
60
|
+
const detail = getRecipeDetail(handle, name);
|
|
61
|
+
let rating = null;
|
|
62
|
+
if (params.rating !== undefined) {
|
|
63
|
+
const raw = typeof params.rating === 'string' && params.rating.trim() !== '' ? Number(params.rating.trim()) : params.rating;
|
|
64
|
+
rating = validateRating(raw);
|
|
65
|
+
}
|
|
66
|
+
const feedback = params.feedback === undefined ? '' : String(params.feedback);
|
|
67
|
+
const cookDate = params.date === undefined || params.date === '' ? today() : String(params.date);
|
|
68
|
+
const h = recordHistory(handle, { recipe_id: detail.recipe.id, rating, feedback, cook_date: cookDate });
|
|
69
|
+
return buildHistoryRecord('已记录做菜:' + detail.recipe.name + '(' + h.cook_date + (rating !== null ? ',评分 ' + rating : '') + ')');
|
|
70
|
+
}
|
|
71
|
+
//# sourceMappingURL=run-record.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run-record.js","sourceRoot":"","sources":["../../src/history/run-record.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/** 派生能力的命令声明(空):本域暂无 key。
|
|
2
|
+
*
|
|
3
|
+
* 本能力即 HELP 一级分组「派生」。三组短语(添加派生关系/查看派生关系/从已有派生新菜)在
|
|
4
|
+
* #767 资产里去向为 `tbd`(不可路由)——运行时无 key、无实现。空数组仍是「恰好一个声明数组」
|
|
5
|
+
* (生成器认它为一域,来源域名单里有 `relation`),派生端到端票接入 key 时再填。
|
|
6
|
+
*/
|
|
7
|
+
import type { CommandSpec } from '../shared/command-spec.js';
|
|
8
|
+
/** 派生能力的声明表:恰好导出一个声明数组(生成器只认这一个;本域暂空)。 */
|
|
9
|
+
export declare const RELATION_COMMANDS: readonly CommandSpec[];
|
|
10
|
+
//# sourceMappingURL=commands.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../../src/relation/commands.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAE7D,0CAA0C;AAC1C,eAAO,MAAM,iBAAiB,EAAE,SAAS,WAAW,EAAO,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/** 派生能力的命令声明(空):本域暂无 key。
|
|
2
|
+
*
|
|
3
|
+
* 本能力即 HELP 一级分组「派生」。三组短语(添加派生关系/查看派生关系/从已有派生新菜)在
|
|
4
|
+
* #767 资产里去向为 `tbd`(不可路由)——运行时无 key、无实现。空数组仍是「恰好一个声明数组」
|
|
5
|
+
* (生成器认它为一域,来源域名单里有 `relation`),派生端到端票接入 key 时再填。
|
|
6
|
+
*/
|
|
7
|
+
/** 派生能力的声明表:恰好导出一个声明数组(生成器只认这一个;本域暂空)。 */
|
|
8
|
+
export const RELATION_COMMANDS = [];
|
|
9
|
+
//# sourceMappingURL=commands.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"commands.js","sourceRoot":"","sources":["../../src/relation/commands.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,0CAA0C;AAC1C,MAAM,CAAC,MAAM,iBAAiB,GAA2B,EAAE,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/relation/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/relation/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/** 派生能力的路由声明(占位):三组短语暂无 key。
|
|
2
|
+
*
|
|
3
|
+
* 三行对应 #767 资产里派生的三组短语,`key: 'tbd'`、`order: 0`(未入 `WAKE_TABLE`,
|
|
4
|
+
* 运行时唤醒词未命中)。`cli` 为空串——无可跑命令行,占位等域票接入。
|
|
5
|
+
* 对账脚本认 `key: 'tbd'` 行为 tbd 行(仅 relation/setup 允许出现)。
|
|
6
|
+
*/
|
|
7
|
+
import type { RouteDecl } from '../shared/command-spec.js';
|
|
8
|
+
/** 派生能力的路由声明表:恰好导出一个声明数组(全 tbd,域票接入时填实)。 */
|
|
9
|
+
export declare const RELATION_ROUTES: readonly RouteDecl[];
|
|
10
|
+
//# sourceMappingURL=routes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"routes.d.ts","sourceRoot":"","sources":["../../src/relation/routes.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAE3D,4CAA4C;AAC5C,eAAO,MAAM,eAAe,EAAE,SAAS,SAAS,EAmB/C,CAAC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/** 派生能力的路由声明(占位):三组短语暂无 key。
|
|
2
|
+
*
|
|
3
|
+
* 三行对应 #767 资产里派生的三组短语,`key: 'tbd'`、`order: 0`(未入 `WAKE_TABLE`,
|
|
4
|
+
* 运行时唤醒词未命中)。`cli` 为空串——无可跑命令行,占位等域票接入。
|
|
5
|
+
* 对账脚本认 `key: 'tbd'` 行为 tbd 行(仅 relation/setup 允许出现)。
|
|
6
|
+
*/
|
|
7
|
+
/** 派生能力的路由声明表:恰好导出一个声明数组(全 tbd,域票接入时填实)。 */
|
|
8
|
+
export const RELATION_ROUTES = [
|
|
9
|
+
{
|
|
10
|
+
order: 0,
|
|
11
|
+
wakeWord: '添加派生关系',
|
|
12
|
+
key: 'tbd',
|
|
13
|
+
cli: '',
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
order: 0,
|
|
17
|
+
wakeWord: '查看派生关系',
|
|
18
|
+
key: 'tbd',
|
|
19
|
+
cli: '',
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
order: 0,
|
|
23
|
+
wakeWord: '从已有派生新菜',
|
|
24
|
+
key: 'tbd',
|
|
25
|
+
cli: '',
|
|
26
|
+
},
|
|
27
|
+
];
|
|
28
|
+
//# sourceMappingURL=routes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"routes.js","sourceRoot":"","sources":["../../src/relation/routes.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,4CAA4C;AAC5C,MAAM,CAAC,MAAM,eAAe,GAAyB;IACnD;QACE,KAAK,EAAE,CAAC;QACR,QAAQ,EAAE,QAAQ;QAClB,GAAG,EAAE,KAAK;QACV,GAAG,EAAE,EAAE;KACR;IACD;QACE,KAAK,EAAE,CAAC;QACR,QAAQ,EAAE,QAAQ;QAClB,GAAG,EAAE,KAAK;QACV,GAAG,EAAE,EAAE;KACR;IACD;QACE,KAAK,EAAE,CAAC;QACR,QAAQ,EAAE,SAAS;QACnB,GAAG,EAAE,KAAK;QACV,GAAG,EAAE,EAAE;KACR;CACF,CAAC"}
|
package/dist/render/index.d.ts
CHANGED
|
@@ -3,6 +3,12 @@ export { CHEF_KEY_SHAPES, chefShapeFor, buildChefEnvelope, parseChefEnvelope } f
|
|
|
3
3
|
export { CHEF_HTML_MAX_BYTES, escapeHtml, renderEnvelopeHtml, estimateBytes, assertHtmlSize, SHARED_CSS_MARKER, SHARED_HELPERS_MARKER, CONTENT_MARKER, SHARED_CSS, SHARED_HELPERS, fillTemplate } from './html.js';
|
|
4
4
|
export { CHEF_TEMPLATES, templateFor, loadTemplate } from './templates.js';
|
|
5
5
|
export type { ChefTemplate } from './templates.js';
|
|
6
|
-
export { toRecipeItem,
|
|
6
|
+
export { toRecipeItem, buildRecipeReceipt, buildHistoryQuery, buildHelpItems } from './views.js';
|
|
7
|
+
export { recipeDetail } from '../view/run.js';
|
|
8
|
+
export { buildRecipeSearch } from '../search/run.js';
|
|
9
|
+
export { buildCookingRun } from '../cook/run.js';
|
|
10
|
+
export { buildShopping } from '../shopping/run.js';
|
|
11
|
+
export { buildHistoryRecord } from '../history/run-record.js';
|
|
12
|
+
export { toHistoryItem } from '../history/run-query.js';
|
|
7
13
|
export type { RecipeItem, RecipeDetail, RecipeHistoryStats, CookingStep, HelpItem } from './views.js';
|
|
8
14
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/render/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AACpG,OAAO,EAAE,mBAAmB,EAAE,UAAU,EAAE,kBAAkB,EAAE,aAAa,EAAE,cAAc,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,cAAc,EAAE,UAAU,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACnN,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC3E,YAAY,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,eAAe,EAAE,aAAa,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/render/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AACpG,OAAO,EAAE,mBAAmB,EAAE,UAAU,EAAE,kBAAkB,EAAE,aAAa,EAAE,cAAc,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,cAAc,EAAE,UAAU,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACnN,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC3E,YAAY,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAGjG,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,kBAAkB,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC"}
|
package/dist/render/index.js
CHANGED
|
@@ -2,5 +2,13 @@ export { ChefRenderError } from './errors.js';
|
|
|
2
2
|
export { CHEF_KEY_SHAPES, chefShapeFor, buildChefEnvelope, parseChefEnvelope } from './envelope.js';
|
|
3
3
|
export { CHEF_HTML_MAX_BYTES, escapeHtml, renderEnvelopeHtml, estimateBytes, assertHtmlSize, SHARED_CSS_MARKER, SHARED_HELPERS_MARKER, CONTENT_MARKER, SHARED_CSS, SHARED_HELPERS, fillTemplate } from './html.js';
|
|
4
4
|
export { CHEF_TEMPLATES, templateFor, loadTemplate } from './templates.js';
|
|
5
|
-
export { toRecipeItem,
|
|
5
|
+
export { toRecipeItem, buildRecipeReceipt, buildHistoryQuery, buildHelpItems } from './views.js';
|
|
6
|
+
// #839 搬迁债务(到期=收口票把测试改打域接口后删):下六件的新家在域目录,
|
|
7
|
+
// 本 barrel 只转出、不断言内容(结构纪律铁律五:过渡期旧共用 barrel 对新家内部件的深路径直引用)。
|
|
8
|
+
export { recipeDetail } from '../view/run.js';
|
|
9
|
+
export { buildRecipeSearch } from '../search/run.js';
|
|
10
|
+
export { buildCookingRun } from '../cook/run.js';
|
|
11
|
+
export { buildShopping } from '../shopping/run.js';
|
|
12
|
+
export { buildHistoryRecord } from '../history/run-record.js';
|
|
13
|
+
export { toHistoryItem } from '../history/run-query.js';
|
|
6
14
|
//# sourceMappingURL=index.js.map
|
package/dist/render/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/render/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AACpG,OAAO,EAAE,mBAAmB,EAAE,UAAU,EAAE,kBAAkB,EAAE,aAAa,EAAE,cAAc,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,cAAc,EAAE,UAAU,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACnN,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE3E,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,eAAe,EAAE,aAAa,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/render/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AACpG,OAAO,EAAE,mBAAmB,EAAE,UAAU,EAAE,kBAAkB,EAAE,aAAa,EAAE,cAAc,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,cAAc,EAAE,UAAU,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACnN,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE3E,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AACjG,0CAA0C;AAC1C,2DAA2D;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC"}
|
package/dist/render/views.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { RecipeRow, IngredientRow, StepRow
|
|
1
|
+
import type { RecipeRow, IngredientRow, StepRow } from '../fetch/db.js';
|
|
2
2
|
export interface RecipeItem {
|
|
3
3
|
id: string;
|
|
4
4
|
name: string;
|
|
@@ -19,14 +19,6 @@ export interface RecipeDetail {
|
|
|
19
19
|
steps: StepRow[];
|
|
20
20
|
history?: RecipeHistoryStats | null;
|
|
21
21
|
}
|
|
22
|
-
export declare function recipeDetail(detail: RecipeDetail): {
|
|
23
|
-
item: Record<string, unknown>;
|
|
24
|
-
};
|
|
25
|
-
export declare function buildRecipeSearch(kind: string, items: RecipeItem[]): {
|
|
26
|
-
items: RecipeItem[];
|
|
27
|
-
total: number;
|
|
28
|
-
kind: string;
|
|
29
|
-
};
|
|
30
22
|
export declare function buildRecipeReceipt(message: string): {
|
|
31
23
|
ok: boolean;
|
|
32
24
|
message: string;
|
|
@@ -36,41 +28,11 @@ export interface CookingStep extends Record<string, unknown> {
|
|
|
36
28
|
action: string;
|
|
37
29
|
ingredients?: Record<string, unknown>[];
|
|
38
30
|
}
|
|
39
|
-
export declare function buildCookingRun(args: {
|
|
40
|
-
recipe: RecipeItem;
|
|
41
|
-
steps: CookingStep[];
|
|
42
|
-
servings?: number;
|
|
43
|
-
history?: RecipeHistoryStats | null;
|
|
44
|
-
}): {
|
|
45
|
-
items: CookingStep[];
|
|
46
|
-
total: number;
|
|
47
|
-
recipe: RecipeItem;
|
|
48
|
-
servingsNote: string;
|
|
49
|
-
historyHint: string;
|
|
50
|
-
steps: CookingStep[];
|
|
51
|
-
};
|
|
52
|
-
export declare function buildShopping(args: {
|
|
53
|
-
items: ShoppingItem[];
|
|
54
|
-
recipes: string[];
|
|
55
|
-
servings?: number;
|
|
56
|
-
excludeOptional?: boolean;
|
|
57
|
-
}): {
|
|
58
|
-
items: ShoppingItem[];
|
|
59
|
-
total: number;
|
|
60
|
-
recipes: string[];
|
|
61
|
-
servings?: number;
|
|
62
|
-
excludeOptional: boolean;
|
|
63
|
-
};
|
|
64
|
-
export declare function buildHistoryRecord(message: string): {
|
|
65
|
-
ok: boolean;
|
|
66
|
-
message: string;
|
|
67
|
-
};
|
|
68
31
|
export declare function buildHistoryQuery(kind: string, items: Record<string, unknown>[]): {
|
|
69
32
|
items: Record<string, unknown>[];
|
|
70
33
|
total: number;
|
|
71
34
|
kind: string;
|
|
72
35
|
};
|
|
73
|
-
export declare function toHistoryItem(h: HistoryRow, recipeName?: string): Record<string, unknown>;
|
|
74
36
|
export interface HelpItem {
|
|
75
37
|
phrase: string;
|
|
76
38
|
key: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"views.d.ts","sourceRoot":"","sources":["../../src/render/views.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"views.d.ts","sourceRoot":"","sources":["../../src/render/views.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAExE,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAClE,QAAQ,EAAE,MAAM,CAAC;IAAC,kBAAkB,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;CAC9D;AAED,wBAAgB,YAAY,CAAC,CAAC,EAAE,SAAS,GAAG,UAAU,CAKrD;AAED,MAAM,WAAW,kBAAkB;IAAG,KAAK,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;CAAE;AAGhF,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,SAAS,CAAC;IAClB,WAAW,EAAE,aAAa,EAAE,CAAC;IAC7B,KAAK,EAAE,OAAO,EAAE,CAAC;IACjB,OAAO,CAAC,EAAE,kBAAkB,GAAG,IAAI,CAAC;CACrC;AAMD,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG;IAAE,EAAE,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAEpF;AAED,MAAM,WAAW,WAAY,SAAQ,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAC1D,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;CACzC;AAUD,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAEnJ;AAKD,MAAM,WAAW,QAAQ;IAAG,MAAM,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;CAAE;AAEpG,wBAAgB,cAAc,CAAC,GAAG,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC,EAAE,MAAM,GAAG;IAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAkBhG"}
|
package/dist/render/views.js
CHANGED
|
@@ -4,70 +4,20 @@ export function toRecipeItem(r) {
|
|
|
4
4
|
servings: r.servings, total_time_minutes: r.total_time_minutes, status: r.status,
|
|
5
5
|
};
|
|
6
6
|
}
|
|
7
|
-
//
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
const steps = [...detail.steps].sort((a, b) => a.sequence - b.sequence).map((s) => ({ ...s }));
|
|
11
|
-
return {
|
|
12
|
-
item: {
|
|
13
|
-
...toRecipeItem(detail.recipe),
|
|
14
|
-
photo_url: detail.recipe.photo_url,
|
|
15
|
-
source: detail.recipe.source,
|
|
16
|
-
source_url: detail.recipe.source_url,
|
|
17
|
-
created_at: detail.recipe.created_at,
|
|
18
|
-
updated_at: detail.recipe.updated_at,
|
|
19
|
-
ingredients,
|
|
20
|
-
steps,
|
|
21
|
-
history: detail.history ?? { count: 0, avgRating: null },
|
|
22
|
-
// 营养占位:一期不估算,显式标记未估算,不编数字冒充。
|
|
23
|
-
nutrition: { estimated: false, note: '营养估算一期占位(以实际食材称量为准)' },
|
|
24
|
-
},
|
|
25
|
-
};
|
|
26
|
-
}
|
|
27
|
-
// 搜菜/筛菜/全部:items + total + kind。
|
|
28
|
-
export function buildRecipeSearch(kind, items) {
|
|
29
|
-
return { items, total: items.length, kind };
|
|
30
|
-
}
|
|
31
|
-
// 写菜回执 receipt。
|
|
7
|
+
// 单菜全貌装配 `recipeDetail` 已搬入 `src/view/run.ts`(本域独占;旧址由 `src/render/index.ts` 转出)。
|
|
8
|
+
// 搜菜/筛菜/全部装配 `buildRecipeSearch` 已搬入 `src/search/run.ts`(本域独占;旧址由 `src/render/index.ts` 转出)。
|
|
9
|
+
// 写菜回执 receipt(update/add 两域共用,留守)。
|
|
32
10
|
export function buildRecipeReceipt(message) {
|
|
33
11
|
return { ok: true, message };
|
|
34
12
|
}
|
|
35
|
-
//
|
|
36
|
-
export function buildCookingRun(args) {
|
|
37
|
-
const base = args.recipe.servings > 0 ? args.recipe.servings : 2;
|
|
38
|
-
const servings = args.servings ?? base;
|
|
39
|
-
const factor = Math.round((servings / base) * 100) / 100;
|
|
40
|
-
const servingsNote = servings === base
|
|
41
|
-
? '按原份量 ' + base + ' 人份备料'
|
|
42
|
-
: '已按 ' + servings + ' 人份放大(原 ' + base + ' 人份,倍率 ' + factor + ',食材用量同倍)';
|
|
43
|
-
const h = args.history;
|
|
44
|
-
const historyHint = h && h.count > 0
|
|
45
|
-
? '做过 ' + h.count + ' 次' + (h.avgRating !== null && h.avgRating !== undefined ? ',平均评分 ' + h.avgRating : '') + ';本次做完请走 chef.history.record 记录'
|
|
46
|
-
: '还没做过;本次做完请走 chef.history.record 记录';
|
|
47
|
-
return { items: args.steps, total: args.steps.length, recipe: args.recipe, servingsNote, historyHint, steps: args.steps };
|
|
48
|
-
}
|
|
13
|
+
// 开做装配 `buildCookingRun` 已搬入 `src/cook/run.ts`(本域独占;旧址由 `src/render/index.ts` 转出)。
|
|
49
14
|
// 采购行复用 fetch ShoppingItem(跨菜合并行:name/quantity/unit/recipes),不另建影子类型。
|
|
50
|
-
//
|
|
51
|
-
|
|
52
|
-
const out = { items: args.items, total: args.items.length, recipes: args.recipes, excludeOptional: args.excludeOptional === true };
|
|
53
|
-
if (args.servings !== undefined)
|
|
54
|
-
out.servings = args.servings;
|
|
55
|
-
return out;
|
|
56
|
-
}
|
|
57
|
-
// 记做菜回执 receipt。
|
|
58
|
-
export function buildHistoryRecord(message) {
|
|
59
|
-
return { ok: true, message };
|
|
60
|
-
}
|
|
15
|
+
// 跨菜合并采购装配 `buildShopping` 已搬入 `src/shopping/run.ts`(本域独占;旧址由 `src/render/index.ts` 转出).
|
|
16
|
+
// 记做菜回执 `buildHistoryRecord` 已搬入 `src/history/run-record.ts`(本域独占;旧址由 `src/render/index.ts` 转出)。
|
|
61
17
|
// 查历史统一 list:timeline/stats/quality/backup 全作条目(单 key 单 shape=list)。
|
|
62
18
|
export function buildHistoryQuery(kind, items) {
|
|
63
19
|
return { items, total: items.length, kind };
|
|
64
20
|
}
|
|
65
|
-
export function toHistoryItem(h, recipeName) {
|
|
66
|
-
const out = { ...h };
|
|
67
|
-
if (recipeName !== undefined)
|
|
68
|
-
out.recipe_name = recipeName;
|
|
69
|
-
return out;
|
|
70
|
-
}
|
|
71
21
|
export function buildHelpItems(all, q) {
|
|
72
22
|
if (!q || !q.trim())
|
|
73
23
|
return { items: all, total: all.length };
|