@xgjktech/xg_cwork_im 1.19.36 → 1.19.38

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 (31) hide show
  1. package/dist/src/plan/plan-core-adapter.d.ts +6 -3
  2. package/dist/src/plan/plan-core-adapter.d.ts.map +1 -1
  3. package/dist/src/plan/plan-core-adapter.js +12 -6
  4. package/dist/src/plan/plan-core-adapter.js.map +1 -1
  5. package/dist/src/plan/plan-core-adapter.test.js +22 -3
  6. package/dist/src/plan/plan-core-adapter.test.js.map +1 -1
  7. package/dist/src/plan/plan-core-db.d.ts.map +1 -1
  8. package/dist/src/plan/plan-core-db.js +4 -2
  9. package/dist/src/plan/plan-core-db.js.map +1 -1
  10. package/dist/src/plan/plan-core-db.test.js +19 -1
  11. package/dist/src/plan/plan-core-db.test.js.map +1 -1
  12. package/dist/src/plan/plan-core-snapshot.d.ts.map +1 -1
  13. package/dist/src/plan/plan-core-snapshot.js +10 -2
  14. package/dist/src/plan/plan-core-snapshot.js.map +1 -1
  15. package/dist/src/plan/plan-core-snapshot.test.js +24 -0
  16. package/dist/src/plan/plan-core-snapshot.test.js.map +1 -1
  17. package/dist/src/plan/plan-ws-registry.d.ts +1 -1
  18. package/dist/src/plan/plan-ws-registry.d.ts.map +1 -1
  19. package/dist/src/plan/plan-ws-registry.js +9 -2
  20. package/dist/src/plan/plan-ws-registry.js.map +1 -1
  21. package/dist/src/plan/plan-ws-registry.test.js +8 -0
  22. package/dist/src/plan/plan-ws-registry.test.js.map +1 -1
  23. package/package.json +1 -1
  24. package/dist/src/plan-store-access.d.ts +0 -25
  25. package/dist/src/plan-store-access.d.ts.map +0 -1
  26. package/dist/src/plan-store-access.js +0 -100
  27. package/dist/src/plan-store-access.js.map +0 -1
  28. package/dist/src/plan-store-access.test.d.ts +0 -2
  29. package/dist/src/plan-store-access.test.d.ts.map +0 -1
  30. package/dist/src/plan-store-access.test.js +0 -207
  31. package/dist/src/plan-store-access.test.js.map +0 -1
