skill-schedule 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 +105 -0
- package/dist/cli/cmd_read.js +174 -116
- 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 +43 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +64 -0
- package/dist/config.js.map +1 -0
- package/dist/fetch/db.d.ts +4 -0
- package/dist/fetch/db.d.ts.map +1 -1
- package/dist/fetch/db.js +10 -0
- package/dist/fetch/db.js.map +1 -1
- package/dist/fetch/errors.d.ts +1 -1
- package/dist/fetch/errors.d.ts.map +1 -1
- package/dist/fetch/errors.js.map +1 -1
- package/dist/fetch/feishu.d.ts +33 -9
- package/dist/fetch/feishu.d.ts.map +1 -1
- package/dist/fetch/feishu.js +137 -23
- package/dist/fetch/feishu.js.map +1 -1
- package/dist/fetch/index.d.ts +4 -4
- package/dist/fetch/index.d.ts.map +1 -1
- package/dist/fetch/index.js +3 -3
- 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 +580 -0
- package/dist/health.js.map +1 -0
- package/dist/help/helpFile.d.ts +69 -0
- package/dist/help/helpFile.d.ts.map +1 -0
- package/dist/help/helpFile.js +136 -0
- package/dist/help/helpFile.js.map +1 -0
- package/dist/help/helpPaths.d.ts +14 -0
- package/dist/help/helpPaths.d.ts.map +1 -0
- package/dist/help/helpPaths.js +40 -0
- package/dist/help/helpPaths.js.map +1 -0
- package/dist/help/lookup.d.ts.map +1 -1
- package/dist/help/lookup.js +8 -1
- package/dist/help/lookup.js.map +1 -1
- package/dist/help/output.d.ts +22 -0
- package/dist/help/output.d.ts.map +1 -0
- package/dist/help/output.js +79 -0
- package/dist/help/output.js.map +1 -0
- package/dist/help/scenes/help-assets.d.ts +97 -0
- package/dist/help/scenes/help-assets.d.ts.map +1 -0
- package/dist/help/scenes/help-assets.js +2148 -0
- package/dist/help/scenes/help-assets.js.map +1 -0
- package/dist/plan/check.d.ts +3 -0
- package/dist/plan/check.d.ts.map +1 -0
- package/dist/plan/check.js +71 -0
- package/dist/plan/check.js.map +1 -0
- package/dist/plan/context.d.ts +18 -0
- package/dist/plan/context.d.ts.map +1 -0
- package/dist/plan/context.js +4 -0
- package/dist/plan/context.js.map +1 -0
- package/dist/plan/ensure.d.ts +4 -0
- package/dist/plan/ensure.d.ts.map +1 -0
- package/dist/plan/ensure.js +140 -0
- package/dist/plan/ensure.js.map +1 -0
- package/dist/plan/index.d.ts +8 -0
- package/dist/plan/index.d.ts.map +1 -0
- package/dist/plan/index.js +56 -0
- package/dist/plan/index.js.map +1 -0
- package/dist/plan/iso.d.ts +27 -0
- package/dist/plan/iso.d.ts.map +1 -0
- package/dist/plan/iso.js +55 -0
- package/dist/plan/iso.js.map +1 -0
- package/dist/plan/overview.d.ts +23 -0
- package/dist/plan/overview.d.ts.map +1 -0
- package/dist/plan/overview.js +38 -0
- package/dist/plan/overview.js.map +1 -0
- package/dist/plan/pull.d.ts +25 -0
- package/dist/plan/pull.d.ts.map +1 -0
- package/dist/plan/pull.js +83 -0
- package/dist/plan/pull.js.map +1 -0
- package/dist/plan/receipt.d.ts +52 -0
- package/dist/plan/receipt.d.ts.map +1 -0
- package/dist/plan/receipt.js +57 -0
- package/dist/plan/receipt.js.map +1 -0
- package/dist/plan/remoteDay.d.ts +62 -0
- package/dist/plan/remoteDay.d.ts.map +1 -0
- package/dist/plan/remoteDay.js +102 -0
- package/dist/plan/remoteDay.js.map +1 -0
- package/dist/plan/single.d.ts +4 -0
- package/dist/plan/single.d.ts.map +1 -0
- package/dist/plan/single.js +176 -0
- package/dist/plan/single.js.map +1 -0
- package/dist/plan/sync.d.ts +14 -0
- package/dist/plan/sync.d.ts.map +1 -0
- package/dist/plan/sync.js +158 -0
- package/dist/plan/sync.js.map +1 -0
- package/dist/plan/upsert.d.ts +5 -0
- package/dist/plan/upsert.d.ts.map +1 -0
- package/dist/plan/upsert.js +102 -0
- package/dist/plan/upsert.js.map +1 -0
- package/dist/policy/index.d.ts +2 -2
- package/dist/policy/index.d.ts.map +1 -1
- package/dist/policy/index.js +1 -1
- package/dist/policy/index.js.map +1 -1
- package/dist/policy/plan.d.ts +16 -1
- package/dist/policy/plan.d.ts.map +1 -1
- package/dist/policy/plan.js +51 -1
- package/dist/policy/plan.js.map +1 -1
- package/dist/policy/wakewords.js +4 -4
- package/dist/policy/wakewords.js.map +1 -1
- package/dist/render/html.d.ts +0 -6
- package/dist/render/html.d.ts.map +1 -1
- package/dist/render/html.js +0 -17
- package/dist/render/html.js.map +1 -1
- package/dist/render/index.d.ts +2 -1
- package/dist/render/index.d.ts.map +1 -1
- package/dist/render/index.js +3 -1
- package/dist/render/index.js.map +1 -1
- package/dist/shared/templateFill.d.ts +4 -0
- package/dist/shared/templateFill.d.ts.map +1 -0
- package/dist/shared/templateFill.js +20 -0
- package/dist/shared/templateFill.js.map +1 -0
- package/package.json +7 -4
package/SKILL.md
ADDED
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: skill-schedule
|
|
3
|
+
description: "「作息管家HELP」/「作息管家 HELP」→schedule.help.lookup 缺省即落一份能打开的 HELP 文件(5 类别/34 唤醒词/85 场景,走共享 help 模板);唯一出口 schedule-cmd-read。触发词:作息管家HELP、作息管家help、作息管家 HELP、作息管家帮助、作息管家能做什么、作息管家使用说明、今天总结、今日作息、今日总结、今天作息、查作息时间轴、查作息状态、初始化数据库、查作息、汇总作息、查作息范围、查作息游标、查作息详情、按ID查记录、补一条作息、录作息、修正作息、改作息、这条记错了、写作息摘要、记作息、对比两个月、月份对比、跨月对比、类别深挖、异常检测、查多日计划、24h 概览、查日程、看日程、商量计划、一起规划、规划明天、规划一天、讨论计划、补计划、改计划、删计划、复盘今日、复盘本周、复盘本月、复盘区间、日程管家同步、飞书探测、复盘"
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# 作息管家(schedule)SKILL
|
|
7
|
+
|
|
8
|
+
作息记录与日程计划:单日查、区间汇总、详情、记/修正、对比、查日程、商量/补/改/删/复盘、飞书同步。唯一出口 `schedule-cmd-read <schedule.key>`,argv+JSON(stdout)+exit,非 0 走 stderr。
|
|
9
|
+
|
|
10
|
+
## 快速开始
|
|
11
|
+
|
|
12
|
+
```sh
|
|
13
|
+
schedule-cmd-read schedule.help.lookup # 说「作息管家 HELP」就这一条:缺省落一份 HELP 文件
|
|
14
|
+
schedule-cmd-read schedule.record.today --params '{"date":"今天"}'
|
|
15
|
+
schedule-cmd-read schedule.record.range --params '{"range":"本周"}'
|
|
16
|
+
schedule-cmd-read schedule.plan.today --params '{"date":"2026-09-06"}'
|
|
17
|
+
schedule-cmd-read schedule.record.write --params '{"op":"add","date":"2026-09-06","time_start":"09:00","time_end":"10:00","activity":"调优","category":"工作.AI调优"}'
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
## 口径
|
|
21
|
+
|
|
22
|
+
- 双域隔离:record(真实发生的过去时间块)唤醒词禁含计划/日程;plan(未来安排)唤醒词禁含作息/记录。废弃词(同步作息/作息计划表/配置定时同步)不路由。
|
|
23
|
+
- 分类:一级固定 8 个(维持/健康/工作/学习/创作/投入/调整/日常),二级白名单制;坏分类阻断,无跳过通道。
|
|
24
|
+
- 相对时间:今天/昨天/前天/大前天/明天/后天/大后天;本周/上周/上上周/本月/上月;recentDays=N。周一起始。
|
|
25
|
+
- 商量计划落盘须 24h 覆盖(首 00:00、尾 24:00、逐条相接);补计划按 date+起止三元组幂等;复盘 completion 6 态(已完成/已完成(超时)/部分完成/未完成/未完成(不可抗力)/未复盘)。
|
|
26
|
+
- 健康分:工作≤8h 满分、超 1.5 倍 0 分;其余达目标满分、0.8/0.5 分档衰减;7 维取均(创作不参评)。异常:环比 ±20% 红、±10% 黄。
|
|
27
|
+
- 坏输入与缺失一律阻断(exit 2/4),不返空数组冒充正常;飞书同步须 lark-cli 四门全绿。
|
|
28
|
+
|
|
29
|
+
## 批量补计划(多天,#599)
|
|
30
|
+
|
|
31
|
+
- 单天 `op=ensure` 按 `date+time_start+time_end` 三元组幂等(`title` 只展示);多天批量把每天的对象装进 `dates[]`,逐天走同一条单天合成写(本地幂等+远端查一趟再判),回执 `items[]` 逐天分字段、失败逐条前缀日期点名且退出码非 0。`op=sync` 整天口径不动。
|
|
32
|
+
- 照抄即跑(2 天示例;7 天同形,只是数组更长):`schedule-cmd-read schedule.plan.write --params '{"op":"ensure","dates":[{"date":"2026-09-21","time_start":"09:00","time_end":"10:00","title":"晨会"},{"date":"2026-09-22","time_start":"09:00","time_end":"10:00","title":"晨会"}]}'`
|
|
33
|
+
|
|
34
|
+
## 联动速查(构建期注入,勿手改)
|
|
35
|
+
|
|
36
|
+
<!-- HELP-AUTO-START -->
|
|
37
|
+
| 唤醒词 | key | shape | 例 |
|
|
38
|
+
|---|---|---|---|
|
|
39
|
+
| 作息管家 HELP | schedule.help.lookup | list | `schedule-cmd-read schedule.help.lookup` |
|
|
40
|
+
| 作息管家帮助 | schedule.help.lookup | list | `schedule-cmd-read schedule.help.lookup` |
|
|
41
|
+
| 作息管家能做什么 | schedule.help.lookup | list | `schedule-cmd-read schedule.help.lookup` |
|
|
42
|
+
| 作息管家使用说明 | schedule.help.lookup | list | `schedule-cmd-read schedule.help.lookup` |
|
|
43
|
+
| 今天总结 | schedule.record.today | list | `schedule-cmd-read schedule.record.today` |
|
|
44
|
+
| 今日作息 | schedule.record.today | list | `schedule-cmd-read schedule.record.today` |
|
|
45
|
+
| 今日总结 | schedule.record.today | list | `schedule-cmd-read schedule.record.today` |
|
|
46
|
+
| 今天作息 | schedule.record.today | list | `schedule-cmd-read schedule.record.today` |
|
|
47
|
+
| 查作息时间轴 | schedule.record.today | list | `schedule-cmd-read schedule.record.today` |
|
|
48
|
+
| 查作息状态 | schedule.record.today | list | `schedule-cmd-read schedule.record.today` |
|
|
49
|
+
| 初始化数据库 | schedule.record.today | list | `schedule-cmd-read schedule.record.today` |
|
|
50
|
+
| 查作息 | schedule.record.today | list | `schedule-cmd-read schedule.record.today` |
|
|
51
|
+
| 汇总作息 | schedule.record.range | stat | `schedule-cmd-read schedule.record.range --params '{"start":"2026-09-01","end":"2026-09-01"}'` |
|
|
52
|
+
| 查作息范围 | schedule.record.range | stat | `schedule-cmd-read schedule.record.range --params '{"start":"2026-09-01","end":"2026-09-01"}'` |
|
|
53
|
+
| 查作息游标 | schedule.record.range | stat | `schedule-cmd-read schedule.record.range --params '{"start":"2026-09-01","end":"2026-09-01"}'` |
|
|
54
|
+
| 查作息详情 | schedule.record.detail | detail | `schedule-cmd-read schedule.record.detail` |
|
|
55
|
+
| 按ID查记录 | schedule.record.detail | detail | `schedule-cmd-read schedule.record.detail --params '{"id":1}'` |
|
|
56
|
+
| 补一条作息 | schedule.record.write | receipt | `schedule-cmd-read schedule.record.write --params '{"op":"add"}'` |
|
|
57
|
+
| 录作息 | schedule.record.write | receipt | `schedule-cmd-read schedule.record.write --params '{"op":"add"}'` |
|
|
58
|
+
| 修正作息 | schedule.record.write | receipt | `schedule-cmd-read schedule.record.write --params '{"op":"amend","id":1}'` |
|
|
59
|
+
| 改作息 | schedule.record.write | receipt | `schedule-cmd-read schedule.record.write --params '{"op":"amend","id":1}'` |
|
|
60
|
+
| 这条记错了 | schedule.record.write | receipt | `schedule-cmd-read schedule.record.write --params '{"op":"amend","id":1}'` |
|
|
61
|
+
| 写作息摘要 | schedule.record.write | receipt | `schedule-cmd-read schedule.record.write --params '{"op":"summary"}'` |
|
|
62
|
+
| 记作息 | schedule.record.write | receipt | `schedule-cmd-read schedule.record.write --params '{"op":"add"}'` |
|
|
63
|
+
| 对比两个月 | schedule.record.compare | analysis | `schedule-cmd-read schedule.record.compare --params '{"kind":"months"}'` |
|
|
64
|
+
| 月份对比 | schedule.record.compare | analysis | `schedule-cmd-read schedule.record.compare --params '{"kind":"months"}'` |
|
|
65
|
+
| 跨月对比 | schedule.record.compare | analysis | `schedule-cmd-read schedule.record.compare --params '{"kind":"months"}'` |
|
|
66
|
+
| 类别深挖 | schedule.record.compare | analysis | `schedule-cmd-read schedule.record.compare --params '{"kind":"category"}'` |
|
|
67
|
+
| 异常检测 | schedule.record.compare | analysis | `schedule-cmd-read schedule.record.compare --params '{"kind":"anomaly"}'` |
|
|
68
|
+
| 查多日计划 | schedule.plan.today | list | `schedule-cmd-read schedule.plan.today --params '{"view":"aggregate","dates":["2026-09-21","2026-09-22"]}'` |
|
|
69
|
+
| 24h 概览 | schedule.plan.today | list | `schedule-cmd-read schedule.plan.today --params '{"view":"aggregate"}'` |
|
|
70
|
+
| 查日程 | schedule.plan.today | list | `schedule-cmd-read schedule.plan.today` |
|
|
71
|
+
| 看日程 | schedule.plan.today | list | `schedule-cmd-read schedule.plan.today` |
|
|
72
|
+
| 商量计划 | schedule.plan.write | receipt | `schedule-cmd-read schedule.plan.write --params '{"op":"preview"}'` |
|
|
73
|
+
| 一起规划 | schedule.plan.write | receipt | `schedule-cmd-read schedule.plan.write --params '{"op":"preview"}'` |
|
|
74
|
+
| 规划明天 | schedule.plan.write | receipt | `schedule-cmd-read schedule.plan.write --params '{"op":"preview"}'` |
|
|
75
|
+
| 规划一天 | schedule.plan.write | receipt | `schedule-cmd-read schedule.plan.write --params '{"op":"preview"}'` |
|
|
76
|
+
| 讨论计划 | schedule.plan.write | receipt | `schedule-cmd-read schedule.plan.write --params '{"op":"preview"}'` |
|
|
77
|
+
| 补计划 | schedule.plan.write | receipt | `schedule-cmd-read schedule.plan.write --params '{"op":"ensure","date":"2026-09-01","time_start":"09:00","time_end":"10:00","title":"晨会"}'` |
|
|
78
|
+
| 改计划 | schedule.plan.write | receipt | `schedule-cmd-read schedule.plan.write --params '{"op":"update","id":1}'` |
|
|
79
|
+
| 删计划 | schedule.plan.write | receipt | `schedule-cmd-read schedule.plan.write --params '{"op":"deactivate","id":1}'` |
|
|
80
|
+
| 复盘今日 | schedule.plan.write | receipt | `schedule-cmd-read schedule.plan.write --params '{"op":"review","granularity":"day"}'` |
|
|
81
|
+
| 复盘本周 | schedule.plan.write | receipt | `schedule-cmd-read schedule.plan.write --params '{"op":"review","granularity":"week"}'` |
|
|
82
|
+
| 复盘本月 | schedule.plan.write | receipt | `schedule-cmd-read schedule.plan.write --params '{"op":"review","granularity":"month"}'` |
|
|
83
|
+
| 复盘区间 | schedule.plan.write | receipt | `schedule-cmd-read schedule.plan.write --params '{"op":"review","granularity":"range"}'` |
|
|
84
|
+
| 日程管家同步 | schedule.plan.write | receipt | `schedule-cmd-read schedule.plan.write --params '{"op":"sync"}'` |
|
|
85
|
+
| 飞书探测 | schedule.plan.write | receipt | `schedule-cmd-read schedule.plan.write --params '{"op":"sync","dryRun":true}'` |
|
|
86
|
+
| 复盘 | schedule.plan.write | receipt | `schedule-cmd-read schedule.plan.write --params '{"op":"review"}'` |
|
|
87
|
+
|
|
88
|
+
相关场景:schedule.help.lookup、schedule.plan.today、schedule.plan.write、schedule.record.compare、schedule.record.detail、schedule.record.range、schedule.record.today、schedule.record.write(8 联动,key 字符串后续票落表时冻结)。
|
|
89
|
+
<!-- HELP-AUTO-END -->
|
|
90
|
+
|
|
91
|
+
## HELP 交付(说「作息管家 HELP」或「作息管家帮助」走这里)
|
|
92
|
+
|
|
93
|
+
- **缺省就是交付物**:`schedule-cmd-read schedule.help.lookup` **原样调用**即落一份能打开的 HELP 文件——`<库目录>/<产物目录>/作息管家_HELP_<YYYYMMDD_HHMMSS>[_N].html`(`<库目录>`=配置文件 `~/.ilife/schedule.yaml` 的 `db.dir`,空串=数据目录 `~/.ilife/data/`;`<产物目录>`=同文件的 `html.dir`,默认 `schedule_html/help`,段间用 `/` 或 `\` 分隔;5 类别/34 唤醒词/85 场景,走共享 help 模板)。stdout 的 `delivery.path` 是**绝对路径**,`delivery.bytes` 是文件字节数;回话就把这个路径给用户(回执即真相)。
|
|
94
|
+
**完成标准**:`delivery.path` 指向的文件真的存在,且大小=`delivery.bytes`。
|
|
95
|
+
- **要现找才加参数**:`--params '{"q":"查作息"}'` 回命中条目(只出 JSON,不落盘);`q` 留空=全表。全量速查表读上「联动速查」块(48 条路由词,构建期注入,与 `q` 同一张表)。
|
|
96
|
+
- **`--html <路径>`=显式落点**:逐字使用、覆盖写、缺父目录自动建(不参与同秒 `_N` 递补);缺省支写的是完整 HELP 页,`q` 支写的是该键的分节页(与其余 7 条命令同形)。
|
|
97
|
+
- **同名不覆盖**:缺省落点按秒命名;真要同一秒落两份(`reuseHours:0`)时后到者递补 `_2`、`_3`……**任何时候都不覆盖已有产物**。
|
|
98
|
+
- **反复读不再涨目录(#245)**:同一主体**一天内只留一份**——24 小时内再读就**复用已有那份**(不新建、不改写;回执给的就是它)。要别的窗口给 `--params '{"reuseHours":3}'`(小时);要**每次都要一份最新的**给 `{"reuseHours":0}`。窗口内若已有一份、而你刚改过 HELP 内容,那份旧产物**不会被自动刷新**(窗口语义如此)——真要新的就带 `reuseHours:0`。
|
|
99
|
+
- **看帮助不开库**:本键在开库之前分派,跑完不建 `schedule_data.db`(库还没建出来时也看得到帮助);DB 文件已存在时,页首的首次使用横幅隐藏(判定只看文件在不在,不开库)。
|
|
100
|
+
- **边界**:面板/侧栏的 HELP 入口不在本技能范围(属插件侧那条线,见下「环境与出 scope」)。
|
|
101
|
+
|
|
102
|
+
## 环境与出 scope
|
|
103
|
+
|
|
104
|
+
- 路径类取值一律读配置文件 `~/.ilife/schedule.yaml`(**配置文件是唯一真相,环境变量不参与配置**):库目录=`db.dir`(空串=数据目录 `~/.ilife/data/`,首次读时自动建)、库文件名=`db.name`(默认 `schedule_data.db`)、产物目录=`html.dir`(默认 `schedule_html/help`)、HELP 文件主体名=`files.help`、飞书 CLI 路径=`lark.cliPath`(**空串=没有显式值,走本机自动探测**);`ILIFE_CONFIG_DIR` 设定且非空即整体接管配置目录。飞书同步另须 lark-cli 四门全绿。取值面与环境项见 docs/env.md。
|
|
105
|
+
- 出 scope:定时任务/早睡提醒(老家 Cron 已删,外部定时以外置为准)、面板(二期单 MAP)、本技能外联动(combos 登记走后续票);语录取数(daily_recorder.db)以外置为准;真实数据禁迁,测试 tmp 隔离。
|
package/dist/cli/cmd_read.js
CHANGED
|
@@ -2,23 +2,30 @@
|
|
|
2
2
|
// 作息管家唯一出口 cmd_read: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 {
|
|
6
|
-
import { ScheduleFetchError, SchedulePolicyError, resolveDbPath, openScheduleDb, closeScheduleDb, listRecordsByDate, listRecordsRange, getRecordById, getStatus, addRecord, amendRecord, addSummary, listPlanEvents, getPlanEventsRange, searchPlanEvent,
|
|
7
|
-
import { resolveDateParam, resolveRangeParam, validateAddInput, validateAmendInput, validateSummaryInput, validateCompareInput, normalizeDate,
|
|
8
|
-
import {
|
|
5
|
+
import { existsSync } from 'node:fs';
|
|
6
|
+
import { ScheduleFetchError, SchedulePolicyError, resolveDbPath, resolveDbDir, openScheduleDb, closeScheduleDb, listRecordsByDate, listRecordsRange, getRecordById, getStatus, addRecord, amendRecord, addSummary, listPlanEvents, getPlanEventsRange, searchPlanEvent, larkReady, } from '../fetch/index.js';
|
|
7
|
+
import { resolveDateParam, resolveRangeParam, validateAddInput, validateAmendInput, validateSummaryInput, validateCompareInput, normalizeDate, parsePlanOp, parseRecordOp, parseFeishuMode, parsePlanView, l1Of, } from '../policy/index.js';
|
|
8
|
+
import { runPlanOp, buildPlanOverview } from '../plan/index.js';
|
|
9
|
+
import { scheduleShapeFor, buildScheduleEnvelope, renderEnvelopeHtml, assertHtmlSize, loadTemplate, templateFor, fillTemplate, buildRecordToday, buildRecordRange, buildRecordDetail, buildRecordReceipt, buildRecordCompare, buildCategoryDeep, buildAnomaly, buildPlanToday, buildHelpItems, ScheduleRenderError, } from '../render/index.js';
|
|
9
10
|
import { buildHelpLookup } from '../help/index.js';
|
|
11
|
+
import { resolveHelpDir } from '../help/helpPaths.js';
|
|
12
|
+
import { helpFileStem, buildHelpFileData, renderHelpFileHtml } from '../help/helpFile.js';
|
|
13
|
+
import { HELP_GROUPS } from '../help/scenes/help-assets.js';
|
|
14
|
+
import { deliverHtml } from '../help/output.js';
|
|
15
|
+
import { isConfigKey, runConfigKey } from './config.js';
|
|
16
|
+
// #706 · 配置体检:设置页专用的一条只读命令,同走「进分派层之前拦下」这条口(判据住 src/health.ts)。
|
|
17
|
+
import { isHealthCheckKey, runHealthCheckKey } from './health.js';
|
|
18
|
+
import { helpReuseWindowOf } from 'base-paint/save-html';
|
|
10
19
|
const DEFAULT_TIMEOUT_MS = 30000;
|
|
11
20
|
function fail(code, msg) { console.error('ERR ' + code + ': ' + msg); process.exit(code); }
|
|
12
21
|
function toast(msg) { console.error('TOAST: ' + msg); }
|
|
13
22
|
function note(msg) { console.error('NOTE: ' + msg); }
|
|
23
|
+
/** 预检:只查 node 版本。**不再读任何环境变量**——库目录从配置文件取(#695;口径见 #675 解决评论),
|
|
24
|
+
* 「没配」这件事由 `resolveDbPath()` 那一趟的配置件报错承担(测试进程缺 `ILIFE_CONFIG_DIR` 即响亮失败)。 */
|
|
14
25
|
function preflight() {
|
|
15
26
|
const v = process.versions.node.split('.').map(Number);
|
|
16
27
|
if (!(v[0] > 22 || (v[0] === 22 && v[1] >= 13)))
|
|
17
28
|
fail(1, 'node 低于 22.13:' + process.versions.node);
|
|
18
|
-
const p = process.env.SKILLS_DB_PATH;
|
|
19
|
-
if (!p)
|
|
20
|
-
fail(1, 'SKILLS_DB_PATH 未设置(无默认值,必设)');
|
|
21
|
-
return p;
|
|
22
29
|
}
|
|
23
30
|
function needInt(params, name) {
|
|
24
31
|
const v = params[name];
|
|
@@ -35,6 +42,81 @@ function monthRange(month) {
|
|
|
35
42
|
function toISODateTime(date, time) {
|
|
36
43
|
return date + 'T' + time + ':00';
|
|
37
44
|
}
|
|
45
|
+
// ── #203 · 「作息管家help」的交付装配(**在开库之前**走,照 skill-bill/src/cli/cmd_read.ts:493-495)────
|
|
46
|
+
//
|
|
47
|
+
// 缺省(不给任何参数)= 全量 HELP 文件:`<库目录>/schedule_html/help/作息管家_HELP_<YYYYMMDD_HHMMSS>[_N].html`
|
|
48
|
+
// (库目录=配置项 `db.dir`,空串即数据目录;两级子目录与主体名从配置取,默认逐字等于老常量,
|
|
49
|
+
// `t198-old-help-truth.md` 第四节),独占落盘 + **绝对路径**回执
|
|
50
|
+
// (`delivery{mode,path,bytes}` 顶层追加,序在既有五字段之后)。
|
|
51
|
+
// 显式 `q` = 现找:只回命中(stdout),不落盘(检索式问答不刷目录);`--html <路径>` 给了才写那个路径。
|
|
52
|
+
// 全程**不开库**:初始化判据=「DB 文件存在」(照老 `render_help._is_initialized`);
|
|
53
|
+
// 否则「看帮助」会 `new DatabaseSync` 出来并跑 DDL 自愈,把库建在用户还没开始用的目录里。
|
|
54
|
+
const HELP_MODE_FILE = 'file';
|
|
55
|
+
/** HELP 产物吃的复用窗口(毫秒):缺省**一天**、`reuseHours` 可改(`0`=每次都落新的)。
|
|
56
|
+
* 换算与坏参判定都在共用件(`helpReuseWindowOf` 把坏参 `RangeError` 交给这里给的处理器)⇒ 归到出口的
|
|
57
|
+
* 「参数错」那一档(exit 2),与其余四家同档:坏参绝不静默当 0。 */
|
|
58
|
+
const helpWindowOrFail = helpReuseWindowOf((m) => fail(2, m));
|
|
59
|
+
/** 初始化状态:DB **文件存在**=已初始化(照老 `render_help._is_initialized` 与 bill `helpInitialized`)。
|
|
60
|
+
* 判定本身异常 ⇒ `false`=横幅照显(fail-open:误显只多一条提示,误藏会让新用户找不到入口)。 */
|
|
61
|
+
function helpInitialized() {
|
|
62
|
+
try {
|
|
63
|
+
return existsSync(resolveDbPath());
|
|
64
|
+
}
|
|
65
|
+
catch {
|
|
66
|
+
return false;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
/** 交付索引(`list` 形,`schedule.help.lookup` 的缺省载荷):一级分组一行,计数全**派生**自内容资产
|
|
70
|
+
* (改资产即跟变,不写第二份 5/34/85)。行形状照 bill `HelpIndexItem`,不下重口。 */
|
|
71
|
+
function buildHelpIndex() {
|
|
72
|
+
const items = HELP_GROUPS.map((g) => ({
|
|
73
|
+
id: g.id,
|
|
74
|
+
icon: g.icon,
|
|
75
|
+
label: g.label,
|
|
76
|
+
subgroupCount: g.subgroups.length,
|
|
77
|
+
sceneCount: g.subgroups.reduce((n, s) => n + s.scenes.length, 0),
|
|
78
|
+
}));
|
|
79
|
+
return {
|
|
80
|
+
items,
|
|
81
|
+
total: items.length,
|
|
82
|
+
sceneTotal: items.reduce((n, it) => n + it.sceneCount, 0),
|
|
83
|
+
subgroupTotal: items.reduce((n, it) => n + it.subgroupCount, 0),
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
function dispatchHelp(params) {
|
|
87
|
+
const dbDir = resolveDbDir();
|
|
88
|
+
const now = new Date();
|
|
89
|
+
const q = params.q === undefined ? undefined : String(params.q);
|
|
90
|
+
if (q !== undefined) {
|
|
91
|
+
// 现找:只回命中;落盘只有用户显式给 `--html <路径>` 才发生(main 里那支)。
|
|
92
|
+
const all = buildHelpLookup().map((h) => ({ phrase: h.phrase, key: h.key, shape: h.shape, cli: h.cli, desc: h.desc }));
|
|
93
|
+
return { data: { ...buildHelpItems(all, q), mode: 'lookup', query: q } };
|
|
94
|
+
}
|
|
95
|
+
// #245:HELP 产物吃复用窗口(缺省一天内只留一份,`reuseHours` 可改);坏参在这里就抛(出口归 exit 2)。
|
|
96
|
+
const reuseMs = helpWindowOrFail(params);
|
|
97
|
+
const html = renderHelpFileHtml(buildHelpFileData(now, { initialized: helpInitialized() }));
|
|
98
|
+
assertHtmlSize(html);
|
|
99
|
+
return {
|
|
100
|
+
data: { ...buildHelpIndex(), mode: HELP_MODE_FILE, bytes: Buffer.byteLength(html, 'utf8') },
|
|
101
|
+
deliver: { html, targetDir: resolveHelpDir(dbDir), stem: helpFileStem(), reuseMs },
|
|
102
|
+
};
|
|
103
|
+
}
|
|
104
|
+
/** 哪些 op 要碰远端(其余 op 连 lark-cli 都不探——探测本身是三次子进程)。 */
|
|
105
|
+
const REMOTE_OPS = ['ensure', 'upsert', 'update', 'deactivate', 'sync', 'check'];
|
|
106
|
+
/** 远端门:过了给 cliPath;没过给「为什么不在场」——**不拦本地写**,只如实进回执与退出码。 */
|
|
107
|
+
function remoteGate(op, params) {
|
|
108
|
+
if (!REMOTE_OPS.includes(op))
|
|
109
|
+
return { cli: null, why: null };
|
|
110
|
+
// sync/check 本身就是远端命令:`feishu:'skip'` 对它们不成立,照探(探不到即阻断/降级)。
|
|
111
|
+
if (op !== 'sync' && op !== 'check' && parseFeishuMode(params) === 'skip')
|
|
112
|
+
return { cli: null, why: null };
|
|
113
|
+
try {
|
|
114
|
+
return { cli: larkReady().cliPath, why: null };
|
|
115
|
+
}
|
|
116
|
+
catch (e) {
|
|
117
|
+
return { cli: null, why: e.message };
|
|
118
|
+
}
|
|
119
|
+
}
|
|
38
120
|
function dispatch(key, params) {
|
|
39
121
|
const dbPath = resolveDbPath();
|
|
40
122
|
const handle = openScheduleDb(dbPath);
|
|
@@ -48,7 +130,7 @@ function dispatch(key, params) {
|
|
|
48
130
|
const st = getStatus(handle);
|
|
49
131
|
if (st.records === 0)
|
|
50
132
|
note('库空:真实无记录(非故障)');
|
|
51
|
-
return buildRecordToday(date, records);
|
|
133
|
+
return { data: buildRecordToday(date, records), exitCode: 0 };
|
|
52
134
|
}
|
|
53
135
|
case 'schedule.record.range': {
|
|
54
136
|
const { start, end } = resolveRangeParam(params);
|
|
@@ -56,32 +138,32 @@ function dispatch(key, params) {
|
|
|
56
138
|
if (!records.length) {
|
|
57
139
|
throw new ScheduleFetchError('SCHEDULE_EMPTY_RANGE', '区间无记录:' + start + '~' + end + '(缺失阻断,不返空统计)');
|
|
58
140
|
}
|
|
59
|
-
return buildRecordRange(start, end, records);
|
|
141
|
+
return { data: buildRecordRange(start, end, records), exitCode: 0 };
|
|
60
142
|
}
|
|
61
143
|
case 'schedule.record.detail': {
|
|
62
144
|
if (params.id !== undefined)
|
|
63
|
-
return buildRecordDetail(getRecordById(handle, needInt(params, 'id')));
|
|
145
|
+
return { data: buildRecordDetail(getRecordById(handle, needInt(params, 'id'))), exitCode: 0 };
|
|
64
146
|
const date = resolveDateParam(params);
|
|
65
147
|
const records = listRecordsByDate(handle, date);
|
|
66
148
|
if (!records.length)
|
|
67
149
|
throw new ScheduleFetchError('SCHEDULE_RECORD_NOT_FOUND', '当日无记录:' + date);
|
|
68
|
-
return buildRecordDetail(records[0]);
|
|
150
|
+
return { data: buildRecordDetail(records[0]), exitCode: 0 };
|
|
69
151
|
}
|
|
70
152
|
case 'schedule.record.write': {
|
|
71
153
|
const op = parseRecordOp(params);
|
|
72
154
|
if (op === 'add') {
|
|
73
155
|
const input = validateAddInput(params);
|
|
74
156
|
const r = addRecord(handle, input);
|
|
75
|
-
return buildRecordReceipt('已记一条:' + r.id + '(' + r.date + ' ' + r.time_start + '~' + r.time_end + ' ' + r.category + ')');
|
|
157
|
+
return { data: buildRecordReceipt('已记一条:' + r.id + '(' + r.date + ' ' + r.time_start + '~' + r.time_end + ' ' + r.category + ')'), exitCode: 0 };
|
|
76
158
|
}
|
|
77
159
|
if (op === 'amend') {
|
|
78
160
|
const { id, patch } = validateAmendInput(params);
|
|
79
161
|
const r = amendRecord(handle, id, patch);
|
|
80
|
-
return buildRecordReceipt('已修正:' + r.id + '(edit_count=' + r.edit_count + ')');
|
|
162
|
+
return { data: buildRecordReceipt('已修正:' + r.id + '(edit_count=' + r.edit_count + ')'), exitCode: 0 };
|
|
81
163
|
}
|
|
82
164
|
const s = validateSummaryInput(params);
|
|
83
165
|
addSummary(handle, s.date, s.category, s.totalMinutes);
|
|
84
|
-
return buildRecordReceipt('已写摘要:' + s.date + ' ' + s.category + '=' + s.totalMinutes + '分钟');
|
|
166
|
+
return { data: buildRecordReceipt('已写摘要:' + s.date + ' ' + s.category + '=' + s.totalMinutes + '分钟'), exitCode: 0 };
|
|
85
167
|
}
|
|
86
168
|
case 'schedule.record.compare': {
|
|
87
169
|
const c = validateCompareInput(params);
|
|
@@ -93,20 +175,20 @@ function dispatch(key, params) {
|
|
|
93
175
|
if (!a.length || !b.length) {
|
|
94
176
|
throw new ScheduleFetchError('SCHEDULE_EMPTY_RANGE', '对比缺数据:' + c.monthA + '(' + a.length + '块)/' + c.monthB + '(' + b.length + '块)');
|
|
95
177
|
}
|
|
96
|
-
return buildRecordCompare({ labelA: c.monthA, labelB: c.monthB, a, b });
|
|
178
|
+
return { data: buildRecordCompare({ labelA: c.monthA, labelB: c.monthB, a, b }), exitCode: 0 };
|
|
97
179
|
}
|
|
98
180
|
if (c.kind === 'ranges') {
|
|
99
181
|
const a = listRecordsRange(handle, c.startA, c.endA);
|
|
100
182
|
const b = listRecordsRange(handle, c.startB, c.endB);
|
|
101
183
|
if (!a.length || !b.length)
|
|
102
184
|
throw new ScheduleFetchError('SCHEDULE_EMPTY_RANGE', '对比缺数据(两侧均须有记录)');
|
|
103
|
-
return buildRecordCompare({ labelA: c.labelA, labelB: c.labelB, a, b });
|
|
185
|
+
return { data: buildRecordCompare({ labelA: c.labelA, labelB: c.labelB, a, b }), exitCode: 0 };
|
|
104
186
|
}
|
|
105
187
|
if (c.kind === 'category') {
|
|
106
188
|
const records = listRecordsRange(handle, c.start, c.end);
|
|
107
189
|
if (!records.length)
|
|
108
190
|
throw new ScheduleFetchError('SCHEDULE_EMPTY_RANGE', '区间无记录:' + c.start + '~' + c.end);
|
|
109
|
-
return buildCategoryDeep(c.start, c.end, c.category, records);
|
|
191
|
+
return { data: buildCategoryDeep(c.start, c.end, c.category, records), exitCode: 0 };
|
|
110
192
|
}
|
|
111
193
|
const w = c.windowDays;
|
|
112
194
|
const end = c.end;
|
|
@@ -124,108 +206,47 @@ function dispatch(key, params) {
|
|
|
124
206
|
byDay.set(r.date, m);
|
|
125
207
|
}
|
|
126
208
|
const daily = [...byDay.entries()].sort().map(([date, byL1]) => ({ date, byL1 }));
|
|
127
|
-
return buildAnomaly(end, w, daily);
|
|
209
|
+
return { data: buildAnomaly(end, w, daily), exitCode: 0 };
|
|
128
210
|
}
|
|
129
211
|
case 'schedule.plan.today': {
|
|
212
|
+
// #15/#16:24h 聚合视图(分桶 + 多日)走 `view=aggregate`;#12 查日程走全字段 list。
|
|
213
|
+
if (parsePlanView(params) === 'aggregate') {
|
|
214
|
+
const dates = Array.isArray(params.dates) && params.dates.length
|
|
215
|
+
? params.dates.map((x) => normalizeDate(x, 'dates[]'))
|
|
216
|
+
: [resolveDateParam(params)];
|
|
217
|
+
return { data: buildPlanOverview(handle, dates), exitCode: 0 };
|
|
218
|
+
}
|
|
130
219
|
if (typeof params.title === 'string' && params.title.trim()) {
|
|
131
220
|
const date = resolveDateParam(params);
|
|
132
221
|
const hits = searchPlanEvent(handle, date, params.title.trim(), params.time_start, params.time_end);
|
|
133
|
-
return buildPlanToday(date, hits);
|
|
222
|
+
return { data: buildPlanToday(date, hits), exitCode: 0 };
|
|
134
223
|
}
|
|
135
224
|
if (Array.isArray(params.dates) && params.dates.length) {
|
|
136
225
|
const dates = params.dates.map((x) => normalizeDate(x, 'dates[]'));
|
|
137
226
|
const lo = [...dates].sort()[0];
|
|
138
227
|
const hi = [...dates].sort()[dates.length - 1];
|
|
139
228
|
const all = getPlanEventsRange(handle, lo, hi).filter((e) => dates.includes(e.date));
|
|
140
|
-
return { items: all.map((e) => buildPlanToday(e.date, [e]).items[0]), total: all.length, date: lo + '~' + hi };
|
|
229
|
+
return { data: { items: all.map((e) => buildPlanToday(e.date, [e]).items[0]), total: all.length, date: lo + '~' + hi }, exitCode: 0 };
|
|
141
230
|
}
|
|
142
231
|
const date = resolveDateParam(params);
|
|
143
|
-
return buildPlanToday(date, listPlanEvents(handle, date));
|
|
232
|
+
return { data: buildPlanToday(date, listPlanEvents(handle, date)), exitCode: 0 };
|
|
144
233
|
}
|
|
145
234
|
case 'schedule.plan.write': {
|
|
235
|
+
// 写 op 全部统一成合成写(裁定 A6③):本地 +(可选)远端一条命令走完,回执分字段、退出码报达成与否。
|
|
236
|
+
// 各 op 的实现住能力目录 `src/plan/`(#199 的结构裁定:`plan` 是 HELP 一级分组「日程与计划」)。
|
|
146
237
|
const op = parsePlanOp(params);
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
}
|
|
151
|
-
if (op === 'upsert') {
|
|
152
|
-
const { date, events } = validateUpsertInput(params);
|
|
153
|
-
const out = upsertPlanEvents(handle, date, events);
|
|
154
|
-
return buildPlanReceipt('已落盘:' + date + ' ' + out.length + ' 个事件');
|
|
155
|
-
}
|
|
156
|
-
if (op === 'ensure') {
|
|
157
|
-
const input = validateEnsureInput(params);
|
|
158
|
-
const { event, created } = ensurePlanEvent(handle, input);
|
|
159
|
-
return buildPlanReceipt(created ? '已补计划:' + event.id : '已存在(幂等未重复):' + event.id);
|
|
160
|
-
}
|
|
161
|
-
if (op === 'update') {
|
|
162
|
-
const { id, patch } = validateUpdateInput(params);
|
|
163
|
-
if (patch.time_start !== undefined && patch.time_end !== undefined) {
|
|
164
|
-
if (toMinutes(patch.time_end) <= toMinutes(patch.time_start)) {
|
|
165
|
-
throw new SchedulePolicyError('POLICY_BAD_TIME', 'time_end 必须晚于 time_start');
|
|
166
|
-
}
|
|
167
|
-
}
|
|
168
|
-
updatePlanEvent(handle, id, patch);
|
|
169
|
-
return buildPlanReceipt('已改计划:' + id);
|
|
170
|
-
}
|
|
171
|
-
if (op === 'deactivate') {
|
|
172
|
-
const id = needInt(params, 'id');
|
|
173
|
-
deactivatePlanEvent(handle, id);
|
|
174
|
-
return buildPlanReceipt('已删计划(软删):' + id);
|
|
175
|
-
}
|
|
176
|
-
if (op === 'review') {
|
|
177
|
-
const { start, end } = params.granularity === 'range' || params.start !== undefined
|
|
178
|
-
? resolveRangeParam(params)
|
|
179
|
-
: { start: resolveDateParam(params), end: resolveDateParam(params) };
|
|
180
|
-
const events = getPlanEventsRange(handle, start, end);
|
|
181
|
-
if (!events.length)
|
|
182
|
-
throw new ScheduleFetchError('SCHEDULE_EMPTY_RANGE', '复盘无日程:' + start + '~' + end);
|
|
183
|
-
const counts = {};
|
|
184
|
-
for (const e of events)
|
|
185
|
-
counts[e.completion || '未复盘'] = (counts[e.completion || '未复盘'] || 0) + 1;
|
|
186
|
-
const parts = VALID_COMPLETIONS.filter((k) => counts[k]).map((k) => k + counts[k]);
|
|
187
|
-
return buildPlanReceipt('已复盘 ' + start + '~' + end + ':' + events.length + ' 个事件(' + parts.join('、') + ')');
|
|
188
|
-
}
|
|
189
|
-
// op === 'sync':飞书四门 + diff(local 无飞书 id→create,有→update;dryRun 只报数)。
|
|
190
|
-
const gate = larkReady();
|
|
191
|
-
const date = resolveDateParam(params);
|
|
192
|
-
const events = listPlanEvents(handle, date, true).filter((e) => e.is_active === 1);
|
|
193
|
-
if (params.dryRun === true) {
|
|
194
|
-
return buildPlanReceipt('飞书就绪:' + gate.openId + '(dryRun 未同步;' + date + ' 待比 ' + events.length + ' 个事件)');
|
|
195
|
-
}
|
|
196
|
-
let created = 0;
|
|
197
|
-
let updated = 0;
|
|
198
|
-
try {
|
|
199
|
-
searchFeishuEvents(gate.cliPath, date, date);
|
|
200
|
-
}
|
|
201
|
-
catch (e) {
|
|
202
|
-
throw new ScheduleFetchError('SCHEDULE_EMPTY_RANGE', '飞书查询失败:' + e.message);
|
|
203
|
-
}
|
|
204
|
-
for (const e of events) {
|
|
205
|
-
const s = toISODateTime(e.date, e.time_start);
|
|
206
|
-
const t = toISODateTime(e.date, e.time_end);
|
|
207
|
-
if (!e.feishu_event_id) {
|
|
208
|
-
const r = createFeishuEvent(gate.cliPath, s, t, e.title, e.notes || '');
|
|
209
|
-
const fid = typeof r.eventId === 'string' ? r.eventId : typeof r.id === 'string' ? r.id : null;
|
|
210
|
-
setFeishuEventId(handle, e.id, fid);
|
|
211
|
-
created++;
|
|
212
|
-
}
|
|
213
|
-
else {
|
|
214
|
-
updateFeishuEvent(gate.cliPath, e.feishu_event_id, s, t, e.title);
|
|
215
|
-
setFeishuEventId(handle, e.id, e.feishu_event_id);
|
|
216
|
-
updated++;
|
|
217
|
-
}
|
|
218
|
-
}
|
|
219
|
-
return buildPlanReceipt('已同步 ' + date + ':新建' + created + ' 更新' + updated + '(' + gate.openId + ')');
|
|
220
|
-
}
|
|
221
|
-
case 'schedule.help.lookup': {
|
|
222
|
-
const q = typeof params.q === 'string' ? params.q : undefined;
|
|
223
|
-
const all = buildHelpLookup().map((h) => ({ phrase: h.phrase, key: h.key, shape: h.shape, cli: h.cli, desc: h.desc }));
|
|
224
|
-
return buildHelpItems(all, q);
|
|
238
|
+
const gate = remoteGate(op, params);
|
|
239
|
+
const out = runPlanOp(op, { handle, params, cli: gate.cli, remoteWhy: gate.why });
|
|
240
|
+
return { data: out.data, exitCode: out.exitCode };
|
|
225
241
|
}
|
|
242
|
+
// #203:本键由 `dispatchHelp` 在**开库之前**处理(只读页不建库);走到这里说明 main 的路由被改坏了。
|
|
243
|
+
// 照 skill-bill/src/cli/cmd_read.ts:449-451 的同一道内部断言——防的是「改回无条件开库」这个静默回退。
|
|
244
|
+
case 'schedule.help.lookup':
|
|
245
|
+
fail(1, '内部错误:schedule.help.lookup 须走 dispatchHelp(开库之前)');
|
|
246
|
+
return { data: null, exitCode: 0 };
|
|
226
247
|
default:
|
|
227
248
|
fail(3, '未知 schedule key:' + key);
|
|
228
|
-
return null;
|
|
249
|
+
return { data: null, exitCode: 0 };
|
|
229
250
|
}
|
|
230
251
|
}
|
|
231
252
|
finally {
|
|
@@ -253,7 +274,6 @@ async function main() {
|
|
|
253
274
|
const o = parseArgs(process.argv.slice(2));
|
|
254
275
|
if (!o.key)
|
|
255
276
|
fail(2, '用法:schedule-cmd-read <schedule.key> [--params JSON对象] [--html 输出路径] [--timeout 毫秒]');
|
|
256
|
-
preflight();
|
|
257
277
|
let params = {};
|
|
258
278
|
if (o.params !== undefined) {
|
|
259
279
|
try {
|
|
@@ -265,6 +285,19 @@ async function main() {
|
|
|
265
285
|
if (typeof params !== 'object' || params === null || Array.isArray(params))
|
|
266
286
|
fail(2, '--params 须为 JSON 对象');
|
|
267
287
|
}
|
|
288
|
+
// #695:三个配置 key(`schedule.config.read/write/reset`)在预检与形状表之前拦下——
|
|
289
|
+
// 读写配置不该要求库目录已配,它们也不进 `SCHEDULE_KEY_SHAPES`(不是唤醒词命令,见 `src/cli/config.ts`)。
|
|
290
|
+
if (isConfigKey(o.key)) {
|
|
291
|
+
process.stdout.write(runConfigKey(o.key, params) + '\n');
|
|
292
|
+
return;
|
|
293
|
+
}
|
|
294
|
+
// #706 · 配置体检(`schedule.config.check`):同样是设置页专用的只读命令,同样在预检之前拦下——
|
|
295
|
+
// 它要报的正是「库在哪、通不通」,不能先要求库目录已配。只读:不建目录、不写文件、不落默认配置。
|
|
296
|
+
if (isHealthCheckKey(o.key)) {
|
|
297
|
+
process.stdout.write(runHealthCheckKey(o.key) + '\n');
|
|
298
|
+
return;
|
|
299
|
+
}
|
|
300
|
+
preflight();
|
|
268
301
|
try {
|
|
269
302
|
scheduleShapeFor(o.key);
|
|
270
303
|
}
|
|
@@ -278,23 +311,36 @@ async function main() {
|
|
|
278
311
|
}, o.timeout);
|
|
279
312
|
if (typeof timer.unref === 'function')
|
|
280
313
|
timer.unref();
|
|
314
|
+
let env = null;
|
|
315
|
+
let delivery;
|
|
316
|
+
let exitCode = 0;
|
|
281
317
|
try {
|
|
282
|
-
|
|
283
|
-
const
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
318
|
+
// #203:`schedule.help.lookup` 在**开库之前**分派(只读页不建库);其余 7 键照旧走 dispatch(内部开库)。
|
|
319
|
+
const help = key === 'schedule.help.lookup' ? dispatchHelp(params) : null;
|
|
320
|
+
const out = help ? { data: help.data, exitCode: 0 } : dispatch(key, params);
|
|
321
|
+
env = buildScheduleEnvelope(key, out.data);
|
|
322
|
+
exitCode = out.exitCode;
|
|
323
|
+
const built = env;
|
|
324
|
+
// 既有语义(不破):`--html <路径>` 直写该路径,内容=本包 envelope 片段(模板填充后)。
|
|
325
|
+
const sectionHtml = () => {
|
|
326
|
+
const html = fillTemplate(loadTemplate(templateFor(key)), renderEnvelopeHtml(built));
|
|
327
|
+
assertHtmlSize(html);
|
|
328
|
+
return html;
|
|
329
|
+
};
|
|
330
|
+
if (help?.deliver !== undefined) {
|
|
331
|
+
// 本键的产物:缺省=HELP 全壳页(自带 html),落盘走本包统一管线(独占 + 同名递补)。
|
|
332
|
+
const html = help.deliver.html ?? sectionHtml();
|
|
333
|
+
if (help.deliver.html !== undefined)
|
|
287
334
|
assertHtmlSize(html);
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
}
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
335
|
+
delivery = deliverHtml({
|
|
336
|
+
explicit: o.html, targetDir: help.deliver.targetDir, stem: help.deliver.stem, html, reuseMs: help.deliver.reuseMs,
|
|
337
|
+
});
|
|
338
|
+
note('HTML 已写:' + delivery.path + '(' + delivery.bytes + ' 字节 utf8)');
|
|
339
|
+
}
|
|
340
|
+
else if (o.html !== undefined) {
|
|
341
|
+
delivery = deliverHtml({ explicit: o.html, html: sectionHtml() });
|
|
342
|
+
note('HTML 已写:' + delivery.path + '(' + delivery.bytes + ' 字节 utf8)');
|
|
296
343
|
}
|
|
297
|
-
process.stdout.write(JSON.stringify(env) + '\n');
|
|
298
344
|
clearTimeout(timer);
|
|
299
345
|
}
|
|
300
346
|
catch (e) {
|
|
@@ -305,8 +351,20 @@ async function main() {
|
|
|
305
351
|
fail(4, e.message);
|
|
306
352
|
if (e instanceof ScheduleRenderError)
|
|
307
353
|
fail(5, e.message);
|
|
354
|
+
// 配置件(`base-link-core`)的报错本身就是人话(带行号与文件名):归「预检」那一档原样交回。
|
|
355
|
+
// #695 起「库目录没配」也走这条——测试进程缺 `ILIFE_CONFIG_DIR` 时报 `测试缺隔离…`。
|
|
356
|
+
if (/(配置文件|配置项|测试缺隔离)/.test(e.message ?? ''))
|
|
357
|
+
fail(1, e.message);
|
|
308
358
|
fail(4, '取数失败:' + e.message);
|
|
309
359
|
}
|
|
360
|
+
// #83/#144 口径的顶层追加:`delivery{mode,path,bytes}` 只追加,既有五字段一字不改、序不变。
|
|
361
|
+
process.stdout.write(JSON.stringify(delivery ? { ...env, delivery } : env) + '\n');
|
|
362
|
+
// 合成写「没达成」(本地成了但远端没成)→ 载荷照出、退出码非 0:上层不许误以为事情办完了
|
|
363
|
+
// (裁定 A6②/用户故事 6)。判定与三分格都在回执里(`achieved`/`local`/`remote`/`remoteId`)。
|
|
364
|
+
if (exitCode !== 0) {
|
|
365
|
+
note('这一趟没达成(补偿路径见回执 remote 字段):exit ' + exitCode);
|
|
366
|
+
process.exit(exitCode);
|
|
367
|
+
}
|
|
310
368
|
}
|
|
311
369
|
void main();
|
|
312
370
|
//# 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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"}
|