skill-schedule 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.
- package/SKILL.md +9 -7
- package/dist/.gen-inputs.json +45 -0
- package/dist/admin/commands.d.ts +10 -0
- package/dist/admin/commands.d.ts.map +1 -0
- package/dist/admin/commands.js +5 -0
- package/dist/admin/commands.js.map +1 -0
- package/dist/admin/handlers.d.ts +3 -0
- package/dist/admin/handlers.d.ts.map +1 -0
- package/dist/admin/handlers.js +66 -0
- package/dist/admin/handlers.js.map +1 -0
- package/dist/admin/index.d.ts +3 -0
- package/dist/admin/index.d.ts.map +1 -0
- package/dist/admin/index.js +3 -0
- package/dist/admin/index.js.map +1 -0
- package/dist/admin/routes.d.ts +8 -0
- package/dist/admin/routes.d.ts.map +1 -0
- package/dist/admin/routes.js +7 -0
- package/dist/admin/routes.js.map +1 -0
- package/dist/analyze/commands.d.ts +10 -0
- package/dist/analyze/commands.d.ts.map +1 -0
- package/dist/analyze/commands.js +5 -0
- package/dist/analyze/commands.js.map +1 -0
- package/dist/analyze/handlers.d.ts +3 -0
- package/dist/analyze/handlers.d.ts.map +1 -0
- package/dist/analyze/handlers.js +57 -0
- package/dist/analyze/handlers.js.map +1 -0
- package/dist/analyze/index.d.ts +3 -0
- package/dist/analyze/index.d.ts.map +1 -0
- package/dist/analyze/index.js +3 -0
- package/dist/analyze/index.js.map +1 -0
- package/dist/analyze/routes.d.ts +8 -0
- package/dist/analyze/routes.d.ts.map +1 -0
- package/dist/analyze/routes.js +8 -0
- package/dist/analyze/routes.js.map +1 -0
- package/dist/cli/cmd_read.js +48 -251
- package/dist/cli/cmd_read.js.map +1 -1
- package/dist/cli/config.d.ts +5 -2
- package/dist/cli/config.d.ts.map +1 -1
- package/dist/cli/config.js +8 -3
- package/dist/cli/config.js.map +1 -1
- package/dist/cli/keys.d.ts +5 -0
- package/dist/cli/keys.d.ts.map +1 -0
- package/dist/cli/keys.js +21 -0
- package/dist/cli/keys.js.map +1 -0
- package/dist/cli/registry.d.ts +4 -0
- package/dist/cli/registry.d.ts.map +1 -0
- package/dist/cli/registry.js +12 -0
- package/dist/cli/registry.js.map +1 -0
- package/dist/config.d.ts +19 -8
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +81 -21
- package/dist/config.js.map +1 -1
- package/dist/delivery/index.d.ts +8 -0
- package/dist/delivery/index.d.ts.map +1 -0
- package/dist/delivery/index.js +7 -0
- package/dist/delivery/index.js.map +1 -0
- package/dist/delivery/naming.d.ts +24 -0
- package/dist/delivery/naming.d.ts.map +1 -0
- package/dist/delivery/naming.js +8 -0
- package/dist/delivery/naming.js.map +1 -0
- package/dist/delivery/output.d.ts +22 -0
- package/dist/delivery/output.d.ts.map +1 -0
- package/dist/delivery/output.js +83 -0
- package/dist/delivery/output.js.map +1 -0
- package/dist/fetch/feishu.d.ts +5 -0
- package/dist/fetch/feishu.d.ts.map +1 -1
- package/dist/fetch/feishu.js +48 -23
- package/dist/fetch/feishu.js.map +1 -1
- package/dist/fetch/index.d.ts +3 -2
- package/dist/fetch/index.d.ts.map +1 -1
- package/dist/fetch/index.js +2 -2
- package/dist/fetch/index.js.map +1 -1
- package/dist/fetch/paths.d.ts +42 -4
- package/dist/fetch/paths.d.ts.map +1 -1
- package/dist/fetch/paths.js +67 -11
- package/dist/fetch/paths.js.map +1 -1
- package/dist/health.d.ts.map +1 -1
- package/dist/health.js +34 -73
- package/dist/health.js.map +1 -1
- package/dist/help/helpFile.d.ts +5 -3
- package/dist/help/helpFile.d.ts.map +1 -1
- package/dist/help/helpFile.js +6 -5
- package/dist/help/helpFile.js.map +1 -1
- package/dist/help/helpPaths.d.ts +11 -12
- package/dist/help/helpPaths.d.ts.map +1 -1
- package/dist/help/helpPaths.js +9 -36
- package/dist/help/helpPaths.js.map +1 -1
- package/dist/plan/commands.d.ts +9 -0
- package/dist/plan/commands.d.ts.map +1 -0
- package/dist/plan/commands.js +5 -0
- package/dist/plan/commands.js.map +1 -0
- package/dist/plan/handlers.d.ts +3 -0
- package/dist/plan/handlers.d.ts.map +1 -0
- package/dist/plan/handlers.js +31 -0
- package/dist/plan/handlers.js.map +1 -0
- package/dist/plan/index.d.ts +2 -0
- package/dist/plan/index.d.ts.map +1 -1
- package/dist/plan/index.js +4 -2
- package/dist/plan/index.js.map +1 -1
- package/dist/plan/routes.d.ts +8 -0
- package/dist/plan/routes.d.ts.map +1 -0
- package/dist/plan/routes.js +18 -0
- package/dist/plan/routes.js.map +1 -0
- package/dist/policy/wakewords.d.ts.map +1 -1
- package/dist/policy/wakewords.js +9 -59
- package/dist/policy/wakewords.js.map +1 -1
- package/dist/query/commands.d.ts +26 -0
- package/dist/query/commands.d.ts.map +1 -0
- package/dist/query/commands.js +8 -0
- package/dist/query/commands.js.map +1 -0
- package/dist/query/handlers.d.ts +6 -0
- package/dist/query/handlers.d.ts.map +1 -0
- package/dist/query/handlers.js +67 -0
- package/dist/query/handlers.js.map +1 -0
- package/dist/query/index.d.ts +3 -0
- package/dist/query/index.d.ts.map +1 -0
- package/dist/query/index.js +3 -0
- package/dist/query/index.js.map +1 -0
- package/dist/query/routes.d.ts +9 -0
- package/dist/query/routes.d.ts.map +1 -0
- package/dist/query/routes.js +20 -0
- package/dist/query/routes.js.map +1 -0
- package/dist/render/envelope.d.ts +2 -1
- package/dist/render/envelope.d.ts.map +1 -1
- package/dist/render/envelope.js +5 -11
- package/dist/render/envelope.js.map +1 -1
- package/dist/shared/commandSpec.d.ts +83 -0
- package/dist/shared/commandSpec.d.ts.map +1 -0
- package/dist/shared/commandSpec.js +2 -0
- package/dist/shared/commandSpec.js.map +1 -0
- package/dist/triggers/routes.generated.d.ts +297 -0
- package/dist/triggers/routes.generated.d.ts.map +1 -0
- package/dist/triggers/routes.generated.js +52 -0
- package/dist/triggers/routes.generated.js.map +1 -0
- package/dist/write/commands.d.ts +9 -0
- package/dist/write/commands.d.ts.map +1 -0
- package/dist/write/commands.js +5 -0
- package/dist/write/commands.js.map +1 -0
- package/dist/write/handlers.d.ts +3 -0
- package/dist/write/handlers.d.ts.map +1 -0
- package/dist/write/handlers.js +24 -0
- package/dist/write/handlers.js.map +1 -0
- package/dist/write/index.d.ts +3 -0
- package/dist/write/index.d.ts.map +1 -0
- package/dist/write/index.js +3 -0
- package/dist/write/index.js.map +1 -0
- package/dist/write/routes.d.ts +8 -0
- package/dist/write/routes.d.ts.map +1 -0
- package/dist/write/routes.js +10 -0
- package/dist/write/routes.js.map +1 -0
- package/package.json +3 -3
package/dist/help/helpPaths.js
CHANGED
|
@@ -1,40 +1,13 @@
|
|
|
1
|
-
/**
|
|
1
|
+
/** HELP 的**引用面**:落点算法本身住 `src/fetch/paths.ts`(全部落点算式的唯一定义地),
|
|
2
|
+
* 本件只把它转出去,给交付链(`src/delivery/output.ts`)与入口 `src/cli/cmd_read.ts` 取。
|
|
2
3
|
*
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
* 最小管线(#147 的裁决:**自持一份**,不上移公共层、不让技能之间互相依赖)。
|
|
4
|
+
* **#843 起这一支只剩转出**(原 `helpDirSegments()` 与它手里的算式已就地删除):
|
|
5
|
+
* 落点算式只能有一个定义地,本件留一份等价实现就是仓规「同一件事两份实现」。
|
|
6
6
|
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
* - 时间戳取**本地**时区秒(老 `strftime("%Y%m%d_%H%M%S")`),同名递补。
|
|
12
|
-
*
|
|
13
|
-
* **#695 起值的唯一事实源是配置文件**(`~/.ilife/schedule.yaml`,默认值表住 `src/config.ts`):本件从配置取,
|
|
14
|
-
* 空串回落到默认;目录那一项是**段串**(`schedule_html/help`),段数由值自己决定——老技能里大厨/作息是两段、
|
|
15
|
-
* 备忘/居家是一段,同一套配置形状要能表达「几段」。
|
|
16
|
-
*
|
|
17
|
-
* 本模块只出**初候选**(零 IO):最终名由 `output.ts:writeExclusiveWithRetry` 的 `wx` 独占+`EEXIST` 递补仲裁
|
|
18
|
-
* ——判存与写入之间没有独占性,check-then-write 并发同秒必交叉覆盖(#128 的因果,照抄不重演)。
|
|
7
|
+
* 老命名规则(#203 复刻,`docs/skills/skill-schedule/t198-old-help-truth.md` 第四节)不变:
|
|
8
|
+
* 目录 `<库目录>/schedule_html/help/`(=产物根 `html.dir` 下的 `html.helpDir` 一支),
|
|
9
|
+
* 文件名主体 `作息管家_HELP`(`helpFile.ts:helpFileStem()`),通式
|
|
10
|
+
* `〈文件名主体〉_<YYYYMMDD>_<HHMMSS>[_<N>].html`(时间戳与递补由共用件 `saveHtmlFile` 算)。
|
|
19
11
|
*/
|
|
20
|
-
|
|
21
|
-
import { loadScheduleConfig, splitDirSegments } from '../config.js';
|
|
22
|
-
/** 落点子目录的默认值:=改造前的代码常量 `HELP_HTML_DIR_PARTS` 两段(老实物两级逐字)。
|
|
23
|
-
* 配置项 `html.dir` 空串即用它。 */
|
|
24
|
-
export const DEFAULT_HELP_DIR = 'schedule_html/help';
|
|
25
|
-
/** 落点子目录的段数组:配置 `html.dir`(空串=默认)拆成段。 */
|
|
26
|
-
export function helpDirSegments() {
|
|
27
|
-
const dir = loadScheduleConfig().values.html.dir;
|
|
28
|
-
return splitDirSegments(dir === '' ? DEFAULT_HELP_DIR : dir);
|
|
29
|
-
}
|
|
30
|
-
/** 落点**目录**(绝对路径、零 IO,不建目录):`<dbDir>/schedule_html/help/`。
|
|
31
|
-
* #245 起这是交付入口真正吃的东西——给「目录 + 主体」而不是「带戳的初候选路径」,
|
|
32
|
-
* 免得共用件把时间戳算两遍(落盘名由共用件 `saveHtmlFile` 按 `〈主体〉_<YYYYMMDD_HHMMSS>[_N].html` 生成)。
|
|
33
|
-
*
|
|
34
|
-
* ⚠️ **本件原先那三个导出(`formatHelpStamp`/`buildHelpFileName`/`resolveStemTarget`)已就地删除**:
|
|
35
|
-
* #245 把作息侧落盘迁到共用件后,它们是**零消费者**的死代码(时间戳格式与通式的唯一定义地已是
|
|
36
|
-
* `base-render/src/output/saveHtml.ts`),留着就是「同一件事的第二份实现」——铁律二禁止。 */
|
|
37
|
-
export function resolveHelpDir(dbDir) {
|
|
38
|
-
return join(resolve(dbDir), ...helpDirSegments());
|
|
39
|
-
}
|
|
12
|
+
export { DEFAULT_HELP_DIR, resolveHelpDirOf as resolveHelpDir } from '../fetch/paths.js';
|
|
40
13
|
//# sourceMappingURL=helpPaths.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpPaths.js","sourceRoot":"","sources":["../../src/help/helpPaths.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"helpPaths.js","sourceRoot":"","sources":["../../src/help/helpPaths.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,IAAI,cAAc,EAAE,MAAM,mBAAmB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../../src/plan/commands.ts"],"names":[],"mappings":"AAQA,eAAO,MAAM,aAAa;;;;;;;GAEQ,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { writePlan } from './handlers.js';
|
|
2
|
+
export const PLAN_COMMANDS = [
|
|
3
|
+
{ kind: 'write', key: 'schedule.plan.write', title: '写计划', wakeWord: '补计划', run: writePlan, example: 'schedule-cmd-read schedule.plan.write --params \'{"op":"ensure","date":"2026-09-01","time_start":"09:00","time_end":"10:00","title":"晨会"}\'' },
|
|
4
|
+
];
|
|
5
|
+
//# sourceMappingURL=commands.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"commands.js","sourceRoot":"","sources":["../../src/plan/commands.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAE1C,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,qBAAqB,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,OAAO,EAAE,6IAA6I,EAAE;CACpN,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"handlers.d.ts","sourceRoot":"","sources":["../../src/plan/handlers.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAc7D,eAAO,MAAM,SAAS,EAAE,YAKvB,CAAC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/** 日程与计划的处理函数(命令事实的执行一半;声明在 `./commands.ts`)。
|
|
2
|
+
*
|
|
3
|
+
* 逐字搬自 `src/cli/cmd_read.ts` 的 switch 一臂 + 远端门(行为零改动)。
|
|
4
|
+
* 写 op 全部统一成合成写(裁定 A6③):本地 +(可选)远端一条命令走完,回执分字段、退出码报达成与否。
|
|
5
|
+
*/
|
|
6
|
+
import { larkReady } from '../fetch/index.js';
|
|
7
|
+
import { parseFeishuMode, parsePlanOp } from '../policy/index.js';
|
|
8
|
+
import { runPlanOp } from './index.js';
|
|
9
|
+
/** 哪些 op 要碰远端(其余 op 连 lark-cli 都不探——探测本身是三次子进程)。 */
|
|
10
|
+
const REMOTE_OPS = ['ensure', 'upsert', 'update', 'deactivate', 'sync', 'check'];
|
|
11
|
+
/** 远端门:过了给 cliPath;没过给「为什么不在场」——**不拦本地写**,只如实进回执与退出码。 */
|
|
12
|
+
function remoteGate(op, params) {
|
|
13
|
+
if (!REMOTE_OPS.includes(op))
|
|
14
|
+
return { cli: null, why: null };
|
|
15
|
+
// sync/check 本身就是远端命令:`feishu:'skip'` 对它们不成立,照探(探不到即阻断/降级)。
|
|
16
|
+
if (op !== 'sync' && op !== 'check' && parseFeishuMode(params) === 'skip')
|
|
17
|
+
return { cli: null, why: null };
|
|
18
|
+
try {
|
|
19
|
+
return { cli: larkReady().cliPath, why: null };
|
|
20
|
+
}
|
|
21
|
+
catch (e) {
|
|
22
|
+
return { cli: null, why: e.message };
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
export const writePlan = (params, handle) => {
|
|
26
|
+
const op = parsePlanOp(params);
|
|
27
|
+
const gate = remoteGate(op, params);
|
|
28
|
+
const out = runPlanOp(op, { handle, params, cli: gate.cli, remoteWhy: gate.why });
|
|
29
|
+
return { data: out.data, html: '', exitCode: out.exitCode };
|
|
30
|
+
};
|
|
31
|
+
//# sourceMappingURL=handlers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"handlers.js","sourceRoot":"","sources":["../../src/plan/handlers.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,WAAW,EAAoB,MAAM,oBAAoB,CAAC;AACpF,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAIvC,oDAAoD;AACpD,MAAM,UAAU,GAAkB,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;AAEhG,yDAAyD;AACzD,SAAS,UAAU,CAAC,EAAe,EAAE,MAA+B;IAClE,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAAE,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC;IAC9D,4DAA4D;IAC5D,IAAI,EAAE,KAAK,MAAM,IAAI,EAAE,KAAK,OAAO,IAAI,eAAe,CAAC,MAAM,CAAC,KAAK,MAAM;QAAE,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC;IAC3G,IAAI,CAAC;QAAC,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC;IAAC,CAAC;IACvD,OAAO,CAAC,EAAE,CAAC;QAAC,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAG,CAAW,CAAC,OAAO,EAAE,CAAC;IAAC,CAAC;AAChE,CAAC;AAED,MAAM,CAAC,MAAM,SAAS,GAAiB,CAAC,MAAM,EAAE,MAAkB,EAAE,EAAE;IACpE,MAAM,EAAE,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;IAC/B,MAAM,IAAI,GAAG,UAAU,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;IACpC,MAAM,GAAG,GAAG,SAAS,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;IAClF,OAAO,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE,GAAG,CAAC,QAAQ,EAAE,CAAC;AAC9D,CAAC,CAAC"}
|
package/dist/plan/index.d.ts
CHANGED
package/dist/plan/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/plan/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/plan/index.ts"],"names":[],"mappings":"AAQA,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAE5B,OAAO,EAA0D,KAAK,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAC9G,OAAO,EAAiB,KAAK,SAAS,EAAE,KAAK,YAAY,EAAE,MAAM,cAAc,CAAC;AAQhF,YAAY,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAClD,YAAY,EAAE,mBAAmB,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAoBlF,wDAAwD;AACxD,wBAAgB,SAAS,CAAC,EAAE,EAAE,WAAW,EAAE,GAAG,EAAE,SAAS,GAAG,YAAY,CAiBvE"}
|
package/dist/plan/index.js
CHANGED
|
@@ -4,8 +4,10 @@
|
|
|
4
4
|
// 删计划/复盘/日程管家同步 + 飞书自检)与日程查询的 24h 聚合视图(#15/#16)。
|
|
5
5
|
// 出门只给三件:一个 op 分发器、一个聚合视图装配、两个类型。
|
|
6
6
|
//
|
|
7
|
-
//
|
|
8
|
-
//
|
|
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';
|
package/dist/plan/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/plan/index.ts"],"names":[],"mappings":"AAAA,8BAA8B;AAC9B,EAAE;AACF,oEAAoE;AACpE,iDAAiD;AACjD,kCAAkC;AAClC,EAAE;AACF,
|
|
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":"
|
|
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"}
|
package/dist/policy/wakewords.js
CHANGED
|
@@ -1,64 +1,14 @@
|
|
|
1
1
|
// 口径层·唤醒词路由:自然语言 → 8 联动 key;最长匹配;废弃词(同步作息/作息计划表等)无命中。
|
|
2
|
-
//
|
|
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
|
-
|
|
6
|
-
|
|
7
|
-
{
|
|
8
|
-
{
|
|
9
|
-
|
|
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":"AAAA,sDAAsD;AACtD,
|
|
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":"AAAA;;;;GAIG;AACH,OAAO,EACL,kBAAkB,EAAE,mBAAmB,EACvC,aAAa,EAAE,SAAS,EAAE,cAAc,EAAE,kBAAkB,EAC5D,iBAAiB,EAAE,gBAAgB,EAAE,eAAe,GACrD,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvG,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EACL,cAAc,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,gBAAgB,GACtE,MAAM,oBAAoB,CAAC;AAI5B,SAAS,OAAO,CAAC,MAA+B,EAAE,IAAY;IAC5D,MAAM,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;IACvB,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,IAAK,CAAY,IAAI,CAAC,EAAE,CAAC;QAC/C,MAAM,IAAI,mBAAmB,CAAC,qBAAqB,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC,CAAC;IAClF,CAAC;IACD,OAAO,CAAW,CAAC;AACrB,CAAC;AAED,MAAM,CAAC,MAAM,eAAe,GAAgB,CAAC,MAAM,EAAE,MAAkB,EAAE,EAAE;IACzE,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,MAAM,IAAI,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC;IACtC,MAAM,OAAO,GAAG,iBAAiB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAChD,MAAM,EAAE,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;IAC7B,IAAI,EAAE,CAAC,OAAO,KAAK,CAAC;QAAE,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;IAClD,OAAO,EAAE,IAAI,EAAE,gBAAgB,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC;AACpE,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAAgB,CAAC,MAAM,EAAE,MAAkB,EAAE,EAAE;IACzE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC;IACjD,MAAM,OAAO,GAAG,gBAAgB,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;IACrD,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;QACpB,MAAM,IAAI,kBAAkB,CAAC,sBAAsB,EAAE,QAAQ,GAAG,KAAK,GAAG,GAAG,GAAG,GAAG,GAAG,cAAc,CAAC,CAAC;IACtG,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,gBAAgB,CAAC,KAAK,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;AACnE,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,gBAAgB,GAAgB,CAAC,MAAM,EAAE,MAAkB,EAAE,EAAE;IAC1E,IAAI,MAAM,CAAC,EAAE,KAAK,SAAS,EAAE,CAAC;QAC5B,OAAO,EAAE,IAAI,EAAE,iBAAiB,CAAC,aAAa,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;IAC7F,CAAC;IACD,MAAM,IAAI,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC;IACtC,MAAM,OAAO,GAAG,iBAAiB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAChD,IAAI,CAAC,OAAO,CAAC,MAAM;QAAE,MAAM,IAAI,kBAAkB,CAAC,2BAA2B,EAAE,QAAQ,GAAG,IAAI,CAAC,CAAC;IAChG,OAAO,EAAE,IAAI,EAAE,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;AAC3D,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAgB,CAAC,MAAM,EAAE,MAAkB,EAAE,EAAE;IACvE,gEAAgE;IAChE,IAAI,aAAa,CAAC,MAAM,CAAC,KAAK,WAAW,EAAE,CAAC;QAC1C,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM;YAC9D,CAAC,CAAE,MAAM,CAAC,KAAmB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,aAAa,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;YACrE,CAAC,CAAC,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC;QAC/B,OAAO,EAAE,IAAI,EAAE,EAAE,GAAG,iBAAiB,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;IACrE,CAAC;IACD,IAAI,OAAO,MAAM,CAAC,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC;QAC5D,MAAM,IAAI,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC;QACtC,MAAM,IAAI,GAAG,eAAe,CAC1B,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,EACjC,MAAM,CAAC,UAAgC,EAAE,MAAM,CAAC,QAA8B,CAC/E,CAAC;QACF,OAAO,EAAE,IAAI,EAAE,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;IACxD,CAAC;IACD,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;QACvD,MAAM,KAAK,GAAI,MAAM,CAAC,KAAmB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,aAAa,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC;QAClF,MAAM,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAChC,MAAM,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAC/C,MAAM,GAAG,GAAG,kBAAkB,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QACrF,OAAO,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;IACrI,CAAC;IACD,MAAM,IAAI,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC;IACtC,OAAO,EAAE,IAAI,EAAE,cAAc,CAAC,IAAI,EAAE,cAAc,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;AAChF,CAAC,CAAC"}
|
|
@@ -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 @@
|
|
|
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
|
-
|
|
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":"
|
|
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"}
|
package/dist/render/envelope.js
CHANGED
|
@@ -1,17 +1,11 @@
|
|
|
1
|
-
// 渲染层·envelope:8 联动 key×shape
|
|
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
|
|
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,
|
|
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"}
|