@principles/core 1.223.0 → 1.225.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 (52) hide show
  1. package/dist/index.d.ts +2 -0
  2. package/dist/index.d.ts.map +1 -1
  3. package/dist/index.js +1 -0
  4. package/dist/index.js.map +1 -1
  5. package/dist/runtime-v2/__tests__/pain-to-principle-service.test.js +7 -0
  6. package/dist/runtime-v2/__tests__/pain-to-principle-service.test.js.map +1 -1
  7. package/dist/runtime-v2/config/index.d.ts +5 -3
  8. package/dist/runtime-v2/config/index.d.ts.map +1 -1
  9. package/dist/runtime-v2/config/index.js +8 -2
  10. package/dist/runtime-v2/config/index.js.map +1 -1
  11. package/dist/runtime-v2/config/pd-config-defaults.d.ts +2 -1
  12. package/dist/runtime-v2/config/pd-config-defaults.d.ts.map +1 -1
  13. package/dist/runtime-v2/config/pd-config-defaults.js +11 -0
  14. package/dist/runtime-v2/config/pd-config-defaults.js.map +1 -1
  15. package/dist/runtime-v2/config/pd-config-effective.d.ts.map +1 -1
  16. package/dist/runtime-v2/config/pd-config-effective.js +25 -1
  17. package/dist/runtime-v2/config/pd-config-effective.js.map +1 -1
  18. package/dist/runtime-v2/config/pd-config-redaction.d.ts.map +1 -1
  19. package/dist/runtime-v2/config/pd-config-redaction.js +9 -0
  20. package/dist/runtime-v2/config/pd-config-redaction.js.map +1 -1
  21. package/dist/runtime-v2/config/pd-config-types.d.ts +109 -0
  22. package/dist/runtime-v2/config/pd-config-types.d.ts.map +1 -1
  23. package/dist/runtime-v2/config/pd-config-types.js +6 -0
  24. package/dist/runtime-v2/config/pd-config-types.js.map +1 -1
  25. package/dist/runtime-v2/config/pd-config-validate.d.ts.map +1 -1
  26. package/dist/runtime-v2/config/pd-config-validate.js +114 -1
  27. package/dist/runtime-v2/config/pd-config-validate.js.map +1 -1
  28. package/dist/runtime-v2/config/pd-profile-constants.d.ts +27 -0
  29. package/dist/runtime-v2/config/pd-profile-constants.d.ts.map +1 -0
  30. package/dist/runtime-v2/config/pd-profile-constants.js +145 -0
  31. package/dist/runtime-v2/config/pd-profile-constants.js.map +1 -0
  32. package/dist/runtime-v2/config/pd-validate-profile.d.ts +28 -0
  33. package/dist/runtime-v2/config/pd-validate-profile.d.ts.map +1 -0
  34. package/dist/runtime-v2/config/pd-validate-profile.js +482 -0
  35. package/dist/runtime-v2/config/pd-validate-profile.js.map +1 -0
  36. package/dist/runtime-v2/internalization/__tests__/diag-chain-e2e.test.js +19 -1
  37. package/dist/runtime-v2/internalization/__tests__/diag-chain-e2e.test.js.map +1 -1
  38. package/dist/runtime-v2/internalization/__tests__/diag-rootcause-intent-tension.test.js +7 -0
  39. package/dist/runtime-v2/internalization/__tests__/diag-rootcause-intent-tension.test.js.map +1 -1
  40. package/dist/runtime-v2/internalization/__tests__/internalization-task-guards.test.js +1 -53
  41. package/dist/runtime-v2/internalization/__tests__/internalization-task-guards.test.js.map +1 -1
  42. package/dist/runtime-v2/internalization/index.d.ts +1 -1
  43. package/dist/runtime-v2/internalization/index.d.ts.map +1 -1
  44. package/dist/runtime-v2/internalization/index.js +1 -1
  45. package/dist/runtime-v2/internalization/index.js.map +1 -1
  46. package/dist/runtime-v2/internalization/internalization-task-guards.d.ts +0 -19
  47. package/dist/runtime-v2/internalization/internalization-task-guards.d.ts.map +1 -1
  48. package/dist/runtime-v2/internalization/internalization-task-guards.js +1 -29
  49. package/dist/runtime-v2/internalization/internalization-task-guards.js.map +1 -1
  50. package/dist/runtime-v2/store/schema-conformance.test.js +43 -0
  51. package/dist/runtime-v2/store/schema-conformance.test.js.map +1 -1
  52. package/package.json +1 -1
