create-principles-disciple 1.80.0 → 1.82.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.
Files changed (183) hide show
  1. package/core/dist/runtime-v2/__tests__/admission-gate.test.js +6 -6
  2. package/core/dist/runtime-v2/__tests__/admission-gate.test.js.map +1 -1
  3. package/core/dist/runtime-v2/__tests__/architecture-regression.test.js +39 -0
  4. package/core/dist/runtime-v2/__tests__/architecture-regression.test.js.map +1 -1
  5. package/core/dist/runtime-v2/__tests__/artificer-runner-vslice.test.js +52 -0
  6. package/core/dist/runtime-v2/__tests__/artificer-runner-vslice.test.js.map +1 -1
  7. package/core/dist/runtime-v2/__tests__/evaluator-runner-vslice.test.js +245 -1
  8. package/core/dist/runtime-v2/__tests__/evaluator-runner-vslice.test.js.map +1 -1
  9. package/core/dist/runtime-v2/__tests__/feedback/redact-sensitive.test.js +131 -1
  10. package/core/dist/runtime-v2/__tests__/feedback/redact-sensitive.test.js.map +1 -1
  11. package/core/dist/runtime-v2/__tests__/scribe-runner-vslice.test.js +425 -2
  12. package/core/dist/runtime-v2/__tests__/scribe-runner-vslice.test.js.map +1 -1
  13. package/core/dist/runtime-v2/__tests__/telemetry-event.test.d.ts +2 -0
  14. package/core/dist/runtime-v2/__tests__/telemetry-event.test.d.ts.map +1 -0
  15. package/core/dist/runtime-v2/__tests__/telemetry-event.test.js +69 -0
  16. package/core/dist/runtime-v2/__tests__/telemetry-event.test.js.map +1 -0
  17. package/core/dist/runtime-v2/admission-gate.d.ts.map +1 -1
  18. package/core/dist/runtime-v2/admission-gate.js +0 -8
  19. package/core/dist/runtime-v2/admission-gate.js.map +1 -1
  20. package/core/dist/runtime-v2/config/__tests__/pd-config-contract.test.d.ts +15 -0
  21. package/core/dist/runtime-v2/config/__tests__/pd-config-contract.test.d.ts.map +1 -0
  22. package/core/dist/runtime-v2/config/__tests__/pd-config-contract.test.js +685 -0
  23. package/core/dist/runtime-v2/config/__tests__/pd-config-contract.test.js.map +1 -0
  24. package/core/dist/runtime-v2/config/__tests__/pd-config-redaction-deep.test.d.ts +13 -0
  25. package/core/dist/runtime-v2/config/__tests__/pd-config-redaction-deep.test.d.ts.map +1 -0
  26. package/core/dist/runtime-v2/config/__tests__/pd-config-redaction-deep.test.js +447 -0
  27. package/core/dist/runtime-v2/config/__tests__/pd-config-redaction-deep.test.js.map +1 -0
  28. package/core/dist/runtime-v2/config/__tests__/pd-config-validation-edge-cases.test.d.ts +12 -0
  29. package/core/dist/runtime-v2/config/__tests__/pd-config-validation-edge-cases.test.d.ts.map +1 -0
  30. package/core/dist/runtime-v2/config/__tests__/pd-config-validation-edge-cases.test.js +433 -0
  31. package/core/dist/runtime-v2/config/__tests__/pd-config-validation-edge-cases.test.js.map +1 -0
  32. package/core/dist/runtime-v2/config/index.d.ts +14 -0
  33. package/core/dist/runtime-v2/config/index.d.ts.map +1 -0
  34. package/core/dist/runtime-v2/config/index.js +16 -0
  35. package/core/dist/runtime-v2/config/index.js.map +1 -0
  36. package/core/dist/runtime-v2/config/pd-config-defaults.d.ts +14 -0
  37. package/core/dist/runtime-v2/config/pd-config-defaults.d.ts.map +1 -0
  38. package/core/dist/runtime-v2/config/pd-config-defaults.js +74 -0
  39. package/core/dist/runtime-v2/config/pd-config-defaults.js.map +1 -0
  40. package/core/dist/runtime-v2/config/pd-config-effective.d.ts +14 -0
  41. package/core/dist/runtime-v2/config/pd-config-effective.d.ts.map +1 -0
  42. package/core/dist/runtime-v2/config/pd-config-effective.js +118 -0
  43. package/core/dist/runtime-v2/config/pd-config-effective.js.map +1 -0
  44. package/core/dist/runtime-v2/config/pd-config-feature-flags.d.ts +35 -0
  45. package/core/dist/runtime-v2/config/pd-config-feature-flags.d.ts.map +1 -0
  46. package/core/dist/runtime-v2/config/pd-config-feature-flags.js +99 -0
  47. package/core/dist/runtime-v2/config/pd-config-feature-flags.js.map +1 -0
  48. package/core/dist/runtime-v2/config/pd-config-redaction.d.ts +22 -0
  49. package/core/dist/runtime-v2/config/pd-config-redaction.d.ts.map +1 -0
  50. package/core/dist/runtime-v2/config/pd-config-redaction.js +179 -0
  51. package/core/dist/runtime-v2/config/pd-config-redaction.js.map +1 -0
  52. package/core/dist/runtime-v2/config/pd-config-types.d.ts +124 -0
  53. package/core/dist/runtime-v2/config/pd-config-types.d.ts.map +1 -0
  54. package/core/dist/runtime-v2/config/pd-config-types.js +35 -0
  55. package/core/dist/runtime-v2/config/pd-config-types.js.map +1 -0
  56. package/core/dist/runtime-v2/config/pd-config-validate.d.ts +16 -0
  57. package/core/dist/runtime-v2/config/pd-config-validate.d.ts.map +1 -0
  58. package/core/dist/runtime-v2/config/pd-config-validate.js +443 -0
  59. package/core/dist/runtime-v2/config/pd-config-validate.js.map +1 -0
  60. package/core/dist/runtime-v2/feature-flags/plugin-surface-registry.js +10 -10
  61. package/core/dist/runtime-v2/feature-flags/plugin-surface-registry.js.map +1 -1
  62. package/core/dist/runtime-v2/feedback/index.d.ts +1 -1
  63. package/core/dist/runtime-v2/feedback/index.d.ts.map +1 -1
  64. package/core/dist/runtime-v2/feedback/index.js +1 -1
  65. package/core/dist/runtime-v2/feedback/index.js.map +1 -1
  66. package/core/dist/runtime-v2/feedback/redact-sensitive.d.ts +2 -0
  67. package/core/dist/runtime-v2/feedback/redact-sensitive.d.ts.map +1 -1
  68. package/core/dist/runtime-v2/feedback/redact-sensitive.js +32 -3
  69. package/core/dist/runtime-v2/feedback/redact-sensitive.js.map +1 -1
  70. package/core/dist/runtime-v2/index.d.ts +5 -1
  71. package/core/dist/runtime-v2/index.d.ts.map +1 -1
  72. package/core/dist/runtime-v2/index.js +9 -1
  73. package/core/dist/runtime-v2/index.js.map +1 -1
  74. package/core/dist/runtime-v2/internalization/__tests__/philosopher-runner-trust-boundary.test.d.ts +2 -0
  75. package/core/dist/runtime-v2/internalization/__tests__/philosopher-runner-trust-boundary.test.d.ts.map +1 -0
  76. package/core/dist/runtime-v2/internalization/__tests__/philosopher-runner-trust-boundary.test.js +398 -0
  77. package/core/dist/runtime-v2/internalization/__tests__/philosopher-runner-trust-boundary.test.js.map +1 -0
  78. package/core/dist/runtime-v2/internalization/artificer-output.d.ts +3 -2
  79. package/core/dist/runtime-v2/internalization/artificer-output.d.ts.map +1 -1
  80. package/core/dist/runtime-v2/internalization/artificer-output.js +40 -31
  81. package/core/dist/runtime-v2/internalization/artificer-output.js.map +1 -1
  82. package/core/dist/runtime-v2/internalization/artificer-runner.d.ts +59 -38
  83. package/core/dist/runtime-v2/internalization/artificer-runner.d.ts.map +1 -1
  84. package/core/dist/runtime-v2/internalization/artificer-runner.js +121 -395
  85. package/core/dist/runtime-v2/internalization/artificer-runner.js.map +1 -1
  86. package/core/dist/runtime-v2/internalization/dreamer-output.d.ts +4 -3
  87. package/core/dist/runtime-v2/internalization/dreamer-output.d.ts.map +1 -1
  88. package/core/dist/runtime-v2/internalization/dreamer-output.js +11 -9
  89. package/core/dist/runtime-v2/internalization/dreamer-output.js.map +1 -1
  90. package/core/dist/runtime-v2/internalization/dreamer-runner.d.ts +31 -92
  91. package/core/dist/runtime-v2/internalization/dreamer-runner.d.ts.map +1 -1
  92. package/core/dist/runtime-v2/internalization/dreamer-runner.js +79 -495
  93. package/core/dist/runtime-v2/internalization/dreamer-runner.js.map +1 -1
  94. package/core/dist/runtime-v2/internalization/evaluator-output.d.ts +2 -2
  95. package/core/dist/runtime-v2/internalization/evaluator-output.d.ts.map +1 -1
  96. package/core/dist/runtime-v2/internalization/evaluator-output.js +29 -23
  97. package/core/dist/runtime-v2/internalization/evaluator-output.js.map +1 -1
  98. package/core/dist/runtime-v2/internalization/evaluator-runner.d.ts +74 -48
  99. package/core/dist/runtime-v2/internalization/evaluator-runner.d.ts.map +1 -1
  100. package/core/dist/runtime-v2/internalization/evaluator-runner.js +164 -444
  101. package/core/dist/runtime-v2/internalization/evaluator-runner.js.map +1 -1
  102. package/core/dist/runtime-v2/internalization/philosopher-output.d.ts +8 -2
  103. package/core/dist/runtime-v2/internalization/philosopher-output.d.ts.map +1 -1
  104. package/core/dist/runtime-v2/internalization/philosopher-output.js +16 -11
  105. package/core/dist/runtime-v2/internalization/philosopher-output.js.map +1 -1
  106. package/core/dist/runtime-v2/internalization/philosopher-runner.d.ts +36 -55
  107. package/core/dist/runtime-v2/internalization/philosopher-runner.d.ts.map +1 -1
  108. package/core/dist/runtime-v2/internalization/philosopher-runner.js +117 -401
  109. package/core/dist/runtime-v2/internalization/philosopher-runner.js.map +1 -1
  110. package/core/dist/runtime-v2/internalization/scribe-output.d.ts +8 -2
  111. package/core/dist/runtime-v2/internalization/scribe-output.d.ts.map +1 -1
  112. package/core/dist/runtime-v2/internalization/scribe-output.js +33 -17
  113. package/core/dist/runtime-v2/internalization/scribe-output.js.map +1 -1
  114. package/core/dist/runtime-v2/internalization/scribe-runner.d.ts +56 -49
  115. package/core/dist/runtime-v2/internalization/scribe-runner.d.ts.map +1 -1
  116. package/core/dist/runtime-v2/internalization/scribe-runner.js +116 -398
  117. package/core/dist/runtime-v2/internalization/scribe-runner.js.map +1 -1
  118. package/core/dist/runtime-v2/runner/__tests__/base-peer-runner-trust-boundary.test.d.ts +2 -0
  119. package/core/dist/runtime-v2/runner/__tests__/base-peer-runner-trust-boundary.test.d.ts.map +1 -0
  120. package/core/dist/runtime-v2/runner/__tests__/base-peer-runner-trust-boundary.test.js +379 -0
  121. package/core/dist/runtime-v2/runner/__tests__/base-peer-runner-trust-boundary.test.js.map +1 -0
  122. package/core/dist/runtime-v2/runner/base-peer-runner.d.ts +122 -0
  123. package/core/dist/runtime-v2/runner/base-peer-runner.d.ts.map +1 -0
  124. package/core/dist/runtime-v2/runner/base-peer-runner.js +528 -0
  125. package/core/dist/runtime-v2/runner/base-peer-runner.js.map +1 -0
  126. package/core/dist/runtime-v2/runner/peer-runner-types.d.ts +107 -0
  127. package/core/dist/runtime-v2/runner/peer-runner-types.d.ts.map +1 -0
  128. package/core/dist/runtime-v2/runner/peer-runner-types.js +13 -0
  129. package/core/dist/runtime-v2/runner/peer-runner-types.js.map +1 -0
  130. package/core/dist/telemetry-event.d.ts +2 -2
  131. package/core/dist/telemetry-event.d.ts.map +1 -1
  132. package/core/dist/telemetry-event.js +89 -0
  133. package/core/dist/telemetry-event.js.map +1 -1
  134. package/dist/installer.d.ts +1 -1
  135. package/dist/installer.d.ts.map +1 -1
  136. package/dist/installer.js +24 -10
  137. package/dist/installer.js.map +1 -1
  138. package/dist/mvp-config.d.ts +33 -0
  139. package/dist/mvp-config.d.ts.map +1 -1
  140. package/dist/mvp-config.js +174 -0
  141. package/dist/mvp-config.js.map +1 -1
  142. package/package.json +1 -1
  143. package/pd-cli/dist/commands/config-doctor.d.ts +17 -0
  144. package/pd-cli/dist/commands/config-doctor.d.ts.map +1 -0
  145. package/pd-cli/dist/commands/config-doctor.js +143 -0
  146. package/pd-cli/dist/commands/config-doctor.js.map +1 -0
  147. package/pd-cli/dist/commands/console.d.ts +18 -0
  148. package/pd-cli/dist/commands/console.d.ts.map +1 -1
  149. package/pd-cli/dist/commands/console.js +439 -0
  150. package/pd-cli/dist/commands/console.js.map +1 -1
  151. package/pd-cli/dist/commands/runtime-features.d.ts +23 -8
  152. package/pd-cli/dist/commands/runtime-features.d.ts.map +1 -1
  153. package/pd-cli/dist/commands/runtime-features.js +72 -31
  154. package/pd-cli/dist/commands/runtime-features.js.map +1 -1
  155. package/pd-cli/dist/index.d.ts +1 -1
  156. package/pd-cli/dist/index.js +83 -31
  157. package/pd-cli/dist/index.js.map +1 -1
  158. package/pd-cli/dist/services/config-doctor.d.ts +102 -0
  159. package/pd-cli/dist/services/config-doctor.d.ts.map +1 -0
  160. package/pd-cli/dist/services/config-doctor.js +426 -0
  161. package/pd-cli/dist/services/config-doctor.js.map +1 -0
  162. package/pd-cli/dist/services/console-launcher.d.ts +110 -0
  163. package/pd-cli/dist/services/console-launcher.d.ts.map +1 -0
  164. package/pd-cli/dist/services/console-launcher.js +282 -0
  165. package/pd-cli/dist/services/console-launcher.js.map +1 -0
  166. package/pd-cli/dist/services/pd-config-loader.d.ts +64 -0
  167. package/pd-cli/dist/services/pd-config-loader.d.ts.map +1 -0
  168. package/pd-cli/dist/services/pd-config-loader.js +156 -0
  169. package/pd-cli/dist/services/pd-config-loader.js.map +1 -0
  170. package/pd-cli/package.json +3 -1
  171. package/plugin/dist/core/event-log.d.ts +10 -0
  172. package/plugin/dist/core/event-log.js +85 -1
  173. package/plugin/dist/core/pd-config-loader.d.ts +96 -0
  174. package/plugin/dist/core/pd-config-loader.js +307 -0
  175. package/plugin/dist/core/runtime-v2-prompt-activation-reader.d.ts +4 -0
  176. package/plugin/dist/core/runtime-v2-prompt-activation-reader.js +12 -56
  177. package/plugin/dist/core/surface-guard.d.ts +12 -8
  178. package/plugin/dist/core/surface-guard.js +51 -2
  179. package/plugin/dist/hooks/gate.js +3 -0
  180. package/plugin/dist/index.d.ts +4 -0
  181. package/plugin/dist/index.js +8 -52
  182. package/plugin/dist/service/correction-observer-service.d.ts +8 -0
  183. package/plugin/dist/service/correction-observer-service.js +48 -29
