skill-schedule 0.3.1 → 0.3.3

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 (135) hide show
  1. package/SKILL.md +9 -7
  2. package/dist/.gen-inputs.json +45 -0
  3. package/dist/admin/commands.d.ts +10 -0
  4. package/dist/admin/commands.d.ts.map +1 -0
  5. package/dist/admin/commands.js +5 -0
  6. package/dist/admin/commands.js.map +1 -0
  7. package/dist/admin/handlers.d.ts +3 -0
  8. package/dist/admin/handlers.d.ts.map +1 -0
  9. package/dist/admin/handlers.js +66 -0
  10. package/dist/admin/handlers.js.map +1 -0
  11. package/dist/admin/index.d.ts +3 -0
  12. package/dist/admin/index.d.ts.map +1 -0
  13. package/dist/admin/index.js +3 -0
  14. package/dist/admin/index.js.map +1 -0
  15. package/dist/admin/routes.d.ts +8 -0
  16. package/dist/admin/routes.d.ts.map +1 -0
  17. package/dist/admin/routes.js +7 -0
  18. package/dist/admin/routes.js.map +1 -0
  19. package/dist/analyze/commands.d.ts +10 -0
  20. package/dist/analyze/commands.d.ts.map +1 -0
  21. package/dist/analyze/commands.js +5 -0
  22. package/dist/analyze/commands.js.map +1 -0
  23. package/dist/analyze/handlers.d.ts +3 -0
  24. package/dist/analyze/handlers.d.ts.map +1 -0
  25. package/dist/analyze/handlers.js +57 -0
  26. package/dist/analyze/handlers.js.map +1 -0
  27. package/dist/analyze/index.d.ts +3 -0
  28. package/dist/analyze/index.d.ts.map +1 -0
  29. package/dist/analyze/index.js +3 -0
  30. package/dist/analyze/index.js.map +1 -0
  31. package/dist/analyze/routes.d.ts +8 -0
  32. package/dist/analyze/routes.d.ts.map +1 -0
  33. package/dist/analyze/routes.js +8 -0
  34. package/dist/analyze/routes.js.map +1 -0
  35. package/dist/cli/cmd_read.js +46 -249
  36. package/dist/cli/cmd_read.js.map +1 -1
  37. package/dist/cli/keys.d.ts +5 -0
  38. package/dist/cli/keys.d.ts.map +1 -0
  39. package/dist/cli/keys.js +21 -0
  40. package/dist/cli/keys.js.map +1 -0
  41. package/dist/cli/registry.d.ts +4 -0
  42. package/dist/cli/registry.d.ts.map +1 -0
  43. package/dist/cli/registry.js +12 -0
  44. package/dist/cli/registry.js.map +1 -0
  45. package/dist/config.d.ts +7 -1
  46. package/dist/config.d.ts.map +1 -1
  47. package/dist/config.js +9 -3
  48. package/dist/config.js.map +1 -1
  49. package/dist/delivery/index.d.ts +8 -0
  50. package/dist/delivery/index.d.ts.map +1 -0
  51. package/dist/delivery/index.js +7 -0
  52. package/dist/delivery/index.js.map +1 -0
  53. package/dist/delivery/naming.d.ts +24 -0
  54. package/dist/delivery/naming.d.ts.map +1 -0
  55. package/dist/delivery/naming.js +8 -0
  56. package/dist/delivery/naming.js.map +1 -0
  57. package/dist/delivery/output.d.ts +22 -0
  58. package/dist/delivery/output.d.ts.map +1 -0
  59. package/dist/delivery/output.js +83 -0
  60. package/dist/delivery/output.js.map +1 -0
  61. package/dist/fetch/paths.d.ts +32 -5
  62. package/dist/fetch/paths.d.ts.map +1 -1
  63. package/dist/fetch/paths.js +45 -9
  64. package/dist/fetch/paths.js.map +1 -1
  65. package/dist/health.d.ts.map +1 -1
  66. package/dist/health.js +6 -4
  67. package/dist/health.js.map +1 -1
  68. package/dist/help/helpPaths.d.ts +11 -13
  69. package/dist/help/helpPaths.d.ts.map +1 -1
  70. package/dist/help/helpPaths.js +9 -39
  71. package/dist/help/helpPaths.js.map +1 -1
  72. package/dist/plan/commands.d.ts +9 -0
  73. package/dist/plan/commands.d.ts.map +1 -0
  74. package/dist/plan/commands.js +5 -0
  75. package/dist/plan/commands.js.map +1 -0
  76. package/dist/plan/handlers.d.ts +3 -0
  77. package/dist/plan/handlers.d.ts.map +1 -0
  78. package/dist/plan/handlers.js +31 -0
  79. package/dist/plan/handlers.js.map +1 -0
  80. package/dist/plan/index.d.ts +2 -0
  81. package/dist/plan/index.d.ts.map +1 -1
  82. package/dist/plan/index.js +4 -2
  83. package/dist/plan/index.js.map +1 -1
  84. package/dist/plan/routes.d.ts +8 -0
  85. package/dist/plan/routes.d.ts.map +1 -0
  86. package/dist/plan/routes.js +18 -0
  87. package/dist/plan/routes.js.map +1 -0
  88. package/dist/policy/wakewords.d.ts.map +1 -1
  89. package/dist/policy/wakewords.js +9 -59
  90. package/dist/policy/wakewords.js.map +1 -1
  91. package/dist/query/commands.d.ts +26 -0
  92. package/dist/query/commands.d.ts.map +1 -0
  93. package/dist/query/commands.js +8 -0
  94. package/dist/query/commands.js.map +1 -0
  95. package/dist/query/handlers.d.ts +6 -0
  96. package/dist/query/handlers.d.ts.map +1 -0
  97. package/dist/query/handlers.js +67 -0
  98. package/dist/query/handlers.js.map +1 -0
  99. package/dist/query/index.d.ts +3 -0
  100. package/dist/query/index.d.ts.map +1 -0
  101. package/dist/query/index.js +3 -0
  102. package/dist/query/index.js.map +1 -0
  103. package/dist/query/routes.d.ts +9 -0
  104. package/dist/query/routes.d.ts.map +1 -0
  105. package/dist/query/routes.js +20 -0
  106. package/dist/query/routes.js.map +1 -0
  107. package/dist/render/envelope.d.ts +2 -1
  108. package/dist/render/envelope.d.ts.map +1 -1
  109. package/dist/render/envelope.js +5 -11
  110. package/dist/render/envelope.js.map +1 -1
  111. package/dist/shared/commandSpec.d.ts +83 -0
  112. package/dist/shared/commandSpec.d.ts.map +1 -0
  113. package/dist/shared/commandSpec.js +2 -0
  114. package/dist/shared/commandSpec.js.map +1 -0
  115. package/dist/triggers/routes.generated.d.ts +297 -0
  116. package/dist/triggers/routes.generated.d.ts.map +1 -0
  117. package/dist/triggers/routes.generated.js +52 -0
  118. package/dist/triggers/routes.generated.js.map +1 -0
  119. package/dist/write/commands.d.ts +9 -0
  120. package/dist/write/commands.d.ts.map +1 -0
  121. package/dist/write/commands.js +5 -0
  122. package/dist/write/commands.js.map +1 -0
  123. package/dist/write/handlers.d.ts +3 -0
  124. package/dist/write/handlers.d.ts.map +1 -0
  125. package/dist/write/handlers.js +24 -0
  126. package/dist/write/handlers.js.map +1 -0
  127. package/dist/write/index.d.ts +3 -0
  128. package/dist/write/index.d.ts.map +1 -0
  129. package/dist/write/index.js +3 -0
  130. package/dist/write/index.js.map +1 -0
  131. package/dist/write/routes.d.ts +8 -0
  132. package/dist/write/routes.d.ts.map +1 -0
  133. package/dist/write/routes.js +10 -0
  134. package/dist/write/routes.js.map +1 -0
  135. package/package.json +3 -3
