skill-schedule 0.1.0 → 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (128) hide show
  1. package/SKILL.md +105 -0
  2. package/dist/cli/cmd_read.js +174 -116
  3. package/dist/cli/cmd_read.js.map +1 -1
  4. package/dist/cli/config.d.ts +16 -0
  5. package/dist/cli/config.d.ts.map +1 -0
  6. package/dist/cli/config.js +84 -0
  7. package/dist/cli/config.js.map +1 -0
  8. package/dist/cli/health.d.ts +7 -0
  9. package/dist/cli/health.d.ts.map +1 -0
  10. package/dist/cli/health.js +32 -0
  11. package/dist/cli/health.js.map +1 -0
  12. package/dist/config.d.ts +43 -0
  13. package/dist/config.d.ts.map +1 -0
  14. package/dist/config.js +64 -0
  15. package/dist/config.js.map +1 -0
  16. package/dist/fetch/db.d.ts +4 -0
  17. package/dist/fetch/db.d.ts.map +1 -1
  18. package/dist/fetch/db.js +10 -0
  19. package/dist/fetch/db.js.map +1 -1
  20. package/dist/fetch/errors.d.ts +1 -1
  21. package/dist/fetch/errors.d.ts.map +1 -1
  22. package/dist/fetch/errors.js.map +1 -1
  23. package/dist/fetch/feishu.d.ts +33 -9
  24. package/dist/fetch/feishu.d.ts.map +1 -1
  25. package/dist/fetch/feishu.js +137 -23
  26. package/dist/fetch/feishu.js.map +1 -1
  27. package/dist/fetch/index.d.ts +4 -4
  28. package/dist/fetch/index.d.ts.map +1 -1
  29. package/dist/fetch/index.js +3 -3
  30. package/dist/fetch/index.js.map +1 -1
  31. package/dist/fetch/paths.d.ts +5 -3
  32. package/dist/fetch/paths.d.ts.map +1 -1
  33. package/dist/fetch/paths.js +19 -24
  34. package/dist/fetch/paths.js.map +1 -1
  35. package/dist/health.d.ts +41 -0
  36. package/dist/health.d.ts.map +1 -0
  37. package/dist/health.js +580 -0
  38. package/dist/health.js.map +1 -0
  39. package/dist/help/helpFile.d.ts +69 -0
  40. package/dist/help/helpFile.d.ts.map +1 -0
  41. package/dist/help/helpFile.js +136 -0
  42. package/dist/help/helpFile.js.map +1 -0
  43. package/dist/help/helpPaths.d.ts +14 -0
  44. package/dist/help/helpPaths.d.ts.map +1 -0
  45. package/dist/help/helpPaths.js +40 -0
  46. package/dist/help/helpPaths.js.map +1 -0
  47. package/dist/help/lookup.d.ts.map +1 -1
  48. package/dist/help/lookup.js +8 -1
  49. package/dist/help/lookup.js.map +1 -1
  50. package/dist/help/output.d.ts +22 -0
  51. package/dist/help/output.d.ts.map +1 -0
  52. package/dist/help/output.js +79 -0
  53. package/dist/help/output.js.map +1 -0
  54. package/dist/help/scenes/help-assets.d.ts +97 -0
  55. package/dist/help/scenes/help-assets.d.ts.map +1 -0
  56. package/dist/help/scenes/help-assets.js +2148 -0
  57. package/dist/help/scenes/help-assets.js.map +1 -0
  58. package/dist/plan/check.d.ts +3 -0
  59. package/dist/plan/check.d.ts.map +1 -0
  60. package/dist/plan/check.js +71 -0
  61. package/dist/plan/check.js.map +1 -0
  62. package/dist/plan/context.d.ts +18 -0
  63. package/dist/plan/context.d.ts.map +1 -0
  64. package/dist/plan/context.js +4 -0
  65. package/dist/plan/context.js.map +1 -0
  66. package/dist/plan/ensure.d.ts +4 -0
  67. package/dist/plan/ensure.d.ts.map +1 -0
  68. package/dist/plan/ensure.js +140 -0
  69. package/dist/plan/ensure.js.map +1 -0
  70. package/dist/plan/index.d.ts +8 -0
  71. package/dist/plan/index.d.ts.map +1 -0
  72. package/dist/plan/index.js +56 -0
  73. package/dist/plan/index.js.map +1 -0
  74. package/dist/plan/iso.d.ts +27 -0
  75. package/dist/plan/iso.d.ts.map +1 -0
  76. package/dist/plan/iso.js +55 -0
  77. package/dist/plan/iso.js.map +1 -0
  78. package/dist/plan/overview.d.ts +23 -0
  79. package/dist/plan/overview.d.ts.map +1 -0
  80. package/dist/plan/overview.js +38 -0
  81. package/dist/plan/overview.js.map +1 -0
  82. package/dist/plan/pull.d.ts +25 -0
  83. package/dist/plan/pull.d.ts.map +1 -0
  84. package/dist/plan/pull.js +83 -0
  85. package/dist/plan/pull.js.map +1 -0
  86. package/dist/plan/receipt.d.ts +52 -0
  87. package/dist/plan/receipt.d.ts.map +1 -0
  88. package/dist/plan/receipt.js +57 -0
  89. package/dist/plan/receipt.js.map +1 -0
  90. package/dist/plan/remoteDay.d.ts +62 -0
  91. package/dist/plan/remoteDay.d.ts.map +1 -0
  92. package/dist/plan/remoteDay.js +102 -0
  93. package/dist/plan/remoteDay.js.map +1 -0
  94. package/dist/plan/single.d.ts +4 -0
  95. package/dist/plan/single.d.ts.map +1 -0
  96. package/dist/plan/single.js +176 -0
  97. package/dist/plan/single.js.map +1 -0
  98. package/dist/plan/sync.d.ts +14 -0
  99. package/dist/plan/sync.d.ts.map +1 -0
  100. package/dist/plan/sync.js +158 -0
  101. package/dist/plan/sync.js.map +1 -0
  102. package/dist/plan/upsert.d.ts +5 -0
  103. package/dist/plan/upsert.d.ts.map +1 -0
  104. package/dist/plan/upsert.js +102 -0
  105. package/dist/plan/upsert.js.map +1 -0
  106. package/dist/policy/index.d.ts +2 -2
  107. package/dist/policy/index.d.ts.map +1 -1
  108. package/dist/policy/index.js +1 -1
  109. package/dist/policy/index.js.map +1 -1
  110. package/dist/policy/plan.d.ts +16 -1
  111. package/dist/policy/plan.d.ts.map +1 -1
  112. package/dist/policy/plan.js +51 -1
  113. package/dist/policy/plan.js.map +1 -1
  114. package/dist/policy/wakewords.js +4 -4
  115. package/dist/policy/wakewords.js.map +1 -1
  116. package/dist/render/html.d.ts +0 -6
  117. package/dist/render/html.d.ts.map +1 -1
  118. package/dist/render/html.js +0 -17
  119. package/dist/render/html.js.map +1 -1
  120. package/dist/render/index.d.ts +2 -1
  121. package/dist/render/index.d.ts.map +1 -1
  122. package/dist/render/index.js +3 -1
  123. package/dist/render/index.js.map +1 -1
  124. package/dist/shared/templateFill.d.ts +4 -0
  125. package/dist/shared/templateFill.d.ts.map +1 -0
  126. package/dist/shared/templateFill.js +20 -0
  127. package/dist/shared/templateFill.js.map +1 -0
  128. package/package.json +7 -4
