@danhachuel/thunderbolt 0.5.46 → 0.5.48

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/app/main.py CHANGED
@@ -7043,7 +7043,7 @@ def _render_llm_card(settings: dict[str, Any], cards: list[dict[str, Any]], inde
7043
7043
  "meta/llama-3.1-70b-instruct",
7044
7044
  "meta/llama-3.3-70b-instruct",
7045
7045
  "nvidia/llama-3.1-nemotron-70b-instruct",
7046
- ] if definition.code == "openai" else []
7046
+ ] if definition.code == "openai" else (["google/paligemma"] if definition.code == "nvidia_nim_paligemma" else [])
7047
7047
  options = ["__select_model__", *list(dict.fromkeys([*discovered_models, *default_models]))]
7048
7048
  # Mantém modelos guardados mesmo quando a descoberta ainda não foi
7049
7049
  # executada ou quando o provider deixou de os devolver temporariamente.
@@ -7128,11 +7128,17 @@ def _render_llm_card(settings: dict[str, Any], cards: list[dict[str, Any]], inde
7128
7128
  try:
7129
7129
  from integrations.openai_model_discovery import fetch_openai_compatible_models
7130
7130
  discovered = fetch_openai_compatible_models(edited.get("api_key", ""), edited.get("base_url", ""))
7131
+ if definition.code == "nvidia_nim_paligemma" and "google/paligemma" not in discovered:
7132
+ discovered.insert(0, "google/paligemma")
7131
7133
  st.session_state[f"llm_model_catalog_{card_id}"] = discovered
7132
7134
  _persist_llm_cards(settings, cards)
7133
7135
  st.success(f"{len(discovered)} modelo(s) disponíveis neste endpoint.")
7134
7136
  except Exception:
7135
- st.error("Não foi possível consultar os modelos deste endpoint.")
7137
+ if definition.code == "nvidia_nim_paligemma" and str(edited.get("api_key") or "").strip():
7138
+ st.session_state[f"llm_model_catalog_{card_id}"] = ["google/paligemma"]
7139
+ st.warning("O catálogo NIM não expôs modelos, mas o modelo Paligemma foi disponibilizado para este provider.")
7140
+ else:
7141
+ st.error("Não foi possível consultar os modelos deste endpoint.")
7136
7142
  elif save_clicked:
7137
7143
  _persist_llm_cards(settings, cards)
7138
7144
  st.success("Cartão LLM guardado.")
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@danhachuel/thunderbolt",
3
- "version": "0.5.46",
3
+ "version": "0.5.48",
4
4
  "description": "Thunderbolt — interface local para operação de canais faceless e motor MoneyPrinterTurbo",
5
5
  "license": "MIT",
6
6
  "main": "scripts/cli.mjs",
@@ -216,6 +216,8 @@ function legacyNpxPackageRoots() {
216
216
 
217
217
  function migrateLegacyNpxStorage() {
218
218
  const targetStorage = join(thunderboltHome, "storage");
219
+ const migrationMarker = join(targetStorage, "state", "npx-storage-migration-v1.json");
220
+ if (existsSync(migrationMarker)) return;
219
221
  const candidates = legacyNpxPackageRoots();
220
222
  let mergedFiles = 0;
221
223
  for (const candidate of candidates) {
@@ -223,6 +225,8 @@ function migrateLegacyNpxStorage() {
223
225
  mergedFiles += mergeLegacyStorage(candidate);
224
226
  }
225
227
  if (mergedFiles > 0) console.log(`Dados locais recuperados do cache npm para ${targetStorage} (${mergedFiles} ficheiro(s) unido(s)).`);
228
+ mkdirSync(dirname(migrationMarker), { recursive: true });
229
+ writeFileSync(migrationMarker, JSON.stringify({ version: 1, migrated_at: new Date().toISOString() }) + "\n", "utf8");
226
230
  }
227
231
 
228
232
  function copyOrMove(source, target, label) {