@principles/core 1.273.1 → 1.274.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.
- package/dist/index.d.ts +3 -3
- package/dist/index.js +3 -3
- package/dist/runtime-v2/__tests__/pain-signal-observability.test.js +93 -0
- package/dist/runtime-v2/__tests__/pain-signal-observability.test.js.map +1 -1
- package/dist/runtime-v2/index.d.ts +2 -0
- package/dist/runtime-v2/index.d.ts.map +1 -1
- package/dist/runtime-v2/index.js.map +1 -1
- package/dist/runtime-v2/pain-signal-bridge.d.ts +8 -1
- package/dist/runtime-v2/pain-signal-bridge.d.ts.map +1 -1
- package/dist/runtime-v2/pain-signal-bridge.js.map +1 -1
- package/dist/runtime-v2/pain-signal-observability.d.ts.map +1 -1
- package/dist/runtime-v2/pain-signal-observability.js +25 -10
- package/dist/runtime-v2/pain-signal-observability.js.map +1 -1
- package/package.json +1 -2
- package/dist/adapters/__tests__/code-review-pain-adapter.test.d.ts +0 -2
- package/dist/adapters/__tests__/code-review-pain-adapter.test.d.ts.map +0 -1
- package/dist/adapters/__tests__/code-review-pain-adapter.test.js +0 -346
- package/dist/adapters/__tests__/code-review-pain-adapter.test.js.map +0 -1
- package/dist/adapters/__tests__/openclaw-pain-adapter.test.d.ts +0 -2
- package/dist/adapters/__tests__/openclaw-pain-adapter.test.d.ts.map +0 -1
- package/dist/adapters/__tests__/openclaw-pain-adapter.test.js +0 -290
- package/dist/adapters/__tests__/openclaw-pain-adapter.test.js.map +0 -1
- package/dist/adapters/__tests__/writing-pain-adapter.test.d.ts +0 -2
- package/dist/adapters/__tests__/writing-pain-adapter.test.d.ts.map +0 -1
- package/dist/adapters/__tests__/writing-pain-adapter.test.js +0 -239
- package/dist/adapters/__tests__/writing-pain-adapter.test.js.map +0 -1
- package/dist/adapters/code-review/code-review-pain-adapter.d.ts +0 -13
- package/dist/adapters/code-review/code-review-pain-adapter.d.ts.map +0 -1
- package/dist/adapters/code-review/code-review-pain-adapter.js +0 -139
- package/dist/adapters/code-review/code-review-pain-adapter.js.map +0 -1
- package/dist/adapters/code-review/index.d.ts +0 -6
- package/dist/adapters/code-review/index.d.ts.map +0 -1
- package/dist/adapters/code-review/index.js +0 -2
- package/dist/adapters/code-review/index.js.map +0 -1
- package/dist/adapters/code-review/review-event-types.d.ts +0 -54
- package/dist/adapters/code-review/review-event-types.d.ts.map +0 -1
- package/dist/adapters/code-review/review-event-types.js +0 -8
- package/dist/adapters/code-review/review-event-types.js.map +0 -1
- package/dist/adapters/coding/index.d.ts +0 -6
- package/dist/adapters/coding/index.d.ts.map +0 -1
- package/dist/adapters/coding/index.js +0 -5
- package/dist/adapters/coding/index.js.map +0 -1
- package/dist/adapters/coding/openclaw-event-types.d.ts +0 -26
- package/dist/adapters/coding/openclaw-event-types.d.ts.map +0 -1
- package/dist/adapters/coding/openclaw-event-types.js +0 -9
- package/dist/adapters/coding/openclaw-event-types.js.map +0 -1
- package/dist/adapters/coding/openclaw-pain-adapter.d.ts +0 -27
- package/dist/adapters/coding/openclaw-pain-adapter.d.ts.map +0 -1
- package/dist/adapters/coding/openclaw-pain-adapter.js +0 -102
- package/dist/adapters/coding/openclaw-pain-adapter.js.map +0 -1
- package/dist/adapters/writing/index.d.ts +0 -6
- package/dist/adapters/writing/index.d.ts.map +0 -1
- package/dist/adapters/writing/index.js +0 -5
- package/dist/adapters/writing/index.js.map +0 -1
- package/dist/adapters/writing/writing-pain-adapter.d.ts +0 -22
- package/dist/adapters/writing/writing-pain-adapter.d.ts.map +0 -1
- package/dist/adapters/writing/writing-pain-adapter.js +0 -62
- package/dist/adapters/writing/writing-pain-adapter.js.map +0 -1
- package/dist/adapters/writing/writing-types.d.ts +0 -34
- package/dist/adapters/writing/writing-types.d.ts.map +0 -1
- package/dist/adapters/writing/writing-types.js +0 -9
- package/dist/adapters/writing/writing-types.js.map +0 -1
- package/dist/pain-signal-adapter.d.ts +0 -37
- package/dist/pain-signal-adapter.d.ts.map +0 -1
- package/dist/pain-signal-adapter.js +0 -2
- package/dist/pain-signal-adapter.js.map +0 -1
- package/dist/pain-signal.d.ts +0 -16
- package/dist/pain-signal.d.ts.map +0 -1
- package/dist/pain-signal.js +0 -15
- package/dist/pain-signal.js.map +0 -1
- package/dist/runtime-v2/__tests__/pain-signal-unification.test.d.ts +0 -2
- package/dist/runtime-v2/__tests__/pain-signal-unification.test.d.ts.map +0 -1
- package/dist/runtime-v2/__tests__/pain-signal-unification.test.js +0 -150
- package/dist/runtime-v2/__tests__/pain-signal-unification.test.js.map +0 -1
|
@@ -138,6 +138,7 @@ function ensureTrajectorySchema(db) {
|
|
|
138
138
|
text TEXT,
|
|
139
139
|
canonical_pain_id TEXT,
|
|
140
140
|
runtime_task_id TEXT,
|
|
141
|
+
host_kind TEXT,
|
|
141
142
|
created_at TEXT NOT NULL
|
|
142
143
|
);
|
|
143
144
|
CREATE TABLE IF NOT EXISTS gate_blocks (
|
|
@@ -252,6 +253,9 @@ function ensureTrajectorySchema(db) {
|
|
|
252
253
|
for (const col of [
|
|
253
254
|
{ name: 'canonical_pain_id', type: 'TEXT' },
|
|
254
255
|
{ name: 'runtime_task_id', type: 'TEXT' },
|
|
256
|
+
// PRI-640: host attribution — observability metadata only, orthogonal to
|
|
257
|
+
// `origin` (evidence semantics) and excluded from canonical pain identity.
|
|
258
|
+
{ name: 'host_kind', type: 'TEXT' },
|
|
255
259
|
]) {
|
|
256
260
|
try {
|
|
257
261
|
db.exec(`ALTER TABLE pain_events ADD COLUMN ${col.name} ${col.type}`);
|
|
@@ -325,6 +329,7 @@ function ensureTrajectorySchema(db) {
|
|
|
325
329
|
`);
|
|
326
330
|
return { tables, warnings };
|
|
327
331
|
}
|
|
332
|
+
/** PRI-640: id of the pain_events row (undefined when the dedup row could not be re-read); warnings carry host_kind conflict evidence. */
|
|
328
333
|
function recordTrajectoryPainEvent(opts) {
|
|
329
334
|
const { stateDir, data, timestamp, workspaceDir, canonicalPainId, runtimeTaskId } = opts;
|
|
330
335
|
const dbPath = nodePath.join(stateDir, 'trajectory.db');
|
|
@@ -352,14 +357,15 @@ function recordTrajectoryPainEvent(opts) {
|
|
|
352
357
|
// Try INSERT; on UNIQUE constraint violation for canonical_pain_id, do UPDATE instead.
|
|
353
358
|
// SQLite UPSERT (ON CONFLICT) does not support partial unique indexes, so we
|
|
354
359
|
// handle the conflict manually.
|
|
360
|
+
const warnings = [];
|
|
355
361
|
try {
|
|
356
362
|
const result = db.prepare(`
|
|
357
363
|
INSERT INTO pain_events (
|
|
358
364
|
session_id, source, score, reason, severity, origin, confidence, text, created_at,
|
|
359
|
-
canonical_pain_id, runtime_task_id
|
|
360
|
-
) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
|
|
361
|
-
`).run(sessionId, data.source, data.score ?? 80, sanitizeString(data.reason ?? '', workspaceDir), severityFromScore(data.score ?? 80), data.source === 'manual' ? 'user_manual' : 'system_infer', 1, sanitizeString(data.reason ?? '', workspaceDir), timestamp, canonicalPainId ?? null, runtimeTaskId ?? null);
|
|
362
|
-
return Number(result.lastInsertRowid);
|
|
365
|
+
canonical_pain_id, runtime_task_id, host_kind
|
|
366
|
+
) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
|
|
367
|
+
`).run(sessionId, data.source, data.score ?? 80, sanitizeString(data.reason ?? '', workspaceDir), severityFromScore(data.score ?? 80), data.source === 'manual' ? 'user_manual' : 'system_infer', 1, sanitizeString(data.reason ?? '', workspaceDir), timestamp, canonicalPainId ?? null, runtimeTaskId ?? null, data.hostKind ?? null);
|
|
368
|
+
return { id: Number(result.lastInsertRowid), warnings };
|
|
363
369
|
}
|
|
364
370
|
catch (insertErr) {
|
|
365
371
|
// If UNIQUE constraint violation on canonical_pain_id, upsert manually
|
|
@@ -369,15 +375,22 @@ function recordTrajectoryPainEvent(opts) {
|
|
|
369
375
|
insertErr.message.includes('canonical_pain_id')) {
|
|
370
376
|
db.prepare(`
|
|
371
377
|
UPDATE pain_events
|
|
372
|
-
SET runtime_task_id = COALESCE(?, runtime_task_id)
|
|
378
|
+
SET runtime_task_id = COALESCE(?, runtime_task_id),
|
|
379
|
+
host_kind = COALESCE(host_kind, ?)
|
|
373
380
|
WHERE canonical_pain_id = ?
|
|
374
|
-
`).run(runtimeTaskId ?? null, canonicalPainId);
|
|
375
|
-
const rawRow = db.prepare('SELECT id FROM pain_events WHERE canonical_pain_id = ?').get(canonicalPainId);
|
|
381
|
+
`).run(runtimeTaskId ?? null, data.hostKind ?? null, canonicalPainId);
|
|
382
|
+
const rawRow = db.prepare('SELECT id, host_kind FROM pain_events WHERE canonical_pain_id = ?').get(canonicalPainId);
|
|
376
383
|
// Runtime Contract #1/#2: validate DB row instead of `as` cast
|
|
377
384
|
if (rawRow && typeof rawRow === 'object' && Object.hasOwn(rawRow, 'id') && typeof rawRow.id === 'number') {
|
|
378
|
-
|
|
385
|
+
// PRI-640 §16: keep the first durable host attribution; never overwrite.
|
|
386
|
+
// A differing re-attempt is surfaced as a bounded warning (rc-9-no-silent-fallback).
|
|
387
|
+
const durableHostKind = Object.getOwnPropertyDescriptor(rawRow, 'host_kind')?.value;
|
|
388
|
+
if (data.hostKind && typeof durableHostKind === 'string' && durableHostKind !== data.hostKind) {
|
|
389
|
+
warnings.push(`host_kind_conflict:kept=${durableHostKind},rejected=${data.hostKind}`);
|
|
390
|
+
}
|
|
391
|
+
return { id: rawRow.id, warnings };
|
|
379
392
|
}
|
|
380
|
-
return undefined;
|
|
393
|
+
return { id: undefined, warnings };
|
|
381
394
|
}
|
|
382
395
|
throw insertErr;
|
|
383
396
|
}
|
|
@@ -445,10 +458,12 @@ export function recordPainSignalObservability(opts) {
|
|
|
445
458
|
warnings.push(`evolution stream write failed: ${err instanceof Error ? err.message : String(err)}`);
|
|
446
459
|
}
|
|
447
460
|
try {
|
|
448
|
-
|
|
461
|
+
const trajectory = recordTrajectoryPainEvent({
|
|
449
462
|
stateDir: opts.stateDir, data: opts.data, timestamp, workspaceDir: opts.workspaceDir,
|
|
450
463
|
canonicalPainId: opts.canonicalPainId, runtimeTaskId: opts.runtimeTaskId,
|
|
451
464
|
});
|
|
465
|
+
result.trajectoryPainEventId = trajectory.id;
|
|
466
|
+
warnings.push(...trajectory.warnings);
|
|
452
467
|
}
|
|
453
468
|
catch (err) {
|
|
454
469
|
warnings.push(`trajectory pain_events write failed: ${err instanceof Error ? err.message : String(err)}`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pain-signal-observability.js","sourceRoot":"","sources":["../../src/runtime-v2/pain-signal-observability.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AACH,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AACtC,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,QAAQ,MAAM,MAAM,CAAC;AAEjC,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAmBzD,SAAS,MAAM;IACb,OAAO,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;AAClC,CAAC;AAED,SAAS,QAAQ,CAAC,EAAU;IAC1B,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AACzB,CAAC;AAED,SAAS,iBAAiB,CAAC,KAAa;IACtC,IAAI,KAAK,IAAI,EAAE;QAAE,OAAO,QAAQ,CAAC;IACjC,IAAI,KAAK,IAAI,EAAE;QAAE,OAAO,UAAU,CAAC;IACnC,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,cAAc,CAAC,QAAgB,EAAE,KAAc;IACtD,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9D,EAAE,CAAC,cAAc,CAAC,QAAQ,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AACpE,CAAC;AAED,SAAS,kBAAkB,CAAC,EAAqB;IAC/C,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,CAAC,6BAA6B,CAAC,CAAC,GAAG,EAAwB,CAAC;IACnF,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AACjC,CAAC;AAED;;;GAGG;AACH,SAAS,YAAY,CAAC,GAAW;IAC/B,OAAO,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;AACpC,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,SAAS,sBAAsB,CAAC,EAAqB;IACnD,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,MAAM,MAAM,GAAG;QACb,gBAAgB,EAAE,mBAAmB,EAAE,UAAU,EAAE,iBAAiB;QACpE,YAAY,EAAE,YAAY,EAAE,aAAa,EAAE,aAAa,EAAE,eAAe;QACzE,kBAAkB,EAAE,eAAe,EAAE,oBAAoB,EAAE,gBAAgB;QAC3E,eAAe,EAAE,iBAAiB,EAAE,kBAAkB;KACvD,CAAC;IAEF,EAAE,CAAC,IAAI,CAAC
|
|
1
|
+
{"version":3,"file":"pain-signal-observability.js","sourceRoot":"","sources":["../../src/runtime-v2/pain-signal-observability.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.
|
|
3
|
+
"version": "1.274.0",
|
|
4
4
|
"description": "Pure-logic core of Principles Disciple, an AI Agent Governance System - pain signal capture and principle proposal (no I/O)",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -54,7 +54,6 @@
|
|
|
54
54
|
"scripts": {
|
|
55
55
|
"build": "tsc",
|
|
56
56
|
"test": "vitest run",
|
|
57
|
-
"test:bench": "vitest bench",
|
|
58
57
|
"lint": "eslint src/"
|
|
59
58
|
},
|
|
60
59
|
"dependencies": {
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"code-review-pain-adapter.test.d.ts","sourceRoot":"","sources":["../../../src/adapters/__tests__/code-review-pain-adapter.test.ts"],"names":[],"mappings":""}
|
|
@@ -1,346 +0,0 @@
|
|
|
1
|
-
import { describe, it, expect } from 'vitest';
|
|
2
|
-
import { CodeReviewPainAdapter } from '../code-review/code-review-pain-adapter.js';
|
|
3
|
-
describe('CodeReviewPainAdapter', () => {
|
|
4
|
-
const adapter = new CodeReviewPainAdapter();
|
|
5
|
-
const baseFile = {
|
|
6
|
-
path: 'src/index.ts',
|
|
7
|
-
linesAdded: 10,
|
|
8
|
-
linesDeleted: 5,
|
|
9
|
-
changeMagnitude: 15,
|
|
10
|
-
};
|
|
11
|
-
const baseEvent = {
|
|
12
|
-
prId: 'pr-1',
|
|
13
|
-
repositoryId: 'repo-1',
|
|
14
|
-
authorId: 'author-1',
|
|
15
|
-
reviewerIds: ['reviewer-1'],
|
|
16
|
-
filesChanged: [baseFile],
|
|
17
|
-
totalLinesAdded: 10,
|
|
18
|
-
totalLinesDeleted: 5,
|
|
19
|
-
comments: [],
|
|
20
|
-
unresolvedThreadCount: 0,
|
|
21
|
-
createdAt: '2026-01-01T00:00:00Z',
|
|
22
|
-
reviewAgeDays: 1,
|
|
23
|
-
hasTests: true,
|
|
24
|
-
hasSecurityReview: true,
|
|
25
|
-
isBreakingChange: false,
|
|
26
|
-
labels: [],
|
|
27
|
-
sessionId: 'sess-123',
|
|
28
|
-
};
|
|
29
|
-
// ---------------------------------------------------------------------------
|
|
30
|
-
// Null-return paths
|
|
31
|
-
// ---------------------------------------------------------------------------
|
|
32
|
-
it('returns null for missing sessionId', () => {
|
|
33
|
-
const event = { ...baseEvent, sessionId: '' };
|
|
34
|
-
expect(adapter.capture(event)).toBeNull();
|
|
35
|
-
});
|
|
36
|
-
it('returns null when sessionId is not a string', () => {
|
|
37
|
-
const event = { ...baseEvent, sessionId: 42 };
|
|
38
|
-
expect(adapter.capture(event)).toBeNull();
|
|
39
|
-
});
|
|
40
|
-
it('returns null when no files changed and no comments', () => {
|
|
41
|
-
const event = { ...baseEvent, filesChanged: [], comments: [] };
|
|
42
|
-
expect(adapter.capture(event)).toBeNull();
|
|
43
|
-
});
|
|
44
|
-
it('returns null when filesChanged is undefined and no comments', () => {
|
|
45
|
-
const { filesChanged: _filesChanged, ...eventWithoutFiles } = baseEvent;
|
|
46
|
-
const event = { ...eventWithoutFiles, filesChanged: undefined, comments: [] };
|
|
47
|
-
expect(adapter.capture(event)).toBeNull();
|
|
48
|
-
});
|
|
49
|
-
it('returns null for negative reviewAgeDays', () => {
|
|
50
|
-
const event = { ...baseEvent, reviewAgeDays: -1 };
|
|
51
|
-
expect(adapter.capture(event)).toBeNull();
|
|
52
|
-
});
|
|
53
|
-
// ---------------------------------------------------------------------------
|
|
54
|
-
// Valid event with process violation
|
|
55
|
-
// ---------------------------------------------------------------------------
|
|
56
|
-
it('produces high score for process violation (no tests, >2 files, breaking change)', () => {
|
|
57
|
-
const event = {
|
|
58
|
-
...baseEvent,
|
|
59
|
-
filesChanged: [
|
|
60
|
-
{ path: 'src/a.ts', linesAdded: 50, linesDeleted: 10, changeMagnitude: 60 },
|
|
61
|
-
{ path: 'src/b.ts', linesAdded: 30, linesDeleted: 5, changeMagnitude: 35 },
|
|
62
|
-
{ path: 'src/c.ts', linesAdded: 20, linesDeleted: 5, changeMagnitude: 25 },
|
|
63
|
-
],
|
|
64
|
-
totalLinesAdded: 100,
|
|
65
|
-
totalLinesDeleted: 20,
|
|
66
|
-
hasTests: false,
|
|
67
|
-
isBreakingChange: true,
|
|
68
|
-
labels: [],
|
|
69
|
-
hasSecurityReview: false,
|
|
70
|
-
};
|
|
71
|
-
const signal = adapter.capture(event);
|
|
72
|
-
expect(signal).not.toBeNull();
|
|
73
|
-
if (!signal)
|
|
74
|
-
throw new Error('Expected non-null signal');
|
|
75
|
-
// No tests + >2 files = +35, breaking change without label = +40 → process >= 40
|
|
76
|
-
expect(signal.source).toBe('process_violation');
|
|
77
|
-
expect(signal.score).toBeGreaterThan(0);
|
|
78
|
-
// Severity should be at least medium for process violations
|
|
79
|
-
expect(['medium', 'high', 'critical']).toContain(signal.severity);
|
|
80
|
-
});
|
|
81
|
-
// ---------------------------------------------------------------------------
|
|
82
|
-
// Valid event with negative sentiment
|
|
83
|
-
// ---------------------------------------------------------------------------
|
|
84
|
-
it('produces negative_sentiment trigger when comments are negative', () => {
|
|
85
|
-
const negativeComment = {
|
|
86
|
-
id: 'c2',
|
|
87
|
-
authorId: 'reviewer-1',
|
|
88
|
-
body: 'This code is terrible and should be rewritten',
|
|
89
|
-
sentimentScore: -80,
|
|
90
|
-
createdAt: '2026-01-01T00:00:00Z',
|
|
91
|
-
// unresolved: no resolvedAt
|
|
92
|
-
};
|
|
93
|
-
const event = {
|
|
94
|
-
...baseEvent,
|
|
95
|
-
comments: [negativeComment],
|
|
96
|
-
unresolvedThreadCount: 1,
|
|
97
|
-
hasTests: true,
|
|
98
|
-
isBreakingChange: false,
|
|
99
|
-
};
|
|
100
|
-
const signal = adapter.capture(event);
|
|
101
|
-
expect(signal).not.toBeNull();
|
|
102
|
-
if (!signal)
|
|
103
|
-
throw new Error('Expected non-null signal');
|
|
104
|
-
// With negative sentiment comments, source should be negative_sentiment
|
|
105
|
-
// provided process violation score < 40
|
|
106
|
-
expect(signal.source).toBe('negative_sentiment');
|
|
107
|
-
});
|
|
108
|
-
// ---------------------------------------------------------------------------
|
|
109
|
-
// Valid event with diff complexity
|
|
110
|
-
// ---------------------------------------------------------------------------
|
|
111
|
-
it('produces diff_complexity trigger for many files with no process violations or negative sentiment', () => {
|
|
112
|
-
const manyFiles = Array.from({ length: 10 }, (_, i) => ({
|
|
113
|
-
path: `src/file${i}.ts`,
|
|
114
|
-
linesAdded: 100,
|
|
115
|
-
linesDeleted: 50,
|
|
116
|
-
changeMagnitude: 150,
|
|
117
|
-
}));
|
|
118
|
-
// Use positive-sentiment comments so sentiment score stays below 40 threshold
|
|
119
|
-
const positiveComment = {
|
|
120
|
-
id: 'c-pos',
|
|
121
|
-
authorId: 'reviewer-1',
|
|
122
|
-
body: 'Looks great!',
|
|
123
|
-
sentimentScore: 80,
|
|
124
|
-
createdAt: '2026-01-01T00:00:00Z',
|
|
125
|
-
resolvedAt: '2026-01-02T00:00:00Z',
|
|
126
|
-
};
|
|
127
|
-
const event = {
|
|
128
|
-
...baseEvent,
|
|
129
|
-
filesChanged: manyFiles,
|
|
130
|
-
totalLinesAdded: 1000,
|
|
131
|
-
totalLinesDeleted: 500,
|
|
132
|
-
hasTests: true,
|
|
133
|
-
isBreakingChange: false,
|
|
134
|
-
hasSecurityReview: true,
|
|
135
|
-
comments: [positiveComment],
|
|
136
|
-
};
|
|
137
|
-
const signal = adapter.capture(event);
|
|
138
|
-
expect(signal).not.toBeNull();
|
|
139
|
-
if (!signal)
|
|
140
|
-
throw new Error('Expected non-null signal');
|
|
141
|
-
expect(signal.source).toBe('diff_complexity');
|
|
142
|
-
});
|
|
143
|
-
// ---------------------------------------------------------------------------
|
|
144
|
-
// Score clamping
|
|
145
|
-
// ---------------------------------------------------------------------------
|
|
146
|
-
it('clamps score to 0-100 range', () => {
|
|
147
|
-
// Extreme process violations could theoretically push score > 100
|
|
148
|
-
const event = {
|
|
149
|
-
...baseEvent,
|
|
150
|
-
filesChanged: [
|
|
151
|
-
{ path: 'security/auth.ts', linesAdded: 300, linesDeleted: 200, changeMagnitude: 500 },
|
|
152
|
-
{ path: 'security/crypto.ts', linesAdded: 300, linesDeleted: 200, changeMagnitude: 500 },
|
|
153
|
-
{ path: 'src/main.ts', linesAdded: 300, linesDeleted: 200, changeMagnitude: 500 },
|
|
154
|
-
],
|
|
155
|
-
totalLinesAdded: 900,
|
|
156
|
-
totalLinesDeleted: 600,
|
|
157
|
-
hasTests: false,
|
|
158
|
-
isBreakingChange: true,
|
|
159
|
-
labels: [],
|
|
160
|
-
hasSecurityReview: false,
|
|
161
|
-
};
|
|
162
|
-
const signal = adapter.capture(event);
|
|
163
|
-
expect(signal).not.toBeNull();
|
|
164
|
-
if (!signal)
|
|
165
|
-
throw new Error('Expected non-null signal');
|
|
166
|
-
expect(signal.score).toBeGreaterThanOrEqual(0);
|
|
167
|
-
expect(signal.score).toBeLessThanOrEqual(100);
|
|
168
|
-
});
|
|
169
|
-
// ---------------------------------------------------------------------------
|
|
170
|
-
// triggerTextPreview truncation
|
|
171
|
-
// ---------------------------------------------------------------------------
|
|
172
|
-
it('truncates triggerTextPreview to 200 chars', () => {
|
|
173
|
-
const longBody = 'x'.repeat(300);
|
|
174
|
-
const negativeComment = {
|
|
175
|
-
id: 'c3',
|
|
176
|
-
authorId: 'reviewer-1',
|
|
177
|
-
body: longBody,
|
|
178
|
-
sentimentScore: -90,
|
|
179
|
-
createdAt: '2026-01-01T00:00:00Z',
|
|
180
|
-
};
|
|
181
|
-
const event = {
|
|
182
|
-
...baseEvent,
|
|
183
|
-
comments: [negativeComment],
|
|
184
|
-
hasTests: true,
|
|
185
|
-
isBreakingChange: false,
|
|
186
|
-
};
|
|
187
|
-
const signal = adapter.capture(event);
|
|
188
|
-
expect(signal).not.toBeNull();
|
|
189
|
-
if (!signal)
|
|
190
|
-
throw new Error('Expected non-null signal');
|
|
191
|
-
expect(signal.triggerTextPreview.length).toBeLessThanOrEqual(200);
|
|
192
|
-
});
|
|
193
|
-
// ---------------------------------------------------------------------------
|
|
194
|
-
// PainSignal structure
|
|
195
|
-
// ---------------------------------------------------------------------------
|
|
196
|
-
it('returns PainSignal with correct structure', () => {
|
|
197
|
-
const signal = adapter.capture(baseEvent);
|
|
198
|
-
expect(signal).not.toBeNull();
|
|
199
|
-
if (!signal)
|
|
200
|
-
throw new Error('Expected non-null signal');
|
|
201
|
-
expect(typeof signal.source).toBe('string');
|
|
202
|
-
expect(typeof signal.score).toBe('number');
|
|
203
|
-
expect(signal.timestamp).toBeTruthy();
|
|
204
|
-
expect(typeof signal.reason).toBe('string');
|
|
205
|
-
expect(signal.sessionId).toBe('sess-123');
|
|
206
|
-
expect(signal.agentId).toBe('code-review-evaluator');
|
|
207
|
-
expect(signal.domain).toBe('code-review');
|
|
208
|
-
expect(typeof signal.severity).toBe('string');
|
|
209
|
-
expect(typeof signal.context).toBe('object');
|
|
210
|
-
});
|
|
211
|
-
// ---------------------------------------------------------------------------
|
|
212
|
-
// deriveProcessViolationScore scenarios
|
|
213
|
-
// ---------------------------------------------------------------------------
|
|
214
|
-
it('adds 35 when no tests and >2 files', () => {
|
|
215
|
-
// With no tests + 3 files: +35, no other violations → process = 35 (< 40 threshold)
|
|
216
|
-
// So primary trigger should NOT be process_violation
|
|
217
|
-
const event = {
|
|
218
|
-
...baseEvent,
|
|
219
|
-
filesChanged: [
|
|
220
|
-
{ path: 'src/a.ts', linesAdded: 5, linesDeleted: 5, changeMagnitude: 10 },
|
|
221
|
-
{ path: 'src/b.ts', linesAdded: 5, linesDeleted: 5, changeMagnitude: 10 },
|
|
222
|
-
{ path: 'src/c.ts', linesAdded: 5, linesDeleted: 5, changeMagnitude: 10 },
|
|
223
|
-
],
|
|
224
|
-
hasTests: false,
|
|
225
|
-
isBreakingChange: false,
|
|
226
|
-
hasSecurityReview: true,
|
|
227
|
-
totalLinesAdded: 15,
|
|
228
|
-
totalLinesDeleted: 15,
|
|
229
|
-
labels: [],
|
|
230
|
-
};
|
|
231
|
-
const signal = adapter.capture(event);
|
|
232
|
-
expect(signal).not.toBeNull();
|
|
233
|
-
if (!signal)
|
|
234
|
-
throw new Error('Expected non-null signal');
|
|
235
|
-
// process score is 35, which is < 40, so not process_violation
|
|
236
|
-
expect(signal.context.processViolationScore).toBe(35);
|
|
237
|
-
expect(signal.source).not.toBe('process_violation');
|
|
238
|
-
});
|
|
239
|
-
it('adds 40 for breaking change without label', () => {
|
|
240
|
-
const event = {
|
|
241
|
-
...baseEvent,
|
|
242
|
-
hasTests: true,
|
|
243
|
-
isBreakingChange: true,
|
|
244
|
-
labels: [],
|
|
245
|
-
hasSecurityReview: true,
|
|
246
|
-
};
|
|
247
|
-
const signal = adapter.capture(event);
|
|
248
|
-
expect(signal).not.toBeNull();
|
|
249
|
-
if (!signal)
|
|
250
|
-
throw new Error('Expected non-null signal');
|
|
251
|
-
expect(signal.context.processViolationScore).toBe(40);
|
|
252
|
-
expect(signal.source).toBe('process_violation');
|
|
253
|
-
});
|
|
254
|
-
it('adds 50 for security changes without security review', () => {
|
|
255
|
-
const event = {
|
|
256
|
-
...baseEvent,
|
|
257
|
-
filesChanged: [{ path: 'security/auth.ts', linesAdded: 10, linesDeleted: 5, changeMagnitude: 15 }],
|
|
258
|
-
hasTests: true,
|
|
259
|
-
isBreakingChange: false,
|
|
260
|
-
hasSecurityReview: false,
|
|
261
|
-
labels: [],
|
|
262
|
-
};
|
|
263
|
-
const signal = adapter.capture(event);
|
|
264
|
-
expect(signal).not.toBeNull();
|
|
265
|
-
if (!signal)
|
|
266
|
-
throw new Error('Expected non-null signal');
|
|
267
|
-
expect(signal.context.processViolationScore).toBe(50);
|
|
268
|
-
expect(signal.source).toBe('process_violation');
|
|
269
|
-
});
|
|
270
|
-
it('adds 20 for >500 lines changed without tests', () => {
|
|
271
|
-
const event = {
|
|
272
|
-
...baseEvent,
|
|
273
|
-
filesChanged: [
|
|
274
|
-
{ path: 'src/a.ts', linesAdded: 400, linesDeleted: 200, changeMagnitude: 600 },
|
|
275
|
-
],
|
|
276
|
-
totalLinesAdded: 400,
|
|
277
|
-
totalLinesDeleted: 200,
|
|
278
|
-
hasTests: false,
|
|
279
|
-
isBreakingChange: false,
|
|
280
|
-
hasSecurityReview: true,
|
|
281
|
-
labels: [],
|
|
282
|
-
};
|
|
283
|
-
const signal = adapter.capture(event);
|
|
284
|
-
expect(signal).not.toBeNull();
|
|
285
|
-
if (!signal)
|
|
286
|
-
throw new Error('Expected non-null signal');
|
|
287
|
-
// no tests + 1 file (not >2) = 0 for that rule, but >500 lines + no tests = +20
|
|
288
|
-
expect(signal.context.processViolationScore).toBe(20);
|
|
289
|
-
});
|
|
290
|
-
// ---------------------------------------------------------------------------
|
|
291
|
-
// deriveSentimentScore recency multiplier
|
|
292
|
-
// ---------------------------------------------------------------------------
|
|
293
|
-
it('applies recency multiplier when reviewAgeDays > 7', () => {
|
|
294
|
-
const negativeComment = {
|
|
295
|
-
id: 'c4',
|
|
296
|
-
authorId: 'reviewer-1',
|
|
297
|
-
body: 'Bad code',
|
|
298
|
-
sentimentScore: -50,
|
|
299
|
-
createdAt: '2026-01-01T00:00:00Z',
|
|
300
|
-
};
|
|
301
|
-
const recentEvent = {
|
|
302
|
-
...baseEvent,
|
|
303
|
-
comments: [negativeComment],
|
|
304
|
-
reviewAgeDays: 3,
|
|
305
|
-
hasTests: true,
|
|
306
|
-
isBreakingChange: false,
|
|
307
|
-
};
|
|
308
|
-
const oldEvent = {
|
|
309
|
-
...baseEvent,
|
|
310
|
-
comments: [negativeComment],
|
|
311
|
-
reviewAgeDays: 10,
|
|
312
|
-
hasTests: true,
|
|
313
|
-
isBreakingChange: false,
|
|
314
|
-
};
|
|
315
|
-
const recentSignal = adapter.capture(recentEvent);
|
|
316
|
-
const oldSignal = adapter.capture(oldEvent);
|
|
317
|
-
expect(recentSignal).not.toBeNull();
|
|
318
|
-
if (!recentSignal)
|
|
319
|
-
throw new Error('Expected non-null recentSignal');
|
|
320
|
-
expect(oldSignal).not.toBeNull();
|
|
321
|
-
if (!oldSignal)
|
|
322
|
-
throw new Error('Expected non-null oldSignal');
|
|
323
|
-
// Older reviews with unresolved negatives should produce higher sentiment pain
|
|
324
|
-
expect(oldSignal.context.sentimentScore).toBeGreaterThan(recentSignal.context.sentimentScore);
|
|
325
|
-
});
|
|
326
|
-
// ---------------------------------------------------------------------------
|
|
327
|
-
// traceId fallback
|
|
328
|
-
// ---------------------------------------------------------------------------
|
|
329
|
-
it('uses "unknown" for traceId when not provided', () => {
|
|
330
|
-
const event = { ...baseEvent, traceId: undefined };
|
|
331
|
-
const signal = adapter.capture(event);
|
|
332
|
-
expect(signal).not.toBeNull();
|
|
333
|
-
if (!signal)
|
|
334
|
-
throw new Error('Expected non-null signal');
|
|
335
|
-
expect(signal.traceId).toBe('unknown');
|
|
336
|
-
});
|
|
337
|
-
it('uses provided traceId', () => {
|
|
338
|
-
const event = { ...baseEvent, traceId: 'trace-abc' };
|
|
339
|
-
const signal = adapter.capture(event);
|
|
340
|
-
expect(signal).not.toBeNull();
|
|
341
|
-
if (!signal)
|
|
342
|
-
throw new Error('Expected non-null signal');
|
|
343
|
-
expect(signal.traceId).toBe('trace-abc');
|
|
344
|
-
});
|
|
345
|
-
});
|
|
346
|
-
//# sourceMappingURL=code-review-pain-adapter.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"code-review-pain-adapter.test.js","sourceRoot":"","sources":["../../../src/adapters/__tests__/code-review-pain-adapter.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"openclaw-pain-adapter.test.d.ts","sourceRoot":"","sources":["../../../src/adapters/__tests__/openclaw-pain-adapter.test.ts"],"names":[],"mappings":""}
|