skill-memo-ilife 0.3.2 → 0.3.13

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 (320) hide show
  1. package/SKILL.md +33 -34
  2. package/dist/checkin/index.d.ts +8 -0
  3. package/dist/checkin/index.d.ts.map +1 -0
  4. package/dist/checkin/index.js +8 -0
  5. package/dist/checkin/index.js.map +1 -0
  6. package/dist/checkin/receipt.d.ts +17 -0
  7. package/dist/checkin/receipt.d.ts.map +1 -0
  8. package/dist/checkin/receipt.js +63 -0
  9. package/dist/checkin/receipt.js.map +1 -0
  10. package/dist/checkin/routes.d.ts +4 -0
  11. package/dist/checkin/routes.d.ts.map +1 -1
  12. package/dist/checkin/routes.js +2 -2
  13. package/dist/checkin/routes.js.map +1 -1
  14. package/dist/cli/cmd_read.js +19 -53
  15. package/dist/cli/cmd_read.js.map +1 -1
  16. package/dist/cli/config.d.ts +4 -4
  17. package/dist/cli/config.d.ts.map +1 -1
  18. package/dist/cli/config.js +25 -4
  19. package/dist/cli/config.js.map +1 -1
  20. package/dist/cli/health/items.js +2 -2
  21. package/dist/cli/health/items.js.map +1 -1
  22. package/dist/cli/health.d.ts.map +1 -1
  23. package/dist/cli/health.js +3 -2
  24. package/dist/cli/health.js.map +1 -1
  25. package/dist/cli/keys.d.ts +6 -3
  26. package/dist/cli/keys.d.ts.map +1 -1
  27. package/dist/cli/keys.js +2 -5
  28. package/dist/cli/keys.js.map +1 -1
  29. package/dist/cli/registry.d.ts +1 -1
  30. package/dist/{fetch/db.d.ts → db/readonly.d.ts} +1 -1
  31. package/dist/db/readonly.d.ts.map +1 -0
  32. package/dist/{fetch/db.js → db/readonly.js} +5 -5
  33. package/dist/db/readonly.js.map +1 -0
  34. package/dist/help/lookup.d.ts +18 -1
  35. package/dist/help/lookup.d.ts.map +1 -1
  36. package/dist/help/lookup.js +53 -37
  37. package/dist/help/lookup.js.map +1 -1
  38. package/dist/help/sceneData.js +1 -1
  39. package/dist/help/scenes/checkin.d.ts +1 -1
  40. package/dist/help/scenes/checkin.js +1 -1
  41. package/dist/help/scenes/init.d.ts +1 -1
  42. package/dist/help/scenes/init.js +1 -1
  43. package/dist/help/scenes/memo.d.ts +1 -1
  44. package/dist/help/scenes/memo.js +1 -1
  45. package/dist/help/scenes/mood.d.ts +1 -1
  46. package/dist/help/scenes/mood.js +1 -1
  47. package/dist/help/scenes/remind.d.ts +1 -1
  48. package/dist/help/scenes/remind.js +2 -2
  49. package/dist/help/scenes/remind.js.map +1 -1
  50. package/dist/help/scenes/search.d.ts +1 -1
  51. package/dist/help/scenes/search.js +1 -1
  52. package/dist/help/scenes/sync.d.ts +1 -1
  53. package/dist/help/scenes/sync.js +1 -1
  54. package/dist/help/scenes/wish.d.ts +1 -1
  55. package/dist/help/scenes/wish.js +1 -1
  56. package/dist/index.d.ts +11 -4
  57. package/dist/index.d.ts.map +1 -1
  58. package/dist/index.js +11 -5
  59. package/dist/index.js.map +1 -1
  60. package/dist/init/diagnosis.d.ts +2 -1
  61. package/dist/init/diagnosis.d.ts.map +1 -1
  62. package/dist/init/diagnosis.js.map +1 -1
  63. package/dist/init/page.d.ts +3 -2
  64. package/dist/init/page.d.ts.map +1 -1
  65. package/dist/init/page.js +20 -10
  66. package/dist/init/page.js.map +1 -1
  67. package/dist/init/routes.d.ts +4 -1
  68. package/dist/init/routes.d.ts.map +1 -1
  69. package/dist/init/routes.js +14 -0
  70. package/dist/init/routes.js.map +1 -1
  71. package/dist/init/run.d.ts.map +1 -1
  72. package/dist/init/run.js +7 -1
  73. package/dist/init/run.js.map +1 -1
  74. package/dist/{fetch → memo}/batch.d.ts +6 -2
  75. package/dist/memo/batch.d.ts.map +1 -0
  76. package/dist/{fetch → memo}/batch.js +8 -4
  77. package/dist/memo/batch.js.map +1 -0
  78. package/dist/memo/category.d.ts.map +1 -0
  79. package/dist/{policy → memo}/category.js +1 -1
  80. package/dist/memo/category.js.map +1 -0
  81. package/dist/memo/commands.d.ts +3 -12
  82. package/dist/memo/commands.d.ts.map +1 -1
  83. package/dist/memo/commands.js +1 -9
  84. package/dist/memo/commands.js.map +1 -1
  85. package/dist/{policy → memo}/crud.d.ts +1 -1
  86. package/dist/memo/crud.d.ts.map +1 -0
  87. package/dist/{policy → memo}/crud.js +22 -7
  88. package/dist/memo/crud.js.map +1 -0
  89. package/dist/memo/index.d.ts +4 -2
  90. package/dist/memo/index.d.ts.map +1 -1
  91. package/dist/memo/index.js +4 -2
  92. package/dist/memo/index.js.map +1 -1
  93. package/dist/memo/media.d.ts.map +1 -0
  94. package/dist/{policy → memo}/media.js +2 -2
  95. package/dist/memo/media.js.map +1 -0
  96. package/dist/memo/receipt.d.ts +35 -0
  97. package/dist/memo/receipt.d.ts.map +1 -0
  98. package/dist/memo/receipt.js +62 -0
  99. package/dist/memo/receipt.js.map +1 -0
  100. package/dist/memo/receiptPage.d.ts +44 -0
  101. package/dist/memo/receiptPage.d.ts.map +1 -0
  102. package/dist/memo/receiptPage.js +50 -0
  103. package/dist/memo/receiptPage.js.map +1 -0
  104. package/dist/memo/routes.d.ts.map +1 -1
  105. package/dist/memo/routes.js +32 -0
  106. package/dist/memo/routes.js.map +1 -1
  107. package/dist/memo/run.d.ts +9 -8
  108. package/dist/memo/run.d.ts.map +1 -1
  109. package/dist/memo/run.js +140 -97
  110. package/dist/memo/run.js.map +1 -1
  111. package/dist/mood/routes.d.ts.map +1 -1
  112. package/dist/mood/routes.js +36 -0
  113. package/dist/mood/routes.js.map +1 -1
  114. package/dist/remind/index.d.ts +5 -2
  115. package/dist/remind/index.d.ts.map +1 -1
  116. package/dist/remind/index.js +5 -2
  117. package/dist/remind/index.js.map +1 -1
  118. package/dist/{policy/reminder.d.ts → remind/policy.d.ts} +1 -1
  119. package/dist/remind/policy.d.ts.map +1 -0
  120. package/dist/{policy/reminder.js → remind/policy.js} +2 -2
  121. package/dist/remind/policy.js.map +1 -0
  122. package/dist/remind/routes.d.ts +1 -2
  123. package/dist/remind/routes.d.ts.map +1 -1
  124. package/dist/remind/routes.js +32 -2
  125. package/dist/remind/routes.js.map +1 -1
  126. package/dist/remind/run.d.ts +1 -1
  127. package/dist/remind/run.d.ts.map +1 -1
  128. package/dist/remind/run.js +112 -7
  129. package/dist/remind/run.js.map +1 -1
  130. package/dist/{fetch/reminders.d.ts → remind/store.d.ts} +2 -2
  131. package/dist/remind/store.d.ts.map +1 -0
  132. package/dist/{fetch/reminders.js → remind/store.js} +3 -3
  133. package/dist/remind/store.js.map +1 -0
  134. package/dist/render/envelope.d.ts.map +1 -1
  135. package/dist/render/envelope.js +3 -2
  136. package/dist/render/envelope.js.map +1 -1
  137. package/dist/render/html.js +1 -1
  138. package/dist/render/html.js.map +1 -1
  139. package/dist/render/index.d.ts +4 -1
  140. package/dist/render/index.d.ts.map +1 -1
  141. package/dist/render/index.js +5 -3
  142. package/dist/render/index.js.map +1 -1
  143. package/dist/render/listPage.d.ts +34 -0
  144. package/dist/render/listPage.d.ts.map +1 -0
  145. package/dist/render/listPage.js +39 -0
  146. package/dist/render/listPage.js.map +1 -0
  147. package/dist/render/memoPageAssets.d.ts +32 -0
  148. package/dist/render/memoPageAssets.d.ts.map +1 -0
  149. package/dist/render/memoPageAssets.js +320 -0
  150. package/dist/render/memoPageAssets.js.map +1 -0
  151. package/dist/render/pageAssets.js +3 -3
  152. package/dist/render/pageAssets.js.map +1 -1
  153. package/dist/render/pages.d.ts +9 -2
  154. package/dist/render/pages.d.ts.map +1 -1
  155. package/dist/render/pages.js +8 -16
  156. package/dist/render/pages.js.map +1 -1
  157. package/dist/render/receipt.d.ts +12 -3
  158. package/dist/render/receipt.d.ts.map +1 -1
  159. package/dist/render/receipt.js +55 -10
  160. package/dist/render/receipt.js.map +1 -1
  161. package/dist/search/routes.d.ts.map +1 -1
  162. package/dist/search/routes.js +1 -0
  163. package/dist/search/routes.js.map +1 -1
  164. package/dist/search/run.d.ts +11 -3
  165. package/dist/search/run.d.ts.map +1 -1
  166. package/dist/search/run.js +130 -11
  167. package/dist/search/run.js.map +1 -1
  168. package/dist/shared/commandSpec.d.ts +4 -5
  169. package/dist/shared/commandSpec.d.ts.map +1 -1
  170. package/dist/shared/errors.d.ts.map +1 -0
  171. package/dist/shared/errors.js.map +1 -0
  172. package/dist/{fetch → shared}/paths.d.ts +1 -1
  173. package/dist/shared/paths.d.ts.map +1 -0
  174. package/dist/{fetch → shared}/paths.js +3 -3
  175. package/dist/shared/paths.js.map +1 -0
  176. package/dist/shared/validators.d.ts +3 -0
  177. package/dist/shared/validators.d.ts.map +1 -0
  178. package/dist/shared/validators.js +15 -0
  179. package/dist/shared/validators.js.map +1 -0
  180. package/dist/sync/auth.d.ts.map +1 -0
  181. package/dist/{fetch → sync}/auth.js +3 -3
  182. package/dist/sync/auth.js.map +1 -0
  183. package/dist/sync/commands.d.ts.map +1 -1
  184. package/dist/sync/commands.js.map +1 -1
  185. package/dist/sync/feishu.d.ts.map +1 -0
  186. package/dist/{fetch → sync}/feishu.js +9 -9
  187. package/dist/sync/feishu.js.map +1 -0
  188. package/dist/sync/index.d.ts +5 -2
  189. package/dist/sync/index.d.ts.map +1 -1
  190. package/dist/sync/index.js +4 -2
  191. package/dist/sync/index.js.map +1 -1
  192. package/dist/sync/run.d.ts +1 -1
  193. package/dist/sync/run.d.ts.map +1 -1
  194. package/dist/sync/run.js +2 -1
  195. package/dist/sync/run.js.map +1 -1
  196. package/dist/{fetch → sync}/sentinel.d.ts +1 -1
  197. package/dist/sync/sentinel.d.ts.map +1 -0
  198. package/dist/{fetch → sync}/sentinel.js +1 -2
  199. package/dist/sync/sentinel.js.map +1 -0
  200. package/dist/triggers/routes.generated.d.ts +1 -1
  201. package/dist/triggers/routes.generated.d.ts.map +1 -1
  202. package/dist/triggers/routes.generated.js +19 -6
  203. package/dist/triggers/routes.generated.js.map +1 -1
  204. package/dist/triggers/routing.d.ts +7 -0
  205. package/dist/triggers/routing.d.ts.map +1 -0
  206. package/dist/triggers/routing.js +35 -0
  207. package/dist/triggers/routing.js.map +1 -0
  208. package/dist/wish/complete.d.ts +1 -1
  209. package/dist/wish/complete.d.ts.map +1 -1
  210. package/dist/wish/complete.js +1 -1
  211. package/dist/wish/complete.js.map +1 -1
  212. package/dist/wish/due.d.ts +1 -1
  213. package/dist/wish/due.d.ts.map +1 -1
  214. package/dist/wish/due.js +1 -1
  215. package/dist/wish/due.js.map +1 -1
  216. package/dist/wish/ensure.d.ts +2 -2
  217. package/dist/wish/ensure.d.ts.map +1 -1
  218. package/dist/wish/ensure.js +2 -2
  219. package/dist/wish/ensure.js.map +1 -1
  220. package/dist/wish/gate.d.ts +1 -1
  221. package/dist/wish/gate.d.ts.map +1 -1
  222. package/dist/wish/gate.js +1 -1
  223. package/dist/wish/gate.js.map +1 -1
  224. package/dist/wish/index.d.ts +4 -0
  225. package/dist/wish/index.d.ts.map +1 -1
  226. package/dist/wish/index.js +7 -0
  227. package/dist/wish/index.js.map +1 -1
  228. package/dist/{policy/wish.d.ts → wish/policy.d.ts} +1 -1
  229. package/dist/wish/policy.d.ts.map +1 -0
  230. package/dist/{policy/wish.js → wish/policy.js} +3 -3
  231. package/dist/wish/policy.js.map +1 -0
  232. package/dist/wish/receipt.d.ts +45 -0
  233. package/dist/wish/receipt.d.ts.map +1 -0
  234. package/dist/wish/receipt.js +68 -0
  235. package/dist/wish/receipt.js.map +1 -0
  236. package/dist/wish/reconcile.d.ts +1 -1
  237. package/dist/wish/reconcile.d.ts.map +1 -1
  238. package/dist/wish/reconcile.js +2 -2
  239. package/dist/wish/reconcile.js.map +1 -1
  240. package/dist/wish/routes.d.ts.map +1 -1
  241. package/dist/wish/routes.js +11 -1
  242. package/dist/wish/routes.js.map +1 -1
  243. package/dist/wish/run.d.ts +11 -3
  244. package/dist/wish/run.d.ts.map +1 -1
  245. package/dist/wish/run.js +75 -7
  246. package/dist/wish/run.js.map +1 -1
  247. package/dist/wish/taskRemove.js +2 -2
  248. package/dist/wish/taskRemove.js.map +1 -1
  249. package/dist/wish/taskSync.d.ts +1 -1
  250. package/dist/wish/taskSync.d.ts.map +1 -1
  251. package/dist/wish/taskSync.js +3 -3
  252. package/dist/wish/taskSync.js.map +1 -1
  253. package/dist/wish/taskWrite.d.ts.map +1 -0
  254. package/dist/{fetch → wish}/taskWrite.js +2 -2
  255. package/dist/wish/taskWrite.js.map +1 -0
  256. package/dist/wish/tasks.d.ts.map +1 -0
  257. package/dist/{fetch → wish}/tasks.js +2 -2
  258. package/dist/wish/tasks.js.map +1 -0
  259. package/dist/wish/wizards.d.ts +1 -1
  260. package/dist/wish/wizards.d.ts.map +1 -1
  261. package/dist/wish/wizards.js +1 -1
  262. package/dist/wish/wizards.js.map +1 -1
  263. package/package.json +4 -7
  264. package/templates/change_category.html +52 -28
  265. package/templates/init_report.html +15 -14
  266. package/templates/memo_query.html +59 -24
  267. package/templates/receipt.html +97 -27
  268. package/templates/sync_report.html +106 -98
  269. package/templates/wish_complete.html +48 -30
  270. package/templates/wish_plan.html +35 -20
  271. package/dist/fetch/auth.d.ts.map +0 -1
  272. package/dist/fetch/auth.js.map +0 -1
  273. package/dist/fetch/batch.d.ts.map +0 -1
  274. package/dist/fetch/batch.js.map +0 -1
  275. package/dist/fetch/db.d.ts.map +0 -1
  276. package/dist/fetch/db.js.map +0 -1
  277. package/dist/fetch/errors.d.ts.map +0 -1
  278. package/dist/fetch/errors.js.map +0 -1
  279. package/dist/fetch/feishu.d.ts.map +0 -1
  280. package/dist/fetch/feishu.js.map +0 -1
  281. package/dist/fetch/index.d.ts +0 -19
  282. package/dist/fetch/index.d.ts.map +0 -1
  283. package/dist/fetch/index.js +0 -13
  284. package/dist/fetch/index.js.map +0 -1
  285. package/dist/fetch/paths.d.ts.map +0 -1
  286. package/dist/fetch/paths.js.map +0 -1
  287. package/dist/fetch/reminders.d.ts.map +0 -1
  288. package/dist/fetch/reminders.js.map +0 -1
  289. package/dist/fetch/sentinel.d.ts.map +0 -1
  290. package/dist/fetch/sentinel.js.map +0 -1
  291. package/dist/fetch/taskWrite.d.ts.map +0 -1
  292. package/dist/fetch/taskWrite.js.map +0 -1
  293. package/dist/fetch/tasks.d.ts.map +0 -1
  294. package/dist/fetch/tasks.js.map +0 -1
  295. package/dist/policy/category.d.ts.map +0 -1
  296. package/dist/policy/category.js.map +0 -1
  297. package/dist/policy/crud.d.ts.map +0 -1
  298. package/dist/policy/crud.js.map +0 -1
  299. package/dist/policy/index.d.ts +0 -11
  300. package/dist/policy/index.d.ts.map +0 -1
  301. package/dist/policy/index.js +0 -8
  302. package/dist/policy/index.js.map +0 -1
  303. package/dist/policy/media.d.ts.map +0 -1
  304. package/dist/policy/media.js.map +0 -1
  305. package/dist/policy/reminder.d.ts.map +0 -1
  306. package/dist/policy/reminder.js.map +0 -1
  307. package/dist/policy/wakewords.d.ts +0 -14
  308. package/dist/policy/wakewords.d.ts.map +0 -1
  309. package/dist/policy/wakewords.js +0 -68
  310. package/dist/policy/wakewords.js.map +0 -1
  311. package/dist/policy/wish.d.ts.map +0 -1
  312. package/dist/policy/wish.js.map +0 -1
  313. /package/dist/{policy → memo}/category.d.ts +0 -0
  314. /package/dist/{policy → memo}/media.d.ts +0 -0
  315. /package/dist/{fetch → shared}/errors.d.ts +0 -0
  316. /package/dist/{fetch → shared}/errors.js +0 -0
  317. /package/dist/{fetch → sync}/auth.d.ts +0 -0
  318. /package/dist/{fetch → sync}/feishu.d.ts +0 -0
  319. /package/dist/{fetch → wish}/taskWrite.d.ts +0 -0
  320. /package/dist/{fetch → wish}/tasks.d.ts +0 -0