@@ -2,6 +2,10 @@ import * as path from 'path';
2
2
  import * as fs from 'fs';
3
3
  import { spawn } from 'child_process';
4
4
  import { resolveWorkspaceDir } from '../resolve-workspace.js';
5
+ import { planConsoleLaunch, openBrowser, isLoopbackHost, normalizeLoopbackHost, probeConsoleHealth, } from '../services/console-launcher.js';
6
+ function sleep(ms) {
7
+ return new Promise((res) => setTimeout(res, ms));
8
+ }
5
9
  function getConsoleDir() {
6
10
  const homeDir = process.env.HOME || process.env.USERPROFILE;
7
11
  if (!homeDir)
@@ -111,4 +115,439 @@ export async function handleConsole(opts = {}) {
111
115
  process.on('SIGINT', cleanup);
112
116
  process.on('SIGTERM', cleanup);
113
117
  }
118
+ // ─── Seed-friendly launcher (pd console open) — PRI-300 ─────────────────────
119
+ /**
120
+ * Launch (or reuse) the PD Console with seed-friendly defaults:
121
+ * - Default port 3100; auto-falls back to next free port
122
+ * - Reuses an existing healthy Console if one is already running
123
+ * - Opens the system browser on success (skipped in --json)
124
+ * - Refuses non-loopback hosts
125
+ * - Emits structured reason+nextAction on every failure path
126
+ */
127
+ export async function handleConsoleOpen(opts = {}) {
128
+ // 1) Loopback safety (ERR-049: refuse non-loopback) — check FIRST so we
129
+ // never reveal runtime information about non-loopback hosts and refuse before workspace resolution.
130
+ const rawHost = opts.host ?? '127.0.0.1';
131
+ // Normalize IPv6 bracket notation: [::1] → ::1 (ERR-049)
132
+ const host = normalizeLoopbackHost(rawHost);
133
+ if (!isLoopbackHost(host)) {
134
+ const result = {
135
+ status: 'refused',
136
+ url: '',
137
+ port: 0,
138
+ host,
139
+ workspaceDir: '',
140
+ reused: false,
141
+ browserOpened: false,
142
+ reason: `Non-loopback host refused: '${host}'. Console binds to loopback only.`,
143
+ nextAction: 'Use the default (127.0.0.1) or "localhost". Do not pass --host 0.0.0.0 or a LAN address.',
144
+ };
145
+ if (opts.json) {
146
+ console.log(JSON.stringify(result, null, 2));
147
+ }
148
+ else {
149
+ console.error(`error: ${result.reason}`);
150
+ console.error(`next: ${result.nextAction}`);
151
+ }
152
+ process.exit(1);
153
+ return;
154
+ }
155
+ // 2) Resolve workspace (ERR-040: fail loud if missing)
156
+ let workspaceDir;
157
+ try {
158
+ workspaceDir = opts.workspace ? path.resolve(opts.workspace) : resolveWorkspaceDir();
159
+ }
160
+ catch (err) {
161
+ const message = err instanceof Error ? err.message : String(err);
162
+ const result = {
163
+ status: 'failed',
164
+ url: '',
165
+ port: 0,
166
+ host,
167
+ workspaceDir: '',
168
+ reused: false,
169
+ browserOpened: false,
170
+ reason: 'workspace_missing',
171
+ nextAction: 'Pass --workspace <path>, set PD_WORKSPACE_DIR, or run from within an initialized workspace.',
172
+ };
173
+ if (opts.json) {
174
+ console.log(JSON.stringify({ ...result, message }, null, 2));
175
+ }
176
+ else {
177
+ console.error(`error: ${message}`);
178
+ console.error(`next: ${result.nextAction}`);
179
+ }
180
+ process.exit(1);
181
+ return;
182
+ }
183
+ // 3) Strict port parsing
184
+ let preferredPort = 3100;
185
+ if (opts.port !== undefined) {
186
+ if (!/^\d+$/.test(opts.port)) {
187
+ const result = {
188
+ status: 'failed',
189
+ url: '',
190
+ port: 0,
191
+ host,
192
+ workspaceDir,
193
+ reused: false,
194
+ browserOpened: false,
195
+ reason: `Invalid --port: '${opts.port}'. Must be an integer 1..65535.`,
196
+ nextAction: 'Use --port 3100 (default) or another valid port number.',
197
+ };
198
+ if (opts.json) {
199
+ console.log(JSON.stringify(result, null, 2));
200
+ }
201
+ else {
202
+ console.error(`error: ${result.reason}`);
203
+ console.error(`next: ${result.nextAction}`);
204
+ }
205
+ process.exit(1);
206
+ return;
207
+ }
208
+ preferredPort = Number(opts.port);
209
+ if (preferredPort < 1 || preferredPort > 65535) {
210
+ const result = {
211
+ status: 'failed',
212
+ url: '',
213
+ port: 0,
214
+ host,
215
+ workspaceDir,
216
+ reused: false,
217
+ browserOpened: false,
218
+ reason: `Invalid --port: '${opts.port}'. Must be an integer 1..65535.`,
219
+ nextAction: 'Use --port 3100 (default) or another valid port number.',
220
+ };
221
+ if (opts.json) {
222
+ console.log(JSON.stringify(result, null, 2));
223
+ }
224
+ else {
225
+ console.error(`error: ${result.reason}`);
226
+ console.error(`next: ${result.nextAction}`);
227
+ }
228
+ process.exit(1);
229
+ return;
230
+ }
231
+ }
232
+ // 3) Check that the console runtime is installed (ERR-040: fail loud if missing)
233
+ const consoleDir = getConsoleDir();
234
+ if (!consoleDir) {
235
+ const result = {
236
+ status: 'failed',
237
+ url: '',
238
+ port: 0,
239
+ host: '127.0.0.1',
240
+ workspaceDir,
241
+ reused: false,
242
+ browserOpened: false,
243
+ reason: 'console_runtime_not_installed',
244
+ nextAction: 'Run: npx create-principles-disciple',
245
+ };
246
+ if (opts.json) {
247
+ console.log(JSON.stringify(result, null, 2));
248
+ }
249
+ else {
250
+ console.error(`error: ${result.reason}`);
251
+ console.error(`next: ${result.nextAction}`);
252
+ }
253
+ process.exit(1);
254
+ return;
255
+ }
256
+ const serverEntry = path.join(consoleDir, 'dist', 'server.js');
257
+ if (!fs.existsSync(serverEntry)) {
258
+ const result = {
259
+ status: 'failed',
260
+ url: '',
261
+ port: 0,
262
+ host: '127.0.0.1',
263
+ workspaceDir,
264
+ reused: false,
265
+ browserOpened: false,
266
+ reason: 'console_server_entry_missing',
267
+ nextAction: `Re-run installer: npx create-principles-disciple (expected ${serverEntry})`,
268
+ };
269
+ if (opts.json) {
270
+ console.log(JSON.stringify(result, null, 2));
271
+ }
272
+ else {
273
+ console.error(`error: ${result.reason}`);
274
+ console.error(`next: ${result.nextAction}`);
275
+ }
276
+ process.exit(1);
277
+ return;
278
+ }
279
+ // 4) Read auth token for health probes (PD_CONSOLE_TOKEN)
280
+ const token = process.env.PD_CONSOLE_TOKEN;
281
+ // 5) Plan the launch (reuse or fresh bind)
282
+ let plan;
283
+ try {
284
+ plan = await planConsoleLaunch({ workspaceDir, preferredPort, host, token });
285
+ }
286
+ catch (err) {
287
+ const message = err instanceof Error ? err.message : String(err);
288
+ const result = {
289
+ status: 'failed',
290
+ url: '',
291
+ port: preferredPort,
292
+ host,
293
+ workspaceDir,
294
+ reused: false,
295
+ browserOpened: false,
296
+ reason: 'launch_plan_error',
297
+ nextAction: 'Inspect logs and retry.',
298
+ };
299
+ if (opts.json) {
300
+ console.log(JSON.stringify({ ...result, message }, null, 2));
301
+ }
302
+ else {
303
+ console.error(`error: launch plan failed: ${message}`);
304
+ }
305
+ process.exit(1);
306
+ return;
307
+ }
308
+ if (plan.status === 'refused') {
309
+ const result = {
310
+ status: 'refused',
311
+ url: '',
312
+ port: plan.port,
313
+ host: plan.host,
314
+ workspaceDir,
315
+ reused: false,
316
+ browserOpened: false,
317
+ reason: plan.reason,
318
+ nextAction: plan.nextAction,
319
+ };
320
+ if (opts.json) {
321
+ console.log(JSON.stringify(result, null, 2));
322
+ }
323
+ else {
324
+ console.error(`error: ${result.reason}`);
325
+ console.error(`next: ${result.nextAction}`);
326
+ }
327
+ process.exit(1);
328
+ return;
329
+ }
330
+ if (plan.status === 'reused') {
331
+ // Existing console — verify health one more time (already healthy from plan, but be safe)
332
+ const health = await probeConsoleHealth({ host: plan.host, port: plan.port, token });
333
+ if (!health.healthy) {
334
+ const result = {
335
+ status: 'failed',
336
+ url: '',
337
+ port: plan.port,
338
+ host: plan.host,
339
+ workspaceDir,
340
+ reused: false,
341
+ browserOpened: false,
342
+ reason: `port_in_use_by_non_console: ${health.reason ?? 'health probe failed'}`,
343
+ nextAction: 'Stop the conflicting process, or use --port <free> to bind a different port.',
344
+ };
345
+ if (opts.json) {
346
+ console.log(JSON.stringify(result, null, 2));
347
+ }
348
+ else {
349
+ console.error(`error: ${result.reason}`);
350
+ console.error(`next: ${result.nextAction}`);
351
+ }
352
+ process.exit(1);
353
+ return;
354
+ }
355
+ // Reused path — do not spawn. Optionally open browser.
356
+ let browserOpened = false;
357
+ let browserWarning;
358
+ if (!opts.json && !opts.noBrowser) {
359
+ const result = await openBrowser(plan.url);
360
+ browserOpened = result.opened;
361
+ if (!result.opened) {
362
+ browserWarning = result.reason;
363
+ }
364
+ }
365
+ const out = {
366
+ status: 'reused',
367
+ url: plan.url,
368
+ port: plan.port,
369
+ host: plan.host,
370
+ workspaceDir,
371
+ reused: true,
372
+ browserOpened,
373
+ nextAction: browserOpened
374
+ ? 'Browser opened to the running Console.'
375
+ : `Open ${plan.url} in your browser to access the Console.`,
376
+ };
377
+ if (browserWarning)
378
+ out.reason = `browser_open_failed: ${browserWarning}`;
379
+ if (opts.json) {
380
+ console.log(JSON.stringify(out, null, 2));
381
+ }
382
+ else {
383
+ console.log(`Reusing existing Console at ${plan.url}`);
384
+ if (browserOpened) {
385
+ console.log('Browser opened.');
386
+ }
387
+ else if (browserWarning) {
388
+ console.log(`Browser not opened: ${browserWarning}`);
389
+ console.log(out.nextAction);
390
+ }
391
+ else {
392
+ console.log(out.nextAction);
393
+ }
394
+ }
395
+ return;
396
+ }
397
+ // 5) Fresh spawn path
398
+ const args = [serverEntry, '--workspace', workspaceDir, '--port', String(plan.port), '--host', plan.host];
399
+ if (opts.noAuth)
400
+ args.push('--no-auth');
401
+ const child = spawn(process.execPath, args, {
402
+ stdio: opts.json ? 'pipe' : 'inherit',
403
+ env: { ...process.env },
404
+ });
405
+ let resolved = false;
406
+ const resolveOnce = (fn) => {
407
+ if (resolved)
408
+ return;
409
+ resolved = true;
410
+ fn();
411
+ };
412
+ const cleanup = () => {
413
+ resolveOnce(() => {
414
+ try {
415
+ child.kill('SIGTERM');
416
+ }
417
+ catch { /* ignore */ }
418
+ process.exit(0);
419
+ });
420
+ };
421
+ child.on('error', (err) => {
422
+ resolveOnce(() => {
423
+ const result = {
424
+ status: 'failed',
425
+ url: '',
426
+ port: plan.port,
427
+ host: plan.host,
428
+ workspaceDir,
429
+ reused: false,
430
+ browserOpened: false,
431
+ reason: `console_spawn_failed: ${err.message}`,
432
+ nextAction: 'Check Node.js and package path configuration.',
433
+ };
434
+ if (opts.json) {
435
+ console.log(JSON.stringify(result, null, 2));
436
+ }
437
+ else {
438
+ console.error(`error: ${result.reason}`);
439
+ }
440
+ try {
441
+ child.kill('SIGTERM');
442
+ }
443
+ catch { /* ignore */ }
444
+ process.exit(1);
445
+ });
446
+ });
447
+ process.on('SIGINT', cleanup);
448
+ process.on('SIGTERM', cleanup);
449
+ // 7) Wait for console ready (bounded poll)
450
+ const readyDeadline = Date.now() + 15_000;
451
+ let ready = false;
452
+ while (Date.now() < readyDeadline) {
453
+ if (child.exitCode !== null)
454
+ break;
455
+ const h = await probeConsoleHealth({ host: plan.host, port: plan.port, timeoutMs: 1000, token });
456
+ if (h.healthy) {
457
+ ready = true;
458
+ break;
459
+ }
460
+ await sleep(250);
461
+ }
462
+ if (child.exitCode !== null && child.exitCode !== 0) {
463
+ const result = {
464
+ status: 'failed',
465
+ url: '',
466
+ port: plan.port,
467
+ host: plan.host,
468
+ workspaceDir,
469
+ reused: false,
470
+ browserOpened: false,
471
+ reason: `console_exited_with_code_${child.exitCode}`,
472
+ nextAction: 'Check console logs above. Re-run: npx create-principles-disciple',
473
+ };
474
+ if (opts.json) {
475
+ console.log(JSON.stringify(result, null, 2));
476
+ }
477
+ else {
478
+ console.error(`error: ${result.reason}`);
479
+ }
480
+ process.exit(typeof child.exitCode === 'number' ? child.exitCode : 1);
481
+ return;
482
+ }
483
+ if (!ready) {
484
+ // Clean up: kill the orphan child
485
+ try {
486
+ child.kill('SIGTERM');
487
+ }
488
+ catch { /* ignore */ }
489
+ const result = {
490
+ status: 'failed',
491
+ url: '',
492
+ port: plan.port,
493
+ host: plan.host,
494
+ workspaceDir,
495
+ reused: false,
496
+ browserOpened: false,
497
+ reason: 'console_health_check_timeout',
498
+ nextAction: 'Increase timeout, free system resources, or re-run: npx create-principles-disciple',
499
+ };
500
+ if (opts.json) {
501
+ console.log(JSON.stringify(result, null, 2));
502
+ }
503
+ else {
504
+ console.error(`error: ${result.reason}`);
505
+ console.error(`next: ${result.nextAction}`);
506
+ }
507
+ process.exit(1);
508
+ return;
509
+ }
510
+ // 7) Console is ready → optionally open browser, emit result, then keep child running
511
+ let browserOpened = false;
512
+ let browserWarning;
513
+ if (!opts.json && !opts.noBrowser) {
514
+ const r = await openBrowser(plan.url);
515
+ browserOpened = r.opened;
516
+ if (!r.opened)
517
+ browserWarning = r.reason;
518
+ }
519
+ const out = {
520
+ status: 'started',
521
+ url: plan.url,
522
+ port: plan.port,
523
+ host: plan.host,
524
+ workspaceDir,
525
+ reused: false,
526
+ browserOpened,
527
+ nextAction: browserOpened
528
+ ? 'Browser opened to the Console. Press Ctrl+C to stop.'
529
+ : `Open ${plan.url} in your browser. Press Ctrl+C to stop.`,
530
+ };
531
+ if (plan.reason)
532
+ out.reason = plan.reason;
533
+ if (browserWarning) {
534
+ out.reason = out.reason ? `${out.reason}; browser_open_failed: ${browserWarning}` : `browser_open_failed: ${browserWarning}`;
535
+ }
536
+ if (opts.json) {
537
+ // Single JSON object on stdout, then keep child attached.
538
+ console.log(JSON.stringify(out, null, 2));
539
+ }
540
+ else {
541
+ console.log(`\nConsole ready: ${plan.url}`);
542
+ console.log(`Workspace: ${workspaceDir}`);
543
+ if (plan.reason)
544
+ console.log(`Note: ${plan.reason}`);
545
+ if (browserOpened) {
546
+ console.log('Browser opened. Press Ctrl+C to stop.');
547
+ }
548
+ else {
549
+ console.log(`Open ${plan.url} in your browser. Press Ctrl+C to stop.`);
550
+ }
551
+ }
552
+ }
114
553
  //# sourceMappingURL=console.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"console.js","sourceRoot":"","sources":["../../src/commands/console.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"console.js","sourceRoot":"","sources":["../../src/commands/console.ts"],"names":[],"mappings":"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"}
@@ -1,26 +1,41 @@
1
- export interface FeatureFlagsStatusOutput {
2
- status: 'ok' | 'degraded';
3
- source: string;
1
+ /**
2
+ * pd runtime features — Show effective feature flags from .pd/config.yaml.
3
+ *
4
+ * PRI-305: Cutover from .pd/feature-flags.yaml to .pd/config.yaml.
5
+ * Uses core computeFeatureFlagsFromConfig for flag computation.
6
+ * --json outputs a single parseable JSON object.
7
+ * Missing config uses core defaults with nextAction.
8
+ * Malformed config fails loud with reason and nextAction.
9
+ * No secret output.
10
+ */
11
+ export interface RuntimeFeaturesOutput {
12
+ status: 'ok' | 'degraded' | 'failed';
13
+ source: 'defaults' | 'user_config' | 'malformed';
4
14
  configPath: string;
5
- flags: {
15
+ features: {
6
16
  id: string;
7
17
  category: string;
8
18
  enabled: boolean;
9
- since: string;
10
- description?: string;
11
19
  }[];
12
- warnings: string[];
20
+ enabledMvpChannels: string[];
13
21
  totalFlags: number;
14
22
  enabledCount: number;
15
23
  disabledCount: number;
24
+ warnings: string[];
16
25
  reason?: string;
17
26
  nextAction?: string;
27
+ /** Malformed config errors (only present when source=malformed) */
28
+ errors?: {
29
+ path: string;
30
+ reason: string;
31
+ nextAction: string;
32
+ }[];
18
33
  }
34
+ export declare function buildRuntimeFeaturesStatus(workspaceDir: string): RuntimeFeaturesOutput;
19
35
  interface FeaturesOptions {
20
36
  workspace?: string;
21
37
  json?: boolean;
22
38
  }
23
- export declare function buildFeatureFlagsStatus(workspaceDir: string): FeatureFlagsStatusOutput;
24
39
  export declare function handleRuntimeFeaturesStatus(opts: FeaturesOptions): Promise<void>;
25
40
  export {};
26
41
  //# sourceMappingURL=runtime-features.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"runtime-features.d.ts","sourceRoot":"","sources":["../../src/commands/runtime-features.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,wBAAwB;IACvC,MAAM,EAAE,IAAI,GAAG,UAAU,CAAC;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE;QACL,EAAE,EAAE,MAAM,CAAC;QACX,QAAQ,EAAE,MAAM,CAAC;QACjB,OAAO,EAAE,OAAO,CAAC;QACjB,KAAK,EAAE,MAAM,CAAC;QACd,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,EAAE,CAAC;IACJ,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,UAAU,eAAe;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,wBAAgB,uBAAuB,CAAC,YAAY,EAAE,MAAM,GAAG,wBAAwB,CA0BtF;AAoCD,wBAAsB,2BAA2B,CAAC,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAYtF"}
1
+ {"version":3,"file":"runtime-features.d.ts","sourceRoot":"","sources":["../../src/commands/runtime-features.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAQH,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,IAAI,GAAG,UAAU,GAAG,QAAQ,CAAC;IACrC,MAAM,EAAE,UAAU,GAAG,aAAa,GAAG,WAAW,CAAC;IACjD,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE;QACR,EAAE,EAAE,MAAM,CAAC;QACX,QAAQ,EAAE,MAAM,CAAC;QACjB,OAAO,EAAE,OAAO,CAAC;KAClB,EAAE,CAAC;IACJ,kBAAkB,EAAE,MAAM,EAAE,CAAC;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,mEAAmE;IACnE,MAAM,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CACjE;AAID,wBAAgB,0BAA0B,CAAC,YAAY,EAAE,MAAM,GAAG,qBAAqB,CA6CtF;AAkDD,UAAU,eAAe;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,wBAAsB,2BAA2B,CAAC,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAiBtF"}