@xgjktech/xg-openclaw-shared 0.2.0 → 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -40,14 +40,11 @@ export declare class PlanInvariantError extends Error {
40
40
  }
41
41
  /**
42
42
  * 校验 Plan 是否满足全部领域不变量,违反则抛出 PlanInvariantError。
43
- * plan_write / plan_execute 写库前必须调用;供两插件共享同一份判定,避免理解漂移。
43
+ * 写入方落库前调用;共享函数签名保持稳定,供旧消费者继续复用。
44
44
  *
45
- * 覆盖的不变量(见 02-PlanStore设计 §2):
46
- * 1. 全计划最多一个 in_progress task。
47
- * 2. 每个 task 内最多一个 in_progress step。
48
- * 3. status==="blocked" 的 task 必须有非空 note。
49
- * 4. planId / goal 非空;tasks 至少一项。
50
- * 5. task.status / step.status 取值必须在枚举内。
45
+ * 仅校验持久化文档的基础形状:planId / goal 非空、tasks 至少一项,
46
+ * task.status / step.status 取值在枚举内。执行纪律由工具 description 引导,
47
+ * 不在共享层阻断草稿计划落库。
51
48
  */
52
49
  export declare function assertPlanInvariants(plan: Plan): void;
53
50
  //# sourceMappingURL=plan-types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"plan-types.d.ts","sourceRoot":"","sources":["../src/plan-types.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,aAAa,GAAG,WAAW,GAAG,SAAS,CAAC;AAC7E,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,aAAa,GAAG,WAAW,CAAC;AAUjE,MAAM,WAAW,IAAI;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,UAAU,CAAC;CACpB;AAED,MAAM,WAAW,IAAI;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,UAAU,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,IAAI,EAAE,CAAC;CAChB;AAED;;;;GAIG;AACH,MAAM,WAAW,UAAU;IACzB,iCAAiC;IACjC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,8BAA8B;IAC9B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,6BAA6B;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kDAAkD;IAClD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,4BAA4B;IAC5B,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,IAAI;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,MAAM,CAAC,EAAE,UAAU,CAAC;CACrB;AAED,qBAAa,kBAAmB,SAAQ,KAAK;gBAC/B,OAAO,EAAE,MAAM;CAI5B;AAUD;;;;;;;;;;GAUG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,CAwDrD"}
1
+ {"version":3,"file":"plan-types.d.ts","sourceRoot":"","sources":["../src/plan-types.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,aAAa,GAAG,WAAW,GAAG,SAAS,CAAC;AAC7E,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,aAAa,GAAG,WAAW,CAAC;AAUjE,MAAM,WAAW,IAAI;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,UAAU,CAAC;CACpB;AAED,MAAM,WAAW,IAAI;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,UAAU,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,IAAI,EAAE,CAAC;CAChB;AAED;;;;GAIG;AACH,MAAM,WAAW,UAAU;IACzB,iCAAiC;IACjC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,8BAA8B;IAC9B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,6BAA6B;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kDAAkD;IAClD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,4BAA4B;IAC5B,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,IAAI;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,MAAM,CAAC,EAAE,UAAU,CAAC;CACrB;AAED,qBAAa,kBAAmB,SAAQ,KAAK;gBAC/B,OAAO,EAAE,MAAM;CAI5B;AAUD;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,CA8BrD"}
@@ -20,14 +20,11 @@ function isStepStatus(value) {
20
20
  }
21
21
  /**
22
22
  * 校验 Plan 是否满足全部领域不变量,违反则抛出 PlanInvariantError。
23
- * plan_write / plan_execute 写库前必须调用;供两插件共享同一份判定,避免理解漂移。
23
+ * 写入方落库前调用;共享函数签名保持稳定,供旧消费者继续复用。
24
24
  *
25
- * 覆盖的不变量(见 02-PlanStore设计 §2):
26
- * 1. 全计划最多一个 in_progress task。
27
- * 2. 每个 task 内最多一个 in_progress step。
28
- * 3. status==="blocked" 的 task 必须有非空 note。
29
- * 4. planId / goal 非空;tasks 至少一项。
30
- * 5. task.status / step.status 取值必须在枚举内。
25
+ * 仅校验持久化文档的基础形状:planId / goal 非空、tasks 至少一项,
26
+ * task.status / step.status 取值在枚举内。执行纪律由工具 description 引导,
27
+ * 不在共享层阻断草稿计划落库。
31
28
  */
32
29
  export function assertPlanInvariants(plan) {
33
30
  if (plan.planId.trim() === "") {
@@ -39,34 +36,17 @@ export function assertPlanInvariants(plan) {
39
36
  if (plan.tasks.length === 0) {
40
37
  throw new PlanInvariantError("tasks 至少一项");
41
38
  }
42
- let inProgressTaskCount = 0;
43
39
  plan.tasks.forEach((task, taskIndex) => {
44
40
  if (!isTaskStatus(task.status)) {
45
41
  throw new PlanInvariantError(`tasks[${taskIndex}].status 取值非法: ${task.status}`);
46
42
  }
47
- if (task.status === "in_progress") {
48
- inProgressTaskCount += 1;
49
- }
50
- if (task.status === "blocked" && (task.note === undefined || task.note.trim() === "")) {
51
- throw new PlanInvariantError(`tasks[${taskIndex}] 状态为 blocked 时必须带非空 note`);
52
- }
53
43
  if (task.steps === undefined) {
54
44
  return;
55
45
  }
56
- let inProgressStepCount = 0;
57
46
  task.steps.forEach((step, stepIndex) => {
58
47
  if (!isStepStatus(step.status)) {
59
48
  throw new PlanInvariantError(`tasks[${taskIndex}].steps[${stepIndex}].status 取值非法: ${step.status}`);
60
49
  }
61
- if (step.status === "in_progress") {
62
- inProgressStepCount += 1;
63
- }
64
50
  });
65
- if (inProgressStepCount > 1) {
66
- throw new PlanInvariantError(`tasks[${taskIndex}] 内 in_progress 的 step 超过一个`);
67
- }
68
51
  });
69
- if (inProgressTaskCount > 1) {
70
- throw new PlanInvariantError("全计划 in_progress 的 task 超过一个");
71
- }
72
52
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@xgjktech/xg-openclaw-shared",
3
- "version": "0.2.0",
3
+ "version": "0.2.1",
4
4
  "description": "xgjktech OpenClaw 插件共享层:Plan 数据模型/不变量、SQLite PlanStore、计划事件契约",
5
5
  "license": "MIT",
6
6
  "type": "module",