@principles/core 1.169.0 → 1.171.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.
Files changed (60) hide show
  1. package/README.md +38 -0
  2. package/dist/index.d.ts +0 -1
  3. package/dist/index.d.ts.map +1 -1
  4. package/dist/index.js +0 -2
  5. package/dist/index.js.map +1 -1
  6. package/dist/pain-signal.d.ts +11 -71
  7. package/dist/pain-signal.d.ts.map +1 -1
  8. package/dist/pain-signal.js +10 -120
  9. package/dist/pain-signal.js.map +1 -1
  10. package/dist/principle-tree-ledger.d.ts +4 -87
  11. package/dist/principle-tree-ledger.d.ts.map +1 -1
  12. package/dist/principle-tree-ledger.js +51 -148
  13. package/dist/principle-tree-ledger.js.map +1 -1
  14. package/dist/runtime-v2/__tests__/architecture-regression.test.js +178 -4
  15. package/dist/runtime-v2/__tests__/architecture-regression.test.js.map +1 -1
  16. package/dist/runtime-v2/__tests__/barrel-io-cleanup.test.d.ts +12 -0
  17. package/dist/runtime-v2/__tests__/barrel-io-cleanup.test.d.ts.map +1 -0
  18. package/dist/runtime-v2/__tests__/barrel-io-cleanup.test.js +46 -0
  19. package/dist/runtime-v2/__tests__/barrel-io-cleanup.test.js.map +1 -0
  20. package/dist/runtime-v2/__tests__/io-deletion.test.d.ts +12 -0
  21. package/dist/runtime-v2/__tests__/io-deletion.test.d.ts.map +1 -0
  22. package/dist/runtime-v2/__tests__/io-deletion.test.js +92 -0
  23. package/dist/runtime-v2/__tests__/io-deletion.test.js.map +1 -0
  24. package/dist/runtime-v2/__tests__/ledger-codec.test.d.ts +2 -0
  25. package/dist/runtime-v2/__tests__/ledger-codec.test.d.ts.map +1 -0
  26. package/dist/runtime-v2/__tests__/ledger-codec.test.js +133 -0
  27. package/dist/runtime-v2/__tests__/ledger-codec.test.js.map +1 -0
  28. package/dist/runtime-v2/__tests__/ledger-store.test.d.ts +2 -0
  29. package/dist/runtime-v2/__tests__/ledger-store.test.d.ts.map +1 -0
  30. package/dist/runtime-v2/__tests__/ledger-store.test.js +65 -0
  31. package/dist/runtime-v2/__tests__/ledger-store.test.js.map +1 -0
  32. package/dist/runtime-v2/__tests__/pain-signal-unification.test.d.ts +2 -0
  33. package/dist/runtime-v2/__tests__/pain-signal-unification.test.d.ts.map +1 -0
  34. package/dist/runtime-v2/__tests__/pain-signal-unification.test.js +150 -0
  35. package/dist/runtime-v2/__tests__/pain-signal-unification.test.js.map +1 -0
  36. package/dist/runtime-v2/index.d.ts +1 -2
  37. package/dist/runtime-v2/index.d.ts.map +1 -1
  38. package/dist/runtime-v2/index.js +4 -2
  39. package/dist/runtime-v2/index.js.map +1 -1
  40. package/dist/runtime-v2/principle-tree/ledger-codec.d.ts +30 -0
  41. package/dist/runtime-v2/principle-tree/ledger-codec.d.ts.map +1 -0
  42. package/dist/runtime-v2/principle-tree/ledger-codec.js +154 -0
  43. package/dist/runtime-v2/principle-tree/ledger-codec.js.map +1 -0
  44. package/dist/runtime-v2/types/index.d.ts +2 -0
  45. package/dist/runtime-v2/types/index.d.ts.map +1 -1
  46. package/dist/runtime-v2/types/index.js +1 -0
  47. package/dist/runtime-v2/types/index.js.map +1 -1
  48. package/dist/runtime-v2/types/ledger-store.d.ts +101 -0
  49. package/dist/runtime-v2/types/ledger-store.d.ts.map +1 -0
  50. package/dist/runtime-v2/types/ledger-store.js +15 -0
  51. package/dist/runtime-v2/types/ledger-store.js.map +1 -0
  52. package/dist/runtime-v2/types/pain-signal.d.ts +5 -3
  53. package/dist/runtime-v2/types/pain-signal.d.ts.map +1 -1
  54. package/dist/runtime-v2/types/pain-signal.js +23 -3
  55. package/dist/runtime-v2/types/pain-signal.js.map +1 -1
  56. package/package.json +4 -4
  57. package/dist/io.d.ts +0 -35
  58. package/dist/io.d.ts.map +0 -1
  59. package/dist/io.js +0 -95
  60. package/dist/io.js.map +0 -1
