@kafca/agentdock 0.1.31 → 0.1.33

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 (70) hide show
  1. package/LICENSE.md +73 -0
  2. package/README.md +11 -0
  3. package/dist/renderer/assets/{Badge-DaHt-aUT.js → Badge-VeSLCPPV.js} +1 -1
  4. package/dist/renderer/assets/{Chat-Dzeq3kiD.js → Chat-DWTQeTgn.js} +1 -1
  5. package/dist/renderer/assets/{ChatMarkdown-B-L5Roai.js → ChatMarkdown-C9gSQIVb.js} +1 -1
  6. package/dist/renderer/assets/{Config-BI4LJ7Fw.js → Config-CTA-pZNR.js} +1 -1
  7. package/dist/renderer/assets/{CronList-Dic7pblj.js → CronList-BngBCnFY.js} +1 -1
  8. package/dist/renderer/assets/{Dashboard-C0_ATyGe.js → Dashboard-D4pGvDpc.js} +2 -2
  9. package/dist/renderer/assets/{EmptyState-SQsG1DZP.js → EmptyState-DMf8rzDs.js} +1 -1
  10. package/dist/renderer/assets/{KnowledgeDetail-D4yUJzp7.js → KnowledgeDetail-C1Ym_cHk.js} +1 -1
  11. package/dist/renderer/assets/{KnowledgeHome-L0tsg-oo.js → KnowledgeHome-DPRiR72G.js} +1 -1
  12. package/dist/renderer/assets/{Logs-C2Jdr3uQ.js → Logs-CRHecmzO.js} +1 -1
  13. package/dist/renderer/assets/{Modal-GUH3iPXo.js → Modal-BDhhPv2l.js} +1 -1
  14. package/dist/renderer/assets/{Page-m42FBy97.js → Page-DdDZN7AE.js} +1 -1
  15. package/dist/renderer/assets/{ProjectDetail-RF_sagPO.js → ProjectDetail-DCsr3LkW.js} +1 -1
  16. package/dist/renderer/assets/{ProjectList-Cyr8RDK3.js → ProjectList-Cnm-iLvg.js} +1 -1
  17. package/dist/renderer/assets/{Select-CRlDgI5s.js → Select-Dw4FCXhJ.js} +1 -1
  18. package/dist/renderer/assets/{SessionChat-_HhzMwEO.js → SessionChat-O-6abK8x.js} +1 -1
  19. package/dist/renderer/assets/{SessionList-DNwZjGTv.js → SessionList-5yptvVL9.js} +1 -1
  20. package/dist/renderer/assets/{ThreadChat-DxBmdsAm.js → ThreadChat-CIM_o2HO.js} +1 -1
  21. package/dist/renderer/assets/{Workspace-DFphG85O.js → Workspace-D9UeUCNr.js} +1 -1
  22. package/dist/renderer/assets/{arrow-left-bILMzse7.js → arrow-left-CKfxNOXE.js} +1 -1
  23. package/dist/renderer/assets/{book-open-BNBWEEve.js → book-open-CQddlENV.js} +1 -1
  24. package/dist/renderer/assets/{check-MGp5kvnb.js → check-CZYvOmIS.js} +1 -1
  25. package/dist/renderer/assets/{chevron-down-zsfoTlh7.js → chevron-down-CVIWFoXF.js} +1 -1
  26. package/dist/renderer/assets/{circle-BX_xUSg-.js → circle-DSfdQM7k.js} +1 -1
  27. package/dist/renderer/assets/{desktop-CgrO_cdQ.js → desktop-B9KUgeOV.js} +1 -1
  28. package/dist/renderer/assets/{funnel-7442U1wq.js → funnel-pB5NegZB.js} +1 -1
  29. package/dist/renderer/assets/{heart-B3d8bnSH.js → heart-BT5laZ_b.js} +1 -1
  30. package/dist/renderer/assets/{index-BBaYsVjU.js → index-BYyDk28K.js} +2 -2
  31. package/dist/renderer/assets/{index-5YUqCvBf.js → index-zTUUYax3.js} +1 -1
  32. package/dist/renderer/assets/{pencil-QzWgkmoH.js → pencil-C0thxLi6.js} +1 -1
  33. package/dist/renderer/assets/{play-Bsc8hSI7.js → play-CmZ0kWtt.js} +1 -1
  34. package/dist/renderer/assets/{plug-CRY7sjvB.js → plug-CeDQatBe.js} +1 -1
  35. package/dist/renderer/assets/{plus-Dr5Ei8Ud.js → plus-Di__xFOZ.js} +1 -1
  36. package/dist/renderer/assets/projects-B-pbhhtH.js +1 -0
  37. package/dist/renderer/assets/{save-giJnp2Ki.js → save-BDatCjfO.js} +1 -1
  38. package/dist/renderer/assets/{search-DcvHLmKs.js → search-DnTOjP0C.js} +1 -1
  39. package/dist/renderer/assets/{server-D_Qu8If5.js → server-Ey_iHY6m.js} +1 -1
  40. package/dist/renderer/assets/{session-utils-CsASahfU.js → session-utils-DWaM7Rkr.js} +1 -1
  41. package/dist/renderer/assets/{sessions-eMpPqp4P.js → sessions-CYYjLD5I.js} +1 -1
  42. package/dist/renderer/assets/{shield-check-BpF0uIw-.js → shield-check-Br8BQzcn.js} +1 -1
  43. package/dist/renderer/assets/{trash-2-OJFmx3xk.js → trash-2-7YD616fw.js} +1 -1
  44. package/dist/renderer/assets/{user-GL_ivaV6.js → user-BR_5jmr9.js} +1 -1
  45. package/dist/renderer/assets/{wifi-off-CQT5VNQl.js → wifi-off-By9QdREz.js} +1 -1
  46. package/dist/renderer/index.html +1 -1
  47. package/dist-electron/services/local-ai-core/src/acp/local-core-acp-backend.js +0 -1
  48. package/dist-electron/services/local-ai-core/src/acp/local-core-acp-response-processor.js +2 -4
  49. package/dist-electron/services/local-ai-core/src/cli/lac.js +2 -1
  50. package/dist-electron/services/local-ai-core/src/kernel/bootstrap.js +9 -4
  51. package/dist-electron/services/local-ai-core/src/runtime/local-core-controller.js +9 -4
  52. package/dist-electron/services/local-ai-core/src/scheduler/lark-schedule-adapter.js +16 -7
  53. package/dist-electron/services/local-ai-core/src/scheduler/local-schedule-adapter.js +10 -2
  54. package/dist-electron/services/local-ai-core/src/scheduler/scheduled-job-route.js +24 -0
  55. package/dist-electron/services/local-ai-core/src/scheduler/weixin-schedule-adapter.js +15 -6
  56. package/dist-electron/{electron → tests/contracts}/local-core-contracts.test.js +1 -1
  57. package/dist-electron/{electron → tests/electron}/agent-runtime-detector.test.js +2 -2
  58. package/dist-electron/{electron → tests/electron}/lac-cli.test.js +6 -3
  59. package/dist-electron/{electron → tests/electron}/plugin-kernel.test.js +13 -13
  60. package/dist-electron/{electron → tests/electron}/renderer-packaging.test.js +11 -6
  61. package/dist-electron/{electron → tests/electron}/runtime-detection-service.test.js +1 -1
  62. package/dist-electron/{electron → tests/electron}/security-approval-store.test.js +2 -2
  63. package/dist-electron/{electron → tests/electron}/workspace-task-store.test.js +95 -7
  64. package/dist-electron/{electron → tests/integration}/channel-content.test.js +2 -2
  65. package/dist-electron/{electron → tests/integration}/local-core-acp-content.test.js +1 -1
  66. package/dist-electron/{electron → tests/integration}/local-core-refactor.test.js +15 -15
  67. package/package.json +3 -2
  68. package/dist/renderer/assets/projects-BDYSOFIJ.js +0 -1
  69. /package/dist-electron/{electron → tests/contracts}/architecture-docs.test.js +0 -0
  70. /package/dist-electron/{electron → tests/electron}/knowledge-skill-script.test.js +0 -0
