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.
- 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 +46 -249
- package/dist/cli/cmd_read.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 +7 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +9 -3
- 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/paths.d.ts +32 -5
- package/dist/fetch/paths.d.ts.map +1 -1
- package/dist/fetch/paths.js +45 -9
- package/dist/fetch/paths.js.map +1 -1
- package/dist/health.d.ts.map +1 -1
- package/dist/health.js +6 -4
- package/dist/health.js.map +1 -1
- package/dist/help/helpPaths.d.ts +11 -13
- package/dist/help/helpPaths.d.ts.map +1 -1
- package/dist/help/helpPaths.js +9 -39
- 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/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":"AAAA,8BAA8B;AAC9B,EAAE;AACF,oEAAoE;AACpE,iDAAiD;AACjD,kCAAkC;AAClC,EAAE;AACF,+CAA+C;AAC/C,4FAA4F;AAC5F,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAC5E,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,iBAAiB,EAAoB,MAAM,oBAAoB,CAAC;AAC9G,OAAO,EAAE,aAAa,EAAqC,MAAM,cAAc,CAAC;AAChF,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACvD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAGtC,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAGlD,iDAAiD;AACjD,SAAS,SAAS,CAAC,GAAc;IAC/B,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC,WAAW,KAAK,OAAO,IAAI,GAAG,CAAC,MAAM,CAAC,KAAK,KAAK,SAAS;QACzF,CAAC,CAAC,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC;QAC/B,CAAC,CAAC,EAAE,KAAK,EAAE,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;IAC/E,MAAM,MAAM,GAAG,kBAAkB,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;IAC1D,MAAM,MAAM,GAA2B,EAAE,CAAC;IAC1C,KAAK,MAAM,CAAC,IAAI,MAAM;QAAE,MAAM,CAAC,CAAC,CAAC,UAAU,IAAI,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;IACjG,MAAM,KAAK,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IACnF,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM;QAC3B,CAAC,CAAC,MAAM,GAAG,KAAK,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,MAAM,CAAC,MAAM,GAAG,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG;QACpF,CAAC,CAAC,MAAM,GAAG,KAAK,GAAG,GAAG,GAAG,GAAG,GAAG,qBAAqB,CAAC;IACvD,OAAO,aAAa,CAAC,YAAY,CAAC;QAChC,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI;QACxE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE;KAChF,CAAC,CAAC,CAAC;AACN,CAAC;AAED,wDAAwD;AACxD,MAAM,UAAU,SAAS,CAAC,EAAe,EAAE,GAAc;IACvD,QAAQ,EAAE,EAAE,CAAC;QACX,KAAK,SAAS,CAAC,CAAC,OAAO,UAAU,CAAC,GAAG,CAAC,CAAC;QACvC,KAAK,QAAQ,CAAC,CAAC,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC;QACrC,qEAAqE;QACrE,KAAK,QAAQ,CAAC,CAAC,OAAO,GAAG,CAAC,MAAM,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;QAC5F,KAAK,QAAQ,CAAC,CAAC,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC;QACrC,KAAK,YAAY,CAAC,CAAC,OAAO,aAAa,CAAC,GAAG,CAAC,CAAC;QAC7C,KAAK,QAAQ,CAAC,CAAC,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC;QACrC,KAAK,MAAM,CAAC,CAAC,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC;QACjC,KAAK,OAAO,CAAC,CAAC,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC;QACnC,OAAO,CAAC,CAAC,CAAC;YACR,qCAAqC;YACrC,MAAM,KAAK,GAAU,EAAE,CAAC;YACxB,MAAM,IAAI,mBAAmB,CAAC,kBAAkB,EAAE,aAAa,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QACnF,CAAC;IACH,CAAC;AACH,CAAC"}
|
|
@@ -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":"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"}
|
|
@@ -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"}
|
|
@@ -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 @@
|
|
|
1
|
+
{"version":3,"file":"commandSpec.js","sourceRoot":"","sources":["../../src/shared/commandSpec.ts"],"names":[],"mappings":""}
|