@principles/pd-cli 1.77.0 → 1.78.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pain-record.d.ts","sourceRoot":"","sources":["../../src/commands/pain-record.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"pain-record.d.ts","sourceRoot":"","sources":["../../src/commands/pain-record.ts"],"names":[],"mappings":"AAkBA,UAAU,aAAa;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CA0JzE"}
|
|
@@ -8,6 +8,7 @@
|
|
|
8
8
|
*/
|
|
9
9
|
import { PainToPrincipleService, PrincipleTreeLedgerAdapter, resolveRuntimeConfig, isRuntimeConfigError, } from '@principles/core/runtime-v2';
|
|
10
10
|
import { resolveWorkspaceDir } from '../resolve-workspace.js';
|
|
11
|
+
import { loadPdConfig } from '../services/pd-config-loader.js';
|
|
11
12
|
export async function handlePainRecord(opts) {
|
|
12
13
|
if (!opts.reason) {
|
|
13
14
|
console.error('Error: --reason <text> is required');
|
|
@@ -22,12 +23,26 @@ export async function handlePainRecord(opts) {
|
|
|
22
23
|
const stateDir = `${workspaceDir}/.state`;
|
|
23
24
|
const painId = `manual_${Date.now()}_${Math.random().toString(36).slice(2, 10)}`;
|
|
24
25
|
const ledgerAdapter = new PrincipleTreeLedgerAdapter({ stateDir });
|
|
26
|
+
// PRI-306: Load .pd/config.yaml for config-driven runtime binding
|
|
27
|
+
const configResult = loadPdConfig(workspaceDir);
|
|
28
|
+
if (!configResult.ok) {
|
|
29
|
+
// ERR-009 / Runtime Contract Rule 9: fail loud with reason, don't silently swallow
|
|
30
|
+
console.error(`Warning: .pd/config.yaml has errors — using defaults:`);
|
|
31
|
+
for (const e of configResult.errors) {
|
|
32
|
+
console.error(` ${e.path}: ${e.reason}`);
|
|
33
|
+
if (e.nextAction)
|
|
34
|
+
console.error(` nextAction: ${e.nextAction}`);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
const effectiveConfig = configResult.ok ? configResult.effective : configResult.defaults;
|
|
25
38
|
const service = new PainToPrincipleService({
|
|
26
39
|
workspaceDir,
|
|
27
40
|
stateDir,
|
|
28
41
|
ledgerAdapter,
|
|
29
42
|
owner: 'pd-cli',
|
|
30
43
|
autoIntakeEnabled: true,
|
|
44
|
+
effectiveConfig,
|
|
45
|
+
getEnvVar: (name) => process.env[name],
|
|
31
46
|
});
|
|
32
47
|
const result = await service.recordPain({
|
|
33
48
|
painId,
|
|
@@ -42,8 +57,8 @@ export async function handlePainRecord(opts) {
|
|
|
42
57
|
});
|
|
43
58
|
// Show diagnostic info for config failures
|
|
44
59
|
if (result.failureCategory === 'config_missing') {
|
|
45
|
-
const
|
|
46
|
-
if (isRuntimeConfigError(
|
|
60
|
+
const legacyConfig = resolveRuntimeConfig(stateDir);
|
|
61
|
+
if (isRuntimeConfigError(legacyConfig)) {
|
|
47
62
|
if (opts.json) {
|
|
48
63
|
console.log(JSON.stringify({
|
|
49
64
|
status: 'failed',
|
|
@@ -52,21 +67,21 @@ export async function handlePainRecord(opts) {
|
|
|
52
67
|
failureCategory: result.failureCategory,
|
|
53
68
|
message: result.message,
|
|
54
69
|
configError: {
|
|
55
|
-
reason:
|
|
56
|
-
message:
|
|
57
|
-
nextAction:
|
|
70
|
+
reason: legacyConfig.reason,
|
|
71
|
+
message: legacyConfig.message,
|
|
72
|
+
nextAction: legacyConfig.nextAction,
|
|
58
73
|
},
|
|
59
74
|
}, null, 2));
|
|
60
75
|
}
|
|
61
76
|
else {
|
|
62
|
-
console.error(` Config resolution failed: ${
|
|
63
|
-
console.error(` ${
|
|
64
|
-
console.error(` nextAction: ${
|
|
77
|
+
console.error(` Config resolution failed: ${legacyConfig.reason}`);
|
|
78
|
+
console.error(` ${legacyConfig.message}`);
|
|
79
|
+
console.error(` nextAction: ${legacyConfig.nextAction}`);
|
|
65
80
|
}
|
|
66
81
|
process.exit(1);
|
|
67
82
|
return;
|
|
68
83
|
}
|
|
69
|
-
const config =
|
|
84
|
+
const config = legacyConfig;
|
|
70
85
|
const missing = [];
|
|
71
86
|
if (!config.provider)
|
|
72
87
|
missing.push('provider');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pain-record.js","sourceRoot":"","sources":["../../src/commands/pain-record.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EACL,sBAAsB,EACtB,0BAA0B,EAC1B,oBAAoB,EACpB,oBAAoB,GACrB,MAAM,6BAA6B,CAAC;AAErC,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"pain-record.js","sourceRoot":"","sources":["../../src/commands/pain-record.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -14,6 +14,7 @@ import {
|
|
|
14
14
|
} from '@principles/core/runtime-v2';
|
|
15
15
|
import type { KnownProvider } from '@mariozechner/pi-ai';
|
|
16
16
|
import { resolveWorkspaceDir } from '../resolve-workspace.js';
|
|
17
|
+
import { loadPdConfig } from '../services/pd-config-loader.js';
|
|
17
18
|
|
|
18
19
|
interface RecordOptions {
|
|
19
20
|
reason?: string;
|
|
@@ -40,12 +41,25 @@ export async function handlePainRecord(opts: RecordOptions): Promise<void> {
|
|
|
40
41
|
const painId = `manual_${Date.now()}_${Math.random().toString(36).slice(2, 10)}`;
|
|
41
42
|
|
|
42
43
|
const ledgerAdapter = new PrincipleTreeLedgerAdapter({ stateDir });
|
|
44
|
+
// PRI-306: Load .pd/config.yaml for config-driven runtime binding
|
|
45
|
+
const configResult = loadPdConfig(workspaceDir);
|
|
46
|
+
if (!configResult.ok) {
|
|
47
|
+
// ERR-009 / Runtime Contract Rule 9: fail loud with reason, don't silently swallow
|
|
48
|
+
console.error(`Warning: .pd/config.yaml has errors — using defaults:`);
|
|
49
|
+
for (const e of configResult.errors) {
|
|
50
|
+
console.error(` ${e.path}: ${e.reason}`);
|
|
51
|
+
if (e.nextAction) console.error(` nextAction: ${e.nextAction}`);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
const effectiveConfig = configResult.ok ? configResult.effective : configResult.defaults;
|
|
43
55
|
const service = new PainToPrincipleService({
|
|
44
56
|
workspaceDir,
|
|
45
57
|
stateDir,
|
|
46
58
|
ledgerAdapter,
|
|
47
59
|
owner: 'pd-cli',
|
|
48
60
|
autoIntakeEnabled: true,
|
|
61
|
+
effectiveConfig,
|
|
62
|
+
getEnvVar: (name: string) => process.env[name],
|
|
49
63
|
});
|
|
50
64
|
|
|
51
65
|
const result = await service.recordPain({
|
|
@@ -62,8 +76,8 @@ export async function handlePainRecord(opts: RecordOptions): Promise<void> {
|
|
|
62
76
|
|
|
63
77
|
// Show diagnostic info for config failures
|
|
64
78
|
if (result.failureCategory === 'config_missing') {
|
|
65
|
-
const
|
|
66
|
-
if (isRuntimeConfigError(
|
|
79
|
+
const legacyConfig = resolveRuntimeConfig(stateDir);
|
|
80
|
+
if (isRuntimeConfigError(legacyConfig)) {
|
|
67
81
|
if (opts.json) {
|
|
68
82
|
console.log(JSON.stringify({
|
|
69
83
|
status: 'failed',
|
|
@@ -72,20 +86,20 @@ export async function handlePainRecord(opts: RecordOptions): Promise<void> {
|
|
|
72
86
|
failureCategory: result.failureCategory,
|
|
73
87
|
message: result.message,
|
|
74
88
|
configError: {
|
|
75
|
-
reason:
|
|
76
|
-
message:
|
|
77
|
-
nextAction:
|
|
89
|
+
reason: legacyConfig.reason,
|
|
90
|
+
message: legacyConfig.message,
|
|
91
|
+
nextAction: legacyConfig.nextAction,
|
|
78
92
|
},
|
|
79
93
|
}, null, 2));
|
|
80
94
|
} else {
|
|
81
|
-
console.error(` Config resolution failed: ${
|
|
82
|
-
console.error(` ${
|
|
83
|
-
console.error(` nextAction: ${
|
|
95
|
+
console.error(` Config resolution failed: ${legacyConfig.reason}`);
|
|
96
|
+
console.error(` ${legacyConfig.message}`);
|
|
97
|
+
console.error(` nextAction: ${legacyConfig.nextAction}`);
|
|
84
98
|
}
|
|
85
99
|
process.exit(1);
|
|
86
100
|
return;
|
|
87
101
|
}
|
|
88
|
-
const config =
|
|
102
|
+
const config = legacyConfig;
|
|
89
103
|
const missing: string[] = [];
|
|
90
104
|
if (!config.provider) missing.push('provider');
|
|
91
105
|
if (!config.model) missing.push('model');
|