@principles/pd-cli 1.152.12 → 1.152.13
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/package.json +13 -7
- package/CHANGELOG.md +0 -23
- package/dist/commands/__tests__/intent-flag-wiring.test.d.ts +0 -9
- package/dist/commands/__tests__/intent-flag-wiring.test.d.ts.map +0 -1
- package/dist/commands/__tests__/intent-flag-wiring.test.js +0 -237
- package/dist/commands/__tests__/intent-flag-wiring.test.js.map +0 -1
- package/dist/commands/__tests__/legacy-cleanup.test.d.ts +0 -18
- package/dist/commands/__tests__/legacy-cleanup.test.d.ts.map +0 -1
- package/dist/commands/__tests__/legacy-cleanup.test.js +0 -467
- package/dist/commands/__tests__/legacy-cleanup.test.js.map +0 -1
- package/dist/commands/__tests__/mvp-smoke.test.d.ts +0 -15
- package/dist/commands/__tests__/mvp-smoke.test.d.ts.map +0 -1
- package/dist/commands/__tests__/mvp-smoke.test.js +0 -262
- package/dist/commands/__tests__/mvp-smoke.test.js.map +0 -1
- package/dist/commands/__tests__/pain-retry-maxTokens-flag.test.d.ts +0 -2
- package/dist/commands/__tests__/pain-retry-maxTokens-flag.test.d.ts.map +0 -1
- package/dist/commands/__tests__/pain-retry-maxTokens-flag.test.js +0 -60
- package/dist/commands/__tests__/pain-retry-maxTokens-flag.test.js.map +0 -1
- package/dist/commands/__tests__/rulecode-flag-wiring.test.d.ts +0 -21
- package/dist/commands/__tests__/rulecode-flag-wiring.test.d.ts.map +0 -1
- package/dist/commands/__tests__/rulecode-flag-wiring.test.js +0 -186
- package/dist/commands/__tests__/rulecode-flag-wiring.test.js.map +0 -1
- package/dist/commands/__tests__/rulecode-handler.test.d.ts +0 -16
- package/dist/commands/__tests__/rulecode-handler.test.d.ts.map +0 -1
- package/dist/commands/__tests__/rulecode-handler.test.js +0 -285
- package/dist/commands/__tests__/rulecode-handler.test.js.map +0 -1
- package/dist/commands/__tests__/run-rulehost-flag-wiring.test.d.ts +0 -24
- package/dist/commands/__tests__/run-rulehost-flag-wiring.test.d.ts.map +0 -1
- package/dist/commands/__tests__/run-rulehost-flag-wiring.test.js +0 -232
- package/dist/commands/__tests__/run-rulehost-flag-wiring.test.js.map +0 -1
- package/dist/commands/__tests__/runtime-activation-nextaction.test.d.ts +0 -15
- package/dist/commands/__tests__/runtime-activation-nextaction.test.d.ts.map +0 -1
- package/dist/commands/__tests__/runtime-activation-nextaction.test.js +0 -73
- package/dist/commands/__tests__/runtime-activation-nextaction.test.js.map +0 -1
- package/dist/commands/__tests__/runtime-probe-config.test.d.ts +0 -20
- package/dist/commands/__tests__/runtime-probe-config.test.d.ts.map +0 -1
- package/dist/commands/__tests__/runtime-probe-config.test.js +0 -389
- package/dist/commands/__tests__/runtime-probe-config.test.js.map +0 -1
- package/dist/commands/__tests__/telemetry-flag-wiring.test.d.ts +0 -9
- package/dist/commands/__tests__/telemetry-flag-wiring.test.d.ts.map +0 -1
- package/dist/commands/__tests__/telemetry-flag-wiring.test.js +0 -76
- package/dist/commands/__tests__/telemetry-flag-wiring.test.js.map +0 -1
- package/dist/commands/__tests__/version.test.d.ts +0 -2
- package/dist/commands/__tests__/version.test.d.ts.map +0 -1
- package/dist/commands/__tests__/version.test.js +0 -238
- package/dist/commands/__tests__/version.test.js.map +0 -1
- package/dist/commands/runtime-uat.guard.test.d.ts +0 -2
- package/dist/commands/runtime-uat.guard.test.d.ts.map +0 -1
- package/dist/commands/runtime-uat.guard.test.js +0 -153
- package/dist/commands/runtime-uat.guard.test.js.map +0 -1
- package/dist/services/__tests__/cli-output.test.d.ts +0 -18
- package/dist/services/__tests__/cli-output.test.d.ts.map +0 -1
- package/dist/services/__tests__/cli-output.test.js +0 -103
- package/dist/services/__tests__/cli-output.test.js.map +0 -1
- package/dist/services/__tests__/evaluator-runner-deps.test.d.ts +0 -2
- package/dist/services/__tests__/evaluator-runner-deps.test.d.ts.map +0 -1
- package/dist/services/__tests__/evaluator-runner-deps.test.js +0 -343
- package/dist/services/__tests__/evaluator-runner-deps.test.js.map +0 -1
- package/dist/services/__tests__/rulehost-readiness.test.d.ts +0 -2
- package/dist/services/__tests__/rulehost-readiness.test.d.ts.map +0 -1
- package/dist/services/__tests__/rulehost-readiness.test.js +0 -311
- package/dist/services/__tests__/rulehost-readiness.test.js.map +0 -1
- package/dist/services/__tests__/runtime-adapter-resolver.test.d.ts +0 -18
- package/dist/services/__tests__/runtime-adapter-resolver.test.d.ts.map +0 -1
- package/dist/services/__tests__/runtime-adapter-resolver.test.js +0 -673
- package/dist/services/__tests__/runtime-adapter-resolver.test.js.map +0 -1
- package/dist/utils/production-workspace-guard.test.d.ts +0 -2
- package/dist/utils/production-workspace-guard.test.d.ts.map +0 -1
- package/dist/utils/production-workspace-guard.test.js +0 -137
- package/dist/utils/production-workspace-guard.test.js.map +0 -1
- package/scripts/llm-dogfood.ts +0 -456
- package/scripts/migrate-illegal-expected-decision.ts +0 -252
- package/src/commands/__tests__/intent-flag-wiring.test.ts +0 -282
- package/src/commands/__tests__/legacy-cleanup.test.ts +0 -602
- package/src/commands/__tests__/mvp-smoke.test.ts +0 -300
- package/src/commands/__tests__/pain-retry-maxTokens-flag.test.ts +0 -73
- package/src/commands/__tests__/rulecode-flag-wiring.test.ts +0 -237
- package/src/commands/__tests__/rulecode-handler.test.ts +0 -369
- package/src/commands/__tests__/run-rulehost-flag-wiring.test.ts +0 -292
- package/src/commands/__tests__/runtime-activation-nextaction.test.ts +0 -81
- package/src/commands/__tests__/runtime-probe-config.test.ts +0 -432
- package/src/commands/__tests__/telemetry-flag-wiring.test.ts +0 -84
- package/src/commands/__tests__/version.test.ts +0 -251
- package/src/commands/admission-gate.ts +0 -30
- package/src/commands/artifact.ts +0 -82
- package/src/commands/build-trajectory-evidence.ts +0 -298
- package/src/commands/candidate.ts +0 -1250
- package/src/commands/codex-ingest-catchup.ts +0 -114
- package/src/commands/codex-ingest-quarantine.ts +0 -127
- package/src/commands/codex-reconcile.ts +0 -84
- package/src/commands/codex-setup.ts +0 -476
- package/src/commands/codex-worker.ts +0 -185
- package/src/commands/command-helpers.ts +0 -24
- package/src/commands/config-doctor.ts +0 -193
- package/src/commands/console.ts +0 -797
- package/src/commands/context.ts +0 -72
- package/src/commands/demo-story-a.ts +0 -241
- package/src/commands/diagnose.ts +0 -756
- package/src/commands/errors-list.ts +0 -441
- package/src/commands/evolution-tasks-list.ts +0 -48
- package/src/commands/evolution-tasks-show.ts +0 -62
- package/src/commands/flow.ts +0 -60
- package/src/commands/health-codex.ts +0 -576
- package/src/commands/health.ts +0 -315
- package/src/commands/history.ts +0 -63
- package/src/commands/intent.ts +0 -457
- package/src/commands/legacy-cleanup.ts +0 -531
- package/src/commands/legacy-import.ts +0 -104
- package/src/commands/mvp-smoke.ts +0 -160
- package/src/commands/pain-evidence.ts +0 -226
- package/src/commands/pain-list.ts +0 -239
- package/src/commands/pain-record.ts +0 -612
- package/src/commands/pain-retry.ts +0 -916
- package/src/commands/principles-stats.ts +0 -700
- package/src/commands/proven-channel-baseline.ts +0 -115
- package/src/commands/quality-scorecard.ts +0 -272
- package/src/commands/remediation-output.ts +0 -66
- package/src/commands/rulecode.ts +0 -465
- package/src/commands/run.ts +0 -89
- package/src/commands/runtime-activation.ts +0 -1629
- package/src/commands/runtime-artifact-repair.ts +0 -524
- package/src/commands/runtime-canary.ts +0 -395
- package/src/commands/runtime-compatibility-scan.ts +0 -105
- package/src/commands/runtime-diagnostics-export.ts +0 -229
- package/src/commands/runtime-features.ts +0 -153
- package/src/commands/runtime-gfi-snapshot.ts +0 -135
- package/src/commands/runtime-health-snapshot.ts +0 -108
- package/src/commands/runtime-init.ts +0 -429
- package/src/commands/runtime-internalization-enqueue-successors.ts +0 -530
- package/src/commands/runtime-internalization-integrity-repair.ts +0 -79
- package/src/commands/runtime-internalization-integrity.ts +0 -107
- package/src/commands/runtime-internalization-queue.ts +0 -135
- package/src/commands/runtime-internalization-retry.ts +0 -191
- package/src/commands/runtime-internalization-run-once.ts +0 -791
- package/src/commands/runtime-internalization-run-rulehost.ts +0 -749
- package/src/commands/runtime-internalization-wake-once.ts +0 -87
- package/src/commands/runtime-pain-flood-simulation.ts +0 -121
- package/src/commands/runtime-pruning.ts +0 -438
- package/src/commands/runtime-recovery-failed-tasks.ts +0 -258
- package/src/commands/runtime-recovery.ts +0 -109
- package/src/commands/runtime-synthetic-baseline.ts +0 -70
- package/src/commands/runtime-uat.guard.test.ts +0 -175
- package/src/commands/runtime-uat.ts +0 -380
- package/src/commands/runtime.ts +0 -473
- package/src/commands/samples-list.ts +0 -39
- package/src/commands/samples-review.ts +0 -36
- package/src/commands/task.ts +0 -271
- package/src/commands/telemetry.ts +0 -349
- package/src/commands/trace.ts +0 -174
- package/src/commands/trajectory-db-unavailable.ts +0 -19
- package/src/commands/trajectory.ts +0 -64
- package/src/commands/version.ts +0 -49
- package/src/config-reader.ts +0 -122
- package/src/index.ts +0 -1276
- package/src/legacy/legacy-import.ts +0 -179
- package/src/legacy/session-history-import.ts +0 -203
- package/src/resolve-workspace.ts +0 -106
- package/src/services/__tests__/cli-output.test.ts +0 -130
- package/src/services/__tests__/evaluator-runner-deps.test.ts +0 -382
- package/src/services/__tests__/rulehost-readiness.test.ts +0 -363
- package/src/services/__tests__/runtime-adapter-resolver.test.ts +0 -793
- package/src/services/cli-output.ts +0 -95
- package/src/services/config-doctor.ts +0 -697
- package/src/services/console-launcher.ts +0 -537
- package/src/services/demo-rule-compiler.ts +0 -40
- package/src/services/demo-story-a-runner.ts +0 -471
- package/src/services/mainline-snapshot-assembler.ts +0 -579
- package/src/services/pain-flood-simulation-runner.ts +0 -462
- package/src/services/pd-config-loader.ts +0 -433
- package/src/services/proven-channel-baseline-runner.ts +0 -157
- package/src/services/quality-scorecard/data-extractor.ts +0 -150
- package/src/services/quality-scorecard/local-evaluator.ts +0 -142
- package/src/services/quality-scorecard/strong-model-gate.ts +0 -202
- package/src/services/resolve-runtime-from-pd-config.ts +0 -230
- package/src/services/rulehost-pipeline-runner.ts +0 -1214
- package/src/services/rulehost-readiness.ts +0 -326
- package/src/services/runtime-adapter-resolver.ts +0 -364
- package/src/services/synthetic-baseline-runner.ts +0 -400
- package/src/services/version-report.ts +0 -253
- package/src/services/workspace-tool-semantics.ts +0 -26
- package/src/utils/path-security.ts +0 -96
- package/src/utils/production-workspace-guard.test.ts +0 -157
- package/src/utils/production-workspace-guard.ts +0 -210
- package/tests/bdd/cli-contract.steps.ts +0 -346
- package/tests/bdd/principles-stats.steps.ts +0 -211
- package/tests/bdd/support/gherkin-loader.ts +0 -147
- package/tests/bdd/support/repo-root.ts +0 -62
- package/tests/bdd/support/vitest-bdd.ts +0 -179
- package/tests/commands/admission-gate-coverage.test.ts +0 -79
- package/tests/commands/build-trajectory-evidence.test.ts +0 -508
- package/tests/commands/candidate-audit-repair.test.ts +0 -421
- package/tests/commands/candidate-intake.test.ts +0 -732
- package/tests/commands/candidate-internalization-backfill.test.ts +0 -548
- package/tests/commands/candidate-internalize-lineage.test.ts +0 -628
- package/tests/commands/candidate-internalize.test.ts +0 -299
- package/tests/commands/candidate-route.test.ts +0 -329
- package/tests/commands/candidate-show.test.ts +0 -95
- package/tests/commands/cli-command-tree.test.ts +0 -144
- package/tests/commands/cli-help-snapshot.test.ts +0 -155
- package/tests/commands/cli-skill-contract.test.ts +0 -121
- package/tests/commands/codex-consent-reversibility.steps.test.ts +0 -299
- package/tests/commands/codex-ingest-quarantine.test.ts +0 -136
- package/tests/commands/codex-setup.test.ts +0 -297
- package/tests/commands/codex-worker-daemon.test.ts +0 -95
- package/tests/commands/codex-worker-registration.test.ts +0 -207
- package/tests/commands/config-doctor.test.ts +0 -336
- package/tests/commands/console-launcher-edge-cases.test.ts +0 -388
- package/tests/commands/console-open.test.ts +0 -1381
- package/tests/commands/context.test.ts +0 -114
- package/tests/commands/demo-story-a.test.ts +0 -318
- package/tests/commands/diagnose.test.ts +0 -1803
- package/tests/commands/errors-list.test.ts +0 -679
- package/tests/commands/evolution-tasks-list.test.ts +0 -41
- package/tests/commands/evolution-tasks-show.test.ts +0 -46
- package/tests/commands/health-codex.test.ts +0 -349
- package/tests/commands/health-host-wiring.test.ts +0 -76
- package/tests/commands/health-reliability.test.ts +0 -99
- package/tests/commands/health.test.ts +0 -413
- package/tests/commands/intent.test.ts +0 -321
- package/tests/commands/legacy-cleanup.test.ts +0 -148
- package/tests/commands/pain-evidence.test.ts +0 -518
- package/tests/commands/pain-list.test.ts +0 -219
- package/tests/commands/pain-record-async.test.ts +0 -335
- package/tests/commands/pain-record-session-parser.test.ts +0 -228
- package/tests/commands/pain-record.test.ts +0 -851
- package/tests/commands/pain-retry.test.ts +0 -1121
- package/tests/commands/plugin-config-resolution-cutover.test.ts +0 -229
- package/tests/commands/pri-393-runtime-config-unification.test.ts +0 -443
- package/tests/commands/principles-stats-wiring.test.ts +0 -135
- package/tests/commands/principles-stats.test.ts +0 -274
- package/tests/commands/product-path-regression.test.ts +0 -86
- package/tests/commands/proven-channel-baseline.test.ts +0 -441
- package/tests/commands/rulecode.test.ts +0 -177
- package/tests/commands/run-rulehost-handler.test.ts +0 -908
- package/tests/commands/runtime-activation-approve-flag-wiring.test.ts +0 -227
- package/tests/commands/runtime-activation-deactivate-flag-wiring.test.ts +0 -167
- package/tests/commands/runtime-activation-dispatch-flag-wiring.test.ts +0 -262
- package/tests/commands/runtime-activation-governance-audit.test.ts +0 -95
- package/tests/commands/runtime-activation-list-flag-wiring.test.ts +0 -193
- package/tests/commands/runtime-activation-promote-flag-wiring.test.ts +0 -248
- package/tests/commands/runtime-activation-shadow-telemetry.test.ts +0 -130
- package/tests/commands/runtime-activation.test.ts +0 -2052
- package/tests/commands/runtime-artifact-repair-registration.test.ts +0 -74
- package/tests/commands/runtime-artifact-repair.test.ts +0 -404
- package/tests/commands/runtime-canary.test.ts +0 -430
- package/tests/commands/runtime-compatibility-scan.test.ts +0 -146
- package/tests/commands/runtime-diagnostics-export.test.ts +0 -175
- package/tests/commands/runtime-features.test.ts +0 -249
- package/tests/commands/runtime-health-snapshot.test.ts +0 -358
- package/tests/commands/runtime-init-empty-workspace.test.ts +0 -252
- package/tests/commands/runtime-init.test.ts +0 -420
- package/tests/commands/runtime-internalization-enqueue-successors.test.ts +0 -782
- package/tests/commands/runtime-internalization-integrity-repair.test.ts +0 -239
- package/tests/commands/runtime-internalization-integrity.test.ts +0 -140
- package/tests/commands/runtime-internalization-queue.test.ts +0 -380
- package/tests/commands/runtime-internalization-retry-owner-authority.test.ts +0 -431
- package/tests/commands/runtime-internalization-run-once-evaluator-parity.test.ts +0 -269
- package/tests/commands/runtime-internalization-run-once-language.test.ts +0 -303
- package/tests/commands/runtime-internalization-run-once-real-config.test.ts +0 -237
- package/tests/commands/runtime-internalization-run-once-rollout-parity.test.ts +0 -706
- package/tests/commands/runtime-internalization-run-once.test.ts +0 -1791
- package/tests/commands/runtime-internalization-wake-once.test.ts +0 -171
- package/tests/commands/runtime-internalization.test.ts +0 -53
- package/tests/commands/runtime-pain-flood-simulation.test.ts +0 -418
- package/tests/commands/runtime-pruning.test.ts +0 -694
- package/tests/commands/runtime-recovery-failed-tasks.test.ts +0 -328
- package/tests/commands/runtime-recovery.test.ts +0 -120
- package/tests/commands/runtime-synthetic-baseline.test.ts +0 -249
- package/tests/commands/runtime-uat.test.ts +0 -397
- package/tests/commands/runtime.test.ts +0 -392
- package/tests/commands/samples-list.test.ts +0 -43
- package/tests/commands/samples-review.test.ts +0 -41
- package/tests/commands/task.test.ts +0 -153
- package/tests/commands/telemetry.test.ts +0 -190
- package/tests/commands/trace.test.ts +0 -316
- package/tests/config-reader.test.ts +0 -143
- package/tests/e2e/candidate-intake-e2e.test.ts +0 -338
- package/tests/e2e/cli-full-flow.test.ts +0 -233
- package/tests/e2e/cross-package-acceptance.test.ts +0 -635
- package/tests/helpers/pd-cli-path.ts +0 -5
- package/tests/pd-cli-smoke.test.ts +0 -13
- package/tests/resolve-workspace.test.ts +0 -196
- package/tests/services/config-doctor-signal-health.test.ts +0 -109
- package/tests/services/console-launcher.test.ts +0 -114
- package/tests/services/demo-rule-compiler.test.ts +0 -242
- package/tests/services/mainline-snapshot-assembler.test.ts +0 -572
- package/tests/services/pd-config-loader.test.ts +0 -505
- package/tests/services/proven-channel-baseline-runner.test.ts +0 -30
- package/tests/services/quality-scorecard/strong-model-gate.test.ts +0 -133
- package/tests/services/resolve-runtime-from-pd-config.test.ts +0 -485
- package/tests/services/rulehost-pipeline-e2e.test.ts +0 -538
- package/tests/services/rulehost-pipeline-runner.test.ts +0 -1242
- package/tests/services/workspace-tool-semantics.test.ts +0 -76
- package/tests/utils/path-security.test.ts +0 -180
- package/tsconfig.json +0 -26
- package/vitest.config.ts +0 -10
|
@@ -1,237 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* PRI-719 review — real-config composition tests (NO core module mock).
|
|
3
|
-
*
|
|
4
|
-
* The run-once unit suites mock `@principles/core/runtime-v2`, which cannot
|
|
5
|
-
* prove real default-config behavior. These tests drive the REAL resolver
|
|
6
|
-
* chain (resolveRuntimeFromPdConfig → resolveRuntimeConfigForAgent →
|
|
7
|
-
* resolveRuntimeAdapterFromConfig) against real workspaces built from
|
|
8
|
-
* `getDefaultPdConfig()`:
|
|
9
|
-
*
|
|
10
|
-
* Case 1 evaluator shipped disabled + explicit runtimeProfile → an
|
|
11
|
-
* explicit peer run-once resolves ITS profile (no
|
|
12
|
-
* "Agent 'evaluator' is disabled"), because peer execution scope
|
|
13
|
-
* is the internalization_full_chain flag — the same
|
|
14
|
-
* ignoreAgentEnabled semantics the auto-consumer uses.
|
|
15
|
-
* Case 2 rolloutReviewer shipped disabled — same resolution.
|
|
16
|
-
* Case 3 per-agent isolation: diagnostician→profile-A, evaluator→B;
|
|
17
|
-
* the run-once seam resolves profile-B.
|
|
18
|
-
* Case 4 the diagnostician bridge gate still HONORS enabled (no global
|
|
19
|
-
* bypass leaked from the peer option).
|
|
20
|
-
* B7 cross-entry equivalence: run-once path and auto-consumer path
|
|
21
|
-
* resolve IDENTICAL runtimeProfileId/provider/model for the same
|
|
22
|
-
* config (runtime binding must not drift across entry points).
|
|
23
|
-
*/
|
|
24
|
-
import { describe, expect, it } from 'vitest';
|
|
25
|
-
import fs from 'node:fs';
|
|
26
|
-
import os from 'node:os';
|
|
27
|
-
import path from 'node:path';
|
|
28
|
-
import {
|
|
29
|
-
computeEffectivePdConfig,
|
|
30
|
-
getDefaultPdConfig,
|
|
31
|
-
resolveRuntimeConfigForAgent,
|
|
32
|
-
AGENT_NAME_FOR_TASK_KIND,
|
|
33
|
-
type RuntimeConfigError,
|
|
34
|
-
} from '@principles/core/runtime-v2';
|
|
35
|
-
import { resolveRuntimeFromPdConfig } from '../../src/services/resolve-runtime-from-pd-config.js';
|
|
36
|
-
import { resolveRuntimeAdapterFromConfig } from '../../src/services/runtime-adapter-resolver.js';
|
|
37
|
-
|
|
38
|
-
const dirs: string[] = [];
|
|
39
|
-
|
|
40
|
-
function makeWorkspace(): string {
|
|
41
|
-
const root = fs.mkdtempSync(path.join(os.tmpdir(), 'pd-runonce-profile-'));
|
|
42
|
-
dirs.push(root);
|
|
43
|
-
fs.mkdirSync(path.join(root, '.pd'), { recursive: true });
|
|
44
|
-
return root;
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
function writeProfileConfig(root: string, agents: Record<string, string>): void {
|
|
48
|
-
const config = getDefaultPdConfig();
|
|
49
|
-
(config.runtimeProfiles as Record<string, unknown>) = {
|
|
50
|
-
...(config.runtimeProfiles as Record<string, unknown>),
|
|
51
|
-
'profile-diagnostician': {
|
|
52
|
-
type: 'pi-ai', provider: 'prov-diag', model: 'diag-model', apiKeyEnv: 'DIAG_KEY',
|
|
53
|
-
baseUrl: 'http://127.0.0.1:9001/v1',
|
|
54
|
-
},
|
|
55
|
-
'profile-evaluator': {
|
|
56
|
-
type: 'pi-ai', provider: 'prov-evaluator', model: 'evaluator-model', apiKeyEnv: 'EVAL_KEY',
|
|
57
|
-
baseUrl: 'http://127.0.0.1:9002/v1',
|
|
58
|
-
},
|
|
59
|
-
'profile-rollout': {
|
|
60
|
-
type: 'pi-ai', provider: 'prov-rollout', model: 'rollout-model', apiKeyEnv: 'ROLLOUT_KEY',
|
|
61
|
-
baseUrl: 'http://127.0.0.1:9003/v1',
|
|
62
|
-
},
|
|
63
|
-
};
|
|
64
|
-
const agentBindings = config.internalAgents.agents as Record<string, { enabled: boolean; runtimeProfile?: string }>;
|
|
65
|
-
// The shipped default config pins every agent's runtimeProfile — replace
|
|
66
|
-
// the DECLARED profiles per the scenario; enabled flags stay at their
|
|
67
|
-
// shipped values (evaluator/rolloutReviewer/philosopher = false).
|
|
68
|
-
for (const [agent, profileId] of Object.entries(agents)) {
|
|
69
|
-
agentBindings[agent] = { ...agentBindings[agent], runtimeProfile: profileId };
|
|
70
|
-
}
|
|
71
|
-
// JSON is valid YAML — same trick the sibling composition tests use.
|
|
72
|
-
fs.writeFileSync(path.join(root, '.pd', 'config.yaml'), JSON.stringify(config));
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
function readAdapterConfig(adapter: unknown): { provider?: string; model?: string } {
|
|
76
|
-
return (adapter as unknown as { config: { provider?: string; model?: string } }).config;
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
function isErr(result: unknown): RuntimeConfigError {
|
|
80
|
-
return result as RuntimeConfigError;
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
describe('PRI-719 review — explicit run-once resolves shipped-disabled peer agents on their own profile (real config)', () => {
|
|
84
|
-
it('Case 1: evaluator enabled=false (default) + declared profile → run-once seam resolves profile-evaluator', () => {
|
|
85
|
-
const ws = makeWorkspace();
|
|
86
|
-
writeProfileConfig(ws, { evaluator: 'profile-evaluator' });
|
|
87
|
-
process.env.EVAL_KEY = 'test-key';
|
|
88
|
-
|
|
89
|
-
try {
|
|
90
|
-
const resolved = resolveRuntimeFromPdConfig(ws, {
|
|
91
|
-
agentName: 'evaluator',
|
|
92
|
-
ignoreAgentEnabled: true,
|
|
93
|
-
});
|
|
94
|
-
expect(resolved.result).not.toHaveProperty('ok');
|
|
95
|
-
if (resolved.result.ok === false) return;
|
|
96
|
-
expect(resolved.result.runtimeKind).toBe('pi-ai');
|
|
97
|
-
expect(resolved.result.provider).toBe('prov-evaluator');
|
|
98
|
-
expect(resolved.result.model).toBe('evaluator-model');
|
|
99
|
-
expect(resolved.result.runtimeProfileId).toBe('profile-evaluator');
|
|
100
|
-
|
|
101
|
-
// The run-once ADAPTER seam resolves the same profile into the adapter.
|
|
102
|
-
const adapter = resolveRuntimeAdapterFromConfig({
|
|
103
|
-
runtimeKind: 'config',
|
|
104
|
-
workspaceDir: ws,
|
|
105
|
-
runnerKind: 'evaluator',
|
|
106
|
-
agentName: 'evaluator',
|
|
107
|
-
ignoreAgentEnabled: true,
|
|
108
|
-
});
|
|
109
|
-
// The real (unmocked) adapter has no `__type` marker — assert via kind().
|
|
110
|
-
expect(adapter.kind()).toBe('pi-ai');
|
|
111
|
-
expect(readAdapterConfig(adapter)).toMatchObject({
|
|
112
|
-
provider: 'prov-evaluator', model: 'evaluator-model',
|
|
113
|
-
});
|
|
114
|
-
} finally {
|
|
115
|
-
delete process.env.EVAL_KEY;
|
|
116
|
-
}
|
|
117
|
-
});
|
|
118
|
-
|
|
119
|
-
it('Case 2: rolloutReviewer enabled=false (default) → run-once seam resolves profile-rollout', () => {
|
|
120
|
-
const ws = makeWorkspace();
|
|
121
|
-
writeProfileConfig(ws, { rolloutReviewer: 'profile-rollout' });
|
|
122
|
-
process.env.ROLLOUT_KEY = 'test-key';
|
|
123
|
-
|
|
124
|
-
try {
|
|
125
|
-
// Through the canonical taskKind→agent map, as run-once does.
|
|
126
|
-
const agentName = AGENT_NAME_FOR_TASK_KIND['rollout_reviewer'];
|
|
127
|
-
expect(agentName).toBe('rolloutReviewer');
|
|
128
|
-
const resolved = resolveRuntimeFromPdConfig(ws, { agentName, ignoreAgentEnabled: true });
|
|
129
|
-
if (resolved.result.ok === false) throw new Error(resolved.result.message);
|
|
130
|
-
expect(resolved.result.provider).toBe('prov-rollout');
|
|
131
|
-
expect(resolved.result.runtimeProfileId).toBe('profile-rollout');
|
|
132
|
-
} finally {
|
|
133
|
-
delete process.env.ROLLOUT_KEY;
|
|
134
|
-
}
|
|
135
|
-
});
|
|
136
|
-
|
|
137
|
-
it('Case 3: per-agent isolation — evaluator resolves ITS profile, not the diagnostician one', () => {
|
|
138
|
-
const ws = makeWorkspace();
|
|
139
|
-
writeProfileConfig(ws, { diagnostician: 'profile-diagnostician', evaluator: 'profile-evaluator' });
|
|
140
|
-
process.env.DIAG_KEY = 'test-key';
|
|
141
|
-
process.env.EVAL_KEY = 'test-key';
|
|
142
|
-
|
|
143
|
-
try {
|
|
144
|
-
const adapter = resolveRuntimeAdapterFromConfig({
|
|
145
|
-
runtimeKind: 'config',
|
|
146
|
-
workspaceDir: ws,
|
|
147
|
-
runnerKind: 'evaluator',
|
|
148
|
-
agentName: 'evaluator',
|
|
149
|
-
ignoreAgentEnabled: true,
|
|
150
|
-
});
|
|
151
|
-
expect(readAdapterConfig(adapter)).toMatchObject({
|
|
152
|
-
provider: 'prov-evaluator', model: 'evaluator-model',
|
|
153
|
-
});
|
|
154
|
-
} finally {
|
|
155
|
-
delete process.env.DIAG_KEY;
|
|
156
|
-
delete process.env.EVAL_KEY;
|
|
157
|
-
}
|
|
158
|
-
});
|
|
159
|
-
|
|
160
|
-
it('negative control: without ignoreAgentEnabled the shipped-disabled evaluator still refuses', () => {
|
|
161
|
-
const ws = makeWorkspace();
|
|
162
|
-
writeProfileConfig(ws, { evaluator: 'profile-evaluator' });
|
|
163
|
-
process.env.EVAL_KEY = 'test-key';
|
|
164
|
-
|
|
165
|
-
try {
|
|
166
|
-
// Pins that the option (not something else) lifts the gate: the same
|
|
167
|
-
// call without it honors enabled and refuses.
|
|
168
|
-
expect(() => resolveRuntimeAdapterFromConfig({
|
|
169
|
-
runtimeKind: 'config',
|
|
170
|
-
workspaceDir: ws,
|
|
171
|
-
runnerKind: 'evaluator',
|
|
172
|
-
agentName: 'evaluator',
|
|
173
|
-
})).toThrow(/disabled/);
|
|
174
|
-
} finally {
|
|
175
|
-
delete process.env.EVAL_KEY;
|
|
176
|
-
}
|
|
177
|
-
});
|
|
178
|
-
|
|
179
|
-
it('Case 4: diagnostician bridge gate still HONORS enabled (no global bypass)', () => {
|
|
180
|
-
const ws = makeWorkspace();
|
|
181
|
-
writeProfileConfig(ws, { diagnostician: 'profile-diagnostician' });
|
|
182
|
-
process.env.DIAG_KEY = 'test-key';
|
|
183
|
-
|
|
184
|
-
try {
|
|
185
|
-
const config = JSON.parse(fs.readFileSync(path.join(ws, '.pd', 'config.yaml'), 'utf8'));
|
|
186
|
-
config.internalAgents.agents.diagnostician.enabled = false;
|
|
187
|
-
fs.writeFileSync(path.join(ws, '.pd', 'config.yaml'), JSON.stringify(config));
|
|
188
|
-
|
|
189
|
-
// Canonical diagnostician resolution (the pain-signal bridge path)
|
|
190
|
-
// keeps failing closed with readiness=disabled.
|
|
191
|
-
const viaWrapper = resolveRuntimeFromPdConfig(ws);
|
|
192
|
-
expect(viaWrapper.result).toHaveProperty('ok', false);
|
|
193
|
-
expect(isErr(viaWrapper.result).reason).toBe('disabled');
|
|
194
|
-
|
|
195
|
-
const viaCore = resolveRuntimeConfigForAgent(
|
|
196
|
-
computeEffectivePdConfig(config),
|
|
197
|
-
'diagnostician',
|
|
198
|
-
{ getEnvVar: (name) => process.env[name] },
|
|
199
|
-
);
|
|
200
|
-
expect(viaCore).toHaveProperty('ok', false);
|
|
201
|
-
expect(isErr(viaCore).reason).toBe('disabled');
|
|
202
|
-
} finally {
|
|
203
|
-
delete process.env.DIAG_KEY;
|
|
204
|
-
}
|
|
205
|
-
});
|
|
206
|
-
|
|
207
|
-
it('B7 cross-entry equivalence: run-once path and auto-consumer path resolve the SAME binding', () => {
|
|
208
|
-
const ws = makeWorkspace();
|
|
209
|
-
writeProfileConfig(ws, { diagnostician: 'profile-diagnostician', evaluator: 'profile-evaluator' });
|
|
210
|
-
process.env.EVAL_KEY = 'test-key';
|
|
211
|
-
|
|
212
|
-
try {
|
|
213
|
-
// Auto-consumer path: per-kind resolution with peer scope semantics.
|
|
214
|
-
const consumerResult = resolveRuntimeConfigForAgent(
|
|
215
|
-
computeEffectivePdConfig(JSON.parse(fs.readFileSync(path.join(ws, '.pd', 'config.yaml'), 'utf8'))),
|
|
216
|
-
'evaluator',
|
|
217
|
-
{ getEnvVar: (name) => process.env[name], ignoreAgentEnabled: true },
|
|
218
|
-
);
|
|
219
|
-
|
|
220
|
-
// Explicit run-once path: resolveRuntimeFromPdConfig with the same
|
|
221
|
-
// agent + scope semantics (exactly what run-once's two resolution
|
|
222
|
-
// points use).
|
|
223
|
-
const runOnceResult = resolveRuntimeFromPdConfig(ws, {
|
|
224
|
-
agentName: 'evaluator',
|
|
225
|
-
ignoreAgentEnabled: true,
|
|
226
|
-
}).result;
|
|
227
|
-
|
|
228
|
-
expect(runOnceResult).toEqual(consumerResult);
|
|
229
|
-
if (runOnceResult.ok === false || consumerResult.ok === false) return;
|
|
230
|
-
expect(runOnceResult.runtimeProfileId).toBe('profile-evaluator');
|
|
231
|
-
expect(runOnceResult.provider).toBe('prov-evaluator');
|
|
232
|
-
expect(runOnceResult.model).toBe('evaluator-model');
|
|
233
|
-
} finally {
|
|
234
|
-
delete process.env.EVAL_KEY;
|
|
235
|
-
}
|
|
236
|
-
});
|
|
237
|
-
});
|