@@ -4,8 +4,10 @@
4
4
  // 删计划/复盘/日程管家同步 + 飞书自检)与日程查询的 24h 聚合视图(#15/#16)。
5
5
  // 出门只给三件:一个 op 分发器、一个聚合视图装配、两个类型。
6
6
  //
7
- // 一条命令的六件事(键/形状/标题/唤醒词/示例/处理函数)里,键与唤醒词今天仍住 `policy/`
8
- // (整包重排尚未做,见 #199 §①「留给后面裁的那条」);本目录管**处理函数那一半**。
7
+ // 一条命令的六件事(键/形状/标题/唤醒词/示例/处理函数)里,键与唤醒词的声明已住本目录
8
+ // (`./commands.ts`+`./routes.js`,#780 Layer1);分派翻转在 Layer2(退役 `policy/` 手表与 `cli/` switch)。
9
+ export * from './commands.js';
10
+ export * from './routes.js';
9
11
  import { getPlanEventsRange, SchedulePolicyError } from '../fetch/index.js';
10
12
  import { resolveDateParam, resolveRangeParam, VALID_COMPLETIONS } from '../policy/index.js';
11
13
  import { receiptResult } from './context.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/plan/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/plan/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ /** 日程与计划的路由声明(**权威源**,`schedule.plan.write` 的 15 条)。
2
+ *
3
+ * `order`=今日 `WAKE_TABLE` 下标:归并保序,HELP 速查与 SKILL.md 逐字节不动。
4
+ * 条目逐字照搬 `src/policy/wakewords.ts`(Layer2 退役它之前,两处由对账测试钉死相等)。
5
+ */
6
+ import type { RouteEntry } from '../shared/commandSpec.js';
7
+ export declare const PLAN_ROUTES: readonly RouteEntry[];
8
+ //# sourceMappingURL=routes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"routes.d.ts","sourceRoot":"","sources":["../../src/plan/routes.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAE3D,eAAO,MAAM,WAAW,EAAE,SAAS,UAAU,EAgB5C,CAAC"}
@@ -0,0 +1,18 @@
1
+ export const PLAN_ROUTES = [
2
+ { phrase: '商量计划', key: 'schedule.plan.write', preset: { op: 'preview' }, order: 33 },
3
+ { phrase: '一起规划', key: 'schedule.plan.write', preset: { op: 'preview' }, order: 34 },
4
+ { phrase: '规划明天', key: 'schedule.plan.write', preset: { op: 'preview' }, order: 35 },
5
+ { phrase: '规划一天', key: 'schedule.plan.write', preset: { op: 'preview' }, order: 36 },
6
+ { phrase: '讨论计划', key: 'schedule.plan.write', preset: { op: 'preview' }, order: 37 },
7
+ { phrase: '补计划', key: 'schedule.plan.write', preset: { op: 'ensure' }, needs: ['date', 'time_start', 'time_end', 'title'], order: 38 },
8
+ { phrase: '改计划', key: 'schedule.plan.write', preset: { op: 'update' }, needs: ['id'], order: 39 },
9
+ { phrase: '删计划', key: 'schedule.plan.write', preset: { op: 'deactivate' }, needs: ['id'], order: 40 },
10
+ { phrase: '复盘今日', key: 'schedule.plan.write', preset: { op: 'review', granularity: 'day' }, order: 41 },
11
+ { phrase: '复盘本周', key: 'schedule.plan.write', preset: { op: 'review', granularity: 'week' }, order: 42 },
12
+ { phrase: '复盘本月', key: 'schedule.plan.write', preset: { op: 'review', granularity: 'month' }, order: 43 },
13
+ { phrase: '复盘区间', key: 'schedule.plan.write', preset: { op: 'review', granularity: 'range' }, order: 44 },
14
+ { phrase: '日程管家同步', key: 'schedule.plan.write', preset: { op: 'sync' }, order: 45 },
15
+ { phrase: '飞书探测', key: 'schedule.plan.write', preset: { op: 'sync', dryRun: true }, order: 46 },
16
+ { phrase: '复盘', key: 'schedule.plan.write', preset: { op: 'review' }, order: 47 },
17
+ ];
18
+ //# sourceMappingURL=routes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"routes.js","sourceRoot":"","sources":["../../src/plan/routes.ts"],"names":[],"mappings":"AAOA,MAAM,CAAC,MAAM,WAAW,GAA0B;IAChD,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,qBAAqB,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE;IACpF,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,qBAAqB,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE;IACpF,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,qBAAqB,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE;IACpF,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,qBAAqB,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE;IACpF,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,qBAAqB,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE;IACpF,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,qBAAqB,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,KAAK,EAAE,CAAC,MAAM,EAAE,YAAY,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE;IACtI,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,qBAAqB,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE;IACjG,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,qBAAqB,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,YAAY,EAAE,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE;IACrG,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,qBAAqB,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,WAAW,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE;IACvG,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,qBAAqB,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE;IACxG,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,qBAAqB,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,WAAW,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE;IACzG,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,qBAAqB,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,WAAW,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE;IACzG,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE,qBAAqB,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE;IACnF,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,qBAAqB,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE;IAC/F,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,qBAAqB,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE;CAClF,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"wakewords.d.ts","sourceRoot":"","sources":["../../src/policy/wakewords.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,WAAW,GACnB,uBAAuB,GAAG,uBAAuB,GAAG,wBAAwB,GAC5E,uBAAuB,GAAG,yBAAyB,GACnD,qBAAqB,GAAG,qBAAqB,GAC7C,sBAAsB,CAAC;AAE3B,MAAM,WAAW,SAAS;IAAG,GAAG,EAAE,WAAW,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAAE;AACjF,MAAM,WAAW,SAAS;IAAG,MAAM,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,WAAW,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAAE;AAEpH,eAAO,MAAM,UAAU,EAAE,SAAS,EAyDjC,CAAC;AAKF,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,GAAG,SAAS,CAiBxF"}
1
+ {"version":3,"file":"wakewords.d.ts","sourceRoot":"","sources":["../../src/policy/wakewords.ts"],"names":[],"mappings":"AAMA,MAAM,MAAM,WAAW,GACnB,uBAAuB,GAAG,uBAAuB,GAAG,wBAAwB,GAC5E,uBAAuB,GAAG,yBAAyB,GACnD,qBAAqB,GAAG,qBAAqB,GAC7C,sBAAsB,CAAC;AAE3B,MAAM,WAAW,SAAS;IAAG,GAAG,EAAE,WAAW,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAAE;AACjF,MAAM,WAAW,SAAS;IAAG,MAAM,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,WAAW,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAAE;AAEpH,eAAO,MAAM,UAAU,EAAE,SAAS,EAK/B,CAAC;AAKJ,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,GAAG,SAAS,CAiBxF"}
@@ -1,64 +1,14 @@
1
1
  // 口径层·唤醒词路由:自然语言 → 8 联动 key;最长匹配;废弃词(同步作息/作息计划表等)无命中。