package/dist/memo/run.js CHANGED
@@ -1,60 +1,23 @@
1
1
  import { fail } from '../shared/exit.js';
2
2
  import { toRows } from '../shared/rows.js';
3
- import { getNote, listNotes, listReminderRows } from '../fetch/db.js';
4
- import { abandonReminder } from '../fetch/reminders.js';
5
- import { applyBatchCategory, collectBatchItems, countNotesByCategory } from '../fetch/batch.js';
6
- import { crudCreate, crudUpdate, needId, normalizeMediaPath, normalizeSub, normalizeTop } from '../policy/index.js';
7
- import { completeWish, dueForCategory, ensureWish, removeWish, setWishDue, updateWish } from '../wish/index.js';
8
- import { buildReceiptPage, changeCategorySnapshot, fillMemoPage, pageEnvelope } from '../render/index.js';
3
+ import { getNote, listReminderRows } from '../db/readonly.js';
4
+ import { abandonReminder } from '../remind/index.js';
5
+ import { applyBatchCategory, collectBatchItems, countNotesByCategory } from './batch.js';
6
+ import { needId } from '../shared/validators.js';
7
+ import { normalizeSub, normalizeTop } from './category.js';
8
+ import { crudCreate, crudUpdate, withHelpFieldNames } from './crud.js';
9
+ import { normalizeMediaPath } from './media.js';
10
+ import { completeWish, dueForCategory, ensureWish, removeWish, setWishDue, updateWish, wishReceiptFor } from '../wish/index.js';
11
+ import { changeCategorySnapshot, fillMemoPage, pageEnvelope } from '../render/index.js';
12
+ import { buildReceipt, noteIdOfMessage, receiptOptsOf } from './receiptPage.js';
13
+ import { memoBatchResultPage, memoCreatePage, memoRemovePage, memoUpdatePage } from './receipt.js';
14
+ import { bookletFileStem } from '../help/booklet.js';
15
+ import { checkinCreatePage, checkinRemovePage, checkinUpdatePage } from '../checkin/index.js';
9
16
  function asIds(value) {
10
17
  if (!Array.isArray(value) || value.length === 0)
11
18
  fail(2, 'ids 须为非空数组');
12
19
  return value.map((v) => needId(v, 'ids'));
13
20
  }
