Add OpenRouter chat provider; fix Windows load errors (0.17.0).

- OpenRouter as an alternative chat provider: server-side API key
  (settings.json or OPENROUTER_API_KEY), model list with vision marks and
  filter, SSE streaming, images as data URLs. Memory embeddings stay on Ollama;
  park/warm LLM are no-ops for the remote provider.
- AssistentSaveKnowledgeAttach: JArray param is not supported by SwarmUI API
  reflection and aborted registration of every later API call; use string[].
- SQLite bootstrap: preload native e_sqlite3 for the current OS/arch
  (win/osx/linux) and resolve DllImport to it.
- settings.json: shared-read + atomic write with retry to avoid Windows
  sharing violations.
- csproj: fix MSB4012 in the native SQLite copy target.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
mrleo1nid
2026-09-17 06:18:47 +03:00
co-authored by Claude Opus 5
parent f2b92e96ca
commit d67f5e396e
13 changed files with 740 additions and 56 deletions
+4 -3
View File
@@ -83,7 +83,8 @@ public partial class SwarmAssistentExtension
};
}
public async Task<JObject> AssistentSaveKnowledgeAttach(Session session, string persona, JArray attach)
/// <remarks>SwarmUI's API reflection has no JArray coercer — <c>string[]</c> is the supported list type.</remarks>
public async Task<JObject> AssistentSaveKnowledgeAttach(Session session, string persona, string[] attach = null)
{
await Task.CompletedTask;
string pid = AssistentConfig.SafeId(persona);
@@ -104,9 +105,9 @@ public partial class SwarmAssistentExtension
JArray cleaned = [];
if (attach is not null)
{
foreach (JToken t in attach)
foreach (string t in attach)
{
string id = AssistentConfig.SafeId(t?.ToString());
string id = AssistentConfig.SafeId(t);
if (id is not null)
{
cleaned.Add(id);