@kafca/agentdock 0.1.35 → 0.1.37
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 +7 -0
- package/dist/renderer/assets/{Badge-BM4WCcua.js → Badge-CjzZp9Tf.js} +1 -1
- package/dist/renderer/assets/{Chat-DoyBHOsx.js → Chat-D4_5K_Ww.js} +1 -1
- package/dist/renderer/assets/{ChatMarkdown-BWj04kgW.js → ChatMarkdown-DkI29dOw.js} +1 -1
- package/dist/renderer/assets/{Config-A95OuazQ.js → Config-CnrlmSEQ.js} +1 -1
- package/dist/renderer/assets/{CronList-DsPU4zGT.js → CronList-DVvInMvr.js} +1 -1
- package/dist/renderer/assets/{Dashboard-D8Vpj97x.js → Dashboard-CY4YAmVj.js} +2 -2
- package/dist/renderer/assets/{EmptyState-x1uVoSxZ.js → EmptyState-CmR947i4.js} +1 -1
- package/dist/renderer/assets/{KnowledgeDetail-C9TbcyNJ.js → KnowledgeDetail-BvNG0inb.js} +1 -1
- package/dist/renderer/assets/{KnowledgeHome-Cg9Fb41Q.js → KnowledgeHome-BB0Z8VrS.js} +1 -1
- package/dist/renderer/assets/{Logs-oWaKA60u.js → Logs-IORTjnGM.js} +1 -1
- package/dist/renderer/assets/{Modal-24hTXXHK.js → Modal-D9NZ6cvF.js} +1 -1
- package/dist/renderer/assets/{Page-YRtQonKZ.js → Page-DlvElfTz.js} +1 -1
- package/dist/renderer/assets/{ProjectDetail-DScsxJO-.js → ProjectDetail-Y1ZFL8W9.js} +1 -1
- package/dist/renderer/assets/{ProjectList-8L5GD7PN.js → ProjectList-DAI-4HU7.js} +1 -1
- package/dist/renderer/assets/{Select-BI8Uw_DF.js → Select-LMEt9yJy.js} +1 -1
- package/dist/renderer/assets/{SessionChat-BIoCWdDD.js → SessionChat-BWRAS_H-.js} +1 -1
- package/dist/renderer/assets/{SessionList-BsEJeDxI.js → SessionList-DQsxmC1n.js} +1 -1
- package/dist/renderer/assets/{ThreadChat-DJi0UBta.js → ThreadChat-D9j78cdm.js} +1 -1
- package/dist/renderer/assets/{Workspace-tlJxrgC5.js → Workspace-C-RTj4uI.js} +1 -1
- package/dist/renderer/assets/{arrow-left-pzaBhi9y.js → arrow-left-C_ZIHUlD.js} +1 -1
- package/dist/renderer/assets/{book-open-CNhlVyqh.js → book-open-BuI3webp.js} +1 -1
- package/dist/renderer/assets/{check-Cg2LLCdl.js → check-FA1rU94Q.js} +1 -1
- package/dist/renderer/assets/{chevron-down-Dgqg07wf.js → chevron-down-DvQ7Hq2s.js} +1 -1
- package/dist/renderer/assets/{circle-BBd_jIS2.js → circle-DZYvZ-Iq.js} +1 -1
- package/dist/renderer/assets/{desktop-C0S-Yv8G.js → desktop-BSoKBjFu.js} +1 -1
- package/dist/renderer/assets/{funnel-DwSh-SrX.js → funnel-BoW8A8Fi.js} +1 -1
- package/dist/renderer/assets/{heart-CWVc-KhZ.js → heart-DaIdiPUs.js} +1 -1
- package/dist/renderer/assets/{index-DZbeAYVk.js → index-Cc83IKng.js} +2 -2
- package/dist/renderer/assets/{index-HYmDNQ9k.js → index-pdvxKnBr.js} +1 -1
- package/dist/renderer/assets/{pencil-tI4tCLz0.js → pencil-CMs10l_8.js} +1 -1
- package/dist/renderer/assets/{play-Coi2HA1w.js → play-DtT_FrBZ.js} +1 -1
- package/dist/renderer/assets/{plug-D4TCyW9b.js → plug-vKGMXapD.js} +1 -1
- package/dist/renderer/assets/{plus-p62AgpoB.js → plus-DZV73wzr.js} +1 -1
- package/dist/renderer/assets/projects-BUda9SpJ.js +1 -0
- package/dist/renderer/assets/{save-fpMhkVV0.js → save-Bus9w20l.js} +1 -1
- package/dist/renderer/assets/{search-BHKIStdA.js → search-ChEC20LW.js} +1 -1
- package/dist/renderer/assets/{server-0oTWed8U.js → server-B9HgN6CF.js} +1 -1
- package/dist/renderer/assets/{session-utils-D0Qv0I0-.js → session-utils-Bn9-xCic.js} +1 -1
- package/dist/renderer/assets/{sessions-C8ApKQgC.js → sessions-RUHmhxT5.js} +1 -1
- package/dist/renderer/assets/{shield-check-BAJI9jzC.js → shield-check-B97md1a5.js} +1 -1
- package/dist/renderer/assets/{trash-2-B-Ygm-x6.js → trash-2-31WOGl8I.js} +1 -1
- package/dist/renderer/assets/{user-Cv8rzw8l.js → user-CLiiHYE_.js} +1 -1
- package/dist/renderer/assets/{wifi-off-BImS3nkm.js → wifi-off-BKh21npc.js} +1 -1
- package/dist/renderer/index.html +1 -1
- package/dist-electron/services/local-ai-core/src/acp/local-core-acp-store.js +22 -7
- package/dist-electron/services/local-ai-core/src/acp/local-core-acp-turn-coordinator.js +2 -1
- package/dist-electron/services/local-ai-core/src/channel/lark/local-core-lark-gateway.js +37 -7
- package/dist-electron/services/local-ai-core/src/channel/weixin/local-core-weixin-gateway.js +31 -1
- package/dist-electron/services/local-ai-core/src/scheduler/channel-execution-policy.js +79 -0
- package/dist-electron/services/local-ai-core/src/scheduler/lark-execution-policies.js +7 -61
- package/dist-electron/services/local-ai-core/src/scheduler/lark-schedule-adapter.js +4 -13
- package/dist-electron/services/local-ai-core/src/scheduler/local-schedule-adapter.js +23 -30
- package/dist-electron/services/local-ai-core/src/scheduler/scheduled-bridge-session.js +27 -0
- package/dist-electron/services/local-ai-core/src/scheduler/scheduled-conversation-executor.js +3 -2
- package/dist-electron/services/local-ai-core/src/scheduler/scheduler-run-lifecycle.js +13 -1
- package/dist-electron/services/local-ai-core/src/scheduler/scheduler-service.js +1 -1
- package/dist-electron/services/local-ai-core/src/scheduler/weixin-execution-policies.js +7 -61
- package/dist-electron/services/local-ai-core/src/scheduler/weixin-schedule-adapter.js +4 -13
- package/dist-electron/tests/electron/workspace-task-store.test.js +244 -24
- package/dist-electron/tests/integration/local-core-refactor.test.js +60 -7
- package/package.json +1 -1
- package/dist/renderer/assets/projects-CTDuVxeQ.js +0 -1
|
@@ -3533,7 +3533,7 @@ const server_routes_js_1 = require("../../services/local-ai-core/src/runtime/ser
|
|
|
3533
3533
|
store: {
|
|
3534
3534
|
getRun: () => ({ status: 'completed' }),
|
|
3535
3535
|
},
|
|
3536
|
-
|
|
3536
|
+
getWorkspaceRouter: () => ({
|
|
3537
3537
|
sendThreadMessage: async (threadId, prompt, options) => {
|
|
3538
3538
|
runtimeEnv = options?.runtimeEnv;
|
|
3539
3539
|
calls.push(`send:${threadId}:${prompt}:${options?.permissionMode || ''}`);
|
|
@@ -3545,7 +3545,7 @@ const server_routes_js_1 = require("../../services/local-ai-core/src/runtime/ser
|
|
|
3545
3545
|
{ role: 'assistant', kind: 'final', content: 'done' },
|
|
3546
3546
|
],
|
|
3547
3547
|
}),
|
|
3548
|
-
},
|
|
3548
|
+
}),
|
|
3549
3549
|
});
|
|
3550
3550
|
const result = await executor.execute(job, 'ping', {
|
|
3551
3551
|
resolveTarget: async () => ({
|
|
@@ -3628,6 +3628,8 @@ const server_routes_js_1 = require("../../services/local-ai-core/src/runtime/ser
|
|
|
3628
3628
|
strict_1.default.equal(result.runId, 'run-local-1');
|
|
3629
3629
|
strict_1.default.equal(result.replyText, 'local done');
|
|
3630
3630
|
strict_1.default.equal(result.platformMessageId, undefined);
|
|
3631
|
+
strict_1.default.equal(result.deliveryMode, 'thread-only');
|
|
3632
|
+
strict_1.default.equal(result.deliveryStatus, 'succeeded');
|
|
3631
3633
|
});
|
|
3632
3634
|
(0, node_test_1.default)('scheduler run lifecycle updates run and job state through explicit transitions', () => {
|
|
3633
3635
|
const emittedRuns = [];
|
|
@@ -3678,6 +3680,10 @@ const server_routes_js_1 = require("../../services/local-ai-core/src/runtime/ser
|
|
|
3678
3680
|
threadId: 'thread-1',
|
|
3679
3681
|
runId: 'run-1',
|
|
3680
3682
|
platformMessageId: 'msg-1',
|
|
3683
|
+
platformMessageIds: ['msg-1', 'msg-2'],
|
|
3684
|
+
deliveryMode: 'bridge-stream',
|
|
3685
|
+
deliveryStatus: 'succeeded',
|
|
3686
|
+
lastBridgeEventAt: '2026-04-22T06:00:03.000Z',
|
|
3681
3687
|
}, true);
|
|
3682
3688
|
strict_1.default.deepEqual(emittedRuns, [
|
|
3683
3689
|
'run-1:queued',
|
|
@@ -3685,6 +3691,23 @@ const server_routes_js_1 = require("../../services/local-ai-core/src/runtime/ser
|
|
|
3685
3691
|
'run-1:succeeded',
|
|
3686
3692
|
]);
|
|
3687
3693
|
strict_1.default.deepEqual(emittedJobs, ['job-1:false']);
|
|
3694
|
+
strict_1.default.deepEqual(runs.get(queued.id), {
|
|
3695
|
+
id: 'run-1',
|
|
3696
|
+
jobId: 'job-1',
|
|
3697
|
+
status: 'succeeded',
|
|
3698
|
+
triggeredAt: '2026-04-22T06:00:00.000Z',
|
|
3699
|
+
deliveryStatus: 'succeeded',
|
|
3700
|
+
startedAt: runs.get(queued.id).startedAt,
|
|
3701
|
+
finishedAt: runs.get(queued.id).finishedAt,
|
|
3702
|
+
threadId: 'thread-1',
|
|
3703
|
+
runId: 'run-1',
|
|
3704
|
+
platformMessageId: 'msg-1',
|
|
3705
|
+
platformMessageIds: ['msg-1', 'msg-2'],
|
|
3706
|
+
deliveryMode: 'bridge-stream',
|
|
3707
|
+
deliveryError: '',
|
|
3708
|
+
lastBridgeEventAt: '2026-04-22T06:00:03.000Z',
|
|
3709
|
+
error: '',
|
|
3710
|
+
});
|
|
3688
3711
|
});
|
|
3689
3712
|
(0, node_test_1.default)('lark side-thread execution policy reuses a dedicated scheduled thread', async () => {
|
|
3690
3713
|
const job = {
|
|
@@ -3702,19 +3725,36 @@ const server_routes_js_1 = require("../../services/local-ai-core/src/runtime/ser
|
|
|
3702
3725
|
createdAt: '2026-04-22T06:00:00.000Z',
|
|
3703
3726
|
updatedAt: '2026-04-22T06:00:00.000Z',
|
|
3704
3727
|
};
|
|
3728
|
+
let registeredBridge;
|
|
3729
|
+
let unregisteredBridge = false;
|
|
3705
3730
|
const policy = (0, lark_execution_policies_js_1.createLarkExecutionPolicy)(job, {
|
|
3706
3731
|
store: {},
|
|
3707
3732
|
workspaceRouter: {
|
|
3733
|
+
getThreadSessionKey: (threadId) => `session:${threadId}`,
|
|
3708
3734
|
listThreads: async () => [{ id: 'thread-scheduled', title: '[Scheduled] two-minute ping' }],
|
|
3709
3735
|
createThread: async () => ({ id: 'thread-new' }),
|
|
3710
3736
|
},
|
|
3711
3737
|
getChannelRuntime: () => ({
|
|
3712
|
-
|
|
3713
|
-
|
|
3738
|
+
registerScheduledThreadBridge: (input) => {
|
|
3739
|
+
registeredBridge = input;
|
|
3740
|
+
return () => {
|
|
3741
|
+
unregisteredBridge = true;
|
|
3742
|
+
};
|
|
3743
|
+
},
|
|
3714
3744
|
}),
|
|
3715
3745
|
}, async () => 'thread-origin');
|
|
3716
3746
|
const target = await policy.resolveTarget(job);
|
|
3717
3747
|
strict_1.default.equal(target.threadId, 'thread-scheduled');
|
|
3748
|
+
await policy.beforeExecute?.(target, job);
|
|
3749
|
+
strict_1.default.deepEqual(registeredBridge, {
|
|
3750
|
+
workspaceId: '知识库',
|
|
3751
|
+
platform: 'lark',
|
|
3752
|
+
route: { type: 'channel.chat', channelId: 'chat-1', participantId: 'user-1', threadId: 'thread-origin' },
|
|
3753
|
+
threadId: 'thread-scheduled',
|
|
3754
|
+
sessionKey: 'session:thread-scheduled',
|
|
3755
|
+
});
|
|
3756
|
+
policy.afterExecute?.(target, job);
|
|
3757
|
+
strict_1.default.equal(unregisteredBridge, true);
|
|
3718
3758
|
});
|
|
3719
3759
|
(0, node_test_1.default)('lark same-thread execution policy keeps the original thread target', async () => {
|
|
3720
3760
|
const job = {
|
|
@@ -3732,16 +3772,29 @@ const server_routes_js_1 = require("../../services/local-ai-core/src/runtime/ser
|
|
|
3732
3772
|
createdAt: '2026-04-22T06:00:00.000Z',
|
|
3733
3773
|
updatedAt: '2026-04-22T06:00:00.000Z',
|
|
3734
3774
|
};
|
|
3775
|
+
let registeredBridge;
|
|
3735
3776
|
const policy = (0, lark_execution_policies_js_1.createLarkExecutionPolicy)(job, {
|
|
3736
3777
|
store: {},
|
|
3737
|
-
workspaceRouter: {
|
|
3778
|
+
workspaceRouter: {
|
|
3779
|
+
getThreadSessionKey: (threadId) => `session:${threadId}`,
|
|
3780
|
+
},
|
|
3738
3781
|
getChannelRuntime: () => ({
|
|
3739
|
-
|
|
3740
|
-
|
|
3782
|
+
registerScheduledThreadBridge: (input) => {
|
|
3783
|
+
registeredBridge = input;
|
|
3784
|
+
return () => { };
|
|
3785
|
+
},
|
|
3741
3786
|
}),
|
|
3742
3787
|
}, async () => 'thread-origin');
|
|
3743
3788
|
const target = await policy.resolveTarget(job);
|
|
3744
3789
|
strict_1.default.equal(target.threadId, 'thread-origin');
|
|
3790
|
+
await policy.beforeExecute?.(target, job);
|
|
3791
|
+
strict_1.default.deepEqual(registeredBridge, {
|
|
3792
|
+
workspaceId: '知识库',
|
|
3793
|
+
platform: 'lark',
|
|
3794
|
+
route: { type: 'channel.chat', channelId: 'chat-1', participantId: 'user-1', threadId: 'thread-origin' },
|
|
3795
|
+
threadId: 'thread-origin',
|
|
3796
|
+
sessionKey: 'session:thread-origin',
|
|
3797
|
+
});
|
|
3745
3798
|
});
|
|
3746
3799
|
(0, node_test_1.default)('weixin channel can request a QR code without platform options', async () => {
|
|
3747
3800
|
const originalFetch = globalThis.fetch;
|
package/package.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{z as t}from"./index-DZbeAYVk.js";const e=()=>t.get("/projects"),r=o=>t.get(`/projects/${o}`);export{r as g,e as l};
|