@kafca/agentdock 0.1.37 → 0.1.39
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 +8 -0
- package/dist/renderer/assets/{Badge-CjzZp9Tf.js → Badge-B8Arb9Yy.js} +1 -1
- package/dist/renderer/assets/{Chat-D4_5K_Ww.js → Chat-BpHN2UcX.js} +1 -1
- package/dist/renderer/assets/{ChatMarkdown-DkI29dOw.js → ChatMarkdown-C_zHbGhg.js} +1 -1
- package/dist/renderer/assets/{Config-CnrlmSEQ.js → Config-357M6MbD.js} +1 -1
- package/dist/renderer/assets/{CronList-DVvInMvr.js → CronList-BHgDIhFo.js} +1 -1
- package/dist/renderer/assets/{Dashboard-CY4YAmVj.js → Dashboard-CZQj79ep.js} +2 -2
- package/dist/renderer/assets/{EmptyState-CmR947i4.js → EmptyState-DpSPN3kz.js} +1 -1
- package/dist/renderer/assets/{KnowledgeDetail-BvNG0inb.js → KnowledgeDetail-Cbv2Oje7.js} +1 -1
- package/dist/renderer/assets/{KnowledgeHome-BB0Z8VrS.js → KnowledgeHome-CEbNw_Za.js} +1 -1
- package/dist/renderer/assets/{Logs-IORTjnGM.js → Logs-IXayiVGS.js} +1 -1
- package/dist/renderer/assets/{Modal-D9NZ6cvF.js → Modal-BTKWx2e5.js} +1 -1
- package/dist/renderer/assets/{Page-DlvElfTz.js → Page-DCDVvqIU.js} +1 -1
- package/dist/renderer/assets/{ProjectDetail-Y1ZFL8W9.js → ProjectDetail-C6as_oba.js} +1 -1
- package/dist/renderer/assets/{ProjectList-DAI-4HU7.js → ProjectList-DJfBaPyw.js} +1 -1
- package/dist/renderer/assets/{Select-LMEt9yJy.js → Select-BYijPrOF.js} +1 -1
- package/dist/renderer/assets/{SessionChat-BWRAS_H-.js → SessionChat-KapIGn1O.js} +1 -1
- package/dist/renderer/assets/{SessionList-DQsxmC1n.js → SessionList-C0ATtS_m.js} +1 -1
- package/dist/renderer/assets/{ThreadChat-D9j78cdm.js → ThreadChat-CKWcyHia.js} +1 -1
- package/dist/renderer/assets/{Workspace-C-RTj4uI.js → Workspace-MYHdNNV2.js} +1 -1
- package/dist/renderer/assets/{arrow-left-C_ZIHUlD.js → arrow-left-Dl2cYCYQ.js} +1 -1
- package/dist/renderer/assets/{book-open-BuI3webp.js → book-open-CJCjYKCj.js} +1 -1
- package/dist/renderer/assets/{check-FA1rU94Q.js → check-Cknz-_NI.js} +1 -1
- package/dist/renderer/assets/{chevron-down-DvQ7Hq2s.js → chevron-down-v4poAoll.js} +1 -1
- package/dist/renderer/assets/{circle-DZYvZ-Iq.js → circle-BnxuF8S1.js} +1 -1
- package/dist/renderer/assets/{desktop-BSoKBjFu.js → desktop-B9xqa1yi.js} +1 -1
- package/dist/renderer/assets/{funnel-BoW8A8Fi.js → funnel-Cl1EldnW.js} +1 -1
- package/dist/renderer/assets/{heart-DaIdiPUs.js → heart-274KWkSA.js} +1 -1
- package/dist/renderer/assets/{index-Cc83IKng.js → index-CAi_EMRl.js} +2 -2
- package/dist/renderer/assets/{index-pdvxKnBr.js → index-GaRPrxQn.js} +1 -1
- package/dist/renderer/assets/{pencil-CMs10l_8.js → pencil-BfYhgp9_.js} +1 -1
- package/dist/renderer/assets/{play-DtT_FrBZ.js → play-CLir9KyW.js} +1 -1
- package/dist/renderer/assets/{plug-vKGMXapD.js → plug-CTKL_TK4.js} +1 -1
- package/dist/renderer/assets/{plus-DZV73wzr.js → plus-9pP7UU-H.js} +1 -1
- package/dist/renderer/assets/projects-DRdvUEj2.js +1 -0
- package/dist/renderer/assets/{save-Bus9w20l.js → save-DZOLXcQU.js} +1 -1
- package/dist/renderer/assets/{search-ChEC20LW.js → search-DjFl-8XR.js} +1 -1
- package/dist/renderer/assets/{server-B9HgN6CF.js → server-UI3KEpUw.js} +1 -1
- package/dist/renderer/assets/{session-utils-Bn9-xCic.js → session-utils-b9gwOizd.js} +1 -1
- package/dist/renderer/assets/{sessions-RUHmhxT5.js → sessions-DzSZ5A3m.js} +1 -1
- package/dist/renderer/assets/{shield-check-B97md1a5.js → shield-check-6fT5xdT3.js} +1 -1
- package/dist/renderer/assets/{trash-2-31WOGl8I.js → trash-2-DNBg0OLf.js} +1 -1
- package/dist/renderer/assets/{user-CLiiHYE_.js → user-B0MGTipJ.js} +1 -1
- package/dist/renderer/assets/{wifi-off-BKh21npc.js → wifi-off-DBxNxGco.js} +1 -1
- package/dist/renderer/index.html +1 -1
- package/dist-electron/services/local-ai-core/src/channel/lark/local-core-lark-gateway.js +24 -3
- package/dist-electron/services/local-ai-core/src/channel/lark/post.js +72 -0
- package/dist-electron/services/local-ai-core/src/channel/lark/runtime-state.js +9 -6
- package/dist-electron/services/local-ai-core/src/scheduler/scheduled-bridge-session.js +29 -1
- package/dist-electron/tests/electron/workspace-task-store.test.js +10 -0
- package/dist-electron/tests/integration/local-core-refactor.test.js +124 -45
- package/package.json +1 -1
- package/dist/renderer/assets/projects-BUda9SpJ.js +0 -1
|
@@ -24,6 +24,44 @@ const local_core_acp_progress_js_1 = require("../../services/local-ai-core/src/a
|
|
|
24
24
|
const local_core_acp_permission_lifecycle_js_1 = require("../../services/local-ai-core/src/acp/local-core-acp-permission-lifecycle.js");
|
|
25
25
|
const workspace_acp_permissions_js_1 = require("../../services/local-ai-core/src/acp/workspace-acp-permissions.js");
|
|
26
26
|
const server_routes_js_1 = require("../../services/local-ai-core/src/runtime/server-routes.js");
|
|
27
|
+
function extractLarkCreatedMessage(request) {
|
|
28
|
+
const msgType = String(request.data?.msg_type || '');
|
|
29
|
+
const content = JSON.parse(String(request.data?.content || '{}'));
|
|
30
|
+
return {
|
|
31
|
+
msgType,
|
|
32
|
+
content,
|
|
33
|
+
text: extractLarkCreatedMessageText(msgType, content),
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
function extractLarkCreatedMessageText(msgType, content) {
|
|
37
|
+
if (msgType === 'interactive') {
|
|
38
|
+
return String(content.elements?.[0]?.content || '');
|
|
39
|
+
}
|
|
40
|
+
if (msgType === 'post') {
|
|
41
|
+
return (content.zh_cn?.content || [])
|
|
42
|
+
.map((line) => (Array.isArray(line) ? line : [])
|
|
43
|
+
.map((item) => {
|
|
44
|
+
if (item?.tag === 'code_block') {
|
|
45
|
+
const language = String(item.language || '').trim();
|
|
46
|
+
return `\`\`\`${language}\n${String(item.text || '')}\n\`\`\``;
|
|
47
|
+
}
|
|
48
|
+
return String(item?.text || item?.href || '');
|
|
49
|
+
})
|
|
50
|
+
.join(''))
|
|
51
|
+
.join('\n');
|
|
52
|
+
}
|
|
53
|
+
return String(content.text || '');
|
|
54
|
+
}
|
|
55
|
+
function findLarkPostCodeBlock(content) {
|
|
56
|
+
for (const line of content.zh_cn?.content || []) {
|
|
57
|
+
for (const item of Array.isArray(line) ? line : []) {
|
|
58
|
+
if (item?.tag === 'code_block') {
|
|
59
|
+
return item;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
return null;
|
|
64
|
+
}
|
|
27
65
|
(0, node_test_1.default)('local core route parser separates runtime refresh and runtime detail routes', () => {
|
|
28
66
|
strict_1.default.deepEqual((0, server_routes_js_1.parseLocalAiCoreRoute)('GET', '/api/local/v1/logs'), { name: 'logs.list' });
|
|
29
67
|
strict_1.default.deepEqual((0, server_routes_js_1.parseLocalAiCoreRoute)('GET', '/api/local/v1/runtimes'), { name: 'runtimes.list' });
|
|
@@ -1829,18 +1867,20 @@ const server_routes_js_1 = require("../../services/local-ai-core/src/runtime/ser
|
|
|
1829
1867
|
strict_1.default.deepEqual(logs, []);
|
|
1830
1868
|
});
|
|
1831
1869
|
(0, node_test_1.default)('lark bridge sends completed thought once before final answer', async () => {
|
|
1832
|
-
const
|
|
1870
|
+
const createdMessages = [];
|
|
1833
1871
|
const patchedCards = [];
|
|
1834
1872
|
const storedMessageIds = [];
|
|
1835
1873
|
const client = {
|
|
1836
1874
|
im: {
|
|
1837
1875
|
message: {
|
|
1838
1876
|
create: async (request) => {
|
|
1839
|
-
const messageId = `lark-msg-${
|
|
1840
|
-
const
|
|
1841
|
-
|
|
1877
|
+
const messageId = `lark-msg-${createdMessages.length + 1}`;
|
|
1878
|
+
const message = extractLarkCreatedMessage(request);
|
|
1879
|
+
createdMessages.push({
|
|
1842
1880
|
messageId,
|
|
1843
|
-
|
|
1881
|
+
msgType: message.msgType,
|
|
1882
|
+
text: message.text,
|
|
1883
|
+
content: message.content,
|
|
1844
1884
|
});
|
|
1845
1885
|
return { data: { message_id: messageId } };
|
|
1846
1886
|
},
|
|
@@ -1909,25 +1949,27 @@ const server_routes_js_1 = require("../../services/local-ai-core/src/runtime/ser
|
|
|
1909
1949
|
replyCtx: 'run-1',
|
|
1910
1950
|
content: '最终回答',
|
|
1911
1951
|
});
|
|
1912
|
-
strict_1.default.
|
|
1913
|
-
strict_1.default.equal(
|
|
1914
|
-
strict_1.default.equal(
|
|
1952
|
+
strict_1.default.deepEqual(createdMessages.map((message) => message.msgType), ['interactive', 'post']);
|
|
1953
|
+
strict_1.default.equal(createdMessages[0]?.text, '先理解问题,再检查代码');
|
|
1954
|
+
strict_1.default.equal(createdMessages[1]?.text, '最终回答');
|
|
1915
1955
|
strict_1.default.equal(patchedCards.length, 0);
|
|
1916
1956
|
strict_1.default.deepEqual(storedMessageIds, ['lark-msg-2']);
|
|
1917
1957
|
});
|
|
1918
|
-
(0, node_test_1.default)('lark bridge sends final reply as its own
|
|
1919
|
-
const
|
|
1958
|
+
(0, node_test_1.default)('lark bridge sends final reply as its own post message instead of streaming draft', async () => {
|
|
1959
|
+
const createdMessages = [];
|
|
1920
1960
|
const patchedCards = [];
|
|
1921
1961
|
const storedMessageIds = [];
|
|
1922
1962
|
const client = {
|
|
1923
1963
|
im: {
|
|
1924
1964
|
message: {
|
|
1925
1965
|
create: async (request) => {
|
|
1926
|
-
const messageId = `lark-msg-${
|
|
1927
|
-
const
|
|
1928
|
-
|
|
1966
|
+
const messageId = `lark-msg-${createdMessages.length + 1}`;
|
|
1967
|
+
const message = extractLarkCreatedMessage(request);
|
|
1968
|
+
createdMessages.push({
|
|
1929
1969
|
messageId,
|
|
1930
|
-
|
|
1970
|
+
msgType: message.msgType,
|
|
1971
|
+
text: message.text,
|
|
1972
|
+
content: message.content,
|
|
1931
1973
|
});
|
|
1932
1974
|
return { data: { message_id: messageId } };
|
|
1933
1975
|
},
|
|
@@ -1986,22 +2028,25 @@ const server_routes_js_1 = require("../../services/local-ai-core/src/runtime/ser
|
|
|
1986
2028
|
replyCtx: 'run-1',
|
|
1987
2029
|
content: '真正最终回答',
|
|
1988
2030
|
});
|
|
1989
|
-
strict_1.default.deepEqual(
|
|
2031
|
+
strict_1.default.deepEqual(createdMessages.map((message) => message.msgType), ['post']);
|
|
2032
|
+
strict_1.default.deepEqual(createdMessages.map((message) => message.text), ['真正最终回答']);
|
|
1990
2033
|
strict_1.default.deepEqual(patchedCards, []);
|
|
1991
2034
|
strict_1.default.deepEqual(storedMessageIds, ['lark-msg-1']);
|
|
1992
2035
|
});
|
|
1993
|
-
(0, node_test_1.default)('lark bridge creates final replies without patching prior final
|
|
1994
|
-
const
|
|
2036
|
+
(0, node_test_1.default)('lark bridge creates final replies without patching prior final messages', async () => {
|
|
2037
|
+
const createdMessages = [];
|
|
1995
2038
|
const patchedCards = [];
|
|
1996
2039
|
const client = {
|
|
1997
2040
|
im: {
|
|
1998
2041
|
message: {
|
|
1999
2042
|
create: async (request) => {
|
|
2000
|
-
const messageId = `lark-msg-${
|
|
2001
|
-
const
|
|
2002
|
-
|
|
2043
|
+
const messageId = `lark-msg-${createdMessages.length + 1}`;
|
|
2044
|
+
const message = extractLarkCreatedMessage(request);
|
|
2045
|
+
createdMessages.push({
|
|
2003
2046
|
messageId,
|
|
2004
|
-
|
|
2047
|
+
msgType: message.msgType,
|
|
2048
|
+
text: message.text,
|
|
2049
|
+
content: message.content,
|
|
2005
2050
|
});
|
|
2006
2051
|
return { data: { message_id: messageId } };
|
|
2007
2052
|
},
|
|
@@ -2058,22 +2103,25 @@ const server_routes_js_1 = require("../../services/local-ai-core/src/runtime/ser
|
|
|
2058
2103
|
replyCtx: 'run-2',
|
|
2059
2104
|
content: 'second final',
|
|
2060
2105
|
});
|
|
2061
|
-
strict_1.default.deepEqual(
|
|
2106
|
+
strict_1.default.deepEqual(createdMessages.map((message) => message.msgType), ['post', 'post']);
|
|
2107
|
+
strict_1.default.deepEqual(createdMessages.map((message) => message.text), ['first final', 'second final']);
|
|
2062
2108
|
strict_1.default.deepEqual(patchedCards, []);
|
|
2063
2109
|
});
|
|
2064
|
-
(0, node_test_1.default)('lark bridge sends tool and final as separate
|
|
2065
|
-
const
|
|
2110
|
+
(0, node_test_1.default)('lark bridge sends tool and final as separate post messages without patching tool progress', async () => {
|
|
2111
|
+
const createdMessages = [];
|
|
2066
2112
|
const patchedCards = [];
|
|
2067
2113
|
const storedMessageIds = [];
|
|
2068
2114
|
const client = {
|
|
2069
2115
|
im: {
|
|
2070
2116
|
message: {
|
|
2071
2117
|
create: async (request) => {
|
|
2072
|
-
const messageId = `lark-msg-${
|
|
2073
|
-
const
|
|
2074
|
-
|
|
2118
|
+
const messageId = `lark-msg-${createdMessages.length + 1}`;
|
|
2119
|
+
const message = extractLarkCreatedMessage(request);
|
|
2120
|
+
createdMessages.push({
|
|
2075
2121
|
messageId,
|
|
2076
|
-
|
|
2122
|
+
msgType: message.msgType,
|
|
2123
|
+
text: message.text,
|
|
2124
|
+
content: message.content,
|
|
2077
2125
|
});
|
|
2078
2126
|
return { data: { message_id: messageId } };
|
|
2079
2127
|
},
|
|
@@ -2146,7 +2194,8 @@ const server_routes_js_1 = require("../../services/local-ai-core/src/runtime/ser
|
|
|
2146
2194
|
replyCtx: 'run-1',
|
|
2147
2195
|
content: '好的,文件存在,现在发送给你:已发送!`CLAUDE.md` 文件已经发出去了,请查收',
|
|
2148
2196
|
});
|
|
2149
|
-
strict_1.default.deepEqual(
|
|
2197
|
+
strict_1.default.deepEqual(createdMessages.map((message) => message.msgType), ['post', 'post']);
|
|
2198
|
+
strict_1.default.deepEqual(createdMessages.map((message) => message.text), [
|
|
2150
2199
|
'🔧 bash',
|
|
2151
2200
|
'好的,文件存在,现在发送给你:已发送!`CLAUDE.md` 文件已经发出去了,请查收',
|
|
2152
2201
|
]);
|
|
@@ -2154,18 +2203,20 @@ const server_routes_js_1 = require("../../services/local-ai-core/src/runtime/ser
|
|
|
2154
2203
|
strict_1.default.deepEqual(storedMessageIds, ['lark-msg-2']);
|
|
2155
2204
|
});
|
|
2156
2205
|
(0, node_test_1.default)('lark bridge flushes interleaved thought segments before tools and final', async () => {
|
|
2157
|
-
const
|
|
2206
|
+
const createdMessages = [];
|
|
2158
2207
|
const patchedCards = [];
|
|
2159
2208
|
const storedMessageIds = [];
|
|
2160
2209
|
const client = {
|
|
2161
2210
|
im: {
|
|
2162
2211
|
message: {
|
|
2163
2212
|
create: async (request) => {
|
|
2164
|
-
const messageId = `lark-msg-${
|
|
2165
|
-
const
|
|
2166
|
-
|
|
2213
|
+
const messageId = `lark-msg-${createdMessages.length + 1}`;
|
|
2214
|
+
const message = extractLarkCreatedMessage(request);
|
|
2215
|
+
createdMessages.push({
|
|
2167
2216
|
messageId,
|
|
2168
|
-
|
|
2217
|
+
msgType: message.msgType,
|
|
2218
|
+
text: message.text,
|
|
2219
|
+
content: message.content,
|
|
2169
2220
|
});
|
|
2170
2221
|
return { data: { message_id: messageId } };
|
|
2171
2222
|
},
|
|
@@ -2272,12 +2323,18 @@ const server_routes_js_1 = require("../../services/local-ai-core/src/runtime/ser
|
|
|
2272
2323
|
replyCtx: 'run-1',
|
|
2273
2324
|
content: '最终回答',
|
|
2274
2325
|
});
|
|
2275
|
-
strict_1.default.deepEqual(
|
|
2326
|
+
strict_1.default.deepEqual(createdMessages.map((message) => message.msgType), ['interactive', 'post', 'interactive', 'post']);
|
|
2327
|
+
strict_1.default.deepEqual(createdMessages.map((message) => message.text), [
|
|
2276
2328
|
'先理解用户需求',
|
|
2277
|
-
'🔧 Terminal\n\n
|
|
2329
|
+
'🔧 Terminal\n\n```json\n{\n "command": "uname -a",\n "description": "Get system info"\n}\n```',
|
|
2278
2330
|
'看到了 Linux',
|
|
2279
2331
|
'最终回答',
|
|
2280
2332
|
]);
|
|
2333
|
+
strict_1.default.deepEqual(findLarkPostCodeBlock(createdMessages[1]?.content), {
|
|
2334
|
+
tag: 'code_block',
|
|
2335
|
+
language: 'json',
|
|
2336
|
+
text: '{\n "command": "uname -a",\n "description": "Get system info"\n}',
|
|
2337
|
+
});
|
|
2281
2338
|
strict_1.default.deepEqual(patchedCards, []);
|
|
2282
2339
|
strict_1.default.deepEqual(storedMessageIds, ['lark-msg-4']);
|
|
2283
2340
|
});
|
|
@@ -2488,7 +2545,7 @@ const server_routes_js_1 = require("../../services/local-ai-core/src/runtime/ser
|
|
|
2488
2545
|
strict_1.default.equal(patchedCards[0]?.card?.elements?.some((element) => element.tag === 'action'), false);
|
|
2489
2546
|
});
|
|
2490
2547
|
(0, node_test_1.default)('lark allow all card action preserves the final reply after tool execution', async () => {
|
|
2491
|
-
const
|
|
2548
|
+
const createdMessages = [];
|
|
2492
2549
|
const patchedCards = [];
|
|
2493
2550
|
let nextMessageId = 1;
|
|
2494
2551
|
let gateway;
|
|
@@ -2497,9 +2554,12 @@ const server_routes_js_1 = require("../../services/local-ai-core/src/runtime/ser
|
|
|
2497
2554
|
message: {
|
|
2498
2555
|
create: async (request) => {
|
|
2499
2556
|
const messageId = `card-${nextMessageId++}`;
|
|
2500
|
-
|
|
2557
|
+
const message = extractLarkCreatedMessage(request);
|
|
2558
|
+
createdMessages.push({
|
|
2501
2559
|
messageId,
|
|
2502
|
-
|
|
2560
|
+
msgType: message.msgType,
|
|
2561
|
+
text: message.text,
|
|
2562
|
+
content: message.content,
|
|
2503
2563
|
});
|
|
2504
2564
|
return { data: { message_id: messageId } };
|
|
2505
2565
|
},
|
|
@@ -2595,17 +2655,18 @@ const server_routes_js_1 = require("../../services/local-ai-core/src/runtime/ser
|
|
|
2595
2655
|
});
|
|
2596
2656
|
strict_1.default.equal(patchedCards[0]?.messageId, 'permission-msg-1');
|
|
2597
2657
|
strict_1.default.match(patchedCards[0]?.card?.elements?.[0]?.content || '', /工具确认已处理/);
|
|
2598
|
-
strict_1.default.equal(
|
|
2599
|
-
strict_1.default.
|
|
2658
|
+
strict_1.default.equal(createdMessages.length, 1);
|
|
2659
|
+
strict_1.default.equal(createdMessages[0]?.msgType, 'post');
|
|
2660
|
+
strict_1.default.match(createdMessages[0]?.text || '', /桌面文件列表/);
|
|
2600
2661
|
});
|
|
2601
2662
|
(0, node_test_1.default)('lark channel sends tool name and parameters once without streaming output', async () => {
|
|
2602
|
-
const
|
|
2663
|
+
const createdMessages = [];
|
|
2603
2664
|
const patchedCards = [];
|
|
2604
2665
|
const client = {
|
|
2605
2666
|
im: {
|
|
2606
2667
|
message: {
|
|
2607
2668
|
create: async (request) => {
|
|
2608
|
-
|
|
2669
|
+
createdMessages.push(extractLarkCreatedMessage(request));
|
|
2609
2670
|
return { data: { message_id: 'tool-msg-1' } };
|
|
2610
2671
|
},
|
|
2611
2672
|
patch: async (request) => {
|
|
@@ -2674,9 +2735,16 @@ const server_routes_js_1 = require("../../services/local-ai-core/src/runtime/ser
|
|
|
2674
2735
|
output: 'secret terminal output',
|
|
2675
2736
|
},
|
|
2676
2737
|
});
|
|
2677
|
-
const text =
|
|
2738
|
+
const text = createdMessages[0]?.text || '';
|
|
2739
|
+
strict_1.default.equal(createdMessages[0]?.msgType, 'post');
|
|
2678
2740
|
strict_1.default.match(text, /🔧 Terminal/);
|
|
2679
|
-
strict_1.default.match(text,
|
|
2741
|
+
strict_1.default.match(text, /```json\n{\n "command": "ls ~\/Desktop"\n}\n```/);
|
|
2742
|
+
strict_1.default.doesNotMatch(text, /参数/);
|
|
2743
|
+
strict_1.default.deepEqual(findLarkPostCodeBlock(createdMessages[0]?.content), {
|
|
2744
|
+
tag: 'code_block',
|
|
2745
|
+
language: 'json',
|
|
2746
|
+
text: '{\n "command": "ls ~/Desktop"\n}',
|
|
2747
|
+
});
|
|
2680
2748
|
strict_1.default.equal(patchedCards.length, 0);
|
|
2681
2749
|
strict_1.default.doesNotMatch(text, /completed/);
|
|
2682
2750
|
strict_1.default.doesNotMatch(text, /secret terminal output/);
|
|
@@ -3362,6 +3430,7 @@ const server_routes_js_1 = require("../../services/local-ai-core/src/runtime/ser
|
|
|
3362
3430
|
},
|
|
3363
3431
|
});
|
|
3364
3432
|
strict_1.default.equal(completed.text, '🔧 bash: Tool update');
|
|
3433
|
+
strict_1.default.equal(completed.delivery, 'message');
|
|
3365
3434
|
});
|
|
3366
3435
|
(0, node_test_1.default)('ACP skips empty generic running tool updates', () => {
|
|
3367
3436
|
const appended = [];
|
|
@@ -3726,6 +3795,7 @@ const server_routes_js_1 = require("../../services/local-ai-core/src/runtime/ser
|
|
|
3726
3795
|
updatedAt: '2026-04-22T06:00:00.000Z',
|
|
3727
3796
|
};
|
|
3728
3797
|
let registeredBridge;
|
|
3798
|
+
const bridgeEvents = [];
|
|
3729
3799
|
let unregisteredBridge = false;
|
|
3730
3800
|
const policy = (0, lark_execution_policies_js_1.createLarkExecutionPolicy)(job, {
|
|
3731
3801
|
store: {},
|
|
@@ -3735,6 +3805,9 @@ const server_routes_js_1 = require("../../services/local-ai-core/src/runtime/ser
|
|
|
3735
3805
|
createThread: async () => ({ id: 'thread-new' }),
|
|
3736
3806
|
},
|
|
3737
3807
|
getChannelRuntime: () => ({
|
|
3808
|
+
onBridgeEvent: async (event) => {
|
|
3809
|
+
bridgeEvents.push(event);
|
|
3810
|
+
},
|
|
3738
3811
|
registerScheduledThreadBridge: (input) => {
|
|
3739
3812
|
registeredBridge = input;
|
|
3740
3813
|
return () => {
|
|
@@ -3753,6 +3826,12 @@ const server_routes_js_1 = require("../../services/local-ai-core/src/runtime/ser
|
|
|
3753
3826
|
threadId: 'thread-scheduled',
|
|
3754
3827
|
sessionKey: 'session:thread-scheduled',
|
|
3755
3828
|
});
|
|
3829
|
+
strict_1.default.deepEqual(bridgeEvents[0], {
|
|
3830
|
+
type: 'status',
|
|
3831
|
+
sessionKey: 'session:thread-scheduled',
|
|
3832
|
+
bridgeKind: 'status',
|
|
3833
|
+
content: '⏰ two-minute ping',
|
|
3834
|
+
});
|
|
3756
3835
|
policy.afterExecute?.(target, job);
|
|
3757
3836
|
strict_1.default.equal(unregisteredBridge, true);
|
|
3758
3837
|
});
|
package/package.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{z as t}from"./index-Cc83IKng.js";const e=()=>t.get("/projects"),r=o=>t.get(`/projects/${o}`);export{r as g,e as l};
|