package/README.md ADDED
@@ -0,0 +1,38 @@
1
+ # @principles/core
2
+
3
+ > **Pure logic only — no I/O.** This package must not import `fs`, `path`, or any
4
+ > I/O module. All filesystem/DB/network operations belong in `openclaw-plugin`.
5
+
6
+ ## Boundary enforcement (PRI-450)
7
+
8
+ Three automated layers prevent I/O from leaking into core:
9
+
10
+ 1. **Architecture-regression test** — `runtime-v2/__tests__/architecture-regression.test.ts`
11
+ scans every `.ts` file under `src/` for `fs`/`path` imports and compares against
12
+ an explicit whitelist (`ALLOWED_IO_FILES`). Any new I/O file must be added there.
13
+
14
+ 2. **ESLint `no-restricted-imports`** — `eslint.config.js` bans `fs`/`path` imports
15
+ in `packages/principles-core/src/`. Whitelisted files and test files are exempt.
16
+
17
+ 3. **PR template & AGENTS.md** — the PR checklist asks whether new `fs`/`path` imports
18
+ were added; AGENTS.md lists "writing I/O code in core" as an anti-pattern trigger.
19
+
20
+ ### Adding a new I/O file (rare — prefer plugin)
21
+
22
+ If a core file genuinely needs I/O:
23
+
24
+ 1. Add the file path to `ALLOWED_IO_FILES` in `architecture-regression.test.ts`
25
+ 2. Add the file path to the exemption list in `eslint.config.js`
26
+ 3. Explain in the PR why the I/O cannot live in `openclaw-plugin`
27
+
28
+ ## Usage
29
+
30
+ ```bash
31
+ npm install @principles/core
32
+ ```
33
+
34
+ ```typescript
35
+ import { /* ... */ } from '@principles/core';
36
+ ```
37
+
38
+ See `package.json` `exports` for available subpaths.
package/dist/index.d.ts CHANGED
@@ -16,7 +16,6 @@ export { PainSignalAdapter } from './pain-signal-adapter.js';
16
16
  export { TelemetryEventSchema, validateTelemetryEvent } from './telemetry-event.js';
17
17
  export type { TelemetryEvent, TelemetryEventValidationResult, TelemetryEventType } from './telemetry-event.js';
18
18
  export { PrincipleInjector, DefaultPrincipleInjector, InjectionContext } from './principle-injector.js';
19
- export { atomicWriteFileSync } from './io.js';
20
19
  export { buildAttitudeDirective, detectCorrectionCue, extractMessageContent, isMinimalTrigger, truncateInjectionToBudget, } from './prompt-builder/index.js';
21
20
  export type { PromptInjectionPart, SizeGuardOptions } from './prompt-builder/index.js';
