skill-memo-ilife 0.1.0 → 0.2.0
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 +75 -0
- package/dist/cli/cmd_read.js +100 -14
- package/dist/cli/cmd_read.js.map +1 -1
- package/dist/help/helpFile.d.ts +39 -0
- package/dist/help/helpFile.d.ts.map +1 -0
- package/dist/help/helpFile.js +159 -0
- package/dist/help/helpFile.js.map +1 -0
- package/dist/help/manifest.d.ts +19 -0
- package/dist/help/manifest.d.ts.map +1 -0
- package/dist/help/manifest.js +19 -0
- package/dist/help/manifest.js.map +1 -0
- package/dist/help/memoOutput.d.ts +29 -0
- package/dist/help/memoOutput.d.ts.map +1 -0
- package/dist/help/memoOutput.js +115 -0
- package/dist/help/memoOutput.js.map +1 -0
- package/dist/help/sceneData.d.ts +33 -0
- package/dist/help/sceneData.d.ts.map +1 -0
- package/dist/help/sceneData.js +66 -0
- package/dist/help/sceneData.js.map +1 -0
- package/dist/help/scenes/checkin.d.ts +47 -0
- package/dist/help/scenes/checkin.d.ts.map +1 -0
- package/dist/help/scenes/checkin.js +72 -0
- package/dist/help/scenes/checkin.js.map +1 -0
- package/dist/help/scenes/init.d.ts +41 -0
- package/dist/help/scenes/init.d.ts.map +1 -0
- package/dist/help/scenes/init.js +45 -0
- package/dist/help/scenes/init.js.map +1 -0
- package/dist/help/scenes/memo.d.ts +63 -0
- package/dist/help/scenes/memo.d.ts.map +1 -0
- package/dist/help/scenes/memo.js +124 -0
- package/dist/help/scenes/memo.js.map +1 -0
- package/dist/help/scenes/mood.d.ts +48 -0
- package/dist/help/scenes/mood.d.ts.map +1 -0
- package/dist/help/scenes/mood.js +74 -0
- package/dist/help/scenes/mood.js.map +1 -0
- package/dist/help/scenes/remind.d.ts +75 -0
- package/dist/help/scenes/remind.d.ts.map +1 -0
- package/dist/help/scenes/remind.js +91 -0
- package/dist/help/scenes/remind.js.map +1 -0
- package/dist/help/scenes/search.d.ts +63 -0
- package/dist/help/scenes/search.d.ts.map +1 -0
- package/dist/help/scenes/search.js +132 -0
- package/dist/help/scenes/search.js.map +1 -0
- package/dist/help/scenes/sync.d.ts +40 -0
- package/dist/help/scenes/sync.d.ts.map +1 -0
- package/dist/help/scenes/sync.js +44 -0
- package/dist/help/scenes/sync.js.map +1 -0
- package/dist/help/scenes/wish.d.ts +63 -0
- package/dist/help/scenes/wish.d.ts.map +1 -0
- package/dist/help/scenes/wish.js +104 -0
- package/dist/help/scenes/wish.js.map +1 -0
- package/dist/render/envelope.d.ts.map +1 -1
- package/dist/render/envelope.js +4 -1
- package/dist/render/envelope.js.map +1 -1
- package/package.json +7 -4
package/SKILL.md
ADDED
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: skill-memo-ilife
|
|
3
|
+
description: "「备忘录HELP」→memo.help.lookup 出备忘录自己的 HELP 文件(老骨架 8 域/13 二级组/30 场景,走仓内通用 help 模板);唯一出口 memo-cmd-read。触发词:备忘录 HELP(不分大小写)。文件 DB 笔记:按关键词/时间/分类/子分类搜与看、记一条、改一条、删一条(真删须 confirm)、批量改分类、提醒(设/查/废弃/完成)、心愿排期、统计、飞书同步。"
|
|
4
|
+
---
|
|
5
|
+
# 备忘录(memo)SKILL
|
|
6
|
+
|
|
7
|
+
文件 DB 笔记:增删改查、分类、心愿排期、提醒路由、飞书同步。唯一出口 `memo-cmd-read <memo.key>`,argv+JSON(stdout)+exit,非 0 走 stderr。
|
|
8
|
+
|
|
9
|
+
## 快速开始
|
|
10
|
+
|
|
11
|
+
```sh
|
|
12
|
+
memo-cmd-read memo.search --params '{"q":"关键词"}'
|
|
13
|
+
memo-cmd-read memo.create --params '{"title":"买奶","category":"备忘"}'
|
|
14
|
+
memo-cmd-read memo.remind
|
|
15
|
+
memo-cmd-read memo.help.lookup # 说「备忘录 HELP」(不分大小写):缺省就落一份 HELP 文件
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
## 口径(M3)
|
|
19
|
+
|
|
20
|
+
- 顶层分类 4 种:备忘(默认)/心愿/打卡/情绪日记;子分类自由文本可空;子唤醒词自带顶层。
|
|
21
|
+
- 提醒四向:设置/查询/废弃(留笔记)/完成;真删须 confirm。
|
|
22
|
+
- 坏输入与缺失一律阻断,不返空数组冒充正常。
|
|
23
|
+
|
|
24
|
+
## 联动速查(构建期注入,勿手改)
|
|
25
|
+
|
|
26
|
+
<!-- HELP-AUTO-START -->
|
|
27
|
+
| 唤醒词 | key | shape | 例 |
|
|
28
|
+
|---|---|---|---|
|
|
29
|
+
| 按时间搜备忘 | memo.search | list | `memo-cmd-read memo.search --params '{"timeRange":"2026-09"}'` |
|
|
30
|
+
| 查已提醒备忘 | memo.remind | list | `memo-cmd-read memo.remind --params '{"done":false}'` |
|
|
31
|
+
| 批量改分类 | memo.batch | receipt | `memo-cmd-read memo.batch` |
|
|
32
|
+
| 改子分类 | memo.update | receipt | `memo-cmd-read memo.update --params '{"id":"<id>"}'` |
|
|
33
|
+
| 搜备忘 | memo.search | list | `memo-cmd-read memo.search` |
|
|
34
|
+
| 查备忘 | memo.search | list | `memo-cmd-read memo.search` |
|
|
35
|
+
| 看备忘 | memo.detail | detail | `memo-cmd-read memo.detail --params '{"id":"<id>"}'` |
|
|
36
|
+
| 看提醒 | memo.remind | list | `memo-cmd-read memo.remind` |
|
|
37
|
+
| 查提醒 | memo.remind | list | `memo-cmd-read memo.remind` |
|
|
38
|
+
| 设提醒 | memo.create | receipt | `memo-cmd-read memo.create --params '{"remindAt":"2026-10-01"}'` |
|
|
39
|
+
| 记提醒 | memo.create | receipt | `memo-cmd-read memo.create --params '{"remindAt":"2026-10-01"}'` |
|
|
40
|
+
| 废弃提醒 | memo.remove | receipt | `memo-cmd-read memo.remove --params '{"mode":"abandon"}'` |
|
|
41
|
+
| 完成心愿 | memo.update | receipt | `memo-cmd-read memo.update --params '{"done":true}'` |
|
|
42
|
+
| 心愿排期 | memo.wish | list | `memo-cmd-read memo.wish` |
|
|
43
|
+
| 记一条 | memo.create | receipt | `memo-cmd-read memo.create` |
|
|
44
|
+
| 添加笔记 | memo.create | receipt | `memo-cmd-read memo.create` |
|
|
45
|
+
| 记心愿 | memo.create | receipt | `memo-cmd-read memo.create --params '{"category":"心愿"}'` |
|
|
46
|
+
| 记打卡 | memo.create | receipt | `memo-cmd-read memo.create --params '{"category":"打卡"}'` |
|
|
47
|
+
| 记情绪日记 | memo.create | receipt | `memo-cmd-read memo.create --params '{"category":"情绪日记"}'` |
|
|
48
|
+
| 查心愿 | memo.wish | list | `memo-cmd-read memo.wish --params '{"category":"心愿"}'` |
|
|
49
|
+
| 查打卡 | memo.search | list | `memo-cmd-read memo.search --params '{"category":"打卡"}'` |
|
|
50
|
+
| 查情绪日记 | memo.search | list | `memo-cmd-read memo.search --params '{"category":"情绪日记"}'` |
|
|
51
|
+
| 改心愿 | memo.update | receipt | `memo-cmd-read memo.update --params '{"category":"心愿","id":"<id>"}'` |
|
|
52
|
+
| 改打卡 | memo.update | receipt | `memo-cmd-read memo.update --params '{"category":"打卡","id":"<id>"}'` |
|
|
53
|
+
| 改情绪日记 | memo.update | receipt | `memo-cmd-read memo.update --params '{"category":"情绪日记","id":"<id>"}'` |
|
|
54
|
+
| 删心愿 | memo.update | receipt | `memo-cmd-read memo.update --params '{"category":"心愿","id":"<id>"}'` |
|
|
55
|
+
| 删打卡 | memo.update | receipt | `memo-cmd-read memo.update --params '{"category":"打卡","id":"<id>"}'` |
|
|
56
|
+
| 删情绪日记 | memo.update | receipt | `memo-cmd-read memo.update --params '{"category":"情绪日记","id":"<id>"}'` |
|
|
57
|
+
|
|
58
|
+
相关场景:memo.batch、memo.create、memo.detail、memo.help.lookup、memo.remind、memo.remove、memo.search、memo.stats、memo.sync、memo.update、memo.wish(11 联动,key 字符串 P8 落表时冻结)。
|
|
59
|
+
<!-- HELP-AUTO-END -->
|
|
60
|
+
|
|
61
|
+
## HELP 交付(说「备忘录 HELP」走这里,不分大小写)
|
|
62
|
+
|
|
63
|
+
- **缺省就是交付物**:`memo-cmd-read memo.help.lookup` **原样调用**即落一份能打开的 HELP 文件——`<SKILLS_DB_PATH>/memo_html/备忘录_HELP_<YYYYMMDD_HHMMSS>.html`(扁平落 `memo_html/`,不加 `help/` 一层;8 域/13 二级组/30 场景,走仓内通用 help 模板)。stdout 的 `delivery.path` 是**绝对路径**、`delivery.bytes` 是文件字节数;回话就把这个路径给用户(回执即真相)。同一秒撞名自动递补 `_2`(再撞给 `_3`)。
|
|
64
|
+
**完成标准**:`delivery.path` 指的那个文件真的存在、大小=`delivery.bytes`、退出码 0——三条都核过才算交付,核不过就照实说失败。
|
|
65
|
+
- **要速查表才加参数**:`--params '{"mode":"lookup"}'` 落同目录 `备忘录_速查表_<YYYYMMDD_HHMMSS>.html`(28 条唤醒词一行一条:唤醒词/命令/形状/调用形/一句话)。与 HELP 文件**分名**,两份产物不撞车。
|
|
66
|
+
- **要现找才加参数**:`--params '{"q":"帮我搜备忘"}'` 只回命中条目(JSON),**不落盘**;要落盘再给 `--html`。`q` 与 `mode` 互斥,`mode` 只认 `lookup`,违反即退出码 2。
|
|
67
|
+
- **`--html <路径>`=显式落点**:逐字用你给的路径、缺父目录自动建、**覆盖写**(不参与同一秒 `_N` 递补)。给 `--html` 时缺省那支落整页 HELP,`q`/`mode:"lookup"` 那两支落该次的分节页。
|
|
68
|
+
- **边界**:看 HELP **不开库、不建库**——跑完 `<SKILLS_DB_PATH>/memo` 仍不存在;这条命令只交页面与索引,不读也不写笔记内容。
|
|
69
|
+
- **与上一节的关系**:正文「联动速查」块是**构建期注入的索引**(`scripts/build-help.mjs` 从唤醒词表注入 SKILL.md,勿手改),给 AI 按唤醒词找命令;**HELP 文件是缺省交付物**,给用户打开看。两者同源(同一张唤醒词表)、不是一份东西;显式 `mode:"lookup"` 落的那份是索引的页面版(`备忘录_速查表`),也不是 HELP 文件。
|
|
70
|
+
- **入口只认一条**:「备忘录 HELP」(不分大小写,用户 2026-09-12 裁定);其余唤醒词是场景别名,住上一节索引块,不另立 HELP 入口。
|
|
71
|
+
|
|
72
|
+
## 环境与出 scope
|
|
73
|
+
|
|
74
|
+
- SKILLS_DB_PATH(必设)+ lark-cli(同步须四门全绿),见 docs/env.md。
|
|
75
|
+
- 出 scope:定时任务、面板、本技能外联动;Python 老家只读对照。
|
package/dist/cli/cmd_read.js
CHANGED
|
@@ -2,11 +2,15 @@
|
|
|
2
2
|
// memo 唯一出口 cmd_read(M5 #35):argv+JSON(stdout)+exit;非 0 走 stderr;超时 terminate+TOAST 降级标记。
|
|
3
3
|
// 退出码对齐 skilllink 冻结:0 ok;1 预检;2 用法/参数;3 key;4 取数/超时;5 envelope/渲染/落盘。
|
|
4
4
|
// stdout 纯净:成功只打 envelope JSON 一行。
|
|
5
|
-
import {
|
|
5
|
+
import { existsSync } from 'node:fs';
|
|
6
6
|
import { join } from 'node:path';
|
|
7
7
|
import { openMemoDb, listNotes, getNote, searchNotes, addNote, updateNote, removeNote, larkReady, MemoFetchError } from '../fetch/index.js';
|
|
8
8
|
import { normalizeTop, normalizeSub, normalizeRemindAt, crudCreate, crudUpdate, crudRemove } from '../policy/index.js';
|
|
9
9
|
import { memoShapeFor, buildMemoEnvelope, renderEnvelopeHtml, assertHtmlSize, MemoRenderError } from '../render/index.js';
|
|
10
|
+
import { buildMemoHelpFileData, renderMemoHelpHtml } from '../help/helpFile.js';
|
|
11
|
+
import { buildHelpSceneIndex } from '../help/sceneData.js';
|
|
12
|
+
import { buildHelpLookup } from '../help/index.js';
|
|
13
|
+
import { HELP_FILE_STEM, LOOKUP_FILE_STEM, resolveStemTarget, deliverMemoHtml } from '../help/memoOutput.js';
|
|
10
14
|
import { MemoPolicyError } from '../fetch/errors.js';
|
|
11
15
|
const DEFAULT_TIMEOUT_MS = 30000;
|
|
12
16
|
function fail(code, msg) { console.error('ERR ' + code + ': ' + msg); process.exit(code); }
|
|
@@ -26,7 +30,69 @@ function needStr(params, name) {
|
|
|
26
30
|
fail(2, '缺参数 ' + name);
|
|
27
31
|
return v;
|
|
28
32
|
}
|
|
29
|
-
//
|
|
33
|
+
// ── #229 · 「备忘录 help」的交付装配(**在开库之前**走,照 skill-bill/src/cli/cmd_read.ts:493-495) ────
|
|
34
|
+
//
|
|
35
|
+
// 缺省(不给任何参数)= 全量 HELP 文件:`<SKILLS_DB_PATH>/memo_html/备忘录_HELP_<YYYYMMDD_HHMMSS>[_N].html`
|
|
36
|
+
// (扁平、不加 `help/` 层:裁决 1),独占落盘 + **绝对路径**回执(`delivery` 顶层追加,序在既有五字段之后)。
|
|
37
|
+
// 显式 `mode:"lookup"` = 速查表分名文件(主体 `备忘录_速查表`,裁决 2:一个键两种产物就分两个名字)。
|
|
38
|
+
// 显式 `q` = 现找:只回命中(stdout),给 `--html <路径>` 才落盘(检索式问答不刷目录)。
|
|
39
|
+
// 全程**不开库**:初始化判据=「**memo 库目录存在**」(票 6 V4:新库是目录 `<SKILLS_DB_PATH>/memo`,
|
|
40
|
+
// 不是老家的 `memo.db` 文件——本机实测 0 字节空壳 `memo.db` 在、真目录不在,老家口径当场判错),
|
|
41
|
+
// 且**只 stat、绝不建库**:免得「看帮助」把库目录 `mkdir` 出来。
|
|
42
|
+
const HELP_MODE_FILE = 'file';
|
|
43
|
+
/** 初始化状态:memo 库**目录**存在=已初始化(票 6 V4)。只 `stat`、不建目录;
|
|
44
|
+
* 判定本身异常 ⇒ `false`=横幅照显(fail-open:误显只多一条提示,误藏会让新用户找不到入口)。 */
|
|
45
|
+
function helpInitialized(dbPath) {
|
|
46
|
+
try {
|
|
47
|
+
return existsSync(join(dbPath, 'memo'));
|
|
48
|
+
}
|
|
49
|
+
catch {
|
|
50
|
+
return false;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
/** 速查支的 `list` 载荷:一行一唤醒词(短语/key/形状/调用形/一句话),全从 `WAKE_TABLE` 派生。 */
|
|
54
|
+
function buildLookupItems() {
|
|
55
|
+
return buildHelpLookup().map((h) => ({
|
|
56
|
+
id: h.phrase,
|
|
57
|
+
title: h.cli,
|
|
58
|
+
category: h.key,
|
|
59
|
+
shape: h.shape,
|
|
60
|
+
desc: h.desc,
|
|
61
|
+
}));
|
|
62
|
+
}
|
|
63
|
+
function dispatchHelp(params, dbPath) {
|
|
64
|
+
const now = new Date();
|
|
65
|
+
const mode = params.mode === undefined ? undefined : String(params.mode);
|
|
66
|
+
const q = params.q === undefined ? undefined : String(params.q);
|
|
67
|
+
const initialized = helpInitialized(dbPath);
|
|
68
|
+
if (mode !== undefined && q !== undefined)
|
|
69
|
+
fail(2, '参数 q 与 mode 互斥:q=现找,mode=速查表产物');
|
|
70
|
+
if (mode !== undefined && mode !== 'lookup')
|
|
71
|
+
fail(2, 'mode 非法(' + mode + '):本键只认 lookup');
|
|
72
|
+
if (q !== undefined) {
|
|
73
|
+
const items = buildLookupItems().filter((it) => q.includes(String(it.id)));
|
|
74
|
+
return { data: { items, total: items.length, mode: 'lookup', query: q } };
|
|
75
|
+
}
|
|
76
|
+
if (mode === 'lookup') {
|
|
77
|
+
const items = buildLookupItems();
|
|
78
|
+
return {
|
|
79
|
+
data: { items, total: items.length, mode: 'lookup' },
|
|
80
|
+
deliver: { target: resolveStemTarget(dbPath, LOOKUP_FILE_STEM, now) },
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
const data = buildMemoHelpFileData(now, { initialized });
|
|
84
|
+
if (String(data.version) !== buildHelpSceneIndex().version) {
|
|
85
|
+
fail(5, 'HELP 世代不一致:载荷 ' + data.version + ' ≠ 资产 ' + buildHelpSceneIndex().version);
|
|
86
|
+
}
|
|
87
|
+
const html = renderMemoHelpHtml(data);
|
|
88
|
+
assertHtmlSize(html);
|
|
89
|
+
// 索引载荷(`list` 形):一行一域,计数全派生;`memo.help.lookup`=HELP 文件的交付索引。
|
|
90
|
+
return {
|
|
91
|
+
data: { ...buildHelpSceneIndex(), mode: HELP_MODE_FILE },
|
|
92
|
+
deliver: { html, target: resolveStemTarget(dbPath, HELP_FILE_STEM, now) },
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
// 十一键分发:读走 fetch 读,写走 fetch 写+policy 校验,sync 走 lark 四门;未知键 upstream 已拦,此处再拦一道。
|
|
30
96
|
function dispatch(key, params, db) {
|
|
31
97
|
switch (key) {
|
|
32
98
|
case 'memo.search': {
|
|
@@ -96,6 +162,11 @@ function dispatch(key, params, db) {
|
|
|
96
162
|
metrics['cat.' + n.category] = (metrics['cat.' + n.category] || 0) + 1;
|
|
97
163
|
return { metrics };
|
|
98
164
|
}
|
|
165
|
+
// #229:本键由 `dispatchHelp` 在**开库之前**处理(只读页不建库);走到这里说明 main 的路由被改坏了。
|
|
166
|
+
// 照 skill-bill/src/cli/cmd_read.ts:449-451 的同一道内部断言——防的是「改回无条件开库」这个静默回退。
|
|
167
|
+
case 'memo.help.lookup':
|
|
168
|
+
fail(1, '内部错误:memo.help.lookup 须走 dispatchHelp(开库之前)');
|
|
169
|
+
return null;
|
|
99
170
|
default:
|
|
100
171
|
fail(3, '未知 memo key:' + key);
|
|
101
172
|
return null;
|
|
@@ -145,19 +216,27 @@ async function main() {
|
|
|
145
216
|
const timer = setTimeout(() => { toast('cmd_read 超时 terminate(' + o.timeout + 'ms),已终止取数'); process.exit(4); }, o.timeout);
|
|
146
217
|
timer.unref();
|
|
147
218
|
let env = null;
|
|
219
|
+
let delivery;
|
|
148
220
|
try {
|
|
149
|
-
|
|
150
|
-
const
|
|
151
|
-
env = buildMemoEnvelope(o.key, data);
|
|
152
|
-
|
|
153
|
-
|
|
221
|
+
// #229:`memo.help.lookup` 在**开库之前**分派(只读页不建库);其余 10 键照旧走 dispatch(内部开库)。
|
|
222
|
+
const help = o.key === 'memo.help.lookup' ? dispatchHelp(params, dbPath) : null;
|
|
223
|
+
env = buildMemoEnvelope(o.key, help ? help.data : dispatch(o.key, params, openMemoDb(join(dbPath, 'memo'))));
|
|
224
|
+
const built = env;
|
|
225
|
+
// B4 既有语义:`--html <路径>` 逐字写用户给的路径,内容仍是本包的 envelope 片段(`renderEnvelopeHtml`)。
|
|
226
|
+
const sectionHtml = () => {
|
|
227
|
+
const html = renderEnvelopeHtml(built);
|
|
154
228
|
assertHtmlSize(html);
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
229
|
+
return html;
|
|
230
|
+
};
|
|
231
|
+
if (help?.deliver !== undefined) {
|
|
232
|
+
// 本键的产物:缺省=HELP 全壳页(自带 html);`mode:"lookup"`=速查表分节页(由 envelope 渲染)。
|
|
233
|
+
const html = help.deliver.html ?? sectionHtml();
|
|
234
|
+
if (help.deliver.html !== undefined)
|
|
235
|
+
assertHtmlSize(html);
|
|
236
|
+
delivery = deliverMemoHtml({ explicit: o.html, target: help.deliver.target, html });
|
|
237
|
+
}
|
|
238
|
+
else if (o.html) {
|
|
239
|
+
delivery = deliverMemoHtml({ explicit: o.html, html: sectionHtml() });
|
|
161
240
|
}
|
|
162
241
|
}
|
|
163
242
|
catch (e) {
|
|
@@ -167,12 +246,19 @@ async function main() {
|
|
|
167
246
|
fail(2, '口径失败:' + e.message);
|
|
168
247
|
if (e instanceof MemoRenderError)
|
|
169
248
|
fail(5, '渲染失败:' + e.message);
|
|
249
|
+
// 落盘错误:`EACCES`/`ENOTDIR`/`ENOSPC`… 一律 exit 5(不静默当成功、不换形态降级)。
|
|
250
|
+
if (e?.code && /^E[A-Z]+$/.test(String(e.code))) {
|
|
251
|
+
fail(5, '落盘失败:' + (e.message || String(e)));
|
|
252
|
+
}
|
|
253
|
+
if (e.message?.includes('SKILLS_DB_PATH'))
|
|
254
|
+
fail(1, e.message);
|
|
170
255
|
fail(4, '未知失败:' + (e.message || String(e)));
|
|
171
256
|
}
|
|
172
257
|
finally {
|
|
173
258
|
clearTimeout(timer);
|
|
174
259
|
}
|
|
175
|
-
|
|
260
|
+
// #83/#144 口径的顶层追加:`delivery{mode,path,bytes}` 只追加,envelope 既有五字段一字不改、序不变。
|
|
261
|
+
process.stdout.write(JSON.stringify(delivery ? { ...env, delivery } : env) + '\n');
|
|
176
262
|
}
|
|
177
263
|
await main();
|
|
178
264
|
//# 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":";AACA,0FAA0F;AAC1F,uEAAuE;AACvE,mCAAmC;AACnC,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACxC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAC5I,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,iBAAiB,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACvH,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAC1H,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAGrD,MAAM,kBAAkB,GAAG,KAAK,CAAC;AAEjC,SAAS,IAAI,CAAC,IAAY,EAAE,GAAW,IAAW,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClH,SAAS,KAAK,CAAC,GAAW,IAAU,OAAO,CAAC,KAAK,CAAC,SAAS,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;AAErE,SAAS,SAAS;IAChB,MAAM,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACvD,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QAAE,IAAI,CAAC,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IACnG,MAAM,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC;IACrC,IAAI,CAAC,CAAC;QAAE,IAAI,CAAC,CAAC,EAAE,6BAA6B,CAAC,CAAC;IAC/C,OAAO,CAAC,CAAC;AACX,CAAC;AAED,SAAS,OAAO,CAAC,MAA+B,EAAE,IAAY;IAC5D,MAAM,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;IACvB,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC;QAAE,IAAI,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC,CAAC;IACpE,OAAO,CAAC,CAAC;AACX,CAAC;AAED,8EAA8E;AAC9E,SAAS,QAAQ,CAAC,GAAW,EAAE,MAA+B,EAAE,EAAU;IACxE,QAAQ,GAAG,EAAE,CAAC;QACZ,KAAK,aAAa,CAAC,CAAC,CAAC;YACnB,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,KAAK,SAAS;gBAClC,CAAC,CAAC,WAAW,CAAC,EAAE,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,QAAQ,EAAE,MAAM,CAAC,QAA8B,EAAE,GAAG,EAAE,MAAM,CAAC,GAAyB,EAAE,CAAC;gBAC/H,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,QAAQ,KAAK,SAAS,IAAI,CAAC,CAAC,QAAQ,KAAK,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;YACnG,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC;QACxC,CAAC;QACD,KAAK,aAAa,CAAC,CAAC,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,EAAE,EAAE,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC;QACxE,KAAK,aAAa,CAAC,CAAC,CAAC;YACnB,MAAM,CAAC,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;YAC7B,MAAM,GAAG,GAAG,YAAY,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YAC1C,MAAM,GAAG,GAAG,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACrC,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,iBAAiB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YAC3F,MAAM,CAAC,GAAG,OAAO,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC,CAAC;YACtF,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC;QAC/C,CAAC;QACD,KAAK,aAAa,CAAC,CAAC,CAAC;YACnB,MAAM,EAAE,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC;YACjC,MAAM,KAAK,GAAsB,EAAE,CAAC;YACpC,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;gBAC5D,MAAM,CAAC,GAAG,UAAU,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,OAAO,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,EAAE,EAAE,CAAC,CAAC;gBAChG,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC;gBAAC,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS;oBAAE,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC;YAC5E,CAAC;YACD,IAAI,MAAM,CAAC,QAAQ,KAAK,SAAS;gBAAE,KAAK,CAAC,QAAQ,GAAG,YAAY,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YAClF,IAAI,MAAM,CAAC,GAAG,KAAK,SAAS;gBAAE,KAAK,CAAC,GAAG,GAAG,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACnE,IAAI,MAAM,CAAC,QAAQ,KAAK,SAAS;gBAAE,KAAK,CAAC,QAAQ,GAAG,iBAAiB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YACvF,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS;gBAAE,KAAK,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,KAAK,IAAI,CAAC;YACjE,MAAM,CAAC,GAAG,UAAU,CAAC,EAAE,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC;YACpC,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC;QAC9C,CAAC;QACD,KAAK,aAAa,CAAC,CAAC,CAAC;YACnB,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;gBAC9B,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;gBACjC,UAAU,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;gBACvC,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,cAAc,GAAG,EAAE,EAAE,CAAC;YACpD,CAAC;YACD,MAAM,CAAC,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;YAC7B,UAAU,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;YAC3B,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC;QAC9C,CAAC;QACD,KAAK,aAAa,CAAC,CAAC,CAAC;YACnB,MAAM,KAAK,GAAG,SAAS,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;YACtD,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,KAAK,IAAI,CAAC;YAClC,MAAM,GAAG,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC;YAC5D,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC;QAC3C,CAAC;QACD,KAAK,WAAW,CAAC,CAAC,CAAC;YACjB,MAAM,KAAK,GAAG,SAAS,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,IAAI,CAAC,CAAC;YAC/D,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC;QACxC,CAAC;QACD,KAAK,WAAW,CAAC,CAAC,CAAC;YACjB,MAAM,IAAI,GAAG,SAAS,EAAE,CAAC;YACzB,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC,MAAM,GAAG,gBAAgB,EAAE,CAAC;QACzE,CAAC;QACD,KAAK,YAAY,CAAC,CAAC,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,wBAAwB,EAAE,CAAC;QAC1E,KAAK,YAAY,CAAC,CAAC,CAAC;YAClB,MAAM,GAAG,GAAG,SAAS,CAAC,EAAE,CAAC,CAAC;YAC1B,MAAM,OAAO,GAA2B,EAAE,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC;YAC9D,KAAK,MAAM,CAAC,IAAI,GAAG;gBAAE,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;YAC5F,OAAO,EAAE,OAAO,EAAE,CAAC;QACrB,CAAC;QACD;YAAS,IAAI,CAAC,CAAC,EAAE,cAAc,GAAG,GAAG,CAAC,CAAC;YAAC,OAAO,IAAI,CAAC;IACtD,CAAC;AACH,CAAC;AAED,SAAS,SAAS,CAAC,CAAW;IAC5B,MAAM,CAAC,GAAuG,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,kBAAkB,EAAE,CAAC;IAC7L,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAClC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,UAAU,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM;YAAE,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;aAC1D,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,QAAQ,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM;YAAE,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;aAC3D,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,WAAW,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC;YAClD,CAAC,CAAC,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YAC3B,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,IAAI,CAAC;gBAAE,IAAI,CAAC,CAAC,EAAE,kBAAkB,CAAC,CAAC;QACjF,CAAC;;YACI,IAAI,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/B,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC;AAED,KAAK,UAAU,IAAI;IACjB,MAAM,CAAC,GAAG,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3C,IAAI,CAAC,CAAC,CAAC,GAAG;QAAE,IAAI,CAAC,CAAC,EAAE,4EAA4E,CAAC,CAAC;IAClG,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAC3B,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,IAAI,CAAC,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QAC3B,IAAI,CAAC;YAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;QAAC,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YAAC,IAAI,CAAC,CAAC,EAAE,kBAAkB,CAAC,CAAC;QAAC,CAAC;QACjF,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;YAAE,IAAI,CAAC,CAAC,EAAE,qBAAqB,CAAC,CAAC;IAC7G,CAAC;IACD,IAAI,KAAK,GAAG,IAAI,CAAC;IACjB,IAAI,CAAC;QAAC,KAAK,GAAG,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IAAC,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QAAC,IAAI,CAAC,CAAC,EAAG,CAAW,CAAC,OAAO,CAAC,CAAC;IAAC,CAAC;IACjF,KAAK,KAAK,CAAC;IACX,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,wBAAwB,GAAG,CAAC,CAAC,OAAO,GAAG,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC;IAC3H,KAAK,CAAC,KAAK,EAAE,CAAC;IACd,IAAI,GAAG,GAAG,IAAI,CAAC;IACf,IAAI,CAAC;QACH,MAAM,EAAE,GAAG,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;QAC5C,MAAM,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;QACzC,GAAG,GAAG,iBAAiB,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QACrC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;YACX,MAAM,IAAI,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAC;YACrC,cAAc,CAAC,IAAI,CAAC,CAAC;YACrB,IAAI,CAAC;gBAAC,aAAa,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;YAAC,CAAC;YAC5C,OAAO,CAAC,EAAE,CAAC;gBAAC,IAAI,CAAC,CAAC,EAAE,YAAY,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC;YAAC,CAAC;QAC/C,CAAC;IACH,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,IAAI,CAAC,YAAY,cAAc;YAAE,IAAI,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC;QAC9D,IAAI,CAAC,YAAY,eAAe;YAAE,IAAI,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC;QAC/D,IAAI,CAAC,YAAY,eAAe;YAAE,IAAI,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC;QAC/D,IAAI,CAAC,CAAC,EAAE,OAAO,GAAG,CAAE,CAAW,CAAC,OAAO,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACzD,CAAC;YAAS,CAAC;QAAC,YAAY,CAAC,KAAK,CAAC,CAAC;IAAC,CAAC;IAClC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC;AACnD,CAAC;AAED,MAAM,IAAI,EAAE,CAAC"}
|
|
1
|
+
{"version":3,"file":"cmd_read.js","sourceRoot":"","sources":["../../src/cli/cmd_read.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/** `buildMemoHelpFileData` 的选项(**不对外开出口**:需要它的地方是出口层,本包今天没有外部消费者)。 */
|
|
2
|
+
interface MemoHelpFileOptions {
|
|
3
|
+
/** memo 库目录是否已存在(票 6 V4:口径=「库目录存在」,**不是**老的「`memo.db` 文件存在」)。
|
|
4
|
+
* 缺省 `false` ⇒ 横幅照显(误显只多一条提示,误藏会让新用户找不到入口)。 */
|
|
5
|
+
readonly initialized?: boolean;
|
|
6
|
+
}
|
|
7
|
+
/** 老 `%Y-%m-%d %H:%M` 等价物(本地时区、零填充;非法 Date 即坏参,不返空串)。 */
|
|
8
|
+
export declare function formatHelpMinute(now: Date): string;
|
|
9
|
+
/** 内容资产 + 派生 → 全量 HELP JSON(纯函数;`now` 显式传入以保证产物可复现)。
|
|
10
|
+
*
|
|
11
|
+
* 键集=5 必需键 + 三块可选键里的两块(`contact`/`version`/`init_banner`);
|
|
12
|
+
* `init_banner` **键常在**、显隐只走 `hidden`(载荷形状不随状态变,下游能断言同一个键集);
|
|
13
|
+
* `meta_blocks`(用户 V1 裁不用)与 `recommendations`(老 `memo_render.py` 无此键)**不传**。 */
|
|
14
|
+
export declare function buildMemoHelpFileData(now: Date, opts?: MemoHelpFileOptions): {
|
|
15
|
+
readonly skill_name: string;
|
|
16
|
+
readonly title: string;
|
|
17
|
+
readonly subtitle: string;
|
|
18
|
+
readonly contact: unknown;
|
|
19
|
+
readonly groups: readonly Record<string, unknown>[];
|
|
20
|
+
readonly version: string;
|
|
21
|
+
readonly init_banner: {
|
|
22
|
+
readonly title: string;
|
|
23
|
+
readonly subtitle: string;
|
|
24
|
+
readonly button_text: string;
|
|
25
|
+
readonly prompt: string;
|
|
26
|
+
readonly steps: readonly {
|
|
27
|
+
readonly title: string;
|
|
28
|
+
readonly desc: string;
|
|
29
|
+
}[];
|
|
30
|
+
readonly hidden: boolean;
|
|
31
|
+
};
|
|
32
|
+
};
|
|
33
|
+
/** 全量 HELP JSON → 全壳 HTML(模板唯一实现=共享层 verbatim 老实物;空分组抛 `missing-data`)。
|
|
34
|
+
*
|
|
35
|
+
* `HelpShellData` 只声明 5 键、运行时**全量透传**(模板契约 §一)⇒ 本模块多带的可选键是它的**超集**,
|
|
36
|
+
* 类型面在这一处收窄,**不改公共层**。 */
|
|
37
|
+
export declare function renderMemoHelpHtml(data: ReturnType<typeof buildMemoHelpFileData>): string;
|
|
38
|
+
export {};
|
|
39
|
+
//# sourceMappingURL=helpFile.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"helpFile.d.ts","sourceRoot":"","sources":["../../src/help/helpFile.ts"],"names":[],"mappings":"AAuIA,sEAAsE;AACtE,UAAU,mBAAmB;IAC3B;oDACgD;IAChD,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC;CAChC;AAED,yDAAyD;AACzD,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,IAAI,GAAG,MAAM,CAOlD;AAED;;;;iFAIiF;AACjF,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,GAAE,mBAAwB,GAAG;IAChF,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;IACpD,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,WAAW,EAAE;QACpB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;QACvB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;QAC1B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;QAC7B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;QACxB,QAAQ,CAAC,KAAK,EAAE,SAAS;YAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;YAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;SAAE,EAAE,CAAC;QAC7E,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;KAC1B,CAAC;CACH,CAsCA;AAED;;;2BAG2B;AAC3B,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,UAAU,CAAC,OAAO,qBAAqB,CAAC,GAAG,MAAM,CAGzF"}
|
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
/** #228 · 备忘录 HELP 的**渲染接线**:内容资产 + 派生 → 通用 help 模板(`base-paint/help-shell`)全页 HTML。
|
|
2
|
+
*
|
|
3
|
+
* 本模块**零 IO、零落盘**:落点与写盘全归 #229(`src/help/manifest.ts` + 出口的落盘那一小块)。
|
|
4
|
+
* 走 **A 路**(`renderHelpShellHtml`),**不新写页面**;`packages/base-render/**` 一行不改
|
|
5
|
+
* (要改渲染规则得改源 `assets/help-template.html` 再跑 `pnpm --filter base-paint gen:help-shell`)。
|
|
6
|
+
*
|
|
7
|
+
* ## 三块可选键与共享层「校验器/模板」的四处不一致(本票实测,逐条留证)
|
|
8
|
+
*
|
|
9
|
+
* 通用模板有**两条消费路**,对同一份载荷的要求**互相冲突**:
|
|
10
|
+
* - **A 路**(`renderHelpShellHtml`,本图的交付路径)**不做 schema 校验**,只要求 `groups` 非空;
|
|
11
|
+
* - **B 路**(`renderHelpShell` → `validateSceneData` → `SCENE_DATA_SCHEMA`)是 fail-closed 的校验器。
|
|
12
|
+
*
|
|
13
|
+
* **裁决 20(编排会话,2026-09-12)定规则**:本图走 A 路、维护者验收只看页面 ⇒
|
|
14
|
+
* **凡「满足校验器」与「页面渲染正确」冲突时,取页面正确那一边**,分歧逐条记账(记本文件 + `#242`),
|
|
15
|
+
* **不许改共享层**。
|
|
16
|
+
*
|
|
17
|
+
* | 键 | 校验器(B 路) | A 路模板运行时(`help-template.html`) | 本票取边(=裁决 20) |
|
|
18
|
+
* | --- | --- | --- | --- |
|
|
19
|
+
* | `init_banner.steps` | 只许 **`string[]`** ⇒ 对象数组报 `类型不符:期望 string,实际 object` | 读 `st.title`/`st.desc` ⇒ 要 **`{title,desc}[]`** | **传 `{title,desc}[]`**:`string[]` 会渲染出 6 个**有序号、无文案**的空格子,那是**用户看得见的缺陷**;校验器那半条归共享层缺陷 `#242` |
|
|
20
|
+
* | `init_banner.hidden` | **闭集外** ⇒ `schema-invalid 多余字段:hidden` | 显隐**唯一**开关(`INIT_BANNER && !INIT_BANNER.hidden`) | **传**:不传则「已初始化」的差异永远显不出来 |
|
|
21
|
+
* | `init_banner.closable` | **闭集外** ⇒ `schema-invalid` | `=== false` 才不画 ✕(缺省=画 ✕) | **不传**:缺省已等价于老的 `closable:true`,且少一处闭集外字段 |
|
|
22
|
+
* | `contact.items[].url` | **闭集外** ⇒ `schema-invalid` | `it.url` 为真才渲染成 `<a>` | **不传**:用户 V6=B 要「可点链接」的意图**落空**,链接由 `value` 明文承载;根因同归 `#242` |
|
|
23
|
+
*
|
|
24
|
+
* ⚠️ **本票载荷只对 A 路合法**:喂给 B 路校验器会因 `hidden`(以及 `steps` 的对象形)判 `schema-invalid`
|
|
25
|
+
* ——这是**共享层缺陷的证据,不是本票交付的缺陷**(`#233` 的读者别误判)。
|
|
26
|
+
*
|
|
27
|
+
* ## 页面上不许出现的东西(用户裁定)
|
|
28
|
+
*
|
|
29
|
+
* - **命令不上页面**(U6):载荷里不出现 `memo.*` 命令名,只有唤醒词;
|
|
30
|
+
* - **不标缺失**(U1/U2/U3):HELP 是最终完整体,不写「当前无唤醒词」这类状态标记;
|
|
31
|
+
* - **HELP 自身唤醒词不上页面**(V1):`meta_blocks` 整块**不传**(`meta_blocks[1]` 那块「怎么喊我」)。
|
|
32
|
+
* 注:`meta_blocks` 是**合规落点但已裁不用**(裁决 15);`subtitle` 在 A 路模板**无渲染落点**
|
|
33
|
+
* (读完即弃,只进 `help-data`),故本模块**不派生 `subtitle` 的渲染用途**,只按老口径照传。
|
|
34
|
+
*/
|
|
35
|
+
import { renderHelpShellHtml } from 'base-paint/help-shell';
|
|
36
|
+
import { MEMO_HELP_GROUPS, buildHelpSceneIndex } from './sceneData.js';
|
|
37
|
+
import { MemoRenderError } from '../render/errors.js';
|
|
38
|
+
/** 5 键头(老 `memo_render.py` 逐字)。`title` **不含**技能名 ⇒ 文档标题由共享层拼成 `备忘录 · 使用手册`。
|
|
39
|
+
* 两个常量**不对外开出口**(票 5 §2.2:本件「运行时 3 个 + 类型 0 个」;要用它们的是出口层,不是别人)。 */
|
|
40
|
+
const MEMO_HELP_SKILL_NAME = '备忘录';
|
|
41
|
+
const MEMO_HELP_TITLE = '使用手册';
|
|
42
|
+
/** 首次使用横幅的 `prompt` 取自该场景的 `prompt_template`(单源,不抄第二份文案)。 */
|
|
43
|
+
const HELP_INIT_SCENE_ID = 'memo_init_setup';
|
|
44
|
+
/** 老 `init_banner.steps` 的 6 步(`memo_render.py` 的 `_init_banner` 逐字,**是 `{title,desc}` 对象数组**)。
|
|
45
|
+
* 取对象形而非 schema 要的 `string[]`:模板读 `st.title`/`st.desc`(锚点 `INIT_BANNER.steps.map`),
|
|
46
|
+
* 传字符串会渲染成 6 个**有序号、无文案**的空格子=用户看得见的缺陷 ⇒ 裁决 20「取页面正确那一边」。 */
|
|
47
|
+
const HELP_INIT_STEPS = Object.freeze([
|
|
48
|
+
Object.freeze({ title: '检查并配置 Python', desc: '版本与依赖检测' }),
|
|
49
|
+
Object.freeze({ title: '数据存储', desc: 'SQLite + FTS5 全文搜索' }),
|
|
50
|
+
Object.freeze({ title: '飞书 CLI', desc: '安装并授权(核心联动)' }),
|
|
51
|
+
Object.freeze({ title: '环境变量', desc: 'SKILLS_DB_PATH / MEMO_MEDIA_DIR' }),
|
|
52
|
+
Object.freeze({ title: '初始化数据库', desc: '建表 + 提醒调度' }),
|
|
53
|
+
Object.freeze({ title: '生成报告', desc: '初始化报告页' }),
|
|
54
|
+
]);
|
|
55
|
+
/** 老两项(`memo_render.py` 的 `contact.items`);**不带 `url`**(共享 schema 的 `contact.items[]` 是闭集)。 */
|
|
56
|
+
const HELP_CONTACT = Object.freeze({
|
|
57
|
+
items: Object.freeze([
|
|
58
|
+
Object.freeze({ label: 'GitHub', value: 'https://github.com/FeatherHunter/SKILLS' }),
|
|
59
|
+
Object.freeze({ label: 'Issues', value: 'https://github.com/FeatherHunter/SKILLS/issues' }),
|
|
60
|
+
]),
|
|
61
|
+
});
|
|
62
|
+
function fail(message) {
|
|
63
|
+
throw new MemoRenderError('MEMO_TEMPLATE_MISSING', message);
|
|
64
|
+
}
|
|
65
|
+
/** 场景卡:**逐键重建**、不 clone 资产 ⇒ `aliases` 之类的资产侧字段天然进不了载荷(裁决 5)。 */
|
|
66
|
+
function toScenePayload(s) {
|
|
67
|
+
const out = {
|
|
68
|
+
id: s.id, title: s.title, wake_word: s.wake_word, status: s.status, prompt_template: s.prompt_template,
|
|
69
|
+
};
|
|
70
|
+
if (Array.isArray(s.types) && s.types.length > 0)
|
|
71
|
+
out.types = s.types;
|
|
72
|
+
if (Array.isArray(s.editable_fields) && s.editable_fields.length > 0)
|
|
73
|
+
out.editable_fields = s.editable_fields;
|
|
74
|
+
return out;
|
|
75
|
+
}
|
|
76
|
+
/** 资产 → `groups`(逐层重建,确认剥掉 `aliases` 并保证载荷可 JSON 序列化)。 */
|
|
77
|
+
function toGroupsPayload(groups) {
|
|
78
|
+
return groups.map((g) => ({
|
|
79
|
+
id: g.id,
|
|
80
|
+
icon: g.icon,
|
|
81
|
+
label: g.label,
|
|
82
|
+
subgroups: g.subgroups.map((sg) => ({
|
|
83
|
+
id: sg.id,
|
|
84
|
+
label: sg.label,
|
|
85
|
+
scenes: sg.scenes.map(toScenePayload),
|
|
86
|
+
})),
|
|
87
|
+
}));
|
|
88
|
+
}
|
|
89
|
+
/** 在资产里按 id 找场景(只用于取初始化横幅的 `prompt` 单源)。 */
|
|
90
|
+
function findScene(groups, id) {
|
|
91
|
+
for (const g of groups) {
|
|
92
|
+
for (const sg of g.subgroups) {
|
|
93
|
+
const hit = sg.scenes.find((s) => s.id === id);
|
|
94
|
+
if (hit)
|
|
95
|
+
return hit;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
return undefined;
|
|
99
|
+
}
|
|
100
|
+
/** 老 `%Y-%m-%d %H:%M` 等价物(本地时区、零填充;非法 Date 即坏参,不返空串)。 */
|
|
101
|
+
export function formatHelpMinute(now) {
|
|
102
|
+
if (!(now instanceof Date) || Number.isNaN(now.getTime())) {
|
|
103
|
+
return fail('HELP 更新时间须为有效 Date(缺失阻断,不返空串)。');
|
|
104
|
+
}
|
|
105
|
+
const p = (n) => String(n).padStart(2, '0');
|
|
106
|
+
return String(now.getFullYear()) + '-' + p(now.getMonth() + 1) + '-' + p(now.getDate())
|
|
107
|
+
+ ' ' + p(now.getHours()) + ':' + p(now.getMinutes());
|
|
108
|
+
}
|
|
109
|
+
/** 内容资产 + 派生 → 全量 HELP JSON(纯函数;`now` 显式传入以保证产物可复现)。
|
|
110
|
+
*
|
|
111
|
+
* 键集=5 必需键 + 三块可选键里的两块(`contact`/`version`/`init_banner`);
|
|
112
|
+
* `init_banner` **键常在**、显隐只走 `hidden`(载荷形状不随状态变,下游能断言同一个键集);
|
|
113
|
+
* `meta_blocks`(用户 V1 裁不用)与 `recommendations`(老 `memo_render.py` 无此键)**不传**。 */
|
|
114
|
+
export function buildMemoHelpFileData(now, opts = {}) {
|
|
115
|
+
const groups = MEMO_HELP_GROUPS;
|
|
116
|
+
if (groups.length === 0)
|
|
117
|
+
fail('HELP 内容资产为空(MEMO_HELP_GROUPS)。');
|
|
118
|
+
const scenes = groups.reduce((n, g) => n + g.subgroups.reduce((m, sg) => m + sg.scenes.length, 0), 0);
|
|
119
|
+
if (scenes === 0)
|
|
120
|
+
fail('HELP 内容资产没有任何场景(MEMO_HELP_GROUPS 二级组为空)。');
|
|
121
|
+
// 技能数据世代取自资产件:`sceneData.ts` 有意**不**另开 `version` 导出(它自述「本文件只给 2 个导出」),
|
|
122
|
+
// 世代值随域级索引载荷出去 ⇒ 这里从**它的公开导出**取,而不是在本模块写第四份副本(裁决 9 的同一理)。
|
|
123
|
+
const version = String(buildHelpSceneIndex().version);
|
|
124
|
+
const setup = findScene(groups, HELP_INIT_SCENE_ID);
|
|
125
|
+
const prompt = setup?.prompt_template;
|
|
126
|
+
if (typeof prompt !== 'string' || prompt.length === 0) {
|
|
127
|
+
fail('HELP 首次使用横幅缺 prompt:内容资产无场景 ' + HELP_INIT_SCENE_ID + '。');
|
|
128
|
+
}
|
|
129
|
+
// `now` 非法时在这里就炸,不把坏时间带进载荷(载荷本身不吃时间:A 路模板不吃时间、不吃环境变量)。
|
|
130
|
+
formatHelpMinute(now);
|
|
131
|
+
// 老口径 `subtitle`(票 3 逐字):`N 个分类 · M 个场景 · K 可用 · 版本 <世代>`;计数**派生**、版本取资产。
|
|
132
|
+
const subtitle = String(groups.length) + ' 个分类 · ' + String(scenes) + ' 个场景 · '
|
|
133
|
+
+ String(scenes) + ' 可用 · 版本 ' + version;
|
|
134
|
+
return Object.freeze({
|
|
135
|
+
skill_name: MEMO_HELP_SKILL_NAME,
|
|
136
|
+
title: MEMO_HELP_TITLE,
|
|
137
|
+
subtitle,
|
|
138
|
+
contact: HELP_CONTACT,
|
|
139
|
+
groups: toGroupsPayload(groups),
|
|
140
|
+
version,
|
|
141
|
+
init_banner: Object.freeze({
|
|
142
|
+
title: '🚀 第一次用备忘录?',
|
|
143
|
+
subtitle: '从零搭建环境:检测 → 安装/配置 → 初始化数据库 → 生成报告,全程引导。',
|
|
144
|
+
button_text: '📋 复制',
|
|
145
|
+
prompt,
|
|
146
|
+
steps: HELP_INIT_STEPS,
|
|
147
|
+
hidden: opts.initialized === true,
|
|
148
|
+
}),
|
|
149
|
+
});
|
|
150
|
+
}
|
|
151
|
+
/** 全量 HELP JSON → 全壳 HTML(模板唯一实现=共享层 verbatim 老实物;空分组抛 `missing-data`)。
|
|
152
|
+
*
|
|
153
|
+
* `HelpShellData` 只声明 5 键、运行时**全量透传**(模板契约 §一)⇒ 本模块多带的可选键是它的**超集**,
|
|
154
|
+
* 类型面在这一处收窄,**不改公共层**。 */
|
|
155
|
+
export function renderMemoHelpHtml(data) {
|
|
156
|
+
const payload = data;
|
|
157
|
+
return renderHelpShellHtml(payload);
|
|
158
|
+
}
|
|
159
|
+
//# sourceMappingURL=helpFile.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"helpFile.js","sourceRoot":"","sources":["../../src/help/helpFile.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAE5D,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACvE,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAEtD;oEACoE;AACpE,MAAM,oBAAoB,GAAG,KAAc,CAAC;AAC5C,MAAM,eAAe,GAAG,MAAe,CAAC;AAExC,6DAA6D;AAC7D,MAAM,kBAAkB,GAAG,iBAA0B,CAAC;AACtD;;8DAE8D;AAC9D,MAAM,eAAe,GAAiE,MAAM,CAAC,MAAM,CAAC;IAClG,MAAM,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;IACzD,MAAM,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,oBAAoB,EAAE,CAAC;IAC5D,MAAM,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC;IACvD,MAAM,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,iCAAiC,EAAE,CAAC;IACzE,MAAM,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC;IACrD,MAAM,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;CACjD,CAAC,CAAC;AACH,+FAA+F;AAC/F,MAAM,YAAY,GAChB,MAAM,CAAC,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC;QACnB,MAAM,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,yCAAyC,EAAE,CAAC;QACpF,MAAM,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,gDAAgD,EAAE,CAAC;KAC5F,CAAC;CACH,CAAC,CAAC;AA2BL,SAAS,IAAI,CAAC,OAAe;IAC3B,MAAM,IAAI,eAAe,CAAC,uBAAuB,EAAE,OAAO,CAAC,CAAC;AAC9D,CAAC;AAED,iEAAiE;AACjE,SAAS,cAAc,CAAC,CAAa;IACnC,MAAM,GAAG,GAGL;QACF,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC,SAAS,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,eAAe,EAAE,CAAC,CAAC,eAAe;KACvG,CAAC;IACF,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC;QAAE,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC;IACtE,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC;QAAE,GAAG,CAAC,eAAe,GAAG,CAAC,CAAC,eAAe,CAAC;IAC9G,OAAO,GAAG,CAAC;AACb,CAAC;AAED,0DAA0D;AAC1D,SAAS,eAAe,CAAC,MAA6B;IACpD,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACxB,EAAE,EAAE,CAAC,CAAC,EAAE;QACR,IAAI,EAAE,CAAC,CAAC,IAAI;QACZ,KAAK,EAAE,CAAC,CAAC,KAAK;QACd,SAAS,EAAE,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;YAClC,EAAE,EAAE,EAAE,CAAC,EAAE;YACT,KAAK,EAAE,EAAE,CAAC,KAAK;YACf,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC;SACtC,CAAC,CAAC;KACJ,CAAC,CAAC,CAAC;AACN,CAAC;AAED,4CAA4C;AAC5C,SAAS,SAAS,CAAC,MAA6B,EAAE,EAAU;IAC1D,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;QACvB,KAAK,MAAM,EAAE,IAAI,CAAC,CAAC,SAAS,EAAE,CAAC;YAC7B,MAAM,GAAG,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;YAC/C,IAAI,GAAG;gBAAE,OAAO,GAAG,CAAC;QACtB,CAAC;IACH,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAWD,yDAAyD;AACzD,MAAM,UAAU,gBAAgB,CAAC,GAAS;IACxC,IAAI,CAAC,CAAC,GAAG,YAAY,IAAI,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;QAC1D,OAAO,IAAI,CAAC,gCAAgC,CAAC,CAAC;IAChD,CAAC;IACD,MAAM,CAAC,GAAG,CAAC,CAAS,EAAU,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAC5D,OAAO,MAAM,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;UACnF,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC;AAC1D,CAAC;AAED;;;;iFAIiF;AACjF,MAAM,UAAU,qBAAqB,CAAC,GAAS,EAAE,OAA4B,EAAE;IAgB7E,MAAM,MAAM,GAAG,gBAAoD,CAAC;IACpE,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,IAAI,CAAC,gCAAgC,CAAC,CAAC;IAChE,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACtG,IAAI,MAAM,KAAK,CAAC;QAAE,IAAI,CAAC,0CAA0C,CAAC,CAAC;IAEnE,uEAAuE;IACvE,0DAA0D;IAC1D,MAAM,OAAO,GAAG,MAAM,CAAC,mBAAmB,EAAE,CAAC,OAAO,CAAC,CAAC;IAEtD,MAAM,KAAK,GAAG,SAAS,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;IACpD,MAAM,MAAM,GAAG,KAAK,EAAE,eAAe,CAAC;IACtC,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtD,IAAI,CAAC,8BAA8B,GAAG,kBAAkB,GAAG,GAAG,CAAC,CAAC;IAClE,CAAC;IAED,uDAAuD;IACvD,gBAAgB,CAAC,GAAG,CAAC,CAAC;IACtB,0EAA0E;IAC1E,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,SAAS;UAC3E,MAAM,CAAC,MAAM,CAAC,GAAG,WAAW,GAAG,OAAO,CAAC;IAE3C,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,UAAU,EAAE,oBAAoB;QAChC,KAAK,EAAE,eAAe;QACtB,QAAQ;QACR,OAAO,EAAE,YAAY;QACrB,MAAM,EAAE,eAAe,CAAC,MAAM,CAAC;QAC/B,OAAO;QACP,WAAW,EAAE,MAAM,CAAC,MAAM,CAAC;YACzB,KAAK,EAAE,aAAa;YACpB,QAAQ,EAAE,yCAAyC;YACnD,WAAW,EAAE,OAAO;YACpB,MAAM;YACN,KAAK,EAAE,eAAe;YACtB,MAAM,EAAE,IAAI,CAAC,WAAW,KAAK,IAAI;SAClC,CAAC;KACH,CAAC,CAAC;AACL,CAAC;AAED;;;2BAG2B;AAC3B,MAAM,UAAU,kBAAkB,CAAC,IAA8C;IAC/E,MAAM,OAAO,GAAkB,IAAI,CAAC;IACpC,OAAO,mBAAmB,CAAC,OAAO,CAAC,CAAC;AACtC,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/** #229 · 备忘录 HELP 产物的**命名清单**(只放值,逻辑在 `memoOutput.ts`)。
|
|
2
|
+
*
|
|
3
|
+
* 三条值都出自裁决正本 `docs/skills/skill-memo-ilife/t220-orchestrator-decisions.md`:
|
|
4
|
+
* - `HELP_HTML_DIR_NAME`=裁决 1(落盘目录**扁平** `<SKILLS_DB_PATH>/memo_html/`,**不加** `help/` 一层;
|
|
5
|
+
* 老实物 `memo_html\备忘录_HELP_20260820_150143_2.html` 等 12 件以上同落此处,验收票 #233 要求「与老实物并排」);
|
|
6
|
+
* - `HELP_FILE_STEM`=裁决 1(缺省交付物主体);
|
|
7
|
+
* - `LOOKUP_FILE_STEM`=裁决 2(速查支产物名 `备忘录_速查表`,**与 HELP 分名**——照 #139 判法:
|
|
8
|
+
* 别让用户按一个名字打开到另一个东西)。
|
|
9
|
+
*
|
|
10
|
+
* ⚠️ 本模块**只放值**:命名通式/独占递补/交付函数全在 `memoOutput.ts`(那边也从本模块转出口,
|
|
11
|
+
* 故出口层只需 import 一处)。本件**不进** `src/help/index.ts` 的转发(裁决 16:不扩包根出口)。
|
|
12
|
+
*/
|
|
13
|
+
/** 产物子目录名(老 `SKILL_HTML_NAME + "_html"`;判决「扁平、不加 `help/`」见件头)。 */
|
|
14
|
+
export declare const HELP_HTML_DIR_NAME = "memo_html";
|
|
15
|
+
/** 缺省(不给任何参数)那支的产物名主体:`备忘录_HELP_<YYYYMMDD_HHMMSS>[_N].html`。 */
|
|
16
|
+
export declare const HELP_FILE_STEM = "\u5907\u5FD8\u5F55_HELP";
|
|
17
|
+
/** 显式 `mode:"lookup"` 那支的产物名主体:`备忘录_速查表_<YYYYMMDD_HHMMSS>[_N].html`。 */
|
|
18
|
+
export declare const LOOKUP_FILE_STEM = "\u5907\u5FD8\u5F55_\u901F\u67E5\u8868";
|
|
19
|
+
//# sourceMappingURL=manifest.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"manifest.d.ts","sourceRoot":"","sources":["../../src/help/manifest.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,kEAAkE;AAClE,eAAO,MAAM,kBAAkB,cAAc,CAAC;AAE9C,gEAAgE;AAChE,eAAO,MAAM,cAAc,4BAAa,CAAC;AAEzC,wEAAwE;AACxE,eAAO,MAAM,gBAAgB,0CAAY,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/** #229 · 备忘录 HELP 产物的**命名清单**(只放值,逻辑在 `memoOutput.ts`)。
|
|
2
|
+
*
|
|
3
|
+
* 三条值都出自裁决正本 `docs/skills/skill-memo-ilife/t220-orchestrator-decisions.md`:
|
|
4
|
+
* - `HELP_HTML_DIR_NAME`=裁决 1(落盘目录**扁平** `<SKILLS_DB_PATH>/memo_html/`,**不加** `help/` 一层;
|
|
5
|
+
* 老实物 `memo_html\备忘录_HELP_20260820_150143_2.html` 等 12 件以上同落此处,验收票 #233 要求「与老实物并排」);
|
|
6
|
+
* - `HELP_FILE_STEM`=裁决 1(缺省交付物主体);
|
|
7
|
+
* - `LOOKUP_FILE_STEM`=裁决 2(速查支产物名 `备忘录_速查表`,**与 HELP 分名**——照 #139 判法:
|
|
8
|
+
* 别让用户按一个名字打开到另一个东西)。
|
|
9
|
+
*
|
|
10
|
+
* ⚠️ 本模块**只放值**:命名通式/独占递补/交付函数全在 `memoOutput.ts`(那边也从本模块转出口,
|
|
11
|
+
* 故出口层只需 import 一处)。本件**不进** `src/help/index.ts` 的转发(裁决 16:不扩包根出口)。
|
|
12
|
+
*/
|
|
13
|
+
/** 产物子目录名(老 `SKILL_HTML_NAME + "_html"`;判决「扁平、不加 `help/`」见件头)。 */
|
|
14
|
+
export const HELP_HTML_DIR_NAME = 'memo_html';
|
|
15
|
+
/** 缺省(不给任何参数)那支的产物名主体:`备忘录_HELP_<YYYYMMDD_HHMMSS>[_N].html`。 */
|
|
16
|
+
export const HELP_FILE_STEM = '备忘录_HELP';
|
|
17
|
+
/** 显式 `mode:"lookup"` 那支的产物名主体:`备忘录_速查表_<YYYYMMDD_HHMMSS>[_N].html`。 */
|
|
18
|
+
export const LOOKUP_FILE_STEM = '备忘录_速查表';
|
|
19
|
+
//# sourceMappingURL=manifest.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"manifest.js","sourceRoot":"","sources":["../../src/help/manifest.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,kEAAkE;AAClE,MAAM,CAAC,MAAM,kBAAkB,GAAG,WAAW,CAAC;AAE9C,gEAAgE;AAChE,MAAM,CAAC,MAAM,cAAc,GAAG,UAAU,CAAC;AAEzC,wEAAwE;AACxE,MAAM,CAAC,MAAM,gBAAgB,GAAG,SAAS,CAAC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { HELP_HTML_DIR_NAME, HELP_FILE_STEM, LOOKUP_FILE_STEM } from './manifest.js';
|
|
2
|
+
export { HELP_HTML_DIR_NAME, HELP_FILE_STEM, LOOKUP_FILE_STEM };
|
|
3
|
+
/** 老 `strftime("%Y%m%d_%H%M%S")` 等价物(本地时区、零填充;非法 Date 即抛,缺失阻断不返空)。 */
|
|
4
|
+
export declare function formatHelpStamp(now: Date): string;
|
|
5
|
+
/** 通式文件名 `〈主体〉_<stamp>[_<n>].html`;主体原样拼入,不做清洗。 */
|
|
6
|
+
export declare function buildHelpFileName(stem: string, date: Date, n?: number): string;
|
|
7
|
+
/** 通式落点**初候选**(绝对路径、零 IO):`<dbDir>/memo_html/〈主体〉_<stamp>.html`。
|
|
8
|
+
* 目录不在此处建:写盘前由 `writeFileExclusiveWithRetry` 递归创建。 */
|
|
9
|
+
export declare function resolveStemTarget(dbDir: string, stem: string, now: Date): string;
|
|
10
|
+
/** 下一独占候选(照 `skill-bill/src/output.ts:27`):`_N` 递增;**无 `_N` 则 `_2`**。 */
|
|
11
|
+
export declare function nextExclusiveCandidate(currentAbs: string): string;
|
|
12
|
+
/** 独占写 + 重试(照 `skill-bill/src/output.ts:42`):`wx` 首试,`EEXIST` 则 `_N+1`;父目录不存在递归创建。 */
|
|
13
|
+
export declare function writeFileExclusiveWithRetry(initialAbs: string, html: string): string;
|
|
14
|
+
/** 交付结果(`file` 态唯一;`path` 必为**绝对路径**——`SKILLS_DB_PATH` 本身可以是相对路径)。 */
|
|
15
|
+
export interface MemoHtmlDelivery {
|
|
16
|
+
readonly mode: 'file';
|
|
17
|
+
readonly path: string;
|
|
18
|
+
readonly bytes: number;
|
|
19
|
+
}
|
|
20
|
+
/** 交付一次 HTML 产物(本包**唯一落盘点**):
|
|
21
|
+
* - `explicit`(`--html <路径>`,用户逐字指定)→ **覆盖写**(`w`),语义与该参数既有口径一致;
|
|
22
|
+
* - `target`(本次产物按通式算出的初候选)→ **独占创建 + 递补**(`wx` + `EEXIST`);
|
|
23
|
+
* - 两者都给时 `explicit` 优先(用户指定胜过默认落点)。 */
|
|
24
|
+
export declare function deliverMemoHtml(input: {
|
|
25
|
+
explicit?: string;
|
|
26
|
+
target?: string;
|
|
27
|
+
html: string;
|
|
28
|
+
}): MemoHtmlDelivery;
|
|
29
|
+
//# sourceMappingURL=memoOutput.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"memoOutput.d.ts","sourceRoot":"","sources":["../../src/help/memoOutput.ts"],"names":[],"mappings":"AAmCA,OAAO,EAAE,kBAAkB,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAErF,OAAO,EAAE,kBAAkB,EAAE,cAAc,EAAE,gBAAgB,EAAE,CAAC;AAKhE,sEAAsE;AACtE,wBAAgB,eAAe,CAAC,GAAG,EAAE,IAAI,GAAG,MAAM,CAOjD;AAED,mDAAmD;AACnD,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAQ9E;AAED;uDACuD;AACvD,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,GAAG,MAAM,CAEhF;AAED,yEAAyE;AACzE,wBAAgB,sBAAsB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAYjE;AAED,sFAAsF;AACtF,wBAAgB,2BAA2B,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAgBpF;AAED,sEAAsE;AACtE,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED;;;yCAGyC;AACzC,wBAAgB,eAAe,CAAC,KAAK,EAAE;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG,gBAAgB,CAa7G"}
|