@principles/core 1.114.0 → 1.116.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/runtime-v2/__tests__/activation-types-helpers.test.d.ts +20 -0
- package/dist/runtime-v2/__tests__/activation-types-helpers.test.d.ts.map +1 -0
- package/dist/runtime-v2/__tests__/activation-types-helpers.test.js +223 -0
- package/dist/runtime-v2/__tests__/activation-types-helpers.test.js.map +1 -0
- package/dist/runtime-v2/__tests__/architecture-regression.test.js +3 -3
- package/dist/runtime-v2/__tests__/architecture-regression.test.js.map +1 -1
- package/dist/runtime-v2/__tests__/attack-e2e-pipeline-smoke.test.js +1 -1
- package/dist/runtime-v2/__tests__/attack-e2e-pipeline-smoke.test.js.map +1 -1
- package/dist/runtime-v2/__tests__/evidence-guards.test.d.ts +18 -0
- package/dist/runtime-v2/__tests__/evidence-guards.test.d.ts.map +1 -0
- package/dist/runtime-v2/__tests__/evidence-guards.test.js +155 -0
- package/dist/runtime-v2/__tests__/evidence-guards.test.js.map +1 -0
- package/dist/runtime-v2/__tests__/pain-evidence-contract.test.js +1 -1
- package/dist/runtime-v2/__tests__/pain-evidence-contract.test.js.map +1 -1
- package/dist/runtime-v2/activation/__tests__/approval-queue.test.d.ts +15 -0
- package/dist/runtime-v2/activation/__tests__/approval-queue.test.d.ts.map +1 -1
- package/dist/runtime-v2/activation/__tests__/approval-queue.test.js +326 -164
- package/dist/runtime-v2/activation/__tests__/approval-queue.test.js.map +1 -1
- package/dist/runtime-v2/activation/__tests__/low-risk-writers.test.d.ts +21 -0
- package/dist/runtime-v2/activation/__tests__/low-risk-writers.test.d.ts.map +1 -0
- package/dist/runtime-v2/activation/__tests__/low-risk-writers.test.js +468 -0
- package/dist/runtime-v2/activation/__tests__/low-risk-writers.test.js.map +1 -0
- package/dist/runtime-v2/config/pd-config-types.d.ts.map +1 -1
- package/dist/runtime-v2/config/pd-config-types.js +2 -3
- package/dist/runtime-v2/config/pd-config-types.js.map +1 -1
- package/dist/runtime-v2/observer/__tests__/empathy-observer.real-e2e.test.js +2 -2
- package/dist/runtime-v2/observer/__tests__/empathy-observer.real-e2e.test.js.map +1 -1
- package/dist/runtime-v2/observer/empathy-observer.js +1 -1
- package/dist/runtime-v2/observer/empathy-observer.js.map +1 -1
- package/dist/runtime-v2/runner/__tests__/m8-02-e2e.test.js +7 -15
- package/dist/runtime-v2/runner/__tests__/m8-02-e2e.test.js.map +1 -1
- package/dist/runtime-v2/runner/__tests__/m9-e2e.test.js +3 -10
- package/dist/runtime-v2/runner/__tests__/m9-e2e.test.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Low Risk Writers Tests — PRI-145
|
|
3
|
+
*
|
|
4
|
+
* Unit tests for low-risk channel activation classes:
|
|
5
|
+
* - PromptWriter — handles 'prompt' channel activation
|
|
6
|
+
* - DeferArchiveWriter — handles 'defer_archive' channel activation
|
|
7
|
+
* - extractPrincipleId() — parsing principle ID from PIArtifactSnapshot
|
|
8
|
+
*
|
|
9
|
+
* Tests verify:
|
|
10
|
+
* - Correct extraction of principle IDs from artifact content
|
|
11
|
+
* - canActivate() correctly validates artifact eligibility
|
|
12
|
+
* - activate() produces correct activation records
|
|
13
|
+
* - Boundary conditions and error handling
|
|
14
|
+
*
|
|
15
|
+
* ERR checklist:
|
|
16
|
+
* - ERR-002: Every decision path carries reason + nextAction
|
|
17
|
+
* - ERR-009: Malformed state fails loud
|
|
18
|
+
* - ERR-025: Production-path tests, not just helpers
|
|
19
|
+
*/
|
|
20
|
+
export {};
|
|
21
|
+
//# sourceMappingURL=low-risk-writers.test.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"low-risk-writers.test.d.ts","sourceRoot":"","sources":["../../../../src/runtime-v2/activation/__tests__/low-risk-writers.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG"}
|
|
@@ -0,0 +1,468 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Low Risk Writers Tests — PRI-145
|
|
3
|
+
*
|
|
4
|
+
* Unit tests for low-risk channel activation classes:
|
|
5
|
+
* - PromptWriter — handles 'prompt' channel activation
|
|
6
|
+
* - DeferArchiveWriter — handles 'defer_archive' channel activation
|
|
7
|
+
* - extractPrincipleId() — parsing principle ID from PIArtifactSnapshot
|
|
8
|
+
*
|
|
9
|
+
* Tests verify:
|
|
10
|
+
* - Correct extraction of principle IDs from artifact content
|
|
11
|
+
* - canActivate() correctly validates artifact eligibility
|
|
12
|
+
* - activate() produces correct activation records
|
|
13
|
+
* - Boundary conditions and error handling
|
|
14
|
+
*
|
|
15
|
+
* ERR checklist:
|
|
16
|
+
* - ERR-002: Every decision path carries reason + nextAction
|
|
17
|
+
* - ERR-009: Malformed state fails loud
|
|
18
|
+
* - ERR-025: Production-path tests, not just helpers
|
|
19
|
+
*/
|
|
20
|
+
import { describe, it, expect } from 'vitest';
|
|
21
|
+
import { extractPrincipleId, PromptWriter, DeferArchiveWriter, } from '../low-risk-writers';
|
|
22
|
+
function createArtifact(input) {
|
|
23
|
+
return {
|
|
24
|
+
artifactId: 'art-001',
|
|
25
|
+
artifactKind: input.artifactKind ?? 'principle',
|
|
26
|
+
sourceTaskId: 'task-001',
|
|
27
|
+
sourcePrincipleId: input.sourcePrincipleId,
|
|
28
|
+
lineageArtifactIds: [],
|
|
29
|
+
validationStatus: input.validationStatus ?? 'validated',
|
|
30
|
+
contentJson: input.contentJson,
|
|
31
|
+
createdAt: '2026-05-17T00:00:00Z',
|
|
32
|
+
updatedAt: '2026-05-17T00:00:00Z',
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
describe('extractPrincipleId', () => {
|
|
36
|
+
// Source principle ID from artifact property
|
|
37
|
+
it('extracts principle ID from sourcePrincipleId property', () => {
|
|
38
|
+
const artifact = createArtifact({ contentJson: '{}', sourcePrincipleId: 'PRI-001' });
|
|
39
|
+
expect(extractPrincipleId(artifact)).toBe('PRI-001');
|
|
40
|
+
});
|
|
41
|
+
it('extracts principle ID from sourcePrincipleId with whitespace', () => {
|
|
42
|
+
const artifact = createArtifact({ contentJson: '{}', sourcePrincipleId: ' PRI-002 ' });
|
|
43
|
+
expect(extractPrincipleId(artifact)).toBe('PRI-002');
|
|
44
|
+
});
|
|
45
|
+
it('returns null for empty sourcePrincipleId', () => {
|
|
46
|
+
const artifact = createArtifact({ contentJson: '{}', sourcePrincipleId: '' });
|
|
47
|
+
expect(extractPrincipleId(artifact)).toBeNull();
|
|
48
|
+
});
|
|
49
|
+
it('returns null for whitespace-only sourcePrincipleId', () => {
|
|
50
|
+
const artifact = createArtifact({ contentJson: '{}', sourcePrincipleId: ' ' });
|
|
51
|
+
expect(extractPrincipleId(artifact)).toBeNull();
|
|
52
|
+
});
|
|
53
|
+
// Content JSON extraction
|
|
54
|
+
it('extracts principle ID from contentJson principleId field', () => {
|
|
55
|
+
const artifact = createArtifact({ contentJson: JSON.stringify({ principleId: 'PRI-003' }) });
|
|
56
|
+
expect(extractPrincipleId(artifact)).toBe('PRI-003');
|
|
57
|
+
});
|
|
58
|
+
it('extracts principle ID from contentJson sourcePrincipleId field', () => {
|
|
59
|
+
const artifact = createArtifact({ contentJson: JSON.stringify({ sourcePrincipleId: 'PRI-004' }) });
|
|
60
|
+
expect(extractPrincipleId(artifact)).toBe('PRI-004');
|
|
61
|
+
});
|
|
62
|
+
it('extracts principle ID from contentJson principleDraft.title field', () => {
|
|
63
|
+
const artifact = createArtifact({ contentJson: JSON.stringify({
|
|
64
|
+
principleDraft: { title: 'PRI-005' },
|
|
65
|
+
}) });
|
|
66
|
+
expect(extractPrincipleId(artifact)).toBe('PRI-005');
|
|
67
|
+
});
|
|
68
|
+
// Priority: sourcePrincipleId property takes precedence over contentJson
|
|
69
|
+
it('sourcePrincipleId property takes precedence over contentJson', () => {
|
|
70
|
+
const artifact = createArtifact({
|
|
71
|
+
contentJson: JSON.stringify({ principleId: 'PRI-006' }),
|
|
72
|
+
sourcePrincipleId: 'PRI-007',
|
|
73
|
+
});
|
|
74
|
+
expect(extractPrincipleId(artifact)).toBe('PRI-007');
|
|
75
|
+
});
|
|
76
|
+
// Whitespace trimming
|
|
77
|
+
it('trims whitespace from principleId in contentJson', () => {
|
|
78
|
+
const artifact = createArtifact({ contentJson: JSON.stringify({ principleId: ' PRI-008 ' }) });
|
|
79
|
+
expect(extractPrincipleId(artifact)).toBe('PRI-008');
|
|
80
|
+
});
|
|
81
|
+
it('trims whitespace from sourcePrincipleId in contentJson', () => {
|
|
82
|
+
const artifact = createArtifact({ contentJson: JSON.stringify({ sourcePrincipleId: ' PRI-009 ' }) });
|
|
83
|
+
expect(extractPrincipleId(artifact)).toBe('PRI-009');
|
|
84
|
+
});
|
|
85
|
+
it('trims whitespace from principleDraft.title', () => {
|
|
86
|
+
const artifact = createArtifact({ contentJson: JSON.stringify({
|
|
87
|
+
principleDraft: { title: ' PRI-010 ' },
|
|
88
|
+
}) });
|
|
89
|
+
expect(extractPrincipleId(artifact)).toBe('PRI-010');
|
|
90
|
+
});
|
|
91
|
+
// Empty/invalid contentJson
|
|
92
|
+
it('returns null for empty contentJson', () => {
|
|
93
|
+
const artifact = createArtifact({ contentJson: '' });
|
|
94
|
+
expect(extractPrincipleId(artifact)).toBeNull();
|
|
95
|
+
});
|
|
96
|
+
it('returns null for invalid JSON contentJson', () => {
|
|
97
|
+
const artifact = createArtifact({ contentJson: 'not valid json' });
|
|
98
|
+
expect(extractPrincipleId(artifact)).toBeNull();
|
|
99
|
+
});
|
|
100
|
+
it('returns null for JSON array contentJson', () => {
|
|
101
|
+
const artifact = createArtifact({ contentJson: '[1, 2, 3]' });
|
|
102
|
+
expect(extractPrincipleId(artifact)).toBeNull();
|
|
103
|
+
});
|
|
104
|
+
it('returns null for JSON primitive contentJson', () => {
|
|
105
|
+
const artifact = createArtifact({ contentJson: '"just a string"' });
|
|
106
|
+
expect(extractPrincipleId(artifact)).toBeNull();
|
|
107
|
+
});
|
|
108
|
+
it('returns null for JSON null contentJson', () => {
|
|
109
|
+
const artifact = createArtifact({ contentJson: 'null' });
|
|
110
|
+
expect(extractPrincipleId(artifact)).toBeNull();
|
|
111
|
+
});
|
|
112
|
+
// Empty principle ID fields
|
|
113
|
+
it('returns null for empty principleId in contentJson', () => {
|
|
114
|
+
const artifact = createArtifact({ contentJson: JSON.stringify({ principleId: '' }) });
|
|
115
|
+
expect(extractPrincipleId(artifact)).toBeNull();
|
|
116
|
+
});
|
|
117
|
+
it('returns null for empty sourcePrincipleId in contentJson', () => {
|
|
118
|
+
const artifact = createArtifact({ contentJson: JSON.stringify({ sourcePrincipleId: '' }) });
|
|
119
|
+
expect(extractPrincipleId(artifact)).toBeNull();
|
|
120
|
+
});
|
|
121
|
+
it('returns null for empty principleDraft.title', () => {
|
|
122
|
+
const artifact = createArtifact({ contentJson: JSON.stringify({
|
|
123
|
+
principleDraft: { title: '' },
|
|
124
|
+
}) });
|
|
125
|
+
expect(extractPrincipleId(artifact)).toBeNull();
|
|
126
|
+
});
|
|
127
|
+
it('returns null for non-string principleId', () => {
|
|
128
|
+
const artifact = createArtifact({ contentJson: JSON.stringify({ principleId: 123 }) });
|
|
129
|
+
expect(extractPrincipleId(artifact)).toBeNull();
|
|
130
|
+
});
|
|
131
|
+
it('returns null for non-string sourcePrincipleId', () => {
|
|
132
|
+
const artifact = createArtifact({ contentJson: JSON.stringify({ sourcePrincipleId: null }) });
|
|
133
|
+
expect(extractPrincipleId(artifact)).toBeNull();
|
|
134
|
+
});
|
|
135
|
+
it('returns null for non-object principleDraft', () => {
|
|
136
|
+
const artifact = createArtifact({ contentJson: JSON.stringify({
|
|
137
|
+
principleDraft: 'not an object',
|
|
138
|
+
}) });
|
|
139
|
+
expect(extractPrincipleId(artifact)).toBeNull();
|
|
140
|
+
});
|
|
141
|
+
it('returns null for non-string principleDraft.title', () => {
|
|
142
|
+
const artifact = createArtifact({ contentJson: JSON.stringify({
|
|
143
|
+
principleDraft: { title: 456 },
|
|
144
|
+
}) });
|
|
145
|
+
expect(extractPrincipleId(artifact)).toBeNull();
|
|
146
|
+
});
|
|
147
|
+
// Complex contentJson structures
|
|
148
|
+
it('extracts from nested JSON structure', () => {
|
|
149
|
+
const artifact = createArtifact({ contentJson: JSON.stringify({
|
|
150
|
+
metadata: { version: '1.0' },
|
|
151
|
+
principleId: 'PRI-011',
|
|
152
|
+
content: 'Some content',
|
|
153
|
+
}) });
|
|
154
|
+
expect(extractPrincipleId(artifact)).toBe('PRI-011');
|
|
155
|
+
});
|
|
156
|
+
it('returns null when no principle ID fields present', () => {
|
|
157
|
+
const artifact = createArtifact({ contentJson: JSON.stringify({
|
|
158
|
+
title: 'Some Title',
|
|
159
|
+
description: 'Some description',
|
|
160
|
+
}) });
|
|
161
|
+
expect(extractPrincipleId(artifact)).toBeNull();
|
|
162
|
+
});
|
|
163
|
+
// Boundary: principleDraft without title
|
|
164
|
+
it('returns null for principleDraft without title field', () => {
|
|
165
|
+
const artifact = createArtifact({ contentJson: JSON.stringify({
|
|
166
|
+
principleDraft: { description: 'No title here' },
|
|
167
|
+
}) });
|
|
168
|
+
expect(extractPrincipleId(artifact)).toBeNull();
|
|
169
|
+
});
|
|
170
|
+
// Real-world patterns
|
|
171
|
+
it('extracts from typical principle artifact content', () => {
|
|
172
|
+
const artifact = createArtifact({ contentJson: JSON.stringify({
|
|
173
|
+
principleId: 'PRI-012',
|
|
174
|
+
title: 'Test Principle',
|
|
175
|
+
description: 'A test principle for validation',
|
|
176
|
+
ruleIds: ['RULE-001'],
|
|
177
|
+
}) });
|
|
178
|
+
expect(extractPrincipleId(artifact)).toBe('PRI-012');
|
|
179
|
+
});
|
|
180
|
+
it('extracts from artifact with sourcePrincipleId reference', () => {
|
|
181
|
+
const artifact = createArtifact({ contentJson: JSON.stringify({
|
|
182
|
+
sourcePrincipleId: 'PRI-013',
|
|
183
|
+
derivedFrom: 'original principle',
|
|
184
|
+
}) });
|
|
185
|
+
expect(extractPrincipleId(artifact)).toBe('PRI-013');
|
|
186
|
+
});
|
|
187
|
+
});
|
|
188
|
+
// ── PromptWriter Tests ────────────────────────────────────────────────────────
|
|
189
|
+
describe('PromptWriter', () => {
|
|
190
|
+
const writer = new PromptWriter();
|
|
191
|
+
it('channel is prompt', () => {
|
|
192
|
+
expect(writer.channel).toBe('prompt');
|
|
193
|
+
});
|
|
194
|
+
describe('canActivate', () => {
|
|
195
|
+
it('returns ok:true for validated principle artifact with principle ID', async () => {
|
|
196
|
+
const artifact = createArtifact({ contentJson: JSON.stringify({ principleId: 'PRI-001' }) });
|
|
197
|
+
const result = await writer.canActivate(artifact);
|
|
198
|
+
expect(result.ok).toBe(true);
|
|
199
|
+
expect(result.riskLevel).toBe('low');
|
|
200
|
+
});
|
|
201
|
+
it('returns ok:false for non-principle artifact kind', async () => {
|
|
202
|
+
const artifact = createArtifact({
|
|
203
|
+
contentJson: JSON.stringify({ principleId: 'PRI-002' }),
|
|
204
|
+
artifactKind: 'rule',
|
|
205
|
+
});
|
|
206
|
+
const result = await writer.canActivate(artifact);
|
|
207
|
+
expect(result.ok).toBe(false);
|
|
208
|
+
expect(result.reason).toBe('artifact_kind_not_principle');
|
|
209
|
+
expect(result.riskLevel).toBe('low');
|
|
210
|
+
});
|
|
211
|
+
it('returns ok:false for pending validation status', async () => {
|
|
212
|
+
const artifact = createArtifact({
|
|
213
|
+
contentJson: JSON.stringify({ principleId: 'PRI-003' }),
|
|
214
|
+
validationStatus: 'pending',
|
|
215
|
+
});
|
|
216
|
+
const result = await writer.canActivate(artifact);
|
|
217
|
+
expect(result.ok).toBe(false);
|
|
218
|
+
expect(result.reason).toBe('artifact_validation_status_pending');
|
|
219
|
+
expect(result.riskLevel).toBe('low');
|
|
220
|
+
});
|
|
221
|
+
it('returns ok:false for rejected validation status', async () => {
|
|
222
|
+
const artifact = createArtifact({
|
|
223
|
+
contentJson: JSON.stringify({ principleId: 'PRI-004' }),
|
|
224
|
+
validationStatus: 'rejected',
|
|
225
|
+
});
|
|
226
|
+
const result = await writer.canActivate(artifact);
|
|
227
|
+
expect(result.ok).toBe(false);
|
|
228
|
+
expect(result.reason).toBe('artifact_validation_status_rejected');
|
|
229
|
+
expect(result.riskLevel).toBe('low');
|
|
230
|
+
});
|
|
231
|
+
it('returns ok:false for artifact without principle ID', async () => {
|
|
232
|
+
const artifact = createArtifact({ contentJson: '{}' });
|
|
233
|
+
const result = await writer.canActivate(artifact);
|
|
234
|
+
expect(result.ok).toBe(false);
|
|
235
|
+
expect(result.reason).toBe('no_principle_id_in_artifact');
|
|
236
|
+
expect(result.riskLevel).toBe('low');
|
|
237
|
+
});
|
|
238
|
+
it('returns ok:false for artifact with empty contentJson', async () => {
|
|
239
|
+
const artifact = createArtifact({ contentJson: '' });
|
|
240
|
+
const result = await writer.canActivate(artifact);
|
|
241
|
+
expect(result.ok).toBe(false);
|
|
242
|
+
expect(result.reason).toBe('no_principle_id_in_artifact');
|
|
243
|
+
expect(result.riskLevel).toBe('low');
|
|
244
|
+
});
|
|
245
|
+
it('returns ok:true when sourcePrincipleId property is present', async () => {
|
|
246
|
+
const artifact = createArtifact({ contentJson: '{}', sourcePrincipleId: 'PRI-005' });
|
|
247
|
+
const result = await writer.canActivate(artifact);
|
|
248
|
+
expect(result.ok).toBe(true);
|
|
249
|
+
expect(result.riskLevel).toBe('low');
|
|
250
|
+
});
|
|
251
|
+
});
|
|
252
|
+
describe('activate', () => {
|
|
253
|
+
it('creates activation record with correct format', async () => {
|
|
254
|
+
const artifact = createArtifact({ contentJson: JSON.stringify({ principleId: 'PRI-001' }) });
|
|
255
|
+
const input = {
|
|
256
|
+
artifactId: 'art-001',
|
|
257
|
+
channel: 'prompt',
|
|
258
|
+
principleId: 'PRI-001',
|
|
259
|
+
idempotencyKey: 'art-001::prompt',
|
|
260
|
+
now: '2026-05-17T00:00:00Z',
|
|
261
|
+
};
|
|
262
|
+
const result = await writer.activate(input, artifact);
|
|
263
|
+
expect(result.activationId).toBe('act_prompt_PRI-001');
|
|
264
|
+
expect(result.action).toBe('prompt_activate');
|
|
265
|
+
expect(result.targetRef).toBe('ledger://PRI-001');
|
|
266
|
+
});
|
|
267
|
+
it('ignores artifact in activate (uses input.principleId)', async () => {
|
|
268
|
+
const artifact = createArtifact({ contentJson: '{}' }); // No principle ID
|
|
269
|
+
const input = {
|
|
270
|
+
artifactId: 'art-002',
|
|
271
|
+
channel: 'prompt',
|
|
272
|
+
principleId: 'PRI-002',
|
|
273
|
+
idempotencyKey: 'art-002::prompt',
|
|
274
|
+
now: '2026-05-17T00:00:00Z',
|
|
275
|
+
};
|
|
276
|
+
const result = await writer.activate(input, artifact);
|
|
277
|
+
expect(result.activationId).toBe('act_prompt_PRI-002');
|
|
278
|
+
});
|
|
279
|
+
it('creates unique activationId per principleId', async () => {
|
|
280
|
+
const artifact = createArtifact({ contentJson: '{}' });
|
|
281
|
+
const input1 = {
|
|
282
|
+
artifactId: 'art-001',
|
|
283
|
+
channel: 'prompt',
|
|
284
|
+
principleId: 'PRI-AAA',
|
|
285
|
+
idempotencyKey: 'art-001::prompt',
|
|
286
|
+
now: '2026-05-17T00:00:00Z',
|
|
287
|
+
};
|
|
288
|
+
const input2 = {
|
|
289
|
+
artifactId: 'art-002',
|
|
290
|
+
channel: 'prompt',
|
|
291
|
+
principleId: 'PRI-BBB',
|
|
292
|
+
idempotencyKey: 'art-002::prompt',
|
|
293
|
+
now: '2026-05-17T00:00:00Z',
|
|
294
|
+
};
|
|
295
|
+
const result1 = await writer.activate(input1, artifact);
|
|
296
|
+
const result2 = await writer.activate(input2, artifact);
|
|
297
|
+
expect(result1.activationId).not.toBe(result2.activationId);
|
|
298
|
+
});
|
|
299
|
+
});
|
|
300
|
+
});
|
|
301
|
+
// ── DeferArchiveWriter Tests ──────────────────────────────────────────────────
|
|
302
|
+
describe('DeferArchiveWriter', () => {
|
|
303
|
+
const writer = new DeferArchiveWriter();
|
|
304
|
+
it('channel is defer_archive', () => {
|
|
305
|
+
expect(writer.channel).toBe('defer_archive');
|
|
306
|
+
});
|
|
307
|
+
describe('canActivate', () => {
|
|
308
|
+
it('returns ok:true for validated principle artifact with principle ID', async () => {
|
|
309
|
+
const artifact = createArtifact({ contentJson: JSON.stringify({ principleId: 'PRI-001' }) });
|
|
310
|
+
const result = await writer.canActivate(artifact);
|
|
311
|
+
expect(result.ok).toBe(true);
|
|
312
|
+
expect(result.riskLevel).toBe('low');
|
|
313
|
+
});
|
|
314
|
+
it('returns ok:false for non-principle artifact kind', async () => {
|
|
315
|
+
const artifact = createArtifact({
|
|
316
|
+
contentJson: JSON.stringify({ principleId: 'PRI-002' }),
|
|
317
|
+
artifactKind: 'rule',
|
|
318
|
+
});
|
|
319
|
+
const result = await writer.canActivate(artifact);
|
|
320
|
+
expect(result.ok).toBe(false);
|
|
321
|
+
expect(result.reason).toBe('artifact_kind_not_principle');
|
|
322
|
+
expect(result.riskLevel).toBe('low');
|
|
323
|
+
});
|
|
324
|
+
it('returns ok:false for pending validation status', async () => {
|
|
325
|
+
const artifact = createArtifact({
|
|
326
|
+
contentJson: JSON.stringify({ principleId: 'PRI-003' }),
|
|
327
|
+
validationStatus: 'pending',
|
|
328
|
+
});
|
|
329
|
+
const result = await writer.canActivate(artifact);
|
|
330
|
+
expect(result.ok).toBe(false);
|
|
331
|
+
expect(result.reason).toBe('artifact_validation_status_pending');
|
|
332
|
+
expect(result.riskLevel).toBe('low');
|
|
333
|
+
});
|
|
334
|
+
it('returns ok:false for artifact without principle ID', async () => {
|
|
335
|
+
const artifact = createArtifact({ contentJson: '{}' });
|
|
336
|
+
const result = await writer.canActivate(artifact);
|
|
337
|
+
expect(result.ok).toBe(false);
|
|
338
|
+
expect(result.reason).toBe('no_principle_id_in_artifact');
|
|
339
|
+
expect(result.riskLevel).toBe('low');
|
|
340
|
+
});
|
|
341
|
+
it('shares same validation logic as PromptWriter', async () => {
|
|
342
|
+
const promptWriter = new PromptWriter();
|
|
343
|
+
const artifacts = [
|
|
344
|
+
createArtifact({ contentJson: JSON.stringify({ principleId: 'PRI-001' }) }),
|
|
345
|
+
createArtifact({ contentJson: '{}', artifactKind: 'rule' }),
|
|
346
|
+
createArtifact({ contentJson: '{}', validationStatus: 'pending' }),
|
|
347
|
+
createArtifact({ contentJson: '{}' }),
|
|
348
|
+
];
|
|
349
|
+
for (const artifact of artifacts) {
|
|
350
|
+
const promptResult = await promptWriter.canActivate(artifact);
|
|
351
|
+
const archiveResult = await writer.canActivate(artifact);
|
|
352
|
+
expect(promptResult.ok).toBe(archiveResult.ok);
|
|
353
|
+
if (!promptResult.ok && !archiveResult.ok) {
|
|
354
|
+
expect(promptResult.reason).toBe(archiveResult.reason);
|
|
355
|
+
}
|
|
356
|
+
}
|
|
357
|
+
});
|
|
358
|
+
});
|
|
359
|
+
describe('activate', () => {
|
|
360
|
+
it('creates activation record with defer_archive action', async () => {
|
|
361
|
+
const artifact = createArtifact({ contentJson: JSON.stringify({ principleId: 'PRI-001' }) });
|
|
362
|
+
const input = {
|
|
363
|
+
artifactId: 'art-001',
|
|
364
|
+
channel: 'defer_archive',
|
|
365
|
+
principleId: 'PRI-001',
|
|
366
|
+
idempotencyKey: 'art-001::defer_archive',
|
|
367
|
+
now: '2026-05-17T00:00:00Z',
|
|
368
|
+
};
|
|
369
|
+
const result = await writer.activate(input, artifact);
|
|
370
|
+
expect(result.activationId).toBe('act_archive_PRI-001');
|
|
371
|
+
expect(result.action).toBe('defer_archive');
|
|
372
|
+
expect(result.targetRef).toBe('ledger://PRI-001#archived');
|
|
373
|
+
});
|
|
374
|
+
it('targetRef includes #archived suffix', async () => {
|
|
375
|
+
const artifact = createArtifact({ contentJson: '{}' });
|
|
376
|
+
const input = {
|
|
377
|
+
artifactId: 'art-002',
|
|
378
|
+
channel: 'defer_archive',
|
|
379
|
+
principleId: 'PRI-002',
|
|
380
|
+
idempotencyKey: 'art-002::defer_archive',
|
|
381
|
+
now: '2026-05-17T00:00:00Z',
|
|
382
|
+
};
|
|
383
|
+
const result = await writer.activate(input, artifact);
|
|
384
|
+
expect(result.targetRef).toContain('#archived');
|
|
385
|
+
});
|
|
386
|
+
it('creates different activationId format than PromptWriter', async () => {
|
|
387
|
+
const promptWriter = new PromptWriter();
|
|
388
|
+
const artifact = createArtifact({ contentJson: '{}' });
|
|
389
|
+
const promptInput = {
|
|
390
|
+
artifactId: 'art-001',
|
|
391
|
+
channel: 'prompt',
|
|
392
|
+
principleId: 'PRI-001',
|
|
393
|
+
idempotencyKey: 'art-001::prompt',
|
|
394
|
+
now: '2026-05-17T00:00:00Z',
|
|
395
|
+
};
|
|
396
|
+
const archiveInput = {
|
|
397
|
+
artifactId: 'art-001',
|
|
398
|
+
channel: 'defer_archive',
|
|
399
|
+
principleId: 'PRI-001',
|
|
400
|
+
idempotencyKey: 'art-001::defer_archive',
|
|
401
|
+
now: '2026-05-17T00:00:00Z',
|
|
402
|
+
};
|
|
403
|
+
const promptResult = await promptWriter.activate(promptInput, artifact);
|
|
404
|
+
const archiveResult = await writer.activate(archiveInput, artifact);
|
|
405
|
+
expect(promptResult.activationId).toBe('act_prompt_PRI-001');
|
|
406
|
+
expect(archiveResult.activationId).toBe('act_archive_PRI-001');
|
|
407
|
+
expect(promptResult.action).toBe('prompt_activate');
|
|
408
|
+
expect(archiveResult.action).toBe('defer_archive');
|
|
409
|
+
});
|
|
410
|
+
});
|
|
411
|
+
});
|
|
412
|
+
// ── Integration Tests ────────────────────────────────────────────────────────
|
|
413
|
+
describe('integration: PromptWriter + DeferArchiveWriter', () => {
|
|
414
|
+
it('both writers reject same invalid artifacts', async () => {
|
|
415
|
+
const promptWriter = new PromptWriter();
|
|
416
|
+
const archiveWriter = new DeferArchiveWriter();
|
|
417
|
+
const invalidArtifacts = [
|
|
418
|
+
createArtifact({ contentJson: '{}', artifactKind: 'rule' }), // wrong kind
|
|
419
|
+
createArtifact({ contentJson: '{}', validationStatus: 'pending' }), // wrong status
|
|
420
|
+
createArtifact({ contentJson: '{}' }), // no principle ID
|
|
421
|
+
];
|
|
422
|
+
for (const artifact of invalidArtifacts) {
|
|
423
|
+
const promptResult = await promptWriter.canActivate(artifact);
|
|
424
|
+
const archiveResult = await archiveWriter.canActivate(artifact);
|
|
425
|
+
expect(promptResult.ok).toBe(false);
|
|
426
|
+
expect(archiveResult.ok).toBe(false);
|
|
427
|
+
}
|
|
428
|
+
});
|
|
429
|
+
it('both writers accept same valid artifacts', async () => {
|
|
430
|
+
const promptWriter = new PromptWriter();
|
|
431
|
+
const archiveWriter = new DeferArchiveWriter();
|
|
432
|
+
const validArtifact = createArtifact({ contentJson: JSON.stringify({ principleId: 'PRI-001' }) });
|
|
433
|
+
const promptResult = await promptWriter.canActivate(validArtifact);
|
|
434
|
+
const archiveResult = await archiveWriter.canActivate(validArtifact);
|
|
435
|
+
expect(promptResult.ok).toBe(true);
|
|
436
|
+
expect(archiveResult.ok).toBe(true);
|
|
437
|
+
expect(promptResult.riskLevel).toBe('low');
|
|
438
|
+
expect(archiveResult.riskLevel).toBe('low');
|
|
439
|
+
});
|
|
440
|
+
it('both writers produce different activation records for same principle', async () => {
|
|
441
|
+
const promptWriter = new PromptWriter();
|
|
442
|
+
const archiveWriter = new DeferArchiveWriter();
|
|
443
|
+
const artifact = createArtifact({ contentJson: JSON.stringify({ principleId: 'PRI-001' }) });
|
|
444
|
+
const promptResult = await promptWriter.activate({
|
|
445
|
+
artifactId: 'art-001',
|
|
446
|
+
channel: 'prompt',
|
|
447
|
+
principleId: 'PRI-001',
|
|
448
|
+
idempotencyKey: 'art-001::prompt',
|
|
449
|
+
now: '2026-05-17T00:00:00Z',
|
|
450
|
+
}, artifact);
|
|
451
|
+
const archiveResult = await archiveWriter.activate({
|
|
452
|
+
artifactId: 'art-001',
|
|
453
|
+
channel: 'defer_archive',
|
|
454
|
+
principleId: 'PRI-001',
|
|
455
|
+
idempotencyKey: 'art-001::defer_archive',
|
|
456
|
+
now: '2026-05-17T00:00:00Z',
|
|
457
|
+
}, artifact);
|
|
458
|
+
// Different activation IDs
|
|
459
|
+
expect(promptResult.activationId).not.toBe(archiveResult.activationId);
|
|
460
|
+
// Different actions
|
|
461
|
+
expect(promptResult.action).toBe('prompt_activate');
|
|
462
|
+
expect(archiveResult.action).toBe('defer_archive');
|
|
463
|
+
// Different target refs
|
|
464
|
+
expect(promptResult.targetRef).toBe('ledger://PRI-001');
|
|
465
|
+
expect(archiveResult.targetRef).toBe('ledger://PRI-001#archived');
|
|
466
|
+
});
|
|
467
|
+
});
|
|
468
|
+
//# sourceMappingURL=low-risk-writers.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"low-risk-writers.test.js","sourceRoot":"","sources":["../../../../src/runtime-v2/activation/__tests__/low-risk-writers.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pd-config-types.d.ts","sourceRoot":"","sources":["../../../src/runtime-v2/config/pd-config-types.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"pd-config-types.d.ts","sourceRoot":"","sources":["../../../src/runtime-v2/config/pd-config-types.ts"],"names":[],"mappings":"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"}
|
|
@@ -32,9 +32,8 @@ export const INTERNAL_AGENT_NAMES = [
|
|
|
32
32
|
export const VALID_DIAGNOSTICS_MODES = ['simple', 'advanced'];
|
|
33
33
|
// ── Dangerous Keys ──────────────────────────────────────────────────────────
|
|
34
34
|
export const DANGEROUS_KEYS = new Set(['__proto__', 'constructor', 'prototype']);
|
|
35
|
-
// ──
|
|
36
|
-
// Shared constant for the
|
|
37
|
-
// openclaw.json plugins.entries['principles-disciple'].hooks.
|
|
35
|
+
// ── Conversation Access Config Key (PRI-343) ────────────────────────────────
|
|
36
|
+
// Shared constant for the allowConversationAccess field in plugin hooks.
|
|
38
37
|
// Used by both the installer and the plugin health check to ensure consistency.
|
|
39
38
|
export const CONVERSATION_ACCESS_CONFIG_KEY = 'allowConversationAccess';
|
|
40
39
|
//# sourceMappingURL=pd-config-types.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pd-config-types.js","sourceRoot":"","sources":["../../../src/runtime-v2/config/pd-config-types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,+EAA+E;AAE/E,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC;AAGnC,+EAA+E;AAE/E,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,CAAU,CAAC;AAU3E,+EAA+E;AAE/E,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,UAAU,EAAE,OAAO,CAAU,CAAC;AA6BlE,+EAA+E;AAE/E,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,eAAe;IACf,SAAS;IACT,aAAa;IACb,QAAQ;IACR,WAAW;IACX,WAAW;IACX,iBAAiB;IACjB,SAAS;IACT,oBAAoB;IACpB,iBAAiB;CACT,CAAC;AAqBX,+EAA+E;AAE/E,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,QAAQ,EAAE,UAAU,CAAU,CAAC;AAkHvE,+EAA+E;AAE/E,MAAM,CAAC,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC,CAAC,WAAW,EAAE,aAAa,EAAE,WAAW,CAAC,CAAC,CAAC;AAEjF
|
|
1
|
+
{"version":3,"file":"pd-config-types.js","sourceRoot":"","sources":["../../../src/runtime-v2/config/pd-config-types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,+EAA+E;AAE/E,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC;AAGnC,+EAA+E;AAE/E,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,CAAU,CAAC;AAU3E,+EAA+E;AAE/E,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,UAAU,EAAE,OAAO,CAAU,CAAC;AA6BlE,+EAA+E;AAE/E,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,eAAe;IACf,SAAS;IACT,aAAa;IACb,QAAQ;IACR,WAAW;IACX,WAAW;IACX,iBAAiB;IACjB,SAAS;IACT,oBAAoB;IACpB,iBAAiB;CACT,CAAC;AAqBX,+EAA+E;AAE/E,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,QAAQ,EAAE,UAAU,CAAU,CAAC;AAkHvE,+EAA+E;AAE/E,MAAM,CAAC,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC,CAAC,WAAW,EAAE,aAAa,EAAE,WAAW,CAAC,CAAC,CAAC;AAEjF,+EAA+E;AAC/E,yEAAyE;AACzE,gFAAgF;AAChF,MAAM,CAAC,MAAM,8BAA8B,GAAG,yBAAkC,CAAC"}
|
|
@@ -35,7 +35,7 @@ describe('EmpathyObserver Real E2E & Mock Fallback', () => {
|
|
|
35
35
|
model,
|
|
36
36
|
apiKeyEnv,
|
|
37
37
|
baseUrl,
|
|
38
|
-
timeoutMs:
|
|
38
|
+
timeoutMs: 60000,
|
|
39
39
|
});
|
|
40
40
|
isRealLlm = true;
|
|
41
41
|
console.log(`[E2E Test] LM Studio detected at ${baseUrl}. Running E2E test with real model: ${model}`);
|
|
@@ -62,6 +62,6 @@ describe('EmpathyObserver Real E2E & Mock Fallback', () => {
|
|
|
62
62
|
expect(result.damageDetected).toBe(true);
|
|
63
63
|
expect(result.reason).toBe('Frustration detected via stable mock fallback');
|
|
64
64
|
}
|
|
65
|
-
},
|
|
65
|
+
}, 120000);
|
|
66
66
|
});
|
|
67
67
|
//# sourceMappingURL=empathy-observer.real-e2e.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"empathy-observer.real-e2e.test.js","sourceRoot":"","sources":["../../../../src/runtime-v2/observer/__tests__/empathy-observer.real-e2e.test.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"empathy-observer.real-e2e.test.js","sourceRoot":"","sources":["../../../../src/runtime-v2/observer/__tests__/empathy-observer.real-e2e.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -19,7 +19,7 @@ export class EmpathyObserver {
|
|
|
19
19
|
agentId;
|
|
20
20
|
constructor(deps, options) {
|
|
21
21
|
this.runtimeAdapter = deps.runtimeAdapter;
|
|
22
|
-
this.timeoutMs = options?.timeoutMs ??
|
|
22
|
+
this.timeoutMs = options?.timeoutMs ?? 120_000;
|
|
23
23
|
this.agentId = options?.agentId ?? 'empathy-observer';
|
|
24
24
|
}
|
|
25
25
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"empathy-observer.js","sourceRoot":"","sources":["../../../src/runtime-v2/observer/empathy-observer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAe,MAAM,mBAAmB,CAAC;AAGtD,gFAAgF;AAEhF,MAAM,CAAC,MAAM,0BAA0B,GAAG,IAAI,CAAC,MAAM,CAAC;IACpD,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC;CAC3C,CAAC,CAAC;AAIH,MAAM,CAAC,MAAM,6BAA6B,GAAG,IAAI,CAAC,MAAM,CAAC;IACvD,cAAc,EAAE,IAAI,CAAC,OAAO,EAAE;IAC9B,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC;QACnB,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;QACpB,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC;QACxB,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;KACvB,CAAC;IACF,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;IACnD,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE;CACtB,CAAC,CAAC;AAeH,MAAM,OAAO,eAAe;IACT,cAAc,CAAmB;IACjC,SAAS,CAAS;IAClB,OAAO,CAAS;IAEjC,YAAY,IAAyB,EAAE,OAAgC;QACrE,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC;QAC1C,IAAI,CAAC,SAAS,GAAG,OAAO,EAAE,SAAS,IAAI,
|
|
1
|
+
{"version":3,"file":"empathy-observer.js","sourceRoot":"","sources":["../../../src/runtime-v2/observer/empathy-observer.ts"],"names":[],"mappings":"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"}
|