skill-calorie 0.2.0 → 0.2.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 (130) hide show
  1. package/SKILL.md +54 -26
  2. package/dist/analysis/anomaly/common.d.ts.map +1 -1
  3. package/dist/analysis/anomaly/common.js +2 -1
  4. package/dist/analysis/anomaly/common.js.map +1 -1
  5. package/dist/analysis/cross.d.ts.map +1 -1
  6. package/dist/analysis/cross.js +3 -2
  7. package/dist/analysis/cross.js.map +1 -1
  8. package/dist/analysis/deficit.d.ts.map +1 -1
  9. package/dist/analysis/deficit.js +4 -0
  10. package/dist/analysis/deficit.js.map +1 -1
  11. package/dist/analysis/diet.js +2 -2
  12. package/dist/analysis/diet.js.map +1 -1
  13. package/dist/analysis/exercise.js +5 -5
  14. package/dist/analysis/exercise.js.map +1 -1
  15. package/dist/analysis/review.js +2 -2
  16. package/dist/analysis/review.js.map +1 -1
  17. package/dist/analysis/series.d.ts +7 -1
  18. package/dist/analysis/series.d.ts.map +1 -1
  19. package/dist/analysis/series.js +22 -6
  20. package/dist/analysis/series.js.map +1 -1
  21. package/dist/analysis/utils.d.ts +7 -0
  22. package/dist/analysis/utils.d.ts.map +1 -1
  23. package/dist/analysis/utils.js +7 -0
  24. package/dist/analysis/utils.js.map +1 -1
  25. package/dist/analysis/weightCompare3.js +2 -2
  26. package/dist/analysis/weightCompare3.js.map +1 -1
  27. package/dist/cli/cmd_read.d.ts +21 -3
  28. package/dist/cli/cmd_read.d.ts.map +1 -1
  29. package/dist/cli/cmd_read.js +460 -54
  30. package/dist/cli/cmd_read.js.map +1 -1
  31. package/dist/cli/keys.d.ts +89 -1
  32. package/dist/cli/keys.d.ts.map +1 -1
  33. package/dist/cli/keys.js +30 -0
  34. package/dist/cli/keys.js.map +1 -1
  35. package/dist/cli/write.d.ts +12 -9
  36. package/dist/cli/write.d.ts.map +1 -1
  37. package/dist/cli/write.js +133 -48
  38. package/dist/cli/write.js.map +1 -1
  39. package/dist/output.d.ts +55 -1
  40. package/dist/output.d.ts.map +1 -1
  41. package/dist/output.js +203 -5
  42. package/dist/output.js.map +1 -1
  43. package/dist/render/dietDocs.d.ts +45 -0
  44. package/dist/render/dietDocs.d.ts.map +1 -0
  45. package/dist/render/dietDocs.js +561 -0
  46. package/dist/render/dietDocs.js.map +1 -0
  47. package/dist/render/envelope.d.ts +32 -6
  48. package/dist/render/envelope.d.ts.map +1 -1
  49. package/dist/render/envelope.js +71 -0
  50. package/dist/render/envelope.js.map +1 -1
  51. package/dist/render/exercisePort.d.ts +161 -0
  52. package/dist/render/exercisePort.d.ts.map +1 -0
  53. package/dist/render/exercisePort.js +395 -0
  54. package/dist/render/exercisePort.js.map +1 -0
  55. package/dist/render/goal.d.ts.map +1 -1
  56. package/dist/render/goal.js +13 -2
  57. package/dist/render/goal.js.map +1 -1
  58. package/dist/render/goalPlate.d.ts +1 -1
  59. package/dist/render/goalPlate.d.ts.map +1 -1
  60. package/dist/render/goalPlate.js +5 -1
  61. package/dist/render/goalPlate.js.map +1 -1
  62. package/dist/render/helpCenter.d.ts +104 -0
  63. package/dist/render/helpCenter.d.ts.map +1 -0
  64. package/dist/render/helpCenter.js +386 -0
  65. package/dist/render/helpCenter.js.map +1 -0
  66. package/dist/render/html.d.ts.map +1 -1
  67. package/dist/render/html.js +2 -1
  68. package/dist/render/html.js.map +1 -1
  69. package/dist/render/index.d.ts +3 -0
  70. package/dist/render/index.d.ts.map +1 -1
  71. package/dist/render/index.js +2 -0
  72. package/dist/render/index.js.map +1 -1
  73. package/dist/render/nutritionPort.d.ts +89 -0
  74. package/dist/render/nutritionPort.d.ts.map +1 -0
  75. package/dist/render/nutritionPort.js +183 -0
  76. package/dist/render/nutritionPort.js.map +1 -0
  77. package/dist/render/nutritionPortDocs.d.ts +6 -0
  78. package/dist/render/nutritionPortDocs.d.ts.map +1 -0
  79. package/dist/render/nutritionPortDocs.js +317 -0
  80. package/dist/render/nutritionPortDocs.js.map +1 -0
  81. package/dist/render/photo.d.ts.map +1 -1
  82. package/dist/render/photo.js +5 -1
  83. package/dist/render/photo.js.map +1 -1
  84. package/dist/render/planPlate.d.ts +2 -1
  85. package/dist/render/planPlate.d.ts.map +1 -1
  86. package/dist/render/planPlate.js +6 -1
  87. package/dist/render/planPlate.js.map +1 -1
  88. package/dist/render/receipt.d.ts +47 -1
  89. package/dist/render/receipt.d.ts.map +1 -1
  90. package/dist/render/receipt.js +67 -3
  91. package/dist/render/receipt.js.map +1 -1
  92. package/dist/render/sportDocs.d.ts +14 -0
  93. package/dist/render/sportDocs.d.ts.map +1 -0
  94. package/dist/render/sportDocs.js +540 -0
  95. package/dist/render/sportDocs.js.map +1 -0
  96. package/dist/render/sportPortDocs.d.ts +8 -0
  97. package/dist/render/sportPortDocs.d.ts.map +1 -0
  98. package/dist/render/sportPortDocs.js +468 -0
  99. package/dist/render/sportPortDocs.js.map +1 -0
  100. package/dist/render/trendDocs.d.ts +11 -0
  101. package/dist/render/trendDocs.d.ts.map +1 -0
  102. package/dist/render/trendDocs.js +445 -0
  103. package/dist/render/trendDocs.js.map +1 -0
  104. package/dist/render/trendMiscPort.d.ts +127 -0
  105. package/dist/render/trendMiscPort.d.ts.map +1 -0
  106. package/dist/render/trendMiscPort.js +277 -0
  107. package/dist/render/trendMiscPort.js.map +1 -0
  108. package/dist/render/trendMiscPortDocs.d.ts +10 -0
  109. package/dist/render/trendMiscPortDocs.d.ts.map +1 -0
  110. package/dist/render/trendMiscPortDocs.js +397 -0
  111. package/dist/render/trendMiscPortDocs.js.map +1 -0
  112. package/dist/render/wizardPort.d.ts +125 -0
  113. package/dist/render/wizardPort.d.ts.map +1 -0
  114. package/dist/render/wizardPort.js +393 -0
  115. package/dist/render/wizardPort.js.map +1 -0
  116. package/dist/render/wizardPortDocs.d.ts +6 -0
  117. package/dist/render/wizardPortDocs.d.ts.map +1 -0
  118. package/dist/render/wizardPortDocs.js +274 -0
  119. package/dist/render/wizardPortDocs.js.map +1 -0
  120. package/dist/triggers/routing.d.ts +21 -21
  121. package/dist/triggers/routing.d.ts.map +1 -1
  122. package/dist/triggers/routing.js +60 -30
  123. package/dist/triggers/routing.js.map +1 -1
  124. package/package.json +2 -2
  125. package/templates/diet.html +2 -2
  126. package/templates/exercise.html +2 -2
  127. package/templates/goal.html +2 -2
  128. package/templates/help.html +2 -2
  129. package/templates/home.html +2 -2
  130. package/templates/photo-gallery.html +2 -2
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helpCenter.d.ts","sourceRoot":"","sources":["../../src/render/helpCenter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,386 @@
1
+ /** #88 · HELP 速查台(取 F3 并回补 F1/F2 独有能力)· 数据模型 + 壳落地。
2
+ *
3
+ * 三条口径(逐条对齐 `docs/research/t88-plan.md` v2 + `.scratch/orchestrator/t88-acceptance.md`):
4
+ * 1. **运行期派生,不做 codegen**:唯一权威是 `TRIGGERS`(436 条,`triggers/index.ts:48`),
5
+ * 本模块只把它**投影**成 `SceneData`(10 分组/54 子功能/436 场景),落盘 JSON 会构成
6
+ * 第二真相源,故不产。
7
+ * 2. **零 base-render 改动**:壳恒走 `renderHelpShell`(`base-render/src/help.ts:675`,冻结签名),
8
+ * 本模块只提供 `sceneData` + `assets`,不新增契约面、不自造第二份模板/样式/运行时。
9
+ * 3. **展示面常量取 F3 逐字**:分组 label/图标序取 `render_help_center.py:44-53`(F3 十组),
10
+ * 子功能序取 `:61-69`;SoT `CATEGORIES`(`triggers/index.ts:19-33`)是**13 条**且 diet 展示名
11
+ * 为「饮食记录」——差异已登记台账 **L-18**(`docs/research/t88-impl-a.md` §5),故不写
12
+ * 「label ⊆ CATEGORIES」这类会自红的守卫。
13
+ *
14
+ * 逐场景 CLI 形态文本(Q11/R17/R32):壳的 `cliText(scene) = scene.id`(`help.ts:391-393`)恒读
15
+ * `Scene.id`,故 **id 就是卡面展示面**:
16
+ * - 414 条新场景取 `key`(=真实键,与 F3 逐字相等);
17
+ * - **22 条 legacy 取 `main_prompt.cli` 原文**(R1-7 解耦):F3 的 `legacy_{wake_word}` 会让卡面
18
+ * 显示并复制一条**不存在的命令**(`help.ts` 侧无该键),差异已登记台账 **L-19**。
19
+ *
20
+ * **#106 回补(Q11 第二半:「F3 丢了逐场景 CLI 展示」)**:卡面 id 之外,另在**详情层**
21
+ * (壳的 Sheet)逐场景发一条 `editable_fields` 行「可执行命令」=**#81 路由层的 exec CLI**
22
+ * (`calorie-cmd-read calorie.*`,341/436;见 `helpSceneCli`)。三点口径:
23
+ * 1. **槽位**=冻结面既有的 `SceneEditableField`(`{name,label,value}`),**不新增契约面**;
24
+ * 落点对齐旧 ADR-0008 实施规范「`data_source` → ✅ cli 块 → L4 直接显示」。
25
+ * 2. **内容取路由层、不取 `main_prompt.cli` 原文**:后者 **376/436** 是已不存在的
26
+ * `python scripts/render_*.py`(370)/`mavis`(3)/`mmx`(2)/裸键(1)命令,展示它
27
+ * 违背 ADR-0008「必须遵守 3」(可一键复制执行)。
28
+ * 3. **非 exec 的 95 条不发该行**(#81 裁定:out-of-scope 10/legacy-chain 85,无单命令入口),
29
+ * 不造占位文案;`text` 态不加该行(纯文本索引,且 #88 D-3 锁「text 尖括号集恒 {<N>}」)。
30
+ */
31
+ import { ASSET_WRAPPERS, HELP_SHELL_ID, buildStyleSheet, escapeHtml, renderHelpShell } from 'base-paint';
32
+ import { TRIGGERS } from '../triggers/index.js';
33
+ import { routesFor } from '../triggers/routing.js';
34
+ import { COPY_RUNTIME_JS } from './copy.js';
35
+ import { CalorieRenderError } from './errors.js';
36
+ import { CALORIE_TEMPLATES, loadTemplate } from './templates.js';
37
+ /** 换行(仓库口径:`String.fromCharCode(10)`,不写字面 `\n`)。 */
38
+ const LF = String.fromCharCode(10);
39
+ /** 速查台标题面(F3 `卡路里.html` payload 逐字:`skill_name`/`title`)。 */
40
+ export const HELP_SKILL_NAME = '卡路里';
41
+ export const HELP_TITLE = '唤醒词速查台';
42
+ /** 10 分组(**F3 序 + F3 逐字 label/图标**,`render_help_center.py:44-53`)。
43
+ *
44
+ * 与 SoT `CATEGORIES`(13 条)的差异:① 本表只含**有场景落点**的 10 组;② diet 展示名 F3 是
45
+ * 「饮食」而 SoT 是「饮食记录」(L-18);③ 图标 `⚙️ profile`(F3)vs `🛠 profile`(SoT)。
46
+ * 台账见 `docs/research/t88-impl-a.md` §5。
47
+ */
48
+ export const HELP_GROUPS = Object.freeze([
49
+ { id: 'home', icon: '🏠', label: '主页' },
50
+ { id: 'diet', icon: '🍚', label: '饮食' },
51
+ { id: 'weight', icon: '⚖️', label: '体重' },
52
+ { id: 'exercise', icon: '🏃', label: '运动' },
53
+ { id: 'workout', icon: '💪', label: '健身计划' },
54
+ { id: 'goal', icon: '🎯', label: '目标管理' },
55
+ { id: 'body_detail', icon: '🧬', label: '身体细节' },
56
+ { id: 'body_photo', icon: '📸', label: '身材照片' },
57
+ { id: 'profile', icon: '⚙️', label: '基础信息' },
58
+ { id: 'analysis', icon: '📊', label: '分析' },
59
+ ]);
60
+ /** 7 个分组的**子功能显式顺序**(逐字照抄 `render_help_center.py:61-69`;未列出的子功能按首次
61
+ * 出现序,`既有唤醒词` 恒最后)。 */
62
+ export const HELP_SUBFUNC_ORDER = Object.freeze({
63
+ '基础信息': ['设置资料', '看档案', '改资料'],
64
+ '目标管理': ['定目标', '看目标', '改目标'],
65
+ '身体细节': ['记身体细节', '看身体细节', '比身体细节', '删身体细节'],
66
+ '运动': ['记运动', '改运动', '看运动', '运动分析', '运动复盘'],
67
+ '身材照片': ['存身材照', '看身材照', '比身材照', '管身材照'],
68
+ '饮食': ['记饮食', '改饮食', '看饮食', '查食品', '看营养', '看排行', '饮食复盘', '餐别分布'],
69
+ '健身计划': ['定训练计划', '看训练计划', '改训练计划', '落地训练', '计划复盘', '安全检查'],
70
+ });
71
+ /** legacy 分组收口:`复盘` → `分析`(`render_help_center.py:56-58`)。 */
72
+ export const HELP_LEGACY_CATEGORY = Object.freeze({ '复盘': '分析' });
73
+ /** legacy 子功能名(F3 恒把旧版条目收在「既有唤醒词」子功能下)。 */
74
+ export const HELP_LEGACY_SUBGROUP = '既有唤醒词';
75
+ /* ── #106 · 逐场景「可执行命令」回补(Q11 第二半) ────────────────────────────────
76
+ *
77
+ * 数据来源=**#81 路由层**(`triggers/routing.ts` 的 `WAKE_ROUTES`;exec 桶 341 条,
78
+ * `docs/research/t81-exec-smoke.md` 全量实跑 exit 0)。单一真相:本模块不自造键、
79
+ * 不读 `main_prompt.cli` 原文、不做 `python → calorie-cmd-read` 的二次翻译。
80
+ */
81
+ /** 字段名(`data-field` 承载值);**恒本模块常量**,不写第二份字面量。 */
82
+ export const HELP_CLI_FIELD_NAME = 'cli';
83
+ /** 对外文案(对齐 ADR-0008「可一键复制执行」口径)。 */
84
+ export const HELP_CLI_FIELD_LABEL = '可执行命令';
85
+ /** 唤醒词 → 该场景的**可执行 CLI**;无 exec 路由(#81 的 95 条 non-exec)→ `null`。
86
+ *
87
+ * 记身材照一词三命中(`body_photo_add_single`/`_note`/`_batch`):路由层按唤醒词给键,
88
+ * 三条同唤醒词场景取到同一条 CLI——如实照搬路由层口径,差异见 `t106-*.md` 台账。
89
+ */
90
+ export function helpSceneCli(wakeWord) {
91
+ for (const route of routesFor(wakeWord)) {
92
+ if (route.kind === 'exec')
93
+ return route.cli;
94
+ }
95
+ return null;
96
+ }
97
+ /** 该唤醒词的 `editable_fields`(无 exec CLI 时返空数组=**不发字段**,不造空值行)。 */
98
+ function cliFields(wakeWord) {
99
+ const cli = helpSceneCli(wakeWord);
100
+ return cli === null ? [] : [{ name: HELP_CLI_FIELD_NAME, label: HELP_CLI_FIELD_LABEL, value: cli }];
101
+ }
102
+ /** `output_type` → 徽章(**必须发 `SceneTypeBadge{text,bg,fg}`**,E-2)。
103
+ *
104
+ * 三档配色逐字取 F3 运行时 `TYPE_DEFAULT`(`卡路里.html` 的 `var TYPE_DEFAULT`,脚本段;
105
+ * 本 session 复算:`结果/回执 → #e8f2ff/#0a63ce`、`过程 → #e2f7f5/#00897b`)。
106
+ * 只发字符串会走 CSS 默认色=丢三档色(`help.ts:451-459`),故恒发对象。
107
+ * H-01 禁色表(`#0a84ff/#af52de/#ff375f/#0071e3`)**不含**本表两色(P-3 白名单断言)。
108
+ */
109
+ export const HELP_TYPE_BADGES = Object.freeze({
110
+ process: { text: '过程', bg: '#e2f7f5', fg: '#00897b' },
111
+ result: { text: '结果', bg: '#e8f2ff', fg: '#0a63ce' },
112
+ receipt: { text: '回执', bg: '#e8f2ff', fg: '#0a63ce' },
113
+ });
114
+ /** 联系作者(F3 payload 的 `contact.items` 逐字,含 Issues 一条)。 */
115
+ export const HELP_CONTACT = Object.freeze({
116
+ items: Object.freeze([
117
+ Object.freeze({ label: 'GitHub', value: 'https://github.com/FeatherHunter/SKILLS' }),
118
+ Object.freeze({ label: 'Issues', value: 'https://github.com/FeatherHunter/SKILLS/issues' }),
119
+ ]),
120
+ });
121
+ /** 新场景条目判定(与 SoT 结构一致:`SceneTrigger` 独有 `output_type` + `prompt_template`)。 */
122
+ function isSceneTrigger(trigger) {
123
+ return 'output_type' in trigger && 'prompt_template' in trigger;
124
+ }
125
+ /** 子功能排序键(F3 规则:显式序 → 未列出 → `既有唤醒词` 恒最后)。 */
126
+ function subfuncKey(category, subfunction) {
127
+ const order = HELP_SUBFUNC_ORDER[category];
128
+ if (order !== undefined && order.includes(subfunction))
129
+ return [0, order.indexOf(subfunction), subfunction];
130
+ if (subfunction === HELP_LEGACY_SUBGROUP)
131
+ return [2, 0, subfunction];
132
+ return [1, 0, subfunction];
133
+ }
134
+ function compareKey(a, b) {
135
+ if (a[0] !== b[0])
136
+ return a[0] - b[0];
137
+ if (a[1] !== b[1])
138
+ return a[1] - b[1];
139
+ return a[2] < b[2] ? -1 : a[2] > b[2] ? 1 : 0;
140
+ }
141
+ /** 运行期派生:`TRIGGERS` → `SceneData`(10 分组/54 子功能/436 场景)。
142
+ *
143
+ * 纯函数、零 I/O、零缓存;两次同参调用逐字相等(P-2 口径)。
144
+ */
145
+ export function buildHelpSceneData(opts = {}) {
146
+ const updatedAt = typeof opts.updatedAt === 'string' && opts.updatedAt !== '' ? opts.updatedAt : undefined;
147
+ const groups = HELP_GROUPS.map((group) => ({
148
+ id: group.id,
149
+ icon: group.icon,
150
+ label: group.label,
151
+ subgroups: [],
152
+ }));
153
+ const byLabel = new Map(groups.map((group) => [group.label, group]));
154
+ const push = (scene, category, subfunction) => {
155
+ const group = byLabel.get(category);
156
+ if (group === undefined)
157
+ return; // 非 10 组的 SoT 分类(食品库/综合等)不入速查台(F3 同口径)
158
+ let subgroup = group.subgroups.find((item) => item.label === subfunction);
159
+ if (subgroup === undefined) {
160
+ subgroup = { id: group.id + '_' + (group.subgroups.length + 1), label: subfunction, scenes: [] };
161
+ group.subgroups.push(subgroup);
162
+ }
163
+ subgroup.scenes.push(scene);
164
+ };
165
+ /* ── 414 条新场景:按(子功能序,order,name)排序;`id` = key ── */
166
+ const newTriggers = TRIGGERS.filter(isSceneTrigger).slice().sort((a, b) => {
167
+ const cmp = compareKey(subfuncKey(a.category, a.subfunction), subfuncKey(b.category, b.subfunction));
168
+ if (cmp !== 0)
169
+ return cmp;
170
+ if (a.order !== b.order)
171
+ return a.order - b.order;
172
+ return a.name < b.name ? -1 : a.name > b.name ? 1 : 0;
173
+ });
174
+ for (const trigger of newTriggers) {
175
+ const badge = HELP_TYPE_BADGES[trigger.output_type];
176
+ const fields = cliFields(trigger.wake_word);
177
+ const scene = {
178
+ id: trigger.key,
179
+ title: trigger.name,
180
+ wake_word: trigger.wake_word,
181
+ status: '',
182
+ prompt_template: trigger.prompt_template,
183
+ ...(badge === undefined ? {} : { types: [badge] }),
184
+ ...(fields.length === 0 ? {} : { editable_fields: fields }),
185
+ };
186
+ push(scene, trigger.category, trigger.subfunction !== '' ? trigger.subfunction : HELP_LEGACY_SUBGROUP);
187
+ }
188
+ /* ── 22 条 legacy:按唤醒词排序;`id` = `main_prompt.cli` 原文(R1-7,台账 L-19) ── */
189
+ const legacyTriggers = TRIGGERS.filter((trigger) => !isSceneTrigger(trigger))
190
+ .slice()
191
+ .sort((a, b) => (a.wake_word < b.wake_word ? -1 : a.wake_word > b.wake_word ? 1 : 0));
192
+ for (const trigger of legacyTriggers) {
193
+ const fields = cliFields(trigger.wake_word);
194
+ const scene = {
195
+ id: trigger.main_prompt.cli,
196
+ title: trigger.wake_word,
197
+ wake_word: trigger.wake_word,
198
+ status: '',
199
+ prompt_template: trigger.main_prompt.text,
200
+ ...(fields.length === 0 ? {} : { editable_fields: fields }),
201
+ };
202
+ const category = HELP_LEGACY_CATEGORY[trigger.category] ?? trigger.category;
203
+ push(scene, category, HELP_LEGACY_SUBGROUP);
204
+ }
205
+ /* ── 子功能排序(F3:显式序 → 首次出现序 → 既有唤醒词最后) ── */
206
+ for (const group of groups) {
207
+ group.subgroups.sort((a, b) => compareKey(subfuncKey(group.label, a.label), subfuncKey(group.label, b.label)));
208
+ }
209
+ const rendered = groups.filter((group) => group.subgroups.length > 0);
210
+ const sceneCount = rendered.reduce((total, group) => total + group.subgroups.reduce((sub, item) => sub + item.scenes.length, 0), 0);
211
+ const subtitle = String(rendered.length) + ' 分类 · ' + String(sceneCount) + ' 场景'
212
+ + (updatedAt === undefined ? '' : ' · 更新于 ' + updatedAt);
213
+ return {
214
+ skill_name: HELP_SKILL_NAME,
215
+ title: HELP_TITLE,
216
+ subtitle,
217
+ contact: HELP_CONTACT,
218
+ groups: rendered,
219
+ };
220
+ }
221
+ /* ── S3 · 看板页入口(#107):6 个 view 页模板 → 速查台「看板页入口」块 ──────────────
222
+ *
223
+ * 背景(#107/地图 #63 D4「6 个死模板并入 HELP」):`templates/*.html` 6 件此前只被
224
+ * 装载器与发布门读,**生产渲染链零消费=死文件**。本模块是它们的**唯一消费者**:
225
+ * 逐件经 `loadTemplate` 读盘 → 抽取三个锚点(`<h1>` 页名/`<p class="lead">` 一句说明/
226
+ * `<pre class="view-cli">` 取数命令)→ 走 `SceneData.meta_blocks`(base-paint 契约
227
+ * 既有槽位,`html` 原样透传)渲染进速查台。**改模板一个字,速查台产物即变**——
228
+ * 「被真正使用」由此可机械验证(`test/skill-t11.test.mjs`)。
229
+ *
230
+ * 锚点口径:每件**恰 1 处**,缺失/重复/空值即抛(`missing-data`;命令非 `calorie-cmd-read`
231
+ * 开头即 `bad-input`),不返空、不静默跳过(仓库「缺失阻断不返空」口径)。
232
+ */
233
+ export const HELP_VIEW_ENTRIES_META_ID = 'view-entries';
234
+ export const HELP_VIEW_ENTRIES_META_TITLE = '看板页入口';
235
+ /** 抽取锚点(**字面量恒此处一份**;模板侧只负责出现恰 1 次)。 */
236
+ const VIEW_ENTRY_ANCHORS = {
237
+ title: '<h1>([^<]*)</h1>',
238
+ lead: '<p class="lead">([^<]*)</p>',
239
+ cli: '<pre class="view-cli">([^<]*)</pre>',
240
+ };
241
+ function pickAnchor(html, pattern, name, label) {
242
+ const hits = [...html.matchAll(new RegExp(pattern, 'g'))].map((match) => match[1].trim());
243
+ if (hits.length !== 1) {
244
+ throw new CalorieRenderError('missing-data', '模板 ' + name + ' 的 ' + label + ' 必须恰 1 处,实测 ' + String(hits.length));
245
+ }
246
+ if (hits[0] === '')
247
+ throw new CalorieRenderError('missing-data', '模板 ' + name + ' 的 ' + label + ' 为空');
248
+ return hits[0];
249
+ }
250
+ /** 6 件模板 → 看板页入口(顺序恒 `CALORIE_TEMPLATES`;逐件真读盘,缺件即抛)。 */
251
+ export function buildHelpViewEntries() {
252
+ return CALORIE_TEMPLATES.map((name) => {
253
+ const html = loadTemplate(name);
254
+ const cli = pickAnchor(html, VIEW_ENTRY_ANCHORS.cli, name, '<pre class="view-cli">');
255
+ if (!cli.startsWith('calorie-cmd-read ')) {
256
+ throw new CalorieRenderError('bad-input', '模板 ' + name + ' 的取数命令非 calorie-cmd-read 开头:' + cli);
257
+ }
258
+ return {
259
+ name,
260
+ title: pickAnchor(html, VIEW_ENTRY_ANCHORS.title, name, '<h1>'),
261
+ lead: pickAnchor(html, VIEW_ENTRY_ANCHORS.lead, name, '<p class="lead">'),
262
+ cli,
263
+ };
264
+ });
265
+ }
266
+ /** 入口块 HTML(`meta_blocks[].html` **原样透传** ⇒ 本函数自负转义)。 */
267
+ export function renderViewEntriesHtml(entries = buildHelpViewEntries()) {
268
+ const items = entries.map((entry) => '<li data-view-entry="' + escapeHtml(entry.name) + '">'
269
+ + '<b>' + escapeHtml(entry.title) + '</b> ' + escapeHtml(entry.lead) + '<br>'
270
+ + '<code style="white-space:pre-wrap;word-break:break-all">' + escapeHtml(entry.cli) + '</code>'
271
+ + '</li>');
272
+ return '<ol class="view-entries">' + items.join(LF) + '</ol>';
273
+ }
274
+ /** 速查台「看板页入口」块(`meta_blocks` 槽位;`id`/`title` 恒本模块常量)。 */
275
+ export function helpViewEntriesMetaBlock(entries = buildHelpViewEntries()) {
276
+ return { id: HELP_VIEW_ENTRIES_META_ID, title: HELP_VIEW_ENTRIES_META_TITLE, html: renderViewEntriesHtml(entries) };
277
+ }
278
+ /* ── S2 · 壳落地:三态同源(file/inline/text),恒走 `renderHelpShell` ───────── */
279
+ /** 交付形态(P-5:默认 `file`;`inline` 供宿主页面内嵌;`text` 为纯文本索引接缝)。 */
280
+ export const HELP_CENTER_MODES = ['file', 'inline', 'text'];
281
+ /** 壳的共享资产(**唯一产出者恒为 base-paint**:helpers 取 `COPY_RUNTIME_JS`=
282
+ * `buildSharedHelpersJs()` 的逐字产出,样式取 `buildStyleSheet().css`;技能侧零自产)。 */
283
+ export function helpCenterAssets() {
284
+ return { sharedHelpersJs: COPY_RUNTIME_JS, sharedCssText: buildStyleSheet().css };
285
+ }
286
+ /** 取 `<section id="ilife-help-shell">…</section>` 片段(**按深度配对**,不靠正则贪婪)。 */
287
+ function sectionFragment(html) {
288
+ const anchor = 'id="' + HELP_SHELL_ID + '"';
289
+ const anchorIndex = html.indexOf(anchor);
290
+ if (anchorIndex < 0)
291
+ throw new CalorieRenderError('missing-data', 'HELP 壳产物缺锚点 ' + anchor);
292
+ const start = html.lastIndexOf('<section', anchorIndex);
293
+ if (start < 0)
294
+ throw new CalorieRenderError('missing-data', 'HELP 壳产物锚点前无 <section>');
295
+ const open = /<section\b/g;
296
+ const close = /<\/section>/g;
297
+ let depth = 0;
298
+ let cursor = start;
299
+ while (cursor < html.length) {
300
+ open.lastIndex = cursor;
301
+ close.lastIndex = cursor;
302
+ const nextOpen = open.exec(html);
303
+ const nextClose = close.exec(html);
304
+ if (nextClose === null)
305
+ break;
306
+ if (nextOpen !== null && nextOpen.index < nextClose.index) {
307
+ depth += 1;
308
+ cursor = nextOpen.index + nextOpen[0].length;
309
+ }
310
+ else {
311
+ depth -= 1;
312
+ cursor = nextClose.index + nextClose[0].length;
313
+ if (depth === 0)
314
+ return html.slice(start, cursor);
315
+ }
316
+ }
317
+ throw new CalorieRenderError('missing-data', 'HELP 壳产物 <section> 未闭合');
318
+ }
319
+ /** `inline` 态:**片段自带 `<style>`(钉死落点=片段最前)+ helpers(片段最后)**。
320
+ *
321
+ * 片段无 `<head>`,若不带 `<style>` 则整页无样式(P-5 蓝队补充);包裹标签恒读
322
+ * `ASSET_WRAPPERS`(不写第二份字面量)。
323
+ */
324
+ function inlineFragment(html, assets) {
325
+ const fragment = sectionFragment(html);
326
+ const style = ASSET_WRAPPERS.sharedCssText.openTag + assets.sharedCssText + ASSET_WRAPPERS.sharedCssText.closeTag;
327
+ const helpers = ASSET_WRAPPERS.sharedHelpersJs.openTag + assets.sharedHelpersJs
328
+ + ASSET_WRAPPERS.sharedHelpersJs.closeTag;
329
+ return style + LF + fragment + LF + helpers;
330
+ }
331
+ /** `text` 态:同一 `SceneData` 的纯文本索引(无标签、无脚本;供 CLI/日志面复用)。
332
+ *
333
+ * 末尾追加同一份「看板页入口」(#107):与 `file`/`inline` 的 `meta_blocks` 块**同源同序**,
334
+ * 使三态在内容上仍是一份数据换三个载体。入口行缩进 2 空格(场景行恒 4 空格,
335
+ * `help-center-91` 的 `textSceneIds` 只认 4 空格行,故不污染 436 条场景序)。
336
+ */
337
+ function renderTextIndex(data, entries) {
338
+ const lines = [data.skill_name + ' ' + data.title];
339
+ if (typeof data.subtitle === 'string')
340
+ lines.push(data.subtitle);
341
+ for (const group of data.groups) {
342
+ lines.push('');
343
+ lines.push('[' + group.label + ']');
344
+ for (const subgroup of group.subgroups) {
345
+ lines.push(' ' + subgroup.label + ' (' + subgroup.id + ')');
346
+ for (const scene of subgroup.scenes) {
347
+ lines.push(' ' + scene.wake_word + ' · ' + scene.id);
348
+ }
349
+ }
350
+ }
351
+ lines.push('');
352
+ lines.push('[' + HELP_VIEW_ENTRIES_META_TITLE + ']');
353
+ for (const entry of entries)
354
+ lines.push(' ' + entry.title + ' · ' + entry.cli);
355
+ return lines.join(LF) + LF;
356
+ }
357
+ /** HELP 速查台渲染(三态同源:同一 `SceneData` + 同一资产 + 同一 `renderHelpShell`)。
358
+ *
359
+ * - `file`:完整 HTML 文档(`<!DOCTYPE html>`…),落盘/`file://` 打开;
360
+ * - `inline`:`<style>` + `<section id="ilife-help-shell">` 片段 + helpers `<script>`;
361
+ * - `text`:纯文本索引(数据同源,只换载体)。
362
+ *
363
+ * 三态**都先过 `renderHelpShell`**(同一 schema 校验与同一填充器),故不存在第二套数据路径。
364
+ * #107:三态各自**同一份**「看板页入口」(6 件模板派生)——`file`/`inline` 走 `meta_blocks`,
365
+ * `text` 走文本段;签名与三态语义不变。
366
+ */
367
+ export function renderHelpCenterHtml(opts = {}) {
368
+ const mode = opts.mode === undefined ? 'file' : opts.mode;
369
+ if (!HELP_CENTER_MODES.includes(mode)) {
370
+ throw new CalorieRenderError('bad-input', 'HELP 交付形态非法:' + String(mode));
371
+ }
372
+ const baseData = opts.sceneData ?? buildHelpSceneData(opts.updatedAt === undefined ? {} : { updatedAt: opts.updatedAt });
373
+ const entries = buildHelpViewEntries();
374
+ const sceneData = {
375
+ ...baseData,
376
+ meta_blocks: [...(baseData.meta_blocks ?? []), helpViewEntriesMetaBlock(entries)],
377
+ };
378
+ const assets = helpCenterAssets();
379
+ const output = renderHelpShell({ sceneData, assets, strict: opts.strict === true });
380
+ if (mode === 'file')
381
+ return { mode, html: output.html, report: output.report };
382
+ if (mode === 'inline')
383
+ return { mode, html: inlineFragment(output.html, assets), report: output.report };
384
+ return { mode, html: renderTextIndex(sceneData, entries), report: output.report };
385
+ }
386
+ //# sourceMappingURL=helpCenter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helpCenter.js","sourceRoot":"","sources":["../../src/render/helpCenter.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"html.d.ts","sourceRoot":"","sources":["../../src/render/html.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"html.d.ts","sourceRoot":"","sources":["../../src/render/html.ts"],"names":[],"mappings":"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"}
@@ -438,7 +438,8 @@ export function renderPlanWizardHtml(v) {
438
438
  const warns = v.warnings.slice(0, 5).map((e) => '<div>' + escapeHtml(e) + '</div>').join('');
439
439
  const body = '<div class="' + cx('grid') + '">' +
440
440
  kpi('构建向导', v.errorCount === 0 ? '可落地' : '有硬止', '错误 ' + v.errorCount + ' 警告 ' + v.warningCount) +
441
- kpi('dryRun', '不写库', '预览插入 ' + v.insertedCount) +
441
+ // G15 #102 · 已检查≠已通过:坏计划也计 N,通过与否看 errorCount;错误态追加(X硬止)与首 KPI 的“有硬止”呼应。
442
+ kpi('纯校验', '不写库', '已检查 ' + v.checkedSessions + ' 个会话' + (v.errorCount > 0 ? '(' + v.errorCount + '硬止)' : '')) +
442
443
  '</div><div>' + errs + warns + '</div>';
443
444
  return pageShell('calorie', 'ilife:calorie:plan-wizard', '构建向导', body);
444
445
  }