@principles/core 1.73.0 → 1.74.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 (79) hide show
  1. package/dist/runtime-v2/adapter/__tests__/schema-prompt-adapter.test.d.ts +2 -0
  2. package/dist/runtime-v2/adapter/__tests__/schema-prompt-adapter.test.d.ts.map +1 -0
  3. package/dist/runtime-v2/adapter/__tests__/schema-prompt-adapter.test.js +270 -0
  4. package/dist/runtime-v2/adapter/__tests__/schema-prompt-adapter.test.js.map +1 -0
  5. package/dist/runtime-v2/adapter/pi-ai-runtime-adapter.d.ts +1 -1
  6. package/dist/runtime-v2/adapter/pi-ai-runtime-adapter.d.ts.map +1 -1
  7. package/dist/runtime-v2/adapter/pi-ai-runtime-adapter.js +4 -3
  8. package/dist/runtime-v2/adapter/pi-ai-runtime-adapter.js.map +1 -1
  9. package/dist/runtime-v2/adapter/schema-prompt-adapter.d.ts +13 -0
  10. package/dist/runtime-v2/adapter/schema-prompt-adapter.d.ts.map +1 -0
  11. package/dist/runtime-v2/adapter/schema-prompt-adapter.js +266 -0
  12. package/dist/runtime-v2/adapter/schema-prompt-adapter.js.map +1 -0
  13. package/dist/runtime-v2/adapter/tools/diagnostician-tool.d.ts +3 -7
  14. package/dist/runtime-v2/adapter/tools/diagnostician-tool.d.ts.map +1 -1
  15. package/dist/runtime-v2/adapter/tools/diagnostician-tool.js +7 -19
  16. package/dist/runtime-v2/adapter/tools/diagnostician-tool.js.map +1 -1
  17. package/dist/runtime-v2/diagnostician/__tests__/diagnostician-prompt-builder.test.js +97 -15
  18. package/dist/runtime-v2/diagnostician/__tests__/diagnostician-prompt-builder.test.js.map +1 -1
  19. package/dist/runtime-v2/diagnostician-output.d.ts +0 -10
  20. package/dist/runtime-v2/diagnostician-output.d.ts.map +1 -1
  21. package/dist/runtime-v2/diagnostician-output.js +5 -10
  22. package/dist/runtime-v2/diagnostician-output.js.map +1 -1
  23. package/dist/runtime-v2/diagnostician-prompt-builder.d.ts +6 -1
  24. package/dist/runtime-v2/diagnostician-prompt-builder.d.ts.map +1 -1
  25. package/dist/runtime-v2/diagnostician-prompt-builder.js +23 -15
  26. package/dist/runtime-v2/diagnostician-prompt-builder.js.map +1 -1
  27. package/package.json +1 -1
  28. package/dist/runtime-v2/__tests__/nocturnal-compliance-trust-boundary.test.d.ts +0 -2
  29. package/dist/runtime-v2/__tests__/nocturnal-compliance-trust-boundary.test.d.ts.map +0 -1
  30. package/dist/runtime-v2/__tests__/nocturnal-compliance-trust-boundary.test.js +0 -215
  31. package/dist/runtime-v2/__tests__/nocturnal-compliance-trust-boundary.test.js.map +0 -1
  32. package/dist/runtime-v2/idle-trigger/__tests__/idle-trigger-config-resolve.test.d.ts +0 -2
  33. package/dist/runtime-v2/idle-trigger/__tests__/idle-trigger-config-resolve.test.d.ts.map +0 -1
  34. package/dist/runtime-v2/idle-trigger/__tests__/idle-trigger-config-resolve.test.js +0 -92
  35. package/dist/runtime-v2/idle-trigger/__tests__/idle-trigger-config-resolve.test.js.map +0 -1
  36. package/dist/runtime-v2/idle-trigger/__tests__/idle-trigger-decision.test.d.ts +0 -2
  37. package/dist/runtime-v2/idle-trigger/__tests__/idle-trigger-decision.test.d.ts.map +0 -1
  38. package/dist/runtime-v2/idle-trigger/__tests__/idle-trigger-decision.test.js +0 -134
  39. package/dist/runtime-v2/idle-trigger/__tests__/idle-trigger-decision.test.js.map +0 -1
  40. package/dist/runtime-v2/idle-trigger/__tests__/idle-trigger-edge-cases.test.d.ts +0 -2
  41. package/dist/runtime-v2/idle-trigger/__tests__/idle-trigger-edge-cases.test.d.ts.map +0 -1
  42. package/dist/runtime-v2/idle-trigger/__tests__/idle-trigger-edge-cases.test.js +0 -226
  43. package/dist/runtime-v2/idle-trigger/__tests__/idle-trigger-edge-cases.test.js.map +0 -1
  44. package/dist/runtime-v2/idle-trigger/idle-trigger-decision.d.ts +0 -3
  45. package/dist/runtime-v2/idle-trigger/idle-trigger-decision.d.ts.map +0 -1
  46. package/dist/runtime-v2/idle-trigger/idle-trigger-decision.js +0 -5
  47. package/dist/runtime-v2/idle-trigger/idle-trigger-decision.js.map +0 -1
  48. package/dist/runtime-v2/idle-trigger/idle-trigger-policy.d.ts +0 -4
  49. package/dist/runtime-v2/idle-trigger/idle-trigger-policy.d.ts.map +0 -1
  50. package/dist/runtime-v2/idle-trigger/idle-trigger-policy.js +0 -81
  51. package/dist/runtime-v2/idle-trigger/idle-trigger-policy.js.map +0 -1
  52. package/dist/runtime-v2/idle-trigger/idle-trigger-types.d.ts +0 -29
  53. package/dist/runtime-v2/idle-trigger/idle-trigger-types.d.ts.map +0 -1
  54. package/dist/runtime-v2/idle-trigger/idle-trigger-types.js +0 -15
  55. package/dist/runtime-v2/idle-trigger/idle-trigger-types.js.map +0 -1
  56. package/dist/runtime-v2/idle-trigger/index.d.ts +0 -5
  57. package/dist/runtime-v2/idle-trigger/index.d.ts.map +0 -1
  58. package/dist/runtime-v2/idle-trigger/index.js +0 -4
  59. package/dist/runtime-v2/idle-trigger/index.js.map +0 -1
  60. package/dist/runtime-v2/nocturnal/candidate-scoring.d.ts +0 -486
  61. package/dist/runtime-v2/nocturnal/candidate-scoring.d.ts.map +0 -1
  62. package/dist/runtime-v2/nocturnal/candidate-scoring.js +0 -493
  63. package/dist/runtime-v2/nocturnal/candidate-scoring.js.map +0 -1
  64. package/dist/runtime-v2/nocturnal/index.d.ts +0 -9
  65. package/dist/runtime-v2/nocturnal/index.d.ts.map +0 -1
  66. package/dist/runtime-v2/nocturnal/index.js +0 -5
  67. package/dist/runtime-v2/nocturnal/index.js.map +0 -1
  68. package/dist/runtime-v2/nocturnal/nocturnal-compliance.d.ts +0 -185
  69. package/dist/runtime-v2/nocturnal/nocturnal-compliance.d.ts.map +0 -1
  70. package/dist/runtime-v2/nocturnal/nocturnal-compliance.js +0 -912
  71. package/dist/runtime-v2/nocturnal/nocturnal-compliance.js.map +0 -1
  72. package/dist/runtime-v2/nocturnal/snapshot-contract.d.ts +0 -192
  73. package/dist/runtime-v2/nocturnal/snapshot-contract.d.ts.map +0 -1
  74. package/dist/runtime-v2/nocturnal/snapshot-contract.js +0 -185
  75. package/dist/runtime-v2/nocturnal/snapshot-contract.js.map +0 -1
  76. package/dist/runtime-v2/nocturnal/trinity-types.d.ts +0 -421
  77. package/dist/runtime-v2/nocturnal/trinity-types.d.ts.map +0 -1
  78. package/dist/runtime-v2/nocturnal/trinity-types.js +0 -182
  79. package/dist/runtime-v2/nocturnal/trinity-types.js.map +0 -1
