@orquentra/codebuddy 2.15.0 → 2.15.3

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 (82) hide show
  1. package/ARCHITECTURE.md +12 -7
  2. package/README.md +2 -2
  3. package/dist/{chunk-YMXFSHXT.js → chunk-3L5IR6OW.js} +2 -2
  4. package/dist/{chunk-YMXFSHXT.js.map → chunk-3L5IR6OW.js.map} +1 -1
  5. package/dist/{chunk-JJQDVGF7.js → chunk-3TZNQJTH.js} +3 -3
  6. package/dist/{chunk-4BSO3HST.js → chunk-4LMBZWIF.js} +48 -13
  7. package/dist/chunk-4LMBZWIF.js.map +1 -0
  8. package/dist/{chunk-WHKXUXHE.js → chunk-4TKKLQLH.js} +5 -5
  9. package/dist/chunk-4TKKLQLH.js.map +1 -0
  10. package/dist/{chunk-KQCP3ZYH.js → chunk-5ZLNHYJH.js} +31 -15
  11. package/dist/chunk-5ZLNHYJH.js.map +1 -0
  12. package/dist/{chunk-U7KDM62P.js → chunk-6KSSJJZO.js} +17 -9
  13. package/dist/chunk-6KSSJJZO.js.map +1 -0
  14. package/dist/{chunk-6YI2D5F5.js → chunk-7IXPARDM.js} +3 -3
  15. package/dist/{chunk-UTPC66MV.js → chunk-FEFOZ2ZW.js} +23 -4
  16. package/dist/chunk-FEFOZ2ZW.js.map +1 -0
  17. package/dist/{chunk-ITXE27SZ.js → chunk-FGJ2KPPN.js} +104 -22
  18. package/dist/chunk-FGJ2KPPN.js.map +1 -0
  19. package/dist/{chunk-D5E7SGI5.js → chunk-KGDRGA2L.js} +14 -14
  20. package/dist/{chunk-D5E7SGI5.js.map → chunk-KGDRGA2L.js.map} +1 -1
  21. package/dist/{chunk-UR3DF74I.js → chunk-LZTYPJ5I.js} +36 -18
  22. package/dist/chunk-LZTYPJ5I.js.map +1 -0
  23. package/dist/{chunk-UATJCD2T.js → chunk-R5E2YGLE.js} +14 -8
  24. package/dist/chunk-R5E2YGLE.js.map +1 -0
  25. package/dist/chunk-R5JRKMEP.js +55 -0
  26. package/dist/chunk-R5JRKMEP.js.map +1 -0
  27. package/dist/{chunk-RZ266NHE.js → chunk-SPQU2422.js} +5 -5
  28. package/dist/{chunk-RZ266NHE.js.map → chunk-SPQU2422.js.map} +1 -1
  29. package/dist/{chunk-BTTQWSDS.js → chunk-SXVH74NE.js} +36 -6
  30. package/dist/chunk-SXVH74NE.js.map +1 -0
  31. package/dist/{chunk-KYRM3HPP.js → chunk-TIMS3PB7.js} +3 -3
  32. package/dist/{chunk-M75SN4D4.js → chunk-Y4QQML24.js} +3 -3
  33. package/dist/{chunk-M75SN4D4.js.map → chunk-Y4QQML24.js.map} +1 -1
  34. package/dist/cli/index.js +4 -4
  35. package/dist/{config-TXQJCCVI.js → config-32X53LWY.js} +4 -4
  36. package/dist/{expand-KWYGNCKZ.js → expand-VFYOWNZS.js} +5 -5
  37. package/dist/{file-vectors-MKXTSGGH.js → file-vectors-UBOKGYXX.js} +4 -3
  38. package/dist/{index-facts-4MTEHKMN.js → index-facts-ZTUANWBF.js} +7 -7
  39. package/dist/index-pass-S6NC25P5.js +15 -0
  40. package/dist/index.js +9 -8
  41. package/dist/{install-E3JWINTN.js → install-ZTE3H7QM.js} +8 -7
  42. package/dist/{lean-MLTAFS5L.js → lean-5N6BOONS.js} +5 -4
  43. package/dist/{local-75DJECVR.js → local-5EYLEBEP.js} +4 -2
  44. package/dist/{local-llm-MECVJTVU.js → local-llm-ESMVP5LE.js} +4 -4
  45. package/dist/{main-RLMKQZW4.js → main-B3HZCGVE.js} +61 -50
  46. package/dist/main-B3HZCGVE.js.map +1 -0
  47. package/dist/{memory-PFFVMTCH.js → memory-CI7HIGHN.js} +5 -5
  48. package/dist/{operations-STR7S5UO.js → operations-MW52HIQ3.js} +4 -4
  49. package/dist/{rerank-XXKWDI5Q.js → rerank-O4S5BC45.js} +5 -5
  50. package/dist/{runtime-SWFWGTQ4.js → runtime-SZAWIXEB.js} +6 -5
  51. package/dist/{summaries-QXWFFDUZ.js → summaries-GCHZGIIA.js} +11 -8
  52. package/dist/{zvec-F73IBWO5.js → zvec-V34P24WF.js} +11 -6
  53. package/package.json +1 -1
  54. package/dist/chunk-4BSO3HST.js.map +0 -1
  55. package/dist/chunk-BTTQWSDS.js.map +0 -1
  56. package/dist/chunk-ITXE27SZ.js.map +0 -1
  57. package/dist/chunk-KQCP3ZYH.js.map +0 -1
  58. package/dist/chunk-U7KDM62P.js.map +0 -1
  59. package/dist/chunk-UATJCD2T.js.map +0 -1
  60. package/dist/chunk-UR3DF74I.js.map +0 -1
  61. package/dist/chunk-UTPC66MV.js.map +0 -1
  62. package/dist/chunk-WHKXUXHE.js.map +0 -1
  63. package/dist/index-pass-TBDUEZCB.js +0 -14
  64. package/dist/main-RLMKQZW4.js.map +0 -1
  65. /package/dist/{chunk-JJQDVGF7.js.map → chunk-3TZNQJTH.js.map} +0 -0
  66. /package/dist/{chunk-6YI2D5F5.js.map → chunk-7IXPARDM.js.map} +0 -0
  67. /package/dist/{chunk-KYRM3HPP.js.map → chunk-TIMS3PB7.js.map} +0 -0
  68. /package/dist/{config-TXQJCCVI.js.map → config-32X53LWY.js.map} +0 -0
  69. /package/dist/{expand-KWYGNCKZ.js.map → expand-VFYOWNZS.js.map} +0 -0
  70. /package/dist/{file-vectors-MKXTSGGH.js.map → file-vectors-UBOKGYXX.js.map} +0 -0
  71. /package/dist/{index-facts-4MTEHKMN.js.map → index-facts-ZTUANWBF.js.map} +0 -0
  72. /package/dist/{index-pass-TBDUEZCB.js.map → index-pass-S6NC25P5.js.map} +0 -0
  73. /package/dist/{install-E3JWINTN.js.map → install-ZTE3H7QM.js.map} +0 -0
  74. /package/dist/{lean-MLTAFS5L.js.map → lean-5N6BOONS.js.map} +0 -0
  75. /package/dist/{local-75DJECVR.js.map → local-5EYLEBEP.js.map} +0 -0
  76. /package/dist/{local-llm-MECVJTVU.js.map → local-llm-ESMVP5LE.js.map} +0 -0
  77. /package/dist/{memory-PFFVMTCH.js.map → memory-CI7HIGHN.js.map} +0 -0
  78. /package/dist/{operations-STR7S5UO.js.map → operations-MW52HIQ3.js.map} +0 -0
  79. /package/dist/{rerank-XXKWDI5Q.js.map → rerank-O4S5BC45.js.map} +0 -0
  80. /package/dist/{runtime-SWFWGTQ4.js.map → runtime-SZAWIXEB.js.map} +0 -0
  81. /package/dist/{summaries-QXWFFDUZ.js.map → summaries-GCHZGIIA.js.map} +0 -0
  82. /package/dist/{zvec-F73IBWO5.js.map → zvec-V34P24WF.js.map} +0 -0