@@ -21,7 +21,9 @@ const rootDir = node_process_1.default.cwd();
21
21
  strict_1.default.match(testScript, /\bpnpm build:renderer\b/, 'pnpm test must build renderer assets');
22
22
  strict_1.default.match(testScript, /\bpnpm build:electron\b/, 'pnpm test must compile Electron and Local AI Core tests');
23
23
  strict_1.default.match(testScript, /\bnode --test\b/, 'pnpm test must run the Node test suite');
24
- strict_1.default.match(testScript, /dist-electron\/electron\/\*\.test\.js/, 'pnpm test must include Electron tests');
24
+ strict_1.default.match(testScript, /dist-electron\/tests\/electron\/\*\.test\.js/, 'pnpm test must include Electron tests');
25
+ strict_1.default.match(testScript, /dist-electron\/tests\/contracts\/\*\.test\.js/, 'pnpm test must include contract tests');
26
+ strict_1.default.match(testScript, /dist-electron\/tests\/integration\/\*\.test\.js/, 'pnpm test must include integration tests');
25
27
  strict_1.default.match(testScript, /dist-electron\/packages\/knowledge-api\/test\/\*\.test\.js/, 'pnpm test must include package tests');
26
28
  strict_1.default.match(testScript, /dist-electron\/src\/pages\/Threads\/thread-chat-permission\.test\.js/, 'pnpm test must include renderer state tests');
