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.
Files changed (128) hide show
  1. package/SKILL.md +105 -0
  2. package/dist/cli/cmd_read.js +174 -116
  3. package/dist/cli/cmd_read.js.map +1 -1
  4. package/dist/cli/config.d.ts +16 -0
  5. package/dist/cli/config.d.ts.map +1 -0
  6. package/dist/cli/config.js +84 -0
  7. package/dist/cli/config.js.map +1 -0
  8. package/dist/cli/health.d.ts +7 -0
  9. package/dist/cli/health.d.ts.map +1 -0
  10. package/dist/cli/health.js +32 -0
  11. package/dist/cli/health.js.map +1 -0
  12. package/dist/config.d.ts +43 -0
  13. package/dist/config.d.ts.map +1 -0
  14. package/dist/config.js +64 -0
  15. package/dist/config.js.map +1 -0
  16. package/dist/fetch/db.d.ts +4 -0
  17. package/dist/fetch/db.d.ts.map +1 -1
  18. package/dist/fetch/db.js +10 -0
  19. package/dist/fetch/db.js.map +1 -1
  20. package/dist/fetch/errors.d.ts +1 -1
  21. package/dist/fetch/errors.d.ts.map +1 -1
  22. package/dist/fetch/errors.js.map +1 -1
  23. package/dist/fetch/feishu.d.ts +33 -9
  24. package/dist/fetch/feishu.d.ts.map +1 -1
  25. package/dist/fetch/feishu.js +137 -23
  26. package/dist/fetch/feishu.js.map +1 -1
  27. package/dist/fetch/index.d.ts +4 -4
  28. package/dist/fetch/index.d.ts.map +1 -1
  29. package/dist/fetch/index.js +3 -3
  30. package/dist/fetch/index.js.map +1 -1
  31. package/dist/fetch/paths.d.ts +5 -3
  32. package/dist/fetch/paths.d.ts.map +1 -1
  33. package/dist/fetch/paths.js +19 -24
  34. package/dist/fetch/paths.js.map +1 -1
  35. package/dist/health.d.ts +41 -0
  36. package/dist/health.d.ts.map +1 -0
  37. package/dist/health.js +580 -0
  38. package/dist/health.js.map +1 -0
  39. package/dist/help/helpFile.d.ts +69 -0
  40. package/dist/help/helpFile.d.ts.map +1 -0
  41. package/dist/help/helpFile.js +136 -0
  42. package/dist/help/helpFile.js.map +1 -0
  43. package/dist/help/helpPaths.d.ts +14 -0
  44. package/dist/help/helpPaths.d.ts.map +1 -0
  45. package/dist/help/helpPaths.js +40 -0
  46. package/dist/help/helpPaths.js.map +1 -0
  47. package/dist/help/lookup.d.ts.map +1 -1
  48. package/dist/help/lookup.js +8 -1
  49. package/dist/help/lookup.js.map +1 -1
  50. package/dist/help/output.d.ts +22 -0
  51. package/dist/help/output.d.ts.map +1 -0
  52. package/dist/help/output.js +79 -0
  53. package/dist/help/output.js.map +1 -0
  54. package/dist/help/scenes/help-assets.d.ts +97 -0
  55. package/dist/help/scenes/help-assets.d.ts.map +1 -0
  56. package/dist/help/scenes/help-assets.js +2148 -0
  57. package/dist/help/scenes/help-assets.js.map +1 -0
  58. package/dist/plan/check.d.ts +3 -0
  59. package/dist/plan/check.d.ts.map +1 -0
  60. package/dist/plan/check.js +71 -0
  61. package/dist/plan/check.js.map +1 -0
  62. package/dist/plan/context.d.ts +18 -0
  63. package/dist/plan/context.d.ts.map +1 -0
  64. package/dist/plan/context.js +4 -0
  65. package/dist/plan/context.js.map +1 -0
  66. package/dist/plan/ensure.d.ts +4 -0
  67. package/dist/plan/ensure.d.ts.map +1 -0
  68. package/dist/plan/ensure.js +140 -0
  69. package/dist/plan/ensure.js.map +1 -0
  70. package/dist/plan/index.d.ts +8 -0
  71. package/dist/plan/index.d.ts.map +1 -0
  72. package/dist/plan/index.js +56 -0
  73. package/dist/plan/index.js.map +1 -0
  74. package/dist/plan/iso.d.ts +27 -0
  75. package/dist/plan/iso.d.ts.map +1 -0
  76. package/dist/plan/iso.js +55 -0
  77. package/dist/plan/iso.js.map +1 -0
  78. package/dist/plan/overview.d.ts +23 -0
  79. package/dist/plan/overview.d.ts.map +1 -0
  80. package/dist/plan/overview.js +38 -0
  81. package/dist/plan/overview.js.map +1 -0
  82. package/dist/plan/pull.d.ts +25 -0
  83. package/dist/plan/pull.d.ts.map +1 -0
  84. package/dist/plan/pull.js +83 -0
  85. package/dist/plan/pull.js.map +1 -0
  86. package/dist/plan/receipt.d.ts +52 -0
  87. package/dist/plan/receipt.d.ts.map +1 -0
  88. package/dist/plan/receipt.js +57 -0
  89. package/dist/plan/receipt.js.map +1 -0
  90. package/dist/plan/remoteDay.d.ts +62 -0
  91. package/dist/plan/remoteDay.d.ts.map +1 -0
  92. package/dist/plan/remoteDay.js +102 -0
  93. package/dist/plan/remoteDay.js.map +1 -0
  94. package/dist/plan/single.d.ts +4 -0
  95. package/dist/plan/single.d.ts.map +1 -0
  96. package/dist/plan/single.js +176 -0
  97. package/dist/plan/single.js.map +1 -0
  98. package/dist/plan/sync.d.ts +14 -0
  99. package/dist/plan/sync.d.ts.map +1 -0
  100. package/dist/plan/sync.js +158 -0
  101. package/dist/plan/sync.js.map +1 -0
  102. package/dist/plan/upsert.d.ts +5 -0
  103. package/dist/plan/upsert.d.ts.map +1 -0
  104. package/dist/plan/upsert.js +102 -0
  105. package/dist/plan/upsert.js.map +1 -0
  106. package/dist/policy/index.d.ts +2 -2
  107. package/dist/policy/index.d.ts.map +1 -1
  108. package/dist/policy/index.js +1 -1
  109. package/dist/policy/index.js.map +1 -1
  110. package/dist/policy/plan.d.ts +16 -1
  111. package/dist/policy/plan.d.ts.map +1 -1
  112. package/dist/policy/plan.js +51 -1
  113. package/dist/policy/plan.js.map +1 -1
  114. package/dist/policy/wakewords.js +4 -4
  115. package/dist/policy/wakewords.js.map +1 -1
  116. package/dist/render/html.d.ts +0 -6
  117. package/dist/render/html.d.ts.map +1 -1
  118. package/dist/render/html.js +0 -17
  119. package/dist/render/html.js.map +1 -1
  120. package/dist/render/index.d.ts +2 -1
  121. package/dist/render/index.d.ts.map +1 -1
  122. package/dist/render/index.js +3 -1
  123. package/dist/render/index.js.map +1 -1
  124. package/dist/shared/templateFill.d.ts +4 -0
  125. package/dist/shared/templateFill.d.ts.map +1 -0
  126. package/dist/shared/templateFill.js +20 -0
  127. package/dist/shared/templateFill.js.map +1 -0
  128. 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 隔离。