2
- // HELP 速查唯一上游;改这里,HELP 构建期跟进。
2
+ // `WAKE_TABLE` 是生成物 `src/triggers/routes.generated.ts` 的派生(纪律形状二,#780 Layer2 退役手表),
3
+ // 唯一定义地=各能力 `routes.ts`;HELP 速查唯一上游仍是本件导出(`help/lookup.ts` 零改动)。
4
+ import { SCHEDULE_ROUTES } from '../triggers/routes.generated.js';
3
5
  import { SchedulePolicyError } from '../fetch/errors.js';
4
- export const WAKE_TABLE = [
5
- // HELP(§07 契约 4 条,不在自身 HELP 展示中列出自身,查询走 lookup)。
6
- { phrase: '作息管家 HELP', key: 'schedule.help.lookup' },
7
- { phrase: '作息管家帮助', key: 'schedule.help.lookup' },
8
- { phrase: '作息管家能做什么', key: 'schedule.help.lookup' },
9
- { phrase: '作息管家使用说明', key: 'schedule.help.lookup' },
10
- // record.today(#4/#6/#8/#11/#22:单日查 + 状态 + 初始化即开库验证;#43 S1 别名今日作息/今日总结/今天作息)。
11
- { phrase: '今天总结', key: 'schedule.record.today' },
12
- { phrase: '今日作息', key: 'schedule.record.today' },
13
- { phrase: '今日总结', key: 'schedule.record.today' },
14
- { phrase: '今天作息', key: 'schedule.record.today' },
15
- { phrase: '查作息时间轴', key: 'schedule.record.today' },
16
- { phrase: '查作息状态', key: 'schedule.record.today' },
17
- { phrase: '初始化数据库', key: 'schedule.record.today' },
18
- { phrase: '查作息', key: 'schedule.record.today' },
19
- // record.range(#5/#9:汇总 + 范围)。
20
- { phrase: '汇总作息', key: 'schedule.record.range', needs: ['start', 'end'] },
21
- { phrase: '查作息范围', key: 'schedule.record.range', needs: ['start', 'end'] },
22
- { phrase: '查作息游标', key: 'schedule.record.range', needs: ['start', 'end'] },
23
- // record.detail(#7/#23:详情 + 按 ID)。
24
- { phrase: '查作息详情', key: 'schedule.record.detail' },
25
- { phrase: '按ID查记录', key: 'schedule.record.detail', needs: ['id'] },
26
- // record.write(#0/#26/#24:记 + 修正 + 写摘要)。
27
- { phrase: '补一条作息', key: 'schedule.record.write', preset: { op: 'add' } },
28
- { phrase: '录作息', key: 'schedule.record.write', preset: { op: 'add' } },
29
- { phrase: '修正作息', key: 'schedule.record.write', preset: { op: 'amend' }, needs: ['id'] },
30
- { phrase: '改作息', key: 'schedule.record.write', preset: { op: 'amend' }, needs: ['id'] },
31
- { phrase: '这条记错了', key: 'schedule.record.write', preset: { op: 'amend' }, needs: ['id'] },
32
- { phrase: '写作息摘要', key: 'schedule.record.write', preset: { op: 'summary' } },
33
- { phrase: '记作息', key: 'schedule.record.write', preset: { op: 'add' } },
34
- // record.compare(#25/T4/T5:对比 + 类别深挖 + 异常)。
35
- { phrase: '对比两个月', key: 'schedule.record.compare', preset: { kind: 'months' } },
36
- { phrase: '月份对比', key: 'schedule.record.compare', preset: { kind: 'months' } },
37
- { phrase: '跨月对比', key: 'schedule.record.compare', preset: { kind: 'months' } },
38
- { phrase: '类别深挖', key: 'schedule.record.compare', preset: { kind: 'category' } },
39
- { phrase: '异常检测', key: 'schedule.record.compare', preset: { kind: 'anomaly' } },
40
- // plan.today(#12/#15/#16:查日程 + 概览 + 多日)。后两条走 24h 聚合视图(分桶),#12 走全字段 list。
41
- { phrase: '查多日计划', key: 'schedule.plan.today', preset: { view: 'aggregate' }, needs: ['dates'] },
42
- { phrase: '24h 概览', key: 'schedule.plan.today', preset: { view: 'aggregate' } },
43
- { phrase: '查日程', key: 'schedule.plan.today' },
44
- { phrase: '看日程', key: 'schedule.plan.today' },
45
- // plan.write(#13/#14/#17/#18/#19/#20/#21 + 复盘 4 粒度)。
46
- { phrase: '商量计划', key: 'schedule.plan.write', preset: { op: 'preview' } },
47
- { phrase: '一起规划', key: 'schedule.plan.write', preset: { op: 'preview' } },
48
- { phrase: '规划明天', key: 'schedule.plan.write', preset: { op: 'preview' } },
49
- { phrase: '规划一天', key: 'schedule.plan.write', preset: { op: 'preview' } },
50
- { phrase: '讨论计划', key: 'schedule.plan.write', preset: { op: 'preview' } },
51
- { phrase: '补计划', key: 'schedule.plan.write', preset: { op: 'ensure' }, needs: ['date', 'time_start', 'time_end', 'title'] },
52
- { phrase: '改计划', key: 'schedule.plan.write', preset: { op: 'update' }, needs: ['id'] },
53
- { phrase: '删计划', key: 'schedule.plan.write', preset: { op: 'deactivate' }, needs: ['id'] },
54
- { phrase: '复盘今日', key: 'schedule.plan.write', preset: { op: 'review', granularity: 'day' } },
55
- { phrase: '复盘本周', key: 'schedule.plan.write', preset: { op: 'review', granularity: 'week' } },
56
- { phrase: '复盘本月', key: 'schedule.plan.write', preset: { op: 'review', granularity: 'month' } },
57
- { phrase: '复盘区间', key: 'schedule.plan.write', preset: { op: 'review', granularity: 'range' } },
58
- { phrase: '日程管家同步', key: 'schedule.plan.write', preset: { op: 'sync' } },
59
- { phrase: '飞书探测', key: 'schedule.plan.write', preset: { op: 'sync', dryRun: true } },
60
- { phrase: '复盘', key: 'schedule.plan.write', preset: { op: 'review' } },
61
- ];
6
+ export const WAKE_TABLE = SCHEDULE_ROUTES.map((e) => ({
7
+ phrase: e.phrase,
8
+ key: e.key,
9
+ ...(('needs' in e) === false ? {} : { needs: [...e.needs] }),
10
+ ...(('preset' in e) === false ? {} : { preset: { ...e.preset } }),
11
+ }));
62
12
  // 最长匹配优先(“查作息时间轴”不落入“查作息”,“复盘今日”不落入“复盘”)。