14
- /** #831 · 从写侧回执里取笔记 id:写侧两种说法都以「:id」结尾(`已记一条:7`/`已存在这条心愿(未新建):7`)。
15
- * 取不到即 null(调用方按「未新建」出页,不猜一个号)。 */
16
- function noteIdOfMessage(message) {
17
- const m = /(\d+)\D*$/.exec(message);
18
- const n = m === null ? NaN : Number(m[1]);
19
- return Number.isInteger(n) && n > 0 ? n : null;
20
- }
21
- /** #831 · 回执页的槽位:对象行 / 分类徽章 / 事实条 —— **从 notes 表那一行取**(不照抄入参)。 */
22
- function receiptOptsOf(note) {
23
- return {
24
- entityLabel: note.category,
25
- entityId: note.id,
26
- category: note.category,
27
- sub: note.sub_category,
28
- summary: [
29
- '笔记 ID ' + note.id,
30
- '正文:' + note.content,
31
- '分类 ' + note.category + (note.sub_category === null ? '' : '/' + note.sub_category),
32
- ],
33
- };
34
- }
35
- /** #831 · 「通用回执」族三格的整页交付(`memo.create`/`memo.update`/`memo.remove`)。
36
- *
37
- * 回执数据只有一处来源 —— policy 的顶层分类与写侧回执(`WishReceipt`)本身;本函数只做
38
- * 「回执 → 本的槽位」的翻译,页面形状一律交给族定义地 `buildReceiptPage`(不在此另立布局)。
39
- * 命令中文名与唤醒词取自 HELP 的场景主名(`sceneTitle`),与册子主体同名。 */
40
- function buildReceipt(scene, title, r, opts) {
41
- return buildReceiptPage({
42
- scene,
43
- title,
44
- message: r.message,
45
- badges: { category: normalizeTop(opts.category), sub: opts.sub === undefined || opts.sub === null ? null : String(opts.sub) },
46
- summary: opts.summary,
47
- sections: [],
48
- receipt: { entityLabel: opts.entityLabel, entityId: opts.entityId, local: r.local, remote: r.remote, remoteId: r.remoteId },
49
- copyLog: {
50
- thinking: title + ' · 写命令回执渲染为通用回执页(页族定义处 src/render/receipt.ts)',
51
- data_structure: 'notes/reminders 两表;回执字段 local/remote/remoteId 取自写侧',
52
- call_chain: 'cmd_read dispatch → ' + scene + ' → buildReceiptPage → fillMemoPage(receipt) → deliver 钩子落盘',
53
- exception: '无',
54
- },
55
- retryPrompt: '若这一页的内容不对,请把要改的那一条(笔记 ID 与要改成的样子)发我,我重跑一次:' + title,
56
- });
57
- }
58
21
  // #850 · 删分层 ids 解析:`ids` 数组/`id` 单值/`id` 空格分隔串(三者同义,HELP 的“空格分隔多个”即第三种)。