22
21
  export { matchEmpathyKeywords, createDefaultKeywordStore, applyKeywordUpdates, shouldTriggerOptimization, getKeywordStoreSummary, EMPATHY_SEED_KEYWORDS, DEFAULT_EMPATHY_KEYWORD_CONFIG, scoreToSeverity, severityToPenalty, normalizeSeverity, } from './prompt-builder/index.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAGH,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACtG,YAAY,EAAE,UAAU,EAAE,0BAA0B,EAAE,MAAM,kBAAkB,CAAC;AAG/E,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAG7D,OAAO,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AACpF,YAAY,EAAE,cAAc,EAAE,8BAA8B,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAG/G,OAAO,EAAE,iBAAiB,EAAE,wBAAwB,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAGxG,OAAO,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAG9C,OAAO,EACL,sBAAsB,EACtB,mBAAmB,EACnB,qBAAqB,EACrB,gBAAgB,EAChB,yBAAyB,GAC1B,MAAM,2BAA2B,CAAC;AACnC,YAAY,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAGvF,OAAO,EACL,oBAAoB,EACpB,yBAAyB,EACzB,mBAAmB,EACnB,yBAAyB,EACzB,sBAAsB,EACtB,qBAAqB,EACrB,8BAA8B,EAC9B,eAAe,EACf,iBAAiB,EACjB,iBAAiB,GAClB,MAAM,2BAA2B,CAAC;AACnC,YAAY,EACV,mBAAmB,EACnB,mBAAmB,EACnB,mBAAmB,EACnB,kBAAkB,EAClB,oBAAoB,EACpB,yBAAyB,EACzB,gBAAgB,EAChB,oBAAoB,GACrB,MAAM,2BAA2B,CAAC;AAGnC,OAAO,EACL,cAAc,EACd,WAAW,EACX,cAAc,EACd,yBAAyB,EACzB,wBAAwB,EACxB,iBAAiB,EACjB,oBAAoB,EACpB,kBAAkB,EAClB,oBAAoB,EACpB,iCAAiC,GAClC,MAAM,2BAA2B,CAAC;AACnC,YAAY,EACV,YAAY,EACZ,qBAAqB,EACrB,uBAAuB,EACvB,sBAAsB,GACvB,MAAM,2BAA2B,CAAC;AAGnC,OAAO,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AACtF,YAAY,EAAE,sBAAsB,EAAE,4BAA4B,EAAE,MAAM,uBAAuB,CAAC;AAOlG,OAAO,EACL,yBAAyB,EACzB,SAAS,EACT,sBAAsB,EACtB,4BAA4B,EAC5B,qBAAqB,EACrB,mBAAmB,EACnB,cAAc,EACd,iBAAiB,GAClB,MAAM,uBAAuB,CAAC;AAG/B,OAAO,EACL,SAAS,EACT,iCAAiC,EACjC,wBAAwB,EACxB,sBAAsB,EACtB,eAAe,GAChB,MAAM,uBAAuB,CAAC;AAG/B,OAAO,EACL,iBAAiB,EACjB,yBAAyB,EACzB,mBAAmB,EACnB,eAAe,EACf,wBAAwB,EACxB,eAAe,EACf,iBAAiB,EACjB,kBAAkB,EAClB,iBAAiB,EACjB,aAAa,EACb,mBAAmB,EACnB,yBAAyB,EACzB,wBAAwB,GACzB,MAAM,uBAAuB,CAAC;AAG/B,OAAO,EACL,kBAAkB,EAClB,gBAAgB,EAChB,6BAA6B,GAC9B,MAAM,uBAAuB,CAAC;AAG/B,OAAO,EACL,8BAA8B,GAC/B,MAAM,uBAAuB,CAAC;AAG/B,OAAO,EACL,uBAAuB,EACvB,2BAA2B,EAC3B,yBAAyB,EACzB,4BAA4B,EAC5B,wBAAwB,EACxB,qBAAqB,EACrB,oBAAoB,EACpB,iCAAiC,GAClC,MAAM,uBAAuB,CAAC;AAG/B,OAAO,EACL,oCAAoC,EACpC,2BAA2B,EAC3B,wBAAwB,EACxB,iCAAiC,EACjC,2BAA2B,EAC3B,kCAAkC,GACnC,MAAM,uBAAuB,CAAC;AAC/B,YAAY,EACV,eAAe,EACf,SAAS,EACT,2BAA2B,EAC3B,kBAAkB,EAClB,gBAAgB,EAChB,gBAAgB,EAChB,WAAW,EACX,mBAAmB,EACnB,aAAa,EACb,SAAS,EACT,kBAAkB,EAClB,SAAS,EACT,WAAW,EACX,YAAY,EACZ,WAAW,EACX,OAAO,EACP,aAAa,EACb,mBAAmB,EACnB,kBAAkB,EAClB,gBAAgB,EAChB,eAAe,EACf,wBAAwB,EACxB,sBAAsB,EACtB,YAAY,EACZ,UAAU,EACV,uBAAuB,EACvB,iBAAiB,EACjB,qBAAqB,EACrB,mBAAmB,EACnB,sBAAsB,EACtB,kBAAkB,EAClB,eAAe,EACf,cAAc,EACd,2BAA2B,EAC3B,qBAAqB,EACrB,8BAA8B,EAC9B,qBAAqB,EACrB,kBAAkB,EAClB,2BAA2B,EAC3B,4BAA4B,GAC7B,MAAM,uBAAuB,CAAC;AAG/B,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,YAAY,EAAE,0BAA0B,EAAE,MAAM,uBAAuB,CAAC;AAGxE,OAAO,EACL,eAAe,EACf,cAAc,EACd,iBAAiB,EACjB,gBAAgB,EAChB,uBAAuB,EACvB,wBAAwB,EACxB,kBAAkB,EAClB,sBAAsB,EACtB,yBAAyB,EACzB,qBAAqB,EACrB,yBAAyB,EACzB,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,uBAAuB,CAAC;AAC/B,YAAY,EACV,YAAY,EACZ,sBAAsB,EACtB,mBAAmB,GACpB,MAAM,uBAAuB,CAAC;AAC/B,YAAY,EAAE,gBAAgB,EAAE,MAAM,iDAAiD,CAAC;AACxF,YAAY,EACV,SAAS,EACT,eAAe,EACf,oBAAoB,GACrB,MAAM,uCAAuC,CAAC;AAC/C,YAAY,EACV,QAAQ,EACR,SAAS,GACV,MAAM,qCAAqC,CAAC;AAC7C,YAAY,EAAE,iBAAiB,EAAE,MAAM,qDAAqD,CAAC;AAG7F,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,YAAY,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC/E,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,YAAY,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC5E,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAC7D,YAAY,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAG3E,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAGxE,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACnE,YAAY,EACV,aAAa,EACb,cAAc,EACd,YAAY,EACZ,oBAAoB,GACrB,MAAM,6BAA6B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -16,8 +16,6 @@ export { PainSignalSchema, validatePainSignal, deriveSeverity, PainSeverity } fr
