skill-memo-ilife 0.3.0 → 0.3.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (253) hide show
  1. package/SKILL.md +10 -8
  2. package/dist/checkin/routes.d.ts +9 -0
  3. package/dist/checkin/routes.d.ts.map +1 -0
  4. package/dist/checkin/routes.js +29 -0
  5. package/dist/checkin/routes.js.map +1 -0
  6. package/dist/cli/cmd_read.js +75 -277
  7. package/dist/cli/cmd_read.js.map +1 -1
  8. package/dist/cli/config.d.ts +16 -2
  9. package/dist/cli/config.d.ts.map +1 -1
  10. package/dist/cli/config.js +10 -7
  11. package/dist/cli/config.js.map +1 -1
  12. package/dist/cli/health/configRead.d.ts +22 -0
  13. package/dist/cli/health/configRead.d.ts.map +1 -0
  14. package/dist/cli/health/configRead.js +207 -0
  15. package/dist/cli/health/configRead.js.map +1 -0
  16. package/dist/cli/health/index.d.ts +18 -0
  17. package/dist/cli/health/index.d.ts.map +1 -0
  18. package/dist/cli/health/index.js +16 -0
  19. package/dist/cli/health/index.js.map +1 -0
  20. package/dist/cli/health/items.d.ts +19 -0
  21. package/dist/cli/health/items.d.ts.map +1 -0
  22. package/dist/cli/health/items.js +205 -0
  23. package/dist/cli/health/items.js.map +1 -0
  24. package/dist/cli/health/probe.d.ts +33 -0
  25. package/dist/cli/health/probe.d.ts.map +1 -0
  26. package/dist/cli/health/probe.js +194 -0
  27. package/dist/cli/health/probe.js.map +1 -0
  28. package/dist/cli/health.d.ts.map +1 -1
  29. package/dist/cli/health.js +3 -2
  30. package/dist/cli/health.js.map +1 -1
  31. package/dist/cli/keys.d.ts +15 -0
  32. package/dist/cli/keys.d.ts.map +1 -0
  33. package/dist/cli/keys.js +64 -0
  34. package/dist/cli/keys.js.map +1 -0
  35. package/dist/cli/registry.d.ts +10 -0
  36. package/dist/cli/registry.d.ts.map +1 -0
  37. package/dist/cli/registry.js +29 -0
  38. package/dist/cli/registry.js.map +1 -0
  39. package/dist/config.d.ts +16 -9
  40. package/dist/config.d.ts.map +1 -1
  41. package/dist/config.js +91 -20
  42. package/dist/config.js.map +1 -1
  43. package/dist/fetch/auth.d.ts +1 -11
  44. package/dist/fetch/auth.d.ts.map +1 -1
  45. package/dist/fetch/auth.js +5 -77
  46. package/dist/fetch/auth.js.map +1 -1
  47. package/dist/fetch/db.d.ts +6 -0
  48. package/dist/fetch/db.d.ts.map +1 -1
  49. package/dist/fetch/db.js +19 -0
  50. package/dist/fetch/db.js.map +1 -1
  51. package/dist/fetch/feishu.d.ts +30 -0
  52. package/dist/fetch/feishu.d.ts.map +1 -1
  53. package/dist/fetch/feishu.js +121 -19
  54. package/dist/fetch/feishu.js.map +1 -1
  55. package/dist/fetch/index.d.ts +6 -5
  56. package/dist/fetch/index.d.ts.map +1 -1
  57. package/dist/fetch/index.js +4 -4
  58. package/dist/fetch/index.js.map +1 -1
  59. package/dist/fetch/paths.d.ts +34 -1
  60. package/dist/fetch/paths.d.ts.map +1 -1
  61. package/dist/fetch/paths.js +60 -7
  62. package/dist/fetch/paths.js.map +1 -1
  63. package/dist/fetch/sentinel.d.ts.map +1 -1
  64. package/dist/fetch/sentinel.js +2 -1
  65. package/dist/fetch/sentinel.js.map +1 -1
  66. package/dist/health.d.ts +15 -38
  67. package/dist/health.d.ts.map +1 -1
  68. package/dist/health.js +11 -589
  69. package/dist/health.js.map +1 -1
  70. package/dist/help/booklet.d.ts +49 -0
  71. package/dist/help/booklet.d.ts.map +1 -0
  72. package/dist/help/booklet.js +78 -0
  73. package/dist/help/booklet.js.map +1 -0
  74. package/dist/help/index.d.ts +2 -0
  75. package/dist/help/index.d.ts.map +1 -1
  76. package/dist/help/index.js +1 -0
  77. package/dist/help/index.js.map +1 -1
  78. package/dist/help/lookup.d.ts.map +1 -1
  79. package/dist/help/lookup.js +23 -4
  80. package/dist/help/lookup.js.map +1 -1
  81. package/dist/help/manifest.d.ts +4 -0
  82. package/dist/help/manifest.d.ts.map +1 -1
  83. package/dist/help/manifest.js +11 -5
  84. package/dist/help/manifest.js.map +1 -1
  85. package/dist/init/commands.d.ts +11 -0
  86. package/dist/init/commands.d.ts.map +1 -0
  87. package/dist/init/commands.js +13 -0
  88. package/dist/init/commands.js.map +1 -0
  89. package/dist/init/diagnosis.d.ts +43 -0
  90. package/dist/init/diagnosis.d.ts.map +1 -0
  91. package/dist/init/diagnosis.js +88 -0
  92. package/dist/init/diagnosis.js.map +1 -0
  93. package/dist/init/index.d.ts +31 -0
  94. package/dist/init/index.d.ts.map +1 -0
  95. package/dist/init/index.js +14 -0
  96. package/dist/init/index.js.map +1 -0
  97. package/dist/init/page.d.ts +16 -0
  98. package/dist/init/page.d.ts.map +1 -0
  99. package/dist/init/page.js +192 -0
  100. package/dist/init/page.js.map +1 -0
  101. package/dist/init/routes.d.ts +7 -0
  102. package/dist/init/routes.d.ts.map +1 -0
  103. package/dist/init/routes.js +10 -0
  104. package/dist/init/routes.js.map +1 -0
  105. package/dist/init/run.d.ts +12 -0
  106. package/dist/init/run.d.ts.map +1 -0
  107. package/dist/init/run.js +58 -0
  108. package/dist/init/run.js.map +1 -0
  109. package/dist/memo/commands.d.ts +19 -0
  110. package/dist/memo/commands.d.ts.map +1 -0
  111. package/dist/memo/commands.js +44 -0
  112. package/dist/memo/commands.js.map +1 -0
  113. package/dist/memo/index.d.ts +8 -0
  114. package/dist/memo/index.d.ts.map +1 -0
  115. package/dist/memo/index.js +8 -0
  116. package/dist/memo/index.js.map +1 -0
  117. package/dist/memo/routes.d.ts +11 -0
  118. package/dist/memo/routes.d.ts.map +1 -0
  119. package/dist/memo/routes.js +49 -0
  120. package/dist/memo/routes.js.map +1 -0
  121. package/dist/memo/run.d.ts +26 -0
  122. package/dist/memo/run.d.ts.map +1 -0
  123. package/dist/memo/run.js +292 -0
  124. package/dist/memo/run.js.map +1 -0
  125. package/dist/mood/routes.d.ts +9 -0
  126. package/dist/mood/routes.d.ts.map +1 -0
  127. package/dist/mood/routes.js +29 -0
  128. package/dist/mood/routes.js.map +1 -0
  129. package/dist/policy/media.d.ts +2 -3
  130. package/dist/policy/media.d.ts.map +1 -1
  131. package/dist/policy/media.js +9 -10
  132. package/dist/policy/media.js.map +1 -1
  133. package/dist/policy/wakewords.d.ts +1 -1
  134. package/dist/policy/wakewords.d.ts.map +1 -1
  135. package/dist/policy/wakewords.js +18 -4
  136. package/dist/policy/wakewords.js.map +1 -1
  137. package/dist/remind/commands.d.ts +19 -0
  138. package/dist/remind/commands.d.ts.map +1 -0
  139. package/dist/remind/commands.js +21 -0
  140. package/dist/remind/commands.js.map +1 -0
  141. package/dist/remind/index.d.ts +8 -0
  142. package/dist/remind/index.d.ts.map +1 -0
  143. package/dist/remind/index.js +8 -0
  144. package/dist/remind/index.js.map +1 -0
  145. package/dist/remind/routes.d.ts +9 -0
  146. package/dist/remind/routes.d.ts.map +1 -0
  147. package/dist/remind/routes.js +25 -0
  148. package/dist/remind/routes.js.map +1 -0
  149. package/dist/remind/run.d.ts +20 -0
  150. package/dist/remind/run.d.ts.map +1 -0
  151. package/dist/remind/run.js +90 -0
  152. package/dist/remind/run.js.map +1 -0
  153. package/dist/render/envelope.d.ts.map +1 -1
  154. package/dist/render/envelope.js +5 -1
  155. package/dist/render/envelope.js.map +1 -1
  156. package/dist/render/index.d.ts +3 -1
  157. package/dist/render/index.d.ts.map +1 -1
  158. package/dist/render/index.js +3 -1
  159. package/dist/render/index.js.map +1 -1
  160. package/dist/render/pages.d.ts +16 -0
  161. package/dist/render/pages.d.ts.map +1 -1
  162. package/dist/render/pages.js +45 -0
  163. package/dist/render/pages.js.map +1 -1
  164. package/dist/render/receipt.d.ts +37 -0
  165. package/dist/render/receipt.d.ts.map +1 -0
  166. package/dist/render/receipt.js +75 -0
  167. package/dist/render/receipt.js.map +1 -0
  168. package/dist/render/templates.d.ts +1 -1
  169. package/dist/render/templates.d.ts.map +1 -1
  170. package/dist/render/templates.js +3 -1
  171. package/dist/render/templates.js.map +1 -1
  172. package/dist/search/commands.d.ts +19 -0
  173. package/dist/search/commands.d.ts.map +1 -0
  174. package/dist/search/commands.js +22 -0
  175. package/dist/search/commands.js.map +1 -0
  176. package/dist/search/index.d.ts +10 -0
  177. package/dist/search/index.d.ts.map +1 -0
  178. package/dist/search/index.js +10 -0
  179. package/dist/search/index.js.map +1 -0
  180. package/dist/search/routes.d.ts +11 -0
  181. package/dist/search/routes.d.ts.map +1 -0
  182. package/dist/search/routes.js +56 -0
  183. package/dist/search/routes.js.map +1 -0
  184. package/dist/search/run.d.ts +17 -0
  185. package/dist/search/run.d.ts.map +1 -0
  186. package/dist/search/run.js +62 -0
  187. package/dist/search/run.js.map +1 -0
  188. package/dist/shared/commandSpec.d.ts +69 -0
  189. package/dist/shared/commandSpec.d.ts.map +1 -0
  190. package/dist/shared/commandSpec.js +2 -0
  191. package/dist/shared/commandSpec.js.map +1 -0
  192. package/dist/shared/exit.d.ts +10 -0
  193. package/dist/shared/exit.d.ts.map +1 -0
  194. package/dist/shared/exit.js +13 -0
  195. package/dist/shared/exit.js.map +1 -0
  196. package/dist/shared/rows.d.ts +13 -0
  197. package/dist/shared/rows.d.ts.map +1 -0
  198. package/dist/shared/rows.js +3 -0
  199. package/dist/shared/rows.js.map +1 -0
  200. package/dist/sync/commands.d.ts +19 -0
  201. package/dist/sync/commands.d.ts.map +1 -0
  202. package/dist/sync/commands.js +20 -0
  203. package/dist/sync/commands.js.map +1 -0
  204. package/dist/sync/index.d.ts +8 -0
  205. package/dist/sync/index.d.ts.map +1 -0
  206. package/dist/sync/index.js +8 -0
  207. package/dist/sync/index.js.map +1 -0
  208. package/dist/sync/routes.d.ts +8 -0
  209. package/dist/sync/routes.d.ts.map +1 -0
  210. package/dist/sync/routes.js +10 -0
  211. package/dist/sync/routes.js.map +1 -0
  212. package/dist/sync/run.d.ts +16 -0
  213. package/dist/sync/run.d.ts.map +1 -0
  214. package/dist/sync/run.js +44 -0
  215. package/dist/sync/run.js.map +1 -0
  216. package/dist/triggers/routeSpec.d.ts +35 -0
  217. package/dist/triggers/routeSpec.d.ts.map +1 -0
  218. package/dist/triggers/routeSpec.js +2 -0
  219. package/dist/triggers/routeSpec.js.map +1 -0
  220. package/dist/triggers/routes.generated.d.ts +9 -0
  221. package/dist/triggers/routes.generated.d.ts.map +1 -0
  222. package/dist/triggers/routes.generated.js +32 -0
  223. package/dist/triggers/routes.generated.js.map +1 -0
  224. package/dist/wish/commands.d.ts +11 -0
  225. package/dist/wish/commands.d.ts.map +1 -0
  226. package/dist/wish/commands.js +13 -0
  227. package/dist/wish/commands.js.map +1 -0
  228. package/dist/wish/complete.js +2 -2
  229. package/dist/wish/complete.js.map +1 -1
  230. package/dist/wish/ensure.d.ts +4 -0
  231. package/dist/wish/ensure.d.ts.map +1 -1
  232. package/dist/wish/ensure.js +8 -7
  233. package/dist/wish/ensure.js.map +1 -1
  234. package/dist/wish/gate.d.ts +3 -0
  235. package/dist/wish/gate.d.ts.map +1 -1
  236. package/dist/wish/gate.js +5 -1
  237. package/dist/wish/gate.js.map +1 -1
  238. package/dist/wish/index.d.ts +1 -0
  239. package/dist/wish/index.d.ts.map +1 -1
  240. package/dist/wish/index.js +2 -0
  241. package/dist/wish/index.js.map +1 -1
  242. package/dist/wish/reconcile.js +2 -2
  243. package/dist/wish/reconcile.js.map +1 -1
  244. package/dist/wish/routes.d.ts +12 -0
  245. package/dist/wish/routes.d.ts.map +1 -0
  246. package/dist/wish/routes.js +48 -0
  247. package/dist/wish/routes.js.map +1 -0
  248. package/dist/wish/run.d.ts +13 -0
  249. package/dist/wish/run.d.ts.map +1 -0
  250. package/dist/wish/run.js +57 -0
  251. package/dist/wish/run.js.map +1 -0
  252. package/package.json +3 -3
  253. package/templates/receipt.html +156 -0