@@ -1,36 +1,49 @@
1
- // 取数层·飞书同步点:lark-cli 四门(存在+版本+登录+日历写权限),缺失即 throw。
2
- // 老家对照 scripts/feishu_sync.py:7 条子命令(--version/auth status/calendar +create/+update/+search-event/+agenda/events delete)。
3
- // 超时 15/30/60 三档;本模块不直连 DB(diff 编排在 cli 层)。
1
+ // 取数层·飞书平台层:lark-cli 四门(存在+版本+登录+日历写权限)+ 日历域六条子命令封装。
2
+ // 老家对照 scripts/feishu_sync.py:`--version`/`auth status`/`calendar +agenda`/`+search-event`/
3
+ // `+create`/`+update`/`events get`/`events delete`。超时 15/30/60 三档。
4
+ // 本文件只做「平台怎么调、回什么形状」;三阶段合并拉取、判重、归属清理等编排住 src/plan(能力目录)。
5
+ // 本模块不直连 DB。缺依赖即 throw(不返空,避免把「读不到」伪装成「远端没有」)。
4
6
  import { accessSync, constants } from 'node:fs';
5
7
  import { execFileSync } from 'node:child_process';
8
+ import { homedir } from 'node:os';
6
9
  import { join } from 'node:path';
7
10
  import { ScheduleFetchError } from './errors.js';
11
+ import { loadScheduleConfig } from '../config.js';
8
12
  export const LARK_TIMEOUT_SHORT_MS = 15000;
9
13
  export const LARK_TIMEOUT_NORMAL_MS = 30000;
10
14
  export const LARK_TIMEOUT_LONG_MS = 60000;
11
15
  export const LARK_CALENDAR_SCOPE = 'calendar';