59
22
  // 返回去重后的正整数列(保序)。空即缺参数(exit 2)。
60
23
  function deleteIdsOf(params) {
@@ -77,25 +40,54 @@ function deleteWithRemindersOf(params) {
77
40
  }
78
41
  /** `memo.create`:参数校验 → 心愿合成写 → 通用回执页缺省落盘。 */
79
42
  export function runCreate(params, db) {
80
- const c = crudCreate(params);
81
- const top = normalizeTop(params.category);
82
- const sub = normalizeSub(params.sub);
83
- const media = params.media !== undefined ? normalizeMediaPath(params.media) : null;
43
+ // #830:HELP 的字段名(`content`/`sub_category`/`reminder_id`)与命令面认的名同义,映射只补缺
44
+ // (等价关系与出处见 `./crud.js` 那张表)——「字段名以 HELP 为准」(`t837-命令面口径.md`)。
45
+ const p = withHelpFieldNames(params);
46
+ // 关联提醒不在建时写(老 `add` 无 `--reminder-id`;打卡的 `reminder_id` 由打卡追溯链回填)。
47
+ // HELP 的 `memo_add_checkin` 留着这一格是为了溯源:给了就大声说清,不静默丢掉。
48
+ if (p.reminderId !== undefined && p.reminderId !== null && p.reminderId !== '') {
49
+ fail(2, '建时不可写关联提醒(老 add 无此参数;打卡的关联提醒由打卡追溯链回填)');
50
+ }
51
+ const c = crudCreate(p);
52
+ const top = normalizeTop(p.category);
53
+ const sub = normalizeSub(p.sub);
54
+ const media = p.media !== undefined ? normalizeMediaPath(p.media) : null;
84
55
  const r = ensureWish(db, {
85
56
  title: c.title,
86
57
  body: c.body,
87
58
  category: top,
88
59
  sub,
89
60
  media,
90
- remindAt: params.remindAt,
91
- repeatType: params.repeatType,
92
- repeatRule: params.repeatRule,
93
- due: params.due,
61
+ remindAt: p.remindAt,
62
+ repeatType: p.repeatType,
63
+ repeatRule: p.repeatRule,
64
+ due: p.due,
94
65
  });
95
66
  // #831:回执页缺省落盘(只有本族这三格出页;`memo.update` 的批量/完成心愿两支不出本族页)。
96
67
  // 页内的分类与子分类取自 notes 表那一行(权威),不照抄入参;`memo.create` 的回执不带 id 字段,
97
68
  // 故从回执末数取(写侧两种说法都以「:id」结尾)。
98
69
  const createdId = noteIdOfMessage(r.receipt.message);
70
+ const created = createdId === null ? null : getNote(db, createdId);
71
+ // #828:要求建提醒的那一趟(`记提醒`,路由断言 `needs: ['remindAt']`)落提醒域那一格;其余仍是「记备忘/记心愿」。
72
+ // 两步合一(添笔记 + 设提醒)不出第三条路,`#837` Q⑥ 已定:不开新键、也不给 create 补参数。
73
+ if (created !== null && p.remindAt !== undefined && p.remindAt !== null && p.remindAt !== '') {
74
+ const o = receiptOptsOf(created);
75
+ return { data: r.receipt, exit: r.exit, deliver: buildReceipt('memo_remind_with_note', '记提醒', r.receipt, { ...o, summary: [...o.summary, '提醒时间:' + String(p.remindAt), '重复:' + (p.repeatType === undefined ? '一次性' : String(p.repeatType))] }) };
76
+ }
77
+ // #829:分类=心愿 ⇒ 本域那一格(`记心愿`);不是即别家那格(情绪日记)。
78
+ if (created !== null && created.category === '心愿') {
79
+ return { data: r.receipt, exit: r.exit, deliver: wishReceiptFor('memo_add_wish', '记心愿', r.receipt, created) };
80
+ }
81
+ // #826:分类=备忘 ⇒ 本域那一格(`记备忘`,册子 seq 1)。
82
+ const memo = memoCreatePage(r.receipt, created);
83
+ if (memo !== undefined) {
84
+ return { data: r.receipt, exit: r.exit, deliver: memo };
85
+ }
86
+ // #830:分类=打卡 ⇒ 本域那一格(`记打卡`,册子 seq 23);不是即落回缺省那支(情绪日记)。
87
+ const checkin = checkinCreatePage(r.receipt, created);
88
+ if (checkin !== undefined) {
89
+ return { data: r.receipt, exit: r.exit, deliver: checkin };
90
+ }
99
91
  return {
100
92
  data: r.receipt,
101
93
  exit: r.exit,
@@ -104,48 +96,85 @@ export function runCreate(params, db) {
104
96
  }
105
97
  /** `memo.update`:批量排期/完成心愿原子转换/字段改三支(情绪日记走通用回执页)。 */
106
98
  export function runUpdate(params, db) {
99
+ // #830:HELP 字段名等价(`content`/`sub_category`/`reminder_id`),口径同 `runCreate`。
100
+ const p = withHelpFieldNames(params);
107
101
  // 批量排期(老 `set-due`):一批 id + 一个排期日期(空值=清期),走心愿那条合成写。
108
- if (params.ids !== undefined) {
109
- const r = setWishDue(db, { ids: asIds(params.ids), due: params.due });
110
- return { data: r.receipt, exit: r.exit };
102
+ if (p.ids !== undefined) {
103
+ const r = setWishDue(db, { ids: asIds(p.ids), due: p.due });
104
+ // #829:批量排期是**心愿类场景**(`心愿排期`),回执页归本域(册子 seq 19);不指向单条,
105
+ // 故主对象那一格写批次数,记账进明细(错误逐条列出,不静默)。
106
+ const errors = r.receipt.errors ?? [];
107
+ return {
108
+ data: r.receipt,
109
+ exit: r.exit,
110
+ deliver: wishReceiptFor('memo_wish_schedule', '心愿排期', r.receipt, null, {
111
+ entityLabel: '心愿批次',
112
+ // #882:同上——「这一趟动了几条」是条数,不是记录号 ⇒ 字符串形态,族里不给加 `#`。
113
+ entityId: r.receipt.updated + ' 条',
114
+ extraSummary: ['本地更新 ' + r.receipt.updated + ' 条', '远端同步 ' + r.receipt.feishuSynced + ' 条', '跳过 ' + r.receipt.skipped + ' 条'],
115
+ extraSections: errors.length === 0 ? [] : [{ heading: '没做成的', rows: [...errors] }],
116
+ }),
117
+ };
111
118
  }
112
- const id = crudUpdate(params).id;
119
+ const id = crudUpdate(p).id;
120
+ // #829:这一次动的那一行(权威)——`done` 那支完成后心愿就没了,故必须**动手之前**取。
121
+ const before = getNote(db, id);
122
+ const isWish = before.category === '心愿';
113
123
  // 完成心愿走原子转换(老 `complete-wish`:删心愿 + 生成打卡;`content` 即打卡内容,缺省拷贝心愿原文)。
114
- if (params.done === true) {
115
- const r = completeWish(db, { id, content: params.content });
124
+ if (p.done === true) {
125
+ const r = completeWish(db, { id, content: p.content });
126
+ if (isWish) {
127
+ return { data: r.receipt, exit: r.exit, deliver: wishReceiptFor('memo_complete_wish', '完成心愿', r.receipt, before) };
128
+ }
116
129
  return { data: r.receipt, exit: r.exit };
117
130
  }
118
- if (params.done !== undefined)
131
+ if (p.done !== undefined)
119
132
  fail(2, 'done 只认 true(完成心愿);改字段另给参数');
120
133
  const patch = {};
121
- if (params.title !== undefined || params.body !== undefined) {
122
- const t = typeof params.title === 'string' ? params.title.trim() : '';
123
- const b = typeof params.body === 'string' ? params.body.trim() : '';
134
+ if (p.title !== undefined || p.body !== undefined) {
135
+ const t = typeof p.title === 'string' ? p.title.trim() : '';
136
+ const b = typeof p.body === 'string' ? p.body.trim() : '';
124
137
  if (!t && !b)
125
138
  fail(2, '正文不可改成空');
126
139
  patch.content = b !== '' ? b : t !== '' ? t : getNote(db, id).content;
127
140
  }
128
- if (params.category !== undefined)
129
- patch.category = normalizeTop(params.category);
130
- if (params.sub !== undefined)
131
- patch.sub_category = normalizeSub(params.sub);
132
- if (params.media !== undefined)
133
- patch.media_path = normalizeMediaPath(params.media);
134
- if (params.reminderId !== undefined)
135
- patch.reminder_id = needId(params.reminderId, '关联提醒');
141
+ if (p.category !== undefined)
142
+ patch.category = normalizeTop(p.category);
143
+ if (p.sub !== undefined)
144
+ patch.sub_category = normalizeSub(p.sub);
145
+ if (p.media !== undefined)
146
+ patch.media_path = normalizeMediaPath(p.media);
147
+ if (p.reminderId !== undefined)
148
+ patch.reminder_id = needId(p.reminderId, '关联提醒');
136
149
  // 老实现没有「改提醒时间」这一路:提醒时间定盘即不可改,错了废弃重建,大声失败不静默。
137
- if (params.remindAt !== undefined)
150
+ if (p.remindAt !== undefined)
138
151
  fail(2, '提醒时间不可改(废弃旧提醒、重建一条)');
139
- if (params.due !== undefined)
140
- patch.due = dueForCategory(patch.category ?? getNote(db, id).category, params.due);
152
+ if (p.due !== undefined)
153
+ patch.due = dueForCategory(patch.category ?? getNote(db, id).category, p.due);
141
154
  if (Object.keys(patch).length === 0)
142
155
  fail(2, '至少需要提供一个更新字段:content/category/sub/media/reminderId/due');
143
156
  const r = updateWish(db, { id, patch });
144
157
  // #831:情绪日记那条走本族页(改后那一行是权威,回执页照它出)。
145
158
  const after = getNote(db, id);
159
+ // #829:心愿那条走本域的页(`改心愿`,册子 seq 22)。
160
+ if (after.category === '心愿') {
161
+ return { data: r.receipt, exit: r.exit, deliver: wishReceiptFor('memo_update_wish', '改心愿', r.receipt, after) };
162
+ }
146
163
  if (after.category === '情绪日记') {
147
164
  return { data: r.receipt, exit: r.exit, deliver: buildReceipt('memo_update_mood', '改情绪', r.receipt, receiptOptsOf(after)) };
148
165
  }
166
+ // #826:纯分类补丁→单条改分类(seq 4)/纯子分类补丁→改子分类(seq 5)/备忘行字段改→改备忘(seq 2)。
167
+ const memo = memoUpdatePage(r.receipt, after, Object.keys(patch));
168
+ if (memo !== undefined) {
169
+ return { data: r.receipt, exit: r.exit, deliver: memo };
170
+ }
171
+ // #830:改完那一行分类=打卡 ⇒ 本域那一格(`改打卡`,册子 seq 25)。位置在这里是有意的:
172
+ // 纯分类/纯子分类两种补丁的唤醒词是**备忘域**的(改分类/改子分类),由上面那两格接;
173
+ // 其余字段改落到打卡那一行时归本域,不再往下漏成「无产物」。
174
+ const checkin = checkinUpdatePage(r.receipt, after);
175
+ if (checkin !== undefined) {
176
+ return { data: r.receipt, exit: r.exit, deliver: checkin };
177
+ }
149
178
  return { data: r.receipt, exit: r.exit };
150
179
  }
151
180
  /** `memo.remove`:废弃提醒分支 + 删除分层闸(单条无关联直删/有关联先清单/批量一律先清单)。 */
@@ -206,9 +235,23 @@ export function runRemove(params, db) {
206
235
  // #831:情绪日记那条走本族页。**删前先取那一行**——删完 `getNote` 就取不到了。
207
236
  const before = getNote(db, ids[0]);
208
237
  const w = removeWish(db, ids[0], params.purge === true);
238
+ // #829:心愿那条走本域的页(`删心愿`,册子 seq 21)——同样是删前那一行作权威。
239
+ if (before.category === '心愿') {
240
+ return { data: w.receipt, exit: w.exit, deliver: wishReceiptFor('memo_delete_wish', '删心愿', w.receipt, before) };
241
+ }
209
242
  if (before.category === '情绪日记') {
210
243
  return { data: w.receipt, exit: w.exit, deliver: buildReceipt('memo_delete_mood', '删情绪', w.receipt, receiptOptsOf(before)) };
211
244
  }
245
+ // #826:删前那一行分类=备忘 ⇒ 本域那一格(`删备忘`,册子 seq 3)。
246
+ const memo = memoRemovePage(w.receipt, before);
247
+ if (memo !== undefined) {
248
+ return { data: w.receipt, exit: w.exit, deliver: memo };
249
+ }
250
+ // #830:删前那一行分类=打卡 ⇒ 本域那一格(`删打卡`,册子 seq 24)。
251
+ const checkin = checkinRemovePage(w.receipt, before);
252
+ if (checkin !== undefined) {
253
+ return { data: w.receipt, exit: w.exit, deliver: checkin };
254
+ }
212
255
  return { data: w.receipt, exit: w.exit };
213
256
  }
214
257
  const errors = [];
@@ -248,20 +291,26 @@ export function runBatch(params, db) {
248
291
  fail(2, '执行改分类须给 toCategory(只收集不执行时别给 ids)');
249
292
  const r = applyBatchCategory(db, asIds(params.ids), to);
250
293
  const doneAll = r.errors.length === 0;
294
+ // #882:这一句只在**写侧这一处**拼,信封的 message 与页 lead 同源(页装配件不重算);
295
+ // 措辞走中文条数,不再露半角等号(同一句原先在 `memo/receipt.ts` 又拼了一遍)。
296
+ const receipt = {
297
+ ok: doneAll,
298
+ message: '改分类完成:更新 ' + r.updated + ' 条,跳过 ' + r.skipped + ' 条',
299
+ local: 'updated',
300
+ remote: 'not-applicable',
301
+ remoteId: null,
302
+ };
251
303
  return {
252
- data: {
253
- ok: doneAll,
254
- message: '改分类完成:更新=' + r.updated + ',跳过=' + r.skipped,
255
- updated: r.updated,
256
- skipped: r.skipped,
257
- errors: r.errors,
258
- },
304
+ data: { ok: receipt.ok, message: receipt.message, updated: r.updated, skipped: r.skipped, errors: r.errors },
259
305
  exit: doneAll ? 0 : 4,
306
+ // #826:执行支的结果页(册子 seq 6,主体 `备忘改分类-批量`);数据那一格仍是老形状(只多 `deliver`)。
307
+ deliver: memoBatchResultPage({ receipt, updated: r.updated, skipped: r.skipped, errors: r.errors, from, to }),
260
308
  };
261
309
  }
262
310
  const items = collectBatchItems(db, from);
263
311
  const snap = changeCategorySnapshot(toRows(items), from, to);
264
- const message = "原分类 '" + (from ?? '<全部>') + "' 下 " + items.length + ' 条笔记';
312
+ // 文案口径(#870):分类名用「」括起,不用半角单引号——中文页上的半角标点归 H7(t849 §1)。
313
+ const message = '原分类「' + (from ?? '全部') + '」下 ' + items.length + ' 条笔记';
265
314
  const payload = pageEnvelope({
266
315
  commandCn: '批量改分类', wakeWord: '备忘改分类', sceneId: 'batch-update-category',
267
316
  title: snap.title, summary: snap.summary, sections: snap.sections,
@@ -277,16 +326,10 @@ export function runBatch(params, db) {
277
326
  return {
278
327
  data: { ok: true, message, items, total: items.length, fromCategory: from, toCategory: to },
279
328
  exit: 0,
280
- deliver: { html: fillMemoPage('change_category', payload), stem: '批量改分类' },
329
+ // #826:过程页主体按册子取(seq 31 `备忘改分类-批量-向导`);模板仍是本域这张向导页(主体名由域票填,#848 证据 §没碰什么)。
330
+ deliver: { html: fillMemoPage('change_category', payload), stem: bookletFileStem('memo_batch_change_category', '过程页') },
281
331
  };
282
332
  }
283
- /** `memo.stats`:全表计数(读,无唤醒词;处置归 #842 后仍保留此读口)。 */
284
- export function runStats(params, db) {
285
- void params;
286
- const all = listNotes(db);
287
- const metrics = { count: all.length };
288
- for (const n of all)
289
- metrics['cat.' + n.category] = (metrics['cat.' + n.category] || 0) + 1;
290
- return { data: { metrics }, exit: 0 };
291
- }
333
+ /** `memo.stats`(全表计数)已随 #858 整条退役:零唤醒词、HELP 无场景、老技能 21 个子命令无 stats
334
+ * (#842 Q④);本域今天只剩四条写命令,本条不再留读口。 */
292
335
  //# sourceMappingURL=run.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/memo/run.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/memo/run.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"routes.d.ts","sourceRoot":"","sources":["../../src/mood/routes.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAE1D,eAAO,MAAM,WAAW,EAAE,SAAS,SAAS,EA2B3C,CAAC"}
1
+ {"version":3,"file":"routes.d.ts","sourceRoot":"","sources":["../../src/mood/routes.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAE1D,eAAO,MAAM,WAAW,EAAE,SAAS,SAAS,EA+D3C,CAAC"}
@@ -25,5 +25,41 @@ export const MOOD_ROUTES = [
25
25
  needs: ['id'],
26
26
  preset: { category: '情绪日记' },
27
27
  },
28
+ // ↓↓ 后 4 行是旧表的长式别名(#821 保留作别名):与短式主名同场景,`needs`/`preset` 与旧表逐字一致。
29
+ // 最长匹配保证长式优先命中;别名不上链路总表(#842 Q③,已由 #858 落地:速查表按场景主名一行)。
30
+ {
31
+ order: 35,
32
+ wakeWord: '记情绪日记',
33
+ scene: 'memo_add_mood',
34
+ key: 'memo.create',
35
+ cli: 'memo-cmd-read memo.create --params \'{"title":"今天很开心","category":"情绪日记"}\'',
36
+ preset: { category: '情绪日记' },
37
+ },
38
+ {
39
+ order: 36,
40
+ wakeWord: '查情绪日记',
41
+ scene: 'memo_search_mood',
42
+ key: 'memo.search',
43
+ cli: 'memo-cmd-read memo.search --params \'{"category":"情绪日记"}\'',
44
+ preset: { category: '情绪日记' },
45
+ },
46
+ {
47
+ order: 37,
48
+ wakeWord: '改情绪日记',
49
+ scene: 'memo_update_mood',
50
+ key: 'memo.update',
51
+ cli: 'memo-cmd-read memo.update --params \'{"id":1,"body":"今天很开心"}\'',
52
+ needs: ['id'],
53
+ preset: { category: '情绪日记' },
54
+ },
55
+ {
56
+ order: 38,
57
+ wakeWord: '删情绪日记',
58
+ scene: 'memo_delete_mood',
59
+ key: 'memo.remove',
60
+ cli: 'memo-cmd-read memo.remove --params \'{"id":1,"confirm":true}\'',
61
+ needs: ['id'],
62
+ preset: { category: '情绪日记' },
63
+ },
28
64
  ];
29
65
  //# sourceMappingURL=routes.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"routes.js","sourceRoot":"","sources":["../../src/mood/routes.ts"],"names":[],"mappings":"AAQA,MAAM,CAAC,MAAM,WAAW,GAAyB;IAC/C;QACE,KAAK,EAAE,EAAE;QACT,QAAQ,EAAE,KAAK;QACf,KAAK,EAAE,eAAe;QACtB,GAAG,EAAE,aAAa;QAClB,GAAG,EAAE,4EAA4E;QACjF,MAAM,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE;KAC7B;IACD;QACE,KAAK,EAAE,EAAE;QACT,QAAQ,EAAE,KAAK;QACf,KAAK,EAAE,kBAAkB;QACzB,GAAG,EAAE,aAAa;QAClB,GAAG,EAAE,gEAAgE;QACrE,KAAK,EAAE,CAAC,IAAI,CAAC;QACb,MAAM,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE;KAC7B;IACD;QACE,KAAK,EAAE,EAAE;QACT,QAAQ,EAAE,KAAK;QACf,KAAK,EAAE,kBAAkB;QACzB,GAAG,EAAE,aAAa;QAClB,GAAG,EAAE,gEAAgE;QACrE,KAAK,EAAE,CAAC,IAAI,CAAC;QACb,MAAM,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE;KAC7B;CACF,CAAC"}
1
+ {"version":3,"file":"routes.js","sourceRoot":"","sources":["../../src/mood/routes.ts"],"names":[],"mappings":"AAQA,MAAM,CAAC,MAAM,WAAW,GAAyB;IAC/C;QACE,KAAK,EAAE,EAAE;QACT,QAAQ,EAAE,KAAK;QACf,KAAK,EAAE,eAAe;QACtB,GAAG,EAAE,aAAa;QAClB,GAAG,EAAE,4EAA4E;QACjF,MAAM,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE;KAC7B;IACD;QACE,KAAK,EAAE,EAAE;QACT,QAAQ,EAAE,KAAK;QACf,KAAK,EAAE,kBAAkB;QACzB,GAAG,EAAE,aAAa;QAClB,GAAG,EAAE,gEAAgE;QACrE,KAAK,EAAE,CAAC,IAAI,CAAC;QACb,MAAM,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE;KAC7B;IACD;QACE,KAAK,EAAE,EAAE;QACT,QAAQ,EAAE,KAAK;QACf,KAAK,EAAE,kBAAkB;QACzB,GAAG,EAAE,aAAa;QAClB,GAAG,EAAE,gEAAgE;QACrE,KAAK,EAAE,CAAC,IAAI,CAAC;QACb,MAAM,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE;KAC7B;IACD,kEAAkE;IAClE,wDAAwD;IACxD;QACE,KAAK,EAAE,EAAE;QACT,QAAQ,EAAE,OAAO;QACjB,KAAK,EAAE,eAAe;QACtB,GAAG,EAAE,aAAa;QAClB,GAAG,EAAE,4EAA4E;QACjF,MAAM,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE;KAC7B;IACD;QACE,KAAK,EAAE,EAAE;QACT,QAAQ,EAAE,OAAO;QACjB,KAAK,EAAE,kBAAkB;QACzB,GAAG,EAAE,aAAa;QAClB,GAAG,EAAE,4DAA4D;QACjE,MAAM,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE;KAC7B;IACD;QACE,KAAK,EAAE,EAAE;QACT,QAAQ,EAAE,OAAO;QACjB,KAAK,EAAE,kBAAkB;QACzB,GAAG,EAAE,aAAa;QAClB,GAAG,EAAE,gEAAgE;QACrE,KAAK,EAAE,CAAC,IAAI,CAAC;QACb,MAAM,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE;KAC7B;IACD;QACE,KAAK,EAAE,EAAE;QACT,QAAQ,EAAE,OAAO;QACjB,KAAK,EAAE,kBAAkB;QACzB,GAAG,EAAE,aAAa;QAClB,GAAG,EAAE,gEAAgE;QACrE,KAAK,EAAE,CAAC,IAAI,CAAC;QACb,MAAM,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE;KAC7B;CACF,CAAC"}
@@ -1,8 +1,11 @@
1
1
  /** 提醒域 · **能力门**(票 #855):本域对外的唯一一道门。
2
2
  *
3
3
  * 门规照 `docs/agents/structure.md` 铁律五与 `命令登记纪律.md` 形状一:只转出**跨目录真要用**的名字。
4
- * 今天只有命令声明 `REMIND_COMMANDS` 一个——生成的 `src/cli/registry.ts` 从门取数组;
5
- * 域内互相用的东西(`run.ts` 的两个处理函数与写参数解析)**不出这个门**。
4
+ * 今天两类:① 命令声明 `REMIND_COMMANDS`(生成的 `src/cli/registry.ts` 从门取数组);
5
+ * ② 备忘域与心愿域真在用的三个写参数解析 + 一条废弃(`memo.remove` 的 `abandon` 支和心愿写要它们)——
6
+ * 跨域**只许经门**,不许深引域内实现件(`test/cmd-registry-855.test.mjs` 的「域间零直引」守着)。
6
7
  */
7
8
  export { REMIND_COMMANDS } from './commands.js';
9
+ export { normalizeRemindAt, normalizeRepeatRule, normalizeRepeatType } from './policy.js';
10
+ export { abandonReminder } from './store.js';
8
11
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/remind/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/remind/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAC1F,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC"}
@@ -1,8 +1,11 @@
1
1
  /** 提醒域 · **能力门**(票 #855):本域对外的唯一一道门。
2
2
  *
3
3
  * 门规照 `docs/agents/structure.md` 铁律五与 `命令登记纪律.md` 形状一:只转出**跨目录真要用**的名字。
4
- * 今天只有命令声明 `REMIND_COMMANDS` 一个——生成的 `src/cli/registry.ts` 从门取数组;
5
- * 域内互相用的东西(`run.ts` 的两个处理函数与写参数解析)**不出这个门**。
4
+ * 今天两类:① 命令声明 `REMIND_COMMANDS`(生成的 `src/cli/registry.ts` 从门取数组);
5
+ * ② 备忘域与心愿域真在用的三个写参数解析 + 一条废弃(`memo.remove` 的 `abandon` 支和心愿写要它们)——
6
+ * 跨域**只许经门**,不许深引域内实现件(`test/cmd-registry-855.test.mjs` 的「域间零直引」守着)。
6
7
  */
7
8
  export { REMIND_COMMANDS } from './commands.js';
9
+ export { normalizeRemindAt, normalizeRepeatRule, normalizeRepeatType } from './policy.js';
10
+ export { abandonReminder } from './store.js';
8
11
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/remind/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/remind/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAC1F,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC"}
@@ -14,4 +14,4 @@ export interface RemindRoute {
14
14
  done?: boolean;
15
15
  }
16
16
  export declare function routeRemind(op: RemindOp): RemindRoute;
17
- //# sourceMappingURL=reminder.d.ts.map
17
+ //# sourceMappingURL=policy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"policy.d.ts","sourceRoot":"","sources":["../../src/remind/policy.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,YAAY,QAAgD,CAAC;AAE1E,eAAO,MAAM,mBAAmB,0CAA2C,CAAC;AAC5E,MAAM,MAAM,gBAAgB,GAAG,CAAC,OAAO,mBAAmB,CAAC,CAAC,MAAM,CAAC,CAAC;AAEpE,iEAAiE;AACjE,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,OAAO,GAAG,MAAM,CASpD;AAED,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,OAAO,GAAG,gBAAgB,CAMhE;AAED;4CAC4C;AAC5C,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI,CA0C3G;AAED,MAAM,MAAM,QAAQ,GAAG,KAAK,GAAG,OAAO,GAAG,SAAS,GAAG,UAAU,GAAG,UAAU,CAAC;AAC7E,MAAM,WAAW,WAAW;IAAG,GAAG,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,SAAS,GAAG,QAAQ,CAAC;IAAC,IAAI,CAAC,EAAE,OAAO,CAAC;CAAE;AAE1F,wBAAgB,WAAW,CAAC,EAAE,EAAE,QAAQ,GAAG,WAAW,CASrD"}
@@ -2,7 +2,7 @@
2
2
  // 时间与重复口径照老 `memo_cli.py:1049-1110`(`_validate_remind_at`/`_validate_repeat_rule`):
3
3
  // `--at` 须 `YYYY-MM-DD HH:MM`;重复四种(每天/每周/每月/每年)各有 rule 形状,一次性不用 rule
4
4
  // 但必须有 `--at`。新仓参数名沿既有 camelCase(remindAt/repeatType/repeatRule)。
5
- import { MemoPolicyError } from '../fetch/errors.js';
5
+ import { MemoPolicyError } from '../shared/errors.js';
6
6
  export const REMIND_AT_RE = /^(\d{4})-(\d{2})-(\d{2}) (\d{1,2}):(\d{2})$/;
7
7
  export const REMIND_REPEAT_TYPES = ['一次性', '每天', '每周', '每月', '每年'];
8
8
  /** 提醒时间须 `YYYY-MM-DD HH:MM` 且为真日期时间(老 `_validate_remind_at`)。 */
@@ -95,4 +95,4 @@ export function routeRemind(op) {
95
95
  default: throw new MemoPolicyError('POLICY_BAD_REMINDER', '未知提醒操作:' + String(op));
96
96
  }
97
97
  }
98
- //# sourceMappingURL=reminder.js.map
98
+ //# sourceMappingURL=policy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"policy.js","sourceRoot":"","sources":["../../src/remind/policy.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,7 @@
1
1
  /** 提醒域 · 路由声明(一个唤醒词一条记录;`order` 是全表顺序权威)。
2
2
  *
3
3
  * 词面归属(#855 口径):**词随它服务的 HELP 场景住**——提醒类场景的词住本件。
4
- * `记提醒`(场景 `memo_remind_with_note`)指向 `memo.create`,那个键的声明还没落,等 `memo` 域那一片
5
- * 一起补——生成期守卫「路由指向未知键」会拦住抢跑。
4
+ * `记提醒`(场景 `memo_remind_with_note`)虽指向 `memo.create`,仍随场景住本件。
6
5
  */
7
6
  import type { RouteDecl } from '../triggers/routeSpec.js';
8
7
  export declare const REMIND_ROUTES: readonly RouteDecl[];
@@ -1 +1 @@
1
- {"version":3,"file":"routes.d.ts","sourceRoot":"","sources":["../../src/remind/routes.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAE1D,eAAO,MAAM,aAAa,EAAE,SAAS,SAAS,EAuB7C,CAAC"}
1
+ {"version":3,"file":"routes.d.ts","sourceRoot":"","sources":["../../src/remind/routes.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAE1D,eAAO,MAAM,aAAa,EAAE,SAAS,SAAS,EAqD7C,CAAC"}
@@ -5,6 +5,9 @@ export const REMIND_ROUTES = [
5
5
  scene: 'memo_reminders_active',
6
6
  key: 'memo.remind',
7
7
  cli: 'memo-cmd-read memo.remind',
8
+ // 页落哪一格由 `memo.remind` 的缺省支决定(`run.ts` 的 `sceneOf` 缺省=看提醒那一格),
9
+ // 故此处**不放 preset**:放一份会让 SKILL.md 速查的示例里多出一个内部参数(`scene`),
10
+ // 也把这条词与运行期路由钉成两处定义。
8
11
  },
9
12
  {
10
13
  order: 9,
@@ -12,14 +15,41 @@ export const REMIND_ROUTES = [
12
15
  scene: 'memo_completed_reminders',
13
16
  key: 'memo.remind',
14
17
  cli: 'memo-cmd-read memo.remind --params \'{"mode":"done"}\'',
18
+ // #828 纠错:preset 原写 `{ done: false }` —— 与「已完成视图」的判据(`mode==="done" || done===true`)
19
+ // 正好相反,于是落到 status=active 分支,与 order 8「看提醒」出**同一条命令同一种视图**。
20
+ // 本场景是「已触发的提醒 + 关联打卡笔记 + 触发时间」,权威实现=`listCompletedReminders`
21
+ // (老 `completed_reminders`),故 preset 改 `{ done: true }`;`scene` 点明页落哪一格(册子 seq 17)。
22
+ preset: { done: true, scene: 'memo_completed_reminders' },
15
23
  },
16
24
  {
17
25
  order: 10,
18
26
  wakeWord: '设提醒',
19
27
  scene: 'memo_remind_existing',
20
28
  key: 'memo.reminder',
21
- cli: 'memo-cmd-read memo.reminder --params \'{"content":"取牛奶","remind_at":"2026-10-01 09:00"}\'',
22
- needs: ['remind_at'],
29
+ cli: 'memo-cmd-read memo.reminder --params \'{"note_id":15,"content":"该做保养了","remind_at":"2026-10-01 09:00"}\'',
30
+ // #828 纠错:原只声明 `remind_at` 一个槽位,而命令的 `content` 是必填(老 `add_reminder`
31
+ // `memo_cli.py:1116-1117` 逐字「请填入提醒内容」)⇒ 照总表跑必 exit 2。缺什么当场报什么,
32
+ // 不靠人猜;`note_id` 不列入 needs(HELP 场景 45 行写「可选,可不关联具体笔记」)。
33
+ needs: ['content', 'remind_at'],
23
34
  },
35
+ {
36
+ order: 31,
37
+ wakeWord: '查提醒',
38
+ scene: 'memo_reminders_active',
39
+ key: 'memo.remind',
40
+ cli: 'memo-cmd-read memo.remind',
41
+ },
42
+ {
43
+ order: 32,
44
+ wakeWord: '记提醒',
45
+ scene: 'memo_remind_with_note',
46
+ key: 'memo.create',
47
+ cli: 'memo-cmd-read memo.create --params \'{"title":"取牛奶","category":"备忘","remindAt":"2026-10-01 09:00"}\'',
48
+ needs: ['remindAt'],
49
+ },
50
+ // `废弃提醒`(#858 已撤):旧表有行、无场景卡——#842 Q② 裁定并入「看提醒」的「已废弃」状态说明后
51
+ // **词随行一起退役**(判据「老技能也有」说的是能力;老侧 `dismiss` 是子命令、`SKILL.md:839` 那段
52
+ // 没有唤醒词行)。**能力保留**:`memo.remove` 的 `mode:"abandon"` 支照旧(不经删确认闸、笔记保留),
53
+ // 只是不再有唤醒短语——调用形见 `test/route-cleanup-858.test.mjs` 与 `docs/skills/skill-memo-ilife/t837b-路由清理口径.md`。
24
54
  ];
25
55
  //# sourceMappingURL=routes.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"routes.js","sourceRoot":"","sources":["../../src/remind/routes.ts"],"names":[],"mappings":"AAQA,MAAM,CAAC,MAAM,aAAa,GAAyB;IACjD;QACE,KAAK,EAAE,CAAC;QACR,QAAQ,EAAE,KAAK;QACf,KAAK,EAAE,uBAAuB;QAC9B,GAAG,EAAE,aAAa;QAClB,GAAG,EAAE,2BAA2B;KACjC;IACD;QACE,KAAK,EAAE,CAAC;QACR,QAAQ,EAAE,QAAQ;QAClB,KAAK,EAAE,0BAA0B;QACjC,GAAG,EAAE,aAAa;QAClB,GAAG,EAAE,wDAAwD;KAC9D;IACD;QACE,KAAK,EAAE,EAAE;QACT,QAAQ,EAAE,KAAK;QACf,KAAK,EAAE,sBAAsB;QAC7B,GAAG,EAAE,eAAe;QACpB,GAAG,EAAE,2FAA2F;QAChG,KAAK,EAAE,CAAC,WAAW,CAAC;KACrB;CACF,CAAC"}
1
+ {"version":3,"file":"routes.js","sourceRoot":"","sources":["../../src/remind/routes.ts"],"names":[],"mappings":"AAOA,MAAM,CAAC,MAAM,aAAa,GAAyB;IACjD;QACE,KAAK,EAAE,CAAC;QACR,QAAQ,EAAE,KAAK;QACf,KAAK,EAAE,uBAAuB;QAC9B,GAAG,EAAE,aAAa;QAClB,GAAG,EAAE,2BAA2B;QAChC,+DAA+D;QAC/D,2DAA2D;QAC3D,qBAAqB;KACtB;IACD;QACE,KAAK,EAAE,CAAC;QACR,QAAQ,EAAE,QAAQ;QAClB,KAAK,EAAE,0BAA0B;QACjC,GAAG,EAAE,aAAa;QAClB,GAAG,EAAE,wDAAwD;QAC7D,qFAAqF;QACrF,4DAA4D;QAC5D,6DAA6D;QAC7D,oFAAoF;QACpF,MAAM,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,0BAA0B,EAAE;KAC1D;IACD;QACE,KAAK,EAAE,EAAE;QACT,QAAQ,EAAE,KAAK;QACf,KAAK,EAAE,sBAAsB;QAC7B,GAAG,EAAE,eAAe;QACpB,GAAG,EAAE,0GAA0G;QAC/G,oEAAoE;QACpE,+DAA+D;QAC/D,wDAAwD;QACxD,KAAK,EAAE,CAAC,SAAS,EAAE,WAAW,CAAC;KAChC;IACD;QACE,KAAK,EAAE,EAAE;QACT,QAAQ,EAAE,KAAK;QACf,KAAK,EAAE,uBAAuB;QAC9B,GAAG,EAAE,aAAa;QAClB,GAAG,EAAE,2BAA2B;KACjC;IACD;QACE,KAAK,EAAE,EAAE;QACT,QAAQ,EAAE,KAAK;QACf,KAAK,EAAE,uBAAuB;QAC9B,GAAG,EAAE,aAAa;QAClB,GAAG,EAAE,sGAAsG;QAC3G,KAAK,EAAE,CAAC,UAAU,CAAC;KACpB;IACD,0DAA0D;IAC1D,iEAAiE;IACjE,sEAAsE;IACtE,sGAAsG;CACvG,CAAC"}
@@ -12,7 +12,7 @@
12
12
  * 只有本域在用,随命令一起搬——不留第二份。
13
13
  */
14
14
  import type { CommandOut } from '../shared/commandSpec.js';
15
- import type { MemoDb } from '../fetch/db.js';
15
+ import type { MemoDb } from '../db/readonly.js';
16
16
  /** `memo.remind`:提醒四视图(到期/已完成/有效/已废弃)。 */
17
17
  export declare function runRemind(params: Record<string, unknown>, db: MemoDb): CommandOut;
18
18
  /** `memo.reminder`:给已有笔记加提醒(`note_id` 可选)或建一条独立提醒;只 INSERT,不建笔记。 */