package/SKILL.md CHANGED
@@ -41,7 +41,9 @@ memo-cmd-read memo.help.lookup # 说「备忘录 HELP」(
41
41
  <!-- HELP-AUTO-START -->
42
42
  | 唤醒词 | key | shape | 例 |
43
43
  |---|---|---|---|
44
- | 按时间搜备忘 | memo.search | list | `memo-cmd-read memo.search --params '{"timeRange":"2026-09"}'` |
44
+ | 首次使用 | memo.init | receipt | `memo-cmd-read memo.init` |
45
+ | 删备忘 | memo.remove | receipt | `memo-cmd-read memo.remove --params '{"id":"<id>"}'` |
46
+ | 按时间搜备忘 | memo.search | list | `memo-cmd-read memo.search --params '{"start":"2026-07-01","end":"2026-07-07"}'` |
45
47
  | 查已提醒备忘 | memo.remind | list | `memo-cmd-read memo.remind --params '{"done":false}'` |
46
48
  | 批量改分类 | memo.batch | receipt | `memo-cmd-read memo.batch` |
47
49
  | 改子分类 | memo.update | receipt | `memo-cmd-read memo.update --params '{"id":"<id>"}'` |
@@ -50,14 +52,14 @@ memo-cmd-read memo.help.lookup # 说「备忘录 HELP」(
50
52
  | 看备忘 | memo.detail | detail | `memo-cmd-read memo.detail --params '{"id":"<id>"}'` |
