@kafca/agentdock 0.1.55 → 0.1.57
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/README.md +14 -0
- package/dist/renderer/assets/{Badge-Bg_nNvBL.js → Badge-CDTbmw1h.js} +1 -1
- package/dist/renderer/assets/Card-DayUo35w.js +1 -0
- package/dist/renderer/assets/Config-ByGMQuzR.js +21 -0
- package/dist/renderer/assets/CronList-XqHdVlgu.js +1 -0
- package/dist/renderer/assets/Dashboard-CZj-oANw.js +41 -0
- package/dist/renderer/assets/{EmptyState-C60g3RMj.js → EmptyState-EFMkOjZO.js} +1 -1
- package/dist/renderer/assets/HighlightedMarkdown-DyvF3DHK.js +12 -0
- package/dist/renderer/assets/Input-DxoWVc9d.js +1 -0
- package/dist/renderer/assets/{KnowledgeDetail-CC5C7JYe.js → KnowledgeDetail-CbUb2tG7.js} +2 -2
- package/dist/renderer/assets/{KnowledgeHome-3rlvxgWf.js → KnowledgeHome-BWV1gz4f.js} +3 -3
- package/dist/renderer/assets/Logs-DqnanQTc.js +6 -0
- package/dist/renderer/assets/{Modal-BQUW9LSf.js → Modal-yY7TzR0x.js} +3 -3
- package/dist/renderer/assets/MonitorList-CIjGQkFs.js +1 -0
- package/dist/renderer/assets/Page-vwHNUdoj.js +1 -0
- package/dist/renderer/assets/{Select-CfRkos3z.js → Select-CmbK36pN.js} +2 -2
- package/dist/renderer/assets/ThreadChat-4OceMgM4.js +86 -0
- package/dist/renderer/assets/Workspace-DplPJOjJ.js +19 -0
- package/dist/renderer/assets/{arrow-left-D1DbXrLA.js → arrow-left-C8HfBt2K.js} +1 -1
- package/dist/renderer/assets/{book-open-BxC1z1C1.js → book-open-BCdZWncQ.js} +1 -1
- package/dist/renderer/assets/channels-hgO3cAIx.js +6 -0
- package/dist/renderer/assets/chevron-down-BPk77tqY.js +11 -0
- package/dist/renderer/assets/index-BIKL3fTP.css +11 -0
- package/dist/renderer/assets/index-BlA4xPdd.js +41 -0
- package/dist/renderer/assets/index-wYpjqVqC.js +167 -0
- package/dist/renderer/assets/knowledge-7pl06KuH.js +1 -0
- package/dist/renderer/assets/{pencil-X44UaxwR.js → pencil-CB1SWZ9A.js} +1 -1
- package/dist/renderer/assets/{play-ujo-De38.js → play-BvsoXUrM.js} +1 -1
- package/dist/renderer/assets/{plus-BHgVdG_A.js → plus-CokBDnaL.js} +1 -1
- package/dist/renderer/assets/{save-Cz6giKrE.js → save-D-w4kATO.js} +1 -1
- package/dist/renderer/assets/{search-DKWvTqi5.js → search-Cnsn6i4Q.js} +1 -1
- package/dist/renderer/assets/{shield-check-V82O8AC1.js → shield-check-Cjja2Gh6.js} +1 -1
- package/dist/renderer/assets/threads-BCm6j4eI.js +1 -0
- package/dist/renderer/assets/{trash-2-_Fgwk8mc.js → trash-2-CIxz9qYY.js} +1 -1
- package/dist/renderer/index.html +2 -2
- package/dist-electron/packages/contracts/src/automation.js +2 -0
- package/dist-electron/packages/contracts/src/channels.js +2 -0
- package/dist-electron/packages/contracts/src/knowledge.js +2 -0
- package/dist-electron/packages/contracts/src/local-core.js +15 -0
- package/dist-electron/packages/contracts/src/runtime.js +2 -0
- package/dist-electron/packages/contracts/src/scheduler.js +2 -0
- package/dist-electron/packages/contracts/src/threads.js +2 -0
- package/dist-electron/packages/core-sdk/src/automation.js +32 -0
- package/dist-electron/packages/core-sdk/src/channels.js +121 -0
- package/dist-electron/packages/core-sdk/src/client.js +455 -0
- package/dist-electron/packages/core-sdk/src/index.js +43 -607
- package/dist-electron/packages/core-sdk/src/knowledge.js +85 -0
- package/dist-electron/packages/core-sdk/src/request.js +22 -0
- package/dist-electron/packages/core-sdk/src/runtime.js +214 -0
- package/dist-electron/packages/core-sdk/src/scheduler.js +32 -0
- package/dist-electron/packages/core-sdk/src/threads.js +67 -0
- package/dist-electron/packages/plugin-sdk/src/agents.js +2 -0
- package/dist-electron/packages/plugin-sdk/src/automation.js +2 -0
- package/dist-electron/packages/plugin-sdk/src/channels.js +2 -0
- package/dist-electron/packages/plugin-sdk/src/index.js +21 -0
- package/dist-electron/packages/plugin-sdk/src/knowledge.js +2 -0
- package/dist-electron/packages/plugin-sdk/src/runtime.js +2 -0
- package/dist-electron/packages/plugin-sdk/src/scheduler.js +2 -0
- package/dist-electron/packages/plugin-sdk/src/threads.js +2 -0
- package/dist-electron/services/local-ai-core/src/acp/local-core-acp-backend.js +6 -9
- package/dist-electron/services/local-ai-core/src/acp/local-core-acp-content.js +2 -2
- package/dist-electron/services/local-ai-core/src/acp/local-core-acp-turn-coordinator.js +3 -3
- package/dist-electron/services/local-ai-core/src/acp/store/agent-task-store.js +5 -5
- package/dist-electron/services/local-ai-core/src/acp/store/automation-monitor-store.js +12 -12
- package/dist-electron/services/local-ai-core/src/acp/store/local-core-acp-store.js +2 -2
- package/dist-electron/services/local-ai-core/src/acp/store/scheduler-store.js +11 -11
- package/dist-electron/services/local-ai-core/src/acp/store/security-store.js +3 -3
- package/dist-electron/services/local-ai-core/src/acp/store/thread-store.js +7 -7
- package/dist-electron/services/local-ai-core/src/acp/workspace-acp-permissions.js +2 -2
- package/dist-electron/services/local-ai-core/src/agents/claudecode/definition.js +3 -3
- package/dist-electron/services/local-ai-core/src/agents/codex/definition.js +3 -3
- package/dist-electron/services/local-ai-core/src/agents/localcore-acp/definition.js +2 -2
- package/dist-electron/services/local-ai-core/src/agents/localcore-acp/index.js +4 -4
- package/dist-electron/services/local-ai-core/src/agents/opencode/launch.js +2 -2
- package/dist-electron/services/local-ai-core/src/agents/pi/definition.js +2 -2
- package/dist-electron/services/local-ai-core/src/agents/pi/launch.js +3 -3
- package/dist-electron/services/local-ai-core/src/agents/pi/provider-materializer.js +1 -1
- package/dist-electron/services/local-ai-core/src/agents/shared/agent-plugin.js +4 -4
- package/dist-electron/services/local-ai-core/src/channel/lark/cards.js +33 -18
- package/dist-electron/services/local-ai-core/src/channel/lark/config.js +2 -2
- package/dist-electron/services/local-ai-core/src/channel/lark/gateway-utils.js +91 -0
- package/dist-electron/services/local-ai-core/src/channel/lark/inbound-handler.js +180 -0
- package/dist-electron/services/local-ai-core/src/channel/lark/local-core-lark-gateway.js +52 -456
- package/dist-electron/services/local-ai-core/src/channel/lark/outbound-transport.js +124 -0
- package/dist-electron/services/local-ai-core/src/channel/shared/inbound-attachment-store.js +93 -0
- package/dist-electron/services/local-ai-core/src/channel/shared/inbound-authorization.js +54 -0
- package/dist-electron/services/local-ai-core/src/channel/weixin/config.js +2 -2
- package/dist-electron/services/local-ai-core/src/channel/weixin/inbound-media.js +21 -0
- package/dist-electron/services/local-ai-core/src/channel/weixin/inbound-poller.js +167 -0
- package/dist-electron/services/local-ai-core/src/channel/weixin/local-core-weixin-gateway.js +98 -483
- package/dist-electron/services/local-ai-core/src/channel/weixin/runtime-state.js +156 -0
- package/dist-electron/services/local-ai-core/src/channel/weixin/text-utils.js +100 -0
- package/dist-electron/services/local-ai-core/src/cli/lac.js +6 -6
- package/dist-electron/services/local-ai-core/src/cli/monitor-cli-parsers.js +2 -2
- package/dist-electron/services/local-ai-core/src/kernel/bootstrap.js +28 -70
- package/dist-electron/services/local-ai-core/src/kernel/local-core-errors.js +33 -5
- package/dist-electron/services/local-ai-core/src/plugins/builtin/knowledge-ai-vector-plugin.js +2 -2
- package/dist-electron/services/local-ai-core/src/plugins/builtin/knowledge-noop-plugin.js +2 -2
- package/dist-electron/services/local-ai-core/src/router/workspace-bridge-event-stream.js +29 -0
- package/dist-electron/services/local-ai-core/src/router/workspace-route-config.js +5 -5
- package/dist-electron/services/local-ai-core/src/router/workspace-router.js +47 -60
- package/dist-electron/services/local-ai-core/src/runtime/agent-runtime-detector.js +5 -5
- package/dist-electron/services/local-ai-core/src/runtime/config-migration.js +6 -6
- package/dist-electron/services/local-ai-core/src/runtime/deployment-diagnostics.js +3 -3
- package/dist-electron/services/local-ai-core/src/runtime/external-service.js +3 -1
- package/dist-electron/services/local-ai-core/src/runtime/handlers/automation-handler.js +11 -2
- package/dist-electron/services/local-ai-core/src/runtime/handlers/channel-handler.js +12 -6
- package/dist-electron/services/local-ai-core/src/runtime/handlers/external-handler.js +10 -2
- package/dist-electron/services/local-ai-core/src/runtime/handlers/knowledge-handler.js +18 -6
- package/dist-electron/services/local-ai-core/src/runtime/handlers/provider-handler.js +7 -2
- package/dist-electron/services/local-ai-core/src/runtime/handlers/runtime-handler.js +28 -3
- package/dist-electron/services/local-ai-core/src/runtime/handlers/scheduler-handler.js +10 -2
- package/dist-electron/services/local-ai-core/src/runtime/handlers/security-handler.js +18 -5
- package/dist-electron/services/local-ai-core/src/runtime/handlers/task-handler.js +14 -2
- package/dist-electron/services/local-ai-core/src/runtime/handlers/thread-handler.js +18 -15
- package/dist-electron/services/local-ai-core/src/runtime/handlers/workspace-handler.js +13 -2
- package/dist-electron/services/local-ai-core/src/runtime/local-core-controller.js +35 -8
- package/dist-electron/services/local-ai-core/src/runtime/request-validation.js +79 -0
- package/dist-electron/services/local-ai-core/src/runtime/runtime-detection-service.js +9 -9
- package/dist-electron/services/local-ai-core/src/runtime/server-helpers.js +10 -1
- package/dist-electron/services/local-ai-core/src/runtime/server.js +2 -1
- package/dist-electron/services/local-ai-core/src/runtime/workspace-project-registry.js +76 -0
- package/dist-electron/services/local-ai-core/src/sandbox/sandbox-config.js +8 -8
- package/dist-electron/services/local-ai-core/src/thread/agent-message-policy.js +75 -0
- package/dist-electron/shared/desktop.js +1 -64
- package/dist-electron/src/components/chat/chat-controller-state.js +60 -0
- package/dist-electron/src/components/chat/chat-event-gate.js +146 -0
- package/dist-electron/src/components/chat/markdown-code-block.js +8 -0
- package/dist-electron/src/pages/Desktop/workspace-model.js +212 -0
- package/dist-electron/src/pages/Threads/thread-chat-model.js +50 -51
- package/dist-electron/tests/contracts/agent-message-policy.test.js +21 -0
- package/dist-electron/tests/contracts/architecture-docs.test.js +56 -33
- package/dist-electron/tests/contracts/chat-event-gate.test.js +114 -0
- package/dist-electron/tests/contracts/chat-markdown.test.js +16 -0
- package/dist-electron/tests/contracts/thread-task-state.test.js +32 -0
- package/dist-electron/tests/contracts/workspace-identity.test.js +23 -0
- package/dist-electron/tests/electron/core-client.test.js +284 -0
- package/dist-electron/tests/electron/plugin-kernel.test.js +54 -0
- package/dist-electron/tests/electron/renderer-packaging.test.js +9 -0
- package/dist-electron/tests/electron/workspace-task-store.test.js +31 -0
- package/dist-electron/tests/integration/channel-inbound-attachment-store.test.js +117 -0
- package/dist-electron/tests/integration/channel-inbound-authorization.test.js +80 -0
- package/dist-electron/tests/integration/lark-gateway-utils.test.js +13 -0
- package/dist-electron/tests/integration/lark-gateway.test.js +58 -4
- package/dist-electron/tests/integration/local-core-errors.test.js +41 -0
- package/dist-electron/tests/integration/weixin-gateway.test.js +36 -0
- package/dist-electron/tests/integration/weixin-runtime-state.test.js +32 -0
- package/dist-electron/tests/integration/weixin-text-utils.test.js +15 -0
- package/package.json +9 -4
- package/dist/renderer/assets/Chat-BJveQQKu.js +0 -2
- package/dist/renderer/assets/ChatMarkdown-Bqn2HJ6f.js +0 -45
- package/dist/renderer/assets/Config-CMtZDRAE.js +0 -21
- package/dist/renderer/assets/CronList-C-ILB_Ae.js +0 -1
- package/dist/renderer/assets/Dashboard-CsKBSQIe.js +0 -26
- package/dist/renderer/assets/Logs-CktemGN0.js +0 -1
- package/dist/renderer/assets/MonitorList-B0hxjuOZ.js +0 -1
- package/dist/renderer/assets/Page-DL_Nv2i5.js +0 -1
- package/dist/renderer/assets/ProjectDetail-Djr9-MyT.js +0 -11
- package/dist/renderer/assets/ProjectList-BKl4eW7q.js +0 -1
- package/dist/renderer/assets/SessionChat-Dxv8D5DW.js +0 -1
- package/dist/renderer/assets/SessionList-BJ2GjXvR.js +0 -1
- package/dist/renderer/assets/ThreadChat-CAsIl9qf.js +0 -28
- package/dist/renderer/assets/Workspace-CaUhiGBX.js +0 -19
- package/dist/renderer/assets/bot-Fw3IzhJA.js +0 -6
- package/dist/renderer/assets/check-5zCTgp3A.js +0 -6
- package/dist/renderer/assets/chevron-down-N3PxTNxH.js +0 -6
- package/dist/renderer/assets/circle-C_chUflo.js +0 -6
- package/dist/renderer/assets/desktop-DkQTZNhe.js +0 -1
- package/dist/renderer/assets/desktop-JQkhNOF4.js +0 -5
- package/dist/renderer/assets/funnel-B8ZAv6I7.js +0 -6
- package/dist/renderer/assets/heart-M9A3E4Ed.js +0 -6
- package/dist/renderer/assets/index-Bwv855ID.js +0 -41
- package/dist/renderer/assets/index-CjCuR6DI.css +0 -11
- package/dist/renderer/assets/index-DJ8w4e0l.js +0 -182
- package/dist/renderer/assets/projects-DB1FLZ3A.js +0 -1
- package/dist/renderer/assets/server-BsuHcYl4.js +0 -11
- package/dist/renderer/assets/session-utils-DnAWL3eo.js +0 -6
- package/dist/renderer/assets/sessions-DptxO_BE.js +0 -1
- package/dist/renderer/assets/user-DQKTaUcR.js +0 -6
- package/dist/renderer/assets/wifi-off-vjH-MD2w.js +0 -11
- package/dist-electron/src/api/client.js +0 -73
- package/dist-electron/src/api/sessions.js +0 -21
- package/dist-electron/src/lib/session-utils.js +0 -51
- package/dist-electron/src/pages/Projects/project-provider-config.js +0 -75
- package/dist-electron/tests/electron/project-provider-config.test.js +0 -71
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{D as t}from"./index-DJ8w4e0l.js";const e=()=>t.get("/projects"),r=o=>t.get(`/projects/${o}`);export{r as g,e as l};
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import{c as e}from"./index-DJ8w4e0l.js";/**
|
|
2
|
-
* @license lucide-react v0.487.0 - ISC
|
|
3
|
-
*
|
|
4
|
-
* This source code is licensed under the ISC license.
|
|
5
|
-
* See the LICENSE file in the root directory of this source tree.
|
|
6
|
-
*/const r=[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"m12 5 7 7-7 7",key:"xquz4c"}]],c=e("arrow-right",r);/**
|
|
7
|
-
* @license lucide-react v0.487.0 - ISC
|
|
8
|
-
*
|
|
9
|
-
* This source code is licensed under the ISC license.
|
|
10
|
-
* See the LICENSE file in the root directory of this source tree.
|
|
11
|
-
*/const t=[["rect",{width:"20",height:"8",x:"2",y:"2",rx:"2",ry:"2",key:"ngkwjq"}],["rect",{width:"20",height:"8",x:"2",y:"14",rx:"2",ry:"2",key:"iecqi9"}],["line",{x1:"6",x2:"6.01",y1:"6",y2:"6",key:"16zg32"}],["line",{x1:"6",x2:"6.01",y1:"18",y2:"18",key:"nzw8ys"}]],i=e("server",t);export{c as A,i as S};
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import{c as o}from"./index-DJ8w4e0l.js";/**
|
|
2
|
-
* @license lucide-react v0.487.0 - ISC
|
|
3
|
-
*
|
|
4
|
-
* This source code is licensed under the ISC license.
|
|
5
|
-
* See the LICENSE file in the root directory of this source tree.
|
|
6
|
-
*/const c=[["path",{d:"M21 12a9 9 0 1 1-6.219-8.56",key:"13zald"}]],d=o("loader-circle",c);function i(e){return e.name||e.user_name||e.chat_name||`Session ${e.id.slice(0,8)}`}function f(e,t){var a;return t?[i(e),e.session_key,((a=e.last_message)==null?void 0:a.content)||"",e.user_name||"",e.chat_name||""].join(" ").toLowerCase().includes(t):!0}function l(e){return[...e].sort((t,r)=>t.live!==r.live?t.live?-1:1:(r.updated_at||r.created_at||"").localeCompare(t.updated_at||t.created_at||""))}function m(e,t="just now"){if(!e)return"";const r=Date.now()-new Date(e).getTime(),a=Math.floor(r/6e4);if(a<1)return t;if(a<60)return`${a}m`;const n=Math.floor(a/60);return n<24?`${n}h`:`${Math.floor(n/24)}d`}export{d as L,l as a,i as b,f as s,m as t};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{D as o}from"./index-DJ8w4e0l.js";const i=s=>o.get(`/projects/${s}/sessions`),c=(s,e,t)=>o.get(`/projects/${s}/sessions/${e}`,{history_limit:String(t)}),r=(s,e,t)=>o.patch(`/projects/${s}/sessions/${e}`,t),a=(s,e)=>o.delete(`/projects/${s}/sessions/${e}`),p=(s,e)=>o.post(`/projects/${s}/sessions/switch`,e),$=(s,e)=>o.post(`/projects/${s}/send`,e);export{$ as a,a as d,c as g,i as l,r,p as s};
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import{c}from"./index-DJ8w4e0l.js";/**
|
|
2
|
-
* @license lucide-react v0.487.0 - ISC
|
|
3
|
-
*
|
|
4
|
-
* This source code is licensed under the ISC license.
|
|
5
|
-
* See the LICENSE file in the root directory of this source tree.
|
|
6
|
-
*/const e=[["path",{d:"M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2",key:"975kel"}],["circle",{cx:"12",cy:"7",r:"4",key:"17ys0d"}]],r=c("user",e);export{r as U};
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import{c as a}from"./index-DJ8w4e0l.js";/**
|
|
2
|
-
* @license lucide-react v0.487.0 - ISC
|
|
3
|
-
*
|
|
4
|
-
* This source code is licensed under the ISC license.
|
|
5
|
-
* See the LICENSE file in the root directory of this source tree.
|
|
6
|
-
*/const t=[["path",{d:"M21 12a9 9 0 1 1-9-9c2.52 0 4.93 1 6.74 2.74L21 8",key:"1p45f6"}],["path",{d:"M21 3v5h-5",key:"1q7to0"}]],c=a("rotate-cw",t);/**
|
|
7
|
-
* @license lucide-react v0.487.0 - ISC
|
|
8
|
-
*
|
|
9
|
-
* This source code is licensed under the ISC license.
|
|
10
|
-
* See the LICENSE file in the root directory of this source tree.
|
|
11
|
-
*/const e=[["path",{d:"M12 20h.01",key:"zekei9"}],["path",{d:"M8.5 16.429a5 5 0 0 1 7 0",key:"1bycff"}],["path",{d:"M5 12.859a10 10 0 0 1 5.17-2.69",key:"1dl1wf"}],["path",{d:"M19 12.859a10 10 0 0 0-2.007-1.523",key:"4k23kn"}],["path",{d:"M2 8.82a15 15 0 0 1 4.177-2.643",key:"1grhjp"}],["path",{d:"M22 8.82a15 15 0 0 0-11.288-3.764",key:"z3jwby"}],["path",{d:"m2 2 20 20",key:"1ooewy"}]],d=a("wifi-off",e);export{c as R,d as W};
|
|
@@ -1,73 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.api = exports.ApiError = void 0;
|
|
4
|
-
const DEFAULT_API_BASE = '/api/v1';
|
|
5
|
-
class ApiClient {
|
|
6
|
-
token = '';
|
|
7
|
-
baseUrl = DEFAULT_API_BASE;
|
|
8
|
-
setToken(token) {
|
|
9
|
-
this.token = token;
|
|
10
|
-
}
|
|
11
|
-
setBaseUrl(baseUrl) {
|
|
12
|
-
const trimmed = baseUrl.trim();
|
|
13
|
-
if (!trimmed) {
|
|
14
|
-
this.baseUrl = DEFAULT_API_BASE;
|
|
15
|
-
return;
|
|
16
|
-
}
|
|
17
|
-
this.baseUrl = trimmed.endsWith('/api/v1') || trimmed.endsWith('/api/local/v1')
|
|
18
|
-
? trimmed
|
|
19
|
-
: `${trimmed.replace(/\/+$/, '')}/api/v1`;
|
|
20
|
-
}
|
|
21
|
-
getToken() {
|
|
22
|
-
return this.token;
|
|
23
|
-
}
|
|
24
|
-
getBaseUrl() {
|
|
25
|
-
return this.baseUrl;
|
|
26
|
-
}
|
|
27
|
-
headers() {
|
|
28
|
-
const h = { 'Content-Type': 'application/json' };
|
|
29
|
-
if (this.token)
|
|
30
|
-
h['Authorization'] = `Bearer ${this.token}`;
|
|
31
|
-
return h;
|
|
32
|
-
}
|
|
33
|
-
async request(method, path, body, params) {
|
|
34
|
-
let url = this.resolveUrl(path);
|
|
35
|
-
if (params) {
|
|
36
|
-
const qs = new URLSearchParams(params).toString();
|
|
37
|
-
if (qs)
|
|
38
|
-
url += `?${qs}`;
|
|
39
|
-
}
|
|
40
|
-
const res = await fetch(url, {
|
|
41
|
-
method,
|
|
42
|
-
headers: this.headers(),
|
|
43
|
-
body: body ? JSON.stringify(body) : undefined,
|
|
44
|
-
});
|
|
45
|
-
const json = await res.json();
|
|
46
|
-
if (!json.ok) {
|
|
47
|
-
throw new ApiError(json.error || 'Unknown error', res.status);
|
|
48
|
-
}
|
|
49
|
-
return json.data;
|
|
50
|
-
}
|
|
51
|
-
get(path, params) { return this.request('GET', path, undefined, params); }
|
|
52
|
-
post(path, body) { return this.request('POST', path, body); }
|
|
53
|
-
patch(path, body) { return this.request('PATCH', path, body); }
|
|
54
|
-
delete(path) { return this.request('DELETE', path); }
|
|
55
|
-
resolveUrl(path) {
|
|
56
|
-
const normalizedPath = path.replace(/^\/+/, '');
|
|
57
|
-
if (this.baseUrl.startsWith('http://') || this.baseUrl.startsWith('https://')) {
|
|
58
|
-
return new URL(normalizedPath, `${this.baseUrl}/`).toString();
|
|
59
|
-
}
|
|
60
|
-
return `${this.baseUrl}/${normalizedPath}`.replace(/([^:]\/)\/+/g, '$1');
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
class ApiError extends Error {
|
|
64
|
-
status;
|
|
65
|
-
constructor(message, status) {
|
|
66
|
-
super(message);
|
|
67
|
-
this.status = status;
|
|
68
|
-
this.name = 'ApiError';
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
exports.ApiError = ApiError;
|
|
72
|
-
exports.api = new ApiClient();
|
|
73
|
-
exports.default = exports.api;
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.sendMessage = exports.switchSession = exports.deleteSession = exports.renameSession = exports.createSession = exports.getSession = exports.listSessions = void 0;
|
|
7
|
-
const client_1 = __importDefault(require("./client"));
|
|
8
|
-
const listSessions = (project) => client_1.default.get(`/projects/${project}/sessions`);
|
|
9
|
-
exports.listSessions = listSessions;
|
|
10
|
-
const getSession = (project, id, historyLimit) => client_1.default.get(`/projects/${project}/sessions/${id}`, historyLimit ? { history_limit: String(historyLimit) } : undefined);
|
|
11
|
-
exports.getSession = getSession;
|
|
12
|
-
const createSession = (project, body) => client_1.default.post(`/projects/${project}/sessions`, body);
|
|
13
|
-
exports.createSession = createSession;
|
|
14
|
-
const renameSession = (project, id, body) => client_1.default.patch(`/projects/${project}/sessions/${id}`, body);
|
|
15
|
-
exports.renameSession = renameSession;
|
|
16
|
-
const deleteSession = (project, id) => client_1.default.delete(`/projects/${project}/sessions/${id}`);
|
|
17
|
-
exports.deleteSession = deleteSession;
|
|
18
|
-
const switchSession = (project, body) => client_1.default.post(`/projects/${project}/sessions/switch`, body);
|
|
19
|
-
exports.switchSession = switchSession;
|
|
20
|
-
const sendMessage = (project, body) => client_1.default.post(`/projects/${project}/send`, body);
|
|
21
|
-
exports.sendMessage = sendMessage;
|
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.sessionLabel = sessionLabel;
|
|
4
|
-
exports.sessionMatchesSearch = sessionMatchesSearch;
|
|
5
|
-
exports.sortSessionsByLiveAndUpdated = sortSessionsByLiveAndUpdated;
|
|
6
|
-
exports.timeAgo = timeAgo;
|
|
7
|
-
function sessionLabel(session) {
|
|
8
|
-
return session.name || session.user_name || session.chat_name || `Session ${session.id.slice(0, 8)}`;
|
|
9
|
-
}
|
|
10
|
-
function sessionMatchesSearch(session, query) {
|
|
11
|
-
if (!query) {
|
|
12
|
-
return true;
|
|
13
|
-
}
|
|
14
|
-
const haystack = [
|
|
15
|
-
sessionLabel(session),
|
|
16
|
-
session.session_key,
|
|
17
|
-
session.last_message?.content || '',
|
|
18
|
-
session.user_name || '',
|
|
19
|
-
session.chat_name || '',
|
|
20
|
-
]
|
|
21
|
-
.join(' ')
|
|
22
|
-
.toLowerCase();
|
|
23
|
-
return haystack.includes(query);
|
|
24
|
-
}
|
|
25
|
-
function sortSessionsByLiveAndUpdated(items) {
|
|
26
|
-
return [...items].sort((a, b) => {
|
|
27
|
-
if (a.live !== b.live) {
|
|
28
|
-
return a.live ? -1 : 1;
|
|
29
|
-
}
|
|
30
|
-
return (b.updated_at || b.created_at || '').localeCompare(a.updated_at || a.created_at || '');
|
|
31
|
-
});
|
|
32
|
-
}
|
|
33
|
-
function timeAgo(iso, justNowLabel = 'just now') {
|
|
34
|
-
if (!iso) {
|
|
35
|
-
return '';
|
|
36
|
-
}
|
|
37
|
-
const diff = Date.now() - new Date(iso).getTime();
|
|
38
|
-
const mins = Math.floor(diff / 60000);
|
|
39
|
-
if (mins < 1) {
|
|
40
|
-
return justNowLabel;
|
|
41
|
-
}
|
|
42
|
-
if (mins < 60) {
|
|
43
|
-
return `${mins}m`;
|
|
44
|
-
}
|
|
45
|
-
const hours = Math.floor(mins / 60);
|
|
46
|
-
if (hours < 24) {
|
|
47
|
-
return `${hours}h`;
|
|
48
|
-
}
|
|
49
|
-
const days = Math.floor(hours / 24);
|
|
50
|
-
return `${days}d`;
|
|
51
|
-
}
|
|
@@ -1,75 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getProjectProviderId = getProjectProviderId;
|
|
4
|
-
exports.selectProjectProvider = selectProjectProvider;
|
|
5
|
-
exports.selectProjectModel = selectProjectModel;
|
|
6
|
-
exports.removeProviderReferences = removeProviderReferences;
|
|
7
|
-
function cloneConfig(config) {
|
|
8
|
-
return JSON.parse(JSON.stringify(config || {}));
|
|
9
|
-
}
|
|
10
|
-
function getProjectProviderId(config, projectName) {
|
|
11
|
-
const project = config?.projects?.find((entry) => entry.name === projectName);
|
|
12
|
-
return String(project?.agent?.options?.provider_id || '');
|
|
13
|
-
}
|
|
14
|
-
function selectProjectProvider(config, projectName, providerId) {
|
|
15
|
-
const next = cloneConfig(config);
|
|
16
|
-
const projects = Array.isArray(next.projects) ? next.projects : [];
|
|
17
|
-
const index = projects.findIndex((entry) => entry.name === projectName);
|
|
18
|
-
if (index < 0) {
|
|
19
|
-
throw new Error(`Project not found in config: ${projectName}`);
|
|
20
|
-
}
|
|
21
|
-
const project = projects[index];
|
|
22
|
-
projects[index] = {
|
|
23
|
-
...project,
|
|
24
|
-
agent: {
|
|
25
|
-
...project.agent,
|
|
26
|
-
options: {
|
|
27
|
-
...(project.agent?.options || {}),
|
|
28
|
-
provider_id: providerId,
|
|
29
|
-
},
|
|
30
|
-
},
|
|
31
|
-
};
|
|
32
|
-
next.projects = projects;
|
|
33
|
-
return next;
|
|
34
|
-
}
|
|
35
|
-
function selectProjectModel(config, projectName, model) {
|
|
36
|
-
const next = cloneConfig(config);
|
|
37
|
-
const projects = Array.isArray(next.projects) ? next.projects : [];
|
|
38
|
-
const index = projects.findIndex((entry) => entry.name === projectName);
|
|
39
|
-
if (index < 0) {
|
|
40
|
-
throw new Error(`Project not found in config: ${projectName}`);
|
|
41
|
-
}
|
|
42
|
-
const project = projects[index];
|
|
43
|
-
projects[index] = {
|
|
44
|
-
...project,
|
|
45
|
-
agent: {
|
|
46
|
-
...project.agent,
|
|
47
|
-
options: {
|
|
48
|
-
...(project.agent?.options || {}),
|
|
49
|
-
model,
|
|
50
|
-
},
|
|
51
|
-
},
|
|
52
|
-
};
|
|
53
|
-
next.projects = projects;
|
|
54
|
-
return next;
|
|
55
|
-
}
|
|
56
|
-
function removeProviderReferences(config, providerId) {
|
|
57
|
-
const next = cloneConfig(config);
|
|
58
|
-
const projects = Array.isArray(next.projects) ? next.projects : [];
|
|
59
|
-
next.projects = projects.map((project) => {
|
|
60
|
-
if (project.agent?.options?.provider_id !== providerId) {
|
|
61
|
-
return project;
|
|
62
|
-
}
|
|
63
|
-
return {
|
|
64
|
-
...project,
|
|
65
|
-
agent: {
|
|
66
|
-
...project.agent,
|
|
67
|
-
options: {
|
|
68
|
-
...(project.agent?.options || {}),
|
|
69
|
-
provider_id: '',
|
|
70
|
-
},
|
|
71
|
-
},
|
|
72
|
-
};
|
|
73
|
-
});
|
|
74
|
-
return next;
|
|
75
|
-
}
|
|
@@ -1,71 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
const node_test_1 = __importDefault(require("node:test"));
|
|
7
|
-
const strict_1 = __importDefault(require("node:assert/strict"));
|
|
8
|
-
const project_provider_config_1 = require("../../src/pages/Projects/project-provider-config");
|
|
9
|
-
function createConfig() {
|
|
10
|
-
return {
|
|
11
|
-
projects: [{
|
|
12
|
-
name: 'agentdock',
|
|
13
|
-
agent: {
|
|
14
|
-
type: 'localcore-acp',
|
|
15
|
-
options: {
|
|
16
|
-
model: 'old-model',
|
|
17
|
-
provider_id: 'old-provider',
|
|
18
|
-
},
|
|
19
|
-
},
|
|
20
|
-
platforms: [],
|
|
21
|
-
}],
|
|
22
|
-
};
|
|
23
|
-
}
|
|
24
|
-
(0, node_test_1.default)('project provider selection updates agent provider_id without mutating the original config', () => {
|
|
25
|
-
const config = createConfig();
|
|
26
|
-
const next = (0, project_provider_config_1.selectProjectProvider)(config, 'agentdock', 'deepseek');
|
|
27
|
-
strict_1.default.equal((0, project_provider_config_1.getProjectProviderId)(next, 'agentdock'), 'deepseek');
|
|
28
|
-
strict_1.default.equal((0, project_provider_config_1.getProjectProviderId)(config, 'agentdock'), 'old-provider');
|
|
29
|
-
strict_1.default.equal(next.projects?.[0]?.agent.options?.model, 'old-model');
|
|
30
|
-
});
|
|
31
|
-
(0, node_test_1.default)('project model selection updates only the project model override', () => {
|
|
32
|
-
const config = createConfig();
|
|
33
|
-
const next = (0, project_provider_config_1.selectProjectModel)(config, 'agentdock', 'deepseek-chat');
|
|
34
|
-
strict_1.default.equal(next.projects?.[0]?.agent.options?.model, 'deepseek-chat');
|
|
35
|
-
strict_1.default.equal(next.projects?.[0]?.agent.options?.provider_id, 'old-provider');
|
|
36
|
-
strict_1.default.equal(config.projects?.[0]?.agent.options?.model, 'old-model');
|
|
37
|
-
});
|
|
38
|
-
(0, node_test_1.default)('project provider selection reports missing projects clearly', () => {
|
|
39
|
-
strict_1.default.throws(() => (0, project_provider_config_1.selectProjectProvider)(createConfig(), 'missing', 'deepseek'), /Project not found in config: missing/);
|
|
40
|
-
});
|
|
41
|
-
(0, node_test_1.default)('provider removal clears references from every project without mutating the original config', () => {
|
|
42
|
-
const config = createConfig();
|
|
43
|
-
config.projects?.push({
|
|
44
|
-
name: 'project-2',
|
|
45
|
-
agent: {
|
|
46
|
-
type: 'localcore-acp',
|
|
47
|
-
options: {
|
|
48
|
-
model: 'other-model',
|
|
49
|
-
provider_id: 'old-provider',
|
|
50
|
-
},
|
|
51
|
-
},
|
|
52
|
-
platforms: [],
|
|
53
|
-
});
|
|
54
|
-
config.projects?.push({
|
|
55
|
-
name: 'project-3',
|
|
56
|
-
agent: {
|
|
57
|
-
type: 'localcore-acp',
|
|
58
|
-
options: {
|
|
59
|
-
model: 'third-model',
|
|
60
|
-
provider_id: 'keep-provider',
|
|
61
|
-
},
|
|
62
|
-
},
|
|
63
|
-
platforms: [],
|
|
64
|
-
});
|
|
65
|
-
const next = (0, project_provider_config_1.removeProviderReferences)(config, 'old-provider');
|
|
66
|
-
strict_1.default.equal((0, project_provider_config_1.getProjectProviderId)(next, 'agentdock'), '');
|
|
67
|
-
strict_1.default.equal((0, project_provider_config_1.getProjectProviderId)(next, 'project-2'), '');
|
|
68
|
-
strict_1.default.equal((0, project_provider_config_1.getProjectProviderId)(next, 'project-3'), 'keep-provider');
|
|
69
|
-
strict_1.default.equal((0, project_provider_config_1.getProjectProviderId)(config, 'agentdock'), 'old-provider');
|
|
70
|
-
strict_1.default.equal((0, project_provider_config_1.getProjectProviderId)(config, 'project-2'), 'old-provider');
|
|
71
|
-
});
|