skill-chef 0.1.0 → 0.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/SKILL.md +108 -0
- package/dist/cli/cmd_read.js +79 -19
- package/dist/cli/cmd_read.js.map +1 -1
- package/dist/cli/config.d.ts +16 -0
- package/dist/cli/config.d.ts.map +1 -0
- package/dist/cli/config.js +84 -0
- package/dist/cli/config.js.map +1 -0
- package/dist/cli/health.d.ts +7 -0
- package/dist/cli/health.d.ts.map +1 -0
- package/dist/cli/health.js +32 -0
- package/dist/cli/health.js.map +1 -0
- package/dist/config.d.ts +41 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +62 -0
- package/dist/config.js.map +1 -0
- package/dist/fetch/index.d.ts +1 -1
- package/dist/fetch/index.d.ts.map +1 -1
- package/dist/fetch/index.js +1 -1
- package/dist/fetch/index.js.map +1 -1
- package/dist/fetch/paths.d.ts +5 -3
- package/dist/fetch/paths.d.ts.map +1 -1
- package/dist/fetch/paths.js +19 -24
- package/dist/fetch/paths.js.map +1 -1
- package/dist/health.d.ts +41 -0
- package/dist/health.d.ts.map +1 -0
- package/dist/health.js +466 -0
- package/dist/health.js.map +1 -0
- package/dist/help/helpFile.d.ts +78 -0
- package/dist/help/helpFile.d.ts.map +1 -0
- package/dist/help/helpFile.js +218 -0
- package/dist/help/helpFile.js.map +1 -0
- package/dist/help/index.d.ts +4 -0
- package/dist/help/index.d.ts.map +1 -1
- package/dist/help/index.js +4 -0
- package/dist/help/index.js.map +1 -1
- package/dist/help/manifest.d.ts +11 -0
- package/dist/help/manifest.d.ts.map +1 -0
- package/dist/help/manifest.js +38 -0
- package/dist/help/manifest.js.map +1 -0
- package/dist/help/output.d.ts +17 -0
- package/dist/help/output.d.ts.map +1 -0
- package/dist/help/output.js +54 -0
- package/dist/help/output.js.map +1 -0
- package/dist/help/sceneData.d.ts +41 -0
- package/dist/help/sceneData.d.ts.map +1 -0
- package/dist/help/sceneData.js +182 -0
- package/dist/help/sceneData.js.map +1 -0
- package/package.json +7 -4
package/SKILL.md
ADDED
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: skill-chef
|
|
3
|
+
description: "「私家大厨HELP」→chef.help.lookup 落一份 HELP 文件并回执绝对路径;唯一出口 chef-cmd-read(本地菜谱:搜菜/查看/加菜、跟着做、买菜清单合并、做菜记录与历史、体检排序)。触发词:私家大厨HELP、菜谱HELP、查帮助、能做什么、查看食谱、查看食材、查看步骤、查看营养、查看背景、看菜谱、看菜、查看全部、搜索食谱、搜菜、查食材、筛选菜系、筛选食材、筛选口味、筛选季节、录入食谱、修改食谱、废弃食谱、加菜、做菜模式、开始做菜、继续做菜、完成做菜、生成清单、排除可选、查清单、清空清单、记录做菜、补录做菜、改评分、查看历史、查看统计、体检"
|
|
4
|
+
---
|
|
5
|
+
# 私家大厨(chef)SKILL
|
|
6
|
+
|
|
7
|
+
本地菜谱:搜菜/查看/加菜、跟着做(烹饪步骤)、买菜清单合并、做菜记录与历史、体检排序、HELP 交付(落 HTML 文件)。唯一出口 `chef-cmd-read <chef.key>`,argv+JSON(stdout)+exit,非 0 走 stderr。写走 receipt(直通即真相)。
|
|
8
|
+
|
|
9
|
+
## 快速开始
|
|
10
|
+
|
|
11
|
+
```sh
|
|
12
|
+
chef-cmd-read chef.help.lookup # 缺省=落 HELP 文件:stdout 的 delivery.path 就是它
|
|
13
|
+
chef-cmd-read chef.help.lookup --params '{"mode":"lookup"}' # 落速查表文件(与 HELP 分名)
|
|
14
|
+
chef-cmd-read chef.help.lookup --params '{"q":"搜菜"}' # 现找:只回命中,不落盘
|
|
15
|
+
chef-cmd-read chef.help.lookup --params '{"reuseHours":0}' # 一定要一份最新的(缺省一天内复用,不新建)
|
|
16
|
+
chef-cmd-read chef.recipe.search --params '{"q":"虾"}'
|
|
17
|
+
chef-cmd-read chef.recipe.view --params '{"name":"宫保虾球"}'
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
## HELP 交付(「私家大厨HELP」这条命令交什么)
|
|
21
|
+
|
|
22
|
+
对用户说「私家大厨help」时,**这条命令的缺省行为就是落一份 HELP HTML 文件**,并把绝对路径回执进 stdout:
|
|
23
|
+
|
|
24
|
+
- **缺省**(不给 `q`/`mode`):产物落 `<库目录>/<产物目录>/私家大厨_HELP_<YYYYMMDD_HHMMSS>[_N].html`——`<库目录>`=配置文件 `~/.ilife/chef.yaml` 的 `db.dir`,空串=数据目录 `~/.ilife/data/`;`<产物目录>`=同文件的 `html.dir`(默认 `cook_html/help`,段间用 `/` 或 `\` 分隔);
|
|
25
|
+
stdout 顶层多一个 `delivery{mode,path,bytes}`,`path` 恒为**绝对路径** ⇒ **把 `delivery.path` 告诉用户**(他要打开的就是这一份)。
|
|
26
|
+
文件名主体与老技能逐字相同;**同一主体一天内只留一份**——24 小时内再读就复用已有那份(不新建、不改写),已有那份绝不动。
|
|
27
|
+
- **速查表**(`--params '{"mode":"lookup"}'`):落 `私家大厨_速查表_<stamp>.html`(与 HELP 文件**分名**——别让用户按一个名字打开到另一个东西),载荷是 37 条短语;同样吃下面的复用窗口。
|
|
28
|
+
- **现找**(`--params '{"q":"搜菜"}'`):只在 stdout 回命中,**不落盘**(检索式问答不刷目录)。
|
|
29
|
+
- **指定落点**(`--html <路径>`):逐字落到那个路径(覆盖写),回执同样是绝对路径。
|
|
30
|
+
- **复用窗口**(`--params '{"reuseHours":3}'`):3 小时内复用同一份;`{"reuseHours":0}`=**每次都要一份最新的**(缺省窗口就是一天,见上)。窗口内已有一份、而你刚改过 HELP 内容时,旧产物**不会自动刷新**——要新的就带 `reuseHours:0`。
|
|
31
|
+
|
|
32
|
+
**完成判据**:`delivery.path` 指的文件**存在**,且它的大小 = `delivery.bytes`(两处对不上就是没做完,别把回执当完成)。
|
|
33
|
+
|
|
34
|
+
两件容易踩的:
|
|
35
|
+
|
|
36
|
+
- 这条命令**不开库**:跑完不会多出 `chef_data.db`(落文件仍然要求库目录定得下来:配置文件 `~/.ilife/chef.yaml` 的 `db.dir`,空串=数据目录,故从不因「没设什么」而失败)。
|
|
37
|
+
- 页面由**通用 help 模板**(`base-paint/help-shell`)渲染,与卡路里/饼干记账/居家管家同款;要动观感就去改模板源再跑它的生成器。
|
|
38
|
+
|
|
39
|
+
失败口径:参数错(`q` 与 `mode` 互斥、`mode` 只认 `lookup`)走 `exit 2`;渲染或落盘失败走 `exit 5`(stderr 是 `ERR 5: …`),失败路径上 stdout 保持干净。
|
|
40
|
+
|
|
41
|
+
**本节不管**(各有归属,别在这里找):页面里的内容(域/组/卡在 `src/help/sceneData.ts` 的内容资产,改内容走 `scripts/gen-help-assets.mjs` 再生成);名字怎么算(时间戳格式与同秒递补的唯一定义地是共用件 `packages/base-render/src/output/saveHtml.ts`);把文件送进面板/侧栏(属 #57 那条线)。
|
|
42
|
+
|
|
43
|
+
## 装出来的那份怎么判新旧
|
|
44
|
+
|
|
45
|
+
`~/.agents/skills/skill-chef` 在本机实测是 **Junction(目录联接)**,指向仓内这个包 ⇒ 它就是同一份文件,改这里立即生效;`Get-Item <路径> -Force | Select-Object LinkType` 一看便知。若某台机器上它是**拷贝**,那才谈新旧:只能比 `SKILL.md` 的哈希(拷贝里那份与仓里这份哈希不同=旧的,重新装机)。
|
|
46
|
+
|
|
47
|
+
## 口径
|
|
48
|
+
|
|
49
|
+
- 难度 5 档:快手菜/简单/中等/困难/大师(validateDifficulty,大小写/空串/未知档一律阻断)。
|
|
50
|
+
- 状态 4 种:未做/已做/熟练/已废弃(validateStatus;废弃= status 置已废弃,只增不删,无物理删除,列表默认过滤已废弃)。
|
|
51
|
+
- 火候 5 档:微火/小火/中火/大火/猛火(validateHeat,步骤 heat_level 必落此表)。
|
|
52
|
+
- 食材 11 类:肉类/海鲜/蛋类/蔬菜/葱姜蒜/香草/调料/豆制品/主食/干货/其他(validateCategory,未知类阻断)。
|
|
53
|
+
- 评分 0-5(含 0/5 端点,允许小数,超界/非数字阻断;history.record 必带 name,rating 可选)。
|
|
54
|
+
- 空查询与空结果阻断不返空:search 空 q 抛 exit 2;查无对条/区间无记录抛 exit 4,不返空数组冒充正常。
|
|
55
|
+
- 筛选维度一期限制(#43 F2):cuisine/season/method/flavor/tag/meal/cookware/maxTime/filter 只读(recipe.search 透传过滤),recipe.write 一期只写主表(name/difficulty/status/servings/total_time_minutes/description/photo/source 系列 + ingredients/steps 内嵌),维度表落库走二期(测试经直连落维度,见 test/cli.test.mjs)。
|
|
56
|
+
- 真实数据禁迁,测试 tmp 隔离(测试把配置目录经 `ILIFE_CONFIG_DIR` 指到 mkdtemp,见 test/fetch.test.mjs)。
|
|
57
|
+
- 跨技能只复制 prompt 不直调:shopping/recipe 跨技能按钮仅复制 `chef-cmd-read ...` 文本,AI 调目标技能,不直写他库。
|
|
58
|
+
|
|
59
|
+
## 联动速查(构建期注入,勿手改)
|
|
60
|
+
|
|
61
|
+
<!-- HELP-AUTO-START -->
|
|
62
|
+
| 唤醒词 | key | shape | 例 |
|
|
63
|
+
|---|---|---|---|
|
|
64
|
+
| 私家大厨HELP | chef.help.lookup | list | `chef-cmd-read chef.help.lookup` |
|
|
65
|
+
| 菜谱HELP | chef.help.lookup | list | `chef-cmd-read chef.help.lookup` |
|
|
66
|
+
| 查帮助 | chef.help.lookup | list | `chef-cmd-read chef.help.lookup` |
|
|
67
|
+
| 能做什么 | chef.help.lookup | list | `chef-cmd-read chef.help.lookup` |
|
|
68
|
+
| 查看食谱 | chef.recipe.view | detail | `chef-cmd-read chef.recipe.view --params '{"name":"宫保虾球"}'` |
|
|
69
|
+
| 查看食材 | chef.recipe.view | detail | `chef-cmd-read chef.recipe.view --params '{"name":"宫保虾球"}'` |
|
|
70
|
+
| 查看步骤 | chef.recipe.view | detail | `chef-cmd-read chef.recipe.view --params '{"name":"宫保虾球"}'` |
|
|
71
|
+
| 查看营养 | chef.recipe.view | detail | `chef-cmd-read chef.recipe.view --params '{"name":"宫保虾球"}'` |
|
|
72
|
+
| 查看背景 | chef.recipe.view | detail | `chef-cmd-read chef.recipe.view --params '{"name":"宫保虾球"}'` |
|
|
73
|
+
| 看菜谱 | chef.recipe.view | detail | `chef-cmd-read chef.recipe.view --params '{"name":"宫保虾球"}'` |
|
|
74
|
+
| 看菜 | chef.recipe.view | detail | `chef-cmd-read chef.recipe.view --params '{"name":"宫保虾球"}'` |
|
|
75
|
+
| 查看全部 | chef.recipe.search | list | `chef-cmd-read chef.recipe.search --params '{"kind":"all"}'` |
|
|
76
|
+
| 搜索食谱 | chef.recipe.search | list | `chef-cmd-read chef.recipe.search --params '{"q":"排骨"}'` |
|
|
77
|
+
| 搜菜 | chef.recipe.search | list | `chef-cmd-read chef.recipe.search --params '{"q":"排骨"}'` |
|
|
78
|
+
| 查食材 | chef.recipe.search | list | `chef-cmd-read chef.recipe.search --params '{"q":"排骨"}'` |
|
|
79
|
+
| 筛选菜系 | chef.recipe.search | list | `chef-cmd-read chef.recipe.search --params '{"filter":"川菜"}'` |
|
|
80
|
+
| 筛选食材 | chef.recipe.search | list | `chef-cmd-read chef.recipe.search --params '{"filter":"川菜"}'` |
|
|
81
|
+
| 筛选口味 | chef.recipe.search | list | `chef-cmd-read chef.recipe.search --params '{"filter":"川菜"}'` |
|
|
82
|
+
| 筛选季节 | chef.recipe.search | list | `chef-cmd-read chef.recipe.search --params '{"filter":"川菜"}'` |
|
|
83
|
+
| 录入食谱 | chef.recipe.write | receipt | `chef-cmd-read chef.recipe.write --params '{"op":"add","name":"宫保虾球"}'` |
|
|
84
|
+
| 修改食谱 | chef.recipe.write | receipt | `chef-cmd-read chef.recipe.write --params '{"op":"update","name":"宫保虾球"}'` |
|
|
85
|
+
| 废弃食谱 | chef.recipe.write | receipt | `chef-cmd-read chef.recipe.write --params '{"op":"deprecate","name":"宫保虾球"}'` |
|
|
86
|
+
| 加菜 | chef.recipe.write | receipt | `chef-cmd-read chef.recipe.write --params '{"op":"add","name":"宫保虾球"}'` |
|
|
87
|
+
| 做菜模式 | chef.cooking.run | list | `chef-cmd-read chef.cooking.run --params '{"name":"宫保虾球"}'` |
|
|
88
|
+
| 开始做菜 | chef.cooking.run | list | `chef-cmd-read chef.cooking.run --params '{"name":"宫保虾球"}'` |
|
|
89
|
+
| 继续做菜 | chef.cooking.run | list | `chef-cmd-read chef.cooking.run --params '{"name":"宫保虾球"}'` |
|
|
90
|
+
| 完成做菜 | chef.cooking.run | list | `chef-cmd-read chef.cooking.run --params '{"name":"宫保虾球"}'` |
|
|
91
|
+
| 生成清单 | chef.shopping.query | list | `chef-cmd-read chef.shopping.query --params '{"names":["宫保虾球","鱼香肉丝"]}'` |
|
|
92
|
+
| 排除可选 | chef.shopping.query | list | `chef-cmd-read chef.shopping.query --params '{"names":["宫保虾球","鱼香肉丝"]}'` |
|
|
93
|
+
| 查清单 | chef.shopping.query | list | `chef-cmd-read chef.shopping.query --params '{"names":["宫保虾球","鱼香肉丝"]}'` |
|
|
94
|
+
| 清空清单 | chef.shopping.query | list | `chef-cmd-read chef.shopping.query --params '{"names":["宫保虾球","鱼香肉丝"]}'` |
|
|
95
|
+
| 记录做菜 | chef.history.record | receipt | `chef-cmd-read chef.history.record --params '{"name":"宫保虾球"}'` |
|
|
96
|
+
| 补录做菜 | chef.history.record | receipt | `chef-cmd-read chef.history.record --params '{"name":"宫保虾球"}'` |
|
|
97
|
+
| 改评分 | chef.history.record | receipt | `chef-cmd-read chef.history.record --params '{"name":"宫保虾球"}'` |
|
|
98
|
+
| 查看历史 | chef.history.query | list | `chef-cmd-read chef.history.query --params '{"name":"宫保虾球"}'` |
|
|
99
|
+
| 查看统计 | chef.history.query | list | `chef-cmd-read chef.history.query --params '{"kind":"stats"}'` |
|
|
100
|
+
| 体检 | chef.history.query | list | `chef-cmd-read chef.history.query --params '{"kind":"quality"}'` |
|
|
101
|
+
|
|
102
|
+
相关场景:chef.cooking.run、chef.help.lookup、chef.history.query、chef.history.record、chef.recipe.search、chef.recipe.view、chef.recipe.write、chef.shopping.query(8 联动,key 字符串后续票落表时冻结)。
|
|
103
|
+
<!-- HELP-AUTO-END -->
|
|
104
|
+
|
|
105
|
+
## 环境与出 scope
|
|
106
|
+
|
|
107
|
+
- 路径类取值一律读配置文件 `~/.ilife/chef.yaml`(**配置文件是唯一真相,环境变量不参与配置**):库目录=`db.dir`(空串=数据目录 `~/.ilife/data/`,首次读时自动建)、库文件名=`db.name`(默认 `chef_data.db`)、产物目录=`html.dir`(默认 `cook_html/help`)、HELP 与速查表的主体名=`files.help`/`files.lookup`;`ILIFE_CONFIG_DIR` 设定且非空即整体接管配置目录。取值面与环境项见 docs/env.md。
|
|
108
|
+
- 出 scope:定时任务(老家零定时代码,外部定时以外置为准)、面板(二期单 MAP)、combos.yaml 一律不碰(走后续票;shopping/recipe 跨技能仅复制 prompt);真实数据禁迁,测试 tmp 隔离;Python 老家只读对照(D:/2Study/StudyNotes/SKILLS/私家大厨)。
|
package/dist/cli/cmd_read.js
CHANGED
|
@@ -5,11 +5,16 @@
|
|
|
5
5
|
// 取数(fetch/db.ts 已落盘,以其签名为准):openChefDb/closeChefDb/listRecipes/filterRecipes/searchRecipes/getRecipeDetail/addRecipe/updateRecipe/addIngredient(h,recipeId,input)/addStep(h,recipeId,input)/deprecateRecipe/recordHistory/queryHistory(h,recipeId?)/historyStats/buildShoppingList/healthCheck。
|
|
6
6
|
// 口径:policy WriteOp(add/update/deprecate)+ RecipeOp(add/update/discard/add-ingredient/add-step,CLI 兼容 discard=deprecate);queryHistory 无参返全量;buildShoppingList 合并行含 optional/category 标记。
|
|
7
7
|
import { writeFileSync } from 'node:fs';
|
|
8
|
+
import { join, resolve } from 'node:path';
|
|
8
9
|
import { ChefFetchError, ChefPolicyError, openChefDb, closeChefDb, listRecipes, filterRecipes, searchRecipes, getRecipeDetail, addRecipe, updateRecipe, deprecateRecipe, addIngredient, addStep, recordHistory, queryHistory, historyStats, buildShoppingList, healthCheck, } from '../fetch/index.js';
|
|
9
|
-
import { resolveDbPath } from '../fetch/paths.js';
|
|
10
|
+
import { resolveDbPath, resolveDbDir, dbFilename } from '../fetch/paths.js';
|
|
11
|
+
import { isConfigKey, runConfigKey } from './config.js';
|
|
12
|
+
// #706 · 配置体检:设置页专用的一条只读命令,同走「进分派层之前拦下」这条口(判据住 src/health.ts)。
|
|
13
|
+
import { isHealthCheckKey, runHealthCheckKey } from './health.js';
|
|
10
14
|
import { needName, needNames, validateCategory, validateRating } from '../policy/index.js';
|
|
11
|
-
import { chefShapeFor, buildChefEnvelope, renderEnvelopeHtml, assertHtmlSize, toRecipeItem, recipeDetail, buildRecipeSearch, buildRecipeReceipt, buildCookingRun, buildShopping, buildHistoryRecord, buildHistoryQuery, toHistoryItem, buildHelpItems, ChefRenderError, } from '../render/index.js';
|
|
12
|
-
import { buildHelpLookup } from '../help/index.js';
|
|
15
|
+
import { chefShapeFor, buildChefEnvelope, renderEnvelopeHtml, assertHtmlSize, toRecipeItem, recipeDetail, buildRecipeSearch, buildRecipeReceipt, buildCookingRun, buildShopping, buildHistoryRecord, buildHistoryQuery, toHistoryItem, buildHelpItems, fillTemplate, loadTemplate, templateFor, ChefRenderError, } from '../render/index.js';
|
|
16
|
+
import { buildHelpLookup, buildChefHelpDelivery, buildChefLookupLanding, deliverChefHelp, } from '../help/index.js';
|
|
17
|
+
import { helpReuseWindowOf } from 'base-paint/save-html';
|
|
13
18
|
const DEFAULT_TIMEOUT_MS = 30000;
|
|
14
19
|
// #43 F2 一期限制:FILTER 维度只读(recipe.search 透传过滤),recipe.write 一期只写主表,维度表落库走二期。
|
|
15
20
|
const FILTER_KEYS = ['cuisine', 'season', 'method', 'flavor', 'tag', 'meal', 'cookware', 'difficulty', 'status', 'maxTime', 'filter'];
|
|
@@ -20,10 +25,6 @@ function preflight() {
|
|
|
20
25
|
const v = process.versions.node.split('.').map(Number);
|
|
21
26
|
if (!(v[0] > 22 || (v[0] === 22 && v[1] >= 13)))
|
|
22
27
|
fail(1, 'node 低于 22.13:' + process.versions.node);
|
|
23
|
-
const p = process.env.SKILLS_DB_PATH;
|
|
24
|
-
if (!p)
|
|
25
|
-
fail(1, 'SKILLS_DB_PATH 未设置(无默认值,必设)');
|
|
26
|
-
return p;
|
|
27
28
|
}
|
|
28
29
|
function todayStr() {
|
|
29
30
|
return new Date().toISOString().slice(0, 10);
|
|
@@ -76,6 +77,33 @@ function pickNum(params, key) {
|
|
|
76
77
|
return Number(v.trim());
|
|
77
78
|
return undefined;
|
|
78
79
|
}
|
|
80
|
+
/** HELP 产物吃的复用窗口(毫秒):缺省**一天**、`reuseHours` 可改(`0`=每次都落新的)。
|
|
81
|
+
* 换算与坏参判定都在共用件(`helpReuseWindowOf` 把坏参 `RangeError` 交给这里给的处理器)⇒ 归到出口的
|
|
82
|
+
* 「参数错」那一档(exit 2),与其余四家同档:坏参绝不静默当 0。 */
|
|
83
|
+
const helpWindowOrFail = helpReuseWindowOf((m) => fail(2, m));
|
|
84
|
+
function dispatchHelp(params) {
|
|
85
|
+
const dbPath = join(resolve(resolveDbDir()), dbFilename());
|
|
86
|
+
const mode = params.mode === undefined ? undefined : String(params.mode);
|
|
87
|
+
const q = params.q === undefined ? undefined : String(params.q);
|
|
88
|
+
if (mode !== undefined && q !== undefined)
|
|
89
|
+
fail(2, '参数 q 与 mode 互斥:q=现找,mode=速查表产物');
|
|
90
|
+
if (mode !== undefined && mode !== 'lookup')
|
|
91
|
+
fail(2, 'mode 非法(' + String(mode) + '):本键只认 lookup');
|
|
92
|
+
const reuseMs = helpWindowOrFail(params);
|
|
93
|
+
if (q !== undefined)
|
|
94
|
+
return { data: { ...buildHelpItems(buildHelpLookup(), q), mode: 'lookup', query: q } };
|
|
95
|
+
if (mode === 'lookup') {
|
|
96
|
+
return {
|
|
97
|
+
data: { ...buildHelpItems(buildHelpLookup(), undefined), mode: 'lookup' },
|
|
98
|
+
deliver: { target: buildChefLookupLanding(dbPath), reuseMs },
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
const { html, target, index } = buildChefHelpDelivery(dbPath, new Date());
|
|
102
|
+
return {
|
|
103
|
+
data: { ...index, mode: 'file', bytes: Buffer.byteLength(html, 'utf8') },
|
|
104
|
+
deliver: { html, target, reuseMs },
|
|
105
|
+
};
|
|
106
|
+
}
|
|
79
107
|
// 八键分发:读走 fetch 读,写走 fetch 写+口径校验;未知键上游已拦,此处再拦一道。
|
|
80
108
|
function dispatch(key, params) {
|
|
81
109
|
const dbPath = resolveDbPath();
|
|
@@ -338,11 +366,10 @@ function dispatch(key, params) {
|
|
|
338
366
|
fail(2, 'history.query 只接受 kind=timeline/stats/quality/backup');
|
|
339
367
|
return null;
|
|
340
368
|
}
|
|
341
|
-
case 'chef.help.lookup':
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
return
|
|
345
|
-
}
|
|
369
|
+
case 'chef.help.lookup':
|
|
370
|
+
// #215:本键由 `dispatchHelp` 在**开库之前**处理(只读页不建库);走到这里说明 main 的路由被改坏了。
|
|
371
|
+
fail(1, '内部错误:chef.help.lookup 须走 dispatchHelp(开库之前)');
|
|
372
|
+
return null;
|
|
346
373
|
default:
|
|
347
374
|
fail(3, '未知 chef key:' + key);
|
|
348
375
|
return null;
|
|
@@ -376,8 +403,6 @@ async function main() {
|
|
|
376
403
|
const o = parseArgs(process.argv.slice(2));
|
|
377
404
|
if (!o.key)
|
|
378
405
|
fail(2, '用法:chef-cmd-read <chef.key> [--params JSON对象] [--html 输出路径] [--timeout 毫秒]');
|
|
379
|
-
const dbPath = preflight();
|
|
380
|
-
void dbPath;
|
|
381
406
|
let params = {};
|
|
382
407
|
if (o.params !== undefined) {
|
|
383
408
|
try {
|
|
@@ -389,6 +414,19 @@ async function main() {
|
|
|
389
414
|
if (typeof params !== 'object' || params === null || Array.isArray(params))
|
|
390
415
|
fail(2, '--params 须为 JSON 对象');
|
|
391
416
|
}
|
|
417
|
+
// #695:三个配置 key(`chef.config.read/write/reset`)在库目录预检与形状表之前拦下——
|
|
418
|
+
// 读写配置不该要求库已配,它们也不进 `CHEF_KEY_SHAPES`(不是唤醒词命令,见 `src/cli/config.ts`)。
|
|
419
|
+
if (isConfigKey(o.key)) {
|
|
420
|
+
process.stdout.write(runConfigKey(o.key, params) + '\n');
|
|
421
|
+
return;
|
|
422
|
+
}
|
|
423
|
+
// #706 · 配置体检(`chef.config.check`):同样是设置页专用的只读命令,同样在预检之前拦下——
|
|
424
|
+
// 它要报的正是「库在哪、通不通」,不能先要求库目录已配。只读:不建目录、不写文件、不落默认配置。
|
|
425
|
+
if (isHealthCheckKey(o.key)) {
|
|
426
|
+
process.stdout.write(runHealthCheckKey(o.key) + '\n');
|
|
427
|
+
return;
|
|
428
|
+
}
|
|
429
|
+
preflight();
|
|
392
430
|
let shape = null;
|
|
393
431
|
try {
|
|
394
432
|
shape = chefShapeFor(o.key);
|
|
@@ -400,10 +438,23 @@ async function main() {
|
|
|
400
438
|
const timer = setTimeout(() => { toast('cmd_read 超时 terminate(' + o.timeout + 'ms),已终止取数'); process.exit(4); }, o.timeout);
|
|
401
439
|
timer.unref();
|
|
402
440
|
let env = null;
|
|
441
|
+
let delivery;
|
|
403
442
|
try {
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
443
|
+
// #215:HELP 在开库之前分派(只读页不建库);其余七键照旧走 dispatch(内部开库)。
|
|
444
|
+
const help = o.key === 'chef.help.lookup' ? dispatchHelp(params) : null;
|
|
445
|
+
env = buildChefEnvelope(o.key, help ? help.data : dispatch(o.key, params));
|
|
446
|
+
if (help?.deliver !== undefined) {
|
|
447
|
+
// 本键的产物:缺省=HELP 全页(自带 html);`mode:"lookup"`=速查表页(由信封走本技能模板渲染)。
|
|
448
|
+
const html = help.deliver.html ?? fillTemplate(loadTemplate(templateFor(o.key)), renderEnvelopeHtml(env));
|
|
449
|
+
assertHtmlSize(html);
|
|
450
|
+
delivery = deliverChefHelp({
|
|
451
|
+
explicit: o.html,
|
|
452
|
+
target: help.deliver.target,
|
|
453
|
+
html,
|
|
454
|
+
...(help.deliver.reuseMs === undefined ? {} : { reuseMs: help.deliver.reuseMs }),
|
|
455
|
+
});
|
|
456
|
+
}
|
|
457
|
+
else if (o.html) {
|
|
407
458
|
const html = renderEnvelopeHtml(env);
|
|
408
459
|
assertHtmlSize(html);
|
|
409
460
|
try {
|
|
@@ -421,14 +472,23 @@ async function main() {
|
|
|
421
472
|
fail(2, '口径失败:' + e.message);
|
|
422
473
|
if (e instanceof ChefRenderError)
|
|
423
474
|
fail(5, '渲染失败:' + e.message);
|
|
424
|
-
|
|
475
|
+
// 落盘失败:共用件 `saveHtmlFile` 的 code(`EEXIST`/`EINVAL`/`EIO`)原样穿过,落到 exit 5。
|
|
476
|
+
if (/^E[A-Z]+$/.test(String(e?.code)))
|
|
477
|
+
fail(5, '落盘失败:' + (e.message || String(e)));
|
|
478
|
+
// 配置件(`base-link-core`)的报错本身就是人话(带行号与文件名):归「预检」那一档原样交回。
|
|
479
|
+
if (/(配置文件|配置项|测试缺隔离)/.test(e.message ?? ''))
|
|
425
480
|
fail(1, e.message);
|
|
481
|
+
// #215:help 支一步取数都没有(只渲染 + 落盘),未知错只可能出在渲染(共享模板抛的普通 Error
|
|
482
|
+
// 没有 code)或落盘 ⇒ 归 exit 5,不落到「未知失败 4」。其余七键保持原样(取数面宽,无法这样归类)。
|
|
483
|
+
if (o.key === 'chef.help.lookup')
|
|
484
|
+
fail(5, '渲染/落盘失败:' + (e.message || String(e)));
|
|
426
485
|
fail(4, '未知失败:' + (e.message || String(e)));
|
|
427
486
|
}
|
|
428
487
|
finally {
|
|
429
488
|
clearTimeout(timer);
|
|
430
489
|
}
|
|
431
|
-
|
|
490
|
+
// #83 口径的顶层追加:`delivery{mode,path,bytes}` 只追加,既有五字段一字不改、序不变。
|
|
491
|
+
process.stdout.write(JSON.stringify(delivery ? { ...env, delivery } : env) + '\n');
|
|
432
492
|
}
|
|
433
493
|
await main();
|
|
434
494
|
//# sourceMappingURL=cmd_read.js.map
|
package/dist/cli/cmd_read.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cmd_read.js","sourceRoot":"","sources":["../../src/cli/cmd_read.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cmd_read.js","sourceRoot":"","sources":["../../src/cli/cmd_read.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/** 三个 key 的唯一定义地(插件侧镜像同值,见 `packages/plugin-chef/src/bridge.ts`)。 */
|
|
2
|
+
export declare const CONFIG_KEYS: {
|
|
3
|
+
readonly read: "chef.config.read";
|
|
4
|
+
readonly write: "chef.config.write";
|
|
5
|
+
readonly reset: "chef.config.reset";
|
|
6
|
+
};
|
|
7
|
+
/** 是不是配置 key(分派层拦截用)。 */
|
|
8
|
+
export declare function isConfigKey(key: string): boolean;
|
|
9
|
+
/**
|
|
10
|
+
* 跑一个配置 key,返回整行 envelope JSON。
|
|
11
|
+
*
|
|
12
|
+
* 三个 key 的载荷:读 → `{path, dataDir, created, values}`;写 → 入参 `{values}`,回执 `{path, values}`;
|
|
13
|
+
* 重置 → `{path, backupPath}`(`backupPath` 为 null 表示本来就没有配置文件)。
|
|
14
|
+
*/
|
|
15
|
+
export declare function runConfigKey(key: string, params: Record<string, unknown>): string;
|
|
16
|
+
//# sourceMappingURL=config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/cli/config.ts"],"names":[],"mappings":"AAeA,qEAAqE;AACrE,eAAO,MAAM,WAAW;;;;CAId,CAAC;AAEX,yBAAyB;AACzB,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAEhD;AAyCD;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAejF"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
/** 设置页专用的三个配置 key:读/写/重置。**它们不是唤醒词命令**。
|
|
2
|
+
*
|
|
3
|
+
* 为什么事实住这儿、不进 `src/policy/wakewords.ts` 那张唤醒词表:那张表管的是**唤醒词命令**
|
|
4
|
+
* (短语→key→形状→示例),要进 HELP 与唤醒词计数;这三个 key 只由设置页(插件)经既有
|
|
5
|
+
* 「RPC → spawn 技能 CLI」通道调用,没有唤醒词、不进 HELP、也不该出现在用户的命令面上。
|
|
6
|
+
* 按「一条命令的事实只住一处」的同一取向,它们的唯一定义地是这里,并由 `cmd_read.ts` 在
|
|
7
|
+
* **预检与分派层之前**拦下来(读写配置不该要求库目录已配、也不需要形状表里有它)。
|
|
8
|
+
*
|
|
9
|
+
* 输出仍守唯一出口那条规矩:stdout 一行 envelope JSON(version/skill/shape/key/data 五字段)。
|
|
10
|
+
* 解析器与校验在 `base-link-core`:本件只把它的报错原样交给人看(配置件第 N 行那句人话)。
|
|
11
|
+
*/
|
|
12
|
+
import { ENVELOPE_VERSION } from 'base-link-core';
|
|
13
|
+
import { loadChefConfig, resetChefConfig, saveChefConfig } from '../config.js';
|
|
14
|
+
/** 三个 key 的唯一定义地(插件侧镜像同值,见 `packages/plugin-chef/src/bridge.ts`)。 */
|
|
15
|
+
export const CONFIG_KEYS = {
|
|
16
|
+
read: 'chef.config.read',
|
|
17
|
+
write: 'chef.config.write',
|
|
18
|
+
reset: 'chef.config.reset',
|
|
19
|
+
};
|
|
20
|
+
/** 是不是配置 key(分派层拦截用)。 */
|
|
21
|
+
export function isConfigKey(key) {
|
|
22
|
+
return key === CONFIG_KEYS.read || key === CONFIG_KEYS.write || key === CONFIG_KEYS.reset;
|
|
23
|
+
}
|
|
24
|
+
/** 本技能的 envelope skill 名(与 `render/envelope.ts` 的 `createEnvelope({skill:'chef'})` 同值)。 */
|
|
25
|
+
const CHEF_SKILL = 'chef';
|
|
26
|
+
function fail(code, msg) {
|
|
27
|
+
console.error('ERR ' + code + ': ' + msg);
|
|
28
|
+
process.exit(code);
|
|
29
|
+
}
|
|
30
|
+
function envelope(key, shape, data) {
|
|
31
|
+
return JSON.stringify({ version: ENVELOPE_VERSION, skill: CHEF_SKILL, shape, key, data });
|
|
32
|
+
}
|
|
33
|
+
/** 局部写:给的组按键覆盖,组里没给的子项保留现值(设置页一次只提交改动过的项)。 */
|
|
34
|
+
function mergeValues(current, incoming) {
|
|
35
|
+
const out = {};
|
|
36
|
+
for (const [key, value] of Object.entries(current))
|
|
37
|
+
out[key] = value;
|
|
38
|
+
for (const [key, value] of Object.entries(incoming)) {
|
|
39
|
+
const group = typeof value === 'object' && value !== null && !Array.isArray(value);
|
|
40
|
+
const base = out[key];
|
|
41
|
+
if (!group) {
|
|
42
|
+
out[key] = value;
|
|
43
|
+
continue;
|
|
44
|
+
}
|
|
45
|
+
const merged = { ...(typeof base === 'object' && base !== null ? base : {}) };
|
|
46
|
+
for (const [child, inner] of Object.entries(value))
|
|
47
|
+
merged[child] = inner;
|
|
48
|
+
out[key] = merged;
|
|
49
|
+
}
|
|
50
|
+
return out;
|
|
51
|
+
}
|
|
52
|
+
/** 人话交回:base-link-core 的 `ConfigError` 报文里已经带了行号与文件名,别包成栈。 */
|
|
53
|
+
function withHumanError(run) {
|
|
54
|
+
try {
|
|
55
|
+
return run();
|
|
56
|
+
}
|
|
57
|
+
catch (e) {
|
|
58
|
+
fail(1, e instanceof Error ? e.message : String(e));
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* 跑一个配置 key,返回整行 envelope JSON。
|
|
63
|
+
*
|
|
64
|
+
* 三个 key 的载荷:读 → `{path, dataDir, created, values}`;写 → 入参 `{values}`,回执 `{path, values}`;
|
|
65
|
+
* 重置 → `{path, backupPath}`(`backupPath` 为 null 表示本来就没有配置文件)。
|
|
66
|
+
*/
|
|
67
|
+
export function runConfigKey(key, params) {
|
|
68
|
+
if (key === CONFIG_KEYS.read) {
|
|
69
|
+
const c = withHumanError(() => loadChefConfig());
|
|
70
|
+
return envelope(key, 'detail', { path: c.path, dataDir: c.dataDir, created: c.created, values: c.values });
|
|
71
|
+
}
|
|
72
|
+
if (key === CONFIG_KEYS.write) {
|
|
73
|
+
const raw = params['values'];
|
|
74
|
+
if (typeof raw !== 'object' || raw === null || Array.isArray(raw))
|
|
75
|
+
fail(2, '缺参数 values(须为对象)');
|
|
76
|
+
const current = withHumanError(() => loadChefConfig()).values;
|
|
77
|
+
const merged = mergeValues(current, raw);
|
|
78
|
+
const r = withHumanError(() => saveChefConfig(merged));
|
|
79
|
+
return envelope(key, 'receipt', { path: r.path, values: merged });
|
|
80
|
+
}
|
|
81
|
+
const r = withHumanError(() => resetChefConfig());
|
|
82
|
+
return envelope(key, 'receipt', { path: r.path, backupPath: r.backupPath });
|
|
83
|
+
}
|
|
84
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/cli/config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAElD,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAE/E,qEAAqE;AACrE,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,IAAI,EAAE,kBAAkB;IACxB,KAAK,EAAE,mBAAmB;IAC1B,KAAK,EAAE,mBAAmB;CAClB,CAAC;AAEX,yBAAyB;AACzB,MAAM,UAAU,WAAW,CAAC,GAAW;IACrC,OAAO,GAAG,KAAK,WAAW,CAAC,IAAI,IAAI,GAAG,KAAK,WAAW,CAAC,KAAK,IAAI,GAAG,KAAK,WAAW,CAAC,KAAK,CAAC;AAC5F,CAAC;AAED,2FAA2F;AAC3F,MAAM,UAAU,GAAG,MAAe,CAAC;AAEnC,SAAS,IAAI,CAAC,IAAY,EAAE,GAAW;IACrC,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,CAAC,CAAC;IAC1C,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACrB,CAAC;AAED,SAAS,QAAQ,CAAC,GAAW,EAAE,KAAoB,EAAE,IAAa;IAChE,OAAO,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,gBAAgB,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC;AAC5F,CAAC;AAED,8CAA8C;AAC9C,SAAS,WAAW,CAAC,OAAqB,EAAE,QAAsB;IAChE,MAAM,GAAG,GAAiB,EAAE,CAAC;IAC7B,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC;QAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;IACrE,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;QACpD,MAAM,KAAK,GAAG,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACnF,MAAM,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;QACtB,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,GAAG,CAAC,GAAG,CAAC,GAAG,KAA6B,CAAC;YACzC,SAAS;QACX,CAAC;QACD,MAAM,MAAM,GAA4B,EAAE,GAAG,CAAC,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI,CAAC,CAAC,CAAE,IAAgC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;QACpI,KAAK,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAgC,CAAC;YAAE,MAAM,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC;QACrG,GAAG,CAAC,GAAG,CAAC,GAAG,MAA8B,CAAC;IAC5C,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,8DAA8D;AAC9D,SAAS,cAAc,CAAI,GAAY;IACrC,IAAI,CAAC;QACH,OAAO,GAAG,EAAE,CAAC;IACf,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,IAAI,CAAC,CAAC,EAAE,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IACtD,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,YAAY,CAAC,GAAW,EAAE,MAA+B;IACvE,IAAI,GAAG,KAAK,WAAW,CAAC,IAAI,EAAE,CAAC;QAC7B,MAAM,CAAC,GAAG,cAAc,CAAC,GAAG,EAAE,CAAC,cAAc,EAAE,CAAC,CAAC;QACjD,OAAO,QAAQ,CAAC,GAAG,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;IAC7G,CAAC;IACD,IAAI,GAAG,KAAK,WAAW,CAAC,KAAK,EAAE,CAAC;QAC9B,MAAM,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC7B,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC;YAAE,IAAI,CAAC,CAAC,EAAE,kBAAkB,CAAC,CAAC;QAC/F,MAAM,OAAO,GAAG,cAAc,CAAC,GAAG,EAAE,CAAC,cAAc,EAAE,CAAC,CAAC,MAAiC,CAAC;QACzF,MAAM,MAAM,GAAG,WAAW,CAAC,OAAO,EAAE,GAAmB,CAAC,CAAC;QACzD,MAAM,CAAC,GAAG,cAAc,CAAC,GAAG,EAAE,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC;QACvD,OAAO,QAAQ,CAAC,GAAG,EAAE,SAAS,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IACpE,CAAC;IACD,MAAM,CAAC,GAAG,cAAc,CAAC,GAAG,EAAE,CAAC,eAAe,EAAE,CAAC,CAAC;IAClD,OAAO,QAAQ,CAAC,GAAG,EAAE,SAAS,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC;AAC9E,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/** 体检命令名(插件侧镜像同值,见 `packages/plugin-chef/src/bridge.ts`)。 */
|
|
2
|
+
export declare const HEALTH_CHECK_KEY: "chef.config.check";
|
|
3
|
+
/** 是不是体检命令(分派层拦截用)。 */
|
|
4
|
+
export declare function isHealthCheckKey(key: string): boolean;
|
|
5
|
+
/** 跑一次体检,返回整行 envelope JSON(`data` 即那份报告)。 */
|
|
6
|
+
export declare function runHealthCheckKey(key: string): string;
|
|
7
|
+
//# sourceMappingURL=health.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"health.d.ts","sourceRoot":"","sources":["../../src/cli/health.ts"],"names":[],"mappings":"AAaA,6DAA6D;AAC7D,eAAO,MAAM,gBAAgB,EAAG,mBAA4B,CAAC;AAK7D,uBAAuB;AACvB,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAErD;AAED,8CAA8C;AAC9C,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAUrD"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/** 配置体检这个只读命令的**技能入口装配**:把 `src/health.ts` 的报告包成唯一出口那行 envelope。
|
|
2
|
+
*
|
|
3
|
+
* 为什么这个 key 与三个配置命令同住 `cli/config.ts` 的旁边、而不进唤醒词那张表:那套登记管的是
|
|
4
|
+
* **唤醒词命令**(短语→key→形状→示例),要算进 HELP 与唤醒词计数。体检是**设置页专用**的只读出口
|
|
5
|
+
* (面板点一下才跑),没有唤醒词、不进 HELP,故按「一条命令的事实只住一处」与三个配置命令并列;
|
|
6
|
+
* `cmd_read.ts` 在**进预检与分派层之前**拦下它(体检不该要求库目录已配——它要报的正是「库在哪、通不通」)。
|
|
7
|
+
*
|
|
8
|
+
* 判据与文案住在 `src/health.ts`;本件只做包封,不重写一个字。
|
|
9
|
+
*/
|
|
10
|
+
import { ENVELOPE_VERSION } from 'base-link-core';
|
|
11
|
+
import { buildChefHealthReport } from '../health.js';
|
|
12
|
+
/** 体检命令名(插件侧镜像同值,见 `packages/plugin-chef/src/bridge.ts`)。 */
|
|
13
|
+
export const HEALTH_CHECK_KEY = 'chef.config.check';
|
|
14
|
+
/** 本技能的 envelope skill 名(与 `src/render/envelope.ts` 的 `createEnvelope({skill:'chef'})` 同值)。 */
|
|
15
|
+
const CHEF_SKILL = 'chef';
|
|
16
|
+
/** 是不是体检命令(分派层拦截用)。 */
|
|
17
|
+
export function isHealthCheckKey(key) {
|
|
18
|
+
return key === HEALTH_CHECK_KEY;
|
|
19
|
+
}
|
|
20
|
+
/** 跑一次体检,返回整行 envelope JSON(`data` 即那份报告)。 */
|
|
21
|
+
export function runHealthCheckKey(key) {
|
|
22
|
+
const report = buildChefHealthReport();
|
|
23
|
+
const envelope = {
|
|
24
|
+
version: ENVELOPE_VERSION,
|
|
25
|
+
skill: CHEF_SKILL,
|
|
26
|
+
shape: 'detail',
|
|
27
|
+
key,
|
|
28
|
+
data: report,
|
|
29
|
+
};
|
|
30
|
+
return JSON.stringify(envelope);
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=health.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"health.js","sourceRoot":"","sources":["../../src/cli/health.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAElD,OAAO,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAErD,6DAA6D;AAC7D,MAAM,CAAC,MAAM,gBAAgB,GAAG,mBAA4B,CAAC;AAE7D,+FAA+F;AAC/F,MAAM,UAAU,GAAG,MAAe,CAAC;AAEnC,uBAAuB;AACvB,MAAM,UAAU,gBAAgB,CAAC,GAAW;IAC1C,OAAO,GAAG,KAAK,gBAAgB,CAAC;AAClC,CAAC;AAED,8CAA8C;AAC9C,MAAM,UAAU,iBAAiB,CAAC,GAAW;IAC3C,MAAM,MAAM,GAAG,qBAAqB,EAAE,CAAC;IACvC,MAAM,QAAQ,GAAG;QACf,OAAO,EAAE,gBAAgB;QACzB,KAAK,EAAE,UAAU;QACjB,KAAK,EAAE,QAAyB;QAChC,GAAG;QACH,IAAI,EAAE,MAAM;KACb,CAAC;IACF,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;AAClC,CAAC"}
|
package/dist/config.d.ts
ADDED
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import type { ConfigRecord } from 'base-link-core';
|
|
2
|
+
/** 配置文件主体名:`<配置目录>/chef.yaml`。 */
|
|
3
|
+
export declare const CHEF_CONFIG_STEM: "chef";
|
|
4
|
+
/** 私家大厨那份配置表:键即设置页的行,一层嵌套(子集支持范围见 base-link-core README)。 */
|
|
5
|
+
export declare const CHEF_CONFIG_DEFAULTS: {
|
|
6
|
+
db: {
|
|
7
|
+
dir: string;
|
|
8
|
+
name: string;
|
|
9
|
+
};
|
|
10
|
+
html: {
|
|
11
|
+
dir: string;
|
|
12
|
+
};
|
|
13
|
+
files: {
|
|
14
|
+
help: string;
|
|
15
|
+
lookup: string;
|
|
16
|
+
};
|
|
17
|
+
};
|
|
18
|
+
/** 取值形状由默认值表派生(同一件事只有一个定义地)。 */
|
|
19
|
+
export type ChefConfigValues = typeof CHEF_CONFIG_DEFAULTS;
|
|
20
|
+
/** 读回来的一份配置:文件路径(人话报错要指它)+数据目录+取值。 */
|
|
21
|
+
export interface LoadedChefConfig {
|
|
22
|
+
readonly path: string;
|
|
23
|
+
readonly dataDir: string;
|
|
24
|
+
readonly created: boolean;
|
|
25
|
+
readonly values: ChefConfigValues;
|
|
26
|
+
}
|
|
27
|
+
/** 读一份配置(文件不存在即按默认值落一份并把配置目录/数据目录建出来)。 */
|
|
28
|
+
export declare function loadChefConfig(): LoadedChefConfig;
|
|
29
|
+
/** 写一份配置(写出去的是完整一份:没给的项按默认值补齐)。写完清记忆,同进程后续读也现取。 */
|
|
30
|
+
export declare function saveChefConfig(values: ConfigRecord): {
|
|
31
|
+
path: string;
|
|
32
|
+
};
|
|
33
|
+
/** 重置为默认(先另存 `<配置目录>/chef.yaml.bak`)。 */
|
|
34
|
+
export declare function resetChefConfig(): {
|
|
35
|
+
path: string;
|
|
36
|
+
backupPath: string | null;
|
|
37
|
+
};
|
|
38
|
+
/** 把配置里的相对段串拆成段(`cook_html/help` → `['cook_html','help']`;`\` 与 `/` 都认,
|
|
39
|
+
* 空段丢弃——Windows 用户手写路径时两种分隔符都会用)。段数由值决定,故「几段」这件事配置形状能表达。 */
|
|
40
|
+
export declare function splitDirSegments(value: string): string[];
|
|
41
|
+
//# sourceMappingURL=config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAEnD,kCAAkC;AAClC,eAAO,MAAM,gBAAgB,EAAG,MAAe,CAAC;AAEhD,6DAA6D;AAC7D,eAAO,MAAM,oBAAoB;;;;;;;;;;;;CAIhC,CAAC;AAEF,gCAAgC;AAChC,MAAM,MAAM,gBAAgB,GAAG,OAAO,oBAAoB,CAAC;AAE3D,sCAAsC;AACtC,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,gBAAgB,CAAC;CACnC;AAKD,0CAA0C;AAC1C,wBAAgB,cAAc,IAAI,gBAAgB,CAajD;AAED,mDAAmD;AACnD,wBAAgB,cAAc,CAAC,MAAM,EAAE,YAAY,GAAG;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAIrE;AAED,yCAAyC;AACzC,wBAAgB,eAAe,IAAI;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAI7E;AAED;6DAC6D;AAC7D,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAExD"}
|