12
- // 跨平台定位:显式覆盖 → Windows npm 全局 → where/which → 固定路径;找不到返 null。
16
+ /** 日历域一律走主日历(老家每条子命令都带 `--calendar-id primary`)。 */
17
+ export const LARK_CALENDAR_ID = 'primary';
18
+ /** 归属锚:写进远端事件描述的前缀(口径唯一处)。判断「这条远端对象是不是我管的」只看它。老出处 `schedule_db.py:1137`。 */
19
+ export const FEISHU_OWNER_MARK = '作息管家自动同步';
20
+ /** 自检留下的远端对象前缀(D-03:用户可据此识别并手工清掉;默认不跑,只走显式 op=check)。 */
21
+ export const FEISHU_SENTINEL_MARK = '[作息管家测试]';
22
+ // 跨平台定位:配置里的显式路径 → Windows npm 全局(家目录派生)→ where/which → 固定路径;找不到返 null。
23
+ // #695 起显式值改从配置项 `lark.cliPath` 取(空串=没有显式值,走兜底探测);原 `LARK_CLI_PATH` 与
24
+ // `APPDATA` 两个环境变量读取**已删**(口径见「配置的存与生效口径裁定」#675 的解决评论)。
13
25
  export function findLarkCli() {
14
- const over = process.env.LARK_CLI_PATH;
15
- if (over) {
26
+ const config = loadScheduleConfig();
27
+ const over = config.values.lark.cliPath;
28
+ if (over !== '') {
16
29
  try {
17
30
  accessSync(over, constants.X_OK);
18
31
  return over;
19
32
  }
20
33
  catch {
21
- throw new ScheduleFetchError('LARK_UNAVAILABLE', 'LARK_CLI_PATH 不可用:' + over);
34
+ throw new ScheduleFetchError('LARK_UNAVAILABLE', '配置项 lark.cliPath 指的那条 lark-cli 用不了:' + over
35
+ + '(该在哪配=配置文件 ' + config.path + ' 的 lark.cliPath;留空即走本机自动探测)');
22
36
  }
23
37
  }
24
38
  if (process.platform === 'win32') {
25
- const appdata = process.env.APPDATA;
26
- if (appdata) {
27
- const cand = join(appdata, 'npm', 'lark-cli.cmd');
28
- try {
29
- accessSync(cand, constants.X_OK);
30
- return cand;
31
- }
32
- catch { /* 继续 */ }
39
+ // 老实现认 `%APPDATA%\npm\lark-cli.cmd`;#695 起由 `os.homedir()` 派生同一处(平台无关地算出来),
40
+ // 只在 win32 这一支里用——不再读 `APPDATA`。
41
+ const cand = join(homedir(), 'AppData', 'Roaming', 'npm', 'lark-cli.cmd');
42
+ try {
43
+ accessSync(cand, constants.X_OK);
44
+ return cand;
33
45
  }
46
+ catch { /* 继续 */ }
34
47
  try {
35
48
  const out = execFileSync('where', ['lark-cli'], { stdio: 'pipe', encoding: 'utf8' }).split(/\r?\n/)[0].trim();
36
49
  if (out)
@@ -115,6 +128,38 @@ export function larkReady() {
115
128
  throw new ScheduleFetchError('LARK_DENIED', '日历不可达(缺授权?先 lark-cli auth login)');
116
129
  return { cliPath: cli, version, openId };
117
130
  }
131
+ // ── 归属锚的读写(唯一口径处)────────────────────────────────────────────────
132
+ export function composeFeishuDescription(notes) {
133
+ const n = typeof notes === 'string' ? notes.trim() : '';
134
+ return n ? FEISHU_OWNER_MARK + ' · ' + n : FEISHU_OWNER_MARK;
135
+ }
136
+ export function isOwnedDescription(description) {
137
+ return typeof description === 'string' && description.includes(FEISHU_OWNER_MARK);
138
+ }
139
+ function str(v) { return typeof v === 'string' ? v : ''; }
140
+ function eventOf(raw) {
141
+ const desc = str(raw.description);
142
+ return {
143
+ eventId: str(raw.event_id),
144
+ summary: str(raw.summary),
145
+ start: str(raw.start_time?.datetime),
146
+ end: str(raw.end_time?.datetime),
147
+ description: desc,
148
+ owned: isOwnedDescription(desc),
149
+ };
150
+ }
151
+ function searchItemOf(raw) {
152
+ // `+search-event` 不返回 description(老家注释 `feishu_sync.py:414`),故owned 当刻一律 false,
153
+ // 由阶段 3 单条补齐后再判。
154
+ return {
155
+ eventId: str(raw.event_id),
156
+ summary: str(raw.summary),
157
+ start: str(raw.start?.date_time),
158
+ end: str(raw.end?.date_time),
159
+ description: '',
160
+ owned: false,
161
+ };
162
+ }
118
163
  function mustJson(cli, args, what) {
119
164
  const r = runLark(cli, args, LARK_TIMEOUT_LONG_MS);
120
165
  if (!r.ok)
@@ -126,16 +171,85 @@ function mustJson(cli, args, what) {
126
171
  throw new ScheduleFetchError('LARK_BAD_RESPONSE', '飞书' + what + '返回非 JSON');
127
172
  }
128
173
  }
129
- export function searchFeishuEvents(cli, start, end) {
130
- return mustJson(cli, ['calendar', '+search-event', '--start', start, '--end', end], '查询');
174
+ /** 阶段 1 甲路:`+agenda`(带 description,但有索引延迟)。 */
175
+ export function larkAgenda(cli, startISO, endISO) {
176
+ const j = mustJson(cli, ['calendar', '+agenda', '--calendar-id', LARK_CALENDAR_ID, '--start', startISO, '--end', endISO], '议程拉取');
177
+ const payload = j.data;
178
+ if (!Array.isArray(payload))
179
+ return [];
180
+ return payload.map((it) => eventOf(it)).filter((e) => e.eventId !== '');
131
181
  }
132
- export function createFeishuEvent(cli, start, end, summary, description) {
133
- return mustJson(cli, ['calendar', '+create', '--start', start, '--end', end, '--summary', summary, '--description', description], '创建');
182
+ /** 阶段 1 乙路:`+search-event` 单窗(索引最新,但无 description、单次有返回上限)。 */
183
+ export function larkSearchEvents(cli, startISO, endISO) {
184
+ const j = mustJson(cli, ['calendar', '+search-event', '--calendar-id', LARK_CALENDAR_ID, '--start', startISO, '--end', endISO], '检索');
185
+ const data = j.data;
186
+ const items = data && Array.isArray(data.items) ? data.items : [];
187
+ return items.map((it) => searchItemOf(it)).filter((e) => e.eventId !== '');
134
188
  }
135
- export function updateFeishuEvent(cli, eventId, start, end, summary) {
136
- return mustJson(cli, ['calendar', '+update', '--event-id', eventId, '--start', start, '--end', end, '--summary', summary], '更新');
189
+ /** 阶段 3:单条 `events get`(补 description)。读不到返 null,不抛。 */
190
+ export function larkGetEvent(cli, eventId) {
191
+ let j;
192
+ try {
193
+ j = mustJson(cli, ['calendar', 'events', 'get', '--calendar-id', LARK_CALENDAR_ID, '--event-id', eventId], '单条读取');
194
+ }
195
+ catch {
196
+ return null;
197
+ }
198
+ const data = j.data;
199
+ const ev = data?.event;
200
+ if (!ev)
201
+ return null;
202
+ const out = eventOf(ev);
203
+ return { ...out, eventId: out.eventId || eventId };
137
204
  }
138
- export function deleteFeishuEvent(cli, calendarId, eventId) {
139
- return mustJson(cli, ['calendar', 'events', 'delete', '--calendar-id', calendarId, '--event-id', eventId], '删除');
205
+ /** 建远端对象:拿不到标识即 throw(D-11:绝不「建了却把空标识写回本地」)。 */
206
+ export function larkCreateEvent(cli, startISO, endISO, summary, description) {
207
+ const args = [
208
+ 'calendar', '+create', '--calendar-id', LARK_CALENDAR_ID,
209
+ '--start', startISO, '--end', endISO, '--summary', summary,
210
+ ];
211
+ if (description)
212
+ args.push('--description', description);
213
+ const j = mustJson(cli, args, '创建');
214
+ const data = (j.data || {});
215
+ const id = str(data.event_id);
216
+ if (!id) {
217
+ throw new ScheduleFetchError('LARK_NO_EVENT_ID', '飞书建事件成功但没给出标识(不写空标识回本地):' + JSON.stringify(j).slice(0, 200));
218
+ }
219
+ return {
220
+ eventId: id,
221
+ summary: str(data.summary) || summary,
222
+ start: str(data.start_time?.datetime) || startISO,
223
+ end: str(data.end_time?.datetime) || endISO,
224
+ description: str(data.description) || description,
225
+ owned: isOwnedDescription(str(data.description) || description),
226
+ };
227
+ }
228
+ /** 改远端对象:`--start`/`--end` 互锁(给一个必须给另一个,由调用方保证)。 */
229
+ export function larkUpdateEvent(cli, eventId, patch) {
230
+ const args = ['calendar', '+update', '--calendar-id', LARK_CALENDAR_ID, '--event-id', eventId];
231
+ if (patch.start !== undefined && patch.end !== undefined)
232
+ args.push('--start', patch.start, '--end', patch.end);
233
+ if (patch.summary !== undefined)
234
+ args.push('--summary', patch.summary);
235
+ if (patch.description !== undefined)
236
+ args.push('--description', patch.description);
237
+ const j = mustJson(cli, args, '更新');
238
+ const data = (j.data || {});
239
+ const desc = str(data.description) || patch.description || '';
240
+ return {
241
+ eventId,
242
+ summary: str(data.summary) || patch.summary || '',
243
+ start: str(data.start_time?.datetime) || patch.start || '',
244
+ end: str(data.end_time?.datetime) || patch.end || '',
245
+ description: desc,
246
+ owned: isOwnedDescription(desc),
247
+ };
248
+ }
249
+ /** 删远端对象:失败即 throw(同槽清理与孤儿清理都靠它,不许静默)。 */
250
+ export function larkDeleteEvent(cli, eventId, calendarId = LARK_CALENDAR_ID) {
251
+ const r = runLark(cli, ['calendar', 'events', 'delete', '--calendar-id', calendarId, '--event-id', eventId], LARK_TIMEOUT_LONG_MS);
252
+ if (!r.ok)
253
+ throw new ScheduleFetchError('LARK_BAD_RESPONSE', '飞书删除失败:' + eventId + ' ' + r.stderr.slice(0, 200));
140
254
  }
141
255
  //# sourceMappingURL=feishu.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"feishu.js","sourceRoot":"","sources":["../../src/fetch/feishu.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"feishu.js","sourceRoot":"","sources":["../../src/fetch/feishu.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  export { ScheduleFetchError, SchedulePolicyError } from './errors.js';
2
- export { DB_FILENAME, resolveDbDir, resolveDbPath, assertWritablePath } from './paths.js';
3
- export { SCHEMA_VERSION, openScheduleDb, closeScheduleDb, addRecord, amendRecord, getRecordById, listRecordsByDate, listRecordsRange, getLastRecord, getStatus, addSummary, getDailySummary, getSummariesRange, listPlanEvents, getPlanEventsRange, getPlanEvent, searchPlanEvent, ensurePlanEvent, upsertPlanEvents, updatePlanEvent, deactivatePlanEvent, setFeishuEventId, } from './db.js';
2
+ export { DEFAULT_DB_FILENAME, dbFilename, resolveDbDir, resolveDbPath } from './paths.js';
3
+ export { SCHEMA_VERSION, openScheduleDb, closeScheduleDb, addRecord, amendRecord, getRecordById, listRecordsByDate, listRecordsRange, getLastRecord, getStatus, addSummary, getDailySummary, getSummariesRange, listPlanEvents, getPlanEventsRange, getPlanEvent, getPlanTimestamps, searchPlanEvent, ensurePlanEvent, upsertPlanEvents, updatePlanEvent, deactivatePlanEvent, setFeishuEventId, } from './db.js';
4
4
  export type { ScheduleDb, ScheduleRecord, DailySummary, PlanEvent } from './db.js';
5
- export { LARK_TIMEOUT_SHORT_MS, LARK_TIMEOUT_NORMAL_MS, LARK_TIMEOUT_LONG_MS, LARK_CALENDAR_SCOPE, findLarkCli, runLark, larkVersion, authOpenId, checkCalendar, larkReady, searchFeishuEvents, createFeishuEvent, updateFeishuEvent, deleteFeishuEvent, } from './feishu.js';
6
- export type { LarkRunOk, LarkRunDenied, LarkReady, FeishuEvent } from './feishu.js';
5
+ export { LARK_TIMEOUT_SHORT_MS, LARK_TIMEOUT_NORMAL_MS, LARK_TIMEOUT_LONG_MS, LARK_CALENDAR_SCOPE, LARK_CALENDAR_ID, FEISHU_OWNER_MARK, FEISHU_SENTINEL_MARK, findLarkCli, runLark, larkVersion, authOpenId, checkCalendar, larkReady, composeFeishuDescription, isOwnedDescription, larkAgenda, larkSearchEvents, larkGetEvent, larkCreateEvent, larkUpdateEvent, larkDeleteEvent, } from './feishu.js';
6
+ export type { LarkRunOk, LarkRunDenied, LarkReady, LarkEvent } from './feishu.js';
7
7
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/fetch/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AACtE,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAC1F,OAAO,EACL,cAAc,EAAE,cAAc,EAAE,eAAe,EAC/C,SAAS,EAAE,WAAW,EAAE,aAAa,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,aAAa,EAAE,SAAS,EACpG,UAAU,EAAE,eAAe,EAAE,iBAAiB,EAC9C,cAAc,EAAE,kBAAkB,EAAE,YAAY,EAAE,eAAe,EACjE,eAAe,EAAE,gBAAgB,EAAE,eAAe,EAAE,mBAAmB,EAAE,gBAAgB,GAC1F,MAAM,SAAS,CAAC;AACjB,YAAY,EAAE,UAAU,EAAE,cAAc,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACnF,OAAO,EACL,qBAAqB,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,mBAAmB,EACxF,WAAW,EAAE,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,aAAa,EAAE,SAAS,EACvE,kBAAkB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,GAC5E,MAAM,aAAa,CAAC;AACrB,YAAY,EAAE,SAAS,EAAE,aAAa,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/fetch/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AACtE,OAAO,EAAE,mBAAmB,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC1F,OAAO,EACL,cAAc,EAAE,cAAc,EAAE,eAAe,EAC/C,SAAS,EAAE,WAAW,EAAE,aAAa,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,aAAa,EAAE,SAAS,EACpG,UAAU,EAAE,eAAe,EAAE,iBAAiB,EAC9C,cAAc,EAAE,kBAAkB,EAAE,YAAY,EAAE,iBAAiB,EAAE,eAAe,EACpF,eAAe,EAAE,gBAAgB,EAAE,eAAe,EAAE,mBAAmB,EAAE,gBAAgB,GAC1F,MAAM,SAAS,CAAC;AACjB,YAAY,EAAE,UAAU,EAAE,cAAc,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACnF,OAAO,EACL,qBAAqB,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,mBAAmB,EACxF,gBAAgB,EAAE,iBAAiB,EAAE,oBAAoB,EACzD,WAAW,EAAE,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,aAAa,EAAE,SAAS,EACvE,wBAAwB,EAAE,kBAAkB,EAC5C,UAAU,EAAE,gBAAgB,EAAE,YAAY,EAAE,eAAe,EAAE,eAAe,EAAE,eAAe,GAC9F,MAAM,aAAa,CAAC;AACrB,YAAY,EAAE,SAAS,EAAE,aAAa,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC"}
@@ -1,5 +1,5 @@
1
1
  export { ScheduleFetchError, SchedulePolicyError } from './errors.js';
2
- export { DB_FILENAME, resolveDbDir, resolveDbPath, assertWritablePath } from './paths.js';
3
- export { SCHEMA_VERSION, openScheduleDb, closeScheduleDb, addRecord, amendRecord, getRecordById, listRecordsByDate, listRecordsRange, getLastRecord, getStatus, addSummary, getDailySummary, getSummariesRange, listPlanEvents, getPlanEventsRange, getPlanEvent, searchPlanEvent, ensurePlanEvent, upsertPlanEvents, updatePlanEvent, deactivatePlanEvent, setFeishuEventId, } from './db.js';
4
- export { LARK_TIMEOUT_SHORT_MS, LARK_TIMEOUT_NORMAL_MS, LARK_TIMEOUT_LONG_MS, LARK_CALENDAR_SCOPE, findLarkCli, runLark, larkVersion, authOpenId, checkCalendar, larkReady, searchFeishuEvents, createFeishuEvent, updateFeishuEvent, deleteFeishuEvent, } from './feishu.js';
2
+ export { DEFAULT_DB_FILENAME, dbFilename, resolveDbDir, resolveDbPath } from './paths.js';
3
+ export { SCHEMA_VERSION, openScheduleDb, closeScheduleDb, addRecord, amendRecord, getRecordById, listRecordsByDate, listRecordsRange, getLastRecord, getStatus, addSummary, getDailySummary, getSummariesRange, listPlanEvents, getPlanEventsRange, getPlanEvent, getPlanTimestamps, searchPlanEvent, ensurePlanEvent, upsertPlanEvents, updatePlanEvent, deactivatePlanEvent, setFeishuEventId, } from './db.js';
4
+ export { LARK_TIMEOUT_SHORT_MS, LARK_TIMEOUT_NORMAL_MS, LARK_TIMEOUT_LONG_MS, LARK_CALENDAR_SCOPE, LARK_CALENDAR_ID, FEISHU_OWNER_MARK, FEISHU_SENTINEL_MARK, findLarkCli, runLark, larkVersion, authOpenId, checkCalendar, larkReady, composeFeishuDescription, isOwnedDescription, larkAgenda, larkSearchEvents, larkGetEvent, larkCreateEvent, larkUpdateEvent, larkDeleteEvent, } from './feishu.js';
5
5
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/fetch/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AACtE,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAC1F,OAAO,EACL,cAAc,EAAE,cAAc,EAAE,eAAe,EAC/C,SAAS,EAAE,WAAW,EAAE,aAAa,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,aAAa,EAAE,SAAS,EACpG,UAAU,EAAE,eAAe,EAAE,iBAAiB,EAC9C,cAAc,EAAE,kBAAkB,EAAE,YAAY,EAAE,eAAe,EACjE,eAAe,EAAE,gBAAgB,EAAE,eAAe,EAAE,mBAAmB,EAAE,gBAAgB,GAC1F,MAAM,SAAS,CAAC;AAEjB,OAAO,EACL,qBAAqB,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,mBAAmB,EACxF,WAAW,EAAE,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,aAAa,EAAE,SAAS,EACvE,kBAAkB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,GAC5E,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/fetch/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AACtE,OAAO,EAAE,mBAAmB,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC1F,OAAO,EACL,cAAc,EAAE,cAAc,EAAE,eAAe,EAC/C,SAAS,EAAE,WAAW,EAAE,aAAa,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,aAAa,EAAE,SAAS,EACpG,UAAU,EAAE,eAAe,EAAE,iBAAiB,EAC9C,cAAc,EAAE,kBAAkB,EAAE,YAAY,EAAE,iBAAiB,EAAE,eAAe,EACpF,eAAe,EAAE,gBAAgB,EAAE,eAAe,EAAE,mBAAmB,EAAE,gBAAgB,GAC1F,MAAM,SAAS,CAAC;AAEjB,OAAO,EACL,qBAAqB,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,mBAAmB,EACxF,gBAAgB,EAAE,iBAAiB,EAAE,oBAAoB,EACzD,WAAW,EAAE,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,aAAa,EAAE,SAAS,EACvE,wBAAwB,EAAE,kBAAkB,EAC5C,UAAU,EAAE,gBAAgB,EAAE,YAAY,EAAE,eAAe,EAAE,eAAe,EAAE,eAAe,GAC9F,MAAM,aAAa,CAAC"}
@@ -1,6 +1,8 @@
1
- export declare const DB_FILENAME = "schedule_data.db";
1
+ /** 库文件名的默认值:=改造前的代码常量 `DB_FILENAME`(配置项 `db.name` 空串即用它)。 */
2
+ export declare const DEFAULT_DB_FILENAME = "schedule_data.db";
3
+ /** 库文件名:配置 `db.name`,空串=默认(`schedule_data.db`)。 */
4
+ export declare function dbFilename(): string;
5
+ /** 库目录:配置 `db.dir`,空串=数据目录(`~/.ilife/data/`,`ILIFE_CONFIG_DIR` 可整体接管)。 */
2
6
  export declare function resolveDbDir(): string;
3
7
  export declare function resolveDbPath(filename?: string, dir?: string): string;
4
- /** 测试隔离守卫:非 tmp 路径写库须 SCHEDULE_FORCE_PROD=1(卡路里哨兵语义的作息版)。 */
5
- export declare function assertWritablePath(dbPath: string): void;
6
8
  //# sourceMappingURL=paths.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../../src/fetch/paths.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,WAAW,qBAAqB,CAAC;AAE9C,wBAAgB,YAAY,IAAI,MAAM,CASrC;AAED,wBAAgB,aAAa,CAAC,QAAQ,SAAc,EAAE,GAAG,SAAiB,GAAG,MAAM,CAGlF;AAED,6DAA6D;AAC7D,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAYvD"}
1
+ {"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../../src/fetch/paths.ts"],"names":[],"mappings":"AAUA,6DAA6D;AAC7D,eAAO,MAAM,mBAAmB,qBAAqB,CAAC;AAEtD,mDAAmD;AACnD,wBAAgB,UAAU,IAAI,MAAM,CAGnC;AAED,0EAA0E;AAC1E,wBAAgB,YAAY,IAAI,MAAM,CAGrC;AAED,wBAAgB,aAAa,CAAC,QAAQ,SAAe,EAAE,GAAG,SAAiB,GAAG,MAAM,CAGnF"}
@@ -1,31 +1,26 @@
1
- // DB 路径解析与隔离守卫:SKILLS_DB_PATH 必设,无默认值(铁律缺失阻断)。
2
- // 老家 schedule_db.py Q6 fallback 链(D:/.db 等)TS 线有意不继承:拒绝隐式写生产。
1
+ // 库路径解析:**配置文件的唯一真相**(#695;口径见「配置的存与生效口径裁定」#675 的解决评论)。
2
+ // 改造前这里读 `SKILLS_DB_PATH`(无默认值、缺失即抛),并按 `SCHEDULE_FORCE_PROD=1` 守「非 tmp 不许写库」;
3
+ // #695 按用户裁决把两个环境变量**一并删掉**:路径改从 `~/.ilife/schedule.yaml` 取,写库边界改由
4
+ // 「测试基座强制 `ILIFE_CONFIG_DIR`」(`base-link-core` 的 `CONFIG_TEST_ISOLATION_MISSING`)承担——
5
+ // 把「忘了配」从静默写真实库变成响亮失败。
6
+ // 老家 schedule_db.py Q6 fallback 链(D:/.db 等)TS 线仍有意不继承:拒绝隐式写生产。
3
7
  import { mkdirSync } from 'node:fs';
4
- import { tmpdir } from 'node:os';
5
- import { join, resolve } from 'node:path';
6
- export const DB_FILENAME = 'schedule_data.db';
8
+ import { join } from 'node:path';
9
+ import { loadScheduleConfig } from '../config.js';
10
+ /** 库文件名的默认值:=改造前的代码常量 `DB_FILENAME`(配置项 `db.name` 空串即用它)。 */
11
+ export const DEFAULT_DB_FILENAME = 'schedule_data.db';
12
+ /** 库文件名:配置 `db.name`,空串=默认(`schedule_data.db`)。 */
13
+ export function dbFilename() {
14
+ const name = loadScheduleConfig().values.db.name;
15
+ return name === '' ? DEFAULT_DB_FILENAME : name;
16
+ }
17
+ /** 库目录:配置 `db.dir`,空串=数据目录(`~/.ilife/data/`,`ILIFE_CONFIG_DIR` 可整体接管)。 */
7
18
  export function resolveDbDir() {
8
- const env = process.env.SKILLS_DB_PATH;
9
- if (!env) {
10
- throw new Error('[skill-schedule] SKILLS_DB_PATH 未设置:拒绝隐式落盘。' +
11
- '生产请设置 SKILLS_DB_PATH;测试请传显式 tmp 路径。');
12
- }
13
- return env;
19
+ const dir = loadScheduleConfig().values.db.dir;
20
+ return dir === '' ? loadScheduleConfig().dataDir : dir;
14
21
  }
15
- export function resolveDbPath(filename = DB_FILENAME, dir = resolveDbDir()) {
22
+ export function resolveDbPath(filename = dbFilename(), dir = resolveDbDir()) {
16
23
  mkdirSync(dir, { recursive: true });
17
24
  return join(dir, filename);
18
25
  }
19
- /** 测试隔离守卫:非 tmp 路径写库须 SCHEDULE_FORCE_PROD=1(卡路里哨兵语义的作息版)。 */
20
- export function assertWritablePath(dbPath) {
21
- const forceProd = process.env.SCHEDULE_FORCE_PROD === '1';
22
- const underTmp = resolve(dbPath).startsWith(resolve(tmpdir()));
23
- if (!underTmp && !forceProd) {
24
- throw new Error('[skill-schedule] 拒绝写入非 tmp 路径 ' + dbPath + ':测试隔离守卫。' +
25
- '如确需生产写,请设置 SCHEDULE_FORCE_PROD=1(opt-in 可见)。');
26
- }
27
- if (!underTmp && forceProd) {
28
- console.error('[skill-schedule] SCHEDULE_FORCE_PROD=1: 写入 ' + dbPath);
29
- }
30
- }
31
26
  //# sourceMappingURL=paths.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"paths.js","sourceRoot":"","sources":["../../src/fetch/paths.ts"],"names":[],"mappings":"AAAA,+CAA+C;AAC/C,8DAA8D;AAC9D,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACpC,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAE1C,MAAM,CAAC,MAAM,WAAW,GAAG,kBAAkB,CAAC;AAE9C,MAAM,UAAU,YAAY;IAC1B,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC;IACvC,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,MAAM,IAAI,KAAK,CACb,6CAA6C;YAC3C,qCAAqC,CACxC,CAAC;IACJ,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,QAAQ,GAAG,WAAW,EAAE,GAAG,GAAG,YAAY,EAAE;IACxE,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACpC,OAAO,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;AAC7B,CAAC;AAED,6DAA6D;AAC7D,MAAM,UAAU,kBAAkB,CAAC,MAAc;IAC/C,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,mBAAmB,KAAK,GAAG,CAAC;IAC1D,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IAC/D,IAAI,CAAC,QAAQ,IAAI,CAAC,SAAS,EAAE,CAAC;QAC5B,MAAM,IAAI,KAAK,CACb,gCAAgC,GAAG,MAAM,GAAG,UAAU;YACpD,8CAA8C,CACjD,CAAC;IACJ,CAAC;IACD,IAAI,CAAC,QAAQ,IAAI,SAAS,EAAE,CAAC;QAC3B,OAAO,CAAC,KAAK,CAAC,6CAA6C,GAAG,MAAM,CAAC,CAAC;IACxE,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"paths.js","sourceRoot":"","sources":["../../src/fetch/paths.ts"],"names":[],"mappings":"AAAA,wDAAwD;AACxD,+EAA+E;AAC/E,mEAAmE;AACnE,sFAAsF;AACtF,uBAAuB;AACvB,+DAA+D;AAC/D,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACpC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAElD,6DAA6D;AAC7D,MAAM,CAAC,MAAM,mBAAmB,GAAG,kBAAkB,CAAC;AAEtD,mDAAmD;AACnD,MAAM,UAAU,UAAU;IACxB,MAAM,IAAI,GAAG,kBAAkB,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC;IACjD,OAAO,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,IAAI,CAAC;AAClD,CAAC;AAED,0EAA0E;AAC1E,MAAM,UAAU,YAAY;IAC1B,MAAM,GAAG,GAAG,kBAAkB,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC;IAC/C,OAAO,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC,kBAAkB,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;AACzD,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,QAAQ,GAAG,UAAU,EAAE,EAAE,GAAG,GAAG,YAAY,EAAE;IACzE,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACpC,OAAO,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;AAC7B,CAAC"}
@@ -0,0 +1,41 @@
1
+ /** 报告里的三档判据(与面板侧镜像同值)。 */
2
+ export type HealthStatus = 'red' | 'yellow' | 'green';
3
+ export interface HealthItem {
4
+ readonly id: string;
5
+ readonly title: string;
6
+ readonly status: HealthStatus;
7
+ readonly message: string;
8
+ readonly action: string;
9
+ readonly source?: string;
10
+ }
11
+ export interface ScheduleHealthReport {
12
+ readonly skill: string;
13
+ readonly configPath: string;
14
+ readonly dataDir: string;
15
+ readonly items: readonly HealthItem[];
16
+ }
17
+ /** 库表数门槛:`src/fetch/db.ts` 三张建表(`schedule_records`/`daily_summary`/`schedule_plans`)齐了算正常。 */
18
+ export declare const DB_TABLE_THRESHOLD: 3;
19
+ /** 只读解析结果:文件不在/读得出取值与「哪些键真在文件里」/读不出来(报文带行号与文件名)。 */
20
+ export type ConfigRead = {
21
+ readonly kind: 'missing';
22
+ } | {
23
+ readonly kind: 'ok';
24
+ readonly values: Record<string, Record<string, unknown>>;
25
+ readonly present: ReadonlySet<string>;
26
+ } | {
27
+ readonly kind: 'bad';
28
+ readonly message: string;
29
+ };
30
+ /**
31
+ * 只读解析那份配置文件(与 `base-link-core` 的受限子集同一套校验,口径逐条对齐):
32
+ * 剥 BOM、去 `\r`、空行与整行注释跳过、缩进只许 2 个空格且不许制表符、不支持列表、
33
+ * 一行须是「键: 值」、不许重复定义、顶层键冒号后没值即开一个组。
34
+ *
35
+ * 与 `loadConfig()` 的差别只有一处、也正是本件要的那一处:**文件不在时不落默认件**。
36
+ * 取值语义与它一致:文件里缺的项按默认值补。
37
+ */
38
+ export declare function readScheduleConfigReadOnly(): ConfigRead;
39
+ /** 跑一次体检,返回整份报告。**只读**:任何一处都不落盘(只有写探针那一个文件,且当场删掉)。 */
40
+ export declare function buildScheduleHealthReport(): ScheduleHealthReport;
41
+ //# sourceMappingURL=health.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"health.d.ts","sourceRoot":"","sources":["../src/health.ts"],"names":[],"mappings":"AAgCA,0BAA0B;AAC1B,MAAM,MAAM,YAAY,GAAG,KAAK,GAAG,QAAQ,GAAG,OAAO,CAAC;AAEtD,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC;IAC9B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,KAAK,EAAE,SAAS,UAAU,EAAE,CAAC;CACvC;AAED,8FAA8F;AAC9F,eAAO,MAAM,kBAAkB,EAAG,CAAU,CAAC;AAkB7C,oDAAoD;AACpD,MAAM,MAAM,UAAU,GAClB;IAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAA;CAAE,GAC5B;IAAE,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC,MAAM,CAAC,CAAA;CAAE,GACxH;IAAE,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAEvD;;;;;;;GAOG;AACH,wBAAgB,0BAA0B,IAAI,UAAU,CAYvD;AAwUD,sDAAsD;AACtD,wBAAgB,yBAAyB,IAAI,oBAAoB,CA4KhE"}