63
13
  const SORTED = [...WAKE_TABLE].sort((a, b) => b.phrase.length - a.phrase.length);
64
14
  export function routeWakeword(text, ctx = {}) {
@@ -1 +1 @@
1
- {"version":3,"file":"wakewords.js","sourceRoot":"","sources":["../../src/policy/wakewords.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"wakewords.js","sourceRoot":"","sources":["../../src/policy/wakewords.ts"],"names":[],"mappings":"AAAA,sDAAsD;AACtD,oFAAoF;AACpF,iEAAiE;AACjE,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAClE,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAWzD,MAAM,CAAC,MAAM,UAAU,GAAgB,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACjE,MAAM,EAAE,CAAC,CAAC,MAAM;IAChB,GAAG,EAAE,CAAC,CAAC,GAAkB;IACzB,GAAG,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;IAC5D,GAAG,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC;CAClE,CAAC,CAAC,CAAC;AAEJ,0CAA0C;AAC1C,MAAM,MAAM,GAAG,CAAC,GAAG,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AAEjF,MAAM,UAAU,aAAa,CAAC,IAAY,EAAE,MAA+B,EAAE;IAC3E,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAClD,MAAM,IAAI,mBAAmB,CAAC,iBAAiB,EAAE,OAAO,CAAC,CAAC;IAC5D,CAAC;IACD,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;IACxD,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,MAAM,IAAI,mBAAmB,CAC3B,iBAAiB,EACjB,SAAS,GAAG,IAAI,GAAG,2DAA2D,CAC/E,CAAC;IACJ,CAAC;IACD,KAAK,MAAM,CAAC,IAAI,GAAG,CAAC,KAAK,IAAI,EAAE,EAAE,CAAC;QAChC,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,SAAS,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC;YAC7D,MAAM,IAAI,mBAAmB,CAAC,qBAAqB,EAAE,MAAM,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;QACtF,CAAC;IACH,CAAC;IACD,OAAO,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,MAAM,IAAI,EAAE,CAAC,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC;AAC/F,CAAC;AAED,SAAS,OAAO,CAAC,GAA4B,EAAE,KAAe;IAC5D,MAAM,CAAC,GAA4B,EAAE,CAAC;IACtC,KAAK,MAAM,CAAC,IAAI,KAAK;QAAE,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;IACrC,OAAO,CAAC,CAAC;AACX,CAAC"}
@@ -0,0 +1,26 @@
1
+ export declare const QUERY_COMMANDS: ({
2
+ kind: "read";
3
+ key: string;
4
+ shape: "list";
5
+ title: string;
6
+ wakeWord: string;
7
+ run: import("../shared/commandSpec.js").ViewHandler;
8
+ example: string;
9
+ } | {
10
+ kind: "read";
11
+ key: string;
12
+ shape: "stat";
13
+ title: string;
14
+ wakeWord: string;
15
+ run: import("../shared/commandSpec.js").ViewHandler;
16
+ example: string;
17
+ } | {
18
+ kind: "read";
19
+ key: string;
20
+ shape: "detail";
21
+ title: string;
22
+ wakeWord: string;
23
+ run: import("../shared/commandSpec.js").ViewHandler;
24
+ example: string;
25
+ })[];
26
+ //# sourceMappingURL=commands.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../../src/query/commands.ts"],"names":[],"mappings":"AASA,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;IAKO,CAAC"}
@@ -0,0 +1,8 @@
1
+ import { viewPlanToday, viewRecordDetail, viewRecordRange, viewRecordToday } from './handlers.js';
2
+ export const QUERY_COMMANDS = [
3
+ { kind: 'read', key: 'schedule.record.today', shape: 'list', title: '今日作息', wakeWord: '查作息', run: viewRecordToday, example: 'schedule-cmd-read schedule.record.today' },
4
+ { kind: 'read', key: 'schedule.record.range', shape: 'stat', title: '汇总作息', wakeWord: '汇总作息', run: viewRecordRange, example: 'schedule-cmd-read schedule.record.range --params \'{"start":"2026-09-01","end":"2026-09-01"}\'' },
5
+ { kind: 'read', key: 'schedule.record.detail', shape: 'detail', title: '作息详情', wakeWord: '查作息详情', run: viewRecordDetail, example: 'schedule-cmd-read schedule.record.detail' },
6
+ { kind: 'read', key: 'schedule.plan.today', shape: 'list', title: '查日程', wakeWord: '查日程', run: viewPlanToday, example: 'schedule-cmd-read schedule.plan.today' },
7
+ ];
8
+ //# sourceMappingURL=commands.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"commands.js","sourceRoot":"","sources":["../../src/query/commands.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAElG,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,uBAAuB,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE,eAAe,EAAE,OAAO,EAAE,yCAAyC,EAAE;IACvK,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,uBAAuB,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,eAAe,EAAE,OAAO,EAAE,gGAAgG,EAAE;IAC/N,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,wBAAwB,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,EAAE,gBAAgB,EAAE,OAAO,EAAE,0CAA0C,EAAE;IAC9K,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,qBAAqB,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE,aAAa,EAAE,OAAO,EAAE,uCAAuC,EAAE;CAChI,CAAC"}
@@ -0,0 +1,6 @@
1
+ import type { ViewHandler } from '../shared/commandSpec.js';
2
+ export declare const viewRecordToday: ViewHandler;
3
+ export declare const viewRecordRange: ViewHandler;
4
+ export declare const viewRecordDetail: ViewHandler;
5
+ export declare const viewPlanToday: ViewHandler;
6
+ //# sourceMappingURL=handlers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handlers.d.ts","sourceRoot":"","sources":["../../src/query/handlers.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAU5D,eAAO,MAAM,eAAe,EAAE,WAO7B,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,WAO7B,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,WAQ9B,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,WAyB3B,CAAC"}
@@ -0,0 +1,67 @@
1
+ /** 查询与浏览的处理函数(命令事实的执行一半;声明在 `./commands.ts`)。
2
+ *
3
+ * 逐字搬自 `src/cli/cmd_read.ts` 的 switch 四臂(行为零改动):`fail()` 改抛同文案的类型错误
4
+ * (出口按类映射到同一退出码),`note()` 改走返回的 `notes`(出口逐条打出,stderr 字节一致)。
5
+ */
6
+ import { ScheduleFetchError, SchedulePolicyError, getRecordById, getStatus, listPlanEvents, getPlanEventsRange, listRecordsByDate, listRecordsRange, searchPlanEvent, } from '../fetch/index.js';
7
+ import { normalizeDate, parsePlanView, resolveDateParam, resolveRangeParam } from '../policy/index.js';
8
+ import { buildPlanOverview } from '../plan/index.js';
9
+ import { buildPlanToday, buildRecordDetail, buildRecordRange, buildRecordToday, } from '../render/index.js';
10
+ function needInt(params, name) {
11
+ const v = params[name];
12
+ if (!Number.isInteger(v) || v <= 0) {
13
+ throw new SchedulePolicyError('POLICY_MISSING_SLOT', '缺参数 ' + name + '(须为正整数)');
14
+ }
15
+ return v;
16
+ }
17
+ export const viewRecordToday = (params, handle) => {
18
+ const notes = [];
19
+ const date = resolveDateParam(params);
20
+ const records = listRecordsByDate(handle, date);
21
+ const st = getStatus(handle);
22
+ if (st.records === 0)
23
+ notes.push('库空:真实无记录(非故障)');
24
+ return { data: buildRecordToday(date, records), html: '', notes };
25
+ };
26
+ export const viewRecordRange = (params, handle) => {
27
+ const { start, end } = resolveRangeParam(params);
28
+ const records = listRecordsRange(handle, start, end);
29
+ if (!records.length) {
30
+ throw new ScheduleFetchError('SCHEDULE_EMPTY_RANGE', '区间无记录:' + start + '~' + end + '(缺失阻断,不返空统计)');
31
+ }
32
+ return { data: buildRecordRange(start, end, records), html: '' };
33
+ };
34
+ export const viewRecordDetail = (params, handle) => {
35
+ if (params.id !== undefined) {
36
+ return { data: buildRecordDetail(getRecordById(handle, needInt(params, 'id'))), html: '' };
37
+ }
38
+ const date = resolveDateParam(params);
39
+ const records = listRecordsByDate(handle, date);
40
+ if (!records.length)
41
+ throw new ScheduleFetchError('SCHEDULE_RECORD_NOT_FOUND', '当日无记录:' + date);
42
+ return { data: buildRecordDetail(records[0]), html: '' };
43
+ };
44
+ export const viewPlanToday = (params, handle) => {
45
+ // #15/#16:24h 聚合视图(分桶 + 多日)走 `view=aggregate`;#12 查日程走全字段 list。
46
+ if (parsePlanView(params) === 'aggregate') {
47
+ const dates = Array.isArray(params.dates) && params.dates.length
48
+ ? params.dates.map((x) => normalizeDate(x, 'dates[]'))
49
+ : [resolveDateParam(params)];
50
+ return { data: { ...buildPlanOverview(handle, dates) }, html: '' };
51
+ }
52
+ if (typeof params.title === 'string' && params.title.trim()) {
53
+ const date = resolveDateParam(params);
54
+ const hits = searchPlanEvent(handle, date, params.title.trim(), params.time_start, params.time_end);
55
+ return { data: buildPlanToday(date, hits), html: '' };
56
+ }
57
+ if (Array.isArray(params.dates) && params.dates.length) {
58
+ const dates = params.dates.map((x) => normalizeDate(x, 'dates[]'));
59
+ const lo = [...dates].sort()[0];
60
+ const hi = [...dates].sort()[dates.length - 1];
61
+ const all = getPlanEventsRange(handle, lo, hi).filter((e) => dates.includes(e.date));
62
+ return { data: { items: all.map((e) => buildPlanToday(e.date, [e]).items[0]), total: all.length, date: lo + '~' + hi }, html: '' };
63
+ }
64
+ const date = resolveDateParam(params);
65
+ return { data: buildPlanToday(date, listPlanEvents(handle, date)), html: '' };
66
+ };
67
+ //# sourceMappingURL=handlers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handlers.js","sourceRoot":"","sources":["../../src/query/handlers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export * from './commands.js';
2
+ export * from './routes.js';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/query/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC"}
@@ -0,0 +1,3 @@
1
+ export * from './commands.js';
2
+ export * from './routes.js';
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/query/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC"}
@@ -0,0 +1,9 @@
1
+ /** 查询与浏览的路由声明(**权威源**,17 条:单日查 8/区间 3/详情 2/查日程 4)。
2
+ *
3
+ * `schedule.plan.today` 的 4 条住这里(唤醒词 #12/#15/#16 在 HELP 查询组):路由跟键走,
4
+ * 一键的路由只住一处。`order`=今日 `WAKE_TABLE` 下标,归并保序。
5
+ * 条目逐字照搬 `src/policy/wakewords.ts`(Layer2 退役它之前,两处由对账测试钉死相等)。
6
+ */
7
+ import type { RouteEntry } from '../shared/commandSpec.js';
8
+ export declare const QUERY_ROUTES: readonly RouteEntry[];
9
+ //# sourceMappingURL=routes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"routes.d.ts","sourceRoot":"","sources":["../../src/query/routes.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAE3D,eAAO,MAAM,YAAY,EAAE,SAAS,UAAU,EAkB7C,CAAC"}
@@ -0,0 +1,20 @@
1
+ export const QUERY_ROUTES = [
2
+ { phrase: '今天总结', key: 'schedule.record.today', order: 4 },
3
+ { phrase: '今日作息', key: 'schedule.record.today', order: 5 },
4
+ { phrase: '今日总结', key: 'schedule.record.today', order: 6 },
5
+ { phrase: '今天作息', key: 'schedule.record.today', order: 7 },
6
+ { phrase: '查作息时间轴', key: 'schedule.record.today', order: 8 },
7
+ { phrase: '查作息状态', key: 'schedule.record.today', order: 9 },
8
+ { phrase: '初始化数据库', key: 'schedule.record.today', order: 10 },
9
+ { phrase: '查作息', key: 'schedule.record.today', order: 11 },
10
+ { phrase: '汇总作息', key: 'schedule.record.range', needs: ['start', 'end'], order: 12 },
11
+ { phrase: '查作息范围', key: 'schedule.record.range', needs: ['start', 'end'], order: 13 },
12
+ { phrase: '查作息游标', key: 'schedule.record.range', needs: ['start', 'end'], order: 14 },
13
+ { phrase: '查作息详情', key: 'schedule.record.detail', order: 15 },
14
+ { phrase: '按ID查记录', key: 'schedule.record.detail', needs: ['id'], order: 16 },
15
+ { phrase: '查多日计划', key: 'schedule.plan.today', preset: { view: 'aggregate' }, needs: ['dates'], order: 29 },
16
+ { phrase: '24h 概览', key: 'schedule.plan.today', preset: { view: 'aggregate' }, order: 30 },
17
+ { phrase: '查日程', key: 'schedule.plan.today', order: 31 },
18
+ { phrase: '看日程', key: 'schedule.plan.today', order: 32 },
19
+ ];
20
+ //# sourceMappingURL=routes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"routes.js","sourceRoot":"","sources":["../../src/query/routes.ts"],"names":[],"mappings":"AAQA,MAAM,CAAC,MAAM,YAAY,GAA0B;IACjD,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,uBAAuB,EAAE,KAAK,EAAE,CAAC,EAAE;IAC1D,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,uBAAuB,EAAE,KAAK,EAAE,CAAC,EAAE;IAC1D,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,uBAAuB,EAAE,KAAK,EAAE,CAAC,EAAE;IAC1D,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,uBAAuB,EAAE,KAAK,EAAE,CAAC,EAAE;IAC1D,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE,uBAAuB,EAAE,KAAK,EAAE,CAAC,EAAE;IAC5D,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,uBAAuB,EAAE,KAAK,EAAE,CAAC,EAAE;IAC3D,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE,uBAAuB,EAAE,KAAK,EAAE,EAAE,EAAE;IAC7D,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,uBAAuB,EAAE,KAAK,EAAE,EAAE,EAAE;IAC1D,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,uBAAuB,EAAE,KAAK,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE;IACpF,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,uBAAuB,EAAE,KAAK,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE;IACrF,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,uBAAuB,EAAE,KAAK,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE;IACrF,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,wBAAwB,EAAE,KAAK,EAAE,EAAE,EAAE;IAC7D,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE,wBAAwB,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE;IAC7E,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,qBAAqB,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,KAAK,EAAE,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE;IAC3G,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE,qBAAqB,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE;IAC1F,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,qBAAqB,EAAE,KAAK,EAAE,EAAE,EAAE;IACxD,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,qBAAqB,EAAE,KAAK,EAAE,EAAE,EAAE;CACzD,CAAC"}
@@ -1,5 +1,6 @@
1
1
  import { type Envelope, type EnvelopeShape } from 'base-link-core';
2
- export declare const SCHEDULE_KEY_SHAPES: Record<string, EnvelopeShape>;
2
+ import { SCHEDULE_KEY_SHAPES } from '../cli/keys.js';
3
+ export { SCHEDULE_KEY_SHAPES };
3
4
  export declare function scheduleShapeFor(key: string): EnvelopeShape;
4
5
  export declare function buildScheduleEnvelope(key: string, data: unknown): Envelope;
5
6
  export declare function parseScheduleEnvelope(input: unknown): Envelope;
@@ -1 +1 @@
1
- {"version":3,"file":"envelope.d.ts","sourceRoot":"","sources":["../../src/render/envelope.ts"],"names":[],"mappings":"AACA,OAAO,EAAmD,KAAK,QAAQ,EAAE,KAAK,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAGpH,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAS7D,CAAC;AAEF,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,aAAa,CAI3D;AAGD,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,QAAQ,CAa1E;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,GAAG,QAAQ,CAG9D"}
1
+ {"version":3,"file":"envelope.d.ts","sourceRoot":"","sources":["../../src/render/envelope.ts"],"names":[],"mappings":"AAEA,OAAO,EAAmD,KAAK,QAAQ,EAAE,KAAK,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACpH,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAGrD,OAAO,EAAE,mBAAmB,EAAE,CAAC;AAE/B,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,aAAa,CAK3D;AAGD,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,QAAQ,CAa1E;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,GAAG,QAAQ,CAG9D"}
@@ -1,17 +1,11 @@
1
- // 渲染层·envelope:8 联动 key×shape 映射(拆分表);key 字符串后续票落表时冻结,此处只做形状分配与全字段校验。
1
+ // 渲染层·envelope:8 联动 key×shape 映射是生成物 `src/cli/keys.ts` 的派生(纪律形状二),
2
+ // 本件只做建 envelope 的形状守卫;key 字符串后续票落表时冻结。唯一定义地=各能力 `commands.ts`。
2
3
  import { createEnvelope, parseEnvelope, parseRegistryKey } from 'base-link-core';
4
+ import { SCHEDULE_KEY_SHAPES } from '../cli/keys.js';
3
5
  import { ScheduleRenderError } from './errors.js';
4
- export const SCHEDULE_KEY_SHAPES = {
5
- 'schedule.record.today': 'list',
6
- 'schedule.record.range': 'stat',
7
- 'schedule.record.detail': 'detail',
8
- 'schedule.record.write': 'receipt',
9
- 'schedule.record.compare': 'analysis',
10
- 'schedule.plan.today': 'list',
11
- 'schedule.plan.write': 'receipt',
12
- 'schedule.help.lookup': 'list',
13
- };
6
+ export { SCHEDULE_KEY_SHAPES };
14
7
  export function scheduleShapeFor(key) {
8
+ // 字符串边界:未知输入进、已知键出;`as` 只放行到运行时判空这一处。
15
9
  const s = SCHEDULE_KEY_SHAPES[key];
16
10
  if (!s)
17
11
  throw new ScheduleRenderError('SCHEDULE_UNKNOWN_KEY', '未知联动 key:' + key);
@@ -1 +1 @@
1
- {"version":3,"file":"envelope.js","sourceRoot":"","sources":["../../src/render/envelope.ts"],"names":[],"mappings":"AAAA,sEAAsE;AACtE,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,gBAAgB,EAAqC,MAAM,gBAAgB,CAAC;AACpH,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAElD,MAAM,CAAC,MAAM,mBAAmB,GAAkC;IAChE,uBAAuB,EAAE,MAAM;IAC/B,uBAAuB,EAAE,MAAM;IAC/B,wBAAwB,EAAE,QAAQ;IAClC,uBAAuB,EAAE,SAAS;IAClC,yBAAyB,EAAE,UAAU;IACrC,qBAAqB,EAAE,MAAM;IAC7B,qBAAqB,EAAE,SAAS;IAChC,sBAAsB,EAAE,MAAM;CAC/B,CAAC;AAEF,MAAM,UAAU,gBAAgB,CAAC,GAAW;IAC1C,MAAM,CAAC,GAAG,mBAAmB,CAAC,GAAG,CAAC,CAAC;IACnC,IAAI,CAAC,CAAC;QAAE,MAAM,IAAI,mBAAmB,CAAC,sBAAsB,EAAE,WAAW,GAAG,GAAG,CAAC,CAAC;IACjF,OAAO,CAAC,CAAC;AACX,CAAC;AAED,mDAAmD;AACnD,MAAM,UAAU,qBAAqB,CAAC,GAAW,EAAE,IAAa;IAC9D,IAAI,SAAS,GAAG,EAAE,CAAC;IACnB,IAAI,CAAC;QAAC,SAAS,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC;IAAC,CAAC;IAC9C,OAAO,CAAC,EAAE,CAAC;QAAC,MAAM,IAAI,mBAAmB,CAAC,sBAAsB,EAAE,SAAS,GAAI,CAAW,CAAC,OAAO,CAAC,CAAC;IAAC,CAAC;IACtG,MAAM,KAAK,GAAG,gBAAgB,CAAC,SAAS,CAAC,CAAC;IAC1C,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QACrE,MAAM,IAAI,mBAAmB,CAAC,sBAAsB,EAAE,SAAS,GAAG,SAAS,CAAC,CAAC;IAC/E,CAAC;IACD,IAAI,CAAC;QACH,OAAO,cAAc,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,IAAI,EAAE,IAAa,EAAE,CAAC,CAAC;IAC3F,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,MAAM,IAAI,mBAAmB,CAAC,yBAAyB,EAAE,KAAK,GAAG,SAAS,GAAI,CAAW,CAAC,OAAO,CAAC,CAAC;IACrG,CAAC;AACH,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,KAAc;IAClD,IAAI,CAAC;QAAC,OAAO,aAAa,CAAC,KAAK,CAAC,CAAC;IAAC,CAAC;IACpC,OAAO,CAAC,EAAE,CAAC;QAAC,MAAM,IAAI,mBAAmB,CAAC,sBAAsB,EAAE,cAAc,GAAI,CAAW,CAAC,OAAO,CAAC,CAAC;IAAC,CAAC;AAC7G,CAAC"}
1
+ {"version":3,"file":"envelope.js","sourceRoot":"","sources":["../../src/render/envelope.ts"],"names":[],"mappings":"AAAA,mEAAmE;AACnE,gEAAgE;AAChE,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,gBAAgB,EAAqC,MAAM,gBAAgB,CAAC;AACpH,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAElD,OAAO,EAAE,mBAAmB,EAAE,CAAC;AAE/B,MAAM,UAAU,gBAAgB,CAAC,GAAW;IAC1C,sCAAsC;IACtC,MAAM,CAAC,GAAI,mBAAqD,CAAC,GAAG,CAAC,CAAC;IACtE,IAAI,CAAC,CAAC;QAAE,MAAM,IAAI,mBAAmB,CAAC,sBAAsB,EAAE,WAAW,GAAG,GAAG,CAAC,CAAC;IACjF,OAAO,CAAC,CAAC;AACX,CAAC;AAED,mDAAmD;AACnD,MAAM,UAAU,qBAAqB,CAAC,GAAW,EAAE,IAAa;IAC9D,IAAI,SAAS,GAAG,EAAE,CAAC;IACnB,IAAI,CAAC;QAAC,SAAS,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC;IAAC,CAAC;IAC9C,OAAO,CAAC,EAAE,CAAC;QAAC,MAAM,IAAI,mBAAmB,CAAC,sBAAsB,EAAE,SAAS,GAAI,CAAW,CAAC,OAAO,CAAC,CAAC;IAAC,CAAC;IACtG,MAAM,KAAK,GAAG,gBAAgB,CAAC,SAAS,CAAC,CAAC;IAC1C,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QACrE,MAAM,IAAI,mBAAmB,CAAC,sBAAsB,EAAE,SAAS,GAAG,SAAS,CAAC,CAAC;IAC/E,CAAC;IACD,IAAI,CAAC;QACH,OAAO,cAAc,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,IAAI,EAAE,IAAa,EAAE,CAAC,CAAC;IAC3F,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,MAAM,IAAI,mBAAmB,CAAC,yBAAyB,EAAE,KAAK,GAAG,SAAS,GAAI,CAAW,CAAC,OAAO,CAAC,CAAC;IACrG,CAAC;AACH,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,KAAc;IAClD,IAAI,CAAC;QAAC,OAAO,aAAa,CAAC,KAAK,CAAC,CAAC;IAAC,CAAC;IACpC,OAAO,CAAC,EAAE,CAAC;QAAC,MAAM,IAAI,mBAAmB,CAAC,sBAAsB,EAAE,cAAc,GAAI,CAAW,CAAC,OAAO,CAAC,CAAC;IAAC,CAAC;AAC7G,CAAC"}
@@ -0,0 +1,83 @@
1
+ /** 作息命令声明的形状(**唯一定义地**):一条命令的事实——种类/命令名/形状/标题/代表唤醒词/可执行示例/处理函数。
2
+ *
3
+ * 谁在用(五个能力,指名):
4
+ * ① `src/write/commands.ts`——写入与同步(`schedule.record.write`);
5
+ * ② `src/query/commands.ts`——查询与浏览(`schedule.record.today`/`range`/`detail`、`schedule.plan.today`);
6
+ * ③ `src/plan/commands.ts`——日程与计划(`schedule.plan.write`);
7
+ * ④ `src/analyze/commands.ts`——分析与洞察(`schedule.record.compare`);
8
+ * ⑤ `src/admin/commands.ts`——辅助与管理(`schedule.help.lookup`)。
9
+ * 五张声明各由本能力的 `index.ts` 转出,`src/cli/registry.ts` 汇总成一张查表供分派层查(Layer2 落定)。
10
+ *
11
+ * 代表唤醒词**写在声明上**(照卡路里,不照饼干 #721):作息的唤醒词表是 48 条带槽位与预设的路由项,
12
+ * 其全量归属在各能力的 `routes.ts`;声明上的 `wakeWord` 只是其中一条代表(SKILL 速查与示例用),
13
+ * 生成期由 `wakeWordGate()` 逐条查「这个词路由回本键」,主张由机器拦。
14
+ *
15
+ * 写命令的形状不写在声明上(#703):写命令一律 `receipt` 形,唯一定义地是生成器
16
+ * (`scripts/gen-cli.mjs` 合成 `cli/keys.ts`);读命令的形状写表里的形状(`list`/`stat`/`detail`/`analysis`)。
17
+ *
18
+ * 口径出处:形状照 `packages/skill-calorie/src/shared/commandSpec.ts` 与
19
+ * `packages/skill-bill/src/shared/commandSpec.ts`(照结构,不照文件;零改动别家文件)。
20
+ * 本件自持,不上公共层(命令事实住能力目录,纪律有定)。
21
+ */
22
+ import type { EnvelopeShape } from 'base-link-core';
23
+ import type { ScheduleDb } from '../fetch/db.js';
24
+ /** 读命令的产物:`data` 过 envelope 形状守卫,`html` 为整页产物。 */
25
+ export interface ViewOut {
26
+ data: Record<string, unknown>;
27
+ html: string;
28
+ /** stderr 提示行(不进 envelope):逐条由出口 `note()` 打出,字节与旧分派一致。 */
29
+ notes?: string[];
30
+ /** 缺省落点意图(仅 `schedule.help.lookup` 有):出口凭它走统一落盘管线。 */
31
+ landing?: {
32
+ targetDir: string;
33
+ stem: string;
34
+ reuseMs?: number;
35
+ };
36
+ /** **不落盘**的显式表态(#843):缺省行为是「**缺省即落盘**」(出口落一份 HTML 并回 `delivery.path`);
37
+ * 这一支是「这一趟按定义就没有产物」(今天只有 HELP 的 `q` 现找:只回命中条目,不落盘)。
38
+ * 缺省值不写=落盘,故只有不落盘的那一支表态。 */
39
+ delivery?: false;
40
+ }
41
+ /** 写命令的产物:写库回执 + 整页 HTML。
42
+ * `data` 是 receipt 形(`ok`/`message` 必备 + 各能力的分字段,见 `plan/receipt.ts` 的 `PlanReceipt`):
43
+ * 写成 `Record` 是因为同一 `receipt` 形下各键字段不同(`achieved`/`local`/`remote`…),静态窄化会写假;
44
+ * 真正的形状守卫是运行时的 envelope 全字段校验(错形状载荷即抛,行为与旧分派一致)。 */
45
+ export interface WriteOut {
46
+ data: Record<string, unknown>;
47
+ html: string;
48
+ /** 合成写达成通道:非 0 即「本地成了但远端没成」,出口载荷照出、退出码非 0(裁定 A6②)。 */
49
+ exitCode?: number;
50
+ }
51
+ export type ViewHandler = (params: Record<string, unknown>, db: ScheduleDb) => ViewOut;
52
+ export type WriteHandler = (params: Record<string, unknown>, db: ScheduleDb) => WriteOut;
53
+ /** 读命令的声明。 */
54
+ export interface ReadCommandSpec {
55
+ readonly kind: 'read';
56
+ readonly key: string;
57
+ readonly shape: EnvelopeShape;
58
+ readonly title: string;
59
+ /** 代表唤醒词:须是本键路由表里真有的词(生成期 `wakeWordGate()` 逐条查)。 */
60
+ readonly wakeWord: string;
61
+ /** 照抄即能跑的一行:逐字取自 SKILL.md 联动速查「例」列(缺省即证其可跑);缺省生成期即抛。 */
62
+ readonly example: string;
63
+ readonly run: ViewHandler;
64
+ }
65
+ /** 写命令的声明:形状恒 `receipt`,不写第二遍(#703)。 */
66
+ export interface WriteCommandSpec {
67
+ readonly kind: 'write';
68
+ readonly key: string;
69
+ readonly title: string;
70
+ readonly wakeWord: string;
71
+ readonly example: string;
72
+ readonly run: WriteHandler;
73
+ }
74
+ export type CommandSpec = ReadCommandSpec | WriteCommandSpec;
75
+ /** 路由项:短语→键+槽位与预设。`order`=今日 `WAKE_TABLE` 下标,归并保序、HELP 字节不动。 */
76
+ export interface RouteEntry {
77
+ readonly phrase: string;
78
+ readonly key: string;
79
+ readonly needs?: readonly string[];
80
+ readonly preset?: Record<string, unknown>;
81
+ readonly order: number;
82
+ }
83
+ //# sourceMappingURL=commandSpec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"commandSpec.d.ts","sourceRoot":"","sources":["../../src/shared/commandSpec.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAEjD,kDAAkD;AAClD,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,0DAA0D;IAC1D,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,sDAAsD;IACtD,OAAO,CAAC,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAChE;;iCAE6B;IAC7B,QAAQ,CAAC,EAAE,KAAK,CAAC;CAClB;AAED;;;qDAGqD;AACrD,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,sDAAsD;IACtD,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,MAAM,WAAW,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,EAAE,EAAE,UAAU,KAAK,OAAO,CAAC;AACvF,MAAM,MAAM,YAAY,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,EAAE,EAAE,UAAU,KAAK,QAAQ,CAAC;AAEzF,cAAc;AACd,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC;IAC9B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,oDAAoD;IACpD,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,wDAAwD;IACxD,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,GAAG,EAAE,WAAW,CAAC;CAC3B;AAED,wCAAwC;AACxC,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,GAAG,EAAE,YAAY,CAAC;CAC5B;AAED,MAAM,MAAM,WAAW,GAAG,eAAe,GAAG,gBAAgB,CAAC;AAE7D,gEAAgE;AAChE,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACnC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC1C,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=commandSpec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"commandSpec.js","sourceRoot":"","sources":["../../src/shared/commandSpec.ts"],"names":[],"mappings":""}