@@ -29,7 +29,9 @@ export declare function resolveCorePlanCreatedAt(sessionKey: string, nowMs: numb
29
29
  export declare function resetCorePlanFirstSeenForTest(): void;
30
30
  /**
31
31
  * 组装带内部 origin 的 Plan。
32
- * steps 优先取事件;事件为空时回退落库卡(cardSteps);两者都为空才不产计划。
32
+ * steps 优先取事件;事件为空时回退落库卡(cardSteps)。
33
+ * 无 steps 但有 markdown 时产出「说明卡」(tasks 为空 + markdown);
34
+ * steps 与 markdown 皆空才返回 undefined(此时由调用方判定清空或跳过)。
33
35
  */
34
36
  export declare function buildPlanFromCoreUpdate(params: {
35
37
  sessionKey: string;
@@ -62,8 +64,9 @@ export declare function buildCorePlanClear(params: {
62
64
  /**
63
65
  * progress_card 事件 → PLAN_STAT 增量(source:"tool")。
64
66
  * - 有 steps(事件或落库卡)→ 发计划;
65
- * - 无 steps 且为「清空整卡」→ 发 cleared PLAN_STAT(tasks 空),让前端收场;
66
- * - 无 steps 且仅更新 markdown → 不发(面板停留,避免误清)。
67
+ * - 无 steps 但有 markdown(「说明卡」)→ 发 tasks 空 + markdown 的计划,前端按备注卡展示;
68
+ * - 无 steps 且为「清空整卡」(无 explanation 也无 markdown)→ 发 cleared PLAN_STAT(tasks 空);
69
+ * - 无 steps、无 markdown,但有 explanation(事件投影只有纯文本)→ 不发(面板停留,避免误清)。
67
70
  * 绝不抛(sendPlanStat 本身 fire-and-forget,内部已 catch)。
68
71
  */
69
72
  export declare function handleCorePlanUpdate(params: {
@@ -1 +1 @@
1
- {"version":3,"file":"plan-core-adapter.d.ts","sourceRoot":"","sources":["../../../src/plan/plan-core-adapter.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,IAAI,EAAoB,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAYvF,gEAAgE;AAChE,MAAM,MAAM,iBAAiB,GAAG,MAAM,GAAG;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAE5E,MAAM,MAAM,qBAAqB,GAAG;IAChC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,SAAS,iBAAiB,EAAE,CAAC;IACrC,MAAM,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,qBAAqB;AACrB,MAAM,MAAM,YAAY,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,UAAU,CAAA;CAAE,CAAC;AAEhE,iEAAiE;AACjE,MAAM,MAAM,QAAQ,GAAG,IAAI,GAAG;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAEpD,0DAA0D;AAC1D,wBAAgB,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAG1D;AAED,wBAAgB,sBAAsB,CAClC,KAAK,EAAE,SAAS,iBAAiB,EAAE,GAAG,SAAS,GAChD,YAAY,EAAE,CAuBhB;AAID,sDAAsD;AACtD,wBAAgB,wBAAwB,CACpC,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,MAAM,EACb,YAAY,CAAC,EAAE,MAAM,GACtB,MAAM,CAUR;AAED,+BAA+B;AAC/B,wBAAgB,6BAA6B,IAAI,IAAI,CAEpD;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE;IAC5C,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,qBAAqB,CAAC;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,yCAAyC;IACzC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,4DAA4D;IAC5D,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;OAIG;IACH,SAAS,CAAC,EAAE,SAAS,iBAAiB,EAAE,CAAC;CAC5C,GAAG,QAAQ,GAAG,SAAS,CAwCvB;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE;IACvC,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;CACzB,GAAG,QAAQ,CAiBX;AAkBD;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE;IACzC,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,qBAAqB,CAAC;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,wCAAwC;IACxC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,mCAAmC;IACnC,SAAS,CAAC,EAAE,SAAS,iBAAiB,EAAE,CAAC;CAC5C,GAAG,IAAI,CA2BP"}
1
+ {"version":3,"file":"plan-core-adapter.d.ts","sourceRoot":"","sources":["../../../src/plan/plan-core-adapter.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,IAAI,EAAoB,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAYvF,gEAAgE;AAChE,MAAM,MAAM,iBAAiB,GAAG,MAAM,GAAG;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAE5E,MAAM,MAAM,qBAAqB,GAAG;IAChC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,SAAS,iBAAiB,EAAE,CAAC;IACrC,MAAM,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,qBAAqB;AACrB,MAAM,MAAM,YAAY,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,UAAU,CAAA;CAAE,CAAC;AAEhE,iEAAiE;AACjE,MAAM,MAAM,QAAQ,GAAG,IAAI,GAAG;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAEpD,0DAA0D;AAC1D,wBAAgB,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAG1D;AAED,wBAAgB,sBAAsB,CAClC,KAAK,EAAE,SAAS,iBAAiB,EAAE,GAAG,SAAS,GAChD,YAAY,EAAE,CAuBhB;AAID,sDAAsD;AACtD,wBAAgB,wBAAwB,CACpC,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,MAAM,EACb,YAAY,CAAC,EAAE,MAAM,GACtB,MAAM,CAUR;AAED,+BAA+B;AAC/B,wBAAgB,6BAA6B,IAAI,IAAI,CAEpD;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE;IAC5C,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,qBAAqB,CAAC;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,yCAAyC;IACzC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,4DAA4D;IAC5D,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;OAIG;IACH,SAAS,CAAC,EAAE,SAAS,iBAAiB,EAAE,CAAC;CAC5C,GAAG,QAAQ,GAAG,SAAS,CA2CvB;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE;IACvC,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;CACzB,GAAG,QAAQ,CAiBX;AAkBD;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE;IACzC,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,qBAAqB,CAAC;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,wCAAwC;IACxC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,mCAAmC;IACnC,SAAS,CAAC,EAAE,SAAS,iBAAiB,EAAE,CAAC;CAC5C,GAAG,IAAI,CA2BP"}
@@ -55,7 +55,9 @@ export function resetCorePlanFirstSeenForTest() {
55
55
  }
56
56
  /**
57
57
  * 组装带内部 origin 的 Plan。
58
- * steps 优先取事件;事件为空时回退落库卡(cardSteps);两者都为空才不产计划。
58
+ * steps 优先取事件;事件为空时回退落库卡(cardSteps)。
59
+ * 无 steps 但有 markdown 时产出「说明卡」(tasks 为空 + markdown);
60
+ * steps 与 markdown 皆空才返回 undefined(此时由调用方判定清空或跳过)。
59
61
  */
60
62
  export function buildPlanFromCoreUpdate(params) {
61
63
  const { sessionKey, groupId, payload, accountId, createdAtIso, markdown, cardSteps } = params;
@@ -68,7 +70,10 @@ export function buildPlanFromCoreUpdate(params) {
68
70
  `steps=${steps.length} source=${payload.source ?? "(none)"}`);
69
71
  }
70
72
  }
71
- if (steps.length === 0) {
73
+ // 「说明卡」:无步骤但有 markdown 时仍产出计划(tasks 为空 + markdown),
74
+ // 供前端按 OpenClaw Web UI 的备注卡展示;steps 与 markdown 皆空才不产卡。
75
+ const markdownText = typeof markdown === "string" && markdown.trim() ? markdown : undefined;
76
+ if (steps.length === 0 && !markdownText) {
72
77
  return undefined;
73
78
  }
74
79
  const tasks = steps.map((step) => ({
@@ -92,7 +97,7 @@ export function buildPlanFromCoreUpdate(params) {
92
97
  updatedAt: new Date(nowMs).toISOString(),
93
98
  tasks,
94
99
  origin,
95
- ...(markdown && markdown.trim() ? { markdown } : {}),
100
+ ...(markdownText ? { markdown: markdownText } : {}),
96
101
  };
97
102
  }
98
103
  /**
@@ -134,8 +139,9 @@ function isCorePlanClear(params) {
134
139
  /**
135
140
  * progress_card 事件 → PLAN_STAT 增量(source:"tool")。
136
141
  * - 有 steps(事件或落库卡)→ 发计划;
137
- * - 无 steps 且为「清空整卡」→ 发 cleared PLAN_STAT(tasks 空),让前端收场;
138
- * - 无 steps 且仅更新 markdown → 不发(面板停留,避免误清)。
142
+ * - 无 steps 但有 markdown(「说明卡」)→ 发 tasks 空 + markdown 的计划,前端按备注卡展示;
143
+ * - 无 steps 且为「清空整卡」(无 explanation 也无 markdown)→ 发 cleared PLAN_STAT(tasks 空);
144
+ * - 无 steps、无 markdown,但有 explanation(事件投影只有纯文本)→ 不发(面板停留,避免误清)。
139
145
  * 绝不抛(sendPlanStat 本身 fire-and-forget,内部已 catch)。
140
146
  */
141
147
  export function handleCorePlanUpdate(params) {
@@ -156,7 +162,7 @@ export function handleCorePlanUpdate(params) {
156
162
  sendPlanStat({ plan: clearPlan, source: "tool", cleared: true });
157
163
  return;
158
164
  }
159
- console.log(`${LOG_PREFIX} 跳过 PLAN_STAT(无 steps,仅 markdown 更新)sessionKey=${params.sessionKey} ` +
165
+ console.log(`${LOG_PREFIX} 跳过 PLAN_STAT(无 steps 且无 markdown,仅 explanation 文本)sessionKey=${params.sessionKey} ` +
160
166
  `source=${params.payload.source ?? "(none)"}`);
161
167
  }
162
168
  catch (err) {
@@ -1 +1 @@
1
- {"version":3,"file":"plan-core-adapter.js","sourceRoot":"","sources":["../../../src/plan/plan-core-adapter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"plan-core-adapter.js","sourceRoot":"","sources":["../../../src/plan/plan-core-adapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEpD,MAAM,UAAU,GAAG,mCAAmC,CAAC;AAEvD,MAAM,kBAAkB,GAAwB,IAAI,GAAG,CAAC,CAAC,SAAS,EAAE,aAAa,EAAE,WAAW,CAAC,CAAC,CAAC;AAEjG,MAAM,kBAAkB,GAAG,QAAQ,CAAC;AAEpC,iEAAiE;AACjE,MAAM,8BAA8B,GAAG,wBAAwB,CAAC;AAmBhE,0DAA0D;AAC1D,MAAM,UAAU,eAAe,CAAC,UAAkB;IAC9C,MAAM,MAAM,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,aAAa,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACpF,OAAO,QAAQ,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;AACzC,CAAC;AAED,MAAM,UAAU,sBAAsB,CAClC,KAA+C;IAE/C,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACxB,OAAO,EAAE,CAAC;IACd,CAAC;IACD,MAAM,GAAG,GAAmB,EAAE,CAAC;IAC/B,KAAK,MAAM,KAAK,IAAI,KAAK,EAAE,CAAC;QACxB,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC5B,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;YAC1B,IAAI,IAAI;gBAAE,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;YAChD,SAAS;QACb,CAAC;QACD,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YACtC,SAAS;QACb,CAAC;QACD,MAAM,IAAI,GAAG,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACrE,MAAM,SAAS,GAAG,OAAO,KAAK,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;QACvE,IAAI,CAAC,IAAI;YAAE,SAAS;QACpB,MAAM,MAAM,GAAG,kBAAkB,CAAC,GAAG,CAAC,SAAS,CAAC;YAC5C,CAAC,CAAE,SAAwB;YAC3B,CAAC,CAAC,SAAS,CAAC;QAChB,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;IAC/B,CAAC;IACD,OAAO,GAAG,CAAC;AACf,CAAC;AAED,MAAM,kBAAkB,GAAG,IAAI,GAAG,EAAkB,CAAC;AAErD,sDAAsD;AACtD,MAAM,UAAU,wBAAwB,CACpC,UAAkB,EAClB,KAAa,EACb,YAAqB;IAErB,IAAI,YAAY,EAAE,CAAC;QACf,OAAO,YAAY,CAAC;IACxB,CAAC;IACD,MAAM,QAAQ,GAAG,kBAAkB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IACpD,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QACzB,OAAO,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,CAAC;IAC5C,CAAC;IACD,kBAAkB,CAAC,GAAG,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;IAC1C,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;AACzC,CAAC;AAED,+BAA+B;AAC/B,MAAM,UAAU,6BAA6B;IACzC,kBAAkB,CAAC,KAAK,EAAE,CAAC;AAC/B,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,uBAAuB,CAAC,MAgBvC;IACG,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,MAAM,CAAC;IAC9F,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;IACzC,IAAI,KAAK,GAAG,sBAAsB,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAClD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,SAAS,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1D,KAAK,GAAG,sBAAsB,CAAC,SAAS,CAAC,CAAC;QAC1C,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACnB,OAAO,CAAC,GAAG,CACP,GAAG,UAAU,uCAAuC,UAAU,GAAG;gBAC7D,SAAS,KAAK,CAAC,MAAM,WAAW,OAAO,CAAC,MAAM,IAAI,QAAQ,EAAE,CACnE,CAAC;QACN,CAAC;IACL,CAAC;IACD,oDAAoD;IACpD,uDAAuD;IACvD,MAAM,YAAY,GAAG,OAAO,QAAQ,KAAK,QAAQ,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;IAC5F,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;QACtC,OAAO,SAAS,CAAC;IACrB,CAAC;IACD,MAAM,KAAK,GAAW,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QACvC,KAAK,EAAE,IAAI,CAAC,IAAI;QAChB,MAAM,EAAE,IAAI,CAAC,MAAM;KACtB,CAAC,CAAC,CAAC;IACJ,MAAM,WAAW,GAAG,OAAO,OAAO,CAAC,WAAW,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAC9F,MAAM,IAAI,GACN,WAAW,IAAI,CAAC,8BAA8B,CAAC,IAAI,CAAC,WAAW,CAAC;QAC5D,CAAC,CAAC,WAAW;QACb,CAAC,CAAC,kBAAkB,CAAC;IAC7B,MAAM,MAAM,GAAe;QACvB,OAAO,EAAE,aAAa;QACtB,EAAE,EAAE,OAAO;QACX,UAAU;QACV,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACtC,CAAC;IACF,OAAO;QACH,MAAM,EAAE,eAAe,CAAC,UAAU,CAAC;QACnC,IAAI;QACJ,SAAS,EAAE,wBAAwB,CAAC,UAAU,EAAE,KAAK,EAAE,YAAY,CAAC;QACpE,SAAS,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE;QACxC,KAAK;QACL,MAAM;QACN,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACtD,CAAC;AACN,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,kBAAkB,CAAC,MAMlC;IACG,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,GAAG,MAAM,CAAC;IAChE,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;IACzC,MAAM,MAAM,GAAe;QACvB,OAAO,EAAE,aAAa;QACtB,EAAE,EAAE,OAAO;QACX,UAAU;QACV,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACtC,CAAC;IACF,OAAO;QACH,MAAM,EAAE,eAAe,CAAC,UAAU,CAAC;QACnC,IAAI,EAAE,kBAAkB;QACxB,SAAS,EAAE,wBAAwB,CAAC,UAAU,EAAE,KAAK,EAAE,YAAY,CAAC;QACpE,SAAS,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE;QACxC,KAAK,EAAE,EAAE;QACT,MAAM;KACT,CAAC;AACN,CAAC;AAED;;;GAGG;AACH,SAAS,eAAe,CAAC,MAA6D;IAClF,MAAM,WAAW,GACb,OAAO,MAAM,CAAC,OAAO,CAAC,WAAW,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAC5F,IAAI,WAAW,EAAE,CAAC;QACd,OAAO,KAAK,CAAC;IACjB,CAAC;IACD,IAAI,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC;QAC5C,OAAO,KAAK,CAAC;IACjB,CAAC;IACD,OAAO,IAAI,CAAC;AAChB,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,oBAAoB,CAAC,MASpC;IACG,IAAI,CAAC;QACD,MAAM,IAAI,GAAG,uBAAuB,CAAC,MAAM,CAAC,CAAC;QAC7C,IAAI,IAAI,EAAE,CAAC;YACP,YAAY,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;YACvC,OAAO;QACX,CAAC;QACD,IAAI,eAAe,CAAC,MAAM,CAAC,EAAE,CAAC;YAC1B,MAAM,SAAS,GAAG,kBAAkB,CAAC;gBACjC,UAAU,EAAE,MAAM,CAAC,UAAU;gBAC7B,OAAO,EAAE,MAAM,CAAC,OAAO;gBACvB,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aAC/D,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,CACP,GAAG,UAAU,0CAA0C,MAAM,CAAC,UAAU,GAAG;gBACvE,UAAU,MAAM,CAAC,OAAO,CAAC,MAAM,IAAI,QAAQ,EAAE,CACpD,CAAC;YACF,YAAY,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;YACjE,OAAO;QACX,CAAC;QACD,OAAO,CAAC,GAAG,CACP,GAAG,UAAU,iEAAiE,MAAM,CAAC,UAAU,GAAG;YAC9F,UAAU,MAAM,CAAC,OAAO,CAAC,MAAM,IAAI,QAAQ,EAAE,CACpD,CAAC;IACN,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACX,OAAO,CAAC,IAAI,CAAC,GAAG,UAAU,oBAAoB,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACjE,CAAC;AACL,CAAC"}
@@ -180,6 +180,18 @@ describe("buildPlanFromCoreUpdate", () => {
180
180
  cardSteps: [],
181
181
  }), undefined);
182
182
  });
183
+ it("无 steps 但有 markdown → 产「说明卡」(tasks 空 + markdown)", () => {
184
+ const plan = buildPlanFromCoreUpdate({
185
+ sessionKey: "sess-1",
186
+ groupId: "g-1",
187
+ payload: { steps: [], explanation: "正在核对文件" },
188
+ nowMs: NOW,
189
+ markdown: "正在核对文件",
190
+ });
191
+ assert.ok(plan);
192
+ assert.deepEqual(plan.tasks, []);
193
+ assert.equal(plan.markdown, "正在核对文件");
194
+ });
183
195
  });
184
196
  describe("handleCorePlanUpdate", () => {
185
197
  it("有 steps 且 WS 已登记 → 发一条 source=tool 的 PLAN_STAT", () => {
@@ -221,16 +233,23 @@ describe("handleCorePlanUpdate", () => {
221
233
  }));
222
234
  assert.equal(calls.length, 0);
223
235
  });
224
- it("空 steps + 落库卡 markdown → 不发(视为 markdown 更新,不误清)", () => {
236
+ it("空 steps + 落库卡 markdown → 发「说明卡」PLAN_STAT(tasks 空 + markdown,非 cleared)", () => {
225
237
  const { client, calls } = makeRecordingClient();
226
238
  setPlanWsClient("g-1", client, "msg-1");
227
239
  assert.doesNotThrow(() => handleCorePlanUpdate({
228
240
  sessionKey: "sess-1",
229
241
  groupId: "g-1",
230
- payload: { steps: [] },
242
+ payload: { steps: [], explanation: "**收尾中**" },
231
243
  markdown: "**收尾中**",
232
244
  }));
233
- assert.equal(calls.length, 0);
245
+ assert.equal(calls.length, 1);
246
+ assert.equal(calls[0].event, "PLAN_STAT");
247
+ assert.equal(calls[0].data.source, "tool");
248
+ assert.notEqual(calls[0].data.cleared, true);
249
+ const plan = calls[0].data.plan;
250
+ assert.deepEqual(plan.tasks, []);
251
+ assert.equal(plan.markdown, "**收尾中**");
252
+ assert.equal(plan.planId, buildCorePlanId("sess-1"));
234
253
  });
235
254
  it("空 steps + 落库卡 steps → 用卡 steps 发 PLAN_STAT", () => {
236
255
  const { client, calls } = makeRecordingClient();
@@ -1 +1 @@
1
- {"version":3,"file":"plan-core-adapter.test.js","sourceRoot":"","sources":["../../../src/plan/plan-core-adapter.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"plan-core-adapter.test.js","sourceRoot":"","sources":["../../../src/plan/plan-core-adapter.test.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"plan-core-db.d.ts","sourceRoot":"","sources":["../../../src/plan/plan-core-db.ts"],"names":[],"mappings":"AAOA,MAAM,MAAM,sBAAsB,GAAG;IACjC,KAAK,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,SAAS,GAAG,aAAa,GAAG,WAAW,CAAA;KAAE,CAAC,CAAC;IAChF,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;CACvB,CAAC;AAIF,kFAAkF;AAClF,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAEvD;AAED,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAK9E;AA0BD;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE;IACzC,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;CACtB,GAAG,sBAAsB,GAAG,SAAS,CAsDrC"}
1
+ {"version":3,"file":"plan-core-db.d.ts","sourceRoot":"","sources":["../../../src/plan/plan-core-db.ts"],"names":[],"mappings":"AAOA,MAAM,MAAM,sBAAsB,GAAG;IACjC,KAAK,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,SAAS,GAAG,aAAa,GAAG,WAAW,CAAA;KAAE,CAAC,CAAC;IAChF,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;CACvB,CAAC;AAIF,kFAAkF;AAClF,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAEvD;AAED,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAK9E;AA0BD;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE;IACzC,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;CACtB,GAAG,sBAAsB,GAAG,SAAS,CAyDrC"}
@@ -64,12 +64,14 @@ export function readCoreProgressCard(params) {
64
64
  stepsJson = [];
65
65
  }
66
66
  const steps = parseStoredSteps(stepsJson);
67
- if (steps.length === 0) {
67
+ const markdown = typeof row.markdown === "string" && row.markdown.trim() ? row.markdown : undefined;
68
+ // 只有 markdown 的「说明卡」(steps 为空)也要返回,否则下游拿不到说明原文。
69
+ if (steps.length === 0 && !markdown) {
68
70
  return undefined;
69
71
  }
70
72
  return {
71
73
  steps,
72
- ...(row.markdown ? { markdown: row.markdown } : {}),
74
+ ...(markdown ? { markdown } : {}),
73
75
  revision: row.revision ?? 0,
74
76
  createdAtMs: row.created_at ?? 0,
75
77
  updatedAtMs: row.updated_at ?? 0,
@@ -1 +1 @@
1
- {"version":3,"file":"plan-core-db.js","sourceRoot":"","sources":["../../../src/plan/plan-core-db.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"plan-core-db.js","sourceRoot":"","sources":["../../../src/plan/plan-core-db.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,MAAM,UAAU,GAAG,8BAA8B,CAAC;AAElD,MAAM,aAAa,GAAwB,IAAI,GAAG,CAAC,CAAC,SAAS,EAAE,aAAa,EAAE,WAAW,CAAC,CAAC,CAAC;AAU5F,IAAI,aAAiC,CAAC;AAEtC,kFAAkF;AAClF,MAAM,UAAU,qBAAqB,CAAC,GAAW;IAC7C,aAAa,GAAG,GAAG,CAAC;AACxB,CAAC;AAED,MAAM,UAAU,0BAA0B,CAAC,OAAe;IACtD,IAAI,CAAC,aAAa,EAAE,CAAC;QACjB,OAAO,SAAS,CAAC;IACrB,CAAC;IACD,OAAO,IAAI,CAAC,aAAa,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,uBAAuB,CAAC,CAAC;AACpF,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAc;IACpC,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QACtC,OAAO,KAAK,CAAC;IACjB,CAAC;IACD,MAAM,GAAG,GAAG,KAA6C,CAAC;IAC1D,IAAI,OAAO,GAAG,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;QACnD,OAAO,KAAK,CAAC;IACjB,CAAC;IACD,OAAO,OAAO,GAAG,CAAC,MAAM,KAAK,QAAQ,IAAI,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AAC3E,CAAC;AAED,SAAS,gBAAgB,CAAC,GAAY;IAClC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QACtB,OAAO,EAAE,CAAC;IACd,CAAC;IACD,MAAM,GAAG,GAAoC,EAAE,CAAC;IAChD,KAAK,MAAM,KAAK,IAAI,GAAG,EAAE,CAAC;QACtB,IAAI,gBAAgB,CAAC,KAAK,CAAC,EAAE,CAAC;YAC1B,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;QAChE,CAAC;IACL,CAAC;IACD,OAAO,GAAG,CAAC;AACf,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,oBAAoB,CAAC,MAGpC;IACG,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,GAAG,MAAM,CAAC;IACvC,MAAM,MAAM,GAAG,0BAA0B,CAAC,OAAO,CAAC,CAAC;IACnD,IAAI,CAAC,MAAM,EAAE,CAAC;QACV,OAAO,SAAS,CAAC;IACrB,CAAC;IACD,IAAI,EAA4B,CAAC;IACjC,IAAI,CAAC;QACD,EAAE,GAAG,IAAI,YAAY,CAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;QAClD,EAAE,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;QACvC,MAAM,GAAG,GAAG,EAAE;aACT,OAAO,CACJ,gEAAgE;YAC5D,oDAAoD,CAC3D;aACA,GAAG,CAAC,UAAU,CAQJ,CAAC;QAChB,IAAI,CAAC,GAAG,EAAE,CAAC;YACP,OAAO,SAAS,CAAC;QACrB,CAAC;QACD,IAAI,SAAkB,CAAC;QACvB,IAAI,CAAC;YACD,SAAS,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACjE,CAAC;QAAC,MAAM,CAAC;YACL,SAAS,GAAG,EAAE,CAAC;QACnB,CAAC;QACD,MAAM,KAAK,GAAG,gBAAgB,CAAC,SAAS,CAAC,CAAC;QAC1C,MAAM,QAAQ,GACV,OAAO,GAAG,CAAC,QAAQ,KAAK,QAAQ,IAAI,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;QACvF,gDAAgD;QAChD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClC,OAAO,SAAS,CAAC;QACrB,CAAC;QACD,OAAO;YACH,KAAK;YACL,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACjC,QAAQ,EAAE,GAAG,CAAC,QAAQ,IAAI,CAAC;YAC3B,WAAW,EAAE,GAAG,CAAC,UAAU,IAAI,CAAC;YAChC,WAAW,EAAE,GAAG,CAAC,UAAU,IAAI,CAAC;SACnC,CAAC;IACN,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACX,OAAO,CAAC,IAAI,CAAC,GAAG,UAAU,qCAAqC,OAAO,KAAK,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC1F,OAAO,SAAS,CAAC;IACrB,CAAC;YAAS,CAAC;QACP,IAAI,CAAC;YACD,EAAE,EAAE,KAAK,EAAE,CAAC;QAChB,CAAC;QAAC,MAAM,CAAC;YACL,cAAc;QAClB,CAAC;IACL,CAAC;AACL,CAAC"}
@@ -30,7 +30,7 @@ function seedAgentDb(baseDir, agentId, rows) {
30
30
  `);
31
31
  const insert = db.prepare("INSERT INTO session_progress_cards (session_key, markdown, steps_json, revision, created_at, updated_at) VALUES (?, ?, ?, ?, ?, ?);");
32
32
  for (const row of rows) {
33
- insert.run(row.sessionKey, null, row.stepsJson, row.revision ?? 1, row.createdAtMs ?? 1_700_000_000_000, row.updatedAtMs ?? 1_700_000_600_000);
33
+ insert.run(row.sessionKey, row.markdown ?? null, row.stepsJson, row.revision ?? 1, row.createdAtMs ?? 1_700_000_000_000, row.updatedAtMs ?? 1_700_000_600_000);
34
34
  }
35
35
  }
36
36
  finally {
@@ -104,6 +104,24 @@ describe("resolveCoreAgentSqlitePath / readCoreProgressCard", () => {
104
104
  const filtered = readCoreProgressCard({ agentId: "main", sessionKey: "s-filtered" });
105
105
  assert.deepEqual(filtered?.steps, [{ step: "keep", status: "pending" }]);
106
106
  });
107
+ it("steps 为空但 markdown 非空 → 返回说明卡(steps 空 + markdown)", () => {
108
+ const base = makeTempBase();
109
+ setCoreAgentStateBase(base);
110
+ seedAgentDb(base, "main", [
111
+ {
112
+ sessionKey: "agent:main:note-only",
113
+ stepsJson: null,
114
+ markdown: "正在核对文件",
115
+ revision: 2,
116
+ updatedAtMs: 1_700_000_900_000,
117
+ },
118
+ ]);
119
+ const card = readCoreProgressCard({ agentId: "main", sessionKey: "agent:main:note-only" });
120
+ assert.ok(card);
121
+ assert.deepEqual(card.steps, []);
122
+ assert.equal(card.markdown, "正在核对文件");
123
+ assert.equal(card.revision, 2);
124
+ });
107
125
  it("行/库不存在 → undefined;库文件不存在 → undefined 不外抛", () => {
108
126
  const base = makeTempBase();
109
127
  setCoreAgentStateBase(base);
@@ -1 +1 @@
1
- {"version":3,"file":"plan-core-db.test.js","sourceRoot":"","sources":["../../../src/plan/plan-core-db.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"plan-core-db.test.js","sourceRoot":"","sources":["../../../src/plan/plan-core-db.test.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"plan-core-snapshot.d.ts","sourceRoot":"","sources":["../../../src/plan/plan-core-snapshot.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,8BAA8B,CAAC;AACzD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,EAAwB,KAAK,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAetF,+DAA+D;AAC/D,wBAAgB,qBAAqB,CAAC,MAAM,EAAE;IAC1C,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,sBAAsB,CAAC;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB,GAAG,IAAI,GAAG,SAAS,CAYnB;AAED;;;GAGG;AACH,wBAAgB,8BAA8B,CAAC,MAAM,EAAE;IACnD,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,cAAc,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;CAClB,GAAG,IAAI,CAqCP"}
1
+ {"version":3,"file":"plan-core-snapshot.d.ts","sourceRoot":"","sources":["../../../src/plan/plan-core-snapshot.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,8BAA8B,CAAC;AACzD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,EAAwB,KAAK,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAuBtF,+DAA+D;AAC/D,wBAAgB,qBAAqB,CAAC,MAAM,EAAE;IAC1C,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,sBAAsB,CAAC;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB,GAAG,IAAI,GAAG,SAAS,CAYnB;AAED;;;GAGG;AACH,wBAAgB,8BAA8B,CAAC,MAAM,EAAE;IACnD,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,cAAc,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;CAClB,GAAG,IAAI,CAqCP"}
@@ -5,9 +5,17 @@ import { setPlanWsClient } from "./plan-ws-registry.js";
5
5
  const LOG_PREFIX = "[xg_cwork_im] [plan-core-snapshot]";
6
6
  /** 快照新鲜度阈值:core 卡超过 1 小时未更新,视为已失败/过期,快照不再推给前端。 */
7
7
  const CORE_PLAN_SNAPSHOT_STALE_MS = 60 * 60 * 1_000;
8
- /** 「未完成」判定:存在 status !== "completed" 的步骤。空 steps 已被读取层过滤。 */
8
+ /**
9
+ * 「未完成」判定:
10
+ * - 存在 status !== "completed" 的步骤;或
11
+ * - 无步骤但有 markdown(「说明卡」,需随快照恢复展示)。
12
+ * 空 steps 且无 markdown 的卡已被读取层过滤。
13
+ */
9
14
  function isUnfinished(card) {
10
- return card.steps.some((step) => step.status !== "completed");
15
+ if (card.steps.some((step) => step.status !== "completed")) {
16
+ return true;
17
+ }
18
+ return card.steps.length === 0 && Boolean(card.markdown?.trim());
11
19
  }
12
20
  /** 由 core 落库卡合成 Plan(source:"snapshot");任何失败静默返回 undefined。 */
13
21
  export function buildPlanFromCoreCard(params) {
@@ -1 +1 @@
1
- {"version":3,"file":"plan-core-snapshot.js","sourceRoot":"","sources":["../../../src/plan/plan-core-snapshot.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"plan-core-snapshot.js","sourceRoot":"","sources":["../../../src/plan/plan-core-snapshot.ts"],"names":[],"mappings":"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"}
@@ -139,6 +139,30 @@ describe("registerCorePlanSnapshotClient", () => {
139
139
  });
140
140
  assert.equal(calls.length, 0);
141
141
  });
142
+ it("无 steps 但 markdown 的「说明卡」→ 快照发送(tasks 空 + markdown)", () => {
143
+ const base = makeTempBase();
144
+ setCoreAgentStateBase(base);
145
+ const sessionKey = "agent:main:s-1";
146
+ seedCard(base, "main", sessionKey, {
147
+ stepsJson: null,
148
+ markdown: "正在核对文件",
149
+ updatedAtMs: NOW - 5 * 60_000,
150
+ });
151
+ const { client, calls } = makeRecordingClient();
152
+ registerCorePlanSnapshotClient({
153
+ groupId: "g-1",
154
+ client,
155
+ replyToMsgId: "msg-1",
156
+ agentId: "main",
157
+ sessionKey,
158
+ nowMs: NOW,
159
+ });
160
+ assert.equal(calls.length, 1);
161
+ const plan = calls[0].data.plan;
162
+ assert.equal(calls[0].data.source, "snapshot");
163
+ assert.deepEqual(plan.tasks, []);
164
+ assert.equal(plan.markdown, "正在核对文件");
165
+ });
142
166
  it("core 无卡 / 库不存在 → 登记成功但不发,不外抛", () => {
143
167
  const base = makeTempBase();
144
168
  setCoreAgentStateBase(base);
@@ -1 +1 @@
1
- {"version":3,"file":"plan-core-snapshot.test.js","sourceRoot":"","sources":["../../../src/plan/plan-core-snapshot.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"plan-core-snapshot.test.js","sourceRoot":"","sources":["../../../src/plan/plan-core-snapshot.test.ts"],"names":[],"mappings":"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"}
@@ -8,7 +8,7 @@ export declare function setPlanWsClient(groupId: string, client: ImStreamClient,
8
8
  export declare function getPlanWsClient(groupId: string): PlanWsTarget | undefined;
9
9
  /** 账号真正停止时,移除指向该物理 client 的全部群组路由;其他账号路由不受影响。 */
10
10
  export declare function removePlanWsClientsByClient(client: ImStreamClient): void;
11
- /** 测试用:重置模块级缓存 */
11
+ /** 测试用:清空进程级共享登记表 */
12
12
  export declare function resetPlanWsRegistryForTest(): void;
13
13
  /** 插件卸载/重载时清空计划 WS 登记表。 */
14
14
  export declare function disposePlanWsRegistry(): void;
@@ -1 +1 @@
1
- {"version":3,"file":"plan-ws-registry.d.ts","sourceRoot":"","sources":["../../../src/plan/plan-ws-registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAElE,MAAM,WAAW,YAAY;IACzB,MAAM,EAAE,cAAc,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;CACxB;AAiBD,0CAA0C;AAC1C,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,GAAG,IAAI,CAKnG;AAED,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS,CAEzE;AAED,iDAAiD;AACjD,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI,CAMxE;AAED,kBAAkB;AAClB,wBAAgB,0BAA0B,IAAI,IAAI,CAEjD;AAED,2BAA2B;AAC3B,wBAAgB,qBAAqB,IAAI,IAAI,CAE5C"}
1
+ {"version":3,"file":"plan-ws-registry.d.ts","sourceRoot":"","sources":["../../../src/plan/plan-ws-registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAGlE,MAAM,WAAW,YAAY;IACzB,MAAM,EAAE,cAAc,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;CACxB;AAuBD,0CAA0C;AAC1C,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,GAAG,IAAI,CAKnG;AAED,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS,CAEzE;AAED,iDAAiD;AACjD,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI,CAMxE;AAED,qBAAqB;AACrB,wBAAgB,0BAA0B,IAAI,IAAI,CAEjD;AAED,2BAA2B;AAC3B,wBAAgB,qBAAqB,IAAI,IAAI,CAE5C"}
@@ -1,6 +1,13 @@
1
+ import { getSharedMap } from "../plugin/process-shared-store.js";
1
2
  /** groupId → WS client 登记表容量上限:超出时逐出最旧(插入序)。 */
2
3
  const PLAN_WS_REGISTRY_CAPACITY = 200;
3
- const planWsClients = new Map();
4
+ /**
5
+ * 必须放进程级共享存储(globalThis),不能是模块级 `new Map()`:
6
+ * 插件模块在同一进程里会被多次求值(日志 `module loaded instance=... candidates=N`),
7
+ * 写入(入站 dispatch)与读取(plan/tool 事件、CHAT_FILE/ACTION_DISPATCH)常常落在不同
8
+ * 模块实例里;模块级表会导致「写一份、读另一份」,表现为 `未登记 WS client` 而漏发。
9
+ */
10
+ const planWsClients = getSharedMap("plan-ws-clients");
4
11
  function evictOldestOverCapacity() {
5
12
  while (planWsClients.size > PLAN_WS_REGISTRY_CAPACITY) {
6
13
  const oldestKey = planWsClients.keys().next().value;
@@ -28,7 +35,7 @@ export function removePlanWsClientsByClient(client) {
28
35
  }
29
36
  }
30
37
  }
31
- /** 测试用:重置模块级缓存 */
38
+ /** 测试用:清空进程级共享登记表 */
32
39
  export function resetPlanWsRegistryForTest() {
33
40
  disposePlanWsRegistry();
34
41
  }
@@ -1 +1 @@
1
- {"version":3,"file":"plan-ws-registry.js","sourceRoot":"","sources":["../../../src/plan/plan-ws-registry.ts"],"names":[],"mappings":"AAOA,gDAAgD;AAChD,MAAM,yBAAyB,GAAG,GAAG,CAAC;AAEtC,MAAM,aAAa,GAAG,IAAI,GAAG,EAAwB,CAAC;AAEtD,SAAS,uBAAuB;IAC5B,OAAO,aAAa,CAAC,IAAI,GAAG,yBAAyB,EAAE,CAAC;QACpD,MAAM,SAAS,GAAG,aAAa,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC;QACpD,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;YAC1B,MAAM;QACV,CAAC;QACD,aAAa,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IACpC,CAAC;AACL,CAAC;AAED,0CAA0C;AAC1C,MAAM,UAAU,eAAe,CAAC,OAAe,EAAE,MAAsB,EAAE,YAAoB;IACzF,+BAA+B;IAC/B,aAAa,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC9B,aAAa,CAAC,GAAG,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC;IACrD,uBAAuB,EAAE,CAAC;AAC9B,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,OAAe;IAC3C,OAAO,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AACtC,CAAC;AAED,iDAAiD;AACjD,MAAM,UAAU,2BAA2B,CAAC,MAAsB;IAC9D,KAAK,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,aAAa,EAAE,CAAC;QAC5C,IAAI,MAAM,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;YAC3B,aAAa,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAClC,CAAC;IACL,CAAC;AACL,CAAC;AAED,kBAAkB;AAClB,MAAM,UAAU,0BAA0B;IACtC,qBAAqB,EAAE,CAAC;AAC5B,CAAC;AAED,2BAA2B;AAC3B,MAAM,UAAU,qBAAqB;IACjC,aAAa,CAAC,KAAK,EAAE,CAAC;AAC1B,CAAC"}
1
+ {"version":3,"file":"plan-ws-registry.js","sourceRoot":"","sources":["../../../src/plan/plan-ws-registry.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AAOjE,gDAAgD;AAChD,MAAM,yBAAyB,GAAG,GAAG,CAAC;AAEtC;;;;;GAKG;AACH,MAAM,aAAa,GAAG,YAAY,CAAuB,iBAAiB,CAAC,CAAC;AAE5E,SAAS,uBAAuB;IAC5B,OAAO,aAAa,CAAC,IAAI,GAAG,yBAAyB,EAAE,CAAC;QACpD,MAAM,SAAS,GAAG,aAAa,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC;QACpD,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;YAC1B,MAAM;QACV,CAAC;QACD,aAAa,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IACpC,CAAC;AACL,CAAC;AAED,0CAA0C;AAC1C,MAAM,UAAU,eAAe,CAAC,OAAe,EAAE,MAAsB,EAAE,YAAoB;IACzF,+BAA+B;IAC/B,aAAa,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC9B,aAAa,CAAC,GAAG,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC;IACrD,uBAAuB,EAAE,CAAC;AAC9B,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,OAAe;IAC3C,OAAO,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AACtC,CAAC;AAED,iDAAiD;AACjD,MAAM,UAAU,2BAA2B,CAAC,MAAsB;IAC9D,KAAK,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,aAAa,EAAE,CAAC;QAC5C,IAAI,MAAM,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;YAC3B,aAAa,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAClC,CAAC;IACL,CAAC;AACL,CAAC;AAED,qBAAqB;AACrB,MAAM,UAAU,0BAA0B;IACtC,qBAAqB,EAAE,CAAC;AAC5B,CAAC;AAED,2BAA2B;AAC3B,MAAM,UAAU,qBAAqB;IACjC,aAAa,CAAC,KAAK,EAAE,CAAC;AAC1B,CAAC"}
@@ -2,6 +2,7 @@ import assert from "node:assert/strict";
2
2
  import { describe, it, beforeEach } from "node:test";
3
3
  import { getPlanWsClient, removePlanWsClientsByClient, resetPlanWsRegistryForTest, setPlanWsClient, } from "./plan-ws-registry.js";
4
4
  import { disposePluginModule } from "../plugin/plugin-dispose.js";
5
+ import { getSharedMap } from "../plugin/process-shared-store.js";
5
6
  function makeClient() {
6
7
  return {
7
8
  start: async () => { },
@@ -40,6 +41,13 @@ describe("plan-ws-registry", () => {
40
41
  it("未登记的 groupId → undefined", () => {
41
42
  assert.equal(getPlanWsClient("g-never-registered"), undefined);
42
43
  });
44
+ it("登记表落在进程级共享表(跨模块实例可见,防回退为模块级 Map)", () => {
45
+ const client = makeClient();
46
+ setPlanWsClient("g-shared", client, "msg-shared");
47
+ const shared = getSharedMap("plan-ws-clients");
48
+ assert.equal(shared.get("g-shared")?.client, client);
49
+ assert.equal(shared.get("g-shared")?.replyToMsgId, "msg-shared");
50
+ });
43
51
  it("按物理 client 定向移除路由时不影响其他 client", () => {
44
52
  const clientA = makeClient();
45
53
  const clientB = makeClient();
@@ -1 +1 @@
1
- {"version":3,"file":"plan-ws-registry.test.js","sourceRoot":"","sources":["../../../src/plan/plan-ws-registry.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"plan-ws-registry.test.js","sourceRoot":"","sources":["../../../src/plan/plan-ws-registry.test.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@xgjktech/xg_cwork_im",
3
- "version": "1.19.36",
3
+ "version": "1.19.38",
4
4
  "description": "XG CWork IM channel plugin for OpenClaw",
5
5
  "keywords": [
6
6
  "bot",
@@ -1,25 +0,0 @@
1
- import type { Plan, PlanSummary } from "@xgjktech/xg-openclaw-shared";
2
- /** 注入 stateDir(来自 api.runtime.state.resolveStateDir())。register(api) 时调用一次。 */
3
- export declare function setPlanStateDir(dir: string): void;
4
- /** 测试用:重置模块级缓存与 stateDir */
5
- export declare function resetPlanStoreAccessForTest(): void;
6
- /** 插件卸载/重载时释放计划库只读句柄与 stateDir(shared 句柄无 close,释放引用即可)。 */
7
- export declare function disposePlanStore(): void;
8
- /**
9
- * 按 planId 反查完整计划。
10
- * 库不存在 / 打开失败 / 读取异常 → 返回 undefined 并记 warn 日志,绝不抛。
11
- */
12
- export declare function getPlanById(planId: string): Plan | undefined;
13
- /**
14
- * 列出全部计划摘要(重启恢复用)。
15
- * 异常同上 → 返回空数组,绝不抛。
16
- */
17
- export declare function listPlanSummaries(): PlanSummary[];
18
- /**
19
- * 按来源会话(channel + to)反查全量 plan(WS 快照用)。
20
- * shared 侧只读实现已内置"旧库缺 origin 列 → 返回 []"的探测降级;
21
- * 这里叠加本文件既有的句柄级降级纪律:拿不到句柄 / 查询异常 → 记 warn、返回 []、绝不抛、
22
- * 失败时清空句柄缓存(与 getPlanById 同款,供后续调用重试恢复)。
23
- */
24
- export declare function listPlansByOrigin(channel: string, to: string): Plan[];
25
- //# sourceMappingURL=plan-store-access.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"plan-store-access.d.ts","sourceRoot":"","sources":["../../src/plan-store-access.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAWtE,+EAA+E;AAC/E,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAIjD;AAED,4BAA4B;AAC5B,wBAAgB,2BAA2B,IAAI,IAAI,CAElD;AAED,4DAA4D;AAC5D,wBAAgB,gBAAgB,IAAI,IAAI,CAIvC;AAyBD;;;GAGG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAY5D;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,IAAI,WAAW,EAAE,CAYjD;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI,EAAE,CAYrE"}
@@ -1,100 +0,0 @@
1
- import { openPlanStoreReadonly, resolvePlanDbPath } from "@xgjktech/xg-openclaw-shared";
2
- const LOG_PREFIX = "[xg_cwork_im] [plan-store]";
3
- let stateDir;
4
- let handle;
5
- let warnedNoStateDir = false;
6
- /** 注入 stateDir(来自 api.runtime.state.resolveStateDir())。register(api) 时调用一次。 */
7
- export function setPlanStateDir(dir) {
8
- stateDir = dir;
9
- handle = undefined;
10
- warnedNoStateDir = false;
11
- }
12
- /** 测试用:重置模块级缓存与 stateDir */
13
- export function resetPlanStoreAccessForTest() {
14
- disposePlanStore();
15
- }
16
- /** 插件卸载/重载时释放计划库只读句柄与 stateDir(shared 句柄无 close,释放引用即可)。 */
17
- export function disposePlanStore() {
18
- stateDir = undefined;
19
- handle = undefined;
20
- warnedNoStateDir = false;
21
- }
22
- function getHandle() {
23
- if (handle) {
24
- return handle;
25
- }
26
- if (!stateDir) {
27
- if (!warnedNoStateDir) {
28
- console.warn(`${LOG_PREFIX} stateDir 未设置,无法打开计划库`);
29
- warnedNoStateDir = true;
30
- }
31
- return undefined;
32
- }
33
- let dbPath = "<unresolved>";
34
- try {
35
- dbPath = resolvePlanDbPath(stateDir);
36
- handle = openPlanStoreReadonly(dbPath);
37
- return handle;
38
- }
39
- catch (cause) {
40
- console.warn(`${LOG_PREFIX} 打开计划库失败 dbPath=${dbPath} 原因=${String(cause)}`);
41
- return undefined;
42
- }
43
- }
44
- /**
45
- * 按 planId 反查完整计划。
46
- * 库不存在 / 打开失败 / 读取异常 → 返回 undefined 并记 warn 日志,绝不抛。
47
- */
48
- export function getPlanById(planId) {
49
- const h = getHandle();
50
- if (!h) {
51
- return undefined;
52
- }
53
- try {
54
- return h.get(planId);
55
- }
56
- catch (cause) {
57
- console.warn(`${LOG_PREFIX} 读取 plan 失败 planId=${planId} 原因=${String(cause)}`);
58
- handle = undefined;
59
- return undefined;
60
- }
61
- }
62
- /**
63
- * 列出全部计划摘要(重启恢复用)。
64
- * 异常同上 → 返回空数组,绝不抛。
65
- */
66
- export function listPlanSummaries() {
67
- const h = getHandle();
68
- if (!h) {
69
- return [];
70
- }
71
- try {
72
- return h.list();
73
- }
74
- catch (cause) {
75
- console.warn(`${LOG_PREFIX} 列出 plan 列表失败 原因=${String(cause)}`);
76
- handle = undefined;
77
- return [];
78
- }
79
- }
80
- /**
81
- * 按来源会话(channel + to)反查全量 plan(WS 快照用)。
82
- * shared 侧只读实现已内置"旧库缺 origin 列 → 返回 []"的探测降级;
83
- * 这里叠加本文件既有的句柄级降级纪律:拿不到句柄 / 查询异常 → 记 warn、返回 []、绝不抛、
84
- * 失败时清空句柄缓存(与 getPlanById 同款,供后续调用重试恢复)。
85
- */
86
- export function listPlansByOrigin(channel, to) {
87
- const h = getHandle();
88
- if (!h) {
89
- return [];
90
- }
91
- try {
92
- return h.listPlansByOrigin({ channel, to });
93
- }
94
- catch (cause) {
95
- console.warn(`${LOG_PREFIX} 按 origin 列出 plan 失败 channel=${channel} to=${to} 原因=${String(cause)}`);
96
- handle = undefined;
97
- return [];
98
- }
99
- }
100
- //# sourceMappingURL=plan-store-access.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"plan-store-access.js","sourceRoot":"","sources":["../../src/plan-store-access.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=plan-store-access.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"plan-store-access.test.d.ts","sourceRoot":"","sources":["../../src/plan-store-access.test.ts"],"names":[],"mappings":""}
@@ -1,207 +0,0 @@
1
- import assert from "node:assert/strict";
2
- import { mkdtempSync, rmSync } from "node:fs";
3
- import { tmpdir } from "node:os";
4
- import { join } from "node:path";
5
- import { DatabaseSync } from "node:sqlite";
6
- import { after, afterEach, beforeEach, describe, it } from "node:test";
7
- import { resolvePlanDbPath, SqlitePlanStore } from "@xgjktech/xg-openclaw-shared";
8
- import { getPlanById, listPlanSummaries, listPlansByOrigin, resetPlanStoreAccessForTest, setPlanStateDir, } from "./plan-store-access.js";
9
- const tempDirs = [];
10
- function makeTempStateDir() {
11
- const dir = mkdtempSync(join(tmpdir(), "xg-plan-store-access-test-"));
12
- tempDirs.push(dir);
13
- return dir;
14
- }
15
- function makePlan(overrides = {}) {
16
- return {
17
- planId: "plan-1",
18
- goal: "迁移配置到新版本",
19
- createdAt: "2026-07-27T00:00:00.000Z",
20
- updatedAt: "2026-07-27T00:00:00.000Z",
21
- tasks: [],
22
- ...overrides,
23
- };
24
- }
25
- beforeEach(() => {
26
- resetPlanStoreAccessForTest();
27
- });
28
- afterEach(() => {
29
- resetPlanStoreAccessForTest();
30
- });
31
- after(() => {
32
- for (const dir of tempDirs) {
33
- rmSync(dir, { recursive: true, force: true });
34
- }
35
- });
36
- describe("getPlanById / listPlanSummaries: 缺库降级 (F4)", () => {
37
- it("returns undefined / [] without throwing when plans.sqlite does not exist", () => {
38
- const stateDir = makeTempStateDir();
39
- setPlanStateDir(stateDir);
40
- assert.equal(getPlanById("x"), undefined);
41
- assert.deepEqual(listPlanSummaries(), []);
42
- });
43
- });
44
- describe("getPlanById: 后建库恢复 (F5)", () => {
45
- it("recovers once the harness plugin later creates and writes the db, without resetting module state", () => {
46
- const stateDir = makeTempStateDir();
47
- setPlanStateDir(stateDir);
48
- // T1: 库不存在时先调用一次,期望降级为 undefined 且不缓存失败
49
- assert.equal(getPlanById("plan-1"), undefined);
50
- // T2: harness 侧后建库并写入
51
- const dbPath = resolvePlanDbPath(stateDir);
52
- const writer = new SqlitePlanStore(dbPath);
53
- writer.set(makePlan({ planId: "plan-1", goal: "后建库恢复" }));
54
- writer.close();
55
- // T3: 不重置模块状态,再次调用应能读到(验证未缓存"打开失败")
56
- const plan = getPlanById("plan-1");
57
- assert.ok(plan);
58
- assert.equal(plan.planId, "plan-1");
59
- assert.equal(plan.goal, "后建库恢复");
60
- });
61
- });
62
- describe("getPlanById: 正常反查", () => {
63
- it("round-trips a plan with blocked task (note) and steps", () => {
64
- const stateDir = makeTempStateDir();
65
- setPlanStateDir(stateDir);
66
- const dbPath = resolvePlanDbPath(stateDir);
67
- const writer = new SqlitePlanStore(dbPath);
68
- writer.set(makePlan({
69
- planId: "plan-2",
70
- goal: "带阻塞任务的计划",
71
- tasks: [
72
- {
73
- title: "备份旧配置",
74
- status: "blocked",
75
- note: "缺少权限",
76
- steps: [{ text: "导出 json", status: "completed" }],
77
- },
78
- { title: "校验数据", status: "pending" },
79
- ],
80
- }));
81
- writer.close();
82
- const plan = getPlanById("plan-2");
83
- assert.ok(plan);
84
- assert.equal(plan.goal, "带阻塞任务的计划");
85
- assert.equal(plan.tasks.length, 2);
86
- assert.equal(plan.tasks[0].status, "blocked");
87
- assert.equal(plan.tasks[0].note, "缺少权限");
88
- assert.deepEqual(plan.tasks[0].steps, [{ text: "导出 json", status: "completed" }]);
89
- assert.equal(plan.tasks[1].status, "pending");
90
- });
91
- it("returns undefined for an unknown planId (normal case, not an error)", () => {
92
- const stateDir = makeTempStateDir();
93
- setPlanStateDir(stateDir);
94
- const dbPath = resolvePlanDbPath(stateDir);
95
- const writer = new SqlitePlanStore(dbPath);
96
- writer.set(makePlan({ planId: "plan-exists" }));
97
- writer.close();
98
- assert.equal(getPlanById("plan-does-not-exist"), undefined);
99
- });
100
- });
101
- describe("listPlanSummaries", () => {
102
- it("lists all plans with correct taskCounts", () => {
103
- const stateDir = makeTempStateDir();
104
- setPlanStateDir(stateDir);
105
- const dbPath = resolvePlanDbPath(stateDir);
106
- const writer = new SqlitePlanStore(dbPath);
107
- writer.set(makePlan({
108
- planId: "plan-a",
109
- goal: "计划 A",
110
- tasks: [
111
- { title: "t1", status: "completed" },
112
- { title: "t2", status: "blocked", note: "n" },
113
- { title: "t3", status: "in_progress" },
114
- { title: "t4", status: "pending" },
115
- ],
116
- }));
117
- writer.set(makePlan({
118
- planId: "plan-b",
119
- goal: "计划 B",
120
- tasks: [{ title: "t1", status: "completed" }],
121
- }));
122
- writer.close();
123
- const summaries = listPlanSummaries();
124
- assert.equal(summaries.length, 2);
125
- const byId = new Map(summaries.map((s) => [s.planId, s]));
126
- const a = byId.get("plan-a");
127
- assert.ok(a);
128
- assert.deepEqual(a.taskCounts, { total: 4, completed: 1, blocked: 1, inProgress: 1 });
129
- const b = byId.get("plan-b");
130
- assert.ok(b);
131
- assert.deepEqual(b.taskCounts, { total: 1, completed: 1, blocked: 0, inProgress: 0 });
132
- });
133
- });
134
- describe("未设置 stateDir", () => {
135
- it("getPlanById returns undefined without throwing", () => {
136
- assert.equal(getPlanById("x"), undefined);
137
- assert.deepEqual(listPlanSummaries(), []);
138
- });
139
- });
140
- /** 手工建一个 v1(无 origin 列)的 plans 表,模拟旧库升级前的真实状态(同 shared TASK-2x-1 手法)。 */
141
- function createV1Schema(dbPath) {
142
- const db = new DatabaseSync(dbPath);
143
- db.exec(`
144
- CREATE TABLE IF NOT EXISTS plans (
145
- plan_id TEXT PRIMARY KEY,
146
- goal TEXT NOT NULL,
147
- created_at TEXT NOT NULL,
148
- updated_at TEXT NOT NULL,
149
- doc TEXT NOT NULL
150
- ) STRICT;
151
- `);
152
- db.exec("CREATE INDEX IF NOT EXISTS idx_plans_updated_at ON plans(updated_at);");
153
- db.exec("PRAGMA user_version = 1;");
154
- db.close();
155
- }
156
- function insertV1Row(dbPath, plan) {
157
- const db = new DatabaseSync(dbPath);
158
- db.prepare(`INSERT INTO plans (plan_id, goal, created_at, updated_at, doc)
159
- VALUES (@planId, @goal, @createdAt, @updatedAt, @doc)`).run({
160
- planId: plan.planId,
161
- goal: plan.goal,
162
- createdAt: plan.createdAt,
163
- updatedAt: plan.updatedAt,
164
- doc: JSON.stringify(plan),
165
- });
166
- db.close();
167
- }
168
- describe("listPlansByOrigin", () => {
169
- it("真实临时库 + 多条 plan → 只返回匹配的", () => {
170
- const stateDir = makeTempStateDir();
171
- setPlanStateDir(stateDir);
172
- const dbPath = resolvePlanDbPath(stateDir);
173
- const writer = new SqlitePlanStore(dbPath);
174
- writer.set(makePlan({
175
- planId: "plan-g1",
176
- origin: { channel: "xg_cwork_im", to: "g-1" },
177
- }));
178
- writer.set(makePlan({
179
- planId: "plan-g2",
180
- origin: { channel: "xg_cwork_im", to: "g-2" },
181
- }));
182
- writer.set(makePlan({ planId: "plan-no-origin" }));
183
- writer.close();
184
- const results = listPlansByOrigin("xg_cwork_im", "g-1");
185
- assert.equal(results.length, 1);
186
- assert.equal(results[0].planId, "plan-g1");
187
- });
188
- it("🔴 旧版库(无 origin 列,手工建 v1 表)→ 返回 [] 不抛", () => {
189
- const stateDir = makeTempStateDir();
190
- setPlanStateDir(stateDir);
191
- const dbPath = resolvePlanDbPath(stateDir);
192
- createV1Schema(dbPath);
193
- insertV1Row(dbPath, makePlan({ planId: "plan-old" }));
194
- assert.doesNotThrow(() => {
195
- const results = listPlansByOrigin("xg_cwork_im", "g-1");
196
- assert.deepEqual(results, []);
197
- });
198
- });
199
- it("缺库 → 返回 [] 不抛", () => {
200
- const stateDir = makeTempStateDir();
201
- setPlanStateDir(stateDir);
202
- assert.doesNotThrow(() => {
203
- assert.deepEqual(listPlansByOrigin("xg_cwork_im", "g-1"), []);
204
- });
205
- });
206
- });
207
- //# sourceMappingURL=plan-store-access.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"plan-store-access.test.js","sourceRoot":"","sources":["../../src/plan-store-access.test.ts"],"names":[],"mappings":"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"}