@@ -5,16 +5,17 @@ import {
5
5
  isReadOnlyPrompt,
6
6
  renderLeanBlock,
7
7
  runLeanHook
8
- } from "./chunk-JJQDVGF7.js";
8
+ } from "./chunk-3TZNQJTH.js";
9
9
  import "./chunk-7IPSDDO5.js";
10
10
  import "./chunk-TGFTKWOR.js";
11
11
  import "./chunk-GQKWUHMA.js";
12
- import "./chunk-UR3DF74I.js";
12
+ import "./chunk-LZTYPJ5I.js";
13
13
  import "./chunk-Y7D7PUBE.js";
14
+ import "./chunk-R5JRKMEP.js";
14
15
  import "./chunk-57642NGU.js";
15
16
  import "./chunk-EMWGLKPR.js";
16
17
  import "./chunk-AL6VBTNA.js";
17
- import "./chunk-M75SN4D4.js";
18
+ import "./chunk-Y4QQML24.js";
18
19
  import "./chunk-CG5B3LYG.js";
19
20
  import "./chunk-HPOR6YXA.js";
20
21
  import "./chunk-PZ5AY32C.js";
@@ -26,4 +27,4 @@ export {
26
27
  renderLeanBlock,
27
28
  runLeanHook
28
29
  };