51
53
  | 看提醒 | memo.remind | list | `memo-cmd-read memo.remind` |
52
54
  | 查提醒 | memo.remind | list | `memo-cmd-read memo.remind` |
53
- | 设提醒 | memo.create | receipt | `memo-cmd-read memo.create --params '{"remindAt":"2026-10-01 09:00"}'` |
55
+ | 设提醒 | memo.reminder | receipt | `memo-cmd-read memo.reminder --params '{"remind_at":"2026-10-01 09:00"}'` |
54
56
  | 记提醒 | memo.create | receipt | `memo-cmd-read memo.create --params '{"remindAt":"2026-10-01 09:00"}'` |
55
57
  | 废弃提醒 | memo.remove | receipt | `memo-cmd-read memo.remove --params '{"mode":"abandon"}'` |
56
58
  | 完成心愿 | memo.update | receipt | `memo-cmd-read memo.update --params '{"done":true}'` |
57
59
  | 心愿排期 | memo.wish | list | `memo-cmd-read memo.wish` |
58
- | 飞书授权 | memo.auth | receipt | `memo-cmd-read memo.auth` |
59
60
  | 记一条 | memo.create | receipt | `memo-cmd-read memo.create` |
60
61
  | 添加笔记 | memo.create | receipt | `memo-cmd-read memo.create` |
62
+ | 备忘录同步 | memo.sync | receipt | `memo-cmd-read memo.sync` |
61
63
  | 记心愿 | memo.create | receipt | `memo-cmd-read memo.create --params '{"category":"心愿"}'` |
62
64
  | 记打卡 | memo.create | receipt | `memo-cmd-read memo.create --params '{"category":"打卡"}'` |
63
65
  | 记情绪日记 | memo.create | receipt | `memo-cmd-read memo.create --params '{"category":"情绪日记"}'` |
@@ -67,11 +69,11 @@ memo-cmd-read memo.help.lookup # 说「备忘录 HELP」(
67
69
  | 改心愿 | memo.update | receipt | `memo-cmd-read memo.update --params '{"category":"心愿","id":"<id>"}'` |
68
70
  | 改打卡 | memo.update | receipt | `memo-cmd-read memo.update --params '{"category":"打卡","id":"<id>"}'` |
69
71
  | 改情绪日记 | memo.update | receipt | `memo-cmd-read memo.update --params '{"category":"情绪日记","id":"<id>"}'` |
70
- | 删心愿 | memo.update | receipt | `memo-cmd-read memo.update --params '{"category":"心愿","id":"<id>"}'` |
71
- | 删打卡 | memo.update | receipt | `memo-cmd-read memo.update --params '{"category":"打卡","id":"<id>"}'` |
72
- | 删情绪日记 | memo.update | receipt | `memo-cmd-read memo.update --params '{"category":"情绪日记","id":"<id>"}'` |
72
+ | 删心愿 | memo.remove | receipt | `memo-cmd-read memo.remove --params '{"category":"心愿","id":"<id>"}'` |
73
+ | 删打卡 | memo.remove | receipt | `memo-cmd-read memo.remove --params '{"category":"打卡","id":"<id>"}'` |
74
+ | 删情绪日记 | memo.remove | receipt | `memo-cmd-read memo.remove --params '{"category":"情绪日记","id":"<id>"}'` |
73
75
 
74
- 相关场景:memo.auth、memo.batch、memo.create、memo.detail、memo.help.lookup、memo.remind、memo.remove、memo.search、memo.stats、memo.sync、memo.update、memo.wish(12 联动,key 字符串 P8 落表时冻结)。
76
+ 相关场景:memo.auth、memo.batch、memo.create、memo.detail、memo.help.lookup、memo.init、memo.remind、memo.reminder、memo.remove、memo.search、memo.stats、memo.sync、memo.update、memo.wish(14 联动,key 字符串 P8 落表时冻结)。
75
77
  <!-- HELP-AUTO-END -->
76
78
 
77
79
  ## HELP 交付(说「备忘录 HELP」走这里,不分大小写)
@@ -88,5 +90,5 @@ memo-cmd-read memo.help.lookup # 说「备忘录 HELP」(
88
90
 
89
91
  ## 环境与出 scope
90
92
 