27
29
  const buildIndex = smokeScript.indexOf('pnpm build');
@@ -44,20 +46,23 @@ const rootDir = node_process_1.default.cwd();
44
46
  });
45
47
  (0, node_test_1.default)('release workflow keeps validation artifacts separate from formal releases', () => {
46
48
  const ciWorkflow = (0, node_fs_1.readFileSync)((0, node_path_1.join)(rootDir, '.github', 'workflows', 'ci.yml'), 'utf8');
49
+ const packageMacosWorkflow = (0, node_fs_1.readFileSync)((0, node_path_1.join)(rootDir, '.github', 'workflows', 'package-macos.yml'), 'utf8');
47
50
  const releaseWorkflow = (0, node_fs_1.readFileSync)((0, node_path_1.join)(rootDir, '.github', 'workflows', 'release.yml'), 'utf8');
48
51
  const releaseDocs = (0, node_fs_1.readFileSync)((0, node_path_1.join)(rootDir, 'docs', 'operations', 'release-workflow.md'), 'utf8');
49
52
  strict_1.default.match(ciWorkflow, /pull_request:/, 'CI must run before merge');
50
53
  strict_1.default.match(ciWorkflow, /branches:\s*\n\s*- main/, 'CI must run on main pushes');
51
- strict_1.default.match(ciWorkflow, /needs: test/, 'main branch packaging must wait for tests');
52
- strict_1.default.match(ciWorkflow, /--publish never/, 'main branch artifacts must not publish formal releases');
53
- strict_1.default.match(ciWorkflow, /retention-days: 14/, 'main branch validation artifacts must have bounded retention');
54
+ strict_1.default.doesNotMatch(ciWorkflow, /macos-latest/, 'main branch CI must not run macOS packaging');
55
+ strict_1.default.match(packageMacosWorkflow, /workflow_dispatch:/, 'macOS validation packaging must be manual');
56
+ strict_1.default.match(packageMacosWorkflow, /Run tests[\s\S]*?run: pnpm test/, 'manual macOS packaging must run tests first');
57
+ strict_1.default.match(packageMacosWorkflow, /--publish never/, 'manual macOS artifacts must not publish formal releases');
58
+ strict_1.default.match(packageMacosWorkflow, /retention-days: 14/, 'manual macOS validation artifacts must have bounded retention');
54
59
  strict_1.default.match(releaseWorkflow, /tags:\s*\n\s*- 'v\*'/, 'formal releases must be tied to version tags');
55
60
  strict_1.default.match(releaseWorkflow, /Run tests[\s\S]*?run: pnpm test/, 'release packaging must run the fast gate');
56
61
  strict_1.default.match(releaseWorkflow, /Build app[\s\S]*?run: pnpm build/, 'release packaging must run a production build');
57
62
  strict_1.default.match(releaseWorkflow, /--publish always/, 'release artifacts must publish only from the release workflow');
58
63
  strict_1.default.match(releaseWorkflow, /tag_version.*package_version/s, 'tag releases must verify the package version');
59
- strict_1.default.match(releaseDocs, /validation only/i, 'release docs must describe main artifacts as validation only');
60
- strict_1.default.match(releaseDocs, /not formal releases/i, 'release docs must separate main artifacts from formal releases');
64
+ strict_1.default.match(releaseDocs, /manual package artifacts are intended for validation only/i, 'release docs must describe manual artifacts as validation only');
65
+ strict_1.default.match(releaseDocs, /not formal releases/i, 'release docs must separate manual artifacts from formal releases');
61
66
  });