29
- //# sourceMappingURL=lean-MLTAFS5L.js.map
30
+ //# sourceMappingURL=lean-5N6BOONS.js.map
@@ -9,6 +9,7 @@ import {
9
9
  generationThreads,
10
10
  installedLocalModel,
11
11
  isLocalModelWarm,
12
+ loadLocalModel,
12
13
  localChatJson,
13
14
  localModelPath,
14
15
  localModelStatus,
@@ -19,7 +20,7 @@ import {
19
20
  unloadLocalModel,
20
21
  waitForForeground,
21
22
  warmLocalModel
22
- } from "./chunk-BTTQWSDS.js";
23
+ } from "./chunk-SXVH74NE.js";
23
24
  import "./chunk-3QGW53GD.js";
24
25
  import "./chunk-HPOR6YXA.js";
25
26
  import "./chunk-PZ5AY32C.js";
@@ -34,6 +35,7 @@ export {
34
35
  generationThreads,
35
36
  installedLocalModel,
36
37
  isLocalModelWarm,
38
+ loadLocalModel,
37
39
  localChatJson,
38
40
  localModelPath,
39
41
  localModelStatus,
@@ -45,4 +47,4 @@ export {
45
47
  waitForForeground,
46
48
  warmLocalModel
47
49
  };
48
- //# sourceMappingURL=local-75DJECVR.js.map
50
+ //# sourceMappingURL=local-5EYLEBEP.js.map
@@ -3,10 +3,10 @@ import {
3
3
  addLocalLlm,
4
4
  printLocalLlmStatus,
5
5
  removeLocalLlm
6
- } from "./chunk-UTPC66MV.js";
7
- import "./chunk-M75SN4D4.js";
6
+ } from "./chunk-FEFOZ2ZW.js";
7
+ import "./chunk-Y4QQML24.js";
8
8
  import "./chunk-CG5B3LYG.js";
9
- import "./chunk-BTTQWSDS.js";
9
+ import "./chunk-SXVH74NE.js";
10
10
  import "./chunk-3QGW53GD.js";
11
11
  import "./chunk-HPOR6YXA.js";
12
12
  import "./chunk-PZ5AY32C.js";
@@ -16,4 +16,4 @@ export {
16
16
  printLocalLlmStatus,
17
17
  removeLocalLlm
18
18
  };