@@ -0,0 +1,482 @@
1
+ /**
2
+ * PD Profile Config Validation — PRI-304 / PRI-466
3
+ *
4
+ * Runtime validation from `unknown` (parsed YAML/JSON profile section).
5
+ * No `as` bypasses on untrusted input (ERR-001, ERR-005).
6
+ * Uses `Object.hasOwn()` for key checks (ERR-013).
7
+ * Unknown keys produce warnings rather than hard errors (forward compat).
8
+ */
9
+ import { PROFILE_AUDIT_LEVELS, PROFILE_EVOLUTION_MODES, PROFILE_TEST_LEVELS, } from './pd-config-types.js';
10
+ // ── Helpers ─────────────────────────────────────────────────────────────────
11
+ function isRecord(value) {
12
+ return value !== null && value !== undefined && typeof value === 'object' && !Array.isArray(value);
13
+ }
14
+ function isString(value) {
15
+ return typeof value === 'string';
16
+ }
17
+ function isBoolean(value) {
18
+ return typeof value === 'boolean';
19
+ }
20
+ function isNumber(value) {
21
+ return typeof value === 'number' && Number.isFinite(value);
22
+ }
23
+ function warn(path, message) {
24
+ return { path, message };
25
+ }
26
+ function readOwn(obj, key) {
27
+ // DANGEROUS_KEYS check: profile does not have __proto__/constructor risk at runtime
28
+ return Object.hasOwn(obj, key) ? obj[key] : undefined;
29
+ }
30
+ const VALID_SEVERITIES = new Set(['info', 'warning', 'error', 'fatal']);
31
+ // ── Sub-validators ──────────────────────────────────────────────────────────
32
+ function validateGate(raw, path) {
33
+ const warnings = [];
34
+ if (!isRecord(raw)) {
35
+ warnings.push(warn(path, `gate must be an object, got ${typeof raw}`));
36
+ return { warnings };
37
+ }
38
+ const value = {};
39
+ const bv = readOwn(raw, 'require_plan_for_risk_paths');
40
+ if (bv !== undefined) {
41
+ if (isBoolean(bv))
42
+ value.require_plan_for_risk_paths = bv;
43
+ else
44
+ warnings.push(warn(`${path}.require_plan_for_risk_paths`, `must be boolean`));
45
+ }
46
+ const ba = readOwn(raw, 'require_audit_before_write');
47
+ if (ba !== undefined) {
48
+ if (isBoolean(ba))
49
+ value.require_audit_before_write = ba;
50
+ else
51
+ warnings.push(warn(`${path}.require_audit_before_write`, `must be boolean`));
52
+ }
53
+ const br = readOwn(raw, 'require_reviewer_after_write');
54
+ if (br !== undefined) {
55
+ if (isBoolean(br))
56
+ value.require_reviewer_after_write = br;
57
+ else
58
+ warnings.push(warn(`${path}.require_reviewer_after_write`, `must be boolean`));
59
+ }
60
+ return { value, warnings };
61
+ }
62
+ function validateTests(raw, path) {
63
+ const warnings = [];
64
+ if (!isRecord(raw)) {
65
+ warnings.push(warn(path, `tests must be an object, got ${typeof raw}`));
66
+ return { warnings };
67
+ }
68
+ const value = {};
69
+ const oc = readOwn(raw, 'on_change');
70
+ if (oc !== undefined) {
71
+ if (isString(oc) && PROFILE_TEST_LEVELS.includes(oc))
72
+ value.on_change = oc;
73
+ else
74
+ warnings.push(warn(`${path}.on_change`, `must be one of: ${PROFILE_TEST_LEVELS.join(', ')}`));
75
+ }
76
+ const orc = readOwn(raw, 'on_risk_change');
77
+ if (orc !== undefined) {
78
+ if (isString(orc) && PROFILE_TEST_LEVELS.includes(orc))
79
+ value.on_risk_change = orc;
80
+ else
81
+ warnings.push(warn(`${path}.on_risk_change`, `must be one of: ${PROFILE_TEST_LEVELS.join(', ')}`));
82
+ }
83
+ const cmds = readOwn(raw, 'commands');
84
+ if (cmds !== undefined) {
85
+ if (isRecord(cmds)) {
86
+ const cleaned = {};
87
+ for (const k of Object.keys(cmds)) {
88
+ const v = cmds[k];
89
+ if (isString(v))
90
+ cleaned[k] = v;
91
+ else
92
+ warnings.push(warn(`${path}.commands.${k}`, `command value must be a string`));
93
+ }
94
+ value.commands = cleaned;
95
+ }
96
+ else {
97
+ warnings.push(warn(`${path}.commands`, `must be an object (string→string map)`));
98
+ }
99
+ }
100
+ return { value, warnings };
101
+ }
102
+ function validateAdaptivePain(raw, path) {
103
+ const warnings = [];
104
+ if (!isRecord(raw)) {
105
+ warnings.push(warn(path, `adaptive must be an object, got ${typeof raw}`));
106
+ return { warnings };
107
+ }
108
+ const value = {};
109
+ const en = readOwn(raw, 'enabled');
110
+ if (en !== undefined) {
111
+ if (isBoolean(en))
112
+ value.enabled = en;
113
+ else
114
+ warnings.push(warn(`${path}.enabled`, `must be boolean`));
115
+ }
116
+ const sb = readOwn(raw, 'spiral_boost');
117
+ if (sb !== undefined) {
118
+ if (isNumber(sb))
119
+ value.spiral_boost = sb;
120
+ else
121
+ warnings.push(warn(`${path}.spiral_boost`, `must be a finite number`));
122
+ }
123
+ const min = readOwn(raw, 'min_threshold');
124
+ if (min !== undefined) {
125
+ if (isNumber(min))
126
+ value.min_threshold = min;
127
+ else
128
+ warnings.push(warn(`${path}.min_threshold`, `must be a finite number`));
129
+ }
130
+ const max = readOwn(raw, 'max_threshold');
131
+ if (max !== undefined) {
132
+ if (isNumber(max))
133
+ value.max_threshold = max;
134
+ else
135
+ warnings.push(warn(`${path}.max_threshold`, `must be a finite number`));
136
+ }
137
+ const bt = readOwn(raw, 'backlog_trigger');
138
+ if (bt !== undefined) {
139
+ if (isNumber(bt))
140
+ value.backlog_trigger = bt;
141
+ else
142
+ warnings.push(warn(`${path}.backlog_trigger`, `must be a finite number`));
143
+ }
144
+ const hf = readOwn(raw, 'hard_failure_trigger');
145
+ if (hf !== undefined) {
146
+ if (isNumber(hf))
147
+ value.hard_failure_trigger = hf;
148
+ else
149
+ warnings.push(warn(`${path}.hard_failure_trigger`, `must be a finite number`));
150
+ }
151
+ const lrsb = readOwn(raw, 'low_recent_success_boost');
152
+ if (lrsb !== undefined) {
153
+ if (isNumber(lrsb))
154
+ value.low_recent_success_boost = lrsb;
155
+ else
156
+ warnings.push(warn(`${path}.low_recent_success_boost`, `must be a finite number`));
157
+ }
158
+ const hrpb = readOwn(raw, 'high_recent_pain_boost');
159
+ if (hrpb !== undefined) {
160
+ if (isNumber(hrpb))
161
+ value.high_recent_pain_boost = hrpb;
162
+ else
163
+ warnings.push(warn(`${path}.high_recent_pain_boost`, `must be a finite number`));
164
+ }
165
+ return { value, warnings };
166
+ }
167
+ function validatePain(raw, path) {
168
+ const warnings = [];
169
+ if (!isRecord(raw)) {
170
+ warnings.push(warn(path, `pain must be an object, got ${typeof raw}`));
171
+ return { warnings };
172
+ }
173
+ const value = {};
174
+ const sct = readOwn(raw, 'soft_capture_threshold');
175
+ if (sct !== undefined) {
176
+ if (isNumber(sct))
177
+ value.soft_capture_threshold = sct;
178
+ else
179
+ warnings.push(warn(`${path}.soft_capture_threshold`, `must be a finite number`));
180
+ }
181
+ const ad = readOwn(raw, 'adaptive');
182
+ if (ad !== undefined) {
183
+ const r = validateAdaptivePain(ad, `${path}.adaptive`);
184
+ if (r.value)
185
+ value.adaptive = r.value;
186
+ warnings.push(...r.warnings);
187
+ }
188
+ return { value, warnings };
189
+ }
190
+ function validateLifecycle(raw, path) {
191
+ const warnings = [];
192
+ if (!isRecord(raw)) {
193
+ warnings.push(warn(path, `lifecycle must be an object, got ${typeof raw}`));
194
+ return { warnings };
195
+ }
196
+ const value = {};
197
+ const en = readOwn(raw, 'enabled');
198
+ if (en !== undefined) {
199
+ if (isBoolean(en))
200
+ value.enabled = en;
201
+ else
202
+ warnings.push(warn(`${path}.enabled`, `must be boolean`));
203
+ }
204
+ const hb = readOwn(raw, 'heartbeat_stale_hours');
205
+ if (hb !== undefined) {
206
+ if (isNumber(hb))
207
+ value.heartbeat_stale_hours = hb;
208
+ else
209
+ warnings.push(warn(`${path}.heartbeat_stale_hours`, `must be a finite number`));
210
+ }
211
+ return { value, warnings };
212
+ }
213
+ function validatePlanApprovals(raw, path) {
214
+ const warnings = [];
215
+ if (!isRecord(raw)) {
216
+ warnings.push(warn(path, `plan_approvals must be an object, got ${typeof raw}`));
217
+ return { warnings };
218
+ }
219
+ const value = {};
220
+ const en = readOwn(raw, 'enabled');
221
+ if (en !== undefined) {
222
+ if (isBoolean(en))
223
+ value.enabled = en;
224
+ else
225
+ warnings.push(warn(`${path}.enabled`, `must be boolean`));
226
+ }
227
+ const ml = readOwn(raw, 'max_lines_override');
228
+ if (ml !== undefined) {
229
+ if (isNumber(ml) && Number.isInteger(ml))
230
+ value.max_lines_override = ml;
231
+ else
232
+ warnings.push(warn(`${path}.max_lines_override`, `must be an integer`));
233
+ }
234
+ const ap = readOwn(raw, 'allowed_patterns');
235
+ if (ap !== undefined) {
236
+ if (Array.isArray(ap))
237
+ value.allowed_patterns = ap.filter(isString);
238
+ else
239
+ warnings.push(warn(`${path}.allowed_patterns`, `must be an array of strings`));
240
+ }
241
+ const ao = readOwn(raw, 'allowed_operations');
242
+ if (ao !== undefined) {
243
+ if (Array.isArray(ao))
244
+ value.allowed_operations = ao.filter(isString);
245
+ else
246
+ warnings.push(warn(`${path}.allowed_operations`, `must be an array of strings`));
247
+ }
248
+ return { value, warnings };
249
+ }
250
+ function validateEditVerification(raw, path) {
251
+ const warnings = [];
252
+ if (!isRecord(raw)) {
253
+ warnings.push(warn(path, `edit_verification must be an object, got ${typeof raw}`));
254
+ return { warnings };
255
+ }
256
+ const value = {};
257
+ const en = readOwn(raw, 'enabled');
258
+ if (en !== undefined) {
259
+ if (isBoolean(en))
260
+ value.enabled = en;
261
+ else
262
+ warnings.push(warn(`${path}.enabled`, `must be boolean`));
263
+ }
264
+ const mfs = readOwn(raw, 'max_file_size_bytes');
265
+ if (mfs !== undefined) {
266
+ if (isNumber(mfs) && mfs >= 0)
267
+ value.max_file_size_bytes = mfs;
268
+ else
269
+ warnings.push(warn(`${path}.max_file_size_bytes`, `must be a non-negative number`));
270
+ }
271
+ const fm = readOwn(raw, 'fuzzy_match_enabled');
272
+ if (fm !== undefined) {
273
+ if (isBoolean(fm))
274
+ value.fuzzy_match_enabled = fm;
275
+ else
276
+ warnings.push(warn(`${path}.fuzzy_match_enabled`, `must be boolean`));
277
+ }
278
+ const fmt = readOwn(raw, 'fuzzy_match_threshold');
279
+ if (fmt !== undefined) {
280
+ if (isNumber(fmt) && fmt > 0 && fmt <= 1)
281
+ value.fuzzy_match_threshold = fmt;
282
+ else
283
+ warnings.push(warn(`${path}.fuzzy_match_threshold`, `must be a number in (0, 1]`));
284
+ }
285
+ const sla = readOwn(raw, 'skip_large_file_action');
286
+ if (sla !== undefined) {
287
+ if (sla === 'warn' || sla === 'block')
288
+ value.skip_large_file_action = sla;
289
+ else
290
+ warnings.push(warn(`${path}.skip_large_file_action`, `must be "warn" or "block"`));
291
+ }
292
+ return { value, warnings };
293
+ }
294
+ function validateThinkingCheckpoint(raw, path) {
295
+ const warnings = [];
296
+ if (!isRecord(raw)) {
297
+ warnings.push(warn(path, `thinking_checkpoint must be an object, got ${typeof raw}`));
298
+ return { warnings };
299
+ }
300
+ const value = {};
301
+ const en = readOwn(raw, 'enabled');
302
+ if (en !== undefined) {
303
+ if (isBoolean(en))
304
+ value.enabled = en;
305
+ else
306
+ warnings.push(warn(`${path}.enabled`, `must be boolean`));
307
+ }
308
+ const wm = readOwn(raw, 'window_ms');
309
+ if (wm !== undefined) {
310
+ if (isNumber(wm) && wm > 0)
311
+ value.window_ms = wm;
312
+ else
313
+ warnings.push(warn(`${path}.window_ms`, `must be a positive number`));
314
+ }
315
+ const hrt = readOwn(raw, 'high_risk_tools');
316
+ if (hrt !== undefined) {
317
+ if (Array.isArray(hrt))
318
+ value.high_risk_tools = hrt.filter(isString);
319
+ else
320
+ warnings.push(warn(`${path}.high_risk_tools`, `must be an array of strings`));
321
+ }
322
+ return { value, warnings };
323
+ }
324
+ function validateCustomGuards(raw, path) {
325
+ const warnings = [];
326
+ if (!Array.isArray(raw)) {
327
+ warnings.push(warn(path, `custom_guards must be an array, got ${typeof raw}`));
328
+ return { warnings };
329
+ }
330
+ const guards = [];
331
+ for (let i = 0; i < raw.length; i++) {
332
+ const item = raw[i];
333
+ if (!isRecord(item)) {
334
+ warnings.push(warn(`${path}[${i}]`, `must be an object`));
335
+ continue;
336
+ }
337
+ const pattern = readOwn(item, 'pattern');
338
+ const message = readOwn(item, 'message');
339
+ const severity = readOwn(item, 'severity');
340
+ if (!isString(pattern) || pattern.length === 0) {
341
+ warnings.push(warn(`${path}[${i}].pattern`, `must be a non-empty string`));
342
+ continue;
343
+ }
344
+ guards.push({
345
+ pattern,
346
+ message: isString(message) ? message : 'Custom guard triggered',
347
+ severity: isString(severity) && VALID_SEVERITIES.has(severity.toLowerCase()) ? severity.toLowerCase() : 'error',
348
+ });
349
+ }
350
+ return { value: guards, warnings };
351
+ }
352
+ // ── Top-Level Validator ─────────────────────────────────────────────────────
353
+ /**
354
+ * Validate a parsed profile config value from unknown input.
355
+ * Profile is optional — missing profile is OK (defaults applied in effective config).
356
+ * Partial input is accepted (warnings for invalid sub-fields, valid partial fields kept).
357
+ */
358
+ export function validateProfileConfig(raw, path = 'profile') {
359
+ const warnings = [];
360
+ if (!isRecord(raw)) {
361
+ return { ok: false, errors: [warn(path, `profile must be an object, got ${typeof raw}`)] };
362
+ }
363
+ const result = {};
364
+ // audit_level
365
+ const al = readOwn(raw, 'audit_level');
366
+ if (al !== undefined) {
367
+ if (isString(al) && PROFILE_AUDIT_LEVELS.includes(al)) {
368
+ result.audit_level = al;
369
+ }
370
+ else {
371
+ warnings.push(warn(`${path}.audit_level`, `must be one of: ${PROFILE_AUDIT_LEVELS.join(', ')}, got ${JSON.stringify(al)}`));
372
+ }
373
+ }
374
+ // evolution_mode
375
+ const em = readOwn(raw, 'evolution_mode');
376
+ if (em !== undefined) {
377
+ if (isString(em) && PROFILE_EVOLUTION_MODES.includes(em)) {
378
+ result.evolution_mode = em;
379
+ }
380
+ else {
381
+ warnings.push(warn(`${path}.evolution_mode`, `must be one of: ${PROFILE_EVOLUTION_MODES.join(', ')}, got ${JSON.stringify(em)}`));
382
+ }
383
+ }
384
+ // risk_paths
385
+ const rp = readOwn(raw, 'risk_paths');
386
+ if (rp !== undefined) {
387
+ if (Array.isArray(rp)) {
388
+ result.risk_paths = rp.filter(isString);
389
+ }
390
+ else if (isString(rp)) {
391
+ result.risk_paths = [rp];
392
+ }
393
+ else {
394
+ warnings.push(warn(`${path}.risk_paths`, `must be an array of strings or a single string`));
395
+ }
396
+ }
397
+ // Sub-objects
398
+ const gateRaw = readOwn(raw, 'gate');
399
+ if (gateRaw !== undefined) {
400
+ const r = validateGate(gateRaw, `${path}.gate`);
401
+ if (r.value)
402
+ result.gate = r.value;
403
+ warnings.push(...r.warnings);
404
+ }
405
+ const testsRaw = readOwn(raw, 'tests');
406
+ if (testsRaw !== undefined) {
407
+ const r = validateTests(testsRaw, `${path}.tests`);
408
+ if (r.value)
409
+ result.tests = r.value;
410
+ warnings.push(...r.warnings);
411
+ }
412
+ const painRaw = readOwn(raw, 'pain');
413
+ if (painRaw !== undefined) {
414
+ const r = validatePain(painRaw, `${path}.pain`);
415
+ if (r.value)
416
+ result.pain = r.value;
417
+ warnings.push(...r.warnings);
418
+ }
419
+ const lifecycleRaw = readOwn(raw, 'lifecycle');
420
+ if (lifecycleRaw !== undefined) {
421
+ const r = validateLifecycle(lifecycleRaw, `${path}.lifecycle`);
422
+ if (r.value)
423
+ result.lifecycle = r.value;
424
+ warnings.push(...r.warnings);
425
+ }
426
+ // progressive_gate
427
+ const pgRaw = readOwn(raw, 'progressive_gate');
428
+ if (pgRaw !== undefined) {
429
+ const warnings2 = [];
430
+ const pgResult = {};
431
+ if (isRecord(pgRaw)) {
432
+ // Inside isRecord guard, TypeScript narrows pgRaw to Record<string, unknown>
433
+ const pgEnabled = readOwn(pgRaw, 'enabled');
434
+ if (pgEnabled !== undefined) {
435
+ if (isBoolean(pgEnabled))
436
+ pgResult.enabled = pgEnabled;
437
+ else
438
+ warnings2.push(warn(`${path}.progressive_gate.enabled`, `must be boolean`));
439
+ }
440
+ const paRaw = readOwn(pgRaw, 'plan_approvals');
441
+ if (paRaw !== undefined) {
442
+ const r = validatePlanApprovals(paRaw, `${path}.progressive_gate.plan_approvals`);
443
+ if (r.value)
444
+ pgResult.plan_approvals = r.value;
445
+ warnings2.push(...r.warnings);
446
+ }
447
+ }
448
+ else {
449
+ warnings2.push(warn(`${path}.progressive_gate`, `must be an object`));
450
+ }
451
+ if (Object.keys(pgResult).length > 0)
452
+ result.progressive_gate = pgResult;
453
+ warnings.push(...warnings2);
454
+ }
455
+ const evRaw = readOwn(raw, 'edit_verification');
456
+ if (evRaw !== undefined) {
457
+ const r = validateEditVerification(evRaw, `${path}.edit_verification`);
458
+ if (r.value)
459
+ result.edit_verification = r.value;
460
+ warnings.push(...r.warnings);
461
+ }
462
+ const tcRaw = readOwn(raw, 'thinking_checkpoint');
463
+ if (tcRaw !== undefined) {
464
+ const r = validateThinkingCheckpoint(tcRaw, `${path}.thinking_checkpoint`);
465
+ if (r.value)
466
+ result.thinking_checkpoint = r.value;
467
+ warnings.push(...r.warnings);
468
+ }
469
+ const cgRaw = readOwn(raw, 'custom_guards');
470
+ if (cgRaw !== undefined) {
471
+ const r = validateCustomGuards(cgRaw, `${path}.custom_guards`);
472
+ if (r.value)
473
+ result.custom_guards = r.value;
474
+ warnings.push(...r.warnings);
475
+ }
476
+ return {
477
+ ok: true,
478
+ value: result,
479
+ warnings,
480
+ };
481
+ }
482
+ //# sourceMappingURL=pd-validate-profile.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pd-validate-profile.js","sourceRoot":"","sources":["../../../src/runtime-v2/config/pd-validate-profile.ts"],"names":[],"mappings":"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"}
@@ -24,7 +24,7 @@ import { SplitDiagnosticianRunner } from '../split-diagnostician-runner.js';
24
24
  import { MemoryPIArtifactStore } from '../pi-artifact-store.js';