62
67
  (0, node_test_1.default)('production smoke gate launches the built app and checks runtime capabilities', () => {
63
68
  const smokeScript = (0, node_fs_1.readFileSync)((0, node_path_1.join)(rootDir, 'scripts', 'e2e-smoke.mjs'), 'utf8');
@@ -8,7 +8,7 @@ const strict_1 = __importDefault(require("node:assert/strict"));
8
8
  const node_fs_1 = require("node:fs");
9
9
  const node_path_1 = require("node:path");
10
10
  const node_os_1 = require("node:os");
11
- const runtime_detection_service_js_1 = require("../services/local-ai-core/src/runtime/runtime-detection-service.js");
11
+ const runtime_detection_service_js_1 = require("../../services/local-ai-core/src/runtime/runtime-detection-service.js");
12
12
  (0, node_test_1.default)('runtime detection service returns unknown results before first detection', () => {
13
13
  const userDataPath = (0, node_fs_1.mkdtempSync)((0, node_path_1.join)((0, node_os_1.tmpdir)(), 'runtime-detection-service-'));
14
14
  try {
@@ -8,8 +8,8 @@ const strict_1 = __importDefault(require("node:assert/strict"));
8
8
  const node_fs_1 = require("node:fs");
9
9
  const node_os_1 = require("node:os");
10
10
  const node_path_1 = require("node:path");
11
- const local_core_acp_store_js_1 = require("../services/local-ai-core/src/acp/local-core-acp-store.js");
12
- const command_risk_js_1 = require("../services/local-ai-core/src/security/command-risk.js");
11
+ const local_core_acp_store_js_1 = require("../../services/local-ai-core/src/acp/local-core-acp-store.js");
12
+ const command_risk_js_1 = require("../../services/local-ai-core/src/security/command-risk.js");
13
13
  (0, node_test_1.default)('workspace security settings persist and create audit events', () => {
14
14
  const userDataPath = (0, node_fs_1.mkdtempSync)((0, node_path_1.join)((0, node_os_1.tmpdir)(), 'security-settings-'));
15
15
  const store = new local_core_acp_store_js_1.LocalCoreAcpStore(userDataPath);
@@ -8,11 +8,12 @@ const strict_1 = __importDefault(require("node:assert/strict"));
8
8
  const node_fs_1 = require("node:fs");
9
9
  const node_path_1 = require("node:path");
10
10
  const node_os_1 = require("node:os");
11
- const local_core_acp_store_js_1 = require("../services/local-ai-core/src/acp/local-core-acp-store.js");
12
- const local_core_acp_session_coordinator_js_1 = require("../services/local-ai-core/src/acp/local-core-acp-session-coordinator.js");
13
- const scheduler_service_js_1 = require("../services/local-ai-core/src/scheduler/scheduler-service.js");
14
- const bootstrap_js_1 = require("../services/local-ai-core/src/kernel/bootstrap.js");
15
- const local_core_controller_js_1 = require("../services/local-ai-core/src/runtime/local-core-controller.js");
11
+ const local_core_acp_store_js_1 = require("../../services/local-ai-core/src/acp/local-core-acp-store.js");
12
+ const local_core_acp_session_coordinator_js_1 = require("../../services/local-ai-core/src/acp/local-core-acp-session-coordinator.js");
13
+ const scheduler_service_js_1 = require("../../services/local-ai-core/src/scheduler/scheduler-service.js");
14
+ const lark_schedule_adapter_js_1 = require("../../services/local-ai-core/src/scheduler/lark-schedule-adapter.js");
15
+ const bootstrap_js_1 = require("../../services/local-ai-core/src/kernel/bootstrap.js");
16
+ const local_core_controller_js_1 = require("../../services/local-ai-core/src/runtime/local-core-controller.js");
16
17
  (0, node_test_1.default)('workspace registry entries persist in LocalCoreAcpStore', () => {
17
18
  const userDataPath = (0, node_fs_1.mkdtempSync)((0, node_path_1.join)((0, node_os_1.tmpdir)(), 'workspace-registry-'));
18
19
  try {
@@ -38,7 +39,7 @@ const local_core_controller_js_1 = require("../services/local-ai-core/src/runtim
38
39
  (0, node_fs_1.rmSync)(userDataPath, { recursive: true, force: true });
39
40
  }
40
41
  });
41
- (0, node_test_1.default)('scheduler create resolves a Lark route from the current thread binding', async () => {
42
+ (0, node_test_1.default)('scheduler create resolves a Lark delivery route without binding the job to a thread', async () => {
42
43
  const userDataPath = (0, node_fs_1.mkdtempSync)((0, node_path_1.join)((0, node_os_1.tmpdir)(), 'scheduler-binding-route-'));
43
44
  try {
44
45
  const runtime = (0, bootstrap_js_1.bootstrapLocalCoreRuntime)({
@@ -74,7 +75,6 @@ const local_core_controller_js_1 = require("../services/local-ai-core/src/runtim
74
75
  type: 'channel.chat',
75
76
  channelId: 'chat-1',
76
77
  participantId: 'user-1',
77
- threadId: thread.id,
78
78
  });
79
79
  await controller.close();
80
80
  }
@@ -82,6 +82,94 @@ const local_core_controller_js_1 = require("../services/local-ai-core/src/runtim
82
82
  (0, node_fs_1.rmSync)(userDataPath, { recursive: true, force: true });
83
83
  }
84
84
  });
85
+ (0, node_test_1.default)('Lark scheduled same-thread execution resolves the latest channel thread and keeps channel delivery', async () => {
86
+ const userDataPath = (0, node_fs_1.mkdtempSync)((0, node_path_1.join)((0, node_os_1.tmpdir)(), 'scheduler-lark-latest-thread-'));
87
+ try {
88
+ const store = new local_core_acp_store_js_1.LocalCoreAcpStore(userDataPath);
89
+ const oldThread = store.createThread('workspace-a', 'Old Lark thread');
90
+ const latestThread = store.createThread('workspace-a', 'Latest Lark thread');
91
+ const now = new Date().toISOString();
92
+ store.upsertPlatformThreadBinding({
93
+ workspace_id: 'workspace-a',
94
+ platform: 'lark',
95
+ chat_id: 'chat-1',
96
+ platform_user_id: 'user-1',
97
+ thread_id: oldThread.id,
98
+ last_platform_message_id: null,
99
+ created_at: now,
100
+ updated_at: now,
101
+ });
102
+ store.upsertPlatformThreadBinding({
103
+ workspace_id: 'workspace-a',
104
+ platform: 'lark',
105
+ chat_id: 'chat-1',
106
+ platform_user_id: 'user-1',
107
+ thread_id: latestThread.id,
108
+ last_platform_message_id: null,
109
+ created_at: now,
110
+ updated_at: now,
111
+ });
112
+ const job = store.createScheduledJob({
113
+ workspaceId: 'workspace-a',
114
+ platform: 'lark',
115
+ route: { type: 'channel.chat', channelId: 'chat-1', participantId: 'user-1', threadId: oldThread.id },
116
+ executionMode: 'same-thread',
117
+ triggerType: 'cron',
118
+ cronExpr: '30 18 * * *',
119
+ promptTemplate: 'ping',
120
+ description: 'bound lark task',
121
+ enabled: true,
122
+ });
123
+ let sentThreadId = '';
124
+ let deliveredRoute;
125
+ const adapter = new lark_schedule_adapter_js_1.LarkScheduleAdapter({
126
+ store,
127
+ getWorkspaceRouter: () => ({
128
+ getThread: async (threadId) => ({
129
+ id: threadId,
130
+ workspaceId: 'workspace-a',
131
+ title: 'Thread',
132
+ live: false,
133
+ updatedAt: now,
134
+ createdAt: now,
135
+ historyCount: 1,
136
+ excerpt: '',
137
+ bridgeSessionKey: '',
138
+ agentType: 'localcore-acp',
139
+ selectedKnowledgeBaseIds: [],
140
+ pendingPermissionRequest: null,
141
+ messages: [{ id: 'message-1', role: 'assistant', kind: 'final', content: 'pong', timestamp: now }],
142
+ }),
143
+ sendThreadMessage: async (threadId) => {
144
+ sentThreadId = threadId;
145
+ store.updateRun('run-1', threadId, 'completed');
146
+ return { runId: 'run-1' };
147
+ },
148
+ }),
149
+ getChannelRuntime: () => ({
150
+ muteThreadBridge: () => { },
151
+ unmuteThreadBridge: () => { },
152
+ sendScheduledMessage: async (_workspaceId, route) => {
153
+ deliveredRoute = route;
154
+ return 'platform-message-1';
155
+ },
156
+ }),
157
+ });
158
+ const result = await adapter.execute({ job, triggeredAt: now });
159
+ strict_1.default.equal(sentThreadId, latestThread.id);
160
+ strict_1.default.equal(result.threadId, latestThread.id);
161
+ strict_1.default.equal(result.platformMessageId, 'platform-message-1');
162
+ strict_1.default.deepEqual(deliveredRoute, {
163
+ type: 'channel.chat',
164
+ channelId: 'chat-1',
165
+ participantId: 'user-1',
166
+ });
167
+ store.close();
168
+ }
169
+ finally {
170
+ (0, node_fs_1.rmSync)(userDataPath, { recursive: true, force: true });
171
+ }
172
+ });
85
173
  (0, node_test_1.default)('ACP runtime env includes the current workspace path for file returns', async () => {
86
174
  const userDataPath = (0, node_fs_1.mkdtempSync)((0, node_path_1.join)((0, node_os_1.tmpdir)(), 'workspace-env-'));
87
175
  try {
@@ -6,8 +6,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  const node_test_1 = __importDefault(require("node:test"));
7
7
  const strict_1 = __importDefault(require("node:assert/strict"));
8
8
  const node_path_1 = require("node:path");
9
- const content_js_1 = require("../services/local-ai-core/src/channel/shared/content.js");
10
- const file_utils_js_1 = require("../services/local-ai-core/src/channel/shared/file-utils.js");
9
+ const content_js_1 = require("../../services/local-ai-core/src/channel/shared/content.js");
10
+ const file_utils_js_1 = require("../../services/local-ai-core/src/channel/shared/file-utils.js");
11
11
  (0, node_test_1.default)('channel thread message input stays plain text when there are no attachments', () => {
12
12
  const input = (0, content_js_1.createChannelThreadMessageInput)('Alice: hello', [
13
13
  { type: 'text', text: 'hello' },
@@ -5,7 +5,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  const node_test_1 = __importDefault(require("node:test"));
7
7
  const strict_1 = __importDefault(require("node:assert/strict"));
8
- const local_core_acp_content_js_1 = require("../services/local-ai-core/src/acp/local-core-acp-content.js");
8
+ const local_core_acp_content_js_1 = require("../../services/local-ai-core/src/acp/local-core-acp-content.js");
9
9
  (0, node_test_1.default)('thread message input keeps inbound file content parts', () => {
10
10
  const normalized = (0, local_core_acp_content_js_1.normalizeThreadMessageInput)({
11
11
  displayText: '',
@@ -9,21 +9,21 @@ const node_fs_1 = require("node:fs");
9
9
  const node_os_1 = require("node:os");
10
10
  const node_path_1 = require("node:path");
11
11
  const node_stream_1 = require("node:stream");
12
- const local_core_acp_response_processor_js_1 = require("../services/local-ai-core/src/acp/local-core-acp-response-processor.js");
13
- const local_core_slash_commands_js_1 = require("../services/local-ai-core/src/acp/local-core-slash-commands.js");
14
- const scheduled_conversation_executor_js_1 = require("../services/local-ai-core/src/scheduler/scheduled-conversation-executor.js");
15
- const scheduler_run_lifecycle_js_1 = require("../services/local-ai-core/src/scheduler/scheduler-run-lifecycle.js");
16
- const lark_execution_policies_js_1 = require("../services/local-ai-core/src/scheduler/lark-execution-policies.js");
17
- const local_schedule_adapter_js_1 = require("../services/local-ai-core/src/scheduler/local-schedule-adapter.js");
18
- const local_core_weixin_gateway_js_1 = require("../services/local-ai-core/src/channel/weixin/local-core-weixin-gateway.js");
19
- const local_core_lark_gateway_js_1 = require("../services/local-ai-core/src/channel/lark/local-core-lark-gateway.js");
20
- const runtime_state_js_1 = require("../services/local-ai-core/src/channel/lark/runtime-state.js");
21
- const local_core_acp_turn_coordinator_js_1 = require("../services/local-ai-core/src/acp/local-core-acp-turn-coordinator.js");
22
- const local_core_acp_store_js_1 = require("../services/local-ai-core/src/acp/local-core-acp-store.js");
23
- const local_core_acp_progress_js_1 = require("../services/local-ai-core/src/acp/local-core-acp-progress.js");
24
- const local_core_acp_permission_lifecycle_js_1 = require("../services/local-ai-core/src/acp/local-core-acp-permission-lifecycle.js");
25
- const workspace_acp_permissions_js_1 = require("../services/local-ai-core/src/acp/workspace-acp-permissions.js");
26
- const server_routes_js_1 = require("../services/local-ai-core/src/runtime/server-routes.js");
12
+ const local_core_acp_response_processor_js_1 = require("../../services/local-ai-core/src/acp/local-core-acp-response-processor.js");
13
+ const local_core_slash_commands_js_1 = require("../../services/local-ai-core/src/acp/local-core-slash-commands.js");
14
+ const scheduled_conversation_executor_js_1 = require("../../services/local-ai-core/src/scheduler/scheduled-conversation-executor.js");
15
+ const scheduler_run_lifecycle_js_1 = require("../../services/local-ai-core/src/scheduler/scheduler-run-lifecycle.js");
16
+ const lark_execution_policies_js_1 = require("../../services/local-ai-core/src/scheduler/lark-execution-policies.js");
17
+ const local_schedule_adapter_js_1 = require("../../services/local-ai-core/src/scheduler/local-schedule-adapter.js");
18
+ const local_core_weixin_gateway_js_1 = require("../../services/local-ai-core/src/channel/weixin/local-core-weixin-gateway.js");
19
+ const local_core_lark_gateway_js_1 = require("../../services/local-ai-core/src/channel/lark/local-core-lark-gateway.js");
20
+ const runtime_state_js_1 = require("../../services/local-ai-core/src/channel/lark/runtime-state.js");
21
+ const local_core_acp_turn_coordinator_js_1 = require("../../services/local-ai-core/src/acp/local-core-acp-turn-coordinator.js");
22
+ const local_core_acp_store_js_1 = require("../../services/local-ai-core/src/acp/local-core-acp-store.js");
23
+ const local_core_acp_progress_js_1 = require("../../services/local-ai-core/src/acp/local-core-acp-progress.js");
24
+ const local_core_acp_permission_lifecycle_js_1 = require("../../services/local-ai-core/src/acp/local-core-acp-permission-lifecycle.js");
25
+ const workspace_acp_permissions_js_1 = require("../../services/local-ai-core/src/acp/workspace-acp-permissions.js");
26
+ const server_routes_js_1 = require("../../services/local-ai-core/src/runtime/server-routes.js");
27
27
  (0, node_test_1.default)('local core route parser separates runtime refresh and runtime detail routes', () => {
28
28
  strict_1.default.deepEqual((0, server_routes_js_1.parseLocalAiCoreRoute)('GET', '/api/local/v1/runtimes'), { name: 'runtimes.list' });
29
29
  strict_1.default.deepEqual((0, server_routes_js_1.parseLocalAiCoreRoute)('POST', '/api/local/v1/runtimes/refresh'), { name: 'runtimes.refresh' });
package/package.json CHANGED
@@ -1,6 +1,7 @@
1
1
  {
2
2
  "name": "@kafca/agentdock",
3
- "version": "0.1.31",
3
+ "version": "0.1.33",
4
+ "license": "PolyForm-Noncommercial-1.0.0",
4
5
  "type": "module",
5
6
  "main": "dist-electron/electron/main.js",
6
7
  "bin": {
@@ -31,7 +32,7 @@
31
32
  "build:renderer": "vite build",
32
33
  "build:electron": "node scripts/write-electron-package.mjs && tsc -p tsconfig.electron.json",
33
34
  "build:core": "pnpm build:electron",
34
- "test": "pnpm build:renderer && pnpm build:electron && node --test dist-electron/electron/*.test.js dist-electron/packages/knowledge-api/test/*.test.js dist-electron/src/pages/Threads/thread-chat-permission.test.js",
35
+ "test": "pnpm build:renderer && pnpm build:electron && node --test dist-electron/tests/electron/*.test.js dist-electron/tests/contracts/*.test.js dist-electron/tests/integration/*.test.js dist-electron/packages/knowledge-api/test/*.test.js dist-electron/src/pages/Threads/thread-chat-permission.test.js",
35
36
  "e2e:smoke": "pnpm build && node scripts/e2e-smoke.mjs",
36
37
  "dist:mac": "pnpm build && electron-builder --mac dmg zip --arm64",
37
38
  "dist:win": "pnpm build && electron-builder --win nsis zip --x64",
@@ -1 +0,0 @@
1
- import{z as t}from"./index-BBaYsVjU.js";const e=()=>t.get("/projects"),r=o=>t.get(`/projects/${o}`);export{r as g,e as l};