16
16
  export { TelemetryEventSchema, validateTelemetryEvent } from './telemetry-event.js';
17
17
  // PrincipleInjector interface and DefaultPrincipleInjector
18
18
  export { DefaultPrincipleInjector } from './principle-injector.js';
19
- // I/O utilities (D-03: atomicWriteFileSync for crash-safe writes)
20
- export { atomicWriteFileSync } from './io.js';
21
19
  // Prompt builder primitives — pure functions extracted from openclaw-plugin prompt hook (PRI-75)
22
20
  export { buildAttitudeDirective, detectCorrectionCue, extractMessageContent, isMinimalTrigger, truncateInjectionToBudget, } from './prompt-builder/index.js';
23
21
  // Prompt builder — empathy keyword matching (PRI-81 Phase A)
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -1,76 +1,16 @@
1
1
  /**
2
- * Universal PainSignal schema for the Evolution SDK.
2
+ * Pain signal schema re-exported from runtime-v2/types/pain-signal.ts.
3
3
  *
4
- * This module defines a framework-agnostic pain signal that any AI agent
5
- * framework can produce. It extends the existing PainFlagData format with
6
- * additional structured fields (domain, severity, context) needed for
7
- * cross-workspace evolution and multi-domain support.
4
+ * This file exists for backward compatibility with imports from
5
+ * @principles/core (top-level barrel). The canonical definition
6
+ * lives in runtime-v2/types/pain-signal.ts (PRI-443).
8
7
  *
9
- * Validation uses @sinclair/typebox to match existing project patterns.
8
+ * The unified schema merges the stricter validations from both versions:
9
+ * - ISO 8601 timestamp format check
10
+ * - Context size limit (10KB)
11
+ * - version field with default
12
+ * - isStringRecord type guard (no `as` bypass)
10
13
  */
