darkfoo-code 0.2.1 → 0.2.2

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 (2) hide show
  1. package/dist/main.js +42 -4
  2. package/package.json +1 -1
package/dist/main.js CHANGED
@@ -3944,8 +3944,27 @@ function REPL({ initialPrompt }) {
3944
3944
  }
3945
3945
  }, []);
3946
3946
  useEffect2(() => {
3947
- getProvider().healthCheck().then((ok) => setProviderOnline(ok)).catch(() => setProviderOnline(false));
3948
- }, [model]);
3947
+ const provider = getProvider();
3948
+ provider.healthCheck().then((ok) => {
3949
+ setProviderOnline(ok);
3950
+ if (!ok) return;
3951
+ provider.listModels().then((models) => {
3952
+ if (models.length === 0) return;
3953
+ const requested = model.toLowerCase();
3954
+ const match = models.find((m) => m.name.toLowerCase() === requested);
3955
+ if (match) {
3956
+ setModel(match.name);
3957
+ return;
3958
+ }
3959
+ const preferred = models.find((m) => m.name.includes("llama3.1")) ?? models.find((m) => m.name.includes("qwen")) ?? models.find((m) => m.name.includes("instruct")) ?? models[0];
3960
+ if (preferred) {
3961
+ setModel(preferred.name);
3962
+ setCommandOutput(`Model "${model}" not found. Using ${preferred.name} instead.`);
3963
+ }
3964
+ }).catch(() => {
3965
+ });
3966
+ }).catch(() => setProviderOnline(false));
3967
+ }, []);
3949
3968
  const commandContext = {
3950
3969
  messages,
3951
3970
  model,
@@ -4214,6 +4233,25 @@ program.name("darkfoo").description("Darkfoo Code \u2014 local AI coding assista
4214
4233
  process.exit(1);
4215
4234
  }
4216
4235
  }
4236
+ const { getProvider: getProvider2 } = await Promise.resolve().then(() => (init_providers(), providers_exports));
4237
+ let resolvedModel = model;
4238
+ try {
4239
+ const models = await getProvider2().listModels();
4240
+ if (models.length > 0) {
4241
+ const match = models.find((m) => m.name.toLowerCase() === model.toLowerCase());
4242
+ if (match) {
4243
+ resolvedModel = match.name;
4244
+ } else {
4245
+ const fallback = models.find((m) => m.name.includes("llama3.1")) ?? models.find((m) => m.name.includes("qwen")) ?? models[0];
4246
+ if (fallback) {
4247
+ process.stderr.write(`Model "${model}" not found. Using ${fallback.name}
4248
+ `);
4249
+ resolvedModel = fallback.name;
4250
+ }
4251
+ }
4252
+ }
4253
+ } catch {
4254
+ }
4217
4255
  if (prompt) {
4218
4256
  const { buildSystemPrompt: buildSystemPrompt2 } = await Promise.resolve().then(() => (init_system_prompt(), system_prompt_exports));
4219
4257
  const { getTools: getTools2 } = await Promise.resolve().then(() => (init_tools(), tools_exports));
@@ -4233,7 +4271,7 @@ program.name("darkfoo").description("Darkfoo Code \u2014 local AI coding assista
4233
4271
  process.exit(0);
4234
4272
  });
4235
4273
  for await (const event of query2({
4236
- model,
4274
+ model: resolvedModel,
4237
4275
  messages: [userMsg],
4238
4276
  tools,
4239
4277
  systemPrompt: sysPrompt,
@@ -4261,7 +4299,7 @@ Error: ${event.error}
4261
4299
  process.exit(0);
4262
4300
  }
4263
4301
  const { waitUntilExit } = render(
4264
- /* @__PURE__ */ jsx9(App, { model, systemPromptOverride: systemPrompt, children: /* @__PURE__ */ jsx9(REPL, {}) })
4302
+ /* @__PURE__ */ jsx9(App, { model: resolvedModel, systemPromptOverride: systemPrompt, children: /* @__PURE__ */ jsx9(REPL, {}) })
4265
4303
  );
4266
4304
  await waitUntilExit();
4267
4305
  });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "darkfoo-code",
3
- "version": "0.2.1",
3
+ "version": "0.2.2",
4
4
  "description": "Darkfoo Code — local AI coding assistant powered by Ollama, vLLM, llama.cpp, and other LLM providers",
5
5
  "type": "module",
6
6
  "license": "MIT",