91
- - 路径类取值一律读配置文件 `~/.ilife/memo.yaml`(**配置文件是唯一真相,环境变量不参与配置**):库目录=`db.dir`(空串=数据目录 `~/.ilife/data/`,首次读时自动建)、库文件名=`db.name`(默认 `memo.db`)、产物目录=`html.dir`(默认 `memo_html`)、附件目录=`media.dir`(默认 `media`)、飞书 CLI 路径=`lark.cliPath`(**空串=没有显式值,走本机自动探测**)、飞书扫码目录=`lark.qrDir`(空串=系统临时目录下的 `memo_feishu_qr`)、HELP 与速查表的主体名=`files.help`/`files.lookup`;`ILIFE_CONFIG_DIR` 设定且非空即整体接管配置目录。飞书同步另须 lark-cli 四门全绿。取值面与环境项见 docs/env.md。
93
+ - 路径类取值一律读配置文件 `~/.ilife/memo.yaml`(**配置文件是唯一真相,环境变量不参与配置**):库目录=`db.dir`(空串=数据目录 `~/.ilife/data/`,首次读时自动建)、库文件名=`db.name`(默认 `memo.db`)、产物目录=`html.dir`(默认 `memo_html`)、附件目录=`media.dir`(默认 `media`)、飞书 CLI 路径=`lark.cliPath`(**空串=没有显式值,走本机自动探测**)、飞书扫码目录=`lark.qrDir`(空串=系统临时目录下的 `memo_feishu_qr`)、HELP 与速查表的主体名=`files.help`/`files.lookup`。飞书同步另须 lark-cli 四门全绿。取值面与环境项见 docs/env.md。
92
94
  - 出 scope:定时任务、面板、本技能外联动;Python 老家只读对照。
@@ -0,0 +1,9 @@
1
+ /** 打卡域 · 路由声明(一个唤醒词一条记录;`order` 是全表顺序权威)。
2
+ *
3
+ * 本域**没有自己的命令键**:记/删/改打卡三条走备忘域的 `memo.create`/`memo.remove`/`memo.update`
4
+ *(键的事实住 `src/memo/commands.ts`)。词随它服务的 HELP 场景住本件——这就是本域在 #855 里的全部交付;
5
+ * 命令实现与页面的活归各属主域与 #830(本件不重复那份事实)。
6
+ */
7
+ import type { RouteDecl } from '../triggers/routeSpec.js';
8
+ export declare const CHECKIN_ROUTES: readonly RouteDecl[];
9
+ //# sourceMappingURL=routes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"routes.d.ts","sourceRoot":"","sources":["../../src/checkin/routes.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAE1D,eAAO,MAAM,cAAc,EAAE,SAAS,SAAS,EA2B9C,CAAC"}
@@ -0,0 +1,29 @@
1
+ export const CHECKIN_ROUTES = [
2
+ {
3
+ order: 21,
4
+ wakeWord: '记打卡',
5
+ scene: 'memo_add_checkin',
6
+ key: 'memo.create',
7
+ cli: 'memo-cmd-read memo.create --params \'{"title":"跑步5公里","category":"打卡"}\'',
8
+ preset: { category: '打卡' },
9
+ },
10
+ {
11
+ order: 22,
12
+ wakeWord: '删打卡',
13
+ scene: 'memo_delete_checkin',
14
+ key: 'memo.remove',
15
+ cli: 'memo-cmd-read memo.remove --params \'{"id":1,"confirm":true}\'',
16
+ needs: ['id'],
17
+ preset: { category: '打卡' },
18
+ },
19
+ {
20
+ order: 23,
21
+ wakeWord: '改打卡',
22
+ scene: 'memo_update_checkin',
23
+ key: 'memo.update',
24
+ cli: 'memo-cmd-read memo.update --params \'{"id":1,"body":"跑步5公里"}\'',
25
+ needs: ['id'],
26
+ preset: { category: '打卡' },
27
+ },
28
+ ];
29
+ //# sourceMappingURL=routes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"routes.js","sourceRoot":"","sources":["../../src/checkin/routes.ts"],"names":[],"mappings":"AAQA,MAAM,CAAC,MAAM,cAAc,GAAyB;IAClD;QACE,KAAK,EAAE,EAAE;QACT,QAAQ,EAAE,KAAK;QACf,KAAK,EAAE,kBAAkB;QACzB,GAAG,EAAE,aAAa;QAClB,GAAG,EAAE,0EAA0E;QAC/E,MAAM,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE;KAC3B;IACD;QACE,KAAK,EAAE,EAAE;QACT,QAAQ,EAAE,KAAK;QACf,KAAK,EAAE,qBAAqB;QAC5B,GAAG,EAAE,aAAa;QAClB,GAAG,EAAE,gEAAgE;QACrE,KAAK,EAAE,CAAC,IAAI,CAAC;QACb,MAAM,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE;KAC3B;IACD;QACE,KAAK,EAAE,EAAE;QACT,QAAQ,EAAE,KAAK;QACf,KAAK,EAAE,qBAAqB;QAC5B,GAAG,EAAE,aAAa;QAClB,GAAG,EAAE,gEAAgE;QACrE,KAAK,EAAE,CAAC,IAAI,CAAC;QACb,MAAM,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE;KAC3B;CACF,CAAC"}
@@ -5,23 +5,33 @@
5
5
  import { existsSync } from 'node:fs';
6
6
  import { basename, dirname, join, resolve } from 'node:path';
7
7
  import { saveHtmlFile, helpReuseWindowOf } from 'base-paint/save-html';
