skill-memo-ilife 0.3.2 → 0.3.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/SKILL.md +33 -34
- package/dist/checkin/index.d.ts +8 -0
- package/dist/checkin/index.d.ts.map +1 -0
- package/dist/checkin/index.js +8 -0
- package/dist/checkin/index.js.map +1 -0
- package/dist/checkin/receipt.d.ts +17 -0
- package/dist/checkin/receipt.d.ts.map +1 -0
- package/dist/checkin/receipt.js +63 -0
- package/dist/checkin/receipt.js.map +1 -0
- package/dist/checkin/routes.d.ts +4 -0
- package/dist/checkin/routes.d.ts.map +1 -1
- package/dist/checkin/routes.js +2 -2
- package/dist/checkin/routes.js.map +1 -1
- package/dist/cli/cmd_read.js +19 -53
- package/dist/cli/cmd_read.js.map +1 -1
- package/dist/cli/config.d.ts +4 -4
- package/dist/cli/config.d.ts.map +1 -1
- package/dist/cli/config.js +25 -4
- package/dist/cli/config.js.map +1 -1
- package/dist/cli/health/items.js +2 -2
- package/dist/cli/health/items.js.map +1 -1
- package/dist/cli/health.d.ts.map +1 -1
- package/dist/cli/health.js +3 -2
- package/dist/cli/health.js.map +1 -1
- package/dist/cli/keys.d.ts +6 -3
- package/dist/cli/keys.d.ts.map +1 -1
- package/dist/cli/keys.js +2 -5
- package/dist/cli/keys.js.map +1 -1
- package/dist/cli/registry.d.ts +1 -1
- package/dist/{fetch/db.d.ts → db/readonly.d.ts} +1 -1
- package/dist/db/readonly.d.ts.map +1 -0
- package/dist/{fetch/db.js → db/readonly.js} +5 -5
- package/dist/db/readonly.js.map +1 -0
- package/dist/help/lookup.d.ts +18 -1
- package/dist/help/lookup.d.ts.map +1 -1
- package/dist/help/lookup.js +53 -37
- package/dist/help/lookup.js.map +1 -1
- package/dist/help/sceneData.js +1 -1
- package/dist/help/scenes/checkin.d.ts +1 -1
- package/dist/help/scenes/checkin.js +1 -1
- package/dist/help/scenes/init.d.ts +1 -1
- package/dist/help/scenes/init.js +1 -1
- package/dist/help/scenes/memo.d.ts +1 -1
- package/dist/help/scenes/memo.js +1 -1
- package/dist/help/scenes/mood.d.ts +1 -1
- package/dist/help/scenes/mood.js +1 -1
- package/dist/help/scenes/remind.d.ts +1 -1
- package/dist/help/scenes/remind.js +2 -2
- package/dist/help/scenes/remind.js.map +1 -1
- package/dist/help/scenes/search.d.ts +1 -1
- package/dist/help/scenes/search.js +1 -1
- package/dist/help/scenes/sync.d.ts +1 -1
- package/dist/help/scenes/sync.js +1 -1
- package/dist/help/scenes/wish.d.ts +1 -1
- package/dist/help/scenes/wish.js +1 -1
- package/dist/index.d.ts +11 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +11 -5
- package/dist/index.js.map +1 -1
- package/dist/init/diagnosis.d.ts +2 -1
- package/dist/init/diagnosis.d.ts.map +1 -1
- package/dist/init/diagnosis.js.map +1 -1
- package/dist/init/page.d.ts +3 -2
- package/dist/init/page.d.ts.map +1 -1
- package/dist/init/page.js +20 -10
- package/dist/init/page.js.map +1 -1
- package/dist/init/routes.d.ts +4 -1
- package/dist/init/routes.d.ts.map +1 -1
- package/dist/init/routes.js +14 -0
- package/dist/init/routes.js.map +1 -1
- package/dist/init/run.d.ts.map +1 -1
- package/dist/init/run.js +7 -1
- package/dist/init/run.js.map +1 -1
- package/dist/{fetch → memo}/batch.d.ts +6 -2
- package/dist/memo/batch.d.ts.map +1 -0
- package/dist/{fetch → memo}/batch.js +8 -4
- package/dist/memo/batch.js.map +1 -0
- package/dist/memo/category.d.ts.map +1 -0
- package/dist/{policy → memo}/category.js +1 -1
- package/dist/memo/category.js.map +1 -0
- package/dist/memo/commands.d.ts +3 -12
- package/dist/memo/commands.d.ts.map +1 -1
- package/dist/memo/commands.js +1 -9
- package/dist/memo/commands.js.map +1 -1
- package/dist/{policy → memo}/crud.d.ts +1 -1
- package/dist/memo/crud.d.ts.map +1 -0
- package/dist/{policy → memo}/crud.js +22 -7
- package/dist/memo/crud.js.map +1 -0
- package/dist/memo/index.d.ts +4 -2
- package/dist/memo/index.d.ts.map +1 -1
- package/dist/memo/index.js +4 -2
- package/dist/memo/index.js.map +1 -1
- package/dist/memo/media.d.ts.map +1 -0
- package/dist/{policy → memo}/media.js +2 -2
- package/dist/memo/media.js.map +1 -0
- package/dist/memo/receipt.d.ts +35 -0
- package/dist/memo/receipt.d.ts.map +1 -0
- package/dist/memo/receipt.js +62 -0
- package/dist/memo/receipt.js.map +1 -0
- package/dist/memo/receiptPage.d.ts +44 -0
- package/dist/memo/receiptPage.d.ts.map +1 -0
- package/dist/memo/receiptPage.js +50 -0
- package/dist/memo/receiptPage.js.map +1 -0
- package/dist/memo/routes.d.ts.map +1 -1
- package/dist/memo/routes.js +32 -0
- package/dist/memo/routes.js.map +1 -1
- package/dist/memo/run.d.ts +9 -8
- package/dist/memo/run.d.ts.map +1 -1
- package/dist/memo/run.js +140 -97
- package/dist/memo/run.js.map +1 -1
- package/dist/mood/routes.d.ts.map +1 -1
- package/dist/mood/routes.js +36 -0
- package/dist/mood/routes.js.map +1 -1
- package/dist/remind/index.d.ts +5 -2
- package/dist/remind/index.d.ts.map +1 -1
- package/dist/remind/index.js +5 -2
- package/dist/remind/index.js.map +1 -1
- package/dist/{policy/reminder.d.ts → remind/policy.d.ts} +1 -1
- package/dist/remind/policy.d.ts.map +1 -0
- package/dist/{policy/reminder.js → remind/policy.js} +2 -2
- package/dist/remind/policy.js.map +1 -0
- package/dist/remind/routes.d.ts +1 -2
- package/dist/remind/routes.d.ts.map +1 -1
- package/dist/remind/routes.js +32 -2
- package/dist/remind/routes.js.map +1 -1
- package/dist/remind/run.d.ts +1 -1
- package/dist/remind/run.d.ts.map +1 -1
- package/dist/remind/run.js +112 -7
- package/dist/remind/run.js.map +1 -1
- package/dist/{fetch/reminders.d.ts → remind/store.d.ts} +2 -2
- package/dist/remind/store.d.ts.map +1 -0
- package/dist/{fetch/reminders.js → remind/store.js} +3 -3
- package/dist/remind/store.js.map +1 -0
- package/dist/render/envelope.d.ts.map +1 -1
- package/dist/render/envelope.js +3 -2
- package/dist/render/envelope.js.map +1 -1
- package/dist/render/html.js +1 -1
- package/dist/render/html.js.map +1 -1
- package/dist/render/index.d.ts +4 -1
- package/dist/render/index.d.ts.map +1 -1
- package/dist/render/index.js +5 -3
- package/dist/render/index.js.map +1 -1
- package/dist/render/listPage.d.ts +34 -0
- package/dist/render/listPage.d.ts.map +1 -0
- package/dist/render/listPage.js +39 -0
- package/dist/render/listPage.js.map +1 -0
- package/dist/render/memoPageAssets.d.ts +32 -0
- package/dist/render/memoPageAssets.d.ts.map +1 -0
- package/dist/render/memoPageAssets.js +320 -0
- package/dist/render/memoPageAssets.js.map +1 -0
- package/dist/render/pageAssets.js +3 -3
- package/dist/render/pageAssets.js.map +1 -1
- package/dist/render/pages.d.ts +9 -2
- package/dist/render/pages.d.ts.map +1 -1
- package/dist/render/pages.js +8 -16
- package/dist/render/pages.js.map +1 -1
- package/dist/render/receipt.d.ts +12 -3
- package/dist/render/receipt.d.ts.map +1 -1
- package/dist/render/receipt.js +55 -10
- package/dist/render/receipt.js.map +1 -1
- package/dist/search/routes.d.ts.map +1 -1
- package/dist/search/routes.js +1 -0
- package/dist/search/routes.js.map +1 -1
- package/dist/search/run.d.ts +11 -3
- package/dist/search/run.d.ts.map +1 -1
- package/dist/search/run.js +130 -11
- package/dist/search/run.js.map +1 -1
- package/dist/shared/commandSpec.d.ts +4 -5
- package/dist/shared/commandSpec.d.ts.map +1 -1
- package/dist/shared/errors.d.ts.map +1 -0
- package/dist/shared/errors.js.map +1 -0
- package/dist/{fetch → shared}/paths.d.ts +1 -1
- package/dist/shared/paths.d.ts.map +1 -0
- package/dist/{fetch → shared}/paths.js +3 -3
- package/dist/shared/paths.js.map +1 -0
- package/dist/shared/validators.d.ts +3 -0
- package/dist/shared/validators.d.ts.map +1 -0
- package/dist/shared/validators.js +15 -0
- package/dist/shared/validators.js.map +1 -0
- package/dist/sync/auth.d.ts.map +1 -0
- package/dist/{fetch → sync}/auth.js +3 -3
- package/dist/sync/auth.js.map +1 -0
- package/dist/sync/commands.d.ts.map +1 -1
- package/dist/sync/commands.js.map +1 -1
- package/dist/sync/feishu.d.ts.map +1 -0
- package/dist/{fetch → sync}/feishu.js +9 -9
- package/dist/sync/feishu.js.map +1 -0
- package/dist/sync/index.d.ts +5 -2
- package/dist/sync/index.d.ts.map +1 -1
- package/dist/sync/index.js +4 -2
- package/dist/sync/index.js.map +1 -1
- package/dist/sync/run.d.ts +1 -1
- package/dist/sync/run.d.ts.map +1 -1
- package/dist/sync/run.js +2 -1
- package/dist/sync/run.js.map +1 -1
- package/dist/{fetch → sync}/sentinel.d.ts +1 -1
- package/dist/sync/sentinel.d.ts.map +1 -0
- package/dist/{fetch → sync}/sentinel.js +1 -2
- package/dist/sync/sentinel.js.map +1 -0
- package/dist/triggers/routes.generated.d.ts +1 -1
- package/dist/triggers/routes.generated.d.ts.map +1 -1
- package/dist/triggers/routes.generated.js +19 -6
- package/dist/triggers/routes.generated.js.map +1 -1
- package/dist/triggers/routing.d.ts +7 -0
- package/dist/triggers/routing.d.ts.map +1 -0
- package/dist/triggers/routing.js +35 -0
- package/dist/triggers/routing.js.map +1 -0
- package/dist/wish/complete.d.ts +1 -1
- package/dist/wish/complete.d.ts.map +1 -1
- package/dist/wish/complete.js +1 -1
- package/dist/wish/complete.js.map +1 -1
- package/dist/wish/due.d.ts +1 -1
- package/dist/wish/due.d.ts.map +1 -1
- package/dist/wish/due.js +1 -1
- package/dist/wish/due.js.map +1 -1
- package/dist/wish/ensure.d.ts +2 -2
- package/dist/wish/ensure.d.ts.map +1 -1
- package/dist/wish/ensure.js +2 -2
- package/dist/wish/ensure.js.map +1 -1
- package/dist/wish/gate.d.ts +1 -1
- package/dist/wish/gate.d.ts.map +1 -1
- package/dist/wish/gate.js +1 -1
- package/dist/wish/gate.js.map +1 -1
- package/dist/wish/index.d.ts +4 -0
- package/dist/wish/index.d.ts.map +1 -1
- package/dist/wish/index.js +7 -0
- package/dist/wish/index.js.map +1 -1
- package/dist/{policy/wish.d.ts → wish/policy.d.ts} +1 -1
- package/dist/wish/policy.d.ts.map +1 -0
- package/dist/{policy/wish.js → wish/policy.js} +3 -3
- package/dist/wish/policy.js.map +1 -0
- package/dist/wish/receipt.d.ts +45 -0
- package/dist/wish/receipt.d.ts.map +1 -0
- package/dist/wish/receipt.js +68 -0
- package/dist/wish/receipt.js.map +1 -0
- package/dist/wish/reconcile.d.ts +1 -1
- package/dist/wish/reconcile.d.ts.map +1 -1
- package/dist/wish/reconcile.js +2 -2
- package/dist/wish/reconcile.js.map +1 -1
- package/dist/wish/routes.d.ts.map +1 -1
- package/dist/wish/routes.js +11 -1
- package/dist/wish/routes.js.map +1 -1
- package/dist/wish/run.d.ts +11 -3
- package/dist/wish/run.d.ts.map +1 -1
- package/dist/wish/run.js +75 -7
- package/dist/wish/run.js.map +1 -1
- package/dist/wish/taskRemove.js +2 -2
- package/dist/wish/taskRemove.js.map +1 -1
- package/dist/wish/taskSync.d.ts +1 -1
- package/dist/wish/taskSync.d.ts.map +1 -1
- package/dist/wish/taskSync.js +3 -3
- package/dist/wish/taskSync.js.map +1 -1
- package/dist/wish/taskWrite.d.ts.map +1 -0
- package/dist/{fetch → wish}/taskWrite.js +2 -2
- package/dist/wish/taskWrite.js.map +1 -0
- package/dist/wish/tasks.d.ts.map +1 -0
- package/dist/{fetch → wish}/tasks.js +2 -2
- package/dist/wish/tasks.js.map +1 -0
- package/dist/wish/wizards.d.ts +1 -1
- package/dist/wish/wizards.d.ts.map +1 -1
- package/dist/wish/wizards.js +1 -1
- package/dist/wish/wizards.js.map +1 -1
- package/package.json +4 -7
- package/templates/change_category.html +52 -28
- package/templates/init_report.html +15 -14
- package/templates/memo_query.html +59 -24
- package/templates/receipt.html +97 -27
- package/templates/sync_report.html +106 -98
- package/templates/wish_complete.html +48 -30
- package/templates/wish_plan.html +35 -20
- package/dist/fetch/auth.d.ts.map +0 -1
- package/dist/fetch/auth.js.map +0 -1
- package/dist/fetch/batch.d.ts.map +0 -1
- package/dist/fetch/batch.js.map +0 -1
- package/dist/fetch/db.d.ts.map +0 -1
- package/dist/fetch/db.js.map +0 -1
- package/dist/fetch/errors.d.ts.map +0 -1
- package/dist/fetch/errors.js.map +0 -1
- package/dist/fetch/feishu.d.ts.map +0 -1
- package/dist/fetch/feishu.js.map +0 -1
- package/dist/fetch/index.d.ts +0 -19
- package/dist/fetch/index.d.ts.map +0 -1
- package/dist/fetch/index.js +0 -13
- package/dist/fetch/index.js.map +0 -1
- package/dist/fetch/paths.d.ts.map +0 -1
- package/dist/fetch/paths.js.map +0 -1
- package/dist/fetch/reminders.d.ts.map +0 -1
- package/dist/fetch/reminders.js.map +0 -1
- package/dist/fetch/sentinel.d.ts.map +0 -1
- package/dist/fetch/sentinel.js.map +0 -1
- package/dist/fetch/taskWrite.d.ts.map +0 -1
- package/dist/fetch/taskWrite.js.map +0 -1
- package/dist/fetch/tasks.d.ts.map +0 -1
- package/dist/fetch/tasks.js.map +0 -1
- package/dist/policy/category.d.ts.map +0 -1
- package/dist/policy/category.js.map +0 -1
- package/dist/policy/crud.d.ts.map +0 -1
- package/dist/policy/crud.js.map +0 -1
- package/dist/policy/index.d.ts +0 -11
- package/dist/policy/index.d.ts.map +0 -1
- package/dist/policy/index.js +0 -8
- package/dist/policy/index.js.map +0 -1
- package/dist/policy/media.d.ts.map +0 -1
- package/dist/policy/media.js.map +0 -1
- package/dist/policy/reminder.d.ts.map +0 -1
- package/dist/policy/reminder.js.map +0 -1
- package/dist/policy/wakewords.d.ts +0 -14
- package/dist/policy/wakewords.d.ts.map +0 -1
- package/dist/policy/wakewords.js +0 -68
- package/dist/policy/wakewords.js.map +0 -1
- package/dist/policy/wish.d.ts.map +0 -1
- package/dist/policy/wish.js.map +0 -1
- /package/dist/{policy → memo}/category.d.ts +0 -0
- /package/dist/{policy → memo}/media.d.ts +0 -0
- /package/dist/{fetch → shared}/errors.d.ts +0 -0
- /package/dist/{fetch → shared}/errors.js +0 -0
- /package/dist/{fetch → sync}/auth.d.ts +0 -0
- /package/dist/{fetch → sync}/feishu.d.ts +0 -0
- /package/dist/{fetch → wish}/taskWrite.d.ts +0 -0
- /package/dist/{fetch → wish}/tasks.d.ts +0 -0
package/dist/render/receipt.js
CHANGED
|
@@ -13,8 +13,30 @@
|
|
|
13
13
|
*/
|
|
14
14
|
import { bookletFileStem } from '../help/booklet.js';
|
|
15
15
|
import { pageEnvelope, fillMemoPage } from './pages.js';
|
|
16
|
-
/** 场景 id →
|
|
17
|
-
|
|
16
|
+
/** 场景 id → 本族页。逐域**追加**,不改别人的行(写集互斥):
|
|
17
|
+
* mood 域三条 ← #831;remind 域两条 ← #828;wish 域五条 ← #829;memo 域六条 ← #826;
|
|
18
|
+
* checkin 域三条 ← #830(本族 19 格至此齐)。 */
|
|
19
|
+
export const RECEIPT_SCENES = [
|
|
20
|
+
'memo_add_mood',
|
|
21
|
+
'memo_delete_mood',
|
|
22
|
+
'memo_update_mood',
|
|
23
|
+
'memo_remind_with_note',
|
|
24
|
+
'memo_remind_existing',
|
|
25
|
+
'memo_add_wish',
|
|
26
|
+
'memo_update_wish',
|
|
27
|
+
'memo_delete_wish',
|
|
28
|
+
'memo_complete_wish',
|
|
29
|
+
'memo_wish_schedule',
|
|
30
|
+
'memo_add_basic',
|
|
31
|
+
'memo_update_basic',
|
|
32
|
+
'memo_delete_basic',
|
|
33
|
+
'memo_change_category_single',
|
|
34
|
+
'memo_change_subcategory',
|
|
35
|
+
'memo_batch_change_category',
|
|
36
|
+
'memo_add_checkin',
|
|
37
|
+
'memo_delete_checkin',
|
|
38
|
+
'memo_update_checkin',
|
|
39
|
+
];
|
|
18
40
|
/** 本地侧做了什么 → 人话(`WishReceipt['local']` 的六个取值,一处定义)。 */
|
|
19
41
|
const LOCAL_LABEL = {
|
|
20
42
|
created: '已新建',
|
|
@@ -34,16 +56,39 @@ const REMOTE_LABEL = {
|
|
|
34
56
|
failed: '飞书同步失败',
|
|
35
57
|
'not-applicable': '不适用(这条没有飞书任务)',
|
|
36
58
|
};
|
|
37
|
-
/**
|
|
59
|
+
/** 「对象」那一行的后半(#882):数字=记录号,加 `#`;字符串=域侧自述,原样上屏、不吃 `#`
|
|
60
|
+
* (不这么分,批量那一格会被拼成 `#1 条` —— `#` 后面跟的不是记录号)。 */
|
|
61
|
+
function objectRowTailOf(entityId) {
|
|
62
|
+
if (typeof entityId === 'number')
|
|
63
|
+
return ' #' + String(entityId);
|
|
64
|
+
return ' ' + entityId;
|
|
65
|
+
}
|
|
66
|
+
/** 三格里的**前三行**:对象(本地记录号/域侧自述)/本地侧/远端侧——屏上与数据面共用过一段,一处定义。
|
|
67
|
+
* 取值不认得的原样透出,不静默吞掉。 */
|
|
68
|
+
function receiptUserRows(r) {
|
|
69
|
+
return [
|
|
70
|
+
'对象:' + r.entityLabel + objectRowTailOf(r.entityId),
|
|
71
|
+
'本地侧:' + (LOCAL_LABEL[r.local] ?? r.local),
|
|
72
|
+
'远端侧:' + (REMOTE_LABEL[r.remote] ?? r.remote),
|
|
73
|
+
];
|
|
74
|
+
}
|
|
75
|
+
/** 数据面(#876):三格里的**第四行「远端标识」只进 `snapshot.sections`(页内载荷),不上屏**。
|
|
76
|
+
*
|
|
77
|
+
* 为什么屏上没有它:那一格装的是**远端平台的机器值**(`tk_done` 这类 guid),用户既认不出、
|
|
78
|
+
* 也拿它做不了任何事;而「飞书那边成了没有」这件事,`远端侧` 那一行已经用人话说全了
|
|
79
|
+
* (`已在飞书新建任务`/`已同步飞书`/`飞书同步失败`/`不适用(这条没有飞书任务)`)——
|
|
80
|
+
* 再印一串 guid 就是同一事实一页两遍,且两遍里有一遍是黑话。
|
|
81
|
+
* 用户真要用标识指代对象时,给的是**本地记录号**(`对象` 那一行的 `#N`),不是远端 guid。
|
|
82
|
+
*
|
|
83
|
+
* 收掉不等于丢掉:#657/#658 合成写契约要求的三格(本地侧/远端侧/远端标识)**仍逐格读得到** ——
|
|
84
|
+
* 它仍在下面这份载荷里,仍是命令出口回执 JSON 的 `local`/`remote`/`remoteId`
|
|
85
|
+
* (`docs/agents/合成写判据.md` §一判据 4 的「机器读在哪」逐字写的是**出口回执行**;
|
|
86
|
+
* 契约管的是那份 JSON,不是页面形状)。模板侧 `renderRows()` 按 heading「处理结果」把这整段滤掉,
|
|
87
|
+
* 故本段只作数据面,一个字都不上屏。 */
|
|
38
88
|
function receiptSection(r) {
|
|
39
89
|
return {
|
|
40
90
|
heading: '处理结果',
|
|
41
|
-
rows: [
|
|
42
|
-
'对象:' + r.entityLabel + ' #' + String(r.entityId),
|
|
43
|
-
'本地侧:' + (LOCAL_LABEL[r.local] ?? r.local),
|
|
44
|
-
'远端侧:' + (REMOTE_LABEL[r.remote] ?? r.remote),
|
|
45
|
-
'远端标识:' + (r.remoteId === null || r.remoteId === '' ? '无' : r.remoteId),
|
|
46
|
-
],
|
|
91
|
+
rows: [...receiptUserRows(r), '远端标识:' + (r.remoteId === null || r.remoteId === '' ? '无' : r.remoteId)],
|
|
47
92
|
};
|
|
48
93
|
}
|
|
49
94
|
/** 整页组装:槽位 → 信封(`pageEnvelope`)→ 模板填充(`fillMemoPage`)+ 文件名主体(册子唯一定义)。
|
|
@@ -64,7 +109,7 @@ export function buildReceiptPage(input) {
|
|
|
64
109
|
message: input.message,
|
|
65
110
|
category: input.badges.category,
|
|
66
111
|
sub: input.badges.sub ?? '',
|
|
67
|
-
rows:
|
|
112
|
+
rows: receiptUserRows(input.receipt),
|
|
68
113
|
retry_prompt: input.retryPrompt,
|
|
69
114
|
},
|
|
70
115
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"receipt.js","sourceRoot":"","sources":["../../src/render/receipt.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,YAAY,EAAuC,MAAM,YAAY,CAAC;AAE7F
|
|
1
|
+
{"version":3,"file":"receipt.js","sourceRoot":"","sources":["../../src/render/receipt.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"routes.d.ts","sourceRoot":"","sources":["../../src/search/routes.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAE1D,eAAO,MAAM,aAAa,EAAE,SAAS,SAAS,
|
|
1
|
+
{"version":3,"file":"routes.d.ts","sourceRoot":"","sources":["../../src/search/routes.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAE1D,eAAO,MAAM,aAAa,EAAE,SAAS,SAAS,EAuD7C,CAAC"}
|
package/dist/search/routes.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"routes.js","sourceRoot":"","sources":["../../src/search/routes.ts"],"names":[],"mappings":"AAUA,MAAM,CAAC,MAAM,aAAa,GAAyB;IACjD;QACE,KAAK,EAAE,CAAC;QACR,QAAQ,EAAE,KAAK;QACf,KAAK,EAAE,qBAAqB;QAC5B,GAAG,EAAE,aAAa;QAClB,GAAG,EAAE,mDAAmD;KACzD;IACD;QACE,KAAK,EAAE,CAAC;QACR,QAAQ,EAAE,KAAK;QACf,KAAK,EAAE,mBAAmB;QAC1B,GAAG,EAAE,aAAa;QAClB,GAAG,EAAE,2BAA2B;KACjC;IACD;QACE,KAAK,EAAE,CAAC;QACR,QAAQ,EAAE,KAAK;QACf,KAAK,EAAE,iBAAiB;QACxB,GAAG,EAAE,aAAa;QAClB,GAAG,EAAE,iDAAiD;QACtD,KAAK,EAAE,CAAC,IAAI,CAAC;KACd;IACD;QACE,KAAK,EAAE,CAAC;QACR,QAAQ,EAAE,QAAQ;QAClB,KAAK,EAAE,qBAAqB;QAC5B,GAAG,EAAE,aAAa;QAClB,GAAG,EAAE,kFAAkF;QACvF,KAAK,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC;KACxB;IACD;QACE,KAAK,EAAE,CAAC;QACR,QAAQ,EAAE,KAAK;QACf,KAAK,EAAE,qBAAqB;QAC5B,GAAG,EAAE,aAAa;QAClB,GAAG,EAAE,0DAA0D;QAC/D,MAAM,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE;KAC3B;IACD;QACE,KAAK,EAAE,CAAC;QACR,QAAQ,EAAE,KAAK;QACf,KAAK,EAAE,kBAAkB;QACzB,GAAG,EAAE,aAAa;QAClB,GAAG,EAAE,4DAA4D;QACjE,MAAM,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE;KAC7B;IACD;QACE,KAAK,EAAE,CAAC;QACR,QAAQ,EAAE,KAAK;QACf,KAAK,EAAE,kBAAkB;QACzB,GAAG,EAAE,WAAW;QAChB,GAAG,EAAE,yBAAyB;
|
|
1
|
+
{"version":3,"file":"routes.js","sourceRoot":"","sources":["../../src/search/routes.ts"],"names":[],"mappings":"AAUA,MAAM,CAAC,MAAM,aAAa,GAAyB;IACjD;QACE,KAAK,EAAE,CAAC;QACR,QAAQ,EAAE,KAAK;QACf,KAAK,EAAE,qBAAqB;QAC5B,GAAG,EAAE,aAAa;QAClB,GAAG,EAAE,mDAAmD;KACzD;IACD;QACE,KAAK,EAAE,CAAC;QACR,QAAQ,EAAE,KAAK;QACf,KAAK,EAAE,mBAAmB;QAC1B,GAAG,EAAE,aAAa;QAClB,GAAG,EAAE,2BAA2B;KACjC;IACD;QACE,KAAK,EAAE,CAAC;QACR,QAAQ,EAAE,KAAK;QACf,KAAK,EAAE,iBAAiB;QACxB,GAAG,EAAE,aAAa;QAClB,GAAG,EAAE,iDAAiD;QACtD,KAAK,EAAE,CAAC,IAAI,CAAC;KACd;IACD;QACE,KAAK,EAAE,CAAC;QACR,QAAQ,EAAE,QAAQ;QAClB,KAAK,EAAE,qBAAqB;QAC5B,GAAG,EAAE,aAAa;QAClB,GAAG,EAAE,kFAAkF;QACvF,KAAK,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC;KACxB;IACD;QACE,KAAK,EAAE,CAAC;QACR,QAAQ,EAAE,KAAK;QACf,KAAK,EAAE,qBAAqB;QAC5B,GAAG,EAAE,aAAa;QAClB,GAAG,EAAE,0DAA0D;QAC/D,MAAM,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE;KAC3B;IACD;QACE,KAAK,EAAE,CAAC;QACR,QAAQ,EAAE,KAAK;QACf,KAAK,EAAE,kBAAkB;QACzB,GAAG,EAAE,aAAa;QAClB,GAAG,EAAE,4DAA4D;QACjE,MAAM,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE;KAC7B;IACD;QACE,KAAK,EAAE,CAAC;QACR,QAAQ,EAAE,KAAK;QACf,KAAK,EAAE,kBAAkB;QACzB,GAAG,EAAE,WAAW;QAChB,GAAG,EAAE,yBAAyB;QAC9B,MAAM,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE;KAC3B;CACF,CAAC"}
|
package/dist/search/run.d.ts
CHANGED
|
@@ -7,11 +7,19 @@
|
|
|
7
7
|
* 搬迁判据:`node docs/skills/skill-memo-ilife/t855-产物基线.mjs --check` 逐条一致(行为字节不变)。
|
|
8
8
|
*
|
|
9
9
|
* 区间参数的三件校验(`needRangeDate`/`rangeLimitOf`/`categoryFilterOf`)只有本域在用,随命令一起搬——不留第二份。
|
|
10
|
+
*
|
|
11
|
+
* ── #827 · 本域的产物(册子 seq 7–13 的 6 格)────────────────────────────────────────────────
|
|
12
|
+
* 一条 `memo.search` 服务 5 个 HELP 场景、`memo.detail` 服务 1 个,而册子给每个场景各冻一格文件;
|
|
13
|
+
* 故本件多两件事:**判这一次是哪一格**(`params.scene` 显式给,缺省按参数推断)与**按格组装列表页**。
|
|
14
|
+
* 页形状不在本件:走「列表查询」族唯一定义地 `src/render/listPage.ts`(#828 首建),本件只填槽位。
|
|
15
|
+
* 文件名主体不在本件:由 `bookletFileStem(sceneId)` 查册子(`src/help/booklet.ts` 是唯一定义地)。
|
|
16
|
+
*
|
|
17
|
+
* `scene` 只收本域这 5 格;给别的格(如 `memo_search_wish`——那条命令属心愿域)即参数错,不静默改判。
|
|
10
18
|
*/
|
|
11
19
|
import type { CommandOut } from '../shared/commandSpec.js';
|
|
12
|
-
import type { MemoDb } from '../
|
|
13
|
-
/** `memo.search
|
|
20
|
+
import type { MemoDb } from '../db/readonly.js';
|
|
21
|
+
/** `memo.search`:区间/关键词/分类/排期四种过滤(区间与排期正交可叠)+ 列表页随行。 */
|
|
14
22
|
export declare function runSearch(params: Record<string, unknown>, db: MemoDb): CommandOut;
|
|
15
|
-
/** `memo.detail`:单条详情(缺 id 即槽位错,exit 2
|
|
23
|
+
/** `memo.detail`:单条详情(缺 id 即槽位错,exit 2)+ 「看备忘」那一格随行。 */
|
|
16
24
|
export declare function runDetail(params: Record<string, unknown>, db: MemoDb): CommandOut;
|
|
17
25
|
//# sourceMappingURL=run.d.ts.map
|
package/dist/search/run.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../src/search/run.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../src/search/run.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AACH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAE3D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AA6GhD,wDAAwD;AACxD,wBAAgB,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,EAAE,EAAE,MAAM,GAAG,UAAU,CAwDjF;AAED,wDAAwD;AACxD,wBAAgB,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,EAAE,EAAE,MAAM,GAAG,UAAU,CAiBjF"}
|
package/dist/search/run.js
CHANGED
|
@@ -1,7 +1,10 @@
|
|
|
1
1
|
import { fail } from '../shared/exit.js';
|
|
2
|
-
import { getNote, listNotes, searchNotes, searchNotesByCreatedRange } from '../
|
|
3
|
-
import { needId
|
|
2
|
+
import { getNote, listNotes, searchNotes, searchNotesByCreatedRange } from '../db/readonly.js';
|
|
3
|
+
import { needId } from '../shared/validators.js';
|
|
4
|
+
import { normalizeTop } from '../memo/index.js';
|
|
4
5
|
import { dueMatches } from '../wish/index.js';
|
|
6
|
+
import { toRows } from '../shared/rows.js';
|
|
7
|
+
import { buildListPage, querySnapshot } from '../render/index.js';
|
|
5
8
|
// #850 · 创建时间区间参数(HELP `start`+`end`,双 `YYYY-MM-DD`)。双必填:缺一边即缺槽位(exit 2,
|
|
6
9
|
// 人话);起止倒置即报错;`timeRange` 月份形已退役(无权威出处),给了即指路到 `start`/`end`。
|
|
7
10
|
const DATE_RE = /^(\d{4})-(\d{2})-(\d{2})$/;
|
|
@@ -30,7 +33,73 @@ function categoryFilterOf(value) {
|
|
|
30
33
|
return undefined;
|
|
31
34
|
return normalizeTop(value);
|
|
32
35
|
}
|
|
33
|
-
|
|
36
|
+
// ── #827 · 「这一次是哪一格」──────────────────────────────────────────────────────────────
|
|
37
|
+
//
|
|
38
|
+
// 5 格对应 5 个 HELP 场景(`src/help/scenes/search.ts` 的 3 个二级组),每条场景一个唤醒词:
|
|
39
|
+
// 搜备忘 → memo_search_keyword /查备忘 → memo_search_alias /按时间搜备忘 → memo_search_by_date
|
|
40
|
+
// /查打卡 → memo_search_checkin /查情绪 → memo_search_mood。
|
|
41
|
+
// 「搜备忘/查备忘」是同一件查询的两个词(HELP 记 `查备忘` 为 `搜备忘` 的别名场景),页形相同、**格不同**;
|
|
42
|
+
// 故缺省落主名那一格,别名场景由调用方显式给 `scene`(照提醒域 `memo.remind` 的同一做法)。
|
|
43
|
+
const SEARCH_SCENES = [
|
|
44
|
+
'memo_search_keyword',
|
|
45
|
+
'memo_search_alias',
|
|
46
|
+
'memo_search_by_date',
|
|
47
|
+
'memo_search_checkin',
|
|
48
|
+
'memo_search_mood',
|
|
49
|
+
];
|
|
50
|
+
/** 格 → 页题(一律用 HELP 的场景词,不写内部标识符)。 */
|
|
51
|
+
const SCENE_TITLES = {
|
|
52
|
+
memo_search_keyword: '搜备忘',
|
|
53
|
+
memo_search_alias: '查备忘',
|
|
54
|
+
memo_search_by_date: '按时间搜备忘',
|
|
55
|
+
memo_search_checkin: '查打卡',
|
|
56
|
+
memo_search_mood: '查情绪',
|
|
57
|
+
memo_get_detail: '看备忘',
|
|
58
|
+
};
|
|
59
|
+
/** 显式 `scene` 优先;缺省用本支的老形状那一格。**只认本域 5 格**。 */
|
|
60
|
+
function sceneOf(params, fallback) {
|
|
61
|
+
const s = params.scene;
|
|
62
|
+
if (s === undefined || s === '')
|
|
63
|
+
return fallback;
|
|
64
|
+
if (typeof s === 'string' && SEARCH_SCENES.includes(s))
|
|
65
|
+
return s;
|
|
66
|
+
fail(2, 'scene 只认本域这 5 格:' + SEARCH_SCENES.join('/'));
|
|
67
|
+
}
|
|
68
|
+
/** 列表页交付:快照走列表族共用的 `querySnapshot`,页壳与文件名主体全在族定义地与册子。
|
|
69
|
+
* #820 收尾:`subtitle` 只留**一句话结论**(规模),查询条件另走 `condition`(**一条一枚**)——
|
|
70
|
+
* 屏上落成一排条件胶囊,不再把几件事用逗号或竖线串成一句(那正是「符号顶替设计」)。 */
|
|
71
|
+
function listDeliver(input) {
|
|
72
|
+
const snap = querySnapshot(toRows(input.items));
|
|
73
|
+
return buildListPage({
|
|
74
|
+
scene: input.scene,
|
|
75
|
+
title: SCENE_TITLES[input.scene],
|
|
76
|
+
subtitle: input.subtitle,
|
|
77
|
+
condition: input.condition ?? [],
|
|
78
|
+
summary: snap.summary,
|
|
79
|
+
sections: snap.sections,
|
|
80
|
+
copyLog: input.copyLog,
|
|
81
|
+
items: input.items,
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
/** 本次生效的过滤条件 → 人话(只写用户给的那个条件的名字与值)。 */
|
|
85
|
+
function filterWords(params) {
|
|
86
|
+
const category = params.category === undefined ? '' : String(params.category);
|
|
87
|
+
if (category === '打卡')
|
|
88
|
+
return { text: '分类「打卡」', scene: 'memo_search_checkin' };
|
|
89
|
+
if (category === '情绪日记')
|
|
90
|
+
return { text: '分类「情绪日记」', scene: 'memo_search_mood' };
|
|
91
|
+
const bits = [];
|
|
92
|
+
if (params.q !== undefined && String(params.q) !== '')
|
|
93
|
+
bits.push('关键词「' + String(params.q) + '」');
|
|
94
|
+
if (category !== '')
|
|
95
|
+
bits.push('分类「' + category + '」');
|
|
96
|
+
if (params.sub !== undefined && String(params.sub) !== '')
|
|
97
|
+
bits.push('子分类「' + String(params.sub) + '」');
|
|
98
|
+
if (params.due !== undefined && String(params.due) !== '')
|
|
99
|
+
bits.push('排期「' + String(params.due) + '」');
|
|
100
|
+
return { text: bits.join(','), scene: 'memo_search_keyword' };
|
|
101
|
+
}
|
|
102
|
+
/** `memo.search`:区间/关键词/分类/排期四种过滤(区间与排期正交可叠)+ 列表页随行。 */
|
|
34
103
|
export function runSearch(params, db) {
|
|
35
104
|
// #850:创建时间区间通道(HELP `start`+`end` 双必填,按 `created_at` 倒序;与排期 `due` 正交可叠加)。
|
|
36
105
|
// `timeRange` 月份形已退役:给了即指路,不再有两个说法。
|
|
@@ -45,18 +114,68 @@ export function runSearch(params, db) {
|
|
|
45
114
|
fail(2, '开始日期不能晚于结束日期:' + start + ' > ' + end);
|
|
46
115
|
const category = categoryFilterOf(params.category);
|
|
47
116
|
const limit = rangeLimitOf(params.limit);
|
|
48
|
-
const
|
|
49
|
-
const hit =
|
|
50
|
-
return {
|
|
117
|
+
const rows = searchNotesByCreatedRange(db, { start, end, category, limit });
|
|
118
|
+
const hit = rows.filter((n) => dueMatches(n, params));
|
|
119
|
+
return {
|
|
120
|
+
data: { items: hit, total: hit.length },
|
|
121
|
+
exit: 0,
|
|
122
|
+
deliver: listDeliver({
|
|
123
|
+
scene: sceneOf(params, 'memo_search_by_date'),
|
|
124
|
+
items: hit,
|
|
125
|
+
subtitle: '共 ' + hit.length + ' 条',
|
|
126
|
+
condition: [
|
|
127
|
+
'创建时间 ' + start + ' 至 ' + end,
|
|
128
|
+
...(category === undefined ? [] : ['分类「' + category + '」']),
|
|
129
|
+
...(limit === 20 ? [] : ['最多取前 ' + limit + ' 条']),
|
|
130
|
+
],
|
|
131
|
+
copyLog: {
|
|
132
|
+
thinking: '按创建时间区间查 · 按 created_at 过滤后倒序,排期条件可另叠',
|
|
133
|
+
data_structure: 'notes 表 · id/content/category/sub_category/due/created_at(按 created_at 倒序)',
|
|
134
|
+
call_chain: 'memo.search → searchNotesByCreatedRange → querySnapshot → buildListPage(memo_query) → deliver 钩子落盘',
|
|
135
|
+
exception: '无',
|
|
136
|
+
},
|
|
137
|
+
}),
|
|
138
|
+
};
|
|
51
139
|
}
|
|
52
|
-
const
|
|
140
|
+
const words = filterWords(params);
|
|
141
|
+
const rows = params.q !== undefined
|
|
53
142
|
? searchNotes(db, String(params.q), { category: params.category, sub: params.sub })
|
|
54
143
|
: listNotes(db).filter((n) => (params.category === undefined || n.category === params.category));
|
|
55
|
-
const hit =
|
|
56
|
-
return {
|
|
144
|
+
const hit = rows.filter((n) => dueMatches(n, params));
|
|
145
|
+
return {
|
|
146
|
+
data: { items: hit, total: hit.length },
|
|
147
|
+
exit: 0,
|
|
148
|
+
deliver: listDeliver({
|
|
149
|
+
scene: sceneOf(params, words.scene),
|
|
150
|
+
items: hit,
|
|
151
|
+
subtitle: '共 ' + hit.length + ' 条',
|
|
152
|
+
condition: words.text === '' ? [] : [words.text],
|
|
153
|
+
copyLog: {
|
|
154
|
+
thinking: '关键词/分类查 · 命中即列,页内可再筛选与复制',
|
|
155
|
+
data_structure: 'notes 表 · id/content/category/sub_category/due/media_path/created_at',
|
|
156
|
+
call_chain: 'memo.search → searchNotes/listNotes → querySnapshot → buildListPage(memo_query) → deliver 钩子落盘',
|
|
157
|
+
exception: '无',
|
|
158
|
+
},
|
|
159
|
+
}),
|
|
160
|
+
};
|
|
57
161
|
}
|
|
58
|
-
/** `memo.detail`:单条详情(缺 id 即槽位错,exit 2
|
|
162
|
+
/** `memo.detail`:单条详情(缺 id 即槽位错,exit 2)+ 「看备忘」那一格随行。 */
|
|
59
163
|
export function runDetail(params, db) {
|
|
60
|
-
|
|
164
|
+
const item = getNote(db, needId(params.id, '详情'));
|
|
165
|
+
return {
|
|
166
|
+
data: { item },
|
|
167
|
+
exit: 0,
|
|
168
|
+
deliver: listDeliver({
|
|
169
|
+
scene: 'memo_get_detail',
|
|
170
|
+
items: [item],
|
|
171
|
+
subtitle: '笔记 #' + String(item.id) + ' 的全部内容',
|
|
172
|
+
copyLog: {
|
|
173
|
+
thinking: '单条详情 · 按 id 直取一行(老 detail 口径)',
|
|
174
|
+
data_structure: 'notes 表 · id/content/category/sub_category/due/media_path/created_at/updated_at',
|
|
175
|
+
call_chain: 'memo.detail → getNote → querySnapshot → buildListPage(memo_query) → deliver 钩子落盘',
|
|
176
|
+
exception: '无',
|
|
177
|
+
},
|
|
178
|
+
}),
|
|
179
|
+
};
|
|
61
180
|
}
|
|
62
181
|
//# sourceMappingURL=run.js.map
|
package/dist/search/run.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/search/run.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/search/run.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,11 +11,10 @@
|
|
|
11
11
|
* - `pre-open` 开库前分派:不拿库句柄(HELP 交付与初始化渲染要在「库还没建好」时也能跑),
|
|
12
12
|
* 故它的处理函数只吃参数、自己决定开不开库。
|
|
13
13
|
*
|
|
14
|
-
*
|
|
15
|
-
* 故这里按老路径 import type;那个件搬家的那一批里,本行的路径跟着改,别处不动。
|
|
14
|
+
* 库句柄类型住 `src/db/readonly.ts`(#855 起;连接层只读、禁 DDL),本件按新家取。
|
|
16
15
|
*/
|
|
17
16
|
import type { EnvelopeShape } from 'base-link-core';
|
|
18
|
-
import type { MemoDb } from '../
|
|
17
|
+
import type { MemoDb } from '../db/readonly.js';
|
|
19
18
|
/** 整页交付意图:`html`=本次产物的整页,`stem`=册子冻结的文件名主体(`src/help/booklet.ts` 的唯一定义地给出)。 */
|
|
20
19
|
export interface PageDeliver {
|
|
21
20
|
readonly html: string;
|
|
@@ -39,14 +38,14 @@ export interface ReadCommandSpec {
|
|
|
39
38
|
readonly key: string;
|
|
40
39
|
readonly shape: EnvelopeShape;
|
|
41
40
|
readonly title: string;
|
|
42
|
-
/** 代表唤醒词(生成 SKILL.md 速查表那一列用);**可缺**(如 `memo.
|
|
41
|
+
/** 代表唤醒词(生成 SKILL.md 速查表那一列用);**可缺**(如 `memo.auth` 只有诊断两档、没有唤醒词);
|
|
43
42
|
* 给定时必须是路由声明里真有的词(生成期拦,见 `scripts/gen-cli.mjs`)。 */
|
|
44
43
|
readonly wakeWord?: string;
|
|
45
44
|
/** 照抄即能跑的一行(生成 SKILL.md 速查表「例」列用);缺它或为空即生成期抛。 */
|
|
46
45
|
readonly example: string;
|
|
47
46
|
readonly run: CommandHandler;
|
|
48
47
|
}
|
|
49
|
-
/** 写命令声明(**不写 `shape
|
|
48
|
+
/** 写命令声明(**不写 `shape`**:写命令一律回执形,唯一定义地是生成器合成的 `MEMO_DECLARED_SHAPES` 那一行)。 */
|
|
50
49
|
export interface WriteCommandSpec {
|
|
51
50
|
readonly kind: 'write';
|
|
52
51
|
readonly key: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"commandSpec.d.ts","sourceRoot":"","sources":["../../src/shared/commandSpec.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"commandSpec.d.ts","sourceRoot":"","sources":["../../src/shared/commandSpec.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAEhD,+EAA+E;AAC/E,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED;;6DAE6D;AAC7D,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,CAAC,EAAE,WAAW,CAAC;CAChC;AAED,wBAAwB;AACxB,MAAM,MAAM,cAAc,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,EAAE,EAAE,MAAM,KAAK,UAAU,CAAC;AAEzF,mCAAmC;AACnC,MAAM,MAAM,cAAc,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,UAAU,CAAC;AAE7E,aAAa;AACb,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;yDACqD;IACrD,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,iDAAiD;IACjD,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,GAAG,EAAE,cAAc,CAAC;CAC9B;AAED,8EAA8E;AAC9E,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,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,GAAG,EAAE,cAAc,CAAC;CAC9B;AAED,iDAAiD;AACjD,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAC1B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC;IAC9B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,GAAG,EAAE,cAAc,CAAC;CAC9B;AAED,MAAM,MAAM,WAAW,GAAG,eAAe,GAAG,gBAAgB,GAAG,kBAAkB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/shared/errors.ts"],"names":[],"mappings":"AACA,qBAAa,cAAe,SAAQ,KAAK;IACvC,QAAQ,CAAC,IAAI,EACT,iBAAiB,GAAG,oBAAoB,GAAG,mBAAmB,GAC9D,qBAAqB,GAAG,gBAAgB,GACxC,kBAAkB,GAAG,oBAAoB,GAAG,aAAa,GAAG,cAAc,GAAG,mBAAmB;IAClG,+EAA+E;OAC7E,kBAAkB,CAAC;gBACX,IAAI,EAAE,cAAc,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE;CAKzF;AAED,qBAAa,eAAgB,SAAQ,KAAK;IACxC,QAAQ,CAAC,IAAI,EACT,iBAAiB,GAAG,qBAAqB,GAAG,qBAAqB,GACjE,qBAAqB,GAAG,kBAAkB,CAAC;gBACnC,IAAI,EAAE,eAAe,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,MAAM;CAK3D"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/shared/errors.ts"],"names":[],"mappings":"AAAA,qCAAqC;AACrC,MAAM,OAAO,cAAe,SAAQ,KAAK;IAC9B,IAAI,CAKU;IACvB,YAAY,IAA4B,EAAE,OAAe,EAAE,OAA6B;QACtF,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACxB,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC;QAC7B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;CACF;AAED,MAAM,OAAO,eAAgB,SAAQ,KAAK;IAC/B,IAAI,CAEkC;IAC/C,YAAY,IAA6B,EAAE,OAAe;QACxD,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,iBAAiB,CAAC;QAC9B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;CACF"}
|
|
@@ -21,7 +21,7 @@ export declare function htmlDirOf(dbDir: string, configured: string): string;
|
|
|
21
21
|
* 改基=换语义;默认(空串)走数据目录已是新契约,两条在 `mediaDirText` 的人话里各说各的。 */
|
|
22
22
|
export declare function mediaDirOf(dataDir: string, configured: string): string;
|
|
23
23
|
/** 附件目录:配置 `media.dir` 的解析结果(算式见 `mediaDirOf`)。只算路径,
|
|
24
|
-
* 「必须已存在」的判定归 `src/
|
|
24
|
+
* 「必须已存在」的判定归 `src/memo/media.ts` 的 `resolveMediaDir()`。 */
|
|
25
25
|
export declare function resolveMediaDirPath(): string;
|
|
26
26
|
/** 库文件路径:`<库目录>/<库文件名>`(**不建目录**——备忘的库由用户/老技能建,本包不建空库)。 */
|
|
27
27
|
export declare function resolveDbPath(filename?: string, dir?: string): string;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../../src/shared/paths.ts"],"names":[],"mappings":"AAcA,+CAA+C;AAC/C,eAAO,MAAM,mBAAmB,YAAY,CAAC;AAE7C;wCACwC;AACxC,eAAO,MAAM,qBAAqB,cAA6B,CAAC;AAEhE,0CAA0C;AAC1C,wBAAgB,UAAU,IAAI,MAAM,CAGnC;AAED;0DAC0D;AAC1D,wBAAgB,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAEnE;AAED,6BAA6B;AAC7B,wBAAgB,YAAY,IAAI,MAAM,CAGrC;AAED,uBAAuB;AACvB,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAE5D;AAOD,4DAA4D;AAC5D,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAEnE;AAED;;;;0DAI0D;AAC1D,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAGtE;AAED;6DAC6D;AAC7D,wBAAgB,mBAAmB,IAAI,MAAM,CAG5C;AAED,2DAA2D;AAC3D,wBAAgB,aAAa,CAAC,QAAQ,SAAe,EAAE,GAAG,SAAiB,GAAG,MAAM,CAEnF;AAED;yDACyD;AACzD,MAAM,WAAW,iBAAiB;IAChC,oDAAoD;IACpD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,kDAAkD;IAClD,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,qBAAqB;IACrB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,6CAA6C;IAC7C,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B;AAED,mDAAmD;AACnD,wBAAgB,iBAAiB,IAAI,iBAAiB,CASrD"}
|
|
@@ -5,8 +5,8 @@
|
|
|
5
5
|
// 连接口径不变:新仓直连老库文件 `<库目录>/memo.db`(SQLite、WAL、外键开),连接层禁 DDL。
|
|
6
6
|
//
|
|
7
7
|
// **#760 起本件是全部落点算式的唯一定义地**(设置页只读行显示的那一组绝对路径由这里算,
|
|
8
|
-
// `src/health.ts`
|
|
9
|
-
// 三处不许走散;照记账样板 #749
|
|
8
|
+
// `src/cli/health/probe.ts` 的体检探针调这里的纯函数,`src/memo/media.ts` 的附件目录调 `mediaDirOf`,
|
|
9
|
+
// 三处不许走散;照记账样板 #749 的路径件)。
|
|
10
10
|
// 算式一律是**纯函数**(只拼路径、不读配置、不碰盘),读配置只在下面几个 `resolve*` 薄壳里发生。
|
|
11
11
|
import { isAbsolute, join, resolve } from 'node:path';
|
|
12
12
|
import { MEDIA_DIR_NAME, loadMemoConfig } from '../config.js';
|
|
@@ -54,7 +54,7 @@ export function mediaDirOf(dataDir, configured) {
|
|
|
54
54
|
return isAbsolute(configured) ? configured : resolve(configured);
|
|
55
55
|
}
|
|
56
56
|
/** 附件目录:配置 `media.dir` 的解析结果(算式见 `mediaDirOf`)。只算路径,
|
|
57
|
-
* 「必须已存在」的判定归 `src/
|
|
57
|
+
* 「必须已存在」的判定归 `src/memo/media.ts` 的 `resolveMediaDir()`。 */
|
|
58
58
|
export function resolveMediaDirPath() {
|
|
59
59
|
const cfg = loadMemoConfig();
|
|
60
60
|
return mediaDirOf(cfg.dataDir, cfg.values.media.dir);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"paths.js","sourceRoot":"","sources":["../../src/shared/paths.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validators.d.ts","sourceRoot":"","sources":["../../src/shared/validators.ts"],"names":[],"mappings":"AAQA,4DAA4D;AAC5D,wBAAgB,MAAM,CAAC,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,CAItD"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/** 跨域共用 · 参数校验原语(票 #855 从 `memo/crud.ts` 提到共用位)。
|
|
2
|
+
*
|
|
3
|
+
* 谁在用(写得出三个在用):`memo/crud.ts`(增删改查的 id 口)/`src/search/run.ts`(详情 id)/
|
|
4
|
+
* `src/remind/run.ts`(提醒关联笔记 id)——三域同用一个正整数 id 口径,各写一份迟早走散(铁律二)。
|
|
5
|
+
* 本件只做一件事(正整数归一),不碰分类/提醒/附件那些域口径。
|
|
6
|
+
*/
|
|
7
|
+
import { MemoPolicyError } from './errors.js';
|
|
8
|
+
/** id 归一:对外接受数字或数字串,统一归一为 number(老 `note_id <= 0` 即错口径)。 */
|
|
9
|
+
export function needId(id, op) {
|
|
10
|
+
const n = typeof id === 'number' ? id : typeof id === 'string' && id.trim() !== '' ? Number(id) : NaN;
|
|
11
|
+
if (!Number.isInteger(n) || n <= 0)
|
|
12
|
+
throw new MemoPolicyError('POLICY_BAD_INPUT', op + ' 须给正整数 id');
|
|
13
|
+
return n;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=validators.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validators.js","sourceRoot":"","sources":["../../src/shared/validators.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAE9C,4DAA4D;AAC5D,MAAM,UAAU,MAAM,CAAC,EAAW,EAAE,EAAU;IAC5C,MAAM,CAAC,GAAG,OAAO,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,KAAK,QAAQ,IAAI,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;IACtG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,MAAM,IAAI,eAAe,CAAC,kBAAkB,EAAE,EAAE,GAAG,WAAW,CAAC,CAAC;IACpG,OAAO,CAAC,CAAC;AACX,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/sync/auth.ts"],"names":[],"mappings":"AAOA,6BAA6B;AAC7B,wBAAgB,UAAU,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAUpD"}
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
// 取数层·飞书授权状态(#760 起只剩检测面):授权三支(发起/发 QR/续轮询)随 `lark.cliPath` 删键退役
|
|
2
2
|
// (定稿 #759:授权这件事交出去,由复制安装指引那段 prompt 带用户在浏览器里走)。
|
|
3
|
-
// 保留的检测面:`authStatus`(面板三档读数与 `larkTierInfo`
|
|
3
|
+
// 保留的检测面:`authStatus`(面板三档读数与 `larkTierInfo` 的身份真值源)由同域的 `./feishu.js`
|
|
4
4
|
// 的 `findLarkCli`/`runLark` 驱动;四道门(存在→版本→登录→scope)住 `larkReady`。
|
|
5
5
|
import { findLarkCli, runLark } from './feishu.js';
|
|
6
|
-
import { MemoFetchError } from '
|
|
6
|
+
import { MemoFetchError } from '../shared/errors.js';
|
|
7
7
|
/** 当前 lark-cli 授权状态(诊断用)。 */
|
|
8
8
|
export function authStatus() {
|
|
9
9
|
const cli = findLarkCli();
|
|
10
10
|
if (!cli)
|
|
11
|
-
throw new MemoFetchError('LARK_UNAVAILABLE', '
|
|
11
|
+
throw new MemoFetchError('LARK_UNAVAILABLE', '飞书命令行工具未找到:这一步要它,先按安装指引装好');
|
|
12
12
|
const r = runLark(cli, ['auth', 'status']);
|
|
13
13
|
if (!r.ok)
|
|
14
14
|
throw new MemoFetchError('LARK_TASK_FAILED', '授权状态查询失败:' + r.stderr.slice(0, 300));
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/sync/auth.ts"],"names":[],"mappings":"AAAA,iEAAiE;AACjE,iDAAiD;AACjD,uEAAuE;AACvE,iEAAiE;AACjE,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAErD,6BAA6B;AAC7B,MAAM,UAAU,UAAU;IACxB,MAAM,GAAG,GAAG,WAAW,EAAE,CAAC;IAC1B,IAAI,CAAC,GAAG;QAAE,MAAM,IAAI,cAAc,CAAC,kBAAkB,EAAE,2BAA2B,CAAC,CAAC;IACpF,MAAM,CAAC,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC;IAC3C,IAAI,CAAC,CAAC,CAAC,EAAE;QAAE,MAAM,IAAI,cAAc,CAAC,kBAAkB,EAAE,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;IAC9F,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAA4B,CAAC;IACzD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC;IACzC,CAAC;AACH,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../../src/sync/commands.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../../src/sync/commands.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAE5C,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;IAiBQ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"commands.js","sourceRoot":"","sources":["../../src/sync/commands.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"commands.js","sourceRoot":"","sources":["../../src/sync/commands.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAE5C,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B;QACE,IAAI,EAAE,OAAO;QACb,GAAG,EAAE,WAAW;QAChB,KAAK,EAAE,OAAO;QACd,QAAQ,EAAE,OAAO;QACjB,OAAO,EAAE,yBAAyB;QAClC,GAAG,EAAE,OAAO;KACb;IACD;QACE,IAAI,EAAE,MAAM;QACZ,GAAG,EAAE,WAAW;QAChB,KAAK,EAAE,SAAS;QAChB,KAAK,EAAE,MAAM;QACb,OAAO,EAAE,wDAAwD;QACjE,GAAG,EAAE,OAAO;KACb;CAC+B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"feishu.d.ts","sourceRoot":"","sources":["../../src/sync/feishu.ts"],"names":[],"mappings":"AAQA,eAAO,MAAM,uBAAuB,QAAQ,CAAC;AAC7C,eAAO,MAAM,eAAe,SAAS,CAAC;AAEtC,4DAA4D;AAC5D,eAAO,MAAM,gBAAgB,EAAG,kCAA2C,CAAC;AAE5E;+CAC+C;AAC/C,eAAO,MAAM,iBAAiB,EAAG,yEAAoD,CAAC;AAEtF;;0BAE0B;AAC1B,eAAO,MAAM,mBAAmB,wsJAmCe,CAAC;AAEhD,8CAA8C;AAC9C,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B;AAED,mCAAmC;AACnC,wBAAgB,aAAa,IAAI,aAAa,CAE7C;AAQD,wBAAgB,WAAW,IAAI,MAAM,GAAG,IAAI,CAqC3C;AAED,MAAM,WAAW,SAAS;IAAG,EAAE,EAAE,IAAI,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;CAAE;AACxD,MAAM,WAAW,aAAa;IAAG,EAAE,EAAE,KAAK,CAAC;IAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;CAAE;AAKlF,wBAAgB,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,SAAS,SAA0B,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,aAAa,CAgBjI;AAED,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAI/C;AAGD,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAW9C;AAGD,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAE9D;AAED,MAAM,WAAW,SAAS;IAAG,OAAO,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;CAAE;AAGhF,wBAAgB,SAAS,CAAC,KAAK,SAAkB,GAAG,SAAS,CAO5D;AAED;gEACgE;AAChE,MAAM,MAAM,QAAQ,GAAG,SAAS,GAAG,SAAS,GAAG,MAAM,CAAC;AAEtD,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IACxB,qCAAqC;IACrC,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,yEAAyE;IACzE,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CACjC;AAED;;6CAE6C;AAC7C,wBAAgB,YAAY,CAAC,KAAK,SAAkB,GAAG,YAAY,CA4BlE;AAED,wBAAgB,UAAU,IAAI,MAAM,EAAE,CAA6B"}
|
|
@@ -4,7 +4,7 @@ import { accessSync, constants } from 'node:fs';
|
|
|
4
4
|
import { execFileSync } from 'node:child_process';
|
|
5
5
|
import { homedir } from 'node:os';
|
|
6
6
|
import { join } from 'node:path';
|
|
7
|
-
import { MemoFetchError } from '
|
|
7
|
+
import { MemoFetchError } from '../shared/errors.js';
|
|
8
8
|
export const LARK_DEFAULT_TIMEOUT_MS = 30000;
|
|
9
9
|
export const LARK_WISH_SCOPE = 'task';
|
|
10
10
|
/** 飞书 CLI 官网(面板状态行与失败回执的链接目标,逐字显示见 `LARK_WEBSITE_LINE`)。 */
|
|
@@ -59,7 +59,7 @@ export function larkSetupInfo() {
|
|
|
59
59
|
// 候选=既有 5 档(Windows npm 全局 → where/which → 两条固定路径)+ #760 补注的 4 条
|
|
60
60
|
// (scoop 家目录派生 exe/cmd、`/opt/homebrew/bin`、家目录 `.npm-global/bin`、家目录 `.local/bin`,
|
|
61
61
|
// 一律 `os.homedir()` 派生,不读 `%APPDATA%`/`$HOME`);**与作息管家那张表逐条相同**(跨包锁进 #758)。
|
|
62
|
-
// `src/health.ts` 里那份只读副本只用前 5 档,不进锁(体检不落盘,调 `loadMemoConfig` 会落默认配置)。
|
|
62
|
+
// `src/cli/health/probe.ts` 里那份只读副本只用前 5 档,不进锁(体检不落盘,调 `loadMemoConfig` 会落默认配置)。
|
|
63
63
|
// 找不到返 null(不抛,larkReady 抛)。#695 起环境变量读取已删(`LARK_CLI_PATH` 与 `APPDATA` 全删)。
|
|
64
64
|
export function findLarkCli() {
|
|
65
65
|
if (process.platform === 'win32') {
|
|
@@ -134,9 +134,9 @@ export function runLark(cli, args, timeoutMs = LARK_DEFAULT_TIMEOUT_MS, cwd) {
|
|
|
134
134
|
catch (e) {
|
|
135
135
|
const err = e;
|
|
136
136
|
if (err.code === 'ENOENT')
|
|
137
|
-
throw new MemoFetchError('LARK_UNAVAILABLE', '
|
|
137
|
+
throw new MemoFetchError('LARK_UNAVAILABLE', '飞书命令行工具不可用:程序无法启动');
|
|
138
138
|
if (err.code === 'ETIMEDOUT')
|
|
139
|
-
throw new MemoFetchError('LARK_TIMEOUT', '
|
|
139
|
+
throw new MemoFetchError('LARK_TIMEOUT', '飞书命令行工具超时:命令没在时限内返回');
|
|
140
140
|
return { ok: false, exit: err.status ?? null, stderr: String(err.stderr ?? err.message ?? e) };
|
|
141
141
|
}
|
|
142
142
|
}
|
|
@@ -150,17 +150,17 @@ export function larkVersion(cli) {
|
|
|
150
150
|
export function authOpenId(cli) {
|
|
151
151
|
const r = runLark(cli, ['auth', 'status']);
|
|
152
152
|
if (!r.ok)
|
|
153
|
-
throw new MemoFetchError('LARK_NOT_LOGGED_IN', '
|
|
153
|
+
throw new MemoFetchError('LARK_NOT_LOGGED_IN', '飞书登录状态查询失败:可能还没登录,先登录一次');
|
|
154
154
|
let j = null;
|
|
155
155
|
try {
|
|
156
156
|
j = JSON.parse(r.stdout);
|
|
157
157
|
}
|
|
158
158
|
catch {
|
|
159
|
-
throw new MemoFetchError('LARK_BAD_RESPONSE', '
|
|
159
|
+
throw new MemoFetchError('LARK_BAD_RESPONSE', '飞书登录状态读不出内容:先按安装指引重新登录一次');
|
|
160
160
|
}
|
|
161
161
|
const id = j.identities?.user?.openId;
|
|
162
162
|
if (typeof id !== 'string' || id.length === 0) {
|
|
163
|
-
throw new MemoFetchError('LARK_NOT_LOGGED_IN', '
|
|
163
|
+
throw new MemoFetchError('LARK_NOT_LOGGED_IN', '飞书未登录:登录状态里没有你的身份,先登录一次');
|
|
164
164
|
}
|
|
165
165
|
return id;
|
|
166
166
|
}
|
|
@@ -172,11 +172,11 @@ export function checkScope(cli, scope) {
|
|
|
172
172
|
export function larkReady(scope = LARK_WISH_SCOPE) {
|
|
173
173
|
const cli = findLarkCli();
|
|
174
174
|
if (!cli)
|
|
175
|
-
throw new MemoFetchError('LARK_UNAVAILABLE', '
|
|
175
|
+
throw new MemoFetchError('LARK_UNAVAILABLE', '飞书命令行工具未找到:这一步要它,先按安装指引装好');
|
|
176
176
|
const version = larkVersion(cli);
|
|
177
177
|
const openId = authOpenId(cli);
|
|
178
178
|
if (!checkScope(cli, scope))
|
|
179
|
-
throw new MemoFetchError('LARK_DENIED', '
|
|
179
|
+
throw new MemoFetchError('LARK_DENIED', '飞书授权不足:这一步要的权限还没给,重新授权时请一并勾上');
|
|
180
180
|
return { cliPath: cli, version, openId };
|
|
181
181
|
}
|
|
182
182
|
/** 探一遍三档:CLI 都不在就停在第 1 档,不往下起子进程试登录。**不抛**——面板与回执要的是状态,不是异常。
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"feishu.js","sourceRoot":"","sources":["../../src/sync/feishu.ts"],"names":[],"mappings":"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"}
|