19
- //# sourceMappingURL=local-llm-MECVJTVU.js.map
19
+ //# sourceMappingURL=local-llm-ESMVP5LE.js.map
@@ -6,7 +6,7 @@ import {
6
6
  addLocalLlm,
7
7
  printLocalLlmStatus,
8
8
  removeLocalLlm
9
- } from "./chunk-UTPC66MV.js";
9
+ } from "./chunk-FEFOZ2ZW.js";
10
10
  import {
11
11
  WORKFLOW_CLIENTS,
12
12
  clientDisplayName,
@@ -32,11 +32,11 @@ import {
32
32
  setHooks,
33
33
  uninstallClient,
34
34
  writeProjectMcpConfig
35
- } from "./chunk-RZ266NHE.js";
35
+ } from "./chunk-SPQU2422.js";
36
36
  import {
37
37
  renderLeanBlock,
38
38
  runLeanHook
39
- } from "./chunk-JJQDVGF7.js";
39
+ } from "./chunk-3TZNQJTH.js";
40
40
  import {
41
41
  isDockerDaemonRunning,
42
42
  tryStartDockerDesktop,
@@ -55,19 +55,19 @@ import {
55
55
  import {
56
56
  loadLlmSummaries,
57
57
  summarizeRepository
58
- } from "./chunk-ITXE27SZ.js";
58
+ } from "./chunk-FGJ2KPPN.js";
59
59
  import {
60
60
  listIndexFacts,
61
61
  pruneIndexFacts
62
- } from "./chunk-UATJCD2T.js";
62
+ } from "./chunk-R5E2YGLE.js";
63
63
  import {
64
64
  chatJson,
65
65
  coolingDown,
66
66
  usageToday
67
- } from "./chunk-6YI2D5F5.js";
67
+ } from "./chunk-7IXPARDM.js";
68
68
  import {
69
69
  runIndexModelPass
70
- } from "./chunk-U7KDM62P.js";
70
+ } from "./chunk-6KSSJJZO.js";
71
71
  import {
72
72
  AUTOMATION_MODES,
73
73
  CLIENT_ADAPTERS,
@@ -94,7 +94,7 @@ import {
94
94
  traceCliCommand,
95
95
  watchRepository,
96
96
  writeTelemetryState
97
- } from "./chunk-D5E7SGI5.js";
97
+ } from "./chunk-KGDRGA2L.js";
98
98
  import {
99
99
  HookStagingStore,
100
100
  PlanFileStore,
@@ -124,7 +124,7 @@ import {
124
124
  runStageHook,
125
125
  runSyncHook,
126
126
  syncReuseVectors
127
- } from "./chunk-KQCP3ZYH.js";
127
+ } from "./chunk-5ZLNHYJH.js";
128
128
  import {
129
129
  parseTraceLines,
130
130
  readTraces,
@@ -144,7 +144,7 @@ import {
144
144
  DEFAULT_ZVEC_MODEL,
145
145
  buildZvecIndex,
146
146
  zvecStatus
147
- } from "./chunk-4BSO3HST.js";
147
+ } from "./chunk-4LMBZWIF.js";
148
148
  import {
149
149
  buildArchitectureMap,
150
150
  generateGraphifyGraph,
@@ -156,11 +156,12 @@ import {
156
156
  queryMap,
157
157
  setupGraphify,
158
158
  syncFileVectors
159
- } from "./chunk-UR3DF74I.js";
159
+ } from "./chunk-LZTYPJ5I.js";
160
160
  import {
161
161
  extractSymbolTable,
162
162
  supportsSymbols
163
163
  } from "./chunk-Y7D7PUBE.js";
164
+ import "./chunk-R5JRKMEP.js";
164
165
  import {
165
166
  bootstrapDatabase,
166
167
  buildProviderFromConfig,
@@ -172,12 +173,12 @@ import {
172
173
  pingDatabase,
173
174
  runDoctor,
174
175
  runMigrations
175
- } from "./chunk-KYRM3HPP.js";
176
+ } from "./chunk-TIMS3PB7.js";
176
177
  import "./chunk-57642NGU.js";