@@ -28,24 +28,19 @@ export const RecommendationKindSchema = Type.Union([
28
28
  export const DiagnosticianRecommendationSchema = Type.Object({
29
29
  kind: RecommendationKindSchema,
30
30
  description: Type.String({ minLength: 1 }),
31
- /** Trigger pattern (regex/keywords) required when kind is 'rule' */
32
- triggerPattern: Type.Optional(Type.String()),
33
- /** Action to take when pattern matches required when kind is 'rule' */
34
- action: Type.Optional(Type.String()),
35
- /** Highly abstracted principle (≤200 chars) — required when kind is 'principle'
36
- * @see MAX_ABSTRACTED_PRINCIPLE_CHARS in runner/default-validator.ts
37
- */
38
- abstractedPrinciple: Type.Optional(Type.String()),
31
+ triggerPattern: Type.Optional(Type.String({ description: 'Required when kind is "rule". Regex or keyword pattern for interception.' })),
32
+ action: Type.Optional(Type.String({ description: 'Required when kind is "rule". Action to take when pattern matches.' })),
33
+ abstractedPrinciple: Type.Optional(Type.String({ description: 'Required when kind is "principle". Highly abstracted, reusable wisdom (≤200 chars).' })),
39
34
  });
40
35
  export const DiagnosticianOutputV1Schema = Type.Object({
41
36
  valid: Type.Boolean(),
42
37
  diagnosisId: Type.String({ minLength: 1 }),
43
38
  summary: Type.String({ minLength: 1 }),
44
- rootCause: Type.String({ minLength: 1 }),
39
+ rootCause: Type.String({ minLength: 1, description: 'MUST include category prefix: "Design: ..." or "People: ..." or "Assumption: ..." or "Tooling: ..."' }),
45
40
  violatedPrinciples: Type.Array(DiagnosticianViolatedPrincipleSchema),
46
41
  evidence: Type.Array(DiagnosticianEvidenceSchema),
47
42
  recommendations: Type.Array(DiagnosticianRecommendationSchema),
48
- confidence: Type.Number({ minimum: 0, maximum: 1 }),
43
+ confidence: Type.Number({ minimum: 0, maximum: 1, description: 'A number between 0.0 and 1.0 (NOT a string, NOT a percentage)' }),
49
44
  ambiguityNotes: Type.Optional(Type.Array(Type.String())),
50
45
  });
51
46
  // ── Diagnostician Invocation Input ──
@@ -1 +1 @@
1
- {"version":3,"file":"diagnostician-output.js","sourceRoot":"","sources":["../../src/runtime-v2/diagnostician-output.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"diagnostician-output.js","sourceRoot":"","sources":["../../src/runtime-v2/diagnostician-output.ts"],"names":[],"mappings":"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"}
@@ -28,6 +28,8 @@
28
28
  * - DPB-05: LLM only analyzes — PD database commits are handled by caller code
29
29
  */
30
30
  import type { DiagnosticianContextPayload, HistoryQueryEntry, DiagnosisTarget } from './context-payload.js';
31
+ import type { TSchema } from '@sinclair/typebox';
32
+ import type { SchemaPromptAdapter } from './adapter/schema-prompt-adapter.js';
31
33
  /**
32
34
  * PromptInput — the JSON message sent to openclaw agent via --message flag.
33
35
  *
@@ -97,7 +99,7 @@ export interface PromptBuildResult {
97
99
  * The 5-phase protocol is embedded directly in the prompt so the LLM follows it
98
100
  * regardless of whether OpenClaw loads SKILL.md as the agent system prompt.
99
101
  */
100
- export declare const DIAGNOSTIC_PROTOCOL_INSTRUCTION = "You are a root cause analysis expert. Follow this protocol:\n\nPHASE 1 \u2014 Evidence Review:\nReview the provided sourceRefs, diagnosisTarget.evidence entries, conversationWindow\nentries, and eventSummaries from the context payload. Do NOT read any files or call any tools.\nRecord all evidence by referencing the sourceRef identifiers and conversation\nentries already present in the context. Each evidence item must cite its source.\nPay special attention to diagnosisTarget.evidence \u2014 these are the primary behavioral\nevidence (owner messages and agent actions) that the root cause analysis must address.\n\nPHASE 2 \u2014 Causal Chain (5 Whys):\nBuild a Why-1 through Why-5 causal chain. Each Why MUST have evidence from Phase 1.\n- Why 1: Surface phenomenon (visible error)\n- Why 2: Direct cause (nearest trigger)\n- Why 3: Process gap (missing check/gate)\n- Why 4: Design flaw (why gap exists)\n- Why 5: Root cause (systemic defect)\nStop early if you find a directly fixable problem.\n\nPHASE 3 \u2014 Root Cause Classification:\nClassify into ONE: People | Design | Assumption | Tooling\n- People: capability blind spots, habit issues\n- Design: architecture defects, missing gates, process gaps\n- Assumption: wrong assumptions about env/versions/deps\n- Tooling: tool misconfiguration, API changes\n\nPHASE 4 \u2014 Recommendation Taxonomy & Distillation:\nAnalyze the root cause and propose actionable recommendations. Classify each recommendation into one of FIVE categories based on the taxonomy below.\n\nTAXONOMY DEFINITIONS:\n1. \"rule\": Deterministic constraints. Use for specific tool blocks or path protections. A \"rule\" MUST have a precise 'triggerPattern' and 'action' for physical interception.\n2. \"principle\": Abstract, reusable wisdom. Use for high-level architectural guidelines. MUST have 'abstractedPrinciple'.\n3. \"implementation\": Code-level candidate. Use for extremely specific code patches.\n4. \"prompt\": Context/Skill injection. Use to influence the agent's workflow habits.\n5. \"defer\": Insufficient evidence. Use for network timeouts or noise.\n\nCRITICAL: Your ENTIRE response must be ONLY the JSON object below. Do NOT include any text before or after the JSON. Do NOT wrap the JSON in markdown code fences. Do NOT add explanatory prose. Output the raw JSON object and nothing else.\n\nCOMPLETE EXAMPLE OUTPUT (follow this exact structure):\n{\"valid\":true,\"diagnosisId\":\"diag-550e8400-e29b-41d4-a716-446655440000\",\"summary\":\"Missing input validation caused null pointer exception in handler\",\"rootCause\":\"Design: No null check on input parameter before processing\",\"violatedPrinciples\":[{\"rationale\":\"The defensive programming principle was violated by not validating inputs at the boundary\"}],\"evidence\":[{\"sourceRef\":\"src:handler.ts:L42\",\"note\":\"Null dereference without guard check\"},{\"sourceRef\":\"log:error-trace\",\"note\":\"NullPointerException at handler.process()\"}],\"recommendations\":[{\"kind\":\"rule\",\"description\":\"Add null check at handler entry point\",\"triggerPattern\":\"function process(\",\"action\":\"Insert null guard returning error response\"},{\"kind\":\"principle\",\"description\":\"Validate all external inputs at system boundaries\",\"abstractedPrinciple\":\"Never trust external data without validation at entry points\"},{\"kind\":\"implementation\",\"description\":\"Add input validation middleware before handler\"},{\"kind\":\"prompt\",\"description\":\"Add defensive validation step to agent workflow\"},{\"kind\":\"defer\",\"description\":\"Upstream caller validation status unclear from available logs\"}],\"confidence\":0.82,\"ambiguityNotes\":[\"Stack trace may indicate upstream caller also missing validation\"]}\n\nIMPORTANT: The example above is ILLUSTRATIVE ONLY. Your recommendations MUST be based on the actual root cause analysis and evidence in this context \u2014 do not copy the example text verbatim.\n\nCONSTRAINTS:\n- Output ONLY valid JSON \u2014 no markdown, no explanatory text, no code fences, no prose before or after\n- Do NOT read files, call tools, or write to any database\n- rootCause MUST include category prefix: \"Design: ...\" or \"People: ...\" etc.\n- confidence MUST be a number between 0.0 and 1.0 (NOT a string, NOT a percentage)\n- kind MUST be one of: \"principle\", \"rule\", \"implementation\", \"prompt\", \"defer\" (lowercase only)\n- \"principle\" kind: MUST include abstractedPrinciple (<=200 chars)\n- \"rule\" kind: MUST include triggerPattern AND action\n- All evidence must reference sourceRef identifiers or conversationWindow entries from the context payload\n- The root cause MUST describe an agent behavior or decision, not a system monitoring or diagnostic mechanism.\n If the evidence only describes internal metrics (GFI, friction scores, threshold crossings) with no\n owner message or agent action context, return confidence < 0.3 and kind=\"defer\".\n";
102
+ export declare function buildDiagnosticProtocolInstruction(adapter?: SchemaPromptAdapter, schema?: TSchema): string;
101
103
  /**
102
104
  * Summarizes a conversation window for inclusion in the prompt.
103
105
  * DPB-04: Prompt includes conversationWindow summary.
@@ -107,6 +109,9 @@ export declare const DIAGNOSTIC_PROTOCOL_INSTRUCTION = "You are a root cause ana
107
109
  */
108
110
  export declare function summarizeConversationWindow(entries: HistoryQueryEntry[]): HistoryQueryEntry[];
109
111
  export declare class DiagnosticianPromptBuilder {
112
+ private readonly adapter;
113
+ private readonly schema;
114
+ constructor(adapter?: SchemaPromptAdapter, schema?: TSchema);
110
115
  /**
111
116
  * Transform DiagnosticianContextPayload into a PromptInput object,
112
117
  * then serialize to JSON for the --message argument.
@@ -1 +1 @@
1
- {"version":3,"file":"diagnostician-prompt-builder.d.ts","sourceRoot":"","sources":["../../src/runtime-v2/diagnostician-prompt-builder.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,OAAO,KAAK,EACV,2BAA2B,EAC3B,iBAAiB,EACjB,eAAe,EAChB,MAAM,sBAAsB,CAAC;AAE9B;;;;;;;;GAQG;AACH,MAAM,WAAW,WAAW;IAC1B,2BAA2B;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,qDAAqD;IACrD,WAAW,EAAE,MAAM,CAAC;IACpB,wDAAwD;IACxD,eAAe,EAAE,eAAe,CAAC;IACjC;;;;OAIG;IACH,kBAAkB,EAAE,iBAAiB,EAAE,CAAC;IACxC,0CAA0C;IAC1C,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,kEAAkE;IAClE,OAAO,EAAE,2BAA2B,CAAC;IACrC;;;;;OAKG;IACH,qBAAqB,EAAE,MAAM,CAAC;IAC9B,kFAAkF;IAClF,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;CAC/B;AAED,+DAA+D;AAC/D,MAAM,WAAW,mBAAmB;IAClC,2DAA2D;IAC3D,sBAAsB,EAAE,MAAM,CAAC;IAC/B,wDAAwD;IACxD,iBAAiB,EAAE,MAAM,CAAC;IAC1B,wDAAwD;IACxD,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,eAAO,MAAM,6BAA6B,EAAE,mBAIlC,CAAC;AAEX;;;;;GAKG;AACH,MAAM,WAAW,iBAAiB;IAChC,iFAAiF;IACjF,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,yDAAyD;IACzD,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC;CACnC;AAED;;;;;;;;;;GAUG;AACH,eAAO,MAAM,+BAA+B,u1JAuD3C,CAAC;AAEF;;;;;;GAMG;AACH,wBAAgB,2BAA2B,CACzC,OAAO,EAAE,iBAAiB,EAAE,GAC3B,iBAAiB,EAAE,CAErB;AAED,qBAAa,0BAA0B;IACrC;;;;;;;;;;;;OAYG;IAEH,WAAW,CACT,OAAO,EAAE,2BAA2B,EACpC,MAAM,GAAE,mBAAmD,GAC1D,iBAAiB;CAgErB"}
1
+ {"version":3,"file":"diagnostician-prompt-builder.d.ts","sourceRoot":"","sources":["../../src/runtime-v2/diagnostician-prompt-builder.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,OAAO,KAAK,EACV,2BAA2B,EAC3B,iBAAiB,EACjB,eAAe,EAChB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAC;AAI9E;;;;;;;;GAQG;AACH,MAAM,WAAW,WAAW;IAC1B,2BAA2B;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,qDAAqD;IACrD,WAAW,EAAE,MAAM,CAAC;IACpB,wDAAwD;IACxD,eAAe,EAAE,eAAe,CAAC;IACjC;;;;OAIG;IACH,kBAAkB,EAAE,iBAAiB,EAAE,CAAC;IACxC,0CAA0C;IAC1C,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,kEAAkE;IAClE,OAAO,EAAE,2BAA2B,CAAC;IACrC;;;;;OAKG;IACH,qBAAqB,EAAE,MAAM,CAAC;IAC9B,kFAAkF;IAClF,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;CAC/B;AAED,+DAA+D;AAC/D,MAAM,WAAW,mBAAmB;IAClC,2DAA2D;IAC3D,sBAAsB,EAAE,MAAM,CAAC;IAC/B,wDAAwD;IACxD,iBAAiB,EAAE,MAAM,CAAC;IAC1B,wDAAwD;IACxD,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,eAAO,MAAM,6BAA6B,EAAE,mBAIlC,CAAC;AAEX;;;;;GAKG;AACH,MAAM,WAAW,iBAAiB;IAChC,iFAAiF;IACjF,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,yDAAyD;IACzD,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC;CACnC;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,kCAAkC,CAChD,OAAO,GAAE,mBAAsD,EAC/D,MAAM,GAAE,OAAqC,GAC5C,MAAM,CAwDR;AAED;;;;;;GAMG;AACH,wBAAgB,2BAA2B,CACzC,OAAO,EAAE,iBAAiB,EAAE,GAC3B,iBAAiB,EAAE,CAErB;AAED,qBAAa,0BAA0B;IACrC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAsB;IAC9C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAU;gBAG/B,OAAO,GAAE,mBAAsD,EAC/D,MAAM,GAAE,OAAqC;IAM/C;;;;;;;;;;;;OAYG;IACH,WAAW,CACT,OAAO,EAAE,2BAA2B,EACpC,MAAM,GAAE,mBAAmD,GAC1D,iBAAiB;CAkErB"}
@@ -1,3 +1,5 @@
1
+ import { DefaultSchemaPromptAdapter } from './adapter/schema-prompt-adapter.js';
2
+ import { DiagnosticianOutputV1Schema } from './diagnostician-output.js';
1
3
  export const DEFAULT_PROMPT_BUILDER_LIMITS = {
2
4
  maxConversationEntries: 30,
3
5
  maxEntryTextChars: 2000,
@@ -14,7 +16,10 @@ export const DEFAULT_PROMPT_BUILDER_LIMITS = {
14
16
  * The 5-phase protocol is embedded directly in the prompt so the LLM follows it
15
17
  * regardless of whether OpenClaw loads SKILL.md as the agent system prompt.
16
18
  */
17
- export const DIAGNOSTIC_PROTOCOL_INSTRUCTION = `You are a root cause analysis expert. Follow this protocol:
19
+ export function buildDiagnosticProtocolInstruction(adapter = new DefaultSchemaPromptAdapter(), schema = DiagnosticianOutputV1Schema) {
20
+ const example = adapter.generateExample(schema);
21
+ const constraints = adapter.generateConstraints(schema);
22
+ return `You are a root cause analysis expert. Follow this protocol:
18
23
 
19
24
  PHASE 1 — Evidence Review:
20
25
  Review the provided sourceRefs, diagnosisTarget.evidence entries, conversationWindow
@@ -50,26 +55,23 @@ TAXONOMY DEFINITIONS:
50
55
  4. "prompt": Context/Skill injection. Use to influence the agent's workflow habits.
51
56
  5. "defer": Insufficient evidence. Use for network timeouts or noise.
52
57
 
58
+ EVIDENCE SCOPE GUARD:
59
+ - The root cause MUST describe an agent behavior or decision, not a system monitoring or diagnostic mechanism.
60
+ - If the evidence only describes internal metrics (GFI, friction scores, threshold crossings) with no
61
+ owner message or agent action context, return confidence < 0.3 and kind="defer".
62
+
53
63
  CRITICAL: Your ENTIRE response must be ONLY the JSON object below. Do NOT include any text before or after the JSON. Do NOT wrap the JSON in markdown code fences. Do NOT add explanatory prose. Output the raw JSON object and nothing else.
54
64
 
55
65
  COMPLETE EXAMPLE OUTPUT (follow this exact structure):
56
- {"valid":true,"diagnosisId":"diag-550e8400-e29b-41d4-a716-446655440000","summary":"Missing input validation caused null pointer exception in handler","rootCause":"Design: No null check on input parameter before processing","violatedPrinciples":[{"rationale":"The defensive programming principle was violated by not validating inputs at the boundary"}],"evidence":[{"sourceRef":"src:handler.ts:L42","note":"Null dereference without guard check"},{"sourceRef":"log:error-trace","note":"NullPointerException at handler.process()"}],"recommendations":[{"kind":"rule","description":"Add null check at handler entry point","triggerPattern":"function process(","action":"Insert null guard returning error response"},{"kind":"principle","description":"Validate all external inputs at system boundaries","abstractedPrinciple":"Never trust external data without validation at entry points"},{"kind":"implementation","description":"Add input validation middleware before handler"},{"kind":"prompt","description":"Add defensive validation step to agent workflow"},{"kind":"defer","description":"Upstream caller validation status unclear from available logs"}],"confidence":0.82,"ambiguityNotes":["Stack trace may indicate upstream caller also missing validation"]}
66
+ ${example}
57
67
 
58
68
  IMPORTANT: The example above is ILLUSTRATIVE ONLY. Your recommendations MUST be based on the actual root cause analysis and evidence in this context — do not copy the example text verbatim.
59
69
 
60
70
  CONSTRAINTS:
61
71
  - Output ONLY valid JSON — no markdown, no explanatory text, no code fences, no prose before or after
62
72
  - Do NOT read files, call tools, or write to any database
63
- - rootCause MUST include category prefix: "Design: ..." or "People: ..." etc.
64
- - confidence MUST be a number between 0.0 and 1.0 (NOT a string, NOT a percentage)
65
- - kind MUST be one of: "principle", "rule", "implementation", "prompt", "defer" (lowercase only)
66
- - "principle" kind: MUST include abstractedPrinciple (<=200 chars)
67
- - "rule" kind: MUST include triggerPattern AND action
68
- - All evidence must reference sourceRef identifiers or conversationWindow entries from the context payload
69
- - The root cause MUST describe an agent behavior or decision, not a system monitoring or diagnostic mechanism.
70
- If the evidence only describes internal metrics (GFI, friction scores, threshold crossings) with no
71
- owner message or agent action context, return confidence < 0.3 and kind="defer".
72
- `;
73
+ ${constraints}`;
74
+ }
73
75
  /**
74
76
  * Summarizes a conversation window for inclusion in the prompt.
75
77
  * DPB-04: Prompt includes conversationWindow summary.
@@ -81,6 +83,12 @@ export function summarizeConversationWindow(entries) {
81
83
  return entries;
82
84
  }
83
85
  export class DiagnosticianPromptBuilder {
86
+ adapter;
87
+ schema;
88
+ constructor(adapter = new DefaultSchemaPromptAdapter(), schema = DiagnosticianOutputV1Schema) {
89
+ this.adapter = adapter;
90
+ this.schema = schema;
91
+ }
84
92
  /**
85
93
  * Transform DiagnosticianContextPayload into a PromptInput object,
86
94
  * then serialize to JSON for the --message argument.
@@ -94,7 +102,6 @@ export class DiagnosticianPromptBuilder {
94
102
  *
95
103
  * Per DPB-07: NO extraSystemPrompt is added — agent profile is the source of truth.
96
104
  */
97
- // eslint-disable-next-line @typescript-eslint/class-methods-use-this
98
105
  buildPrompt(payload, limits = DEFAULT_PROMPT_BUILDER_LIMITS) {
99
106
  const truncationWarnings = [];
100
107
  // DPB-04: Apply truncation to conversationWindow to prevent token overflow
@@ -119,6 +126,7 @@ export class DiagnosticianPromptBuilder {
119
126
  ...payload,
120
127
  conversationWindow,
121
128
  };
129
+ const diagnosticInstruction = buildDiagnosticProtocolInstruction(this.adapter, this.schema);
122
130
  // DPB-04: Explicit top-level fields at the prompt level
123
131
  const promptInput = {
124
132
  taskId: payload.taskId,
@@ -127,7 +135,7 @@ export class DiagnosticianPromptBuilder {
127
135
  conversationWindow,
128
136
  sourceRefs: payload.sourceRefs,
129
137
  context: compactContext,
130
- diagnosticInstruction: DIAGNOSTIC_PROTOCOL_INSTRUCTION,
138
+ diagnosticInstruction,
131
139
  ...(truncationWarnings.length > 0 ? { truncationWarnings } : {}),
132
140
  };
133
141
  // DPB-02: Output is ONLY JSON — no markdown, no file ops, no tool calls
@@ -136,7 +144,7 @@ export class DiagnosticianPromptBuilder {
136
144
  // If message exceeds maxMessageChars, truncate the diagnostic instruction
137
145
  if (message.length > limits.maxMessageChars) {
138
146
  const surplus = message.length - limits.maxMessageChars;
139
- const instruction = DIAGNOSTIC_PROTOCOL_INSTRUCTION;
147
+ const instruction = diagnosticInstruction;
140
148
  // Keep at least the first 200 chars of the instruction + a note
141
149
  const keepLength = Math.max(200, instruction.length - surplus - 100);
142
150
  const truncatedInstruction = instruction.slice(0, keepLength) +
@@ -1 +1 @@
1
- {"version":3,"file":"diagnostician-prompt-builder.js","sourceRoot":"","sources":["../../src/runtime-v2/diagnostician-prompt-builder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"diagnostician-prompt-builder.js","sourceRoot":"","sources":["../../src/runtime-v2/diagnostician-prompt-builder.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@principles/core",
3
- "version": "1.73.0",
3
+ "version": "1.74.0",
4
4
  "description": "Universal Evolution SDK - framework-agnostic pain signal capture and principle injection",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=nocturnal-compliance-trust-boundary.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"nocturnal-compliance-trust-boundary.test.d.ts","sourceRoot":"","sources":["../../../src/runtime-v2/__tests__/nocturnal-compliance-trust-boundary.test.ts"],"names":[],"mappings":""}
@@ -1,215 +0,0 @@
1
- import { describe, it, expect } from 'vitest';
2
- import { groupEventsIntoSessions, detectOpportunity, } from '../nocturnal/nocturnal-compliance.js';
3
- import { validatePainSignal, } from '../types/pain-signal.js';
4
- function makeEvent(overrides) {
5
- return {
6
- ts: '2025-01-01T00:00:00Z',
7
- sessionId: 'test-session',
8
- ...overrides,
9
- };
10
- }
11
- function getSession(events) {
12
- const sessions = groupEventsIntoSessions(events);
13
- const session = sessions.get('test-session');
14
- expect(session).toBeDefined();
15
- return session;
16
- }
17
- describe('nocturnal-compliance trust boundary', () => {
18
- describe('groupEventsIntoSessions — non-string toolName', () => {
19
- it('rejects numeric toolName, entry skipped from toolCalls', () => {
20
- const events = [
21
- makeEvent({ type: 'tool_call', data: { toolName: 42 } }),
22
- ];
23
- const session = getSession(events);
24
- expect(session.toolCalls).toHaveLength(0);
25
- });
26
- it('rejects array toolName, entry skipped from toolCalls', () => {
27
- const events = [
28
- makeEvent({ type: 'tool_call', data: { toolName: ['Write'] } }),
29
- ];
30
- const session = getSession(events);
31
- expect(session.toolCalls).toHaveLength(0);
32
- });
33
- });
34
- describe('groupEventsIntoSessions — non-string filePath', () => {
35
- it('rejects object filePath, yields undefined', () => {
36
- const events = [
37
- makeEvent({ type: 'tool_call', data: { toolName: 'Write', filePath: { malicious: true } } }),
38
- ];
39
- const session = getSession(events);
40
- expect(session.toolCalls[0]?.filePath).toBeUndefined();
41
- });
42
- it('rejects numeric filePath, yields undefined', () => {
43
- const events = [
44
- makeEvent({ type: 'tool_call', data: { toolName: 'Write', filePath: 123 } }),
45
- ];
46
- const session = getSession(events);
47
- expect(session.toolCalls[0]?.filePath).toBeUndefined();
48
- });
49
- });
50
- describe('groupEventsIntoSessions — score NaN/Infinity', () => {
51
- it('rejects NaN score, entry skipped from painSignals', () => {
52
- const events = [
53
- makeEvent({ type: 'pain_signal', data: { score: NaN, source: 'test' } }),
54
- ];
55
- const session = getSession(events);
56
- expect(session.painSignals).toHaveLength(0);
57
- });
58
- it('rejects Infinity score, entry skipped from painSignals', () => {
59
- const events = [
60
- makeEvent({ type: 'pain_signal', data: { score: Infinity, source: 'test' } }),
61
- ];
62
- const session = getSession(events);
63
- expect(session.painSignals).toHaveLength(0);
64
- });
65
- it('rejects -Infinity score, entry skipped from painSignals', () => {
66
- const events = [
67
- makeEvent({ type: 'pain_signal', data: { score: -Infinity, source: 'test' } }),
68
- ];
69
- const session = getSession(events);
70
- expect(session.painSignals).toHaveLength(0);
71
- });
72
- });
73
- describe('groupEventsIntoSessions — invalid severity', () => {
74
- it('rejects unknown severity string, yields undefined', () => {
75
- const events = [
76
- makeEvent({ type: 'pain_signal', data: { score: 50, source: 'test', severity: 'critical' } }),
77
- ];
78
- const session = getSession(events);
79
- expect(session.painSignals).toHaveLength(1);
80
- expect(session.painSignals[0]?.severity).toBeUndefined();
81
- });
82
- it('rejects numeric severity, yields undefined', () => {
83
- const events = [
84
- makeEvent({ type: 'pain_signal', data: { score: 50, source: 'test', severity: 3 } }),
85
- ];
86
- const session = getSession(events);
87
- expect(session.painSignals).toHaveLength(1);
88
- expect(session.painSignals[0]?.severity).toBeUndefined();
89
- });
90
- });
91
- describe('groupEventsIntoSessions — malformed nested values', () => {
92
- it('does not crash and does not promote untrusted values', () => {
93
- const events = [
94
- makeEvent({ type: 'tool_call', data: { toolName: [1, 2, 3] } }),
95
- makeEvent({ type: 'pain_signal', data: { toolName: [1, 2, 3], score: 'high', source: 99 } }),
96
- ];
97
- const session = getSession(events);
98
- expect(session.toolCalls).toHaveLength(0);
99
- expect(session.painSignals).toHaveLength(0);
100
- });
101
- });
102
- describe('groupEventsIntoSessions — skip behavior', () => {
103
- it('invalid toolName row skipped and does not increment toolCalls length', () => {
104
- const events = [
105
- makeEvent({ type: 'tool_call', data: { toolName: 'Write', filePath: '/foo.ts' } }),
106
- makeEvent({ type: 'tool_call', data: { toolName: 42 } }),
107
- makeEvent({ type: 'tool_call', data: { toolName: 'Read', filePath: '/bar.ts' } }),
108
- ];
109
- const session = getSession(events);
110
- expect(session.toolCalls).toHaveLength(2);
111
- expect(session.toolCalls[0]?.toolName).toBe('Write');
112
- expect(session.toolCalls[1]?.toolName).toBe('Read');
113
- });
114
- it('invalid toolName cannot trigger T-09 opportunity', () => {
115
- const events = [
116
- makeEvent({ type: 'tool_call', data: { toolName: 42 } }),
117
- makeEvent({ type: 'tool_call', data: { toolName: 99 } }),
118
- makeEvent({ type: 'tool_call', data: { toolName: [1, 2] } }),
119
- ];
120
- const session = getSession(events);
121
- expect(session.toolCalls).toHaveLength(0);
122
- const opp = detectOpportunity('T-09', session);
123
- expect(opp.applicable).toBe(false);
124
- });
125
- it('NaN pain score skipped and does not trigger pain-derived opportunity', () => {
126
- const events = [
127
- makeEvent({ type: 'pain_signal', data: { score: NaN, source: 'test' } }),
128
- ];
129
- const session = getSession(events);
130
- expect(session.painSignals).toHaveLength(0);
131
- });
132
- it('malformed gate block skipped and does not count as violation', () => {
133
- const events = [
134
- makeEvent({ type: 'gate_block', data: { toolName: 42, reason: 'dangerous' } }),
135
- makeEvent({ type: 'gate_block', data: { toolName: 'bash', reason: '' } }),
136
- ];
137
- const session = getSession(events);
138
- expect(session.gateBlocks).toHaveLength(0);
139
- });
140
- it('malformed plan approval skipped', () => {
141
- const events = [
142
- makeEvent({ type: 'plan_approval', data: { toolName: [1, 2] } }),
143
- ];
144
- const session = getSession(events);
145
- expect(session.planApprovals).toHaveLength(0);
146
- });
147
- });
148
- describe('groupEventsIntoSessions — valid data preserved', () => {
149
- it('preserves all valid fields correctly', () => {
150
- const events = [
151
- makeEvent({ type: 'tool_call', data: { toolName: 'Write', filePath: '/foo.ts' } }),
152
- makeEvent({ type: 'pain_signal', data: { source: 'tool_failure', score: 0.8, severity: 'moderate', reason: 'test reason' } }),
153
- makeEvent({ type: 'gate_block', data: { toolName: 'bash', filePath: '/bar.sh', reason: 'dangerous command' } }),
154
- makeEvent({ type: 'plan_approval', data: { toolName: 'Read', filePath: '/baz.ts' } }),
155
- ];
156
- const session = getSession(events);
157
- expect(session.toolCalls[0]?.toolName).toBe('Write');
158
- expect(session.toolCalls[0]?.filePath).toBe('/foo.ts');
159
- expect(session.painSignals[0]?.source).toBe('tool_failure');
160
- expect(session.painSignals[0]?.score).toBe(0.8);
161
- expect(session.painSignals[0]?.severity).toBe('moderate');
162
- expect(session.painSignals[0]?.reason).toBe('test reason');
163
- expect(session.gateBlocks[0]?.toolName).toBe('bash');
164
- expect(session.gateBlocks[0]?.filePath).toBe('/bar.sh');
165
- expect(session.gateBlocks[0]?.reason).toBe('dangerous command');
166
- expect(session.planApprovals[0]?.toolName).toBe('Read');
167
- expect(session.planApprovals[0]?.filePath).toBe('/baz.ts');
168
- });
169
- });
170
- describe('validatePainSignal — malformed unknown input', () => {
171
- it('rejects null', () => {
172
- const result = validatePainSignal(null);
173
- expect(result.valid).toBe(false);
174
- });
175
- it('rejects string', () => {
176
- const result = validatePainSignal('string');
177
- expect(result.valid).toBe(false);
178
- });
179
- it('rejects number', () => {
180
- const result = validatePainSignal(42);
181
- expect(result.valid).toBe(false);
182
- });
183
- it('rejects array', () => {
184
- const result = validatePainSignal([]);
185
- expect(result.valid).toBe(false);
186
- });
187
- it('rejects undefined', () => {
188
- const result = validatePainSignal(undefined);
189
- expect(result.valid).toBe(false);
190
- });
191
- it('rejects boolean', () => {
192
- const result = validatePainSignal(true);
193
- expect(result.valid).toBe(false);
194
- });
195
- });
196
- });
197
- describe('plugin re-export compatibility', () => {
198
- it('exposes groupEventsIntoSessions from @principles/core/runtime-v2', async () => {
199
- const mod = await import('../index.js');
200
- expect(typeof mod.groupEventsIntoSessions).toBe('function');
201
- });
202
- it('exposes validatePainSignal from @principles/core/runtime-v2', async () => {
203
- const mod = await import('../index.js');
204
- expect(typeof mod.validatePainSignal).toBe('function');
205
- });
206
- it('exposes detectOpportunity from @principles/core/runtime-v2', async () => {
207
- const mod = await import('../index.js');
208
- expect(typeof mod.detectOpportunity).toBe('function');
209
- });
210
- it('exposes computeCompliance from @principles/core/runtime-v2', async () => {
211
- const mod = await import('../index.js');
212
- expect(typeof mod.computeCompliance).toBe('function');
213
- });
214
- });
215
- //# sourceMappingURL=nocturnal-compliance-trust-boundary.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"nocturnal-compliance-trust-boundary.test.js","sourceRoot":"","sources":["../../../src/runtime-v2/__tests__/nocturnal-compliance-trust-boundary.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=idle-trigger-config-resolve.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"idle-trigger-config-resolve.test.d.ts","sourceRoot":"","sources":["../../../../src/runtime-v2/idle-trigger/__tests__/idle-trigger-config-resolve.test.ts"],"names":[],"mappings":""}
@@ -1,92 +0,0 @@
1
- import { describe, it, expect } from 'vitest';
2
- import { resolveIdleTriggerConfig, DEFAULT_IDLE_TRIGGER_CONFIG } from '../index.js';
3
- describe('resolveIdleTriggerConfig', () => {
4
- it('undefined partial returns full default config', () => {
5
- const result = resolveIdleTriggerConfig(undefined);
6
- expect(result).toEqual(DEFAULT_IDLE_TRIGGER_CONFIG);
7
- });
8
- it('empty object partial returns full default config', () => {
9
- const result = resolveIdleTriggerConfig({});
10
- expect(result).toEqual(DEFAULT_IDLE_TRIGGER_CONFIG);
11
- });
12
- it('partial enabled=false overrides only enabled', () => {
13
- const result = resolveIdleTriggerConfig({ enabled: false });
14
- expect(result.enabled).toBe(false);
15
- expect(result.idleThresholdMs).toBe(DEFAULT_IDLE_TRIGGER_CONFIG.idleThresholdMs);
16
- expect(result.jitterMaxMs).toBe(DEFAULT_IDLE_TRIGGER_CONFIG.jitterMaxMs);
17
- expect(result.activityCooldownMs).toBe(DEFAULT_IDLE_TRIGGER_CONFIG.activityCooldownMs);
18
- });
19
- it('partial enabled=true overrides only enabled', () => {
20
- const result = resolveIdleTriggerConfig({ enabled: true });
21
- expect(result.enabled).toBe(true);
22
- expect(result.idleThresholdMs).toBe(DEFAULT_IDLE_TRIGGER_CONFIG.idleThresholdMs);
23
- });
24
- it('partial idleThresholdMs overrides only idleThresholdMs', () => {
25
- const result = resolveIdleTriggerConfig({ idleThresholdMs: 600000 });
26
- expect(result.idleThresholdMs).toBe(600000);
27
- expect(result.enabled).toBe(DEFAULT_IDLE_TRIGGER_CONFIG.enabled);
28
- expect(result.jitterMaxMs).toBe(DEFAULT_IDLE_TRIGGER_CONFIG.jitterMaxMs);
29
- expect(result.activityCooldownMs).toBe(DEFAULT_IDLE_TRIGGER_CONFIG.activityCooldownMs);
30
- });
31
- it('partial jitterMaxMs overrides only jitterMaxMs', () => {
32
- const result = resolveIdleTriggerConfig({ jitterMaxMs: 60000 });
33
- expect(result.jitterMaxMs).toBe(60000);
34
- expect(result.enabled).toBe(DEFAULT_IDLE_TRIGGER_CONFIG.enabled);
35
- expect(result.idleThresholdMs).toBe(DEFAULT_IDLE_TRIGGER_CONFIG.idleThresholdMs);
36
- expect(result.activityCooldownMs).toBe(DEFAULT_IDLE_TRIGGER_CONFIG.activityCooldownMs);
37
- });
38
- it('partial activityCooldownMs overrides only activityCooldownMs', () => {
39
- const result = resolveIdleTriggerConfig({ activityCooldownMs: 120000 });
40
- expect(result.activityCooldownMs).toBe(120000);
41
- expect(result.enabled).toBe(DEFAULT_IDLE_TRIGGER_CONFIG.enabled);
42
- expect(result.idleThresholdMs).toBe(DEFAULT_IDLE_TRIGGER_CONFIG.idleThresholdMs);
43
- expect(result.jitterMaxMs).toBe(DEFAULT_IDLE_TRIGGER_CONFIG.jitterMaxMs);
44
- });
45
- it('all fields partial overrides all fields', () => {
46
- const overrides = {
47
- enabled: false,
48
- idleThresholdMs: 900000,
49
- jitterMaxMs: 45000,
50
- activityCooldownMs: 180000,
51
- };
52
- const result = resolveIdleTriggerConfig(overrides);
53
- expect(result).toEqual(overrides);
54
- });
55
- it('single field partial preserves defaults for other fields', () => {
56
- const result = resolveIdleTriggerConfig({ idleThresholdMs: 120000 });
57
- expect(result.idleThresholdMs).toBe(120000);
58
- expect(result.enabled).toBe(DEFAULT_IDLE_TRIGGER_CONFIG.enabled);
59
- expect(result.jitterMaxMs).toBe(DEFAULT_IDLE_TRIGGER_CONFIG.jitterMaxMs);
60
- expect(result.activityCooldownMs).toBe(DEFAULT_IDLE_TRIGGER_CONFIG.activityCooldownMs);
61
- });
62
- });
63
- describe('DEFAULT_IDLE_TRIGGER_CONFIG', () => {
64
- it('has required fields', () => {
65
- expect(DEFAULT_IDLE_TRIGGER_CONFIG).toHaveProperty('enabled');
66
- expect(DEFAULT_IDLE_TRIGGER_CONFIG).toHaveProperty('idleThresholdMs');
67
- expect(DEFAULT_IDLE_TRIGGER_CONFIG).toHaveProperty('jitterMaxMs');
68
- expect(DEFAULT_IDLE_TRIGGER_CONFIG).toHaveProperty('activityCooldownMs');
69
- });
70
- it('enabled defaults to true', () => {
71
- expect(DEFAULT_IDLE_TRIGGER_CONFIG.enabled).toBe(true);
72
- });
73
- it('idleThresholdMs is positive number', () => {
74
- expect(typeof DEFAULT_IDLE_TRIGGER_CONFIG.idleThresholdMs).toBe('number');
75
- expect(DEFAULT_IDLE_TRIGGER_CONFIG.idleThresholdMs).toBeGreaterThan(0);
76
- });
77
- it('jitterMaxMs is non-negative number', () => {
78
- expect(typeof DEFAULT_IDLE_TRIGGER_CONFIG.jitterMaxMs).toBe('number');
79
- expect(DEFAULT_IDLE_TRIGGER_CONFIG.jitterMaxMs).toBeGreaterThanOrEqual(0);
80
- });
81
- it('activityCooldownMs is positive number', () => {
82
- expect(typeof DEFAULT_IDLE_TRIGGER_CONFIG.activityCooldownMs).toBe('number');
83
- expect(DEFAULT_IDLE_TRIGGER_CONFIG.activityCooldownMs).toBeGreaterThan(0);
84
- });
85
- it('jitterMaxMs is less than or equal to idleThresholdMs', () => {
86
- expect(DEFAULT_IDLE_TRIGGER_CONFIG.jitterMaxMs).toBeLessThanOrEqual(DEFAULT_IDLE_TRIGGER_CONFIG.idleThresholdMs);
87
- });
88
- it('activityCooldownMs is less than idleThresholdMs', () => {
89
- expect(DEFAULT_IDLE_TRIGGER_CONFIG.activityCooldownMs).toBeLessThan(DEFAULT_IDLE_TRIGGER_CONFIG.idleThresholdMs);
90
- });
91
- });
92
- //# sourceMappingURL=idle-trigger-config-resolve.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"idle-trigger-config-resolve.test.js","sourceRoot":"","sources":["../../../../src/runtime-v2/idle-trigger/__tests__/idle-trigger-config-resolve.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=idle-trigger-decision.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"idle-trigger-decision.test.d.ts","sourceRoot":"","sources":["../../../../src/runtime-v2/idle-trigger/__tests__/idle-trigger-decision.test.ts"],"names":[],"mappings":""}