@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,107 +0,0 @@
|
|
|
1
|
-
import * as path from 'path';
|
|
2
|
-
import { InternalizationChainIntegrityReadModel } from '@principles/core/runtime-v2';
|
|
3
|
-
import type { ChainIntegrityResult } from '@principles/core/runtime-v2';
|
|
4
|
-
import { resolveWorkspaceDir } from '../resolve-workspace.js';
|
|
5
|
-
import { assembleMainlineSnapshot } from '../services/mainline-snapshot-assembler.js';
|
|
6
|
-
|
|
7
|
-
interface InternalizationIntegrityOptions {
|
|
8
|
-
workspace?: string;
|
|
9
|
-
json?: boolean;
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
function formatTextOutput(result: ChainIntegrityResult): string {
|
|
13
|
-
const lines: string[] = [];
|
|
14
|
-
const icon = result.overallStatus === 'ok' ? '✓' : result.overallStatus === 'degraded' ? '⚠' : '✗';
|
|
15
|
-
|
|
16
|
-
lines.push('Internalization Chain Integrity Report');
|
|
17
|
-
lines.push(`generatedAt: ${result.generatedAt}`);
|
|
18
|
-
lines.push(`OVERALL: ${icon} ${result.overallStatus.toUpperCase()}`);
|
|
19
|
-
lines.push('');
|
|
20
|
-
|
|
21
|
-
lines.push('Chain Summaries:');
|
|
22
|
-
lines.push(` totalCandidates: ${result.chainSummaries.totalCandidates}`);
|
|
23
|
-
lines.push(` totalDreamerTasks: ${result.chainSummaries.totalDreamerTasks}`);
|
|
24
|
-
lines.push(` totalPhilosopherTasks: ${result.chainSummaries.totalPhilosopherTasks}`);
|
|
25
|
-
lines.push(` totalPIArtifacts: ${result.chainSummaries.totalPIArtifacts}`);
|
|
26
|
-
lines.push(` chainsWithBrokenLinks: ${result.chainSummaries.chainsWithBrokenLinks}`);
|
|
27
|
-
lines.push('');
|
|
28
|
-
|
|
29
|
-
if (result.brokenLinks.length === 0) {
|
|
30
|
-
lines.push('No broken links found. Chain integrity is OK.');
|
|
31
|
-
} else {
|
|
32
|
-
lines.push(`Broken Links (${result.brokenLinks.length}):`);
|
|
33
|
-
for (const link of result.brokenLinks) {
|
|
34
|
-
const sevIcon = link.severity === 'error' ? '✗' : '⚠';
|
|
35
|
-
lines.push(` ${sevIcon} [${link.severity}] ${link.type}: ${link.reason}`);
|
|
36
|
-
if (link.taskId) lines.push(` taskId: ${link.taskId}`);
|
|
37
|
-
if (link.runId) lines.push(` runId: ${link.runId}`);
|
|
38
|
-
if (link.candidateId) lines.push(` candidateId: ${link.candidateId}`);
|
|
39
|
-
lines.push(` action: ${link.recommendedAction}`);
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
return lines.join('\n');
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
export async function handleRuntimeInternalizationIntegrity(opts: InternalizationIntegrityOptions): Promise<void> {
|
|
47
|
-
const workspaceDir = opts.workspace
|
|
48
|
-
? path.resolve(opts.workspace)
|
|
49
|
-
: resolveWorkspaceDir();
|
|
50
|
-
|
|
51
|
-
let warnings: string[];
|
|
52
|
-
let snapshot;
|
|
53
|
-
try {
|
|
54
|
-
({ snapshot, warnings } = await assembleMainlineSnapshot({ workspaceDir }));
|
|
55
|
-
} catch (error: unknown) {
|
|
56
|
-
const reason = error instanceof Error ? error.message : String(error);
|
|
57
|
-
const failure: ChainIntegrityResult = {
|
|
58
|
-
overallStatus: 'error',
|
|
59
|
-
brokenLinks: [{
|
|
60
|
-
type: 'mainline_snapshot_assembly_failed',
|
|
61
|
-
severity: 'error',
|
|
62
|
-
reason: `Failed to assemble mainline snapshot: ${reason}`,
|
|
63
|
-
recommendedAction: 'Verify workspace state.db/config and rerun `pd runtime internalization integrity`.',
|
|
64
|
-
}],
|
|
65
|
-
chainSummaries: {
|
|
66
|
-
totalCandidates: 0,
|
|
67
|
-
totalDreamerTasks: 0,
|
|
68
|
-
totalPhilosopherTasks: 0,
|
|
69
|
-
totalPIArtifacts: 0,
|
|
70
|
-
chainsWithBrokenLinks: 0,
|
|
71
|
-
},
|
|
72
|
-
generatedAt: new Date().toISOString(),
|
|
73
|
-
};
|
|
74
|
-
if (opts.json) {
|
|
75
|
-
console.log(JSON.stringify(failure, null, 2));
|
|
76
|
-
} else {
|
|
77
|
-
const [firstBrokenLink] = failure.brokenLinks;
|
|
78
|
-
const failReason = firstBrokenLink ? firstBrokenLink.reason : 'unknown failure';
|
|
79
|
-
console.error(`FAIL: ${failReason}`);
|
|
80
|
-
}
|
|
81
|
-
process.exitCode = 1;
|
|
82
|
-
return;
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
if (!opts.json && warnings.length > 0) {
|
|
86
|
-
for (const warning of warnings) {
|
|
87
|
-
console.warn(`Warning: ${warning}`);
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
const model = new InternalizationChainIntegrityReadModel({ workspaceDir, mainlineSnapshot: snapshot });
|
|
92
|
-
const result = model.check();
|
|
93
|
-
|
|
94
|
-
if (opts.json) {
|
|
95
|
-
console.log(JSON.stringify(result, null, 2));
|
|
96
|
-
} else {
|
|
97
|
-
console.log(formatTextOutput(result));
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
if (result.overallStatus !== 'ok') {
|
|
101
|
-
if (!opts.json) {
|
|
102
|
-
console.error('');
|
|
103
|
-
console.error(`FAIL: overallStatus=${result.overallStatus}`);
|
|
104
|
-
}
|
|
105
|
-
process.exitCode = 1;
|
|
106
|
-
}
|
|
107
|
-
}
|
|
@@ -1,135 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* pd runtime internalization queue command handler.
|
|
3
|
-
*
|
|
4
|
-
* Usage:
|
|
5
|
-
* pd runtime internalization queue --workspace <path> --json
|
|
6
|
-
*
|
|
7
|
-
* Provides a read-only snapshot of the PI task queue health.
|
|
8
|
-
* Never acquires leases or mutates any task/run/artifact/ledger state.
|
|
9
|
-
*/
|
|
10
|
-
import * as path from 'path';
|
|
11
|
-
import { createInternalizationQueueReadModel } from '@principles/core/runtime-v2';
|
|
12
|
-
import type { InternalizationQueueSnapshot } from '@principles/core/runtime-v2';
|
|
13
|
-
import { resolveWorkspaceDir } from '../resolve-workspace.js';
|
|
14
|
-
import { loadPdConfig, computeFlagsFromLoadResult } from '../services/pd-config-loader.js';
|
|
15
|
-
|
|
16
|
-
interface QueueOptions {
|
|
17
|
-
workspace?: string;
|
|
18
|
-
json?: boolean;
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
function formatTextOutput(snap: InternalizationQueueSnapshot, workspaceDir: string, autoConsumerEnabled: boolean): string {
|
|
22
|
-
const lines: string[] = [];
|
|
23
|
-
lines.push(`Internalization Queue Snapshot`);
|
|
24
|
-
lines.push(` pending: ${snap.pendingCount} retry_wait: ${snap.retryWaitCount}`);
|
|
25
|
-
|
|
26
|
-
if (snap.invalidMetadataCount > 0) {
|
|
27
|
-
lines.push(` invalid_metadata: ${snap.invalidMetadataCount} (${snap.sampleInvalidTaskIds.join(', ')})`);
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
lines.push(` ready: ${snap.readyTasks.length}`);
|
|
31
|
-
|
|
32
|
-
const taskKinds = Object.entries(snap.countsByTaskKind);
|
|
33
|
-
if (taskKinds.length > 0) {
|
|
34
|
-
lines.push(` by_kind: ${taskKinds.map(([k, v]) => `${k}=${v}`).join(', ')}`);
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
const channels = Object.entries(snap.countsByChannel);
|
|
38
|
-
if (channels.length > 0) {
|
|
39
|
-
lines.push(` by_channel: ${channels.map(([k, v]) => `${k}=${v}`).join(', ')}`);
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
if (snap.blockedSummary.count > 0) {
|
|
43
|
-
lines.push(` blocked: ${snap.blockedSummary.count}`);
|
|
44
|
-
for (const s of snap.blockedSummary.samples.slice(0, 3)) {
|
|
45
|
-
lines.push(` ${s.taskId} (${s.taskKind}) blocked by: ${s.blockedBy.join(', ')}`);
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
if (snap.dependencyFailedSummary.count > 0) {
|
|
50
|
-
lines.push(` dependency_failed: ${snap.dependencyFailedSummary.count}`);
|
|
51
|
-
for (const s of snap.dependencyFailedSummary.samples.slice(0, 3)) {
|
|
52
|
-
lines.push(` ${s.taskId} (${s.taskKind}) failed deps: ${s.failedDependencies.join(', ')}`);
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
if (snap.leaseConflictSummary.count > 0) {
|
|
57
|
-
lines.push(` lease_conflict: ${snap.leaseConflictSummary.count}`);
|
|
58
|
-
for (const s of snap.leaseConflictSummary.samples.slice(0, 3)) {
|
|
59
|
-
lines.push(` ${s.taskId} (${s.taskKind}) owner: ${s.leaseOwner}, expires: ${s.leaseExpiresAt}`);
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
if (snap.retryWaitPendingSummary.count > 0) {
|
|
64
|
-
lines.push(` retry_wait_pending: ${snap.retryWaitPendingSummary.count}`);
|
|
65
|
-
for (const s of snap.retryWaitPendingSummary.samples.slice(0, 3)) {
|
|
66
|
-
lines.push(` ${s.taskId} (${s.taskKind}) retry_after: ${s.retryAfter}`);
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
if (snap.noReadyTasks) {
|
|
71
|
-
lines.push(` no_ready_tasks: ${snap.noReadyTasks.reason} (inspected: ${snap.noReadyTasks.inspectedCount})`);
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
if (snap.suppressedTasks.length > 0) {
|
|
75
|
-
lines.push(` suppressed (${snap.suppressedTasks.length}):`);
|
|
76
|
-
for (const s of snap.suppressedTasks.slice(0, 5)) {
|
|
77
|
-
lines.push(` ${s.taskId} (${s.taskKind}, ${s.channel}) reason: ${s.reason}`);
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
if (snap.readyTasks.length > 0) {
|
|
82
|
-
if (autoConsumerEnabled) {
|
|
83
|
-
lines.push(` consumerStatus: auto_consumer_enabled`);
|
|
84
|
-
} else {
|
|
85
|
-
const nextAction = `pd runtime internalization run-once --workspace "${workspaceDir}" --runner dreamer --runtime config --json`;
|
|
86
|
-
lines.push(` consumerStatus: manual_action_required`);
|
|
87
|
-
lines.push(` nextAction: ${nextAction}`);
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
return lines.join('\n');
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
export async function handleRuntimeInternalizationQueue(opts: QueueOptions): Promise<void> {
|
|
95
|
-
const workspaceDir = opts.workspace ? path.resolve(opts.workspace) : resolveWorkspaceDir();
|
|
96
|
-
|
|
97
|
-
// Single canonical config load — replaces split-brain legacy + canonical reads (PRI-460).
|
|
98
|
-
const pdConfigResult = loadPdConfig(workspaceDir);
|
|
99
|
-
if (!pdConfigResult.ok) {
|
|
100
|
-
const configWarning = JSON.stringify({
|
|
101
|
-
level: 'warning',
|
|
102
|
-
source: 'pd_config',
|
|
103
|
-
errors: pdConfigResult.errors.map(e => ({ reason: e.reason, nextAction: e.nextAction })),
|
|
104
|
-
});
|
|
105
|
-
process.stderr.write(`${configWarning}\n`);
|
|
106
|
-
}
|
|
107
|
-
const pdFlags = computeFlagsFromLoadResult(pdConfigResult);
|
|
108
|
-
const enabledChannels = new Set(pdFlags.enabledChannels);
|
|
109
|
-
const autoConsumerEnabled = pdFlags.flags.internalization_auto_consumer?.enabled ?? false;
|
|
110
|
-
|
|
111
|
-
const { readModel, close } = await createInternalizationQueueReadModel({ workspaceDir, enabledChannels });
|
|
112
|
-
|
|
113
|
-
try {
|
|
114
|
-
const snapshot = await readModel.getSnapshot();
|
|
115
|
-
|
|
116
|
-
if (opts.json) {
|
|
117
|
-
const output: Record<string, unknown> = { ...snapshot };
|
|
118
|
-
|
|
119
|
-
if (snapshot.readyTasks.length > 0) {
|
|
120
|
-
if (autoConsumerEnabled) {
|
|
121
|
-
output.consumerStatus = 'auto_consumer_enabled';
|
|
122
|
-
} else {
|
|
123
|
-
output.nextAction = `pd runtime internalization run-once --workspace "${workspaceDir}" --runner dreamer --runtime config --json`;
|
|
124
|
-
output.consumerStatus = 'manual_action_required';
|
|
125
|
-
}
|
|
126
|
-
}
|
|
127
|
-
|
|
128
|
-
console.log(JSON.stringify(output, null, 2));
|
|
129
|
-
} else {
|
|
130
|
-
console.log(formatTextOutput(snapshot, workspaceDir, autoConsumerEnabled));
|
|
131
|
-
}
|
|
132
|
-
} finally {
|
|
133
|
-
await close();
|
|
134
|
-
}
|
|
135
|
-
}
|
|
@@ -1,191 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* pd runtime internalization retry — needs_human_review 的 Owner 出边
|
|
3
|
-
* (MVP_CORE_LOOP_CONTRACT INV-03: inspect / retry / revise / reject-archive)。
|
|
4
|
-
*
|
|
5
|
-
* 修复前 needs_human_review 是 display-only 单向终态 (审计 ISSUE-006)。
|
|
6
|
-
* 本命令把 needs_human_review 任务重新入队 (→ pending, attemptCount 重置),
|
|
7
|
-
* 由 auto-consumer / run-once 重新驱动。
|
|
8
|
-
*
|
|
9
|
-
* Owner retry = 显式人类 authority reset,与 crash retry 严格区分:
|
|
10
|
-
* crash / lease recovery / automatic retry 保留 completionIntent(入口门
|
|
11
|
-
* resume 原 verdict,零 LLM);Owner retry 必须同时清空 runnerDecision 与
|
|
12
|
-
* completionIntent,允许新一轮 LLM verdict 成为 authority——否则入口门会
|
|
13
|
-
* resume/finalize 旧 verdict,LLM 永不运行,Owner retry 实际失效。
|
|
14
|
-
*
|
|
15
|
-
* 落库形态: status/attemptCount 与清空后的 metadata 在同一次 updateTask
|
|
16
|
-
* (SQLite 单条 UPDATE) 中原子生效——两个独立写之间失败会留下
|
|
17
|
-
* "authority 已清但任务仍 needs_human_review" 的 partial Owner action。
|
|
18
|
-
* metadata 不可 hydrate 时 fail closed (metadata_invalid),不得只改 status。
|
|
19
|
-
*
|
|
20
|
-
* CLI gate: 默认 dry-run;--confirm 才落地 (cli-4);JSON 模式严格单对象 (cli-1);
|
|
21
|
-
* 失败路径不产生任何状态变更 (cli-5)。
|
|
22
|
-
*/
|
|
23
|
-
|
|
24
|
-
import * as path from 'path';
|
|
25
|
-
import { RuntimeStateManager, ownerRetryNeedsHumanReviewTask } from '@principles/core/runtime-v2';
|
|
26
|
-
import { resolveWorkspaceDir } from '../resolve-workspace.js';
|
|
27
|
-
|
|
28
|
-
export interface InternalizationRetryOptions {
|
|
29
|
-
workspace?: string;
|
|
30
|
-
taskId?: string;
|
|
31
|
-
confirm?: boolean;
|
|
32
|
-
json?: boolean;
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
export interface InternalizationRetryOutput {
|
|
36
|
-
status: 'requeued' | 'dry_run' | 'skipped' | 'failed';
|
|
37
|
-
taskId: string;
|
|
38
|
-
taskKind?: string;
|
|
39
|
-
previousStatus?: string;
|
|
40
|
-
reason?: string;
|
|
41
|
-
nextAction?: string;
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
function emit(out: InternalizationRetryOutput, json?: boolean): void {
|
|
45
|
-
if (json) {
|
|
46
|
-
console.log(JSON.stringify(out, null, 2));
|
|
47
|
-
return;
|
|
48
|
-
}
|
|
49
|
-
console.log(`Retry: ${out.status}${out.previousStatus ? ` (was ${out.previousStatus})` : ''}`);
|
|
50
|
-
if (out.reason) console.log(` reason: ${out.reason}`);
|
|
51
|
-
if (out.nextAction) console.log(` nextAction: ${out.nextAction}`);
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
export async function handleRuntimeInternalizationRetry(opts: InternalizationRetryOptions): Promise<void> {
|
|
55
|
-
if (!opts.taskId) {
|
|
56
|
-
const out: InternalizationRetryOutput = {
|
|
57
|
-
status: 'failed',
|
|
58
|
-
taskId: '',
|
|
59
|
-
reason: 'task_id_required',
|
|
60
|
-
nextAction: 'Pass --task <taskId> (find ids via: pd runtime internalization queue --json or pd errors list)',
|
|
61
|
-
};
|
|
62
|
-
emit(out, opts.json);
|
|
63
|
-
process.exitCode = 1;
|
|
64
|
-
return;
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
const workspaceDir = opts.workspace ? path.resolve(opts.workspace) : resolveWorkspaceDir();
|
|
68
|
-
const stateManager = new RuntimeStateManager({ workspaceDir });
|
|
69
|
-
try {
|
|
70
|
-
await stateManager.initialize();
|
|
71
|
-
const task = await stateManager.getTask(opts.taskId);
|
|
72
|
-
if (!task) {
|
|
73
|
-
const out: InternalizationRetryOutput = {
|
|
74
|
-
status: 'failed',
|
|
75
|
-
taskId: opts.taskId,
|
|
76
|
-
reason: 'task_not_found',
|
|
77
|
-
nextAction: 'Verify the task id and workspace',
|
|
78
|
-
};
|
|
79
|
-
emit(out, opts.json);
|
|
80
|
-
process.exitCode = 1;
|
|
81
|
-
return;
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
if (task.status !== 'needs_human_review') {
|
|
85
|
-
const out: InternalizationRetryOutput = {
|
|
86
|
-
status: 'skipped',
|
|
87
|
-
taskId: opts.taskId,
|
|
88
|
-
taskKind: task.taskKind,
|
|
89
|
-
previousStatus: task.status,
|
|
90
|
-
reason: 'only_needs_human_review_tasks_are_retryable',
|
|
91
|
-
nextAction: 'This task is not in the owner attention queue; use run-once / enqueue-successors instead',
|
|
92
|
-
};
|
|
93
|
-
emit(out, opts.json);
|
|
94
|
-
return;
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
if (!opts.confirm) {
|
|
98
|
-
const out: InternalizationRetryOutput = {
|
|
99
|
-
status: 'dry_run',
|
|
100
|
-
taskId: opts.taskId,
|
|
101
|
-
taskKind: task.taskKind,
|
|
102
|
-
previousStatus: task.status,
|
|
103
|
-
reason: 'dry_run_no_mutation',
|
|
104
|
-
nextAction: 'Re-run with --confirm to requeue this task',
|
|
105
|
-
};
|
|
106
|
-
emit(out, opts.json);
|
|
107
|
-
return;
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
// Owner retry = authority reset: runnerDecision 与 completionIntent 同时
|
|
111
|
-
// 清空 (保留 revisionCount / revisionCauseId / rolloutRevisionPayload /
|
|
112
|
-
// repairPayload / lineage — revision budget 证据不动)。
|
|
113
|
-
// 落库序列提取在 core ownerRetryNeedsHumanReviewTask (Governance Recovery
|
|
114
|
-
// Actions v1): Console 恢复端点与 CLI 走同一段逻辑,禁止复制。
|
|
115
|
-
const outcome = await ownerRetryNeedsHumanReviewTask(stateManager, opts.taskId);
|
|
116
|
-
|
|
117
|
-
if (outcome.status === 'not_found') {
|
|
118
|
-
const out: InternalizationRetryOutput = {
|
|
119
|
-
status: 'failed',
|
|
120
|
-
taskId: opts.taskId,
|
|
121
|
-
reason: 'task_not_found',
|
|
122
|
-
nextAction: 'Verify the task id and workspace',
|
|
123
|
-
};
|
|
124
|
-
emit(out, opts.json);
|
|
125
|
-
process.exitCode = 1;
|
|
126
|
-
return;
|
|
127
|
-
}
|
|
128
|
-
if (outcome.status === 'skipped') {
|
|
129
|
-
const out: InternalizationRetryOutput = {
|
|
130
|
-
status: 'skipped',
|
|
131
|
-
taskId: opts.taskId,
|
|
132
|
-
taskKind: outcome.taskKind,
|
|
133
|
-
previousStatus: outcome.previousStatus,
|
|
134
|
-
reason: 'only_needs_human_review_tasks_are_retryable',
|
|
135
|
-
nextAction: 'This task is not in the owner attention queue; use run-once / enqueue-successors instead',
|
|
136
|
-
};
|
|
137
|
-
emit(out, opts.json);
|
|
138
|
-
return;
|
|
139
|
-
}
|
|
140
|
-
if (outcome.status === 'rejected') {
|
|
141
|
-
// PRI-629 Recover guard: decision-capable 人工裁决不走 authority reset —
|
|
142
|
-
// 治理出口在 Console 治理焦点 (或 owner-decisions API)。
|
|
143
|
-
const out: InternalizationRetryOutput = {
|
|
144
|
-
status: 'skipped',
|
|
145
|
-
taskId: opts.taskId,
|
|
146
|
-
taskKind: outcome.taskKind,
|
|
147
|
-
previousStatus: outcome.previousStatus,
|
|
148
|
-
reason: outcome.reason,
|
|
149
|
-
nextAction: 'This task awaits an Owner decision (accept / revise once / reject). Resolve it in the Console governance focus, or via the owner-decisions API. Recover is not a governance exit.',
|
|
150
|
-
};
|
|
151
|
-
emit(out, opts.json);
|
|
152
|
-
return;
|
|
153
|
-
}
|
|
154
|
-
if (outcome.status === 'metadata_invalid') {
|
|
155
|
-
// fail closed: 只改 status 会把(可能损坏的)旧 authority 记录原样留在
|
|
156
|
-
// metadata 里,下一次 run 由它接管 —— 产生 partial retry。
|
|
157
|
-
const out: InternalizationRetryOutput = {
|
|
158
|
-
status: 'failed',
|
|
159
|
-
taskId: opts.taskId,
|
|
160
|
-
taskKind: outcome.taskKind,
|
|
161
|
-
previousStatus: 'needs_human_review',
|
|
162
|
-
reason: 'metadata_invalid',
|
|
163
|
-
nextAction: 'Task metadata failed PI hydration; a retry now would risk a partial authority reset. Inspect: pd runtime internalization integrity --json',
|
|
164
|
-
};
|
|
165
|
-
emit(out, opts.json);
|
|
166
|
-
process.exitCode = 1;
|
|
167
|
-
return;
|
|
168
|
-
}
|
|
169
|
-
|
|
170
|
-
const out: InternalizationRetryOutput = {
|
|
171
|
-
status: 'requeued',
|
|
172
|
-
taskId: opts.taskId,
|
|
173
|
-
taskKind: outcome.taskKind,
|
|
174
|
-
previousStatus: outcome.previousStatus,
|
|
175
|
-
nextAction: 'Task requeued; it will be picked up by the auto-consumer cycle, or advance manually: pd runtime internalization run-once',
|
|
176
|
-
};
|
|
177
|
-
emit(out, opts.json);
|
|
178
|
-
} catch (err) {
|
|
179
|
-
const out: InternalizationRetryOutput = {
|
|
180
|
-
status: 'failed',
|
|
181
|
-
taskId: opts.taskId,
|
|
182
|
-
reason: err instanceof Error ? err.message : String(err),
|
|
183
|
-
nextAction: 'Check workspace DB integrity (pd runtime internalization integrity)',
|
|
184
|
-
};
|
|
185
|
-
emit(out, opts.json);
|
|
186
|
-
process.exitCode = 1;
|
|
187
|
-
} finally {
|
|
188
|
-
await stateManager.close();
|
|
189
|
-
}
|
|
190
|
-
}
|
|
191
|
-
|