177
178
  import {
178
179
  MemoryFileStore,
179
180
  VERSION
180
- } from "./chunk-YMXFSHXT.js";
181
+ } from "./chunk-3L5IR6OW.js";
181
182
  import {
182
183
  computeFactHash,
183
184
  generateEntityId
@@ -190,7 +191,7 @@ import {
190
191
  mergeGlobalConfig,
191
192
  readGlobalConfig,
192
193
  resolveLlmConfig
193
- } from "./chunk-WHKXUXHE.js";
194
+ } from "./chunk-4TKKLQLH.js";
194
195
  import {
195
196
  PLAN_POLICIES,
196
197
  configPath,
@@ -208,11 +209,11 @@ import {
208
209
  setPlanPolicy,
209
210
  setZvecEnabled,
210
211
  writeConfigFile
211
- } from "./chunk-M75SN4D4.js";
212
+ } from "./chunk-Y4QQML24.js";
212
213
  import {
213
214
  writeAtomic
214
215
  } from "./chunk-CG5B3LYG.js";
215
- import "./chunk-BTTQWSDS.js";
216
+ import "./chunk-SXVH74NE.js";
216
217
  import {
217
218
  localRuntimeInstalled,
218
219
  modelCacheDir
@@ -2017,7 +2018,7 @@ async function llmStatusReport(root, env = process.env) {
2017
2018
  provider,
2018
2019
  model,
2019
2020
  keyEnv: provider === "local" ? "none needed" : env.CODEBUDDY_LLM_API_KEY ? "CODEBUDDY_LLM_API_KEY" : keyName,
2020
- // Enabled implies a key (environment or saved by `codebuddy use`).
2021
+ // Enabled implies a key (environment or saved by `codebuddy`).
2021
2022
  keyPresent: provider === "local" || config.enabled || Boolean(env.CODEBUDDY_LLM_API_KEY || env[keyName]),
2022
2023
  features: config.enabled ? config.features : null,
2023
2024
  usageToday: (await usageToday(root))[key] ?? 0,
@@ -2106,7 +2107,7 @@ function registerLlmCommands(program, runSafely2) {
2106
2107
  onProgress: (done, total) => console.log(pc8.dim(`summarized ${done}/${total}`))
2107
2108
  });
2108
2109
  console.log(
2109
- `${result.summarized} summarized, ${result.skipped} skipped, ${result.remaining} remaining (${result.stoppedBy})`
2110
+ `${result.summarized} summarized, ${result.skipped} skipped, ${result.timedOut} timed out, ${result.remaining} remaining (${result.stoppedBy})`
2110
2111
  );
2111
2112
  });
2112
2113
  });
@@ -2148,7 +2149,13 @@ function registerIndexCommands(program, runSafely2) {
2148
2149
  return;
2149
2150
  }
2150
2151
  printResult(result);
