@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.
Files changed (185) hide show
  1. package/README.md +14 -0
  2. package/dist/renderer/assets/{Badge-Bg_nNvBL.js → Badge-CDTbmw1h.js} +1 -1
  3. package/dist/renderer/assets/Card-DayUo35w.js +1 -0
  4. package/dist/renderer/assets/Config-ByGMQuzR.js +21 -0
  5. package/dist/renderer/assets/CronList-XqHdVlgu.js +1 -0
  6. package/dist/renderer/assets/Dashboard-CZj-oANw.js +41 -0
  7. package/dist/renderer/assets/{EmptyState-C60g3RMj.js → EmptyState-EFMkOjZO.js} +1 -1
  8. package/dist/renderer/assets/HighlightedMarkdown-DyvF3DHK.js +12 -0
  9. package/dist/renderer/assets/Input-DxoWVc9d.js +1 -0
  10. package/dist/renderer/assets/{KnowledgeDetail-CC5C7JYe.js → KnowledgeDetail-CbUb2tG7.js} +2 -2
  11. package/dist/renderer/assets/{KnowledgeHome-3rlvxgWf.js → KnowledgeHome-BWV1gz4f.js} +3 -3
  12. package/dist/renderer/assets/Logs-DqnanQTc.js +6 -0
  13. package/dist/renderer/assets/{Modal-BQUW9LSf.js → Modal-yY7TzR0x.js} +3 -3
  14. package/dist/renderer/assets/MonitorList-CIjGQkFs.js +1 -0
  15. package/dist/renderer/assets/Page-vwHNUdoj.js +1 -0
  16. package/dist/renderer/assets/{Select-CfRkos3z.js → Select-CmbK36pN.js} +2 -2
  17. package/dist/renderer/assets/ThreadChat-4OceMgM4.js +86 -0
  18. package/dist/renderer/assets/Workspace-DplPJOjJ.js +19 -0
  19. package/dist/renderer/assets/{arrow-left-D1DbXrLA.js → arrow-left-C8HfBt2K.js} +1 -1
  20. package/dist/renderer/assets/{book-open-BxC1z1C1.js → book-open-BCdZWncQ.js} +1 -1
  21. package/dist/renderer/assets/channels-hgO3cAIx.js +6 -0
  22. package/dist/renderer/assets/chevron-down-BPk77tqY.js +11 -0
  23. package/dist/renderer/assets/index-BIKL3fTP.css +11 -0
  24. package/dist/renderer/assets/index-BlA4xPdd.js +41 -0
  25. package/dist/renderer/assets/index-wYpjqVqC.js +167 -0
  26. package/dist/renderer/assets/knowledge-7pl06KuH.js +1 -0
  27. package/dist/renderer/assets/{pencil-X44UaxwR.js → pencil-CB1SWZ9A.js} +1 -1
  28. package/dist/renderer/assets/{play-ujo-De38.js → play-BvsoXUrM.js} +1 -1
  29. package/dist/renderer/assets/{plus-BHgVdG_A.js → plus-CokBDnaL.js} +1 -1
  30. package/dist/renderer/assets/{save-Cz6giKrE.js → save-D-w4kATO.js} +1 -1
  31. package/dist/renderer/assets/{search-DKWvTqi5.js → search-Cnsn6i4Q.js} +1 -1
  32. package/dist/renderer/assets/{shield-check-V82O8AC1.js → shield-check-Cjja2Gh6.js} +1 -1
  33. package/dist/renderer/assets/threads-BCm6j4eI.js +1 -0
  34. package/dist/renderer/assets/{trash-2-_Fgwk8mc.js → trash-2-CIxz9qYY.js} +1 -1
  35. package/dist/renderer/index.html +2 -2
  36. package/dist-electron/packages/contracts/src/automation.js +2 -0
  37. package/dist-electron/packages/contracts/src/channels.js +2 -0
  38. package/dist-electron/packages/contracts/src/knowledge.js +2 -0
  39. package/dist-electron/packages/contracts/src/local-core.js +15 -0
  40. package/dist-electron/packages/contracts/src/runtime.js +2 -0
  41. package/dist-electron/packages/contracts/src/scheduler.js +2 -0
  42. package/dist-electron/packages/contracts/src/threads.js +2 -0
  43. package/dist-electron/packages/core-sdk/src/automation.js +32 -0
  44. package/dist-electron/packages/core-sdk/src/channels.js +121 -0
  45. package/dist-electron/packages/core-sdk/src/client.js +455 -0
  46. package/dist-electron/packages/core-sdk/src/index.js +43 -607
  47. package/dist-electron/packages/core-sdk/src/knowledge.js +85 -0
  48. package/dist-electron/packages/core-sdk/src/request.js +22 -0
  49. package/dist-electron/packages/core-sdk/src/runtime.js +214 -0
  50. package/dist-electron/packages/core-sdk/src/scheduler.js +32 -0
  51. package/dist-electron/packages/core-sdk/src/threads.js +67 -0
  52. package/dist-electron/packages/plugin-sdk/src/agents.js +2 -0
  53. package/dist-electron/packages/plugin-sdk/src/automation.js +2 -0
  54. package/dist-electron/packages/plugin-sdk/src/channels.js +2 -0
  55. package/dist-electron/packages/plugin-sdk/src/index.js +21 -0
  56. package/dist-electron/packages/plugin-sdk/src/knowledge.js +2 -0
  57. package/dist-electron/packages/plugin-sdk/src/runtime.js +2 -0
  58. package/dist-electron/packages/plugin-sdk/src/scheduler.js +2 -0
  59. package/dist-electron/packages/plugin-sdk/src/threads.js +2 -0
  60. package/dist-electron/services/local-ai-core/src/acp/local-core-acp-backend.js +6 -9
  61. package/dist-electron/services/local-ai-core/src/acp/local-core-acp-content.js +2 -2
  62. package/dist-electron/services/local-ai-core/src/acp/local-core-acp-turn-coordinator.js +3 -3
  63. package/dist-electron/services/local-ai-core/src/acp/store/agent-task-store.js +5 -5
  64. package/dist-electron/services/local-ai-core/src/acp/store/automation-monitor-store.js +12 -12
  65. package/dist-electron/services/local-ai-core/src/acp/store/local-core-acp-store.js +2 -2
  66. package/dist-electron/services/local-ai-core/src/acp/store/scheduler-store.js +11 -11
  67. package/dist-electron/services/local-ai-core/src/acp/store/security-store.js +3 -3
  68. package/dist-electron/services/local-ai-core/src/acp/store/thread-store.js +7 -7
  69. package/dist-electron/services/local-ai-core/src/acp/workspace-acp-permissions.js +2 -2
  70. package/dist-electron/services/local-ai-core/src/agents/claudecode/definition.js +3 -3
  71. package/dist-electron/services/local-ai-core/src/agents/codex/definition.js +3 -3
  72. package/dist-electron/services/local-ai-core/src/agents/localcore-acp/definition.js +2 -2
  73. package/dist-electron/services/local-ai-core/src/agents/localcore-acp/index.js +4 -4
  74. package/dist-electron/services/local-ai-core/src/agents/opencode/launch.js +2 -2
  75. package/dist-electron/services/local-ai-core/src/agents/pi/definition.js +2 -2
  76. package/dist-electron/services/local-ai-core/src/agents/pi/launch.js +3 -3
  77. package/dist-electron/services/local-ai-core/src/agents/pi/provider-materializer.js +1 -1
  78. package/dist-electron/services/local-ai-core/src/agents/shared/agent-plugin.js +4 -4
  79. package/dist-electron/services/local-ai-core/src/channel/lark/cards.js +33 -18
  80. package/dist-electron/services/local-ai-core/src/channel/lark/config.js +2 -2
  81. package/dist-electron/services/local-ai-core/src/channel/lark/gateway-utils.js +91 -0
  82. package/dist-electron/services/local-ai-core/src/channel/lark/inbound-handler.js +180 -0
  83. package/dist-electron/services/local-ai-core/src/channel/lark/local-core-lark-gateway.js +52 -456
  84. package/dist-electron/services/local-ai-core/src/channel/lark/outbound-transport.js +124 -0
  85. package/dist-electron/services/local-ai-core/src/channel/shared/inbound-attachment-store.js +93 -0
  86. package/dist-electron/services/local-ai-core/src/channel/shared/inbound-authorization.js +54 -0
  87. package/dist-electron/services/local-ai-core/src/channel/weixin/config.js +2 -2
  88. package/dist-electron/services/local-ai-core/src/channel/weixin/inbound-media.js +21 -0
  89. package/dist-electron/services/local-ai-core/src/channel/weixin/inbound-poller.js +167 -0
  90. package/dist-electron/services/local-ai-core/src/channel/weixin/local-core-weixin-gateway.js +98 -483
  91. package/dist-electron/services/local-ai-core/src/channel/weixin/runtime-state.js +156 -0
  92. package/dist-electron/services/local-ai-core/src/channel/weixin/text-utils.js +100 -0
  93. package/dist-electron/services/local-ai-core/src/cli/lac.js +6 -6
  94. package/dist-electron/services/local-ai-core/src/cli/monitor-cli-parsers.js +2 -2
  95. package/dist-electron/services/local-ai-core/src/kernel/bootstrap.js +28 -70
  96. package/dist-electron/services/local-ai-core/src/kernel/local-core-errors.js +33 -5
  97. package/dist-electron/services/local-ai-core/src/plugins/builtin/knowledge-ai-vector-plugin.js +2 -2
  98. package/dist-electron/services/local-ai-core/src/plugins/builtin/knowledge-noop-plugin.js +2 -2
  99. package/dist-electron/services/local-ai-core/src/router/workspace-bridge-event-stream.js +29 -0
  100. package/dist-electron/services/local-ai-core/src/router/workspace-route-config.js +5 -5
  101. package/dist-electron/services/local-ai-core/src/router/workspace-router.js +47 -60
  102. package/dist-electron/services/local-ai-core/src/runtime/agent-runtime-detector.js +5 -5
  103. package/dist-electron/services/local-ai-core/src/runtime/config-migration.js +6 -6
  104. package/dist-electron/services/local-ai-core/src/runtime/deployment-diagnostics.js +3 -3
  105. package/dist-electron/services/local-ai-core/src/runtime/external-service.js +3 -1
  106. package/dist-electron/services/local-ai-core/src/runtime/handlers/automation-handler.js +11 -2
  107. package/dist-electron/services/local-ai-core/src/runtime/handlers/channel-handler.js +12 -6
  108. package/dist-electron/services/local-ai-core/src/runtime/handlers/external-handler.js +10 -2
  109. package/dist-electron/services/local-ai-core/src/runtime/handlers/knowledge-handler.js +18 -6
  110. package/dist-electron/services/local-ai-core/src/runtime/handlers/provider-handler.js +7 -2
  111. package/dist-electron/services/local-ai-core/src/runtime/handlers/runtime-handler.js +28 -3
  112. package/dist-electron/services/local-ai-core/src/runtime/handlers/scheduler-handler.js +10 -2
  113. package/dist-electron/services/local-ai-core/src/runtime/handlers/security-handler.js +18 -5
  114. package/dist-electron/services/local-ai-core/src/runtime/handlers/task-handler.js +14 -2
  115. package/dist-electron/services/local-ai-core/src/runtime/handlers/thread-handler.js +18 -15
  116. package/dist-electron/services/local-ai-core/src/runtime/handlers/workspace-handler.js +13 -2
  117. package/dist-electron/services/local-ai-core/src/runtime/local-core-controller.js +35 -8
  118. package/dist-electron/services/local-ai-core/src/runtime/request-validation.js +79 -0
  119. package/dist-electron/services/local-ai-core/src/runtime/runtime-detection-service.js +9 -9
  120. package/dist-electron/services/local-ai-core/src/runtime/server-helpers.js +10 -1
  121. package/dist-electron/services/local-ai-core/src/runtime/server.js +2 -1
  122. package/dist-electron/services/local-ai-core/src/runtime/workspace-project-registry.js +76 -0
  123. package/dist-electron/services/local-ai-core/src/sandbox/sandbox-config.js +8 -8
  124. package/dist-electron/services/local-ai-core/src/thread/agent-message-policy.js +75 -0
  125. package/dist-electron/shared/desktop.js +1 -64
  126. package/dist-electron/src/components/chat/chat-controller-state.js +60 -0
  127. package/dist-electron/src/components/chat/chat-event-gate.js +146 -0
  128. package/dist-electron/src/components/chat/markdown-code-block.js +8 -0
  129. package/dist-electron/src/pages/Desktop/workspace-model.js +212 -0
  130. package/dist-electron/src/pages/Threads/thread-chat-model.js +50 -51
  131. package/dist-electron/tests/contracts/agent-message-policy.test.js +21 -0
  132. package/dist-electron/tests/contracts/architecture-docs.test.js +56 -33
  133. package/dist-electron/tests/contracts/chat-event-gate.test.js +114 -0
  134. package/dist-electron/tests/contracts/chat-markdown.test.js +16 -0
  135. package/dist-electron/tests/contracts/thread-task-state.test.js +32 -0
  136. package/dist-electron/tests/contracts/workspace-identity.test.js +23 -0
  137. package/dist-electron/tests/electron/core-client.test.js +284 -0
  138. package/dist-electron/tests/electron/plugin-kernel.test.js +54 -0
  139. package/dist-electron/tests/electron/renderer-packaging.test.js +9 -0
  140. package/dist-electron/tests/electron/workspace-task-store.test.js +31 -0
  141. package/dist-electron/tests/integration/channel-inbound-attachment-store.test.js +117 -0
  142. package/dist-electron/tests/integration/channel-inbound-authorization.test.js +80 -0
  143. package/dist-electron/tests/integration/lark-gateway-utils.test.js +13 -0
  144. package/dist-electron/tests/integration/lark-gateway.test.js +58 -4
  145. package/dist-electron/tests/integration/local-core-errors.test.js +41 -0
  146. package/dist-electron/tests/integration/weixin-gateway.test.js +36 -0
  147. package/dist-electron/tests/integration/weixin-runtime-state.test.js +32 -0
  148. package/dist-electron/tests/integration/weixin-text-utils.test.js +15 -0
  149. package/package.json +9 -4
  150. package/dist/renderer/assets/Chat-BJveQQKu.js +0 -2
  151. package/dist/renderer/assets/ChatMarkdown-Bqn2HJ6f.js +0 -45
  152. package/dist/renderer/assets/Config-CMtZDRAE.js +0 -21
  153. package/dist/renderer/assets/CronList-C-ILB_Ae.js +0 -1
  154. package/dist/renderer/assets/Dashboard-CsKBSQIe.js +0 -26
  155. package/dist/renderer/assets/Logs-CktemGN0.js +0 -1
  156. package/dist/renderer/assets/MonitorList-B0hxjuOZ.js +0 -1
  157. package/dist/renderer/assets/Page-DL_Nv2i5.js +0 -1
  158. package/dist/renderer/assets/ProjectDetail-Djr9-MyT.js +0 -11
  159. package/dist/renderer/assets/ProjectList-BKl4eW7q.js +0 -1
  160. package/dist/renderer/assets/SessionChat-Dxv8D5DW.js +0 -1
  161. package/dist/renderer/assets/SessionList-BJ2GjXvR.js +0 -1
  162. package/dist/renderer/assets/ThreadChat-CAsIl9qf.js +0 -28
  163. package/dist/renderer/assets/Workspace-CaUhiGBX.js +0 -19
  164. package/dist/renderer/assets/bot-Fw3IzhJA.js +0 -6
  165. package/dist/renderer/assets/check-5zCTgp3A.js +0 -6
  166. package/dist/renderer/assets/chevron-down-N3PxTNxH.js +0 -6
  167. package/dist/renderer/assets/circle-C_chUflo.js +0 -6
  168. package/dist/renderer/assets/desktop-DkQTZNhe.js +0 -1
  169. package/dist/renderer/assets/desktop-JQkhNOF4.js +0 -5
  170. package/dist/renderer/assets/funnel-B8ZAv6I7.js +0 -6
  171. package/dist/renderer/assets/heart-M9A3E4Ed.js +0 -6
  172. package/dist/renderer/assets/index-Bwv855ID.js +0 -41
  173. package/dist/renderer/assets/index-CjCuR6DI.css +0 -11
  174. package/dist/renderer/assets/index-DJ8w4e0l.js +0 -182
  175. package/dist/renderer/assets/projects-DB1FLZ3A.js +0 -1
  176. package/dist/renderer/assets/server-BsuHcYl4.js +0 -11
  177. package/dist/renderer/assets/session-utils-DnAWL3eo.js +0 -6
  178. package/dist/renderer/assets/sessions-DptxO_BE.js +0 -1
  179. package/dist/renderer/assets/user-DQKTaUcR.js +0 -6
  180. package/dist/renderer/assets/wifi-off-vjH-MD2w.js +0 -11
  181. package/dist-electron/src/api/client.js +0 -73
  182. package/dist-electron/src/api/sessions.js +0 -21
  183. package/dist-electron/src/lib/session-utils.js +0 -51
  184. package/dist-electron/src/pages/Projects/project-provider-config.js +0 -75
  185. 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
- });