skill-chef 0.3.1 → 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.
Files changed (183) hide show
  1. package/dist/add/commands.d.ts +15 -0
  2. package/dist/add/commands.d.ts.map +1 -0
  3. package/dist/add/commands.js +22 -0
  4. package/dist/add/commands.js.map +1 -0
  5. package/dist/add/index.d.ts +10 -0
  6. package/dist/add/index.d.ts.map +1 -0
  7. package/dist/add/index.js +10 -0
  8. package/dist/add/index.js.map +1 -0
  9. package/dist/add/routes.d.ts +11 -0
  10. package/dist/add/routes.d.ts.map +1 -0
  11. package/dist/add/routes.js +23 -0
  12. package/dist/add/routes.js.map +1 -0
  13. package/dist/add/run-write.d.ts +37 -0
  14. package/dist/add/run-write.d.ts.map +1 -0
  15. package/dist/add/run-write.js +187 -0
  16. package/dist/add/run-write.js.map +1 -0
  17. package/dist/cli/cmd_read.js +32 -289
  18. package/dist/cli/cmd_read.js.map +1 -1
  19. package/dist/cli/keys.d.ts +2 -1
  20. package/dist/cli/keys.d.ts.map +1 -1
  21. package/dist/cli/keys.js +37 -1
  22. package/dist/cli/keys.js.map +1 -1
  23. package/dist/cook/commands.d.ts +13 -0
  24. package/dist/cook/commands.d.ts.map +1 -0
  25. package/dist/cook/commands.js +21 -0
  26. package/dist/cook/commands.js.map +1 -0
  27. package/dist/cook/index.d.ts +9 -0
  28. package/dist/cook/index.d.ts.map +1 -0
  29. package/dist/cook/index.js +9 -0
  30. package/dist/cook/index.js.map +1 -0
  31. package/dist/cook/routes.d.ts +11 -0
  32. package/dist/cook/routes.d.ts.map +1 -0
  33. package/dist/cook/routes.js +35 -0
  34. package/dist/cook/routes.js.map +1 -0
  35. package/dist/cook/run.d.ts +24 -0
  36. package/dist/cook/run.d.ts.map +1 -0
  37. package/dist/cook/run.js +46 -0
  38. package/dist/cook/run.js.map +1 -0
  39. package/dist/data/commands.d.ts +12 -0
  40. package/dist/data/commands.d.ts.map +1 -0
  41. package/dist/data/commands.js +11 -0
  42. package/dist/data/commands.js.map +1 -0
  43. package/dist/data/index.d.ts +9 -0
  44. package/dist/data/index.d.ts.map +1 -0
  45. package/dist/data/index.js +9 -0
  46. package/dist/data/index.js.map +1 -0
  47. package/dist/data/routes.d.ts +12 -0
  48. package/dist/data/routes.d.ts.map +1 -0
  49. package/dist/data/routes.js +19 -0
  50. package/dist/data/routes.js.map +1 -0
  51. package/dist/data/run-query.d.ts +15 -0
  52. package/dist/data/run-query.d.ts.map +1 -0
  53. package/dist/data/run-query.js +73 -0
  54. package/dist/data/run-query.js.map +1 -0
  55. package/dist/fetch/db.d.ts +11 -31
  56. package/dist/fetch/db.d.ts.map +1 -1
  57. package/dist/fetch/db.js +39 -328
  58. package/dist/fetch/db.js.map +1 -1
  59. package/dist/fetch/index.d.ts +7 -1
  60. package/dist/fetch/index.d.ts.map +1 -1
  61. package/dist/fetch/index.js +9 -1
  62. package/dist/fetch/index.js.map +1 -1
  63. package/dist/fetch/schema.d.ts +7 -0
  64. package/dist/fetch/schema.d.ts.map +1 -0
  65. package/dist/fetch/schema.js +53 -0
  66. package/dist/fetch/schema.js.map +1 -0
  67. package/dist/history/index.d.ts +3 -2
  68. package/dist/history/index.d.ts.map +1 -1
  69. package/dist/history/index.js +3 -2
  70. package/dist/history/index.js.map +1 -1
  71. package/dist/history/run-query.d.ts +13 -0
  72. package/dist/history/run-query.d.ts.map +1 -0
  73. package/dist/history/run-query.js +44 -0
  74. package/dist/history/run-query.js.map +1 -0
  75. package/dist/history/run-record.d.ts +21 -0
  76. package/dist/history/run-record.d.ts.map +1 -0
  77. package/dist/history/run-record.js +71 -0
  78. package/dist/history/run-record.js.map +1 -0
  79. package/dist/relation/commands.d.ts +10 -0
  80. package/dist/relation/commands.d.ts.map +1 -0
  81. package/dist/relation/commands.js +9 -0
  82. package/dist/relation/commands.js.map +1 -0
  83. package/dist/relation/index.d.ts +8 -0
  84. package/dist/relation/index.d.ts.map +1 -0
  85. package/dist/relation/index.js +8 -0
  86. package/dist/relation/index.js.map +1 -0
  87. package/dist/relation/routes.d.ts +10 -0
  88. package/dist/relation/routes.d.ts.map +1 -0
  89. package/dist/relation/routes.js +28 -0
  90. package/dist/relation/routes.js.map +1 -0
  91. package/dist/render/index.d.ts +7 -1
  92. package/dist/render/index.d.ts.map +1 -1
  93. package/dist/render/index.js +9 -1
  94. package/dist/render/index.js.map +1 -1
  95. package/dist/render/views.d.ts +1 -39
  96. package/dist/render/views.d.ts.map +1 -1
  97. package/dist/render/views.js +6 -56
  98. package/dist/render/views.js.map +1 -1
  99. package/dist/search/commands.d.ts +14 -0
  100. package/dist/search/commands.d.ts.map +1 -0
  101. package/dist/search/commands.js +22 -0
  102. package/dist/search/commands.js.map +1 -0
  103. package/dist/search/index.d.ts +9 -0
  104. package/dist/search/index.d.ts.map +1 -0
  105. package/dist/search/index.js +9 -0
  106. package/dist/search/index.js.map +1 -0
  107. package/dist/search/routes.d.ts +11 -0
  108. package/dist/search/routes.d.ts.map +1 -0
  109. package/dist/search/routes.js +59 -0
  110. package/dist/search/routes.js.map +1 -0
  111. package/dist/search/run.d.ts +22 -0
  112. package/dist/search/run.d.ts.map +1 -0
  113. package/dist/search/run.js +105 -0
  114. package/dist/search/run.js.map +1 -0
  115. package/dist/setup/commands.d.ts +10 -0
  116. package/dist/setup/commands.d.ts.map +1 -0
  117. package/dist/setup/commands.js +9 -0
  118. package/dist/setup/commands.js.map +1 -0
  119. package/dist/setup/index.d.ts +8 -0
  120. package/dist/setup/index.d.ts.map +1 -0
  121. package/dist/setup/index.js +8 -0
  122. package/dist/setup/index.js.map +1 -0
  123. package/dist/setup/routes.d.ts +10 -0
  124. package/dist/setup/routes.d.ts.map +1 -0
  125. package/dist/setup/routes.js +16 -0
  126. package/dist/setup/routes.js.map +1 -0
  127. package/dist/shared/command-spec.d.ts +42 -0
  128. package/dist/shared/command-spec.d.ts.map +1 -0
  129. package/dist/shared/command-spec.js +15 -0
  130. package/dist/shared/command-spec.js.map +1 -0
  131. package/dist/shared/slots.d.ts +24 -0
  132. package/dist/shared/slots.d.ts.map +1 -0
  133. package/dist/shared/slots.js +63 -0
  134. package/dist/shared/slots.js.map +1 -0
  135. package/dist/shopping/commands.d.ts +13 -0
  136. package/dist/shopping/commands.d.ts.map +1 -0
  137. package/dist/shopping/commands.js +21 -0
  138. package/dist/shopping/commands.js.map +1 -0
  139. package/dist/shopping/index.d.ts +9 -0
  140. package/dist/shopping/index.d.ts.map +1 -0
  141. package/dist/shopping/index.js +9 -0
  142. package/dist/shopping/index.js.map +1 -0
  143. package/dist/shopping/routes.d.ts +11 -0
  144. package/dist/shopping/routes.d.ts.map +1 -0
  145. package/dist/shopping/routes.js +35 -0
  146. package/dist/shopping/routes.js.map +1 -0
  147. package/dist/shopping/run.d.ts +24 -0
  148. package/dist/shopping/run.d.ts.map +1 -0
  149. package/dist/shopping/run.js +74 -0
  150. package/dist/shopping/run.js.map +1 -0
  151. package/dist/update/commands.d.ts +12 -0
  152. package/dist/update/commands.d.ts.map +1 -0
  153. package/dist/update/commands.js +11 -0
  154. package/dist/update/commands.js.map +1 -0
  155. package/dist/update/index.d.ts +9 -0
  156. package/dist/update/index.d.ts.map +1 -0
  157. package/dist/update/index.js +9 -0
  158. package/dist/update/index.js.map +1 -0
  159. package/dist/update/routes.d.ts +12 -0
  160. package/dist/update/routes.d.ts.map +1 -0
  161. package/dist/update/routes.js +24 -0
  162. package/dist/update/routes.js.map +1 -0
  163. package/dist/update/run-write.d.ts +19 -0
  164. package/dist/update/run-write.d.ts.map +1 -0
  165. package/dist/update/run-write.js +99 -0
  166. package/dist/update/run-write.js.map +1 -0
  167. package/dist/view/commands.d.ts +14 -0
  168. package/dist/view/commands.d.ts.map +1 -0
  169. package/dist/view/commands.js +22 -0
  170. package/dist/view/commands.js.map +1 -0
  171. package/dist/view/index.d.ts +9 -0
  172. package/dist/view/index.d.ts.map +1 -0
  173. package/dist/view/index.js +9 -0
  174. package/dist/view/index.js.map +1 -0
  175. package/dist/view/routes.d.ts +11 -0
  176. package/dist/view/routes.d.ts.map +1 -0
  177. package/dist/view/routes.js +53 -0
  178. package/dist/view/routes.js.map +1 -0
  179. package/dist/view/run.d.ts +13 -0
  180. package/dist/view/run.d.ts.map +1 -0
  181. package/dist/view/run.js +34 -0
  182. package/dist/view/run.js.map +1 -0
  183. package/package.json +3 -3
