@principles/pd-cli 1.152.12 → 1.152.14
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/commands/candidate.d.ts.map +1 -1
- package/dist/commands/candidate.js +34 -7
- package/dist/commands/candidate.js.map +1 -1
- package/dist/commands/diagnose.d.ts.map +1 -1
- package/dist/commands/diagnose.js +23 -7
- package/dist/commands/diagnose.js.map +1 -1
- package/dist/commands/pain-retry.d.ts.map +1 -1
- package/dist/commands/pain-retry.js +21 -7
- package/dist/commands/pain-retry.js.map +1 -1
- 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
package/src/commands/trace.ts
DELETED
|
@@ -1,174 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* pd runtime trace show command — full pain-to-ledger chain trace.
|
|
3
|
-
*
|
|
4
|
-
* Usage: pd runtime trace show --pain-id <id> [--workspace <path>] [--json]
|
|
5
|
-
*
|
|
6
|
-
* Traces the complete pain→task→run→artifact→candidate→ledger chain
|
|
7
|
-
* and reports consistency, latency, and failure classification.
|
|
8
|
-
*
|
|
9
|
-
* PRI-129: Migrated from direct store/ledger usage
|
|
10
|
-
* to PainChainReadModel (ADR-0001 boundary compliance).
|
|
11
|
-
*/
|
|
12
|
-
|
|
13
|
-
import * as path from 'path';
|
|
14
|
-
import { resolveWorkspaceDir } from '../resolve-workspace.js';
|
|
15
|
-
import { PainChainReadModel } from '@principles/core/runtime-v2';
|
|
16
|
-
import type { PainChainTrace, PainChainTraceLatencyMs } from '@principles/core/runtime-v2';
|
|
17
|
-
|
|
18
|
-
interface TraceResult {
|
|
19
|
-
painId: string;
|
|
20
|
-
taskId: string;
|
|
21
|
-
runId?: string;
|
|
22
|
-
artifactId?: string;
|
|
23
|
-
candidateIds: string[];
|
|
24
|
-
ledgerEntryIds: string[];
|
|
25
|
-
status: string;
|
|
26
|
-
latencyMs: PainChainTraceLatencyMs;
|
|
27
|
-
failureCategory: string | null;
|
|
28
|
-
checkedAt: string;
|
|
29
|
-
missingLinks: string[];
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
interface TraceOptions {
|
|
33
|
-
painId: string;
|
|
34
|
-
workspace?: string;
|
|
35
|
-
json?: boolean;
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
function formatNoTaskResult(opts: TraceOptions, workspaceDir: string, checkedAt: string) {
|
|
39
|
-
const taskId = `diagnosis_${opts.painId}`;
|
|
40
|
-
return {
|
|
41
|
-
painId: opts.painId,
|
|
42
|
-
taskId,
|
|
43
|
-
status: 'not_found' as const,
|
|
44
|
-
failureCategory: 'runtime_unavailable' as const,
|
|
45
|
-
message: `No task found for painId: ${opts.painId}`,
|
|
46
|
-
workspace: workspaceDir,
|
|
47
|
-
checkedAt,
|
|
48
|
-
missingLinks: ['task' as const],
|
|
49
|
-
};
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
function outputResult(result: TraceResult, opts: TraceOptions): void {
|
|
53
|
-
if (opts.json) {
|
|
54
|
-
console.log(JSON.stringify(result, null, 2));
|
|
55
|
-
return;
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
console.log(`Pain ID: ${result.painId}`);
|
|
59
|
-
console.log(`Task ID: ${result.taskId}`);
|
|
60
|
-
console.log(`Status: ${result.status}`);
|
|
61
|
-
if (result.runId) console.log(`Run ID: ${result.runId}`);
|
|
62
|
-
if (result.artifactId) console.log(`Artifact ID: ${result.artifactId}`);
|
|
63
|
-
if (result.candidateIds.length > 0) console.log(`Candidate IDs: ${result.candidateIds.join(', ')}`);
|
|
64
|
-
if (result.ledgerEntryIds.length > 0) console.log(`Ledger Entries: ${result.ledgerEntryIds.join(', ')}`);
|
|
65
|
-
if (result.failureCategory) console.log(`Failure: ${result.failureCategory}`);
|
|
66
|
-
console.log(`Checked at: ${result.checkedAt}`);
|
|
67
|
-
|
|
68
|
-
if (Object.keys(result.latencyMs).length > 0) {
|
|
69
|
-
console.log('\nLatency:');
|
|
70
|
-
if (result.latencyMs.painToTask) console.log(` pain→task: ${result.latencyMs.painToTask}ms`);
|
|
71
|
-
if (result.latencyMs.taskToRun) console.log(` task→run: ${result.latencyMs.taskToRun}ms`);
|
|
72
|
-
if (result.latencyMs.runToArtifact) console.log(` run→artifact: ${result.latencyMs.runToArtifact}ms`);
|
|
73
|
-
if (result.latencyMs.artifactToCandidate) console.log(` artifact→candidate: ${result.latencyMs.artifactToCandidate}ms`);
|
|
74
|
-
if (result.latencyMs.candidateToLedger) console.log(` candidate→ledger: ${result.latencyMs.candidateToLedger}ms`);
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
if (result.missingLinks.length > 0) {
|
|
78
|
-
console.log(`\nMissing links (${result.missingLinks.length}):`);
|
|
79
|
-
for (const link of result.missingLinks) {
|
|
80
|
-
console.log(` - ${link}`);
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
export async function handleTraceShow(opts: TraceOptions): Promise<void> {
|
|
86
|
-
if (!opts.painId) {
|
|
87
|
-
console.error('Error: --pain-id <id> is required');
|
|
88
|
-
process.exitCode = 1;
|
|
89
|
-
return;
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
const workspaceDir = opts.workspace
|
|
93
|
-
? path.resolve(opts.workspace)
|
|
94
|
-
: resolveWorkspaceDir();
|
|
95
|
-
|
|
96
|
-
const readModel = new PainChainReadModel({ workspaceDir });
|
|
97
|
-
|
|
98
|
-
try {
|
|
99
|
-
const trace: PainChainTrace = await readModel.traceByPainId(opts.painId);
|
|
100
|
-
|
|
101
|
-
if (trace.status === 'not_found') {
|
|
102
|
-
const noTaskResult = formatNoTaskResult(opts, workspaceDir, trace.checkedAt);
|
|
103
|
-
if (opts.json) {
|
|
104
|
-
console.log(JSON.stringify(noTaskResult, null, 2));
|
|
105
|
-
} else {
|
|
106
|
-
console.error(`Error: No task found for painId: ${opts.painId}`);
|
|
107
|
-
console.error(` Derived taskId: ${noTaskResult.taskId}`);
|
|
108
|
-
console.error(` Workspace: ${workspaceDir}`);
|
|
109
|
-
}
|
|
110
|
-
process.exitCode = 1;
|
|
111
|
-
return;
|
|
112
|
-
}
|
|
113
|
-
|
|
114
|
-
if (trace.status === 'error') {
|
|
115
|
-
const isConfigError = trace.failureCategory === 'config_missing';
|
|
116
|
-
if (opts.json) {
|
|
117
|
-
console.log(JSON.stringify({
|
|
118
|
-
painId: trace.painId,
|
|
119
|
-
taskId: trace.taskId,
|
|
120
|
-
status: 'error',
|
|
121
|
-
failureCategory: trace.failureCategory,
|
|
122
|
-
message: isConfigError
|
|
123
|
-
? 'Failed to initialize state manager'
|
|
124
|
-
: 'Internal error during trace',
|
|
125
|
-
checkedAt: trace.checkedAt,
|
|
126
|
-
missingLinks: trace.missingLinks,
|
|
127
|
-
}, null, 2));
|
|
128
|
-
} else {
|
|
129
|
-
console.error(`Error: ${isConfigError ? 'Failed to open workspace' : 'Internal error during trace'}`);
|
|
130
|
-
console.error(` Workspace: ${workspaceDir}`);
|
|
131
|
-
}
|
|
132
|
-
process.exitCode = 1;
|
|
133
|
-
return;
|
|
134
|
-
}
|
|
135
|
-
|
|
136
|
-
const result: TraceResult = {
|
|
137
|
-
painId: trace.painId,
|
|
138
|
-
taskId: trace.taskId,
|
|
139
|
-
runId: trace.runId,
|
|
140
|
-
artifactId: trace.artifactId,
|
|
141
|
-
candidateIds: trace.candidateIds,
|
|
142
|
-
ledgerEntryIds: trace.ledgerEntryIds,
|
|
143
|
-
status: trace.status,
|
|
144
|
-
latencyMs: trace.latencyMs,
|
|
145
|
-
failureCategory: trace.failureCategory,
|
|
146
|
-
checkedAt: trace.checkedAt,
|
|
147
|
-
missingLinks: trace.missingLinks,
|
|
148
|
-
};
|
|
149
|
-
|
|
150
|
-
outputResult(result, opts);
|
|
151
|
-
|
|
152
|
-
if (result.status === 'error' || result.status === 'failed' || result.status === 'degraded') {
|
|
153
|
-
process.exitCode = 1;
|
|
154
|
-
}
|
|
155
|
-
} catch (err) {
|
|
156
|
-
const msg = err instanceof Error ? err.message : String(err);
|
|
157
|
-
if (opts.json) {
|
|
158
|
-
console.log(JSON.stringify({
|
|
159
|
-
painId: opts.painId,
|
|
160
|
-
taskId: `diagnosis_${opts.painId}`,
|
|
161
|
-
status: 'error',
|
|
162
|
-
failureCategory: 'runtime_unavailable',
|
|
163
|
-
message: msg,
|
|
164
|
-
checkedAt: new Date().toISOString(),
|
|
165
|
-
missingLinks: ['internal_error'],
|
|
166
|
-
}, null, 2));
|
|
167
|
-
} else {
|
|
168
|
-
console.error(`Error: ${msg}`);
|
|
169
|
-
}
|
|
170
|
-
process.exitCode = 1;
|
|
171
|
-
} finally {
|
|
172
|
-
await readModel.close();
|
|
173
|
-
}
|
|
174
|
-
}
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Shared operator-facing failure for an unavailable trajectory database (PRI-753).
|
|
3
|
-
*
|
|
4
|
-
* The four trajectory-reading commands (`pd samples list/review`,
|
|
5
|
-
* `pd evolution tasks list/show`) surface the same structured failure:
|
|
6
|
-
* the error message carries path + reason, the second line is the next
|
|
7
|
-
* action (cli-6), and the process exits before any further mutation (cli-5).
|
|
8
|
-
*/
|
|
9
|
-
|
|
10
|
-
import type { TrajectoryDbUnavailableError } from '@principles/core/trajectory-store';
|
|
11
|
-
|
|
12
|
-
const NEXT_ACTION =
|
|
13
|
-
"Trajectory data lives in the workspace database written by the PD plugin. Initialize this workspace with 'pd runtime init --confirm' or run PD here first.";
|
|
14
|
-
|
|
15
|
-
export function exitWithTrajectoryDbUnavailable(err: TrajectoryDbUnavailableError): never {
|
|
16
|
-
console.error(`Error: ${err.message}`);
|
|
17
|
-
console.error(NEXT_ACTION);
|
|
18
|
-
process.exit(1);
|
|
19
|
-
}
|
|
@@ -1,64 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* pd trajectory locate — Locate a trajectory by task ID, run ID, or time range.
|
|
3
|
-
*
|
|
4
|
-
* Usage:
|
|
5
|
-
* pd trajectory locate --task <taskId> --workspace <path>
|
|
6
|
-
* pd trajectory locate --run <runId> --workspace <path>
|
|
7
|
-
* pd trajectory locate --from <date> --to <date> --workspace <path>
|
|
8
|
-
*/
|
|
9
|
-
import { SqliteConnection, SqliteTrajectoryLocator } from '@principles/core';
|
|
10
|
-
import { resolveWorkspaceDir } from '../resolve-workspace.js';
|
|
11
|
-
|
|
12
|
-
interface TrajectoryLocateOptions {
|
|
13
|
-
task?: string;
|
|
14
|
-
run?: string;
|
|
15
|
-
from?: string;
|
|
16
|
-
to?: string;
|
|
17
|
-
json?: boolean;
|
|
18
|
-
workspace?: string;
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
export async function handleTrajectoryLocate(opts: TrajectoryLocateOptions): Promise<void> {
|
|
22
|
-
const workspaceDir = resolveWorkspaceDir(opts.workspace);
|
|
23
|
-
const connection = new SqliteConnection(workspaceDir);
|
|
24
|
-
|
|
25
|
-
try {
|
|
26
|
-
const locator = new SqliteTrajectoryLocator(connection);
|
|
27
|
-
|
|
28
|
-
let query: Record<string, unknown> = {};
|
|
29
|
-
|
|
30
|
-
if (opts.task) query = { taskId: opts.task };
|
|
31
|
-
else if (opts.run) query = { runId: opts.run };
|
|
32
|
-
else if (opts.from || opts.to) query = { timeRange: { start: opts.from ?? '', end: opts.to ?? '' } };
|
|
33
|
-
else {
|
|
34
|
-
console.error('Error: specify at least one search criterion (--task, --run, --from/--to)');
|
|
35
|
-
process.exit(1);
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
const result = await locator.locate(query);
|
|
39
|
-
|
|
40
|
-
if (result.candidates.length === 0) {
|
|
41
|
-
console.log('No trajectories found.');
|
|
42
|
-
return;
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
if (opts.json) {
|
|
46
|
-
console.log(JSON.stringify(result, null, 2));
|
|
47
|
-
return;
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
console.log(`\nTrajectories (${result.candidates.length}):\n`);
|
|
51
|
-
for (const candidate of result.candidates) {
|
|
52
|
-
const reasonsCount = candidate.reasons.length;
|
|
53
|
-
console.log(
|
|
54
|
-
' %s confidence=%s reasons=%d',
|
|
55
|
-
candidate.trajectoryRef.substring(0, 36),
|
|
56
|
-
candidate.confidence.toFixed(1),
|
|
57
|
-
reasonsCount,
|
|
58
|
-
);
|
|
59
|
-
}
|
|
60
|
-
console.log('');
|
|
61
|
-
} finally {
|
|
62
|
-
connection.close();
|
|
63
|
-
}
|
|
64
|
-
}
|
package/src/commands/version.ts
DELETED
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* pd version command (SPEC §12).
|
|
3
|
-
*
|
|
4
|
-
* Human output prints the short stable version text; `--json` emits exactly
|
|
5
|
-
* one parseable JSON object with the full canonical report (productVersion,
|
|
6
|
-
* releaseId, components, bootstrapVersion, channel, source, generation,
|
|
7
|
-
* health, lastTransaction).
|
|
8
|
-
*/
|
|
9
|
-
|
|
10
|
-
import type { Command } from 'commander';
|
|
11
|
-
import { buildVersionReport, formatShortVersion, VersionReportError } from '../services/version-report.js';
|
|
12
|
-
|
|
13
|
-
async function runVersion(json: boolean): Promise<void> {
|
|
14
|
-
try {
|
|
15
|
-
const report = buildVersionReport();
|
|
16
|
-
if (json) {
|
|
17
|
-
console.log(JSON.stringify(report, null, 2));
|
|
18
|
-
return;
|
|
19
|
-
}
|
|
20
|
-
console.log(formatShortVersion(report));
|
|
21
|
-
} catch (error) {
|
|
22
|
-
if (error instanceof VersionReportError) {
|
|
23
|
-
if (json) {
|
|
24
|
-
console.log(JSON.stringify({
|
|
25
|
-
ok: false,
|
|
26
|
-
reason: error.reason,
|
|
27
|
-
message: error.message,
|
|
28
|
-
nextAction: error.nextAction,
|
|
29
|
-
}, null, 2));
|
|
30
|
-
} else {
|
|
31
|
-
console.error(error.message);
|
|
32
|
-
console.error(`Next: ${error.nextAction}`);
|
|
33
|
-
}
|
|
34
|
-
process.exitCode = 1;
|
|
35
|
-
return;
|
|
36
|
-
}
|
|
37
|
-
throw error;
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
export function registerVersionCommand(program: Command): void {
|
|
42
|
-
program
|
|
43
|
-
.command('version')
|
|
44
|
-
.description('Show the canonical PD product version and installation state')
|
|
45
|
-
.option('--json', 'Emit the full canonical version report as one JSON object', false)
|
|
46
|
-
.action(async (opts: Record<string, unknown>) => {
|
|
47
|
-
await runVersion(opts.json === true);
|
|
48
|
-
});
|
|
49
|
-
}
|
package/src/config-reader.ts
DELETED
|
@@ -1,122 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Config reader for pd-cli — reads outputLanguage from .pd/config.yaml.
|
|
3
|
-
*
|
|
4
|
-
* This is an I/O boundary module (pd-cli is the I/O layer).
|
|
5
|
-
* Uses core's `resolveOutputLanguage` for validation and degradation.
|
|
6
|
-
*
|
|
7
|
-
* ERR entries:
|
|
8
|
-
* - ERR-001: No `as` bypasses on untrusted parsed YAML — use isRecord type guard
|
|
9
|
-
* - ERR-002: Graceful degradation includes reason + nextAction
|
|
10
|
-
* - ERR-009: Malformed values fail loud with structured warning
|
|
11
|
-
* - ERR-013: Object.hasOwn() for untrusted keys
|
|
12
|
-
*/
|
|
13
|
-
|
|
14
|
-
import * as fs from 'fs';
|
|
15
|
-
import * as path from 'path';
|
|
16
|
-
import * as yaml from 'js-yaml';
|
|
17
|
-
import { resolveOutputLanguage, DEFAULT_OUTPUT_LANGUAGE } from '@principles/core/runtime-v2';
|
|
18
|
-
import type { ResolvedOutputLanguage } from '@principles/core/runtime-v2';
|
|
19
|
-
|
|
20
|
-
/**
|
|
21
|
-
* Type guard: checks that a value is a non-null plain object (Record<string, unknown>).
|
|
22
|
-
* Per ERR-001: use type guards instead of `as` casts at trust boundaries.
|
|
23
|
-
*/
|
|
24
|
-
function isRecord(value: unknown): value is Record<string, unknown> {
|
|
25
|
-
return typeof value === 'object' && value !== null && !Array.isArray(value);
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
/**
|
|
29
|
-
* Build a structured degradation warning for config read errors.
|
|
30
|
-
* Per ERR-002/ERR-009: every degraded path must include reason + nextAction.
|
|
31
|
-
*/
|
|
32
|
-
function configDegradationWarning(
|
|
33
|
-
reason: 'read_error' | 'yaml_parse_error' | 'invalid_config_root' | 'invalid_principles_structure',
|
|
34
|
-
detail: string,
|
|
35
|
-
): string {
|
|
36
|
-
const reasons: Record<typeof reason, { msg: string; action: string }> = {
|
|
37
|
-
read_error: {
|
|
38
|
-
msg: `Failed to read .pd/config.yaml: ${detail}`,
|
|
39
|
-
action: 'Check file permissions and ensure .pd/config.yaml is readable',
|
|
40
|
-
},
|
|
41
|
-
yaml_parse_error: {
|
|
42
|
-
msg: `Failed to parse .pd/config.yaml: ${detail}`,
|
|
43
|
-
action: 'Fix YAML syntax errors in .pd/config.yaml',
|
|
44
|
-
},
|
|
45
|
-
invalid_config_root: {
|
|
46
|
-
msg: `.pd/config.yaml root is not an object: ${detail}`,
|
|
47
|
-
action: 'Ensure .pd/config.yaml has a valid YAML mapping at the top level',
|
|
48
|
-
},
|
|
49
|
-
invalid_principles_structure: {
|
|
50
|
-
msg: `.pd/config.yaml principles field is not an object: ${detail}`,
|
|
51
|
-
action: 'Ensure principles field in .pd/config.yaml is a YAML mapping (e.g. principles: { outputLanguage: zh-CN })',
|
|
52
|
-
},
|
|
53
|
-
};
|
|
54
|
-
const entry = reasons[reason];
|
|
55
|
-
return `${entry.msg}. Falling back to default: ${DEFAULT_OUTPUT_LANGUAGE}. nextAction: ${entry.action}`;
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
/**
|
|
59
|
-
* Read principles.outputLanguage from workspace .pd/config.yaml.
|
|
60
|
-
*
|
|
61
|
-
* Returns ResolvedOutputLanguage with:
|
|
62
|
-
* - outputLanguage: the effective language to use
|
|
63
|
-
* - degradationWarning: present if config was malformed or unreadable (ERR-002/ERR-009)
|
|
64
|
-
*
|
|
65
|
-
* Distinguishes between "not configured" (legitimate default, no warning)
|
|
66
|
-
* and "config broken" (degraded with reason + nextAction).
|
|
67
|
-
*/
|
|
68
|
-
export function readOutputLanguageFromWorkspace(workspaceDir: string): ResolvedOutputLanguage {
|
|
69
|
-
const configPath = path.join(workspaceDir, '.pd', 'config.yaml');
|
|
70
|
-
|
|
71
|
-
if (!fs.existsSync(configPath)) {
|
|
72
|
-
// No config file → legitimate default, no warning
|
|
73
|
-
return resolveOutputLanguage(undefined);
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
let raw: string;
|
|
77
|
-
try {
|
|
78
|
-
raw = fs.readFileSync(configPath, 'utf8');
|
|
79
|
-
} catch (err) {
|
|
80
|
-
return {
|
|
81
|
-
outputLanguage: DEFAULT_OUTPUT_LANGUAGE,
|
|
82
|
-
degradationWarning: configDegradationWarning('read_error', String(err)),
|
|
83
|
-
};
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
let parsed: unknown;
|
|
87
|
-
try {
|
|
88
|
-
parsed = yaml.load(raw, { schema: yaml.JSON_SCHEMA });
|
|
89
|
-
} catch (err) {
|
|
90
|
-
return {
|
|
91
|
-
outputLanguage: DEFAULT_OUTPUT_LANGUAGE,
|
|
92
|
-
degradationWarning: configDegradationWarning('yaml_parse_error', String(err)),
|
|
93
|
-
};
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
if (!isRecord(parsed)) {
|
|
97
|
-
return {
|
|
98
|
-
outputLanguage: DEFAULT_OUTPUT_LANGUAGE,
|
|
99
|
-
degradationWarning: configDegradationWarning('invalid_config_root', typeof parsed),
|
|
100
|
-
};
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
if (!Object.hasOwn(parsed, 'principles')) {
|
|
104
|
-
// No principles section → legitimate default, no warning
|
|
105
|
-
return resolveOutputLanguage(undefined);
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
const principlesRaw = parsed.principles;
|
|
109
|
-
if (!isRecord(principlesRaw)) {
|
|
110
|
-
return {
|
|
111
|
-
outputLanguage: DEFAULT_OUTPUT_LANGUAGE,
|
|
112
|
-
degradationWarning: configDegradationWarning('invalid_principles_structure', typeof principlesRaw),
|
|
113
|
-
};
|
|
114
|
-
}
|
|
115
|
-
|
|
116
|
-
if (!Object.hasOwn(principlesRaw, 'outputLanguage')) {
|
|
117
|
-
// No outputLanguage key → legitimate default, no warning
|
|
118
|
-
return resolveOutputLanguage(undefined);
|
|
119
|
-
}
|
|
120
|
-
|
|
121
|
-
return resolveOutputLanguage(principlesRaw.outputLanguage);
|
|
122
|
-
}
|