@vodmal/vdx-cli 0.37.0 → 0.37.1

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 CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vodmal/vdx-cli",
3
- "version": "0.37.0",
3
+ "version": "0.37.1",
4
4
  "description": "vdx — unified lifecycle interface (up/down/build/test/check/fix) + versioned maturity audit with drift detection. Pairs with the vdx Claude Code plugin.",
5
5
  "keywords": [
6
6
  "vdx",
package/src/ai.ts CHANGED
@@ -1283,10 +1283,12 @@ function chooseConversation(plan: LaunchPlan, deps: AiDeps, canAsk: boolean): Co
1283
1283
  const host = plan.host;
1284
1284
  const same = sameMachine;
1285
1285
  // A mail session's conversations are its own: a start of the person's never continues one.
1286
- const all =
1286
+ const listed =
1287
1287
  plan.resumeArgs.length === 0
1288
1288
  ? []
1289
- : listConversations({ env: deps.env, home: deps.home, projectRoot: plan.projectRoot }).filter((c) => !c.mail);
1289
+ : listConversations({ env: deps.env, home: deps.home, projectRoot: plan.projectRoot });
1290
+ const all = listed.filter((c) => !c.mail);
1291
+ const mailOnly = listed.length - all.length;
1290
1292
  const root = shellQuote(plan.projectRoot);
1291
1293
  // Said from where the person sits: under `vdx ai@<host>` that is not this machine.
1292
1294
  const atSeat = same(plan.seat, host);
@@ -1320,7 +1322,14 @@ function chooseConversation(plan: LaunchPlan, deps: AiDeps, canAsk: boolean): Co
1320
1322
  return { args: [], elsewhere: [...new Set(elsewhere.map(({ m }) => m))], lines: [...lines, ...agents] };
1321
1323
  };
1322
1324
  if (plan.resumeArgs.length === 0) return fresh(silent);
1323
- if (all.length === 0) return fresh(['no conversation of this project yet — starting a new one', ...silent]);
1325
+ if (all.length === 0) {
1326
+ return fresh([
1327
+ mailOnly
1328
+ ? `only the mail session's conversations here (${mailOnly}; vdx ai --conversation <id> opens one) — starting a new one`
1329
+ : 'no conversation of this project yet — starting a new one',
1330
+ ...silent,
1331
+ ]);
1332
+ }
1324
1333
 
1325
1334
  const live = new Map<string, { machine: string; session: LiveSession; here: boolean }[]>();
1326
1335
  const addLive = (machine: string, session: LiveSession, here: boolean) =>
package/src/index.ts CHANGED
@@ -630,7 +630,8 @@ function cmdDoctor(opts: ParsedArgs): void {
630
630
  const memory = root ? checkClaudeMemory({ projectRoot: root }) : null;
631
631
  if (root && memory?.remedy) {
632
632
  try {
633
- const interactive = process.stdin.isTTY === true && process.stdout.isTTY === true;
633
+ // The question goes to stderr: the report on stdout may be redirected.
634
+ const interactive = process.stdin.isTTY === true && process.stderr.isTTY === true;
634
635
  const done = fixDoctorMemory(root, memoryState(root, { env: process.env, home: os.homedir() }), {
635
636
  ask: (prompt) => (interactive ? askLine(prompt) : null),
636
637
  log: (line) => process.stderr.write(line + '\n'),