2151
- if (vectors) {
2152
+ if (vectors?.lockedBy !== void 0) {
2153
+ console.log(
2154
+ pc9.yellow(
2155
+ ` file vectors: already being built by pid ${vectors.lockedBy ?? "unknown"}`
2156
+ )
2157
+ );
2158
+ } else if (vectors) {
2152
2159
  console.log(
2153
2160
  pc9.dim(
2154
2161
  ` file vectors: ${vectors.embedded} embedded, ${vectors.files} current` + (vectors.pending > 0 ? `, ${vectors.pending} left for the next run` : "")
@@ -2189,10 +2196,16 @@ function printModelPass(model, ms) {
2189
2196
  console.log(pc9.dim(" cards: skipped (no model; codebuddy models add local-llm)"));
2190
2197
  return;
2191
2198
  }
2199
+ if (model.cards?.stoppedBy === "locked") {
2200
+ console.log(
2201
+ pc9.yellow(` cards: already being written by pid ${model.cards.lockedBy ?? "unknown"}`)
2202
+ );
2203
+ return;
2204
+ }
2192
2205
  if (model.cards) {
2193
2206
  console.log(
2194
2207
  pc9.dim(
2195
- ` cards: ${model.cards.summarized} written, ${model.cards.remaining} left (${model.cards.stoppedBy}), ${model.cardVectors} embedded, ${Math.round(ms / 1e3)} s`
2208
+ ` cards: ${model.cards.summarized} written, ${model.cards.timedOut ? `${model.cards.timedOut} timed out, ` : ""}${model.cards.remaining} left (${model.cards.reason ? `${model.cards.stoppedBy}: ${model.cards.reason}` : model.cards.stoppedBy}), ${model.cardVectors} embedded, ${Math.round(ms / 1e3)} s`
2196
2209
  )
2197
2210
  );
2198
2211
  }
@@ -3025,7 +3038,7 @@ async function printStatus() {
3025
3038
  }
3026
3039
  }
3027
3040
  {
3028
- const { cardProgress } = await import("./summaries-QXWFFDUZ.js");
3041
+ const { cardProgress } = await import("./summaries-GCHZGIIA.js");
3029
3042
  await printLocalLlmStatus(await cardProgress(process.cwd()).catch(() => null));
3030
3043
  }
3031
3044
  console.log(pc14.bold("Memory index"));
@@ -3034,7 +3047,7 @@ async function printStatus() {
3034
3047
  }
3035
3048
  if (!config.postgresUrl) {
3036
3049
  console.log(row("postgres", warn("not configured: recall is lexical only")));
3037
- next.push("codebuddy use (sets up PostgreSQL)");
3050
+ next.push("codebuddy (sets up PostgreSQL)");
3038
3051
  } else {
3039
3052
  const counts = await vectorCounts(
3040
3053
  config.postgresUrl,
@@ -5087,7 +5100,7 @@ async function setupLocalLlm(choice, interactive) {
5087
5100
  log2.info(`Local LLM: skipped (add later with ${pc22.cyan("codebuddy models add local-llm")}).`);
5088
5101
  return false;
5089
5102
  }
5090
- const { installedLocalModel, machineCanCard } = await import("./local-75DJECVR.js");
5103
+ const { installedLocalModel, machineCanCard } = await import("./local-5EYLEBEP.js");
5091
5104
  let installed = await installedLocalModel() !== null;
5092
5105
  const machine = machineCanCard();
5093
5106
  if (!installed && !machine.ok) {
@@ -5095,7 +5108,7 @@ async function setupLocalLlm(choice, interactive) {
5095
5108
  installed = true;
5096
5109
  }
5097
5110
  if (!installed) {
5098
- const { addLocalLlm: addLocalLlm2 } = await import("./local-llm-MECVJTVU.js");
5111
+ const { addLocalLlm: addLocalLlm2 } = await import("./local-llm-ESMVP5LE.js");
5099
5112
  installed = await addLocalLlm2({ yes: true, interactive });
5100
5113
  if (!installed) {
5101
5114
  log2.warn(
@@ -5130,7 +5143,7 @@ async function setupCloudQwen(reason, interactive) {
5130
5143
  }
5131
5144
  if (!chosen) {
5132
5145
  log2.warn(
5133
- `Local LLM: this machine is too small for it (${reason}). For cloud Qwen, get a free key at ${pc22.cyan("https://console.groq.com/keys")} and rerun ${pc22.cyan("codebuddy use")} (or ${pc22.cyan("export GROQ_API_KEY=\u2026")} and ${pc22.cyan("codebuddy llm enable --provider groq")}). Keyword + vector discovery work meanwhile.`
5146
+ `Local LLM: this machine is too small for it (${reason}). For cloud Qwen, get a free key at ${pc22.cyan("https://console.groq.com/keys")} and rerun ${pc22.cyan("codebuddy")} (or ${pc22.cyan("export GROQ_API_KEY=\u2026")} and ${pc22.cyan("codebuddy llm enable --provider groq")}). Keyword + vector discovery work meanwhile.`
5134
5147
  );
5135
5148
  return false;
5136
5149
  }
@@ -5148,21 +5161,22 @@ async function runUseCommand(options = {}) {
5148
5161
  const sigintHandler = () => bail2();
5149
5162
  process.on("SIGINT", sigintHandler);
5150
5163
  try {
5151
- const interactive = options.interactive ?? process.stdin.isTTY === true;
5164
+ const attended = options.interactive ?? process.stdin.isTTY === true;
5165
+ const interactive = attended && options.ask === true;
5152
5166
  const folderName = basename2(process.cwd());
5153
5167
  const namespace = sanitizeNamespace(options.namespace ?? folderName);
5154
5168
  await initProjectScaffold();
5155
5169
  if (options.namespace === void 0) await migrateLegacyNamespace();
5156
- const graphifyEnabled = options.graphify ?? (interactive && unwrap2(
5170
+ const graphifyEnabled = options.graphify ?? (interactive ? unwrap2(
5157
5171
  await confirm2({
5158
5172
  message: "Set up Graphify for richer architecture context?",
5159
5173
  initialValue: true
5160
5174
  })
5161
- ));
5175
+ ) : attended);
5162
5176
  note2(
5163
5177
  `Project folder: ${pc22.bold(process.cwd())}
5164
5178
  Namespace: ${pc22.bold(namespace)}`,
5165
- "codebuddy use"
5179
+ "codebuddy"
5166
5180
  );
5167
5181
  const stored = await readGlobalConfig();
5168
5182
  const projectConfig = await readConfigFile();
@@ -5237,12 +5251,12 @@ Namespace: ${pc22.bold(namespace)}`,
5237
5251
  if (!connected && databaseUrl === DEFAULT_DB_URL) {
5238
5252
  dbSpinner.stop("Postgres unreachable on the default local URL.");
5239
5253
  }
5240
- const shouldUseDocker = !connected && databaseUrl === DEFAULT_DB_URL && (options.useDocker ?? (interactive && unwrap2(
5254
+ const shouldUseDocker = !connected && databaseUrl === DEFAULT_DB_URL && (options.useDocker ?? (interactive ? unwrap2(
5241
5255
  await confirm2({
5242
5256
  message: "Postgres is unavailable. Start the bundled Docker database now?",
5243
5257
  initialValue: true
5244
5258
  })
5245
- )));
5259
+ ) : attended));
5246
5260
  if (shouldUseDocker) {
5247
5261
  if (!await isDockerDaemonRunning()) {
5248
5262
  const dockerSpinner = spinner3();
@@ -5468,6 +5482,9 @@ function registerZvecCommands(program, runSafely2) {
5468
5482
  `version: ${report.version ?? pc24.yellow("not found")}${report.version && !report.supported ? pc24.yellow(" (unsupported; need 0.2.x)") : ""}`
5469
5483
  );
5470
5484
  console.log(`index ready: ${mark(report.indexReady)}`);
5485
+ console.log(
5486
+ `card index: ${report.cardIndex} ${pc24.dim("(intent cards; built by card passes)")}`
5487
+ );
5471
5488
  console.log(
5472
5489
  `zg server: ${report.server} ${pc24.dim("(running = faster queries; optional)")}`
5473
5490
  );
@@ -5511,28 +5528,25 @@ function createCli() {
5511
5528
  program.name("codebuddy").description(
5512
5529
  "Project memory and context for AI coding agents: recalls the right facts, files and risks on every prompt."
5513
5530
  ).version(VERSION);
5514
- program.action(async () => {
5515
- await runSafely(async () => {
5516
- await runUseCommand();
5517
- });
5518
- });
5519
- program.command("use").description(
5520
- "One-command setup for this folder: PostgreSQL (starts Docker if needed), migrations, embeddings, and agent wiring."
5521
- ).argument("[namespace]", "Override the namespace (defaults to current folder name).").option("--postgres-url <url>", "Postgres URL to use for this project.").option("--skip-claude", "Do not register with Claude Desktop.").option("--skip-codex", "Do not register with Codex.").option("--graphify", "Enable Graphify setup without prompting.").option("--no-graphify", "Skip Graphify setup without prompting.").option(
5531
+ program.enablePositionalOptions().option("--namespace <name>", "Override the namespace (defaults to current folder name).").option("--postgres-url <url>", "Postgres URL to use for this project.").option("--skip-claude", "Do not register with Claude Desktop.").option("--skip-codex", "Do not register with Codex.").option("--graphify", "Enable Graphify setup without prompting.").option("--no-graphify", "Skip Graphify setup without prompting.").option(
5522
5532
  "--docker",
5523
5533
  "Start CodeBuddy's bundled Postgres container when the default DB is unavailable."
5524
- ).option("--no-docker", "Do not offer to start CodeBuddy's bundled Postgres container.").option("--no-local-llm", "Skip installing the local LLM (Qwen3-0.6B, ~400 MB).").option("-y, --yes", "Never prompt: use flags and defaults (automatic without a TTY).").option("--non-interactive", "Same as --yes.").action(
5525
- async (namespace, opts) => {
5534
+ ).option("--no-docker", "Do not offer to start CodeBuddy's bundled Postgres container.").option("--no-local-llm", "Skip installing the local LLM (Qwen3-0.6B, ~400 MB).").option(
5535
+ "--ask",
5536
+ "Ask before each choice (Graphify, embeddings, Postgres URL, Docker) instead of using the recommended defaults."
5537
+ ).option("-y, --yes", "Script mode: no Graphify or Docker unless their flags are given.").option("--non-interactive", "Same as --yes.").action(
5538
+ async (opts) => {
5526
5539
  await runSafely(async () => {
5527
5540
  await runUseCommand({
5528
- ...namespace !== void 0 ? { namespace } : {},
5541
+ ...opts.namespace !== void 0 ? { namespace: opts.namespace } : {},
5529
5542
  ...opts.postgresUrl !== void 0 ? { postgresUrl: opts.postgresUrl } : {},
5530
5543
  ...opts.skipClaude !== void 0 ? { skipClaude: opts.skipClaude } : {},
5531
5544
  ...opts.skipCodex !== void 0 ? { skipCodex: opts.skipCodex } : {},
5532
5545
  ...opts.graphify !== void 0 ? { graphify: opts.graphify } : {},
5533
5546
  ...opts.docker !== void 0 ? { useDocker: opts.docker } : {},
5534
5547
  ...opts.localLlm !== void 0 ? { localLlm: opts.localLlm } : {},
5535
- ...opts.yes || opts.nonInteractive ? { interactive: false } : {}
5548
+ ...opts.yes || opts.nonInteractive ? { interactive: false } : {},
5549
+ ...opts.ask ? { ask: true } : {}
5536
5550
  });
5537
5551
  });
5538
5552
  }
@@ -5859,14 +5873,11 @@ function createCli() {
5859
5873
  return showTelemetryNoticeOnce();
5860
5874
  });
5861
5875
  program.hook("postAction", (_program, command) => traceCliCommand(command, started));
5862
- program.action(async () => {
5863
- await runSafely(() => runUseCommand());
5864
- });
5865
5876
  groupHelp(program);
5866
5877
  return program;
5867
5878
  }
5868
5879
  var HELP_GROUPS = [
5869
- ["Get started:", ["use", "init", "doctor", "hooks", "clients", "models", "dashboard"]],
5880
+ ["Get started:", ["init", "doctor", "hooks", "clients", "models", "dashboard"]],
5870
5881
  [
5871
5882
  "Daily work:",
5872
5883
  [
@@ -5930,8 +5941,8 @@ Quick start:
5930
5941
  );
5931
5942
  }
5932
5943
  async function indexModelStats(root) {
5933
- const { cardProgress } = await import("./summaries-QXWFFDUZ.js");
5934
- const { listIndexFacts: listIndexFacts2 } = await import("./index-facts-4MTEHKMN.js");
5944
+ const { cardProgress } = await import("./summaries-GCHZGIIA.js");
5945
+ const { listIndexFacts: listIndexFacts2 } = await import("./index-facts-ZTUANWBF.js");
5935
5946
  return {
5936
5947
  cards: await cardProgress(root).catch(() => ({ carded: 0, eligible: 0 })),
5937
5948
  indexFacts: (await listIndexFacts2(root).catch(() => [])).length
@@ -6056,4 +6067,4 @@ function printStorage(database, capture2) {
6056
6067
  export {
6057
6068
  createCli
6058
6069
  };
6059
- //# sourceMappingURL=main-RLMKQZW4.js.map
6070
+ //# sourceMappingURL=main-B3HZCGVE.js.map