@@ -0,0 +1,14 @@
1
+ /** 搜索筛选能力的命令声明(权威源:一条命令的事实只住这里)。
2
+ *
3
+ * 本能力即 HELP 一级分组「搜索筛选」。一条命令管一摊:
4
+ * · `chef.recipe.search`(查询命令):查看全部/搜索食谱/搜菜/查食材/筛选菜系/筛选食材/
5
+ * 筛选口味/筛选季节八句唤醒词都进这一条。
6
+ * 处理函数仍在老分派层(`src/cli/cmd_read.ts`),本票只立声明不搬实现——行为不变,
7
+ * 实现下沉由搜索筛选域端到端票接走(本文件不动,后续只加 run)。
8
+ *
9
+ * 标题与代表唤醒词取 HELP 现成说法,示例照 `packages/skill-chef/SKILL.md` 同命令行照抄。
10
+ */
11
+ import type { CommandSpec } from '../shared/command-spec.js';
12
+ /** 搜索筛选能力的声明表:恰好导出一个声明数组(生成器只认这一个)。 */
13
+ export declare const SEARCH_COMMANDS: readonly CommandSpec[];
14
+ //# sourceMappingURL=commands.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../../src/search/commands.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAE7D,uCAAuC;AACvC,eAAO,MAAM,eAAe,EAAE,SAAS,WAAW,EASjD,CAAC"}
@@ -0,0 +1,22 @@
1
+ /** 搜索筛选能力的命令声明(权威源:一条命令的事实只住这里)。
2
+ *
3
+ * 本能力即 HELP 一级分组「搜索筛选」。一条命令管一摊:
4
+ * · `chef.recipe.search`(查询命令):查看全部/搜索食谱/搜菜/查食材/筛选菜系/筛选食材/
5
+ * 筛选口味/筛选季节八句唤醒词都进这一条。
6
+ * 处理函数仍在老分派层(`src/cli/cmd_read.ts`),本票只立声明不搬实现——行为不变,
7
+ * 实现下沉由搜索筛选域端到端票接走(本文件不动,后续只加 run)。
8
+ *
9
+ * 标题与代表唤醒词取 HELP 现成说法,示例照 `packages/skill-chef/SKILL.md` 同命令行照抄。
10
+ */
11
+ /** 搜索筛选能力的声明表:恰好导出一个声明数组(生成器只认这一个)。 */
12
+ export const SEARCH_COMMANDS = [
13
+ {
14
+ kind: 'read',
15
+ key: 'chef.recipe.search',
16
+ shape: 'list',
17
+ title: '搜索食谱',
18
+ wakeWord: '搜索食谱',
19
+ example: 'chef-cmd-read chef.recipe.search --params \'{"q":"排骨"}\'',
20
+ },
21
+ ];
22
+ //# sourceMappingURL=commands.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"commands.js","sourceRoot":"","sources":["../../src/search/commands.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,uCAAuC;AACvC,MAAM,CAAC,MAAM,eAAe,GAA2B;IACrD;QACE,IAAI,EAAE,MAAM;QACZ,GAAG,EAAE,oBAAoB;QACzB,KAAK,EAAE,MAAM;QACb,KAAK,EAAE,MAAM;QACb,QAAQ,EAAE,MAAM;QAChB,OAAO,EAAE,0DAA0D;KACpE;CACF,CAAC"}
@@ -0,0 +1,9 @@
1
+ /** 搜索筛选能力门:能力对外只经这里(结构纪律铁律一、铁律五)。
2
+ *
3
+ * 对外两件:命令声明表与路由声明表。处理函数与取数实现不在这里,
4
+ * 本票只立声明;外边要用搜索筛选能力的东西,只经这两个名字。
5
+ */
6
+ export { SEARCH_COMMANDS } from './commands.js';
7
+ export { SEARCH_ROUTES } from './routes.js';
8
+ export { FILTER_KEYS, buildRecipeSearch, filterRecipes, runRecipeSearch, searchRecipes } from './run.js';
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/search/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,aAAa,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC"}
@@ -0,0 +1,9 @@
1
+ /** 搜索筛选能力门:能力对外只经这里(结构纪律铁律一、铁律五)。
2
+ *
3
+ * 对外两件:命令声明表与路由声明表。处理函数与取数实现不在这里,
4
+ * 本票只立声明;外边要用搜索筛选能力的东西,只经这两个名字。
5
+ */
6
+ export { SEARCH_COMMANDS } from './commands.js';
7
+ export { SEARCH_ROUTES } from './routes.js';
8
+ export { FILTER_KEYS, buildRecipeSearch, filterRecipes, runRecipeSearch, searchRecipes } from './run.js';
9
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/search/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,aAAa,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC"}
@@ -0,0 +1,11 @@
1
+ /** 搜索筛选能力的路由声明(唤醒词命中哪条命令,声明面唯一一处)。
2
+ *
3
+ * 八行对应 `src/policy/wakewords.ts` 里搜索筛选八句唤醒词:查看全部/搜索食谱/搜菜/查食材/
4
+ * 筛选菜系/筛选食材/筛选口味/筛选季节都进 `chef.recipe.search`。`order` 取唤醒词表 1-based
5
+ * 下标(12–19),只保证跨域可比;全表级顺序由场景表定,本文件不另立顺序。
6
+ * 命令行写法照 `packages/skill-chef/SKILL.md` 同命令示例(空库可跑的那一行)。
7
+ */
8
+ import type { RouteDecl } from '../shared/command-spec.js';
9
+ /** 搜索筛选能力的路由声明表:恰好导出一个声明数组。 */
10
+ export declare const SEARCH_ROUTES: readonly RouteDecl[];
11
+ //# sourceMappingURL=routes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"routes.d.ts","sourceRoot":"","sources":["../../src/search/routes.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAE3D,+BAA+B;AAC/B,eAAO,MAAM,aAAa,EAAE,SAAS,SAAS,EAiD7C,CAAC"}
@@ -0,0 +1,59 @@
1
+ /** 搜索筛选能力的路由声明(唤醒词命中哪条命令,声明面唯一一处)。
2
+ *
3
+ * 八行对应 `src/policy/wakewords.ts` 里搜索筛选八句唤醒词:查看全部/搜索食谱/搜菜/查食材/
4
+ * 筛选菜系/筛选食材/筛选口味/筛选季节都进 `chef.recipe.search`。`order` 取唤醒词表 1-based
5
+ * 下标(12–19),只保证跨域可比;全表级顺序由场景表定,本文件不另立顺序。
6
+ * 命令行写法照 `packages/skill-chef/SKILL.md` 同命令示例(空库可跑的那一行)。
7
+ */
8
+ /** 搜索筛选能力的路由声明表:恰好导出一个声明数组。 */
9
+ export const SEARCH_ROUTES = [
10
+ {
11
+ order: 12,
12
+ wakeWord: '查看全部',
13
+ key: 'chef.recipe.search',
14
+ cli: 'chef-cmd-read chef.recipe.search --params \'{"kind":"all"}\'',
15
+ },
16
+ {
17
+ order: 13,
18
+ wakeWord: '搜索食谱',
19
+ key: 'chef.recipe.search',
20
+ cli: 'chef-cmd-read chef.recipe.search --params \'{"q":"排骨"}\'',
21
+ },
22
+ {
23
+ order: 14,
24
+ wakeWord: '搜菜',
25
+ key: 'chef.recipe.search',
26
+ cli: 'chef-cmd-read chef.recipe.search --params \'{"q":"排骨"}\'',
27
+ },
28
+ {
29
+ order: 15,
30
+ wakeWord: '查食材',
31
+ key: 'chef.recipe.search',
32
+ cli: 'chef-cmd-read chef.recipe.search --params \'{"q":"排骨"}\'',
33
+ },
34
+ {
35
+ order: 16,
36
+ wakeWord: '筛选菜系',
37
+ key: 'chef.recipe.search',
38
+ cli: 'chef-cmd-read chef.recipe.search --params \'{"filter":"川菜"}\'',
39
+ },
40
+ {
41
+ order: 17,
42
+ wakeWord: '筛选食材',
43
+ key: 'chef.recipe.search',
44
+ cli: 'chef-cmd-read chef.recipe.search --params \'{"filter":"川菜"}\'',
45
+ },
46
+ {
47
+ order: 18,
48
+ wakeWord: '筛选口味',
49
+ key: 'chef.recipe.search',
50
+ cli: 'chef-cmd-read chef.recipe.search --params \'{"filter":"川菜"}\'',
51
+ },
52
+ {
53
+ order: 19,
54
+ wakeWord: '筛选季节',
55
+ key: 'chef.recipe.search',
56
+ cli: 'chef-cmd-read chef.recipe.search --params \'{"filter":"川菜"}\'',
57
+ },
58
+ ];
59
+ //# sourceMappingURL=routes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"routes.js","sourceRoot":"","sources":["../../src/search/routes.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,+BAA+B;AAC/B,MAAM,CAAC,MAAM,aAAa,GAAyB;IACjD;QACE,KAAK,EAAE,EAAE;QACT,QAAQ,EAAE,MAAM;QAChB,GAAG,EAAE,oBAAoB;QACzB,GAAG,EAAE,8DAA8D;KACpE;IACD;QACE,KAAK,EAAE,EAAE;QACT,QAAQ,EAAE,MAAM;QAChB,GAAG,EAAE,oBAAoB;QACzB,GAAG,EAAE,0DAA0D;KAChE;IACD;QACE,KAAK,EAAE,EAAE;QACT,QAAQ,EAAE,IAAI;QACd,GAAG,EAAE,oBAAoB;QACzB,GAAG,EAAE,0DAA0D;KAChE;IACD;QACE,KAAK,EAAE,EAAE;QACT,QAAQ,EAAE,KAAK;QACf,GAAG,EAAE,oBAAoB;QACzB,GAAG,EAAE,0DAA0D;KAChE;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,+DAA+D;KACrE;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,+DAA+D;KACrE;CACF,CAAC"}
@@ -0,0 +1,22 @@
1
+ /** 搜索筛选能力的命令处理(`chef.recipe.search`)+ 本域独占的取数与视图装配。
2
+ *
3
+ * 老分派层(`src/cli/cmd_read.ts`)分支逐字节下沉:只改 import 出处,判定与装配一字不动。
4
+ * `searchRecipes`/`filterRecipes`(原 `src/fetch/db.ts`)与 `buildRecipeSearch`
5
+ * (原 `src/render/views.ts`)只被本域调用,按“写不出的留回域目录”搬入本文件;
6
+ * 旧址改转出(搬迁债务,见 `src/fetch/index.ts`/`src/render/index.ts`)。
7
+ */
8
+ import type { ChefDb, RecipeRow } from '../fetch/db.js';
9
+ import type { RecipeItem } from '../render/views.js';
10
+ export declare const FILTER_KEYS: readonly ["cuisine", "season", "method", "flavor", "tag", "meal", "cookware", "difficulty", "status", "maxTime", "filter"];
11
+ /** 按关键词搜菜名/简介/食材名(空查询不返全量,直接拦)。原 `src/fetch/db.ts`,本域独占。 */
12
+ export declare function searchRecipes(h: ChefDb, kw: string): RecipeRow[];
13
+ /** 按维度过滤(维度表只读透传)。原 `src/fetch/db.ts`,本域独占。 */
14
+ export declare function filterRecipes(h: ChefDb, filters?: Record<string, unknown>): RecipeRow[];
15
+ export declare function buildRecipeSearch(kind: string, items: RecipeItem[]): {
16
+ items: RecipeItem[];
17
+ total: number;
18
+ kind: string;
19
+ };
20
+ /** 跑 `chef.recipe.search`:关键词搜/查全部/维度过滤三路(list 形)。空结果缺失阻断,不返空冒充。 */
21
+ export declare function runRecipeSearch(handle: ChefDb, params: Record<string, unknown>): unknown;
22
+ //# sourceMappingURL=run.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../src/search/run.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAExD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAKrD,eAAO,MAAM,WAAW,4HAA6H,CAAC;AAEtJ,4DAA4D;AAC5D,wBAAgB,aAAa,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,SAAS,EAAE,CAOhE;AAED,+CAA+C;AAC/C,wBAAgB,aAAa,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,GAAG,SAAS,EAAE,CAoB3F;AAGD,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG;IAAE,KAAK,EAAE,UAAU,EAAE,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAEzH;AAED,oEAAoE;AACpE,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CA4BxF"}
@@ -0,0 +1,105 @@
1
+ /** 搜索筛选能力的命令处理(`chef.recipe.search`)+ 本域独占的取数与视图装配。
2
+ *
3
+ * 老分派层(`src/cli/cmd_read.ts`)分支逐字节下沉:只改 import 出处,判定与装配一字不动。
4
+ * `searchRecipes`/`filterRecipes`(原 `src/fetch/db.ts`)与 `buildRecipeSearch`
5
+ * (原 `src/render/views.ts`)只被本域调用,按“写不出的留回域目录”搬入本文件;
6
+ * 旧址改转出(搬迁债务,见 `src/fetch/index.ts`/`src/render/index.ts`)。
7
+ */
8
+ import { ChefFetchError } from '../fetch/errors.js';
9
+ import { listRecipes, qAll, toRecipe } from '../fetch/db.js';
10
+ import { toRecipeItem } from '../render/views.js';
11
+ import { fail } from '../shared/slots.js';
12
+ // #43 F2 一期限制:FILTER 维度只读(recipe.search 透传过滤),本域独占(旧址 `cmd_read.ts`)。
13
+ export const FILTER_KEYS = ['cuisine', 'season', 'method', 'flavor', 'tag', 'meal', 'cookware', 'difficulty', 'status', 'maxTime', 'filter'];
14
+ /** 按关键词搜菜名/简介/食材名(空查询不返全量,直接拦)。原 `src/fetch/db.ts`,本域独占。 */
15
+ export function searchRecipes(h, kw) {
16
+ if (typeof kw !== 'string' || kw.trim().length === 0) {
17
+ throw new ChefFetchError('CHEF_BAD_QUERY', '搜索须给关键词(空查询不返全量)');
18
+ }
19
+ const k = '%' + kw.trim() + '%';
20
+ const rows = qAll(h, "SELECT DISTINCT r.* FROM recipes r LEFT JOIN ingredients i ON i.recipe_id = r.id WHERE (r.name LIKE ? OR r.description LIKE ? OR i.name LIKE ?) AND r.status != '已废弃' ORDER BY r.name ASC", [k, k, k]);
21
+ return rows.map(toRecipe);
22
+ }
23
+ /** 按维度过滤(维度表只读透传)。原 `src/fetch/db.ts`,本域独占。 */
24
+ export function filterRecipes(h, filters = {}) {
25
+ const conds = ['1=1'];
26
+ const params = [];
27
+ if (filters.status !== undefined && filters.status !== '') {
28
+ conds.push('r.status = ?');
29
+ params.push(String(filters.status));
30
+ }
31
+ else
32
+ conds.push("r.status != '已废弃'");
33
+ if (filters.difficulty !== undefined && filters.difficulty !== '') {
34
+ conds.push('r.difficulty = ?');
35
+ params.push(String(filters.difficulty));
36
+ }
37
+ if (filters.maxTime !== undefined && filters.maxTime !== '') {
38
+ conds.push('r.total_time_minutes <= ?');
39
+ params.push(Number(filters.maxTime));
40
+ }
41
+ const exists = (table, col, val) => {
42
+ conds.push('EXISTS (SELECT 1 FROM ' + table + ' t WHERE t.recipe_id = r.id AND t.' + col + ' = ?)');
43
+ params.push(String(val));
44
+ };
45
+ if (filters.cuisine !== undefined && filters.cuisine !== '')
46
+ exists('recipe_categories', 'cuisine_type', filters.cuisine);
47
+ if (filters.season !== undefined && filters.season !== '')
48
+ exists('recipe_seasons', 'season', filters.season);
49
+ if (filters.method !== undefined && filters.method !== '')
50
+ exists('recipe_cooking_methods', 'method', filters.method);
51
+ if (filters.flavor !== undefined && filters.flavor !== '')
52
+ exists('recipe_flavors', 'flavor', filters.flavor);
53
+ if (filters.tag !== undefined && filters.tag !== '')
54
+ exists('recipe_diet_tags', 'tag', filters.tag);
55
+ if (filters.meal !== undefined && filters.meal !== '')
56
+ exists('recipe_meal_types', 'meal_type', filters.meal);
57
+ if (filters.cookware !== undefined && filters.cookware !== '')
58
+ exists('cookware', 'name', filters.cookware);
59
+ const rows = qAll(h, 'SELECT DISTINCT r.* FROM recipes r WHERE ' + conds.join(' AND ') + ' ORDER BY r.name ASC', params);
60
+ return rows.map(toRecipe);
61
+ }
62
+ // 搜菜/筛菜/全部:items + total + kind。原 `src/render/views.ts`,本域独占。
63
+ export function buildRecipeSearch(kind, items) {
64
+ return { items, total: items.length, kind };
65
+ }
66
+ /** 跑 `chef.recipe.search`:关键词搜/查全部/维度过滤三路(list 形)。空结果缺失阻断,不返空冒充。 */
67
+ export function runRecipeSearch(handle, params) {
68
+ const q = params.q;
69
+ let rows;
70
+ let kind;
71
+ if (typeof q === 'string' && q.trim()) {
72
+ rows = searchRecipes(handle, q.trim());
73
+ kind = 'search:' + q.trim();
74
+ }
75
+ else if (params.kind === 'all') {
76
+ rows = listRecipes(handle);
77
+ kind = 'all';
78
+ }
79
+ else {
80
+ const present = FILTER_KEYS.filter((k) => params[k] !== undefined && params[k] !== '');
81
+ if (!present.length)
82
+ fail(2, 'search 须给 q、kind=all,或过滤条件(cuisine/season/method/flavor/tag/meal/cookware/difficulty/status/maxTime/filter)');
83
+ const f = {};
84
+ for (const k of ['cuisine', 'season', 'method', 'flavor', 'tag', 'meal', 'cookware', 'difficulty', 'status', 'maxTime']) {
85
+ const v = params[k];
86
+ if (v !== undefined && v !== '')
87
+ f[k] = typeof v === 'string' ? v.trim() : v;
88
+ }
89
+ // 别名:filter=通用筛选(川菜类示例按菜系走,与 HELP 示例对齐);time_max/time=最大用时别名。
90
+ if (f.cuisine === undefined && typeof params.filter === 'string' && params.filter.trim())
91
+ f.cuisine = params.filter.trim();
92
+ if (f.maxTime === undefined && params.time_max !== undefined && params.time_max !== '')
93
+ f.maxTime = params.time_max;
94
+ if (f.maxTime === undefined && params.time !== undefined && params.time !== '')
95
+ f.maxTime = params.time;
96
+ if (!Object.keys(f).length)
97
+ fail(2, 'search 过滤条件为空(须给 cuisine/season/method/flavor/tag/meal/cookware/difficulty/status/maxTime/filter 之一)');
98
+ rows = filterRecipes(handle, f);
99
+ kind = 'filter:' + Object.keys(f).sort().join(',');
100
+ }
101
+ if (!rows.length)
102
+ throw new ChefFetchError('CHEF_EMPTY_RESULT', '搜菜无结果(缺失阻断,不返空冒充)');
103
+ return buildRecipeSearch(kind, rows.map(toRecipeItem));
104
+ }
105
+ //# sourceMappingURL=run.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/search/run.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ /** 开始使用能力的命令声明(空):本域暂无 key。
2
+ *
3
+ * 本能力即 HELP 一级分组「开始使用」。`首次使用`短语在 #767 资产里去向为 `tbd`
4
+ * (不可路由)——运行时无 key、无实现。空数组仍是「恰好一个声明数组」(生成器认它为一域,
5
+ * 来源域名单里有 `setup`),开始使用端到端票接入 key 时再填。
6
+ */
7
+ import type { CommandSpec } from '../shared/command-spec.js';
8
+ /** 开始使用能力的声明表:恰好导出一个声明数组(生成器只认这一个;本域暂空)。 */
9
+ export declare const SETUP_COMMANDS: readonly CommandSpec[];
10
+ //# sourceMappingURL=commands.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../../src/setup/commands.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAE7D,4CAA4C;AAC5C,eAAO,MAAM,cAAc,EAAE,SAAS,WAAW,EAAO,CAAC"}
@@ -0,0 +1,9 @@
1
+ /** 开始使用能力的命令声明(空):本域暂无 key。
2
+ *
3
+ * 本能力即 HELP 一级分组「开始使用」。`首次使用`短语在 #767 资产里去向为 `tbd`
4
+ * (不可路由)——运行时无 key、无实现。空数组仍是「恰好一个声明数组」(生成器认它为一域,
5
+ * 来源域名单里有 `setup`),开始使用端到端票接入 key 时再填。
6
+ */
7
+ /** 开始使用能力的声明表:恰好导出一个声明数组(生成器只认这一个;本域暂空)。 */
8
+ export const SETUP_COMMANDS = [];
9
+ //# sourceMappingURL=commands.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"commands.js","sourceRoot":"","sources":["../../src/setup/commands.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,4CAA4C;AAC5C,MAAM,CAAC,MAAM,cAAc,GAA2B,EAAE,CAAC"}
@@ -0,0 +1,8 @@
1
+ /** 开始使用能力门:能力对外只经这里(结构纪律铁律一、铁律五)。
2
+ *
3
+ * 对外两件:命令声明表(暂空)与路由声明表(全 tbd)。处理函数与取数实现不在这里,
4
+ * 本票只立声明;外边要用开始使用能力的东西,只经这两个名字。
5
+ */
6
+ export { SETUP_COMMANDS } from './commands.js';
7
+ export { SETUP_ROUTES } from './routes.js';
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/setup/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC"}
@@ -0,0 +1,8 @@
1
+ /** 开始使用能力门:能力对外只经这里(结构纪律铁律一、铁律五)。
2
+ *
3
+ * 对外两件:命令声明表(暂空)与路由声明表(全 tbd)。处理函数与取数实现不在这里,
4
+ * 本票只立声明;外边要用开始使用能力的东西,只经这两个名字。
5
+ */
6
+ export { SETUP_COMMANDS } from './commands.js';
7
+ export { SETUP_ROUTES } from './routes.js';
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/setup/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,YAAY,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 SETUP_ROUTES: readonly RouteDecl[];
10
+ //# sourceMappingURL=routes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"routes.d.ts","sourceRoot":"","sources":["../../src/setup/routes.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAE3D,8CAA8C;AAC9C,eAAO,MAAM,YAAY,EAAE,SAAS,SAAS,EAO5C,CAAC"}
@@ -0,0 +1,16 @@
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 SETUP_ROUTES = [
9
+ {
10
+ order: 0,
11
+ wakeWord: '首次使用',
12
+ key: 'tbd',
13
+ cli: '',
14
+ },
15
+ ];
16
+ //# sourceMappingURL=routes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"routes.js","sourceRoot":"","sources":["../../src/setup/routes.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,8CAA8C;AAC9C,MAAM,CAAC,MAAM,YAAY,GAAyB;IAChD;QACE,KAAK,EAAE,CAAC;QACR,QAAQ,EAAE,MAAM;QAChB,GAAG,EAAE,KAAK;QACV,GAAG,EAAE,EAAE;KACR;CACF,CAAC"}
@@ -0,0 +1,42 @@
1
+ /** 整包命令声明与路由声明的形状唯一定义地(#839 整包落位票统一;票 1 试点时各域本地最小定义,见 t766-形状.md)。
2
+ *
3
+ * 为什么住这儿:9 个新域的 `commands.ts`/`routes.ts` 是同一件事实的九处落点,
4
+ * 行形状(六字段/四字段)若各写一份,迟早走散(铁律二)。本件只定形状、不断言内容:
5
+ * 内容的权威仍是各域自己的声明数组;生成器(`scripts/gen-cli.mjs`)读源码文本,
6
+ * 与类型名无关,加本件不影响派生链。历史域两件(票 1 试点)按本票报备的“零改动一字不动”
7
+ * 保留本地同形类型(形状一致、生成器无感),后续域票顺手摆正,不在本票动它。
8
+ *
9
+ * 字段口径照命令登记纪律形状一:会改数据库的命令不写 `shape`(一律回执形,
10
+ * 那件事实的唯一定义地是生成器合成的 `src/cli/keys.ts`);查询命令写 `shape`。
11
+ * 代表唤醒词与可执行示例须是真词真串:代表词进 `src/policy/wakewords.ts` 的那张表即命中同命令,
12
+ * 示例照 `packages/skill-chef/SKILL.md` 的同命令行照抄。
13
+ */
14
+ import type { EnvelopeShape } from 'base-link-core';
15
+ /** 一条命令的声明行形状(各域 `commands.ts` 数组元素的形状)。 */
16
+ export type CommandSpec = {
17
+ readonly kind: 'read';
18
+ readonly key: string;
19
+ readonly shape: EnvelopeShape;
20
+ readonly title: string;
21
+ readonly wakeWord?: string;
22
+ readonly example: string;
23
+ } | {
24
+ readonly kind: 'write';
25
+ readonly key: string;
26
+ readonly title: string;
27
+ readonly wakeWord?: string;
28
+ readonly example: string;
29
+ };
30
+ /** 一条路由的声明行形状(各域 `routes.ts` 数组元素的形状)。
31
+ *
32
+ * `order` 取 `WAKE_TABLE` 的 1-based 下标(跨域可比,全表级顺序由场景表定);
33
+ * 暂未入表的短语(`备份`/派生三组/`首次使用`)取 `order: 0` 并在行注释写明待接入,
34
+ * 对账脚本认 `order: 0` 为 tbd 行(`key: 'tbd'` 或注释点名去向)。
35
+ */
36
+ export interface RouteDecl {
37
+ readonly order: number;
38
+ readonly wakeWord: string;
39
+ readonly key: string;
40
+ readonly cli: string;
41
+ }
42
+ //# sourceMappingURL=command-spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"command-spec.d.ts","sourceRoot":"","sources":["../../src/shared/command-spec.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAEpD,4CAA4C;AAC5C,MAAM,MAAM,WAAW,GACnB;IACE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC;IAC9B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B,GACD;IACE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B,CAAC;AAEN;;;;;GAKG;AACH,MAAM,WAAW,SAAS;IACxB,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"}
@@ -0,0 +1,15 @@
1
+ /** 整包命令声明与路由声明的形状唯一定义地(#839 整包落位票统一;票 1 试点时各域本地最小定义,见 t766-形状.md)。
2
+ *
3
+ * 为什么住这儿:9 个新域的 `commands.ts`/`routes.ts` 是同一件事实的九处落点,
4
+ * 行形状(六字段/四字段)若各写一份,迟早走散(铁律二)。本件只定形状、不断言内容:
5
+ * 内容的权威仍是各域自己的声明数组;生成器(`scripts/gen-cli.mjs`)读源码文本,
6
+ * 与类型名无关,加本件不影响派生链。历史域两件(票 1 试点)按本票报备的“零改动一字不动”
7
+ * 保留本地同形类型(形状一致、生成器无感),后续域票顺手摆正,不在本票动它。
8
+ *
9
+ * 字段口径照命令登记纪律形状一:会改数据库的命令不写 `shape`(一律回执形,
10
+ * 那件事实的唯一定义地是生成器合成的 `src/cli/keys.ts`);查询命令写 `shape`。
11
+ * 代表唤醒词与可执行示例须是真词真串:代表词进 `src/policy/wakewords.ts` 的那张表即命中同命令,
12
+ * 示例照 `packages/skill-chef/SKILL.md` 的同命令行照抄。
13
+ */
14
+ export {};
15
+ //# sourceMappingURL=command-spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"command-spec.js","sourceRoot":"","sources":["../../src/shared/command-spec.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG"}
@@ -0,0 +1,24 @@
1
+ /** 分派层共享的槽位与参数原语(#839 整包落位票下沉)。
2
+ *
3
+ * 住这儿的都是**至少两个域的处理函数在调**的东西(具名用户见各函数注释):
4
+ * 按“共用位是从第二个用法里长出来的”长在这里。入口(`src/cli/cmd_read.ts`)的同名 local 已删,
5
+ * 改为引用这里——`fail` 只有一个定义地(`src/cli/config.ts` 既有的那份 local 不动,不在本票范围)。
6
+ *
7
+ * 逐字节等价说明:`fail` 仍是 `console.error + process.exit`(直退,不经 catch),
8
+ * 与搬迁前各分支调的同一函数同一语义;`resolveNameOrId` 的任务口径(缺失走取数错 exit 4)
9
+ * 与 `policy/needNameOrId` 的口径差异原样保留(注释随函数一起搬下来)。
10
+ */
11
+ import type { ChefDb } from '../fetch/db.js';
12
+ /** 入口失败原语:stderr 一行+按码退出(直退,不抛)。用户:入口参数解析/预检+各域 run。 */
13
+ export declare function fail(code: number, msg: string): never;
14
+ /** 入口备注原语:stderr 一行 NOTE(不退出)。用户:注册表开库提示+采购分支的库存提示。 */
15
+ export declare function note(msg: string): void;
16
+ export declare function resolveNameOrId(params: Record<string, unknown>): string;
17
+ export declare function resolveRecipeId(handle: ChefDb, params: Record<string, unknown>): string;
18
+ /** 取字符串参数(直给,非串即 undefined)。用户:add/update 两域的 run-write(补丁字段拾取)。 */
19
+ export declare function pickStr(params: Record<string, unknown>, key: string): string | undefined;
20
+ /** 取数字参数(数字或数字串,非数即 undefined)。用户:add/update 两域的 run-write(补丁字段拾取)。 */
21
+ export declare function pickNum(params: Record<string, unknown>, key: string): number | undefined;
22
+ /** 取份数参数(servings 未给即 undefined;非法直退 exit 2)。用户:cook/shopping 两域的 run(份数放大)。 */
23
+ export declare function needServings(params: Record<string, unknown>): number | undefined;
24
+ //# sourceMappingURL=slots.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"slots.d.ts","sourceRoot":"","sources":["../../src/shared/slots.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAG7C,wDAAwD;AACxD,wBAAgB,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,KAAK,CAAmE;AAEzH,uDAAuD;AACvD,wBAAgB,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAmC;AAI1E,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAOvE;AAID,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAMvF;AAED,oEAAoE;AACpE,wBAAgB,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAGxF;AAED,uEAAuE;AACvE,wBAAgB,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAKxF;AAED,gFAAgF;AAChF,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,GAAG,SAAS,CAKhF"}
@@ -0,0 +1,63 @@
1
+ /** 分派层共享的槽位与参数原语(#839 整包落位票下沉)。
2
+ *
3
+ * 住这儿的都是**至少两个域的处理函数在调**的东西(具名用户见各函数注释):
4
+ * 按“共用位是从第二个用法里长出来的”长在这里。入口(`src/cli/cmd_read.ts`)的同名 local 已删,
5
+ * 改为引用这里——`fail` 只有一个定义地(`src/cli/config.ts` 既有的那份 local 不动,不在本票范围)。
6
+ *
7
+ * 逐字节等价说明:`fail` 仍是 `console.error + process.exit`(直退,不经 catch),
8
+ * 与搬迁前各分支调的同一函数同一语义;`resolveNameOrId` 的任务口径(缺失走取数错 exit 4)
9
+ * 与 `policy/needNameOrId` 的口径差异原样保留(注释随函数一起搬下来)。
10
+ */
11
+ import { ChefFetchError, ChefPolicyError } from '../fetch/errors.js';
12
+ import { getRecipeDetail } from '../fetch/db.js';
13
+ /** 入口失败原语:stderr 一行+按码退出(直退,不抛)。用户:入口参数解析/预检+各域 run。 */
14
+ export function fail(code, msg) { console.error('ERR ' + code + ': ' + msg); process.exit(code); }
15
+ /** 入口备注原语:stderr 一行 NOTE(不退出)。用户:注册表开库提示+采购分支的库存提示。 */
16
+ export function note(msg) { console.error('NOTE: ' + msg); }
17
+ // 查看定位:nameOrId(任务口径)兼容 name/id(policy needNameOrId 口径);缺失走取数错 exit4(任务要求缺失抛4)。
18
+ // 用户:view/cook/update/history/add 五个域的 run(定位一道菜)。
19
+ export function resolveNameOrId(params) {
20
+ const cands = [params.nameOrId, params.name, params.id];
21
+ for (const c of cands) {
22
+ if (typeof c === 'string' && c.trim())
23
+ return c.trim();
24
+ if (typeof c === 'number' && Number.isFinite(c))
25
+ return String(c);
26
+ }
27
+ throw new ChefFetchError('CHEF_BAD_QUERY', '须给 nameOrId(菜名或 id,缺失阻断)');
28
+ }
29
+ // recipe_id 定位:recipe_id 直给,或 recipe_name 解析;缺失阻断。
30
+ // 用户:add/update 两域的 run-write(加食材/加步骤定位母菜)。
31
+ export function resolveRecipeId(handle, params) {
32
+ const rid = params.recipe_id;
33
+ if (typeof rid === 'string' && rid.trim())
34
+ return rid.trim();
35
+ const rn = params.recipe_name;
36
+ if (typeof rn === 'string' && rn.trim())
37
+ return getRecipeDetail(handle, rn.trim()).recipe.id;
38
+ throw new ChefPolicyError('POLICY_MISSING_SLOT', '须给 recipe_id(或 recipe_name 解析)');
39
+ }
40
+ /** 取字符串参数(直给,非串即 undefined)。用户:add/update 两域的 run-write(补丁字段拾取)。 */
41
+ export function pickStr(params, key) {
42
+ const v = params[key];
43
+ return typeof v === 'string' ? v : undefined;
44
+ }
45
+ /** 取数字参数(数字或数字串,非数即 undefined)。用户:add/update 两域的 run-write(补丁字段拾取)。 */
46
+ export function pickNum(params, key) {
47
+ const v = params[key];
48
+ if (typeof v === 'number' && Number.isFinite(v))
49
+ return v;
50
+ if (typeof v === 'string' && v.trim() !== '' && Number.isFinite(Number(v.trim())))
51
+ return Number(v.trim());
52
+ return undefined;
53
+ }
54
+ /** 取份数参数(servings 未给即 undefined;非法直退 exit 2)。用户:cook/shopping 两域的 run(份数放大)。 */
55
+ export function needServings(params) {
56
+ if (params.servings === undefined)
57
+ return undefined;
58
+ const n = typeof params.servings === 'string' ? Number(params.servings.trim()) : params.servings;
59
+ if (!Number.isInteger(n) || n <= 0)
60
+ fail(2, 'servings 须为正整数');
61
+ return n;
62
+ }
63
+ //# sourceMappingURL=slots.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"slots.js","sourceRoot":"","sources":["../../src/shared/slots.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ /** 采购能力的命令声明(权威源:一条命令的事实只住这里)。
2
+ *
3
+ * 本能力即 HELP 一级分组「采购」。一条命令管一摊:
4
+ * · `chef.shopping.query`(查询命令):生成清单/排除可选/查清单/清空清单四句唤醒词都进这一条。
5
+ * 处理函数仍在老分派层(`src/cli/cmd_read.ts`),本票只立声明不搬实现——行为不变,
6
+ * 实现下沉由小域合并票接走(本文件不动,后续只加 run)。
7
+ *
8
+ * 标题与代表唤醒词取 HELP 现成说法,示例照 `packages/skill-chef/SKILL.md` 同命令行照抄。
9
+ */
10
+ import type { CommandSpec } from '../shared/command-spec.js';
11
+ /** 采购能力的声明表:恰好导出一个声明数组(生成器只认这一个)。 */
12
+ export declare const SHOPPING_COMMANDS: readonly CommandSpec[];
13
+ //# sourceMappingURL=commands.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../../src/shopping/commands.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAE7D,qCAAqC;AACrC,eAAO,MAAM,iBAAiB,EAAE,SAAS,WAAW,EASnD,CAAC"}
@@ -0,0 +1,21 @@
1
+ /** 采购能力的命令声明(权威源:一条命令的事实只住这里)。
2
+ *
3
+ * 本能力即 HELP 一级分组「采购」。一条命令管一摊:
4
+ * · `chef.shopping.query`(查询命令):生成清单/排除可选/查清单/清空清单四句唤醒词都进这一条。
5
+ * 处理函数仍在老分派层(`src/cli/cmd_read.ts`),本票只立声明不搬实现——行为不变,
6
+ * 实现下沉由小域合并票接走(本文件不动,后续只加 run)。
7
+ *
8
+ * 标题与代表唤醒词取 HELP 现成说法,示例照 `packages/skill-chef/SKILL.md` 同命令行照抄。
9
+ */
10
+ /** 采购能力的声明表:恰好导出一个声明数组(生成器只认这一个)。 */
11
+ export const SHOPPING_COMMANDS = [
12
+ {
13
+ kind: 'read',
14
+ key: 'chef.shopping.query',
15
+ shape: 'list',
16
+ title: '生成清单',
17
+ wakeWord: '生成清单',
18
+ example: 'chef-cmd-read chef.shopping.query --params \'{"names":["宫保虾球","鱼香肉丝"]}\'',
19
+ },
20
+ ];
21
+ //# sourceMappingURL=commands.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"commands.js","sourceRoot":"","sources":["../../src/shopping/commands.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,qCAAqC;AACrC,MAAM,CAAC,MAAM,iBAAiB,GAA2B;IACvD;QACE,IAAI,EAAE,MAAM;QACZ,GAAG,EAAE,qBAAqB;QAC1B,KAAK,EAAE,MAAM;QACb,KAAK,EAAE,MAAM;QACb,QAAQ,EAAE,MAAM;QAChB,OAAO,EAAE,0EAA0E;KACpF;CACF,CAAC"}