@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,230 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Unified runtime config resolver from .pd/config.yaml — PRI-393
|
|
3
|
-
*
|
|
4
|
-
* All MVP mainline execution paths (probe, run-once, diagnose, pain-retry)
|
|
5
|
-
* MUST use this helper instead of the legacy resolveRuntimeConfig(stateDir)
|
|
6
|
-
* which reads .state/workflows.yaml.
|
|
7
|
-
*
|
|
8
|
-
* Canonical source: .pd/config.yaml via loadPdConfig → resolveRuntimeConfigFromPdConfig.
|
|
9
|
-
* .state/workflows.yaml is reported as a legacy warning only.
|
|
10
|
-
*
|
|
11
|
-
* ERR refs:
|
|
12
|
-
* - ERR-002: fail loud with reason + nextAction
|
|
13
|
-
* - EP-07: runtime state source alignment
|
|
14
|
-
*/
|
|
15
|
-
|
|
16
|
-
import {
|
|
17
|
-
resolveRuntimeConfigForAgent,
|
|
18
|
-
isRuntimeConfigError,
|
|
19
|
-
resolveAgentRuntimeBinding,
|
|
20
|
-
} from '@principles/core/runtime-v2';
|
|
21
|
-
import type {
|
|
22
|
-
RuntimeConfigResult,
|
|
23
|
-
RuntimeConfig,
|
|
24
|
-
RuntimeConfigError,
|
|
25
|
-
} from '@principles/core/runtime-v2';
|
|
26
|
-
import type { InternalAgentName } from '@principles/core/runtime-v2';
|
|
27
|
-
import { loadPdConfig } from './pd-config-loader.js';
|
|
28
|
-
import type { PdConfigLoadResult } from './pd-config-loader.js';
|
|
29
|
-
|
|
30
|
-
export interface ResolvedRuntimeFromPdConfig {
|
|
31
|
-
/** The resolved runtime config (or error). */
|
|
32
|
-
result: RuntimeConfigResult;
|
|
33
|
-
/** Legacy files detected (.state/workflows.yaml etc.) — informational only. */
|
|
34
|
-
legacyWarnings: string[];
|
|
35
|
-
/** The PD config load result for downstream use (feature flags, etc.). */
|
|
36
|
-
configLoadResult: PdConfigLoadResult;
|
|
37
|
-
/** Canonical config source label, e.g. ".pd/config.yaml". */
|
|
38
|
-
configSource: string;
|
|
39
|
-
/**
|
|
40
|
-
* PRI-402: Resolved runtime profile ID for the diagnostician agent.
|
|
41
|
-
* e.g. "pi-ai.lmstudio". null when config resolution fails or profile is not found.
|
|
42
|
-
*/
|
|
43
|
-
runtimeProfileId: string | null;
|
|
44
|
-
/**
|
|
45
|
-
* PRI-402: Human-readable runtime profile label for the diagnostician agent.
|
|
46
|
-
* e.g. "pi-ai: lmstudio/qwen3.6-27b-mtp". null when config resolution fails.
|
|
47
|
-
* Matches the label format used by `pd config doctor`.
|
|
48
|
-
*/
|
|
49
|
-
runtimeProfileLabel: string | null;
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
/**
|
|
53
|
-
* Build a profile label matching the format used by `pd config doctor`.
|
|
54
|
-
* Mirrors `buildProfileLabel` in `pd-config-redaction.ts` (core).
|
|
55
|
-
*/
|
|
56
|
-
function buildProfileLabel(profileId: string, profile: { type: string; provider?: string; model?: string; source?: string }): string {
|
|
57
|
-
if (profile.type === 'openclaw') {
|
|
58
|
-
const parts: string[] = ['openclaw'];
|
|
59
|
-
if (profile.provider) parts.push(profile.provider);
|
|
60
|
-
if (profile.model) parts.push(profile.model);
|
|
61
|
-
if (profile.source && !profile.provider && !profile.model) parts.push(profile.source);
|
|
62
|
-
return parts.join(': ');
|
|
63
|
-
}
|
|
64
|
-
// pi-ai
|
|
65
|
-
return `pi-ai: ${profile.provider ?? 'unknown'}/${profile.model ?? 'unknown'}`;
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
/**
|
|
69
|
-
* PRI-719: per-call resolution options for resolveRuntimeFromPdConfig.
|
|
70
|
-
*/
|
|
71
|
-
export interface ResolveRuntimeFromPdConfigOptions {
|
|
72
|
-
/** Env var accessor, defaults to process.env. */
|
|
73
|
-
readonly getEnvVar?: (name: string) => string | undefined;
|
|
74
|
-
/**
|
|
75
|
-
* Whose `internalAgents.agents[agent]` .runtimeProfile binding resolves
|
|
76
|
-
* (default 'diagnostician' — the pain-signal bridge path). run-once passes
|
|
77
|
-
* the selected runner's agent so each stage executes on ITS declared
|
|
78
|
-
* profile (EP002-R2 F4).
|
|
79
|
-
*/
|
|
80
|
-
readonly agentName?: InternalAgentName;
|
|
81
|
-
/**
|
|
82
|
-
* PRI-719 review: resolve the binding even when the agent is disabled.
|
|
83
|
-
* Peer execution scope (auto-consumer AND explicit run-once) is governed
|
|
84
|
-
* by the internalization_full_chain FLAG, not by
|
|
85
|
-
* internalAgents.agents[kind].enabled — the shipped default config
|
|
86
|
-
* disables philosopher/evaluator/rolloutReviewer yet the full chain runs
|
|
87
|
-
* them. `enabled` keeps gating the diagnostician bridge (callers that
|
|
88
|
-
* omit this option honor it, PRI-638 semantics unchanged).
|
|
89
|
-
*/
|
|
90
|
-
readonly ignoreAgentEnabled?: boolean;
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
/**
|
|
94
|
-
* Resolve runtime configuration exclusively from .pd/config.yaml.
|
|
95
|
-
*
|
|
96
|
-
* This is the ONLY production entry point for runtime config resolution
|
|
97
|
-
* in pd-cli commands. Legacy resolveRuntimeConfig(stateDir) must NOT be
|
|
98
|
-
* called by probe/run-once/diagnose/pain-retry.
|
|
99
|
-
*
|
|
100
|
-
* @param workspaceDir - The resolved workspace directory.
|
|
101
|
-
* @param options - Per-call resolution options (defaults = diagnostician
|
|
102
|
-
* binding, honor enabled, process.env).
|
|
103
|
-
* @returns Resolved runtime config with legacy warnings.
|
|
104
|
-
*/
|
|
105
|
-
export function resolveRuntimeFromPdConfig(
|
|
106
|
-
workspaceDir: string,
|
|
107
|
-
options: ResolveRuntimeFromPdConfigOptions = {},
|
|
108
|
-
): ResolvedRuntimeFromPdConfig {
|
|
109
|
-
const { getEnvVar = (name) => process.env[name], agentName = 'diagnostician', ignoreAgentEnabled = false } = options;
|
|
110
|
-
const configLoadResult = loadPdConfig(workspaceDir);
|
|
111
|
-
|
|
112
|
-
// Malformed config → fail loud. Do NOT fall back to defaults for execution.
|
|
113
|
-
// Missing config is ok (loadPdConfig returns ok:true with defaults), but
|
|
114
|
-
// ok:false always means the file exists and is broken.
|
|
115
|
-
if (!configLoadResult.ok) {
|
|
116
|
-
const [firstError] = configLoadResult.errors;
|
|
117
|
-
const result: RuntimeConfigError = {
|
|
118
|
-
ok: false,
|
|
119
|
-
reason: `config_malformed:${firstError?.reason ?? 'unknown'}`,
|
|
120
|
-
message: firstError?.reason ?? '.pd/config.yaml is malformed',
|
|
121
|
-
nextAction: firstError?.nextAction ?? 'Fix .pd/config.yaml syntax and retry',
|
|
122
|
-
};
|
|
123
|
-
|
|
124
|
-
const legacyWarnings = configLoadResult.legacyFilesDetected.length > 0
|
|
125
|
-
? [
|
|
126
|
-
`Legacy config files detected: ${configLoadResult.legacyFilesDetected.join(', ')}. ` +
|
|
127
|
-
`These are NOT used for runtime resolution. PD uses .pd/config.yaml exclusively.`,
|
|
128
|
-
]
|
|
129
|
-
: [];
|
|
130
|
-
|
|
131
|
-
return {
|
|
132
|
-
result,
|
|
133
|
-
legacyWarnings,
|
|
134
|
-
configLoadResult,
|
|
135
|
-
configSource: '.pd/config.yaml',
|
|
136
|
-
runtimeProfileId: null,
|
|
137
|
-
runtimeProfileLabel: null,
|
|
138
|
-
};
|
|
139
|
-
}
|
|
140
|
-
|
|
141
|
-
const result = resolveRuntimeConfigForAgent(configLoadResult.effective, agentName, { getEnvVar, ignoreAgentEnabled });
|
|
142
|
-
|
|
143
|
-
// PRI-402: Extract profile ID and label for probe output alignment with doctor
|
|
144
|
-
let runtimeProfileId: string | null = null;
|
|
145
|
-
let runtimeProfileLabel: string | null = null;
|
|
146
|
-
const bindingResult = resolveAgentRuntimeBinding(configLoadResult.effective, agentName);
|
|
147
|
-
if (bindingResult.ok) {
|
|
148
|
-
runtimeProfileId = bindingResult.profileId;
|
|
149
|
-
runtimeProfileLabel = buildProfileLabel(bindingResult.profileId, bindingResult.profile);
|
|
150
|
-
} else if (!isRuntimeConfigError(result) && result.runtimeProfileId !== undefined) {
|
|
151
|
-
// PRI-719 review: on the peer path (ignoreAgentEnabled) the runtime may
|
|
152
|
-
// resolve fine for a shipped-disabled agent while the raw binding still
|
|
153
|
-
// reports disabled — derive the label from the resolved profile identity.
|
|
154
|
-
const { runtimeProfileId: resolvedProfileId } = result;
|
|
155
|
-
const profile = configLoadResult.effective.config.runtimeProfiles[resolvedProfileId];
|
|
156
|
-
if (resolvedProfileId !== undefined && profile) {
|
|
157
|
-
runtimeProfileId = resolvedProfileId;
|
|
158
|
-
runtimeProfileLabel = buildProfileLabel(resolvedProfileId, profile);
|
|
159
|
-
}
|
|
160
|
-
}
|
|
161
|
-
|
|
162
|
-
const legacyWarnings = configLoadResult.legacyFilesDetected.length > 0
|
|
163
|
-
? [
|
|
164
|
-
`Legacy config files detected: ${configLoadResult.legacyFilesDetected.join(', ')}. ` +
|
|
165
|
-
`These are NOT used for runtime resolution. PD uses .pd/config.yaml exclusively.`,
|
|
166
|
-
]
|
|
167
|
-
: [];
|
|
168
|
-
|
|
169
|
-
return {
|
|
170
|
-
result,
|
|
171
|
-
legacyWarnings,
|
|
172
|
-
configLoadResult,
|
|
173
|
-
configSource: '.pd/config.yaml',
|
|
174
|
-
runtimeProfileId,
|
|
175
|
-
runtimeProfileLabel,
|
|
176
|
-
};
|
|
177
|
-
}
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
/**
|
|
181
|
-
* Resolve runtime config from .pd/config.yaml, then merge with CLI flag overrides.
|
|
182
|
-
*
|
|
183
|
-
* CLI flags take priority over config values (same semantics as before PRI-393,
|
|
184
|
-
* but reading from .pd/config.yaml instead of .state/workflows.yaml).
|
|
185
|
-
*
|
|
186
|
-
* @param workspaceDir - The resolved workspace directory.
|
|
187
|
-
* @param overrides - CLI flag overrides (provider, model, apiKeyEnv, etc.).
|
|
188
|
-
* @param getEnvVar - Env var accessor.
|
|
189
|
-
*/
|
|
190
|
-
export function resolveRuntimeWithOverrides(
|
|
191
|
-
workspaceDir: string,
|
|
192
|
-
overrides: {
|
|
193
|
-
provider?: string;
|
|
194
|
-
model?: string;
|
|
195
|
-
apiKeyEnv?: string;
|
|
196
|
-
baseUrl?: string;
|
|
197
|
-
maxRetries?: number;
|
|
198
|
-
timeoutMs?: number;
|
|
199
|
-
},
|
|
200
|
-
getEnvVar: (name: string) => string | undefined = (name) => process.env[name],
|
|
201
|
-
): ResolvedRuntimeFromPdConfig & { mergedConfig: RuntimeConfig | null } {
|
|
202
|
-
const base = resolveRuntimeFromPdConfig(workspaceDir, { getEnvVar });
|
|
203
|
-
|
|
204
|
-
if (isRuntimeConfigError(base.result)) {
|
|
205
|
-
return { ...base, mergedConfig: null };
|
|
206
|
-
}
|
|
207
|
-
|
|
208
|
-
const config = base.result;
|
|
209
|
-
// CLI flags override config values
|
|
210
|
-
// Use ?? (not ||) so empty-string overrides are preserved until the guard below
|
|
211
|
-
const merged: RuntimeConfig = {
|
|
212
|
-
...config,
|
|
213
|
-
provider: overrides.provider ?? config.provider,
|
|
214
|
-
model: overrides.model ?? config.model,
|
|
215
|
-
apiKeyEnv: overrides.apiKeyEnv ?? config.apiKeyEnv,
|
|
216
|
-
baseUrl: overrides.baseUrl ?? config.baseUrl,
|
|
217
|
-
maxRetries: overrides.maxRetries ?? config.maxRetries,
|
|
218
|
-
timeoutMs: overrides.timeoutMs ?? config.timeoutMs,
|
|
219
|
-
};
|
|
220
|
-
|
|
221
|
-
// Guard: empty-string provider/model/apiKeyEnv/baseUrl after merge means the user
|
|
222
|
-
// explicitly passed '' or the config has a blank value. Normalise to
|
|
223
|
-
// undefined so downstream validation (handlePiAiProbe) can catch it.
|
|
224
|
-
if (!merged.provider) merged.provider = undefined;
|
|
225
|
-
if (!merged.model) merged.model = undefined;
|
|
226
|
-
if (!merged.apiKeyEnv) merged.apiKeyEnv = undefined;
|
|
227
|
-
if (!merged.baseUrl) merged.baseUrl = undefined;
|
|
228
|
-
|
|
229
|
-
return { ...base, mergedConfig: merged };
|
|
230
|
-
}
|