@kafca/agentdock 0.1.26 → 0.1.28
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 +1 -0
- package/dist/renderer/assets/{Badge-qZHTUGI3.js → Badge-B-Ayib4h.js} +1 -1
- package/dist/renderer/assets/{Chat-W35BzaZk.js → Chat-CNEOxtyz.js} +1 -1
- package/dist/renderer/assets/{ChatMarkdown-DxKT_YGp.js → ChatMarkdown-BTd1QBj9.js} +1 -1
- package/dist/renderer/assets/{Config-COTX6LDN.js → Config-ByKhcLa6.js} +1 -1
- package/dist/renderer/assets/{CronList-kxlfu9Iq.js → CronList-0mi8dcC5.js} +1 -1
- package/dist/renderer/assets/{Dashboard-Y4PGxzuV.js → Dashboard-C8-tB_qg.js} +2 -2
- package/dist/renderer/assets/{EmptyState-Cjq33EOF.js → EmptyState-TR-9nr5e.js} +1 -1
- package/dist/renderer/assets/{KnowledgeDetail-CztNt7i8.js → KnowledgeDetail-DKAxFOXc.js} +1 -1
- package/dist/renderer/assets/{KnowledgeHome-BAOyy3I9.js → KnowledgeHome-CM-1IDr4.js} +1 -1
- package/dist/renderer/assets/{Logs-PRZ1IIEi.js → Logs-DI5RFPri.js} +1 -1
- package/dist/renderer/assets/{Modal-B1rgqkBM.js → Modal-CQpa4NPP.js} +1 -1
- package/dist/renderer/assets/{Page-CjzAhgaU.js → Page-BHXEAwzQ.js} +1 -1
- package/dist/renderer/assets/{ProjectDetail-XGh_5XxQ.js → ProjectDetail-Dn5elnHx.js} +1 -1
- package/dist/renderer/assets/{ProjectList-BkPTpQRZ.js → ProjectList-D6yvEgb5.js} +1 -1
- package/dist/renderer/assets/{Select-BZd1QJVw.js → Select-BbkcXnXL.js} +1 -1
- package/dist/renderer/assets/{SessionChat-C3sOTWGT.js → SessionChat-Vkf-7gvX.js} +1 -1
- package/dist/renderer/assets/{SessionList-B5WK1big.js → SessionList-c5encjWd.js} +1 -1
- package/dist/renderer/assets/{ThreadChat-DWiBLHC7.js → ThreadChat-DY4wzomi.js} +1 -1
- package/dist/renderer/assets/{Workspace-CQ64VK-o.js → Workspace-BC7hWqhP.js} +1 -1
- package/dist/renderer/assets/{arrow-left-FLdaWHZ8.js → arrow-left-I_Y1kdN9.js} +1 -1
- package/dist/renderer/assets/{book-open-DaSioPS9.js → book-open-B3anUYvp.js} +1 -1
- package/dist/renderer/assets/{check-BiSmsuGR.js → check-BPNCDKgS.js} +1 -1
- package/dist/renderer/assets/{chevron-down-pZ2KjmDR.js → chevron-down-BaxUcOIV.js} +1 -1
- package/dist/renderer/assets/{circle-296S3nw9.js → circle-DJQiypFS.js} +1 -1
- package/dist/renderer/assets/{desktop-88jgnOZV.js → desktop-Cv51clcN.js} +1 -1
- package/dist/renderer/assets/{funnel-Dvz31PLy.js → funnel-DqKBtiqE.js} +1 -1
- package/dist/renderer/assets/{heart-D9mxSZVO.js → heart-CmoNjvMO.js} +1 -1
- package/dist/renderer/assets/{index-CZA4lqvM.js → index-BfXqhQ1Z.js} +1 -1
- package/dist/renderer/assets/{index-dOdOWAa2.js → index-DXJl2HOK.js} +2 -2
- package/dist/renderer/assets/{pencil-B2fRbaAo.js → pencil-CLUBszbw.js} +1 -1
- package/dist/renderer/assets/{play-CWPRHypD.js → play-l2RPZuAi.js} +1 -1
- package/dist/renderer/assets/{plug-B7IBVwSo.js → plug-CeUPIjRt.js} +1 -1
- package/dist/renderer/assets/{plus-Cn3Awirs.js → plus-BjkefS2P.js} +1 -1
- package/dist/renderer/assets/projects-De73QY_o.js +1 -0
- package/dist/renderer/assets/{save-MVjXRqom.js → save-D0yYt9tz.js} +1 -1
- package/dist/renderer/assets/{search-Bu5c7wTX.js → search-B7s473Y4.js} +1 -1
- package/dist/renderer/assets/{server-aDvfqBg_.js → server-Dz_h8X_8.js} +1 -1
- package/dist/renderer/assets/{session-utils-DjDpjT9r.js → session-utils-BvNRTRXA.js} +1 -1
- package/dist/renderer/assets/{sessions-D7dV8h0H.js → sessions-KPJsgKbQ.js} +1 -1
- package/dist/renderer/assets/{shield-check-DJdEhc_e.js → shield-check-Wc5wfUUs.js} +1 -1
- package/dist/renderer/assets/{trash-2-BF3ejnXL.js → trash-2-7INdaB9w.js} +1 -1
- package/dist/renderer/assets/{user-BwuWCrin.js → user-CLbCgWNR.js} +1 -1
- package/dist/renderer/assets/{wifi-off-BahJZfDs.js → wifi-off-BfDVPXbO.js} +1 -1
- package/dist/renderer/index.html +1 -1
- package/dist-electron/electron/local-core-refactor.test.js +125 -12
- package/dist-electron/services/local-ai-core/src/channel/lark/local-core-lark-gateway.js +3 -9
- package/dist-electron/services/local-ai-core/src/channel/lark/runtime-state.js +7 -9
- package/package.json +1 -1
- package/dist/renderer/assets/projects-CmCopAi6.js +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{z as t}from"./index-DXJl2HOK.js";const e=()=>t.get("/projects"),r=o=>t.get(`/projects/${o}`);export{r as g,e as l};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{z as o}from"./index-
|
|
1
|
+
import{z as o}from"./index-DXJl2HOK.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};
|
package/dist/renderer/index.html
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
<link rel="icon" type="image/svg+xml" href="./favicon.svg" />
|
|
6
6
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
7
7
|
<title>AgentDock</title>
|
|
8
|
-
<script type="module" crossorigin src="./assets/index-
|
|
8
|
+
<script type="module" crossorigin src="./assets/index-DXJl2HOK.js"></script>
|
|
9
9
|
<link rel="stylesheet" crossorigin href="./assets/index-DFiJR0vv.css">
|
|
10
10
|
</head>
|
|
11
11
|
<body class="bg-[#f5f5f7] dark:bg-[#151516]">
|
|
@@ -1261,7 +1261,7 @@ const server_routes_js_1 = require("../services/local-ai-core/src/runtime/server
|
|
|
1261
1261
|
strict_1.default.equal(patchedCards.length, 0);
|
|
1262
1262
|
strict_1.default.deepEqual(storedMessageIds, ['lark-msg-2']);
|
|
1263
1263
|
});
|
|
1264
|
-
(0, node_test_1.default)('lark bridge
|
|
1264
|
+
(0, node_test_1.default)('lark bridge sends final reply as its own card instead of streaming draft', async () => {
|
|
1265
1265
|
const createdCards = [];
|
|
1266
1266
|
const patchedCards = [];
|
|
1267
1267
|
const storedMessageIds = [];
|
|
@@ -1332,13 +1332,11 @@ const server_routes_js_1 = require("../services/local-ai-core/src/runtime/server
|
|
|
1332
1332
|
replyCtx: 'run-1',
|
|
1333
1333
|
content: '真正最终回答',
|
|
1334
1334
|
});
|
|
1335
|
-
strict_1.default.deepEqual(createdCards.map((card) => card.text), ['
|
|
1336
|
-
strict_1.default.deepEqual(patchedCards, [
|
|
1337
|
-
{ messageId: 'lark-msg-1', text: '真正最终回答' },
|
|
1338
|
-
]);
|
|
1335
|
+
strict_1.default.deepEqual(createdCards.map((card) => card.text), ['真正最终回答']);
|
|
1336
|
+
strict_1.default.deepEqual(patchedCards, []);
|
|
1339
1337
|
strict_1.default.deepEqual(storedMessageIds, ['lark-msg-1']);
|
|
1340
1338
|
});
|
|
1341
|
-
(0, node_test_1.default)('lark bridge
|
|
1339
|
+
(0, node_test_1.default)('lark bridge sends tool and final as separate cards without patching tool progress', async () => {
|
|
1342
1340
|
const createdCards = [];
|
|
1343
1341
|
const patchedCards = [];
|
|
1344
1342
|
const storedMessageIds = [];
|
|
@@ -1417,16 +1415,130 @@ const server_routes_js_1 = require("../services/local-ai-core/src/runtime/server
|
|
|
1417
1415
|
content: '好的,文件存在,现在发送给你:已发送!`CLAUDE.md` 文件已经发出去了,请查收',
|
|
1418
1416
|
});
|
|
1419
1417
|
strict_1.default.deepEqual(createdCards.map((card) => card.text), [
|
|
1420
|
-
'好的,文件存在,现在发送给你:已',
|
|
1421
1418
|
'🔧 bash',
|
|
1419
|
+
'好的,文件存在,现在发送给你:已发送!`CLAUDE.md` 文件已经发出去了,请查收',
|
|
1422
1420
|
]);
|
|
1423
|
-
strict_1.default.deepEqual(patchedCards, [
|
|
1424
|
-
|
|
1425
|
-
|
|
1426
|
-
|
|
1421
|
+
strict_1.default.deepEqual(patchedCards, []);
|
|
1422
|
+
strict_1.default.deepEqual(storedMessageIds, ['lark-msg-2']);
|
|
1423
|
+
});
|
|
1424
|
+
(0, node_test_1.default)('lark bridge flushes interleaved thought segments before tools and final', async () => {
|
|
1425
|
+
const createdCards = [];
|
|
1426
|
+
const patchedCards = [];
|
|
1427
|
+
const storedMessageIds = [];
|
|
1428
|
+
const client = {
|
|
1429
|
+
im: {
|
|
1430
|
+
message: {
|
|
1431
|
+
create: async (request) => {
|
|
1432
|
+
const messageId = `lark-msg-${createdCards.length + 1}`;
|
|
1433
|
+
const card = JSON.parse(String(request.data.content || '{}'));
|
|
1434
|
+
createdCards.push({
|
|
1435
|
+
messageId,
|
|
1436
|
+
text: String(card.elements?.[0]?.content || ''),
|
|
1437
|
+
});
|
|
1438
|
+
return { data: { message_id: messageId } };
|
|
1439
|
+
},
|
|
1440
|
+
patch: async (request) => {
|
|
1441
|
+
const card = JSON.parse(String(request.data.content || '{}'));
|
|
1442
|
+
patchedCards.push({
|
|
1443
|
+
messageId: String(request.path.message_id || ''),
|
|
1444
|
+
text: String(card.elements?.[0]?.content || ''),
|
|
1445
|
+
});
|
|
1446
|
+
},
|
|
1447
|
+
},
|
|
1427
1448
|
},
|
|
1449
|
+
};
|
|
1450
|
+
const gateway = new local_core_lark_gateway_js_1.LocalCoreLarkGateway({
|
|
1451
|
+
store: {
|
|
1452
|
+
getPlatformThreadBinding: () => ({
|
|
1453
|
+
workspace_id: 'default',
|
|
1454
|
+
platform: 'lark',
|
|
1455
|
+
chat_id: 'chat-1',
|
|
1456
|
+
platform_user_id: 'user-1',
|
|
1457
|
+
thread_id: 'thread-1',
|
|
1458
|
+
last_platform_message_id: 'old-message',
|
|
1459
|
+
}),
|
|
1460
|
+
updatePlatformThreadMessageId: (_workspaceId, _chatId, _platformUserId, messageId) => {
|
|
1461
|
+
storedMessageIds.push(messageId);
|
|
1462
|
+
},
|
|
1463
|
+
},
|
|
1464
|
+
readConfig: async () => null,
|
|
1465
|
+
getWorkspaceRouter: () => ({}),
|
|
1466
|
+
eventBus: { emit: () => { }, on: () => () => { } },
|
|
1467
|
+
});
|
|
1468
|
+
const internals = gateway;
|
|
1469
|
+
internals.runtime.set('default', {
|
|
1470
|
+
workspaceId: 'default',
|
|
1471
|
+
enabled: true,
|
|
1472
|
+
status: 'running',
|
|
1473
|
+
connected: true,
|
|
1474
|
+
appId: 'app-1',
|
|
1475
|
+
client,
|
|
1476
|
+
});
|
|
1477
|
+
internals.threadRouting.set('session:thread-1', {
|
|
1478
|
+
workspaceId: 'default',
|
|
1479
|
+
platformUserId: 'user-1',
|
|
1480
|
+
chatId: 'chat-1',
|
|
1481
|
+
threadId: 'thread-1',
|
|
1482
|
+
});
|
|
1483
|
+
await gateway.onBridgeEvent({
|
|
1484
|
+
type: 'preview_start',
|
|
1485
|
+
sessionKey: 'session:thread-1',
|
|
1486
|
+
replyCtx: 'run-1',
|
|
1487
|
+
previewHandle: 'thought-preview-1',
|
|
1488
|
+
content: '💭 先理解',
|
|
1489
|
+
});
|
|
1490
|
+
await gateway.onBridgeEvent({
|
|
1491
|
+
type: 'update_message',
|
|
1492
|
+
sessionKey: 'session:thread-1',
|
|
1493
|
+
replyCtx: 'run-1',
|
|
1494
|
+
previewHandle: 'thought-preview-1',
|
|
1495
|
+
content: '💭 先理解用户需求',
|
|
1496
|
+
});
|
|
1497
|
+
await gateway.onBridgeEvent({
|
|
1498
|
+
type: 'reply',
|
|
1499
|
+
sessionKey: 'session:thread-1',
|
|
1500
|
+
replyCtx: 'run-1',
|
|
1501
|
+
messageId: 'run-1-tool-1',
|
|
1502
|
+
content: '🔧 Terminal: config - running',
|
|
1503
|
+
toolCall: {
|
|
1504
|
+
id: 'call-1',
|
|
1505
|
+
name: 'Terminal',
|
|
1506
|
+
input: { command: 'uname -a', description: 'Get system info' },
|
|
1507
|
+
},
|
|
1508
|
+
});
|
|
1509
|
+
await gateway.onBridgeEvent({
|
|
1510
|
+
type: 'reply',
|
|
1511
|
+
sessionKey: 'session:thread-1',
|
|
1512
|
+
replyCtx: 'run-1',
|
|
1513
|
+
messageId: 'run-1-tool-1',
|
|
1514
|
+
content: '🔧 Terminal: config - completed - Linux',
|
|
1515
|
+
toolCall: {
|
|
1516
|
+
id: 'call-1',
|
|
1517
|
+
name: 'Terminal',
|
|
1518
|
+
input: { command: 'uname -a', description: 'Get system info' },
|
|
1519
|
+
},
|
|
1520
|
+
});
|
|
1521
|
+
await gateway.onBridgeEvent({
|
|
1522
|
+
type: 'update_message',
|
|
1523
|
+
sessionKey: 'session:thread-1',
|
|
1524
|
+
replyCtx: 'run-1',
|
|
1525
|
+
previewHandle: 'thought-preview-1',
|
|
1526
|
+
content: '💭 看到了 Linux',
|
|
1527
|
+
});
|
|
1528
|
+
await gateway.onBridgeEvent({
|
|
1529
|
+
type: 'reply',
|
|
1530
|
+
sessionKey: 'session:thread-1',
|
|
1531
|
+
replyCtx: 'run-1',
|
|
1532
|
+
content: '最终回答',
|
|
1533
|
+
});
|
|
1534
|
+
strict_1.default.deepEqual(createdCards.map((card) => card.text), [
|
|
1535
|
+
'💭 先理解用户需求',
|
|
1536
|
+
'🔧 Terminal\n\n参数:`{"command":"uname -a","description":"Get system info"}`',
|
|
1537
|
+
'💭 看到了 Linux',
|
|
1538
|
+
'最终回答',
|
|
1428
1539
|
]);
|
|
1429
|
-
strict_1.default.deepEqual(
|
|
1540
|
+
strict_1.default.deepEqual(patchedCards, []);
|
|
1541
|
+
strict_1.default.deepEqual(storedMessageIds, ['lark-msg-4']);
|
|
1430
1542
|
});
|
|
1431
1543
|
(0, node_test_1.default)('lark bridge does not stream thought updates before completion', async () => {
|
|
1432
1544
|
const createdCards = [];
|
|
@@ -1715,6 +1827,7 @@ const server_routes_js_1 = require("../services/local-ai-core/src/runtime/server
|
|
|
1715
1827
|
previewText: '',
|
|
1716
1828
|
finalText: '',
|
|
1717
1829
|
thinkingSteps: [],
|
|
1830
|
+
thoughtSegmentSequence: 0,
|
|
1718
1831
|
toolCalls: [],
|
|
1719
1832
|
statusLines: [],
|
|
1720
1833
|
buttonRows: [[{ text: '始终允许', data: 'allow all' }]],
|
|
@@ -1200,18 +1200,12 @@ class LocalCoreLarkGateway extends node_events_1.EventEmitter {
|
|
|
1200
1200
|
getOrCreateTurnState(sessionKey, messageId) {
|
|
1201
1201
|
const existing = this.outboundTurns.get(sessionKey);
|
|
1202
1202
|
if (existing) {
|
|
1203
|
-
if (messageId && !existing.
|
|
1204
|
-
existing.
|
|
1205
|
-
existing.finalMessageId = messageId;
|
|
1203
|
+
if (messageId && !existing.sourceMessageId) {
|
|
1204
|
+
existing.sourceMessageId = messageId;
|
|
1206
1205
|
}
|
|
1207
1206
|
return existing;
|
|
1208
1207
|
}
|
|
1209
|
-
|
|
1210
|
-
if (messageId) {
|
|
1211
|
-
turn.messageId = messageId;
|
|
1212
|
-
turn.finalMessageId = messageId;
|
|
1213
|
-
}
|
|
1214
|
-
return turn;
|
|
1208
|
+
return this.createTurnState(sessionKey, messageId);
|
|
1215
1209
|
}
|
|
1216
1210
|
consumeBridgeEvent(turn, event) {
|
|
1217
1211
|
(0, runtime_state_js_1.consumeLarkBridgeEvent)(turn, event, {
|
|
@@ -21,6 +21,7 @@ function createLarkTurnState(sessionKey, sourceMessageId) {
|
|
|
21
21
|
thinkingSteps: [],
|
|
22
22
|
pendingThoughtKey: undefined,
|
|
23
23
|
pendingThoughtText: undefined,
|
|
24
|
+
thoughtSegmentSequence: 0,
|
|
24
25
|
toolCalls: [],
|
|
25
26
|
statusLines: [],
|
|
26
27
|
buttonRows: [],
|
|
@@ -67,6 +68,7 @@ function consumeLarkBridgeEvent(turn, event, options) {
|
|
|
67
68
|
turn.thinkingSteps = [];
|
|
68
69
|
turn.pendingThoughtKey = undefined;
|
|
69
70
|
turn.pendingThoughtText = undefined;
|
|
71
|
+
turn.thoughtSegmentSequence = 0;
|
|
70
72
|
turn.toolCalls = [];
|
|
71
73
|
turn.buttonRows = [];
|
|
72
74
|
turn.statusLines = [];
|
|
@@ -133,13 +135,7 @@ function renderLarkBridgeEventMessage(turn, event) {
|
|
|
133
135
|
}
|
|
134
136
|
return renderToolMessage(progressKey('tool', event), summarizeToolCallForLark(event, content));
|
|
135
137
|
}
|
|
136
|
-
return {
|
|
137
|
-
key: 'final',
|
|
138
|
-
text: content,
|
|
139
|
-
buttonRows: turn.buttonRows,
|
|
140
|
-
isFinal: true,
|
|
141
|
-
finalSource: 'stream',
|
|
142
|
-
};
|
|
138
|
+
return { key: 'noop', text: '', buttonRows: [], isFinal: false };
|
|
143
139
|
}
|
|
144
140
|
if (event.type === 'status') {
|
|
145
141
|
return renderProgressMessage(progressKey('status', event), content.startsWith('⏳ ') ? content : `⏳ ${content}`);
|
|
@@ -188,14 +184,16 @@ function takePendingLarkThoughtRender(turn) {
|
|
|
188
184
|
if (!text) {
|
|
189
185
|
return null;
|
|
190
186
|
}
|
|
191
|
-
|
|
187
|
+
turn.thoughtSegmentSequence += 1;
|
|
188
|
+
const baseKey = turn.pendingThoughtKey || 'thinking-preview';
|
|
189
|
+
const rendered = renderProgressMessage(`thinking:${baseKey}:${turn.thoughtSegmentSequence}`, text);
|
|
192
190
|
turn.pendingThoughtKey = undefined;
|
|
193
191
|
turn.pendingThoughtText = undefined;
|
|
194
192
|
return rendered;
|
|
195
193
|
}
|
|
196
194
|
function getLarkRenderedMessageId(turn, rendered) {
|
|
197
195
|
if (rendered.isFinal) {
|
|
198
|
-
return turn.finalMessageId || turn.
|
|
196
|
+
return turn.finalMessageId || turn.replyMessageId;
|
|
199
197
|
}
|
|
200
198
|
return turn.progressMessageIds[rendered.key];
|
|
201
199
|
}
|
package/package.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{z as t}from"./index-dOdOWAa2.js";const e=()=>t.get("/projects"),r=o=>t.get(`/projects/${o}`);export{r as g,e as l};
|