11
- import { type Static } from '@sinclair/typebox';
12
- /**
13
- * Severity levels derived from pain score thresholds.
14
- * - low: 0-39 (minor issue, informational)
15
- * - medium: 40-69 (moderate error)
16
- * - high: 70-89 (severe violation)
17
- * - critical: 90-100 (systemic failure, spiral detected)
18
- */
19
- export declare const PainSeverity: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"low">, import("@sinclair/typebox").TLiteral<"medium">, import("@sinclair/typebox").TLiteral<"high">, import("@sinclair/typebox").TLiteral<"critical">]>;
20
- export type PainSeverity = Static<typeof PainSeverity>;
21
- /**
22
- * TypeBox schema for a universal pain signal.
23
- *
24
- * Every signal MUST have: source, score, timestamp, reason, sessionId,
25
- * agentId, traceId, triggerTextPreview. Optional fields (domain, severity,
26
- * context) default during validation.
27
- */
28
- export declare const PainSignalSchema: import("@sinclair/typebox").TObject<{
29
- /** What triggered this pain signal (e.g., 'tool_failure', 'human_intervention') */
30
- source: import("@sinclair/typebox").TString;
31
- /** Pain score 0-100 */
32
- score: import("@sinclair/typebox").TNumber;
33
- /** ISO 8601 timestamp */
34
- timestamp: import("@sinclair/typebox").TString;
35
- /** Human-readable reason / error description */
36
- reason: import("@sinclair/typebox").TString;
37
- /** Session ID — identifies which conversation this happened in */
38
- sessionId: import("@sinclair/typebox").TString;
39
- /** Agent ID — identifies which agent (main, builder, diagnostician, etc.) */
40
- agentId: import("@sinclair/typebox").TString;
41
- /** Correlation trace ID for linking events across the pipeline */
42
- traceId: import("@sinclair/typebox").TString;
43
- /** Preview of the text that triggered this pain */
44
- triggerTextPreview: import("@sinclair/typebox").TString;
45
- /** Schema version for forward compatibility (e.g., '0.1.0') */
46
- version: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
47
- /** Domain context (e.g., 'coding', 'writing', 'analysis') */
48
- domain: import("@sinclair/typebox").TString;
49
- /** Severity level derived from score */
50
- severity: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"low">, import("@sinclair/typebox").TLiteral<"medium">, import("@sinclair/typebox").TLiteral<"high">, import("@sinclair/typebox").TLiteral<"critical">]>;
51
- /** Additional structured context payload */
52
- context: import("@sinclair/typebox").TRecord<import("@sinclair/typebox").TString, import("@sinclair/typebox").TUnknown>;
53
- }>;
54
- export type PainSignal = Static<typeof PainSignalSchema>;
55
- /**
56
- * Derives severity from a numeric pain score.
57
- */
58
- export declare function deriveSeverity(score: number): PainSeverity;
59
- export interface PainSignalValidationResult {
60
- valid: boolean;
61
- errors: string[];
62
- signal?: PainSignal;
63
- }
64
- /**
65
- * Validates an arbitrary object against the PainSignal schema.
66
- *
67
- * Returns a structured result with:
68
- * - `valid`: whether the input conforms to the schema
69
- * - `errors`: human-readable list of validation failures
70
- * - `signal`: the typed signal (only present when valid)
71
- *
72
- * Missing optional fields (domain, severity, context, version) are filled with defaults
73
- * before validation so callers get a fully-formed signal back.
74
- */
75
- export declare function validatePainSignal(input: unknown): PainSignalValidationResult;
14
+ export { PainSeverity, PainSignalSchema, deriveSeverity, validatePainSignal, } from './runtime-v2/types/pain-signal.js';
15
+ export type { PainSignal, PainSignalValidationResult, } from './runtime-v2/types/pain-signal.js';
76
16
  //# sourceMappingURL=pain-signal.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"pain-signal.d.ts","sourceRoot":"","sources":["../src/pain-signal.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,EAAQ,KAAK,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAOtD;;;;;;GAMG;AACH,eAAO,MAAM,YAAY,mOAKvB,CAAC;AAGH,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC,OAAO,YAAY,CAAC,CAAC;AAEvD;;;;;;GAMG;AACH,eAAO,MAAM,gBAAgB;IAC3B,mFAAmF;;IAEnF,uBAAuB;;IAEvB,yBAAyB;;IAEzB,gDAAgD;;IAEhD,kEAAkE;;IAElE,6EAA6E;;IAE7E,kEAAkE;;IAElE,mDAAmD;;IAEnD,+DAA+D;;IAE/D,6DAA6D;;IAE7D,wCAAwC;;IAExC,4CAA4C;;EAE5C,CAAC;AAEH,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAMzD;;GAEG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,YAAY,CAK1D;AAMD,MAAM,WAAW,0BAA0B;IACzC,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,MAAM,CAAC,EAAE,UAAU,CAAC;CACrB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,0BAA0B,CAgD7E"}
