Ship Assistent 0.11.9: esbuild bundle and patch-keys manifest.

Replace split Assets JS with a built bundle and aligned C#/config so SwarmUI loads one script and patch apply stays consistent; drop legacy terse persona and memory seed.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Leonid Pershin
2026-08-22 13:58:11 +03:00
co-authored by Cursor
parent a5e96f7430
commit e8bb012885
42 changed files with 10652 additions and 1281 deletions
+2 -73
View File
@@ -28,15 +28,12 @@ public partial class SwarmAssistentExtension : Extension
public override void OnPreInit()
{
ScriptFiles.Add("Assets/assistent.api.js");
ScriptFiles.Add("Assets/assistent.patch.js");
ScriptFiles.Add("Assets/assistent.persist.js");
ScriptFiles.Add("Assets/assistent.js");
ScriptFiles.Add("Assets/assistent.bundle.js");
StyleSheetFiles.Add("Assets/assistent.css");
ExtensionAuthor = "mrleo1nid";
Description = "Collaborative Krea 2 assistant: Ollama chat, persona presets, vector memory, model cards, Generate loop.";
License = "MIT";
Version = "0.11.8";
Version = "0.11.9";
Tags = ["tabs", "ui", "llm", "ollama", "krea", "inpaint", "memory"];
}
@@ -46,10 +43,8 @@ public partial class SwarmAssistentExtension : Extension
Config = new AssistentConfig(FilePath, DataRoot());
Memory = new AssistentMemory(DataRoot(), HttpClient, Config.LoadAssistant(Config.DefaultPersonaId())["embed_model"]?.ToString() ?? "nomic-embed-text");
API.RegisterAPICall(AssistentListModels, false, PermUse);
API.RegisterAPICall(AssistentGetPacks, false, PermUse);
API.RegisterAPICall(AssistentListPersonas, false, PermUse);
API.RegisterAPICall(AssistentGetConfig, false, PermUse);
API.RegisterAPICall(AssistentGetSettings, false, PermUse);
API.RegisterAPICall(AssistentSaveSettings, true, PermUse);
API.RegisterAPICall(AssistentListInventory, false, PermUse);
API.RegisterAPICall(AssistentGetCard, false, PermUse);
@@ -57,8 +52,6 @@ public partial class SwarmAssistentExtension : Extension
API.RegisterAPICall(AssistentEnqueueWanted, true, PermUse);
API.RegisterAPICall(AssistentGetCardMeta, false, PermUse);
API.RegisterAPICall(AssistentSearchCivitai, false, PermUse);
API.RegisterAPICall(AssistentGetTaste, false, PermUse);
API.RegisterAPICall(AssistentSaveTaste, true, PermUse);
API.RegisterAPICall(AssistentChat, true, PermUse);
API.RegisterAPICall(AssistentChatWS, true, PermUse);
API.RegisterAPICall(AssistentListChats, false, PermUse);
@@ -153,29 +146,6 @@ public partial class SwarmAssistentExtension : Extension
return Environment.CurrentDirectory;
}
public string ReadPackFile(string name)
{
return Config?.LoadPackPrompt(Config.DefaultPersonaId(), name);
}
public async Task<JObject> AssistentGetPacks(Session session, string persona = null)
{
await Task.CompletedTask;
string pid = AssistentConfig.SafeId(persona) ?? Config.DefaultPersonaId();
JObject packs = new();
JArray order = [];
foreach (var p in Config.ListPacks(pid))
{
string text = Config.LoadPackPrompt(pid, p.id);
if (text is not null)
{
packs[p.id] = text;
}
order.Add(p.id);
}
return new JObject { ["success"] = true, ["packs"] = packs, ["order"] = order, ["persona"] = pid };
}
public async Task<JObject> AssistentGetConfig(Session session, string persona = null)
{
await Task.CompletedTask;
@@ -183,12 +153,6 @@ public partial class SwarmAssistentExtension : Extension
return Config.BuildMergedConfigPayload(pid);
}
public async Task<JObject> AssistentGetSettings(Session session)
{
await Task.CompletedTask;
return new JObject { ["success"] = true, ["settings"] = Config.LoadSettings() };
}
public async Task<JObject> AssistentSaveSettings(Session session, JObject settings)
{
await Task.CompletedTask;
@@ -236,39 +200,4 @@ public partial class SwarmAssistentExtension : Extension
["personas"] = list,
};
}
public async Task<JObject> AssistentGetTaste(Session session)
{
await Task.CompletedTask;
try
{
return new JObject { ["success"] = true, ["taste"] = Memory.GetKvObject(AssistentMemory.KvTaste) };
}
catch (Exception ex)
{
return new JObject { ["error"] = $"taste: {ex.Message}" };
}
}
public async Task<JObject> AssistentSaveTaste(Session session, JObject taste)
{
await Task.CompletedTask;
if (taste is null)
{
return new JObject { ["error"] = "taste required" };
}
if (taste["updated"] == null)
{
taste["updated"] = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds();
}
try
{
Memory.SetKvObject(AssistentMemory.KvTaste, taste);
return new JObject { ["success"] = true, ["path"] = "Assistent/memory/assistent.sqlite" };
}
catch (Exception ex)
{
return new JObject { ["error"] = $"taste save: {ex.Message}" };
}
}
}