25
25
  import { createPITaskDiagnosticJson } from '../pitask-metadata.js';
26
26
  import { computeFeatureFlagsFromConfig, isFeatureEnabled } from '../../config/pd-config-feature-flags.js';
27
- import { computeEffectivePdConfig } from '../../config/index.js';
27
+ import { computeEffectivePdConfig, resolveProfile } from '../../config/index.js';
28
28
  import { createPainSignalBridge } from '../../pain-signal-runtime-factory.js';
29
29
  import { MOCK_ROOT_CAUSE_OUTPUTS, MOCK_DISTILLER_OUTPUTS, MOCK_ROUTER_OUTPUTS } from './__fixtures__/split-pipeline-mock-outputs.js';
30
30
  // ── Test fixtures ──────────────────────────────────────────────────────────────
@@ -331,6 +331,12 @@ describe('Diag chain e2e', () => {
331
331
  },
332
332
  source: 'user_config',
333
333
  warnings: [],
334
+ resolvedProfile: resolveProfile({}),
335
+ resolvedContextInjection: {
336
+ thinkingOs: false,
337
+ projectFocus: 'off',
338
+ evolutionContext: { enabled: true, maxMessages: 4, maxCharsPerMessage: 200 },
339
+ },
334
340
  };
335
341
  const featureFlags = computeFeatureFlagsFromConfig(effectiveConfig);