1
+ {"version":3,"file":"pain-signal.d.ts","sourceRoot":"","sources":["../src/pain-signal.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EACL,YAAY,EACZ,gBAAgB,EAChB,cAAc,EACd,kBAAkB,GACnB,MAAM,mCAAmC,CAAC;AAE3C,YAAY,EACV,UAAU,EACV,0BAA0B,GAC3B,MAAM,mCAAmC,CAAC"}
@@ -1,125 +1,15 @@
1
1
  /**
2
- * Universal PainSignal schema for the Evolution SDK.
2
+ * Pain signal schema re-exported from runtime-v2/types/pain-signal.ts.
3
3
  *
4
- * This module defines a framework-agnostic pain signal that any AI agent
5
- * framework can produce. It extends the existing PainFlagData format with
6
- * additional structured fields (domain, severity, context) needed for
7
- * cross-workspace evolution and multi-domain support.
4
+ * This file exists for backward compatibility with imports from
5
+ * @principles/core (top-level barrel). The canonical definition
6
+ * lives in runtime-v2/types/pain-signal.ts (PRI-443).
8
7
  *
9
- * Validation uses @sinclair/typebox to match existing project patterns.
8
+ * The unified schema merges the stricter validations from both versions:
9
+ * - ISO 8601 timestamp format check
10
+ * - Context size limit (10KB)
11
+ * - version field with default
12
+ * - isStringRecord type guard (no `as` bypass)
10
13
  */
11
- import { Type } from '@sinclair/typebox';
12
- import { Value } from '@sinclair/typebox/value';
13
- // ---------------------------------------------------------------------------
14
- // PainSignal Schema
15
- // ---------------------------------------------------------------------------
16
- /**
17
- * Severity levels derived from pain score thresholds.
18
- * - low: 0-39 (minor issue, informational)
19
- * - medium: 40-69 (moderate error)
20
- * - high: 70-89 (severe violation)
21
- * - critical: 90-100 (systemic failure, spiral detected)
22
- */
23
- export const PainSeverity = Type.Union([
24
- Type.Literal('low'),
25
- Type.Literal('medium'),
26
- Type.Literal('high'),
27
- Type.Literal('critical'),
28
- ]);
29
- /**
30
- * TypeBox schema for a universal pain signal.
31
- *
32
- * Every signal MUST have: source, score, timestamp, reason, sessionId,
33
- * agentId, traceId, triggerTextPreview. Optional fields (domain, severity,
34
- * context) default during validation.
35
- */
36
- export const PainSignalSchema = Type.Object({
37
- /** What triggered this pain signal (e.g., 'tool_failure', 'human_intervention') */
38
- source: Type.String({ minLength: 1 }),
39
- /** Pain score 0-100 */
40
- score: Type.Number({ minimum: 0, maximum: 100 }),
41
- /** ISO 8601 timestamp */
42
- timestamp: Type.String({ minLength: 1 }),
43
- /** Human-readable reason / error description */
44
- reason: Type.String({ minLength: 1 }),
45
- /** Session ID — identifies which conversation this happened in */
46
- sessionId: Type.String({ minLength: 1 }),
47
- /** Agent ID — identifies which agent (main, builder, diagnostician, etc.) */
48
- agentId: Type.String({ minLength: 1 }),
49
- /** Correlation trace ID for linking events across the pipeline */
50
- traceId: Type.String({ minLength: 1 }),
51
- /** Preview of the text that triggered this pain */
52
- triggerTextPreview: Type.String(),
53
- /** Schema version for forward compatibility (e.g., '0.1.0') */
54
- version: Type.Optional(Type.String({ default: '0.1.0' })),
55
- /** Domain context (e.g., 'coding', 'writing', 'analysis') */
56
- domain: Type.String({ default: 'coding' }),
57
- /** Severity level derived from score */
58
- severity: PainSeverity,
59
- /** Additional structured context payload */
60
- context: Type.Record(Type.String(), Type.Unknown()),
61
- });
62
- // ---------------------------------------------------------------------------
63
- // Default Derivation
64
- // ---------------------------------------------------------------------------
65
- /**
66
- * Derives severity from a numeric pain score.
67
- */
68
- export function deriveSeverity(score) {
69
- if (score >= 90)
70
- return 'critical';
71
- if (score >= 70)
72
- return 'high';
73
- if (score >= 40)
74
- return 'medium';
75
- return 'low';
76
- }
77
- /**
78
- * Validates an arbitrary object against the PainSignal schema.
79
- *
80
- * Returns a structured result with:
81
- * - `valid`: whether the input conforms to the schema
82
- * - `errors`: human-readable list of validation failures
83
- * - `signal`: the typed signal (only present when valid)
84
- *
85
- * Missing optional fields (domain, severity, context, version) are filled with defaults
86
- * before validation so callers get a fully-formed signal back.
87
- */
88
- export function validatePainSignal(input) {
89
- if (typeof input !== 'object' || input === null || Array.isArray(input)) {
90
- return { valid: false, errors: ['Input must be a non-null object'] };
91
- }
92
- const raw = input;
93
- // Apply defaults for optional fields before validation
94
- const hydrated = {
95
- ...raw,
96
- domain: raw.domain ?? 'coding',
97
- version: raw.version ?? '0.1.0',
98
- severity: raw.severity ?? deriveSeverity(typeof raw.score === 'number' ? raw.score : 0),
99
- context: raw.context ?? {},
100
- };
101
- // Security: enforce context size limit to prevent memory exhaustion
102
- const MAX_CONTEXT_SIZE = 10_000;
103
- if (JSON.stringify(hydrated.context).length > MAX_CONTEXT_SIZE) {
104
- return { valid: false, errors: ['Context object exceeds maximum size (10KB)'] };
105
- }
106
- // Validate ISO 8601 timestamp format
107
- if (typeof hydrated.timestamp === 'string' &&
108
- isNaN(Date.parse(hydrated.timestamp))) {
109
- return { valid: false, errors: ['timestamp must be a valid ISO 8601 date string'] };
110
- }
111
- // Collect TypeBox errors using Decode (strict, not Cast which coerces)
112
- const errors = [...Value.Errors(PainSignalSchema, hydrated)];
113
- if (errors.length > 0) {
114
- return {
115
- valid: false,
116
- errors: errors.map((e) => `${e.path ? `${e.path}: ` : ''}${e.message}`),
117
- };
118
- }
119
- return {
120
- valid: true,
121
- errors: [],
122
- signal: Value.Cast(PainSignalSchema, hydrated),
123
- };
124
- }
14
+ export { PainSeverity, PainSignalSchema, deriveSeverity, validatePainSignal, } from './runtime-v2/types/pain-signal.js';
125
15
  //# sourceMappingURL=pain-signal.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"pain-signal.js","sourceRoot":"","sources":["../src/pain-signal.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pain-signal.js","sourceRoot":"","sources":["../src/pain-signal.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EACL,YAAY,EACZ,gBAAgB,EAChB,cAAc,EACd,kBAAkB,GACnB,MAAM,mCAAmC,CAAC"}
@@ -10,93 +10,10 @@
10
10
  * M8 key insight: ledger operations are single-process. No cross-process
11
11
  * locking needed for pd-cli usage. The file write is atomic (rename).
12
12
  */
13
- export type PrincipleStatus = 'candidate' | 'active' | 'archived' | 'deprecated' | 'probation';
14
- export type PrinciplePriority = 'P0' | 'P1' | 'P2';
15
- export type PrincipleScope = 'general' | 'domain';
16
- export type PrincipleEvaluability = 'manual_only' | 'deterministic' | 'weak_heuristic';
17
- export interface Principle {
18
- id: string;
19
- version: number;
20
- text: string;
21
- triggerPattern: string;
22
- action: string;
23
- status: PrincipleStatus;
24
- priority: PrinciplePriority;
25
- scope: PrincipleScope;
26
- evaluability: PrincipleEvaluability;
27
- valueScore: number;
28
- adherenceRate: number;
29
- painPreventedCount: number;
30
- derivedFromPainIds: string[];
31
- ruleIds: string[];
32
- conflictsWithPrincipleIds: string[];
33
- createdAt: string;
34
- updatedAt: string;
35
- }
36
- export interface Rule {
37
- id: string;
38
- principleId: string;
39
- ruleIds: string[];
40
- implementationIds: string[];
41
- type?: string;
42
- status?: string;
43
- lifecycleState?: string;
44
- createdAt?: string;
45
- updatedAt?: string;
46
- }
47
- export interface Implementation {
48
- id: string;
49
- ruleId: string;
50
- type?: string;
51
- lifecycleState?: string;
52
- [key: string]: unknown;
53
- }
54
- export interface PrincipleValueMetrics {
55
- principleId: string;
56
- painPreventedCount?: number;
57
- lastPainPreventedAt?: string;
58
- avgPainSeverityPrevented?: number;
59
- totalOpportunities?: number;
60
- adheredCount?: number;
61
- violatedCount?: number;
62
- implementationCost?: number;
63
- benefitScore?: number;
64
- calculatedAt?: string;
65
- }
66
- export interface LedgerPrinciple extends Principle {
67
- suggestedRules?: string[];
68
- lastTriggeredAt?: string;
69
- }
70
- export interface LedgerRule extends Rule {
71
- implementationIds: string[];
72
- }
73
- export interface LedgerTreeStore {
74
- principles: Record<string, LedgerPrinciple>;
75
- rules: Record<string, LedgerRule>;
76
- implementations: Record<string, Implementation>;
77
- metrics: Record<string, PrincipleValueMetrics>;
78
- lastUpdated: string;
79
- }
80
- export interface LegacyPrincipleTrainingState {
81
- principleId: string;
82
- evaluability: 'deterministic' | 'weak_heuristic' | 'manual_only';
83
- applicableOpportunityCount: number;
84
- observedViolationCount: number;
85
- complianceRate: number;
86
- violationTrend: number;
87
- generatedSampleCount: number;
88
- approvedSampleCount: number;
89
- includedTrainRunIds: string[];
90
- deployedCheckpointIds: string[];
91
- lastEvalScore?: number;
92
- internalizationStatus: 'prompt_only' | 'needs_training' | 'in_training' | 'deployed_pending_eval' | 'internalized' | 'regressed';
93
- }
94
- export type LegacyPrincipleTrainingStore = Record<string, LegacyPrincipleTrainingState>;
95
- export interface HybridLedgerStore {
96
- trainingStore: LegacyPrincipleTrainingStore;
97
- tree: LedgerTreeStore;
98
- }
99
- export declare const TREE_NAMESPACE = "_tree";
13
+ import type { Principle, Rule, Implementation, PrincipleValueMetrics, LedgerPrinciple, LedgerRule, LedgerTreeStore, LegacyPrincipleTrainingState, LegacyPrincipleTrainingStore, HybridLedgerStore } from './runtime-v2/types/ledger-store.js';
14
+ import { TREE_NAMESPACE } from './runtime-v2/types/ledger-store.js';
15
+ export type { Principle, Rule, Implementation, PrincipleValueMetrics, LedgerPrinciple, LedgerRule, LedgerTreeStore, LegacyPrincipleTrainingState, LegacyPrincipleTrainingStore, HybridLedgerStore, };
16
+ export { TREE_NAMESPACE };
100
17
  export declare function loadLedger(stateDir: string): HybridLedgerStore;
101
18
  export declare function saveLedger(stateDir: string, store: HybridLedgerStore): void;
102
19
  export declare function addPrincipleToLedger(stateDir: string, principle: LedgerPrinciple): LedgerPrinciple;
@@ -1 +1 @@
1
- {"version":3,"file":"principle-tree-ledger.d.ts","sourceRoot":"","sources":["../src/principle-tree-ledger.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"principle-tree-ledger.d.ts","sourceRoot":"","sources":["../src/principle-tree-ledger.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAMH,OAAO,KAAK,EACV,SAAS,EACT,IAAI,EACJ,cAAc,EACd,qBAAqB,EACrB,eAAe,EACf,UAAU,EACV,eAAe,EACf,4BAA4B,EAC5B,4BAA4B,EAC5B,iBAAiB,EAClB,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AAYpE,YAAY,EACV,SAAS,EACT,IAAI,EACJ,cAAc,EACd,qBAAqB,EACrB,eAAe,EACf,UAAU,EACV,eAAe,EACf,4BAA4B,EAC5B,4BAA4B,EAC5B,iBAAiB,GAClB,CAAC;AACF,OAAO,EAAE,cAAc,EAAE,CAAC;AAkG1B,wBAAgB,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,iBAAiB,CAE9D;AAED,wBAAgB,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,iBAAiB,GAAG,IAAI,CAK3E;AAED,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,eAAe,GAAG,eAAe,CAMlG;AAED,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,eAAe,CAAC,GAAG,eAAe,CAiBzH;AAED,wBAAgB,2BAA2B,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,qBAAqB,GAAG,qBAAqB,CAMxI;AAED,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAEhE"}