8
- import { openMemoDb, closeMemoDb, listNotes, getNote, searchNotes, abandonReminder, checkDueReminders, listCompletedReminders, listReminderRows, countReminderRowsOfNote, collectBatchItems, countNotesByCategory, applyBatchCategory, authInit, authQr, authPoll, authStatus, runSentinel, MemoFetchError, } from '../fetch/index.js';
9
- import { normalizeTop, normalizeSub, needId, normalizeMediaPath, crudCreate, crudUpdate, crudRemove } from '../policy/index.js';
10
- // #661:心愿类的对外面——记/改/删/批量排期四条写命令与反向对账都经这一个门(`src/wish/index.ts`)。
11
- // #665:完成心愿走原子转换(`completeWish`,老 `complete-wish`);排期/完成向导收集走 `wizards`。
12
- import { dueForCategory, dueMatches, ensureWish, updateWish, removeWish, setWishDue, reconcileWishes, completeWish, planWizard, completeWizard } from '../wish/index.js';
13
- import { memoShapeFor, buildMemoEnvelope, renderEnvelopeHtml, assertHtmlSize, fillMemoPage, pageEnvelope, wishPlanSnapshot, wishCompleteSnapshot, changeCategorySnapshot, syncSnapshot, MemoRenderError } from '../render/index.js';
8
+ // #855:复制区载荷的装配与信封取形(`buildDataText`/`buildLogText`/`MemoCopyEnvelope` 位)随 `memo.init`
9
+ // 一起搬进 `src/init/run.ts`——只有那条命令在用,不留第二份。
10
+ import { openMemoDb, closeMemoDb, MemoFetchError, } from '../fetch/index.js';
11
+ import { LARK_WEBSITE_LINE } from '../fetch/feishu.js';
12
+ // #855:参数校验口径(`crud*`/`normalize*`/`needId`)随备忘域命令一起搬进 `src/memo/run.ts`;
13
+ // 本件只剩开库前分派与交付装配,不再直接做域校验。
14
+ // #855:跨域的写侧合成(`reconcileWishes`)随 `memo.sync` 一起搬进 `src/sync/run.ts`;
15
+ // 本件只剩开库前分派与交付装配,不再直调域实现。
16
+ // #855:**命令登记查表**——各域自己的声明(`src/<域>/commands.ts`)由生成器汇成本表;命中即走该域的运行件。
17
+ import { REGISTRY } from './registry.js';
18
+ // #855:行适配已无人用本件这份(`toRows` 随 `memo.batch` 搬进 `src/memo/run.ts`,出口侧交付件不拼行)。
19
+ import { fail } from '../shared/exit.js';
20
+ import { memoShapeFor, buildMemoEnvelope, renderEnvelopeHtml, assertHtmlSize, MemoRenderError } from '../render/index.js';
14
21
  import { buildMemoHelpFileData, renderMemoHelpHtml } from '../help/helpFile.js';
15
22
  import { buildHelpSceneIndex } from '../help/sceneData.js';
16
23
  import { buildHelpLookup } from '../help/index.js';
17
24
  import { helpHtmlDirName, helpFileStem, lookupFileStem } from '../help/manifest.js';
25
+ // #855:产物名主体(`bookletFileStem`)与诊断读取/两页装配(`INIT_SCENE_ID`/`readInitDiagnosis`/
26
+ // `InitInputError`/`renderInitPage`/`InitPageMode`)随 `memo.sync`/`memo.init` 搬进各自的域——
27
+ // 本件只剩开库前分派与交付装配。
18
28
  import { resolveDbDir, dbFilename } from '../fetch/paths.js';
19
29
  import { isConfigKey, runConfigKey } from './config.js';
20
30
  // #706 · 配置体检:设置页专用的一条只读命令,同走「进分派层之前拦下」这条口(判据住 src/health.ts)。
21
31
  import { isHealthCheckKey, runHealthCheckKey } from './health.js';
22
32
  import { MemoPolicyError } from '../fetch/errors.js';
23
33
  const DEFAULT_TIMEOUT_MS = 30000;
24
- function fail(code, msg) { console.error('ERR ' + code + ': ' + msg); process.exit(code); }
34
+ // #855:失败约定(`fail`)提到共用位 `src/shared/exit.ts`——出口与各域运行件同一档退出码。
25
35
  function toast(msg) { console.error('TOAST: ' + msg); }
26
36
  function preflight() {
27
37
  const v = process.versions.node.split('.').map(Number);
@@ -56,8 +66,8 @@ const HELP_MODE_FILE = 'file';
56
66
  * 换算与校验都在共用件,坏参抛 `RangeError` ⇒ 用 `helpReuseWindowOf` 翻成出口的「参数错」那一档
57
67
  * (exit 2),与其余四家同档:坏参绝不静默当 0。 */
58
68
  const helpReuseWindow = helpReuseWindowOf((m) => fail(2, m));
59
- /** 缺省交付的落点意图:`<库目录>/<memo_html>/〈主体〉`(目录名与主体是备忘录自己的三个值,
60
- * #695 起从配置文件取:`html.dir`/`files.help`/`files.lookup`,默认逐字等于老常量)。 */
69
+ /** 缺省交付的落点意图:`<库目录>/<memo_html>/〈主体〉`(目录名取自 `../help/manifest.js` 的
70
+ * `helpHtmlDirName()`,主体是那两个回常量的 `helpFileStem()`/`lookupFileStem()`)。 */
61
71
  function landingOf(dbPath, stem) {
62
72
  return { dir: join(resolve(dbPath), helpHtmlDirName()), stem };
63
73
  }
@@ -144,277 +154,55 @@ function dispatchHelp(params, dbPath) {
144
154
  };
145
155
  }
146
156
  function ok(data) { return { data, exit: 0 }; }