@@ -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 { writeFileSync } from 'node:fs';
6
- import { ScheduleFetchError, SchedulePolicyError, resolveDbPath, openScheduleDb, closeScheduleDb, listRecordsByDate, listRecordsRange, getRecordById, getStatus, addRecord, amendRecord, addSummary, listPlanEvents, getPlanEventsRange, searchPlanEvent, ensurePlanEvent, upsertPlanEvents, updatePlanEvent, deactivatePlanEvent, setFeishuEventId, larkReady, searchFeishuEvents, createFeishuEvent, updateFeishuEvent, } from '../fetch/index.js';
7
- import { resolveDateParam, resolveRangeParam, validateAddInput, validateAmendInput, validateSummaryInput, validateCompareInput, normalizeDate, validateUpsertInput, validateEnsureInput, validateUpdateInput, parsePlanOp, parseRecordOp, VALID_COMPLETIONS, l1Of, toMinutes, } from '../policy/index.js';
8
- import { scheduleShapeFor, buildScheduleEnvelope, renderEnvelopeHtml, assertHtmlSize, loadTemplate, templateFor, fillTemplate, buildRecordToday, buildRecordRange, buildRecordDetail, buildRecordReceipt, buildRecordCompare, buildCategoryDeep, buildAnomaly, buildPlanToday, buildPlanReceipt, buildHelpItems, ScheduleRenderError, } from '../render/index.js';
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
- if (op === 'preview') {
148
- const { date, events } = validateUpsertInput(params);
149
- return buildPlanReceipt('预览通过:' + date + ' ' + events.length + ' 个事件 00:00~24:00 连续(确认后 op=upsert 落盘)');
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
- const data = dispatch(key, params);
283
- const env = buildScheduleEnvelope(key, data);
284
- if (o.html !== undefined) {
285
- try {
286
- const html = fillTemplate(loadTemplate(templateFor(key)), renderEnvelopeHtml(env));
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
- writeFileSync(o.html, html, 'utf8');
289
- note('HTML 已写:' + o.html + '(utf8)');
290
- }
291
- catch (e) {
292
- if (e instanceof ScheduleRenderError)
293
- fail(5, e.message);
294
- fail(5, 'HTML 写盘失败:' + o.html + '(' + e.message + ')');
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
@@ -1 +1 @@
1
- {"version":3,"file":"cmd_read.js","sourceRoot":"","sources":["../../src/cli/cmd_read.ts"],"names":[],"mappings":";AACA,iFAAiF;AACjF,uEAAuE;AACvE,mCAAmC;AACnC,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACxC,OAAO,EACL,kBAAkB,EAAE,mBAAmB,EACvC,aAAa,EAAE,cAAc,EAAE,eAAe,EAC9C,iBAAiB,EAAE,gBAAgB,EAAE,aAAa,EAAE,SAAS,EAC7D,SAAS,EAAE,WAAW,EAAE,UAAU,EAClC,cAAc,EAAE,kBAAkB,EAAE,eAAe,EACnD,eAAe,EAAE,gBAAgB,EAAE,eAAe,EAAE,mBAAmB,EAAE,gBAAgB,EACzF,SAAS,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,iBAAiB,GACpE,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,gBAAgB,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,kBAAkB,EACzE,oBAAoB,EAAE,oBAAoB,EAAE,aAAa,EACzD,mBAAmB,EAAE,mBAAmB,EAAE,mBAAmB,EAC7D,WAAW,EAAE,aAAa,EAAE,iBAAiB,EAAE,IAAI,EAAE,SAAS,GAE/D,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,gBAAgB,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,cAAc,EAC3E,YAAY,EAAE,WAAW,EAAE,YAAY,EACvC,gBAAgB,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,kBAAkB,EACzE,kBAAkB,EAAE,iBAAiB,EAAE,YAAY,EACnD,cAAc,EAAE,gBAAgB,EAAE,cAAc,EAChD,mBAAmB,GACpB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAGnD,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;AACrE,SAAS,IAAI,CAAC,GAAW,IAAU,OAAO,CAAC,KAAK,CAAC,QAAQ,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;AAEnE,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,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,IAAK,CAAY,IAAI,CAAC;QAAE,IAAI,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC,CAAC;IACnF,OAAO,CAAW,CAAC;AACrB,CAAC;AAED,SAAS,UAAU,CAAC,KAAa;IAC/B,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAC5C,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;IACzC,MAAM,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IACzC,OAAO,EAAE,KAAK,EAAE,KAAK,GAAG,KAAK,EAAE,GAAG,EAAE,KAAK,GAAG,GAAG,GAAG,EAAE,EAAE,CAAC;AACzD,CAAC;AAED,SAAS,aAAa,CAAC,IAAY,EAAE,IAAY;IAC/C,OAAO,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,KAAK,CAAC;AACnC,CAAC;AAED,SAAS,QAAQ,CAAC,GAAW,EAAE,MAA+B;IAC5D,MAAM,MAAM,GAAG,aAAa,EAAE,CAAC;IAC/B,MAAM,MAAM,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;IACtC,IAAI,CAAC;QACH,IAAI,MAAM,CAAC,WAAW;YAAE,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,CAAC;QACrD,QAAQ,GAAG,EAAE,CAAC;YACZ,KAAK,uBAAuB,CAAC,CAAC,CAAC;gBAC7B,MAAM,IAAI,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC;gBACtC,MAAM,OAAO,GAAG,iBAAiB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;gBAChD,MAAM,EAAE,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;gBAC7B,IAAI,EAAE,CAAC,OAAO,KAAK,CAAC;oBAAE,IAAI,CAAC,eAAe,CAAC,CAAC;gBAC5C,OAAO,gBAAgB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YACzC,CAAC;YACD,KAAK,uBAAuB,CAAC,CAAC,CAAC;gBAC7B,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC;gBACjD,MAAM,OAAO,GAAG,gBAAgB,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;gBACrD,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;oBACpB,MAAM,IAAI,kBAAkB,CAAC,sBAAsB,EAAE,QAAQ,GAAG,KAAK,GAAG,GAAG,GAAG,GAAG,GAAG,cAAc,CAAC,CAAC;gBACtG,CAAC;gBACD,OAAO,gBAAgB,CAAC,KAAK,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;YAC/C,CAAC;YACD,KAAK,wBAAwB,CAAC,CAAC,CAAC;gBAC9B,IAAI,MAAM,CAAC,EAAE,KAAK,SAAS;oBAAE,OAAO,iBAAiB,CAAC,aAAa,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;gBACpG,MAAM,IAAI,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC;gBACtC,MAAM,OAAO,GAAG,iBAAiB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;gBAChD,IAAI,CAAC,OAAO,CAAC,MAAM;oBAAE,MAAM,IAAI,kBAAkB,CAAC,2BAA2B,EAAE,QAAQ,GAAG,IAAI,CAAC,CAAC;gBAChG,OAAO,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;YACvC,CAAC;YACD,KAAK,uBAAuB,CAAC,CAAC,CAAC;gBAC7B,MAAM,EAAE,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;gBACjC,IAAI,EAAE,KAAK,KAAK,EAAE,CAAC;oBACjB,MAAM,KAAK,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC;oBACvC,MAAM,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;oBACnC,OAAO,kBAAkB,CAAC,OAAO,GAAG,CAAC,CAAC,EAAE,GAAG,GAAG,GAAG,CAAC,CAAC,IAAI,GAAG,GAAG,GAAG,CAAC,CAAC,UAAU,GAAG,GAAG,GAAG,CAAC,CAAC,QAAQ,GAAG,GAAG,GAAG,CAAC,CAAC,QAAQ,GAAG,GAAG,CAAC,CAAC;gBAC5H,CAAC;gBACD,IAAI,EAAE,KAAK,OAAO,EAAE,CAAC;oBACnB,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC;oBACjD,MAAM,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE,EAAE,EAAE,KAAgC,CAAC,CAAC;oBACpE,OAAO,kBAAkB,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,GAAG,cAAc,GAAG,CAAC,CAAC,UAAU,GAAG,GAAG,CAAC,CAAC;gBACjF,CAAC;gBACD,MAAM,CAAC,GAAG,oBAAoB,CAAC,MAAM,CAAC,CAAC;gBACvC,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,YAAY,CAAC,CAAC;gBACvD,OAAO,kBAAkB,CAAC,OAAO,GAAG,CAAC,CAAC,IAAI,GAAG,GAAG,GAAG,CAAC,CAAC,QAAQ,GAAG,GAAG,GAAG,CAAC,CAAC,YAAY,GAAG,IAAI,CAAC,CAAC;YAC/F,CAAC;YACD,KAAK,yBAAyB,CAAC,CAAC,CAAC;gBAC/B,MAAM,CAAC,GAAG,oBAAoB,CAAC,MAAM,CAA4B,CAAC;gBAClE,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;oBACxB,MAAM,EAAE,GAAG,UAAU,CAAC,CAAC,CAAC,MAAgB,CAAC,CAAC;oBAC1C,MAAM,EAAE,GAAG,UAAU,CAAC,CAAC,CAAC,MAAgB,CAAC,CAAC;oBAC1C,MAAM,CAAC,GAAG,gBAAgB,CAAC,MAAM,EAAE,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC;oBACrD,MAAM,CAAC,GAAG,gBAAgB,CAAC,MAAM,EAAE,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC;oBACrD,IAAI,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;wBAC3B,MAAM,IAAI,kBAAkB,CAAC,sBAAsB,EAAE,QAAQ,GAAG,CAAC,CAAC,MAAM,GAAG,GAAG,GAAG,CAAC,CAAC,MAAM,GAAG,KAAK,GAAG,CAAC,CAAC,MAAM,GAAG,GAAG,GAAG,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;oBACxI,CAAC;oBACD,OAAO,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,MAAgB,EAAE,MAAM,EAAE,CAAC,CAAC,MAAgB,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;gBAC9F,CAAC;gBACD,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;oBACxB,MAAM,CAAC,GAAG,gBAAgB,CAAC,MAAM,EAAE,CAAC,CAAC,MAAgB,EAAE,CAAC,CAAC,IAAc,CAAC,CAAC;oBACzE,MAAM,CAAC,GAAG,gBAAgB,CAAC,MAAM,EAAE,CAAC,CAAC,MAAgB,EAAE,CAAC,CAAC,IAAc,CAAC,CAAC;oBACzE,IAAI,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,MAAM;wBAAE,MAAM,IAAI,kBAAkB,CAAC,sBAAsB,EAAE,gBAAgB,CAAC,CAAC;oBACnG,OAAO,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,MAAgB,EAAE,MAAM,EAAE,CAAC,CAAC,MAAgB,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;gBAC9F,CAAC;gBACD,IAAI,CAAC,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;oBAC1B,MAAM,OAAO,GAAG,gBAAgB,CAAC,MAAM,EAAE,CAAC,CAAC,KAAe,EAAE,CAAC,CAAC,GAAa,CAAC,CAAC;oBAC7E,IAAI,CAAC,OAAO,CAAC,MAAM;wBAAE,MAAM,IAAI,kBAAkB,CAAC,sBAAsB,EAAE,QAAQ,GAAG,CAAC,CAAC,KAAK,GAAG,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;oBAC5G,OAAO,iBAAiB,CAAC,CAAC,CAAC,KAAe,EAAE,CAAC,CAAC,GAAa,EAAE,CAAC,CAAC,QAAkB,EAAE,OAAO,CAAC,CAAC;gBAC9F,CAAC;gBACD,MAAM,CAAC,GAAG,CAAC,CAAC,UAAoB,CAAC;gBACjC,MAAM,GAAG,GAAG,CAAC,CAAC,GAAa,CAAC;gBAC5B,MAAM,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,GAAG,WAAW,CAAC,CAAC;gBACtC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBACjC,MAAM,KAAK,GAAG,CAAC,CAAC,WAAW,EAAE,GAAG,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;gBAC7H,MAAM,OAAO,GAAG,gBAAgB,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;gBACrD,IAAI,CAAC,OAAO,CAAC,MAAM;oBAAE,MAAM,IAAI,kBAAkB,CAAC,sBAAsB,EAAE,QAAQ,GAAG,KAAK,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;gBACxG,MAAM,KAAK,GAAG,IAAI,GAAG,EAAkC,CAAC;gBACxD,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;oBACxB,MAAM,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;oBAClC,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;oBAC3B,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,gBAAgB,IAAI,CAAC,CAAC,CAAC;oBAC/C,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;gBACvB,CAAC;gBACD,MAAM,KAAK,GAAG,CAAC,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;gBAClF,OAAO,YAAY,CAAC,GAAG,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;YACrC,CAAC;YACD,KAAK,qBAAqB,CAAC,CAAC,CAAC;gBAC3B,IAAI,OAAO,MAAM,CAAC,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC;oBAC5D,MAAM,IAAI,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC;oBACtC,MAAM,IAAI,GAAG,eAAe,CAC1B,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,EACjC,MAAM,CAAC,UAAgC,EAAE,MAAM,CAAC,QAA8B,CAC/E,CAAC;oBACF,OAAO,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;gBACpC,CAAC;gBACD,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;oBACvD,MAAM,KAAK,GAAI,MAAM,CAAC,KAAmB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,aAAa,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC;oBAClF,MAAM,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;oBAChC,MAAM,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;oBAC/C,MAAM,GAAG,GAAG,kBAAkB,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;oBACrF,OAAO,EAAE,KAAK,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,EAAE,EAAE,CAAC;gBACjH,CAAC;gBACD,MAAM,IAAI,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC;gBACtC,OAAO,cAAc,CAAC,IAAI,EAAE,cAAc,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;YAC5D,CAAC;YACD,KAAK,qBAAqB,CAAC,CAAC,CAAC;gBAC3B,MAAM,EAAE,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;gBAC/B,IAAI,EAAE,KAAK,SAAS,EAAE,CAAC;oBACrB,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAAC;oBACrD,OAAO,gBAAgB,CAAC,OAAO,GAAG,IAAI,GAAG,GAAG,GAAG,MAAM,CAAC,MAAM,GAAG,uCAAuC,CAAC,CAAC;gBAC1G,CAAC;gBACD,IAAI,EAAE,KAAK,QAAQ,EAAE,CAAC;oBACpB,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAAC;oBACrD,MAAM,GAAG,GAAG,gBAAgB,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;oBACnD,OAAO,gBAAgB,CAAC,MAAM,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC;gBACrE,CAAC;gBACD,IAAI,EAAE,KAAK,QAAQ,EAAE,CAAC;oBACpB,MAAM,KAAK,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAAC;oBAC1C,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,eAAe,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;oBAC1D,OAAO,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC;gBACnF,CAAC;gBACD,IAAI,EAAE,KAAK,QAAQ,EAAE,CAAC;oBACpB,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAAC;oBAClD,IAAI,KAAK,CAAC,UAAU,KAAK,SAAS,IAAI,KAAK,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;wBACnE,IAAI,SAAS,CAAC,KAAK,CAAC,QAAkB,CAAC,IAAI,SAAS,CAAC,KAAK,CAAC,UAAoB,CAAC,EAAE,CAAC;4BACjF,MAAM,IAAI,mBAAmB,CAAC,iBAAiB,EAAE,0BAA0B,CAAC,CAAC;wBAC/E,CAAC;oBACH,CAAC;oBACD,eAAe,CAAC,MAAM,EAAE,EAAE,EAAE,KAAoD,CAAC,CAAC;oBAClF,OAAO,gBAAgB,CAAC,OAAO,GAAG,EAAE,CAAC,CAAC;gBACxC,CAAC;gBACD,IAAI,EAAE,KAAK,YAAY,EAAE,CAAC;oBACxB,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;oBACjC,mBAAmB,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;oBAChC,OAAO,gBAAgB,CAAC,WAAW,GAAG,EAAE,CAAC,CAAC;gBAC5C,CAAC;gBACD,IAAI,EAAE,KAAK,QAAQ,EAAE,CAAC;oBACpB,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,MAAM,CAAC,WAAW,KAAK,OAAO,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS;wBACjF,CAAC,CAAC,iBAAiB,CAAC,MAAM,CAAC;wBAC3B,CAAC,CAAC,EAAE,KAAK,EAAE,gBAAgB,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,gBAAgB,CAAC,MAAM,CAAC,EAAE,CAAC;oBACvE,MAAM,MAAM,GAAG,kBAAkB,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;oBACtD,IAAI,CAAC,MAAM,CAAC,MAAM;wBAAE,MAAM,IAAI,kBAAkB,CAAC,sBAAsB,EAAE,QAAQ,GAAG,KAAK,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;oBACvG,MAAM,MAAM,GAA2B,EAAE,CAAC;oBAC1C,KAAK,MAAM,CAAC,IAAI,MAAM;wBAAE,MAAM,CAAC,CAAC,CAAC,UAAU,IAAI,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;oBACjG,MAAM,KAAK,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;oBACnF,OAAO,gBAAgB,CAAC,MAAM,GAAG,KAAK,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,MAAM,CAAC,MAAM,GAAG,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC;gBAC9G,CAAC;gBACD,sEAAsE;gBACtE,MAAM,IAAI,GAAG,SAAS,EAAE,CAAC;gBACzB,MAAM,IAAI,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC;gBACtC,MAAM,MAAM,GAAG,cAAc,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,CAAC,CAAC,CAAC;gBACnF,IAAI,MAAM,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC;oBAC3B,OAAO,gBAAgB,CAAC,OAAO,GAAG,IAAI,CAAC,MAAM,GAAG,cAAc,GAAG,IAAI,GAAG,MAAM,GAAG,MAAM,CAAC,MAAM,GAAG,OAAO,CAAC,CAAC;gBAC5G,CAAC;gBACD,IAAI,OAAO,GAAG,CAAC,CAAC;gBAChB,IAAI,OAAO,GAAG,CAAC,CAAC;gBAChB,IAAI,CAAC;oBACH,kBAAkB,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;gBAC/C,CAAC;gBAAC,OAAO,CAAC,EAAE,CAAC;oBACX,MAAM,IAAI,kBAAkB,CAAC,sBAAsB,EAAE,SAAS,GAAI,CAAW,CAAC,OAAO,CAAC,CAAC;gBACzF,CAAC;gBACD,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;oBACvB,MAAM,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC;oBAC9C,MAAM,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC;oBAC5C,IAAI,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC;wBACvB,MAAM,CAAC,GAAG,iBAAiB,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,CAAsC,CAAC;wBAC7G,MAAM,GAAG,GAAG,OAAO,CAAC,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;wBAC/F,gBAAgB,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;wBACpC,OAAO,EAAE,CAAC;oBACZ,CAAC;yBAAM,CAAC;wBACN,iBAAiB,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,eAAe,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;wBAClE,gBAAgB,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,eAAe,CAAC,CAAC;wBAClD,OAAO,EAAE,CAAC;oBACZ,CAAC;gBACH,CAAC;gBACD,OAAO,gBAAgB,CAAC,MAAM,GAAG,IAAI,GAAG,KAAK,GAAG,OAAO,GAAG,KAAK,GAAG,OAAO,GAAG,GAAG,GAAG,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC;YACvG,CAAC;YACD,KAAK,sBAAsB,CAAC,CAAC,CAAC;gBAC5B,MAAM,CAAC,GAAG,OAAO,MAAM,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;gBAC9D,MAAM,GAAG,GAAG,eAAe,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;gBACvH,OAAO,cAAc,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;YAChC,CAAC;YACD;gBAAS,IAAI,CAAC,CAAC,EAAE,kBAAkB,GAAG,GAAG,CAAC,CAAC;gBAAC,OAAO,IAAI,CAAC;QAC1D,CAAC;IACH,CAAC;YAAS,CAAC;QACT,eAAe,CAAC,MAAM,CAAC,CAAC;IAC1B,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,oFAAoF,CAAC,CAAC;IAC1G,SAAS,EAAE,CAAC;IACZ,IAAI,MAAM,GAA4B,EAAE,CAAC;IACzC,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,CAAC;QAAC,gBAAgB,CAAC,CAAC,CAAC,GAAkB,CAAC,CAAC;IAAC,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QAAC,IAAI,CAAC,CAAC,EAAG,CAAW,CAAC,OAAO,CAAC,CAAC;IAAC,CAAC;IAC5F,MAAM,GAAG,GAAG,CAAC,CAAC,GAAa,CAAC;IAC5B,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;QAC5B,KAAK,CAAC,wBAAwB,GAAG,CAAC,CAAC,OAAO,GAAG,WAAW,CAAC,CAAC;QAC1D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC;IACd,IAAI,OAAO,KAAK,CAAC,KAAK,KAAK,UAAU;QAAE,KAAK,CAAC,KAAK,EAAE,CAAC;IACrD,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QACnC,MAAM,GAAG,GAAG,qBAAqB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QAC7C,IAAI,CAAC,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YACzB,IAAI,CAAC;gBACH,MAAM,IAAI,GAAG,YAAY,CAAC,YAAY,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,EAAE,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC;gBACnF,cAAc,CAAC,IAAI,CAAC,CAAC;gBACrB,aAAa,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;gBACpC,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,IAAI,GAAG,QAAQ,CAAC,CAAC;YACvC,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,IAAI,CAAC,YAAY,mBAAmB;oBAAE,IAAI,CAAC,CAAC,EAAG,CAAW,CAAC,OAAO,CAAC,CAAC;gBACpE,IAAI,CAAC,CAAC,EAAE,YAAY,GAAG,CAAC,CAAC,IAAI,GAAG,GAAG,GAAI,CAAW,CAAC,OAAO,GAAG,GAAG,CAAC,CAAC;YACpE,CAAC;QACH,CAAC;QACD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC;QACjD,YAAY,CAAC,KAAK,CAAC,CAAC;IACtB,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,YAAY,CAAC,KAAK,CAAC,CAAC;QACpB,IAAI,CAAC,YAAY,mBAAmB;YAAE,IAAI,CAAC,CAAC,EAAG,CAAW,CAAC,OAAO,CAAC,CAAC;QACpE,IAAI,CAAC,YAAY,kBAAkB;YAAE,IAAI,CAAC,CAAC,EAAG,CAAW,CAAC,OAAO,CAAC,CAAC;QACnE,IAAI,CAAC,YAAY,mBAAmB;YAAE,IAAI,CAAC,CAAC,EAAG,CAAW,CAAC,OAAO,CAAC,CAAC;QACpE,IAAI,CAAC,CAAC,EAAE,OAAO,GAAI,CAAW,CAAC,OAAO,CAAC,CAAC;IAC1C,CAAC;AACH,CAAC;AAED,KAAK,IAAI,EAAE,CAAC"}
1
+ {"version":3,"file":"cmd_read.js","sourceRoot":"","sources":["../../src/cli/cmd_read.ts"],"names":[],"mappings":"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"}