skill-chef 0.3.1 → 0.3.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/SKILL.md +42 -29
- 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 +11 -0
- package/dist/add/index.d.ts.map +1 -0
- package/dist/add/index.js +11 -0
- package/dist/add/index.js.map +1 -0
- package/dist/add/pages.d.ts +62 -0
- package/dist/add/pages.d.ts.map +1 -0
- package/dist/add/pages.js +362 -0
- package/dist/add/pages.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 +29 -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 +226 -0
- package/dist/add/run-write.js.map +1 -0
- package/dist/cli/cmd_read.js +48 -289
- package/dist/cli/cmd_read.js.map +1 -1
- package/dist/cli/keys.d.ts +2 -1
- package/dist/cli/keys.d.ts.map +1 -1
- package/dist/cli/keys.js +49 -1
- package/dist/cli/keys.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 +10 -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/page-art.d.ts +18 -0
- package/dist/cook/page-art.d.ts.map +1 -0
- package/dist/cook/page-art.js +30 -0
- package/dist/cook/page-art.js.map +1 -0
- package/dist/cook/page-css.d.ts +9 -0
- package/dist/cook/page-css.d.ts.map +1 -0
- package/dist/cook/page-css.js +206 -0
- package/dist/cook/page-css.js.map +1 -0
- package/dist/cook/page-text.d.ts +28 -0
- package/dist/cook/page-text.d.ts.map +1 -0
- package/dist/cook/page-text.js +65 -0
- package/dist/cook/page-text.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 +79 -0
- package/dist/cook/run.d.ts.map +1 -0
- package/dist/cook/run.js +276 -0
- package/dist/cook/run.js.map +1 -0
- package/dist/data/commands.d.ts +11 -0
- package/dist/data/commands.d.ts.map +1 -0
- package/dist/data/commands.js +18 -0
- package/dist/data/commands.js.map +1 -0
- package/dist/data/index.d.ts +11 -0
- package/dist/data/index.d.ts.map +1 -0
- package/dist/data/index.js +11 -0
- package/dist/data/index.js.map +1 -0
- package/dist/data/pages.d.ts +50 -0
- package/dist/data/pages.d.ts.map +1 -0
- package/dist/data/pages.js +226 -0
- package/dist/data/pages.js.map +1 -0
- package/dist/data/routes.d.ts +11 -0
- package/dist/data/routes.d.ts.map +1 -0
- package/dist/data/routes.js +17 -0
- package/dist/data/routes.js.map +1 -0
- package/dist/data/run-batch.d.ts +21 -0
- package/dist/data/run-batch.d.ts.map +1 -0
- package/dist/data/run-batch.js +123 -0
- package/dist/data/run-batch.js.map +1 -0
- package/dist/data/run-query.d.ts +14 -0
- package/dist/data/run-query.d.ts.map +1 -0
- package/dist/data/run-query.js +158 -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 -328
- 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/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/help/lookup.d.ts.map +1 -1
- package/dist/help/lookup.js +20 -4
- package/dist/help/lookup.js.map +1 -1
- package/dist/help/sceneData.d.ts +8 -7
- package/dist/help/sceneData.d.ts.map +1 -1
- package/dist/help/sceneData.js +22 -21
- package/dist/help/sceneData.js.map +1 -1
- package/dist/history/commands.js +1 -1
- package/dist/history/index.d.ts +3 -2
- package/dist/history/index.d.ts.map +1 -1
- package/dist/history/index.js +3 -2
- package/dist/history/index.js.map +1 -1
- package/dist/history/page-css.d.ts +12 -0
- package/dist/history/page-css.d.ts.map +1 -0
- package/dist/history/page-css.js +208 -0
- package/dist/history/page-css.js.map +1 -0
- package/dist/history/pages.d.ts +77 -0
- package/dist/history/pages.d.ts.map +1 -0
- package/dist/history/pages.js +282 -0
- package/dist/history/pages.js.map +1 -0
- package/dist/history/routes.d.ts +4 -6
- package/dist/history/routes.d.ts.map +1 -1
- package/dist/history/routes.js +22 -16
- package/dist/history/routes.js.map +1 -1
- package/dist/history/run-query.d.ts +61 -0
- package/dist/history/run-query.d.ts.map +1 -0
- package/dist/history/run-query.js +130 -0
- package/dist/history/run-query.js.map +1 -0
- package/dist/history/run-record.d.ts +31 -0
- package/dist/history/run-record.d.ts.map +1 -0
- package/dist/history/run-record.js +85 -0
- package/dist/history/run-record.js.map +1 -0
- package/dist/history/validate.d.ts +22 -0
- package/dist/history/validate.d.ts.map +1 -0
- package/dist/history/validate.js +69 -0
- package/dist/history/validate.js.map +1 -0
- package/dist/policy/wakewords.d.ts +1 -1
- package/dist/policy/wakewords.d.ts.map +1 -1
- package/dist/policy/wakewords.js +23 -2
- package/dist/policy/wakewords.js.map +1 -1
- package/dist/relation/commands.d.ts +11 -0
- package/dist/relation/commands.d.ts.map +1 -0
- package/dist/relation/commands.js +26 -0
- package/dist/relation/commands.js.map +1 -0
- package/dist/relation/index.d.ts +11 -0
- package/dist/relation/index.d.ts.map +1 -0
- package/dist/relation/index.js +11 -0
- package/dist/relation/index.js.map +1 -0
- package/dist/relation/pages.d.ts +37 -0
- package/dist/relation/pages.d.ts.map +1 -0
- package/dist/relation/pages.js +224 -0
- package/dist/relation/pages.js.map +1 -0
- package/dist/relation/routes.d.ts +11 -0
- package/dist/relation/routes.d.ts.map +1 -0
- package/dist/relation/routes.js +29 -0
- package/dist/relation/routes.js.map +1 -0
- package/dist/relation/run-query.d.ts +10 -0
- package/dist/relation/run-query.d.ts.map +1 -0
- package/dist/relation/run-query.js +104 -0
- package/dist/relation/run-query.js.map +1 -0
- package/dist/relation/run-write.d.ts +13 -0
- package/dist/relation/run-write.d.ts.map +1 -0
- package/dist/relation/run-write.js +114 -0
- package/dist/relation/run-write.js.map +1 -0
- package/dist/relation/shapes.d.ts +8 -0
- package/dist/relation/shapes.d.ts.map +1 -0
- package/dist/relation/shapes.js +153 -0
- package/dist/relation/shapes.js.map +1 -0
- package/dist/relation/treeShapes.d.ts +23 -0
- package/dist/relation/treeShapes.d.ts.map +1 -0
- package/dist/relation/treeShapes.js +289 -0
- package/dist/relation/treeShapes.js.map +1 -0
- package/dist/render/copyArea.d.ts +67 -0
- package/dist/render/copyArea.d.ts.map +1 -0
- package/dist/render/copyArea.js +146 -0
- package/dist/render/copyArea.js.map +1 -0
- package/dist/render/envelope.d.ts.map +1 -1
- package/dist/render/envelope.js +4 -0
- package/dist/render/envelope.js.map +1 -1
- package/dist/render/index.d.ts +14 -1
- package/dist/render/index.d.ts.map +1 -1
- package/dist/render/index.js +16 -1
- package/dist/render/index.js.map +1 -1
- package/dist/render/sceneBand.d.ts +36 -0
- package/dist/render/sceneBand.d.ts.map +1 -0
- package/dist/render/sceneBand.js +166 -0
- package/dist/render/sceneBand.js.map +1 -0
- package/dist/render/sceneRhythm.d.ts +6 -0
- package/dist/render/sceneRhythm.d.ts.map +1 -0
- package/dist/render/sceneRhythm.js +149 -0
- package/dist/render/sceneRhythm.js.map +1 -0
- package/dist/render/sceneShell.d.ts +17 -0
- package/dist/render/sceneShell.d.ts.map +1 -0
- package/dist/render/sceneShell.js +46 -0
- package/dist/render/sceneShell.js.map +1 -0
- package/dist/render/skin.d.ts +13 -0
- package/dist/render/skin.d.ts.map +1 -0
- package/dist/render/skin.js +282 -0
- package/dist/render/skin.js.map +1 -0
- 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 +19 -0
- package/dist/search/routes.d.ts.map +1 -0
- package/dist/search/routes.js +91 -0
- package/dist/search/routes.js.map +1 -0
- package/dist/search/run.d.ts +30 -0
- package/dist/search/run.d.ts.map +1 -0
- package/dist/search/run.js +157 -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 +17 -0
- package/dist/setup/commands.js.map +1 -0
- package/dist/setup/index.d.ts +6 -0
- package/dist/setup/index.d.ts.map +1 -0
- package/dist/setup/index.js +6 -0
- package/dist/setup/index.js.map +1 -0
- package/dist/setup/pages.d.ts +19 -0
- package/dist/setup/pages.d.ts.map +1 -0
- package/dist/setup/pages.js +163 -0
- package/dist/setup/pages.js.map +1 -0
- package/dist/setup/routes.d.ts +9 -0
- package/dist/setup/routes.d.ts.map +1 -0
- package/dist/setup/routes.js +15 -0
- package/dist/setup/routes.js.map +1 -0
- package/dist/setup/run-init.d.ts +11 -0
- package/dist/setup/run-init.d.ts.map +1 -0
- package/dist/setup/run-init.js +19 -0
- package/dist/setup/run-init.js.map +1 -0
- package/dist/shared/command-spec.d.ts +44 -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 +10 -0
- package/dist/shopping/index.d.ts.map +1 -0
- package/dist/shopping/index.js +10 -0
- package/dist/shopping/index.js.map +1 -0
- package/dist/shopping/pages.d.ts +22 -0
- package/dist/shopping/pages.d.ts.map +1 -0
- package/dist/shopping/pages.js +170 -0
- package/dist/shopping/pages.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 +28 -0
- package/dist/shopping/run.d.ts.map +1 -0
- package/dist/shopping/run.js +122 -0
- package/dist/shopping/run.js.map +1 -0
- package/dist/triggers/chef-scenes.d.ts +3 -2
- package/dist/triggers/chef-scenes.d.ts.map +1 -1
- package/dist/triggers/chef-scenes.js +16 -15
- package/dist/triggers/chef-scenes.js.map +1 -1
- 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 +14 -0
- package/dist/update/routes.d.ts.map +1 -0
- package/dist/update/routes.js +38 -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 +309 -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/page.d.ts +25 -0
- package/dist/view/page.d.ts.map +1 -0
- package/dist/view/page.js +306 -0
- package/dist/view/page.js.map +1 -0
- package/dist/view/pageCss.d.ts +8 -0
- package/dist/view/pageCss.d.ts.map +1 -0
- package/dist/view/pageCss.js +327 -0
- package/dist/view/pageCss.js.map +1 -0
- package/dist/view/pageSection.d.ts +21 -0
- package/dist/view/pageSection.d.ts.map +1 -0
- package/dist/view/pageSection.js +59 -0
- package/dist/view/pageSection.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 +17 -0
- package/dist/view/run.d.ts.map +1 -0
- package/dist/view/run.js +93 -0
- package/dist/view/run.js.map +1 -0
- package/package.json +3 -3
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
/** 开始使用能力的页面装配(首次使用一页,全走公共层区块+页内一段收口样式)。
|
|
2
|
+
*
|
|
3
|
+
* 老件骨架来源:`templates/开始使用/first_use_wizard.html`(环境检测→环境变量→建库→完成回执四步)。
|
|
4
|
+
* 新页按同一四步组织,行为归宿主(页面只摆形状与状态,静态呈现)。
|
|
5
|
+
*
|
|
6
|
+
* #873 页内收口(公共层只给到形状那一层,层级的最后一档落在页内):
|
|
7
|
+
* ① 读数三张**瓦片**(不是一条通栏面板):标签与数值差 5px —— 「业务表/状态/建库时机」是列头,
|
|
8
|
+
* 值才是正文;三张各自成卡,宽档不会读成一条呆板的通栏;
|
|
9
|
+
* ② 页头图标位(锅)+ 品牌装饰带(都是内联 SVG,纯装饰,不载任何数据);
|
|
10
|
+
* ③ 分区题头带一条暖色渐隐、开合标记换成暖色圆点(公共层那枚蓝 ▸ 落在圆底上读起来像播放键);
|
|
11
|
+
* ④ 上屏文字去实现语与复述(「装前命令」「老库仅提示迁移」「只读不写」全部换人话;
|
|
12
|
+
* 口径行与读数瓦片、结论条互为复述的那一句删掉,内容并进「建库」那一步的正文)。
|
|
13
|
+
*/
|
|
14
|
+
import { CHART_PALETTE, CSS_VAR_TOKENS, renderActionBar, renderFactStrip } from 'base-paint';
|
|
15
|
+
import { renderDisclosure, renderPageShell, renderProseBlock, } from 'base-paint/blocks';
|
|
16
|
+
import { chefCopyArea } from '../render/copyArea.js';
|
|
17
|
+
import { renderSceneShell } from '../render/sceneShell.js';
|
|
18
|
+
/** 换行(仓库口径:不写字面换行转义,与 `blocks.ts`/皮肤件同)。 */
|
|
19
|
+
const LF = String.fromCharCode(10);
|
|
20
|
+
/** hex → `r, g, b`:本页 `rgba()` 浅底/描边的唯一换算位(色基只从冻结 token 与调色板取)。 */
|
|
21
|
+
function rgbOf(hex) {
|
|
22
|
+
const n = Number.parseInt(hex.slice(1), 16);
|
|
23
|
+
return ((n >> 16) & 255) + ', ' + ((n >> 8) & 255) + ', ' + (n & 255);
|
|
24
|
+
}
|
|
25
|
+
/** 本页收口样式(#873 开始使用席)。每一条都在本技能根类之下,别的技能页一行不变。
|
|
26
|
+
*
|
|
27
|
+
* 第三轮:**页头不再放本席自己那枚图标**——页族装饰带(`ilife-scene-band-process`)已经占了页头那一格,
|
|
28
|
+
* 同一处两件装饰是重复。本页留读数带、分区题头暖色渐隐、开合折角,再补一段**窄档填满度**
|
|
29
|
+
* (页族填满度公共层只给了回执族,process 族这一页由页内自己收)。 */
|
|
30
|
+
function setupPageCss() {
|
|
31
|
+
const yellow = rgbOf(CHART_PALETTE[6]);
|
|
32
|
+
const warm = rgbOf(CHART_PALETTE[2]);
|
|
33
|
+
const line = rgbOf(CSS_VAR_TOKENS['--line']);
|
|
34
|
+
const root = '.ilife-page-ui ';
|
|
35
|
+
return [
|
|
36
|
+
'/* #873 开始使用·首次使用 页内收口 · 每一条都挂在根类之下 */',
|
|
37
|
+
'/* 读数带:三条读数收进一张暖色面板,格间发丝线分区(不用任何分隔符字符)。 */',
|
|
38
|
+
root + '.ilife-chef-deck {',
|
|
39
|
+
' box-sizing: border-box;',
|
|
40
|
+
' margin: 22px 0 0;',
|
|
41
|
+
' padding: 0;',
|
|
42
|
+
' border: 1px solid rgba(' + warm + ', .30);',
|
|
43
|
+
' border-radius: 14px;',
|
|
44
|
+
' background-image: linear-gradient(100deg, rgba(' + yellow + ', .20), var(--card) 58%);',
|
|
45
|
+
' box-shadow: 0 1px 3px rgba(' + line + ', .50);',
|
|
46
|
+
'}',
|
|
47
|
+
// 窄档不给「等宽挤块」:瓦片按内容宽排(`flex: 0 1 auto`),宽档再让它撑满一行居中。
|
|
48
|
+
root + '.ilife-chef-deck .ilife-block-fact-strip-item {',
|
|
49
|
+
' flex: 0 1 auto;',
|
|
50
|
+
' padding: 11px 12px;',
|
|
51
|
+
' border: 0;',
|
|
52
|
+
' border-radius: 0;',
|
|
53
|
+
' background-color: transparent;',
|
|
54
|
+
'}',
|
|
55
|
+
root + '.ilife-chef-deck .ilife-block-fact-strip-item + .ilife-block-fact-strip-item {',
|
|
56
|
+
' border-left: 1px solid rgba(' + line + ', .90);',
|
|
57
|
+
'}',
|
|
58
|
+
'/* 列头(标签)与正文(数值)差 5px:这一条销的就是「表头与正文同号、难辨列」。 */',
|
|
59
|
+
root + '.ilife-chef-deck .ilife-block-fact-strip-label {',
|
|
60
|
+
' letter-spacing: .06em;',
|
|
61
|
+
'}',
|
|
62
|
+
root + '.ilife-chef-deck .ilife-block-fact-strip-value {',
|
|
63
|
+
' font-size: 17px;',
|
|
64
|
+
' font-weight: 700;',
|
|
65
|
+
'}',
|
|
66
|
+
/* 宽档:三张各自撑等宽、内容居中(一排三张读起来是一组读数)。 */
|
|
67
|
+
'@media (min-width: 820px) {',
|
|
68
|
+
' ' + root + '.ilife-chef-deck .ilife-block-fact-strip-item {',
|
|
69
|
+
' flex: 1 1 auto;',
|
|
70
|
+
' align-items: center;',
|
|
71
|
+
' text-align: center;',
|
|
72
|
+
' }',
|
|
73
|
+
'}',
|
|
74
|
+
'/* 分区题头:折叠条标题那一行带一条暖色渐隐(品牌温度落在「分区」这一层)。 */',
|
|
75
|
+
root + '.ilife-block-page-shell-body > .ilife-block-disclosure > .ilife-block-disclosure-summary {',
|
|
76
|
+
' background-image: linear-gradient(90deg, rgba(' + yellow + ', .20), rgba(' + yellow + ', 0) 76%);',
|
|
77
|
+
' border-radius: 13px;',
|
|
78
|
+
'}',
|
|
79
|
+
'/* 开合标记:换成一枚暖色折角(公共层那枚蓝 ▸ 落在圆底上像播放键;换成实心圆点又被读成空态圆点)。 */',
|
|
80
|
+
root + '.ilife-block-disclosure-summary::before {',
|
|
81
|
+
' content: "";',
|
|
82
|
+
' width: 8px;',
|
|
83
|
+
' height: 8px;',
|
|
84
|
+
' margin-right: 12px;',
|
|
85
|
+
' border-right: 2px solid rgba(' + warm + ', .95);',
|
|
86
|
+
' border-bottom: 2px solid rgba(' + warm + ', .95);',
|
|
87
|
+
' border-radius: 0;',
|
|
88
|
+
' background: none;',
|
|
89
|
+
' transform: rotate(45deg);',
|
|
90
|
+
'}',
|
|
91
|
+
root + '.ilife-block-disclosure[open] > .ilife-block-disclosure-summary::before {',
|
|
92
|
+
' transform: rotate(225deg);',
|
|
93
|
+
'}',
|
|
94
|
+
'/* 窄档填满度:块距 16→26px、三步可点件 44→54px —— 首屏底空从 128px 收到 119px',
|
|
95
|
+
' (页族那份填满度只覆盖回执族,process 族这一页由页内自己收;一个字的内容都不编)。',
|
|
96
|
+
' 反例读数:撤掉这一段,首屏底空立刻回到 189px、双端自适应 20→17(见证据件「第三轮」)。 */',
|
|
97
|
+
'@media (max-width: 640px) {',
|
|
98
|
+
' ' + root + '.ilife-block-page-shell-body > * + .ilife-block {',
|
|
99
|
+
' margin-top: 26px;',
|
|
100
|
+
' }',
|
|
101
|
+
' ' + root + '.ilife-block-disclosure-summary {',
|
|
102
|
+
' min-height: 54px;',
|
|
103
|
+
' }',
|
|
104
|
+
'}',
|
|
105
|
+
].join(LF);
|
|
106
|
+
}
|
|
107
|
+
/** 首次使用向导页(过程型:分节折叠+动作行)。 */
|
|
108
|
+
export function setupInitPage(input) {
|
|
109
|
+
const done = input.initialized ? '本次已建齐' : '此前已建齐';
|
|
110
|
+
const body = renderPageShell({
|
|
111
|
+
eyebrow: '私家大厨 | 开始使用',
|
|
112
|
+
title: '首次使用',
|
|
113
|
+
content: [
|
|
114
|
+
// 第三轮文案审计:原结论条「菜谱库已就绪,录第一道菜就能开工。」——删掉它用户一个字都不会少知道
|
|
115
|
+
// (「已建齐」在读数带的「状态」格里、要做什么在按钮「录第一道菜」上),故删。
|
|
116
|
+
renderFactStrip({
|
|
117
|
+
extraClass: 'ilife-chef-deck',
|
|
118
|
+
items: [
|
|
119
|
+
{ label: '业务表', value: String(input.tables) + ' 张' },
|
|
120
|
+
{ label: '状态', value: done },
|
|
121
|
+
{ label: '建库时机', value: '用到时才建' },
|
|
122
|
+
],
|
|
123
|
+
}),
|
|
124
|
+
renderDisclosure({
|
|
125
|
+
title: '环境检测',
|
|
126
|
+
contentHtml: renderProseBlock({ text: '读写环境正常,有缺项会在这里列出来,并给出安装方法。' }),
|
|
127
|
+
}),
|
|
128
|
+
renderDisclosure({
|
|
129
|
+
title: '建库',
|
|
130
|
+
// 原口径行那一句(用到时才建/建好不再改动)并进这一步:三个折叠条里它本来就属于「建库」。
|
|
131
|
+
contentHtml: renderProseBlock({ text: '缺的会补上,齐的直接跳过,旧数据只提醒,不自动搬动;建好以后不再改动文件。' }),
|
|
132
|
+
}),
|
|
133
|
+
renderDisclosure({
|
|
134
|
+
title: '完成回执',
|
|
135
|
+
contentHtml: renderProseBlock({ text: '初始化只做一次,以后每次进来都不会重复建。' }),
|
|
136
|
+
}),
|
|
137
|
+
renderActionBar({
|
|
138
|
+
buttons: [
|
|
139
|
+
{ label: '录第一道菜', kind: 'primary', actionId: 'setup-first' },
|
|
140
|
+
{ label: '看看全部菜谱', kind: 'ghost', actionId: 'setup-list' },
|
|
141
|
+
],
|
|
142
|
+
}),
|
|
143
|
+
chefCopyArea({
|
|
144
|
+
// 本页曾带标题「复制上手说明」。**2026-09-22 用户裁定「乙」后标题一并去掉**(卡片与标题全去)。
|
|
145
|
+
// 留档两条,别当没发生过:① 第三轮文案审计**试过不给标题**(只留按钮),同会话实测 **89 → 84**,
|
|
146
|
+
// 当时「掉了就回退,故保留标题」;② 现在没有标题是**裁定所致**,不是没有人试过。
|
|
147
|
+
// ⇒ 若日后本页视觉评分掉档,先怀疑这一条(这是唯一有实测数字的嫌疑点)。
|
|
148
|
+
dataActionId: 'setup-copy',
|
|
149
|
+
data: {
|
|
150
|
+
key: 'chef.setup.init', shape: 'receipt', ok: true,
|
|
151
|
+
message: '菜谱库已就绪(' + input.tables + ' 张表,' + done + '),录第一道菜就能开工。',
|
|
152
|
+
},
|
|
153
|
+
}),
|
|
154
|
+
].join(''),
|
|
155
|
+
});
|
|
156
|
+
return renderSceneShell({
|
|
157
|
+
family: 'process',
|
|
158
|
+
docTitle: '首次使用',
|
|
159
|
+
bodyHtml: body,
|
|
160
|
+
extraCss: setupPageCss(),
|
|
161
|
+
});
|
|
162
|
+
}
|
|
163
|
+
//# sourceMappingURL=pages.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pages.js","sourceRoot":"","sources":["../../src/setup/pages.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/** 开始使用能力的路由声明(唤醒词命中哪条命令,声明面唯一一处)。
|
|
2
|
+
*
|
|
3
|
+
* 一行对应 #767 资产里开始使用的一组短语:`首次使用`进 `chef.setup.init`(幂等初始化)。
|
|
4
|
+
* #841 起该词已在 `WAKE_TABLE`(下标 47),`order` 照表序填实,不再有 `order: 0` 的待接入行。
|
|
5
|
+
*/
|
|
6
|
+
import type { RouteDecl } from '../shared/command-spec.js';
|
|
7
|
+
/** 开始使用能力的路由声明表:恰好导出一个声明数组。 */
|
|
8
|
+
export declare const SETUP_ROUTES: readonly RouteDecl[];
|
|
9
|
+
//# sourceMappingURL=routes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"routes.d.ts","sourceRoot":"","sources":["../../src/setup/routes.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAE3D,+BAA+B;AAC/B,eAAO,MAAM,YAAY,EAAE,SAAS,SAAS,EAO5C,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/** 开始使用能力的路由声明(唤醒词命中哪条命令,声明面唯一一处)。
|
|
2
|
+
*
|
|
3
|
+
* 一行对应 #767 资产里开始使用的一组短语:`首次使用`进 `chef.setup.init`(幂等初始化)。
|
|
4
|
+
* #841 起该词已在 `WAKE_TABLE`(下标 47),`order` 照表序填实,不再有 `order: 0` 的待接入行。
|
|
5
|
+
*/
|
|
6
|
+
/** 开始使用能力的路由声明表:恰好导出一个声明数组。 */
|
|
7
|
+
export const SETUP_ROUTES = [
|
|
8
|
+
{
|
|
9
|
+
order: 47,
|
|
10
|
+
wakeWord: '首次使用',
|
|
11
|
+
key: 'chef.setup.init',
|
|
12
|
+
cli: 'chef-cmd-read chef.setup.init --params \'{}\'',
|
|
13
|
+
},
|
|
14
|
+
];
|
|
15
|
+
//# sourceMappingURL=routes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"routes.js","sourceRoot":"","sources":["../../src/setup/routes.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,+BAA+B;AAC/B,MAAM,CAAC,MAAM,YAAY,GAAyB;IAChD;QACE,KAAK,EAAE,EAAE;QACT,QAAQ,EAAE,MAAM;QAChB,GAAG,EAAE,iBAAiB;QACtB,GAAG,EAAE,+CAA+C;KACrD;CACF,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/** 开始使用能力的写处理(`chef.setup.init` 的初始化工作流)+ 本域独占的取数。
|
|
2
|
+
*
|
|
3
|
+
* 老件语义来源(只读对照):`scripts/开始使用/ops.py:57-72`(只读数表,不写库)与
|
|
4
|
+
* `scripts/开始使用/ops.py:186-235`(缺表则建,老库齐则跳过并提示迁移)。
|
|
5
|
+
* 新技能建库走 `openChefDb` 的幂等 `CREATE TABLE IF NOT EXISTS`(17 表),本函数只做判定与回执:
|
|
6
|
+
* 只在需要时建库建目录(开库即建),已齐则跳过并报已初始化。
|
|
7
|
+
*/
|
|
8
|
+
import type { ChefDb } from '../fetch/db.js';
|
|
9
|
+
/** 跑 `chef.setup.init`:幂等初始化(开库即建表),回执报已初始化或本次建齐。 */
|
|
10
|
+
export declare function runSetupInit(handle: ChefDb): unknown;
|
|
11
|
+
//# sourceMappingURL=run-init.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run-init.d.ts","sourceRoot":"","sources":["../../src/setup/run-init.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAI7C,qDAAqD;AACrD,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAOpD"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/** 开始使用能力的写处理(`chef.setup.init` 的初始化工作流)+ 本域独占的取数。
|
|
2
|
+
*
|
|
3
|
+
* 老件语义来源(只读对照):`scripts/开始使用/ops.py:57-72`(只读数表,不写库)与
|
|
4
|
+
* `scripts/开始使用/ops.py:186-235`(缺表则建,老库齐则跳过并提示迁移)。
|
|
5
|
+
* 新技能建库走 `openChefDb` 的幂等 `CREATE TABLE IF NOT EXISTS`(17 表),本函数只做判定与回执:
|
|
6
|
+
* 只在需要时建库建目录(开库即建),已齐则跳过并报已初始化。
|
|
7
|
+
*/
|
|
8
|
+
import { qGet } from '../fetch/db.js';
|
|
9
|
+
import { buildRecipeReceipt } from '../render/index.js';
|
|
10
|
+
/** 跑 `chef.setup.init`:幂等初始化(开库即建表),回执报已初始化或本次建齐。 */
|
|
11
|
+
export function runSetupInit(handle) {
|
|
12
|
+
const row = qGet(handle, "SELECT COUNT(*) AS c FROM sqlite_master WHERE type='table' AND name NOT LIKE 'sqlite_%'");
|
|
13
|
+
const tables = Number(row?.c ?? 0);
|
|
14
|
+
if (handle.initialized) {
|
|
15
|
+
return buildRecipeReceipt('首次使用已就绪:本次建齐 ' + tables + ' 张表,录第一道菜就能开工');
|
|
16
|
+
}
|
|
17
|
+
return buildRecipeReceipt('菜谱库已就绪:' + tables + ' 张表齐全,不用再建(旧数据只提醒,不自动搬动)');
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=run-init.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run-init.js","sourceRoot":"","sources":["../../src/setup/run-init.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AACtC,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAExD,qDAAqD;AACrD,MAAM,UAAU,YAAY,CAAC,MAAc;IACzC,MAAM,GAAG,GAAG,IAAI,CAAgB,MAAM,EAAE,yFAAyF,CAAC,CAAC;IACnI,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;IACnC,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;QACvB,OAAO,kBAAkB,CAAC,eAAe,GAAG,MAAM,GAAG,eAAe,CAAC,CAAC;IACxE,CAAC;IACD,OAAO,kBAAkB,CAAC,SAAS,GAAG,MAAM,GAAG,0BAA0B,CAAC,CAAC;AAC7E,CAAC"}
|
|
@@ -0,0 +1,44 @@
|
|
|
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`(`src/policy/wakewords.ts`)的 1-based 行号,即「这条路由在唤醒词表里第几行」;
|
|
33
|
+
* 表序是全表唯一的顺序事实源,本字段与表序互为判据(判据住 `docs/skills/skill-chef/t841-登记面对账.mjs`)。
|
|
34
|
+
* #841 起 50 条全部入表 ⇒ 不再有 `order: 0` 的待接入行(此前 `备份`/派生三组/`首次使用`/`批量改`
|
|
35
|
+
* 是入表前的占位)。一句事实只有一个落点:同一短语不在两个域各声明一行(越域共用命令时,
|
|
36
|
+
* 按事实归属选一处,如 `备份` 住历史域、`体检` 也住历史域)。
|
|
37
|
+
*/
|
|
38
|
+
export interface RouteDecl {
|
|
39
|
+
readonly order: number;
|
|
40
|
+
readonly wakeWord: string;
|
|
41
|
+
readonly key: string;
|
|
42
|
+
readonly cli: string;
|
|
43
|
+
}
|
|
44
|
+
//# 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;;;;;;;GAOG;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,mEAAmE;KAC7E;CACF,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/** 采购能力门:能力对外只经这里(结构纪律铁律一、铁律五)。
|
|
2
|
+
*
|
|
3
|
+
* 对外两件:命令声明表与路由声明表。处理函数与取数实现不在这里,
|
|
4
|
+
* 本票只立声明;外边要用采购能力的东西,只经这两个名字。
|
|
5
|
+
*/
|
|
6
|
+
export { SHOPPING_COMMANDS } from './commands.js';
|
|
7
|
+
export { SHOPPING_ROUTES } from './routes.js';
|
|
8
|
+
export { buildShopping, buildShoppingList, runShoppingQuery } from './run.js';
|
|
9
|
+
export { shoppingListPage } from './pages.js';
|
|
10
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/shopping/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAC9E,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/** 采购能力门:能力对外只经这里(结构纪律铁律一、铁律五)。
|
|
2
|
+
*
|
|
3
|
+
* 对外两件:命令声明表与路由声明表。处理函数与取数实现不在这里,
|
|
4
|
+
* 本票只立声明;外边要用采购能力的东西,只经这两个名字。
|
|
5
|
+
*/
|
|
6
|
+
export { SHOPPING_COMMANDS } from './commands.js';
|
|
7
|
+
export { SHOPPING_ROUTES } from './routes.js';
|
|
8
|
+
export { buildShopping, buildShoppingList, runShoppingQuery } from './run.js';
|
|
9
|
+
export { shoppingListPage } from './pages.js';
|
|
10
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/shopping/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAC9E,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/** 采购能力的页面装配(生成清单一页,全走公共层区块+页内一段收口样式)。
|
|
2
|
+
*
|
|
3
|
+
* 老件骨架来源:`templates/shopping_view.html`(小结四格+分组表+工具条)。
|
|
4
|
+
* 新页按同一信息组织:结论条+品牌装饰带+读数卡+分区折叠+动作行+复制区。
|
|
5
|
+
*
|
|
6
|
+
* #873 页内收口(公共层只给到形状那一层,层级的最后一档落在页内):
|
|
7
|
+
* ① 四条读数(菜数/食材/分组/份量)**只画一遍**,走读数卡栅格:四张=**偶数**,
|
|
8
|
+
* ≤640 档公共层那条两列栅格正好排满两行,**没有孤卡**(#871 证据件 §四 E 记的账是「奇数张
|
|
9
|
+
* 必落一张孤卡」;本包不许改公共层的栅格,故用「按偶数张开卡」这一手在页面侧收口);
|
|
10
|
+
* ② 读数卡的正下方就是分组折叠——读数说总量、分组说去处,同一件事不画两遍;
|
|
11
|
+
* ③ 页头图标位 + 品牌装饰带(都是内联 SVG,纯装饰,不载任何数据)。
|
|
12
|
+
*/
|
|
13
|
+
import type { ShoppingItem } from '../fetch/db.js';
|
|
14
|
+
/** 生成清单页(结果型)。 */
|
|
15
|
+
export declare function shoppingListPage(input: {
|
|
16
|
+
recipes: string[];
|
|
17
|
+
items: ShoppingItem[];
|
|
18
|
+
servingsText: string;
|
|
19
|
+
excludeOptional: boolean;
|
|
20
|
+
stockSkipped: boolean;
|
|
21
|
+
}): string;
|
|
22
|
+
//# sourceMappingURL=pages.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pages.d.ts","sourceRoot":"","sources":["../../src/shopping/pages.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAaH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AA8EnD,kBAAkB;AAClB,wBAAgB,gBAAgB,CAAC,KAAK,EAAE;IACtC,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,KAAK,EAAE,YAAY,EAAE,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,OAAO,CAAC;IACzB,YAAY,EAAE,OAAO,CAAC;CACvB,GAAG,MAAM,CAmFT"}
|