147
- function asIds(value) {
148
- if (!Array.isArray(value) || value.length === 0)
149
- fail(2, 'ids 须为非空数组');
150
- return value.map((v) => needId(v, 'ids'));
151
- }
152
- const toRows = (xs) => xs.map((x) => ({ ...x }));
157
+ // #855:`asIds` 随 `memo.update`/`memo.batch` 一起搬进 `src/memo/run.ts`——只有备忘域在用,不留第二份。
158
+ // #855:`noteIdOfMessage`/`receiptOptsOf`/`buildReceipt` 随 `memo.create`/`memo.update`/`memo.remove`
159
+ // 一起搬进 `src/memo/run.ts`——只有备忘域在用,不留第二份。
160
+ // #855:行适配(`toRows`/`PageRow`)已提到共用位 `src/shared/rows.ts`——出口与各域运行件共用一份。
161
+ // #855:区间参数的三件校验(`needRangeDate`/`rangeLimitOf`/`categoryFilterOf`)随 `memo.search`
162
+ // 一起搬进 `src/search/run.ts`——只有那一条命令在用,不留第二份。
163
+ // #855:提醒写参数的四件解析(`reminderNoteIdOf`/`reminderContentOf`/`reminderAtOf`/
164
+ // `reminderTypeRuleOf`)随 `memo.reminder` 一起搬进 `src/remind/run.ts`——只有那一条命令在用,不留第二份。
165
+ // #855:删分层三件解析(`deleteIdsOf`/`deleteConfirmOf`/`deleteWithRemindersOf`)随 `memo.remove`
166
+ // 一起搬进 `src/memo/run.ts`——只有那一条命令在用,不留第二份。
167
+ // #833:初始化渲染的入参读取(老 `init-report --data` 契约)已搬到本域能力目录
168
+ // —— `readInitDiagnosis`(`src/init/diagnosis.ts`,坏输入抛 `InitInputError`,`dispatchInit` 认它归 exit 2)。
169
+ // 放在本件的旧实现(`initDiagOf`)连同 `init_report` 那套自持页一起退役:一条命令的事实只住它自己的能力目录。
153
170
  function dispatch(key, params, db) {
171
+ // #855:**先查登记表**——已搬迁的域把自己的命令声明在 `src/<域>/commands.ts`,生成物 `registry.ts`
172
+ // 汇成一张表,命中即调该域的运行件;没搬的键落下面的 switch(搬迁每落一域,switch 就少一段)。
173
+ const spec = REGISTRY[key];
174
+ if (spec !== undefined)
175
+ return spec.kind === 'pre-open' ? spec.run(params) : spec.run(params, db);
154
176
  switch (key) {
155
- case 'memo.search': {
156
- const items = params.q !== undefined
157
- ? searchNotes(db, String(params.q), { category: params.category, sub: params.sub })
158
- : listNotes(db).filter((n) => (params.category === undefined || n.category === params.category));
159
- const hit = items.filter((n) => dueMatches(n, params));
160
- return ok({ items: hit, total: hit.length });
161
- }
162
- case 'memo.detail': return ok({ item: getNote(db, needId(params.id, '详情')) });
163
- case 'memo.create': {
164
- const c = crudCreate(params);
165
- const top = normalizeTop(params.category);
166
- const sub = normalizeSub(params.sub);
167
- const media = params.media !== undefined ? normalizeMediaPath(params.media) : null;
168
- const r = ensureWish(db, {
169
- title: c.title,
170
- body: c.body,
171
- category: top,
172
- sub,
173
- media,
174
- remindAt: params.remindAt,
175
- repeatType: params.repeatType,
176
- repeatRule: params.repeatRule,
177
- due: params.due,
178
- });
179
- return { data: r.receipt, exit: r.exit };
180
- }
181
- case 'memo.update': {
182
- // 批量排期(老 `set-due`):一批 id + 一个排期日期(空值=清期),走心愿那条合成写。
183
- if (params.ids !== undefined) {
184
- const r = setWishDue(db, { ids: asIds(params.ids), due: params.due });
185
- return { data: r.receipt, exit: r.exit };
186
- }
187
- const id = crudUpdate(params).id;
188
- // 完成心愿走原子转换(老 `complete-wish`:删心愿 + 生成打卡;`content` 即打卡内容,缺省拷贝心愿原文)。
189
- if (params.done === true) {
190
- const r = completeWish(db, { id, content: params.content });
191
- return { data: r.receipt, exit: r.exit };
192
- }
193
- if (params.done !== undefined)
194
- fail(2, 'done 只认 true(完成心愿);改字段另给参数');
195
- const patch = {};
196
- if (params.title !== undefined || params.body !== undefined) {
197
- const t = typeof params.title === 'string' ? params.title.trim() : '';
198
- const b = typeof params.body === 'string' ? params.body.trim() : '';
199
- if (!t && !b)
200
- fail(2, '正文不可改成空');
201
- patch.content = b !== '' ? b : t !== '' ? t : getNote(db, id).content;
202
- }
203
- if (params.category !== undefined)
204
- patch.category = normalizeTop(params.category);
205
- if (params.sub !== undefined)
206
- patch.sub_category = normalizeSub(params.sub);
207
- if (params.media !== undefined)
208
- patch.media_path = normalizeMediaPath(params.media);
209
- if (params.reminderId !== undefined)
210
- patch.reminder_id = needId(params.reminderId, '关联提醒');
211
- // 老实现没有「改提醒时间」这一路:提醒时间定盘即不可改,错了废弃重建,大声失败不静默。
212
- if (params.remindAt !== undefined)
213
- fail(2, '提醒时间不可改(废弃旧提醒、重建一条)');
214
- if (params.due !== undefined)
215
- patch.due = dueForCategory(patch.category ?? getNote(db, id).category, params.due);
216
- if (Object.keys(patch).length === 0)
217
- fail(2, '至少需要提供一个更新字段:content/category/sub/media/reminderId/due');
218
- const r = updateWish(db, { id, patch });
219
- return { data: r.receipt, exit: r.exit };
220
- }
221
- case 'memo.remove': {
222
- // 废弃提醒(老 `dismiss`):按提醒 id 标 dismissed,笔记保留。
223
- if (params.mode === 'abandon') {
224
- const rid = needId(params.id, '废弃提醒');
225
- abandonReminder(db, rid);
226
- return ok({ ok: true, message: '提醒已废弃(笔记保留):' + rid });
227
- }
228
- const r = crudRemove(params);
229
- // 老 `delete`:有关联提醒必须显式级联(`--with-reminders`),否则大声失败;
230
- // 有未触发提醒时的二次确认是交互动作,出口非交互,改显式参数一次讲清。
231
- const related = countReminderRowsOfNote(db, r.id);
232
- if (related > 0 && params.withReminders !== true) {
233
- fail(2, '笔记 ' + r.id + ' 关联 ' + related + ' 个提醒,请加 withReminders:true 级联删除(提醒不会被自动删除)');
234
- }
235
- // #661 · C 口径:默认照老「远端标完成」,显式 `purge:true` 才连飞书任务一起删(两种语义用参数讲清)。
236
- const w = removeWish(db, r.id, params.purge === true);
237
- return { data: w.receipt, exit: w.exit };
238
- }
239
- case 'memo.remind': {
240
- // 到期判定(老 `due`):读+写 notified,定时壳不搬。
241
- if (params.mode === 'due' || params.due === true) {
242
- const items = checkDueReminders(db);
243
- return ok({ items, total: items.length });
244
- }
245
- // 已完成视图(老 `completed`);`done:true` 是它的兼容写法。
246
- if (params.mode === 'done' || params.done === true) {
247
- const items = listCompletedReminders(db);
248
- return ok({ items, total: items.length });
249
- }
250
- const status = params.status === undefined ? 'active' : String(params.status);
251
- if (status !== 'active' && status !== 'dismissed')
252
- fail(2, 'status 只认 active/dismissed');
253
- const items = listReminderRows(db, status);
254
- return ok({ items, total: items.length });
255
- }
256
- case 'memo.wish': {
257
- // #665 向导:`wizard: plan` 出排期向导页(默认全勾选),`wizard: complete` 出完成向导页(默认不勾选);
258
- // 不带即老形状(只回列表,#661 行为)。
259
- if (params.wizard === 'plan' || params.wizard === 'complete') {
260
- if (params.wizard === 'plan') {
261
- const w = planWizard(db, { ids: params.ids, all: params.all, suggestDue: params.suggestDue });
262
- const snap = wishPlanSnapshot(toRows(w.items), w.suggestDue, w.includeAll);
263
- const message = '找到 ' + w.items.length + ' 个心愿' + (w.includeAll ? '(含已排期)' : '(仅未排期)');
264
- const payload = pageEnvelope({
265
- commandCn: '心愿排期', wakeWord: '心愿排期', sceneId: 'wish-batch-plan',
266
- title: snap.title, summary: snap.summary, sections: snap.sections,
267
- copyLog: {
268
- thinking: '过程型向导 · 只读收集心愿列表,勾选+填排期后复制指令回 AI(HTML 不写库)',
269
- data_structure: "notes 表(category='心愿')· id/content/category/sub_category/due/feishu_task_guid",
270
- call_chain: 'memo.wish wizard:plan → render_wish_plan → 共享 filler',
271
- exception: '无',
272
- },
273
- extra: { items: w.items, suggest_due: w.suggestDue, all: w.includeAll },
274
- message,
275
- });
276
- return {
277
- data: { items: w.items, total: w.items.length, suggestDue: w.suggestDue, all: w.includeAll },
278
- exit: 0,
279
- deliver: { html: fillMemoPage('wish_plan', payload), stem: '心愿排期向导' },
280
- };
281
- }
282
- const w = completeWizard(db, { ids: params.ids, onlyOverdue: params.onlyOverdue, all: params.all, content: params.content });
283
- const snap = wishCompleteSnapshot(toRows(w.items));
284
- const message = '找到 ' + w.items.length + ' 个心愿' + (w.onlyOverdue ? '(仅未排期+已过期)' : '');
285
- const payload = pageEnvelope({
286
- commandCn: '心愿完成', wakeWord: '完成心愿', sceneId: 'wish-complete',
287
- title: snap.title, summary: snap.summary, sections: snap.sections,
288
- copyLog: {
289
- thinking: '过程型向导 · 勾选+填打卡内容后复制指令回 AI(completeWish 原子转换)',
290
- data_structure: "notes 表(category='心愿')· id/content/due/feishu_task_guid",
291
- call_chain: 'memo.wish wizard:complete → render_wish_complete → 共享 filler',
292
- exception: '无',
293
- },
294
- extra: { items: w.items, default_content: w.defaultContent, only_overdue: w.onlyOverdue },
295
- message,
296
- });
297
- return {
298
- data: { items: w.items, total: w.items.length, defaultContent: w.defaultContent, onlyOverdue: w.onlyOverdue },
299
- exit: 0,
300
- deliver: { html: fillMemoPage('wish_complete', payload), stem: '心愿完成向导' },
301
- };
302
- }
303
- const items = listNotes(db).filter((n) => n.category === '心愿').filter((n) => dueMatches(n, params));
304
- return ok({ items, total: items.length });
305
- }
306
- case 'memo.sync': {
307
- // #661:反向对账三步(本地缺标识补建/远端完成→本地/远端改期→本地),回执带 11 项统计。
308
- // #665:同步报告页随行(#661 遗留 HELP 承诺,出页归这一支)。
309
- const r = reconcileWishes(db);
310
- const snap = syncSnapshot(r.receipt);
311
- const payload = pageEnvelope({
312
- commandCn: '备忘录同步', wakeWord: '备忘录同步', sceneId: 'sync-from-feishu',
313
- title: snap.title, summary: snap.summary, sections: snap.sections,
314
- copyLog: {
315
- thinking: '双向对账 · 飞书 done/due 反向同步到本机(只读扫描 + 有变更才写)',
316
- data_structure: 'reconcile 11 项统计(backfilled/synced/due_*/skipped_*/errors)',
317
- call_chain: 'memo.sync → reconcileWishes → render_sync_report → 共享 filler',
318
- exception: r.receipt.errors.length ? r.receipt.errors.join('; ') : '无',
319
- },
320
- extra: { ...r.receipt },
321
- message: r.receipt.message,
322
- });
323
- return { data: r.receipt, exit: r.exit, deliver: { html: fillMemoPage('sync_report', payload), stem: '同步报告' } };
324
- }
325
- case 'memo.batch': {
326
- // #665 批量改分类:不带目标分类即收集(出向导页);带目标分类+ids 即执行。
327
- const from = params.fromCategory !== undefined ? normalizeTop(params.fromCategory) : null;
328
- const to = params.toCategory !== undefined ? normalizeTop(params.toCategory) : null;
329
- if (from !== null && to !== null && from === to)
330
- fail(2, '原分类与目标分类相同:' + from);
331
- // 执行(老 `update-category` 逐条):目标分类+一批 id;只给目标分类不给 id 即收集预览。
332
- if (params.ids !== undefined) {
333
- if (to === null)
334
- fail(2, '执行改分类须给 toCategory(只收集不执行时别给 ids)');
335
- const r = applyBatchCategory(db, asIds(params.ids), to);
336
- const doneAll = r.errors.length === 0;
337
- return {
338
- data: {
339
- ok: doneAll,
340
- message: '改分类完成:更新=' + r.updated + ',跳过=' + r.skipped,
341
- updated: r.updated,
342
- skipped: r.skipped,
343
- errors: r.errors,
344
- },
345
- exit: doneAll ? 0 : 4,
346
- };
347
- }
348
- const items = collectBatchItems(db, from);
349
- const snap = changeCategorySnapshot(toRows(items), from, to);
350
- const message = "原分类 '" + (from ?? '<全部>') + "' 下 " + items.length + ' 条笔记';
351
- const payload = pageEnvelope({
352
- commandCn: '批量改分类', wakeWord: '备忘改分类', sceneId: 'batch-update-category',
353
- title: snap.title, summary: snap.summary, sections: snap.sections,
354
- copyLog: {
355
- thinking: '过程型向导 · 勾选后复制改分类指令回 AI(只改顶层分类,sub_category 不动)',
356
- data_structure: 'notes 表 · id/content/category/sub_category/media_path/due',
357
- call_chain: 'memo.batch → render_change_category → 共享 filler',
358
- exception: '无',
359
- },
360
- extra: { items, from_category: from, to_category: to, target_conflict_count: to ? countNotesByCategory(db, to) : 0 },
361
- message,
362
- });
363
- return {
364
- data: { ok: true, message, items, total: items.length, fromCategory: from, toCategory: to },
365
- exit: 0,
366
- deliver: { html: fillMemoPage('change_category', payload), stem: '批量改分类' },
367
- };
368
- }
369
- case 'memo.auth': {
370
- // #665 飞书授权引导(三步非阻塞,Q4 批新增 key):init/qr/poll+status 诊断。
371
- // #666 自检 sentinel:step:'diag'(显式诊断,D-03 任务半场)。
372
- const step = params.step === undefined ? 'status' : String(params.step);
373
- if (step === 'init') {
374
- const brand = params.brand === undefined ? 'feishu' : String(params.brand);
375
- return ok({
376
- ok: true,
377
- message: '授权已发起:在浏览器打开链接或扫码,完成后调 step poll 续轮询',
378
- step: 'init',
379
- ...authInit(brand),
380
- });
381
- }
382
- if (step === 'qr') {
383
- if (typeof params.url !== 'string' || params.url.length === 0)
384
- fail(2, 'qr 须给 url(init 回的 verification_url)');
385
- const qrPath = authQr(params.url, params.outDir === undefined ? undefined : String(params.outDir));
386
- return ok({ ok: true, message: '二维码已生成', step: 'qr', qrPath });
387
- }
388
- if (step === 'poll') {
389
- if (typeof params.deviceCode !== 'string' || params.deviceCode.length === 0) {
390
- fail(2, 'poll 须给 deviceCode(init 回的 device_code,过期请重走 init)');
391
- }
392
- const domain = params.domain === undefined ? 'task' : String(params.domain);
393
- return ok({ ok: true, message: '授权续轮询完成', step: 'poll', ...authPoll(params.deviceCode, domain) });
394
- }
395
- if (step === 'status') {
396
- return ok({ ok: true, message: '授权状态', step: 'status', ...authStatus() });
397
- }
398
- if (step === 'diag') {
399
- // #666 自检 sentinel(D-03 任务半场):显式才跑;默认四步不碰它,零写。
400
- const r = runSentinel(params.dryRun === true ? { dryRun: true } : undefined);
401
- return { data: r.receipt, exit: r.exit };
402
- }
403
- fail(2, 'step 只认 init/qr/poll/status/diag');
404
- return ok(null);
405
- }
406
- case 'memo.stats': {
407
- const all = listNotes(db);
408
- const metrics = { count: all.length };
409
- for (const n of all)
410
- metrics['cat.' + n.category] = (metrics['cat.' + n.category] || 0) + 1;
411
- return ok({ metrics });
412
- }
177
+ // #855:`memo.search`/`memo.detail` 已搬回 `src/search/`(声明住 `search/commands.ts`,运行件住 `search/run.ts`),
178
+ // 上面那张登记查表先命中它们——这两条 case 已删。**别再长回来**:加命令改的是自己域里的声明。
179
+ // #855:`memo.create` 已搬回 `src/memo/`(声明住 `memo/commands.ts`,运行件住 `memo/run.ts`),
180
+ // 上面那张登记查表先命中它——本条 case 已删。**别再长回来**。
181
+ // #855:`memo.update` 已搬回 `src/memo/`(声明住 `memo/commands.ts`,运行件住 `memo/run.ts`),
182
+ // 上面那张登记查表先命中它——本条 case 已删。**别再长回来**。
183
+ // #855:`memo.remove` 已搬回 `src/memo/`(声明住 `memo/commands.ts`,运行件住 `memo/run.ts`),
184
+ // 上面那张登记查表先命中它——本条 case 已删。**别再长回来**。
185
+ // #855:`memo.remind`/`memo.reminder` 已搬回 `src/remind/`(声明住 `remind/commands.ts`,
186
+ // 运行件住 `remind/run.ts`),上面那张登记查表先命中它们——这两条 case 已删。
187
+ // #855:`memo.wish` 已搬回 `src/wish/`(声明住 `wish/commands.ts`,运行件住 `wish/run.ts`)——
188
+ // 上面那张登记查表先命中它,本 case 已删。**别再长回来**:加命令改的是自己域里的声明。
189
+ // #855:`memo.sync` 已搬回 `src/sync/`(声明住 `sync/commands.ts`,运行件住 `sync/run.ts`),
190
+ // 上面那张登记查表先命中它——本条 case 已删。**别再长回来**。
191
+ // #855:`memo.batch` 已搬回 `src/memo/`(声明住 `memo/commands.ts`,运行件住 `memo/run.ts`),
192
+ // 上面那张登记查表先命中它——本条 case 已删。**别再长回来**。
193
+ // #855:`memo.auth` 已搬回 `src/sync/`(声明住 `sync/commands.ts`,运行件住 `sync/run.ts`),
194
+ // 上面那张登记查表先命中它——本条 case 已删。**别再长回来**。
195
+ // #855:`memo.stats` 已搬回 `src/memo/`(声明住 `memo/commands.ts`,运行件住 `memo/run.ts`),
196
+ // 上面那张登记查表先命中它——本条 case 已删。**别再长回来**。
413
197
  // #229:本键由 `dispatchHelp` 在**开库之前**处理(只读页不建库);走到这里说明 main 的路由被改坏了。
414
198
  // 照 skill-bill/src/cli/cmd_read.ts:449-451 的同一道内部断言——防的是「改回无条件开库」这个静默回退。
415
199
  case 'memo.help.lookup':
416
200
  fail(1, '内部错误:memo.help.lookup 须走 dispatchHelp(开库之前)');
417
201
  return ok(null);
202
+ // #850:本键由 `dispatchInit` 在**开库之前**处理(只渲染不建库;库不存在时也能跑);走到这里同上。
203
+ case 'memo.init':
204
+ fail(1, '内部错误:memo.init 须走 dispatchInit(开库之前)');
205
+ return ok(null);
418
206
  default:
419
207
  fail(3, '未知 memo key:' + key);
420
208
  return ok(null);
@@ -491,16 +279,22 @@ async function main() {
491
279
  try {
492
280
  // #229:`memo.help.lookup` 在**开库之前**分派(只读页不建库);其余键照旧走 dispatch。
493
281
  // #665:开的是老库文件(直连,不建库);用完即关,失败也关。
282
+ // #855:开库前分派统一走登记表——`pre-open` 类的命令(今天只有 `memo.init`,声明住 `src/init/commands.ts`)
283
+ // 在开库之前调,库不存在时也能跑;`memo.help.lookup` 的交付装配仍走框架位 `dispatchHelp`(HELP 面,不进域门)。
494
284
  const help = o.key === 'memo.help.lookup' ? dispatchHelp(params, dbPath) : null;
285
+ const pre = o.key === 'memo.help.lookup' ? undefined : REGISTRY[o.key];
495
286
  let db = null;
496
287
  let out;
497
288
  try {
498
- if (help === null) {
499
- db = openMemoDb(dbPath);
500
- out = dispatch(o.key, params, db);
289
+ if (help !== null) {
290
+ out = { data: help.data, exit: 0 };
291
+ }
292
+ else if (pre !== undefined && pre.kind === 'pre-open') {
293
+ out = pre.run(params);
501
294
  }
502
295
  else {
503
- out = { data: help.data, exit: 0 };
296
+ db = openMemoDb(dbPath);
297
+ out = dispatch(o.key, params, db);
504
298
  }
505
299
  }
506
300
  finally {
@@ -538,6 +332,10 @@ async function main() {
538
332
  }
539
333
  }
540
334
  catch (e) {
335
+ // #760:飞书相关命令缺 CLI/未登录的失败回执带上安装指引(与面板「复制安装指引」按钮同一内容)。
336
+ if (e instanceof MemoFetchError && e.code.startsWith('LARK_')) {
337
+ fail(4, '取数失败:' + e.message + '。' + LARK_WEBSITE_LINE + '完整安装指引(含复制给 AI 的 prompt)见 memo.config.read 回执的 lark.prompt。');
338
+ }
541
339
  if (e instanceof MemoFetchError)
542
340
  fail(4, '取数失败:' + e.message);
543
341
  if (e instanceof MemoPolicyError)
@@ -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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"}