336
342
  const splitPipeline = isFeatureEnabled(featureFlags, 'diagnostician_split_pipeline');
@@ -354,6 +360,12 @@ describe('Diag chain e2e', () => {
354
360
  source: 'user_config',
355
361
  warnings: [],
356
362
  featuresChangedFromDefault: ['diagnostician_split_pipeline'],
363
+ resolvedProfile: resolveProfile({}),
364
+ resolvedContextInjection: {
365
+ thinkingOs: false,
366
+ projectFocus: 'off',
367
+ evolutionContext: { enabled: true, maxMessages: 4, maxCharsPerMessage: 200 },
368
+ },
357
369
  };
358
370
  // Use os.tmpdir() to avoid polluting disk root with /invalid-path-a on Windows
359
371
  // (path.resolve('/invalid-path-a') → D:\invalid-path-a on Windows).
@@ -475,6 +487,12 @@ describe('Diag chain e2e', () => {
475
487
  },
476
488
  source: 'user_config',
477
489
  warnings: [],
490
+ resolvedProfile: resolveProfile({}),
491
+ resolvedContextInjection: {
492
+ thinkingOs: false,
493
+ projectFocus: 'off',
494
+ evolutionContext: { enabled: true, maxMessages: 4, maxCharsPerMessage: 200 },
495
+ },
478
496
  };
479
497
  const featureFlags = computeFeatureFlagsFromConfig(effectiveConfig);
480
498
  const splitPipeline = isFeatureEnabled(featureFlags, 'diagnostician_split_pipeline');