@principles/pd-cli 1.117.0 → 1.118.0

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.
@@ -1 +1 @@
1
- {"version":3,"file":"demo-rule-compiler.d.ts","sourceRoot":"","sources":["../../src/services/demo-rule-compiler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAKH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAsCpE;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,gBAAgB,CA2BnF"}
1
+ {"version":3,"file":"demo-rule-compiler.d.ts","sourceRoot":"","sources":["../../src/services/demo-rule-compiler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAKH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAmBpE;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,gBAAgB,CA4BnF"}
@@ -14,7 +14,7 @@
14
14
  * `loadRuleImplementationModule` for production code_tool_hook evaluation.
15
15
  */
16
16
  import * as vm from 'node:vm';
17
- import { safeStringifyPreview, validateCorrectionProposal } from '@principles/core/runtime-v2';
17
+ import { safeStringifyPreview, validateRuleHostResult } from '@principles/core/runtime-v2';
18
18
  function normalizeSource(sourceCode) {
19
19
  const withoutExports = sourceCode
20
20
  .replace(/export\s+const\s+meta\s*=/, 'const meta =')
@@ -25,29 +25,9 @@ globalThis.__pdRuleModule = {
25
25
  evaluate: typeof evaluate === 'undefined' ? undefined : evaluate,
26
26
  };`;
27
27
  }
28
- function isRecord(value) {
29
- return typeof value === 'object' && value !== null && !Array.isArray(value);
30
- }
31
28
  function isRuleEvaluator(value) {
32
29
  return typeof value === 'function';
33
30
  }
34
- function isRuleHostResult(value) {
35
- if (!isRecord(value))
36
- return false;
37
- const decision = Object.hasOwn(value, 'decision') ? value.decision : undefined;
38
- const matched = Object.hasOwn(value, 'matched') ? value.matched : undefined;
39
- const reason = Object.hasOwn(value, 'reason') ? value.reason : undefined;
40
- if (decision !== 'allow' && decision !== 'block' && decision !== 'requireApproval' && decision !== 'auto_correct') {
41
- return false;
42
- }
43
- if (typeof matched !== 'boolean' || typeof reason !== 'string')
44
- return false;
45
- if (decision === 'auto_correct') {
46
- const proposal = Object.hasOwn(value, 'correctionProposal') ? value.correctionProposal : undefined;
47
- return validateCorrectionProposal(proposal).valid;
48
- }
49
- return true;
50
- }
51
31
  /**
52
32
  * Compile rule implementation code and return a typed evaluate function.
53
33
  * Mirrors `createReplayEvaluateFromCode` in openclaw-plugin.
@@ -68,8 +48,9 @@ export function compileDemoRule(code, sourceLabel) {
68
48
  const evaluateFn = moduleExports.evaluate;
69
49
  return (input, helpers) => {
70
50
  const result = evaluateFn(input, helpers);
71
- if (!isRuleHostResult(result)) {
72
- throw new Error(`[${sourceLabel}]: evaluate returned invalid RuleHostResult (got ${typeof result === 'object' && result !== null ? safeStringifyPreview(result) : String(result)})`);
51
+ const validation = validateRuleHostResult(result);
52
+ if (!validation.valid) {
53
+ throw new Error(`[${sourceLabel}]: evaluate returned invalid RuleHostResult — ${validation.errors.join('; ')} (got ${typeof result === 'object' && result !== null ? safeStringifyPreview(result) : String(result)})`);
73
54
  }
74
55
  return result;
75
56
  };
@@ -1 +1 @@
1
- {"version":3,"file":"demo-rule-compiler.js","sourceRoot":"","sources":["../../src/services/demo-rule-compiler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAI9B,OAAO,EAAE,oBAAoB,EAAE,0BAA0B,EAAE,MAAM,6BAA6B,CAAC;AAE/F,SAAS,eAAe,CAAC,UAAkB;IACzC,MAAM,cAAc,GAAG,UAAU;SAC9B,OAAO,CAAC,2BAA2B,EAAE,cAAc,CAAC;SACpD,OAAO,CAAC,mCAAmC,EAAE,oBAAoB,CAAC,CAAC;IAEtE,OAAO,GAAG,cAAc;;;;GAIvB,CAAC;AACJ,CAAC;AAED,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC9E,CAAC;AAED,SAAS,eAAe,CAAC,KAAc;IACrC,OAAO,OAAO,KAAK,KAAK,UAAU,CAAC;AACrC,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAc;IACtC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACnC,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;IAC/E,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;IAC5E,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;IACzE,IAAI,QAAQ,KAAK,OAAO,IAAI,QAAQ,KAAK,OAAO,IAAI,QAAQ,KAAK,iBAAiB,IAAI,QAAQ,KAAK,cAAc,EAAE,CAAC;QAClH,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,OAAO,OAAO,KAAK,SAAS,IAAI,OAAO,MAAM,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC7E,IAAI,QAAQ,KAAK,cAAc,EAAE,CAAC;QAChC,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,oBAAoB,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC,CAAC,SAAS,CAAC;QACnG,OAAO,0BAA0B,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC;IACpD,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AACD;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAAC,IAAY,EAAE,WAAmB;IAC/D,MAAM,OAAO,GAAG,EAAE,CAAC,aAAa,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;IACtD,MAAM,MAAM,GAAG,IAAI,EAAE,CAAC,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE;QAClD,QAAQ,EAAE,WAAW;KACtB,CAAC,CAAC;IAEH,MAAM,CAAC,YAAY,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;IAErE,MAAM,aAAa,GAAI,OAAuE,CAAC,cAAc,CAAC;IAC9G,OAAQ,OAAwC,CAAC,cAAc,CAAC;IAEhE,IAAI,CAAC,aAAa,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC/D,MAAM,IAAI,KAAK,CAAC,qBAAqB,WAAW,4CAA4C,CAAC,CAAC;IAChG,CAAC;IAED,MAAM,UAAU,GAAG,aAAa,CAAC,QAAQ,CAAC;IAC1C,OAAO,CAAC,KAAoB,EAAE,OAAwB,EAAkB,EAAE;QACxE,MAAM,MAAM,GAAG,UAAU,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAC1C,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,EAAE,CAAC;YAC9B,MAAM,IAAI,KAAK,CACb,IAAI,WAAW,oDACb,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAC9F,GAAG,CACJ,CAAC;QACJ,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"demo-rule-compiler.js","sourceRoot":"","sources":["../../src/services/demo-rule-compiler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAI9B,OAAO,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AAE3F,SAAS,eAAe,CAAC,UAAkB;IACzC,MAAM,cAAc,GAAG,UAAU;SAC9B,OAAO,CAAC,2BAA2B,EAAE,cAAc,CAAC;SACpD,OAAO,CAAC,mCAAmC,EAAE,oBAAoB,CAAC,CAAC;IAEtE,OAAO,GAAG,cAAc;;;;GAIvB,CAAC;AACJ,CAAC;AAED,SAAS,eAAe,CAAC,KAAc;IACrC,OAAO,OAAO,KAAK,KAAK,UAAU,CAAC;AACrC,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAAC,IAAY,EAAE,WAAmB;IAC/D,MAAM,OAAO,GAAG,EAAE,CAAC,aAAa,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;IACtD,MAAM,MAAM,GAAG,IAAI,EAAE,CAAC,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE;QAClD,QAAQ,EAAE,WAAW;KACtB,CAAC,CAAC;IAEH,MAAM,CAAC,YAAY,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;IAErE,MAAM,aAAa,GAAI,OAAuE,CAAC,cAAc,CAAC;IAC9G,OAAQ,OAAwC,CAAC,cAAc,CAAC;IAEhE,IAAI,CAAC,aAAa,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC/D,MAAM,IAAI,KAAK,CAAC,qBAAqB,WAAW,4CAA4C,CAAC,CAAC;IAChG,CAAC;IAED,MAAM,UAAU,GAAG,aAAa,CAAC,QAAQ,CAAC;IAC1C,OAAO,CAAC,KAAoB,EAAE,OAAwB,EAAkB,EAAE;QACxE,MAAM,MAAM,GAAG,UAAU,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAC1C,MAAM,UAAU,GAAG,sBAAsB,CAAC,MAAM,CAAC,CAAC;QAClD,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;YACtB,MAAM,IAAI,KAAK,CACb,IAAI,WAAW,iDAAiD,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAC1F,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAC9F,GAAG,CACJ,CAAC;QACJ,CAAC;QACD,OAAO,MAAwB,CAAC;IAClC,CAAC,CAAC;AACJ,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@principles/pd-cli",
3
- "version": "1.117.0",
3
+ "version": "1.118.0",
4
4
  "description": "PD CLI — Pain recording, sample management, and evolution tasks",
5
5
  "type": "module",
6
6
  "bin": {
@@ -18,7 +18,7 @@ import * as vm from 'node:vm';
18
18
  import type { RuleHostInput, RuleHostResult } from '@principles/core/runtime-v2';
19
19
  import type { RuleHostHelpers } from '@principles/core/runtime-v2';
20
20
  import type { ReplayEvaluateFn } from '@principles/core/runtime-v2';
21
- import { safeStringifyPreview, validateCorrectionProposal } from '@principles/core/runtime-v2';
21
+ import { safeStringifyPreview, validateRuleHostResult } from '@principles/core/runtime-v2';
22
22
 
23
23
  function normalizeSource(sourceCode: string): string {
24
24
  const withoutExports = sourceCode
@@ -32,29 +32,10 @@ globalThis.__pdRuleModule = {
32
32
  };`;
33
33
  }
34
34
 
35
- function isRecord(value: unknown): value is Record<string, unknown> {
36
- return typeof value === 'object' && value !== null && !Array.isArray(value);
37
- }
38
-
39
35
  function isRuleEvaluator(value: unknown): value is (input: RuleHostInput, helpers: RuleHostHelpers) => unknown {
40
36
  return typeof value === 'function';
41
37
  }
42
38
 
43
- function isRuleHostResult(value: unknown): value is RuleHostResult {
44
- if (!isRecord(value)) return false;
45
- const decision = Object.hasOwn(value, 'decision') ? value.decision : undefined;
46
- const matched = Object.hasOwn(value, 'matched') ? value.matched : undefined;
47
- const reason = Object.hasOwn(value, 'reason') ? value.reason : undefined;
48
- if (decision !== 'allow' && decision !== 'block' && decision !== 'requireApproval' && decision !== 'auto_correct') {
49
- return false;
50
- }
51
- if (typeof matched !== 'boolean' || typeof reason !== 'string') return false;
52
- if (decision === 'auto_correct') {
53
- const proposal = Object.hasOwn(value, 'correctionProposal') ? value.correctionProposal : undefined;
54
- return validateCorrectionProposal(proposal).valid;
55
- }
56
- return true;
57
- }
58
39
  /**
59
40
  * Compile rule implementation code and return a typed evaluate function.
60
41
  * Mirrors `createReplayEvaluateFromCode` in openclaw-plugin.
@@ -79,13 +60,14 @@ export function compileDemoRule(code: string, sourceLabel: string): ReplayEvalua
79
60
  const evaluateFn = moduleExports.evaluate;
80
61
  return (input: RuleHostInput, helpers: RuleHostHelpers): RuleHostResult => {
81
62
  const result = evaluateFn(input, helpers);
82
- if (!isRuleHostResult(result)) {
63
+ const validation = validateRuleHostResult(result);
64
+ if (!validation.valid) {
83
65
  throw new Error(
84
- `[${sourceLabel}]: evaluate returned invalid RuleHostResult (got ${
66
+ `[${sourceLabel}]: evaluate returned invalid RuleHostResult — ${validation.errors.join('; ')} (got ${
85
67
  typeof result === 'object' && result !== null ? safeStringifyPreview(result) : String(result)
86
68
  })`,
87
69
  );
88
70
  }
89
- return result;
71
+ return result as RuleHostResult;
90
72
  };
91
73
  }