feat(api): add Lovart-style project and agent thread endpoints

Add canva/canda-compatible routes for lightweight project open/save and
agent thread history:
- POST /canva/project/queryProject, saveProject
- POST /canva/agent/queryAgentLastThread, agentThreadList
- GET /canda/chat-history, /canda/thread/status

Canvas save now accepts a compressed SHAKKERDATA:// snapshot payload,
preserves connections, and returns a SaveProject response; blank
successful image nodes are backfilled from generated artifacts. Frontend
designGateway adopts the new save/query flow.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-07-08 19:10:08 +08:00
parent ada29cee12
commit 263748af4a
27 changed files with 2045 additions and 114 deletions
+30
View File
@@ -94,6 +94,36 @@ func RegisterHandlers(server *rest.Server, serverCtx *svc.ServiceContext) {
Path: "/auth/options",
Handler: getAuthOptionsHandler(serverCtx),
},
{
Method: http.MethodGet,
Path: "/canda/chat-history",
Handler: candaChatHistoryHandler(serverCtx),
},
{
Method: http.MethodGet,
Path: "/canda/thread/status",
Handler: candaThreadStatusHandler(serverCtx),
},
{
Method: http.MethodPost,
Path: "/canva/agent/agentThreadList",
Handler: agentThreadListHandler(serverCtx),
},
{
Method: http.MethodPost,
Path: "/canva/agent/queryAgentLastThread",
Handler: queryAgentLastThreadHandler(serverCtx),
},
{
Method: http.MethodPost,
Path: "/canva/project/queryProject",
Handler: queryProjectHandler(serverCtx),
},
{
Method: http.MethodPost,
Path: "/canva/project/saveProject",
Handler: saveProjectHandler(serverCtx),
},
{
Method: http.MethodPost,
Path: "/context/vision/recognize_object",