capacitor-mobile-claw 1.4.1 → 1.4.2

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.
@@ -30,6 +30,48 @@ export class MobileClawWeb extends WebPlugin {
30
30
  async getAuthStatus() {
31
31
  return this.engine.getAuthStatus();
32
32
  }
33
+ async setSchedulerConfig(config) {
34
+ return this.engine.setSchedulerConfig(config);
35
+ }
36
+ async getSchedulerConfig() {
37
+ return this.engine.getSchedulerConfig();
38
+ }
39
+ async setHeartbeat(config) {
40
+ return this.engine.setHeartbeat(config);
41
+ }
42
+ async triggerHeartbeatWake(source) {
43
+ return this.engine.triggerHeartbeatWake(source);
44
+ }
45
+ async addCronJob(job) {
46
+ return this.engine.addCronJob(job);
47
+ }
48
+ async updateCronJob(id, patch) {
49
+ return this.engine.updateCronJob(id, patch);
50
+ }
51
+ async removeCronJob(id) {
52
+ return this.engine.removeCronJob(id);
53
+ }
54
+ async listCronJobs() {
55
+ return this.engine.listCronJobs();
56
+ }
57
+ async runCronJob(id) {
58
+ return this.engine.runCronJob(id);
59
+ }
60
+ async getCronRunHistory(jobId, limit) {
61
+ return this.engine.getCronRunHistory(jobId, limit);
62
+ }
63
+ async addSkill(skill) {
64
+ return this.engine.addSkill(skill);
65
+ }
66
+ async updateSkill(id, patch) {
67
+ return this.engine.updateSkill(id, patch);
68
+ }
69
+ async removeSkill(id) {
70
+ return this.engine.removeSkill(id);
71
+ }
72
+ async listSkills() {
73
+ return this.engine.listSkills();
74
+ }
33
75
  async readFile(options) {
34
76
  return this.engine.readFile(options.path);
35
77
  }
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.js","sourceRoot":"","sources":["../../src/plugin.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"plugin.js","sourceRoot":"","sources":["../../src/plugin.ts"],"names":[],"mappings":"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"}
@@ -2,6 +2,7 @@
2
2
  * Bridge protocol between the Web UI and the embedded Node.js worker.
3
3
  * Messages are JSON-serialized and passed via Capacitor-NodeJS message channel.
4
4
  */
5
+ import type { CronJobInput, CronJobRecord, CronRunRecord, CronSkillInput, CronSkillRecord, HeartbeatConfig, SchedulerConfig } from '../definitions';
5
6
  export interface AgentStartMessage {
6
7
  type: 'agent.start';
7
8
  agentId: string;
@@ -74,7 +75,64 @@ export interface ToolPreExecuteResultMessage {
74
75
  deny?: boolean;
75
76
  denyReason?: string;
76
77
  }
77
- export type UIToNodeMessage = AgentStartMessage | AgentStopMessage | AgentSteerMessage | ConfigUpdateMessage | ConfigStatusMessage | SessionListMessage | SessionClearMessage | FileReadMessage | FileWriteMessage | SkillStartMessage | ToolPreExecuteResultMessage;
78
+ export interface HeartbeatWakeMessage {
79
+ type: 'heartbeat.wake';
80
+ source?: string;
81
+ timestamp?: number;
82
+ }
83
+ export interface HeartbeatSetMessage {
84
+ type: 'heartbeat.set';
85
+ config: Partial<HeartbeatConfig>;
86
+ }
87
+ export interface SchedulerSetMessage {
88
+ type: 'scheduler.set';
89
+ config: Partial<SchedulerConfig>;
90
+ }
91
+ export interface SchedulerGetMessage {
92
+ type: 'scheduler.get';
93
+ }
94
+ export interface CronJobAddMessage {
95
+ type: 'cron.job.add';
96
+ job: CronJobInput;
97
+ }
98
+ export interface CronJobUpdateMessage {
99
+ type: 'cron.job.update';
100
+ id: string;
101
+ patch: Partial<CronJobInput>;
102
+ }
103
+ export interface CronJobRemoveMessage {
104
+ type: 'cron.job.remove';
105
+ id: string;
106
+ }
107
+ export interface CronJobListMessage {
108
+ type: 'cron.job.list';
109
+ }
110
+ export interface CronJobRunMessage {
111
+ type: 'cron.job.run';
112
+ id: string;
113
+ }
114
+ export interface CronRunsListMessage {
115
+ type: 'cron.runs.list';
116
+ jobId?: string;
117
+ limit?: number;
118
+ }
119
+ export interface CronSkillAddMessage {
120
+ type: 'cron.skill.add';
121
+ skill: CronSkillInput;
122
+ }
123
+ export interface CronSkillUpdateMessage {
124
+ type: 'cron.skill.update';
125
+ id: string;
126
+ patch: Partial<CronSkillInput>;
127
+ }
128
+ export interface CronSkillRemoveMessage {
129
+ type: 'cron.skill.remove';
130
+ id: string;
131
+ }
132
+ export interface CronSkillListMessage {
133
+ type: 'cron.skill.list';
134
+ }
135
+ export type UIToNodeMessage = AgentStartMessage | AgentStopMessage | AgentSteerMessage | ConfigUpdateMessage | ConfigStatusMessage | SessionListMessage | SessionClearMessage | FileReadMessage | FileWriteMessage | SkillStartMessage | ToolPreExecuteResultMessage | HeartbeatWakeMessage | HeartbeatSetMessage | SchedulerSetMessage | SchedulerGetMessage | CronJobAddMessage | CronJobUpdateMessage | CronJobRemoveMessage | CronJobListMessage | CronJobRunMessage | CronRunsListMessage | CronSkillAddMessage | CronSkillUpdateMessage | CronSkillRemoveMessage | CronSkillListMessage;
78
136
  export interface AgentEventMessage {
79
137
  type: 'agent.event';
80
138
  eventType: 'text_delta' | 'tool_use' | 'tool_result' | 'thinking' | 'error';
@@ -149,5 +207,123 @@ export interface ToolPreExecuteExpiredMessage {
149
207
  toolCallId: string;
150
208
  toolName: string;
151
209
  }
152
- export type NodeToUIMessage = AgentEventMessage | AgentCompletedMessage | AgentErrorMessage | ReadyMessage | SessionListResultMessage | FileReadResultMessage | ConfigStatusResultMessage | SessionClearResultMessage | ToolPreExecuteMessage | ToolPreExecuteExpiredMessage;
210
+ export interface HeartbeatStartedMessage {
211
+ type: 'heartbeat.started';
212
+ source: string;
213
+ }
214
+ export interface HeartbeatCompletedMessage {
215
+ type: 'heartbeat.completed';
216
+ status: string;
217
+ reason?: string;
218
+ durationMs: number;
219
+ responsePreview?: string;
220
+ }
221
+ export interface HeartbeatSkippedMessage {
222
+ type: 'heartbeat.skipped';
223
+ reason: string;
224
+ }
225
+ export interface CronJobStartedMessage {
226
+ type: 'cron.job.started';
227
+ jobId: string;
228
+ jobName: string;
229
+ }
230
+ export interface CronJobCompletedMessage {
231
+ type: 'cron.job.completed';
232
+ jobId: string;
233
+ status: string;
234
+ durationMs: number;
235
+ responsePreview?: string;
236
+ }
237
+ export interface CronJobErrorMessage {
238
+ type: 'cron.job.error';
239
+ jobId: string;
240
+ error: string;
241
+ consecutiveErrors: number;
242
+ }
243
+ export interface CronNotificationMessage {
244
+ type: 'cron.notification';
245
+ title: string;
246
+ body: string;
247
+ jobId?: string;
248
+ source: string;
249
+ }
250
+ export interface SchedulerStatusMessage {
251
+ type: 'scheduler.status';
252
+ enabled: boolean;
253
+ mode: string;
254
+ nextDueAt?: number;
255
+ heartbeatNext?: number;
256
+ }
257
+ export interface SchedulerOverdueMessage {
258
+ type: 'scheduler.overdue';
259
+ [key: string]: unknown;
260
+ }
261
+ export interface HeartbeatSetResultMessage {
262
+ type: 'heartbeat.set.result';
263
+ success: boolean;
264
+ heartbeat?: HeartbeatConfig;
265
+ error?: string;
266
+ }
267
+ export interface SchedulerSetResultMessage {
268
+ type: 'scheduler.set.result';
269
+ success: boolean;
270
+ scheduler?: SchedulerConfig;
271
+ error?: string;
272
+ }
273
+ export interface SchedulerGetResultMessage {
274
+ type: 'scheduler.get.result';
275
+ scheduler: SchedulerConfig;
276
+ heartbeat: HeartbeatConfig;
277
+ }
278
+ export interface CronJobAddResultMessage {
279
+ type: 'cron.job.add.result';
280
+ success: boolean;
281
+ job?: CronJobRecord;
282
+ error?: string;
283
+ }
284
+ export interface CronJobUpdateResultMessage {
285
+ type: 'cron.job.update.result';
286
+ success: boolean;
287
+ error?: string;
288
+ }
289
+ export interface CronJobRemoveResultMessage {
290
+ type: 'cron.job.remove.result';
291
+ success: boolean;
292
+ error?: string;
293
+ }
294
+ export interface CronJobListResultMessage {
295
+ type: 'cron.job.list.result';
296
+ jobs: CronJobRecord[];
297
+ }
298
+ export interface CronJobRunResultMessage {
299
+ type: 'cron.job.run.result';
300
+ success: boolean;
301
+ id: string;
302
+ error?: string;
303
+ }
304
+ export interface CronRunsListResultMessage {
305
+ type: 'cron.runs.list.result';
306
+ runs: CronRunRecord[];
307
+ }
308
+ export interface CronSkillAddResultMessage {
309
+ type: 'cron.skill.add.result';
310
+ success: boolean;
311
+ skill?: CronSkillRecord;
312
+ error?: string;
313
+ }
314
+ export interface CronSkillUpdateResultMessage {
315
+ type: 'cron.skill.update.result';
316
+ success: boolean;
317
+ error?: string;
318
+ }
319
+ export interface CronSkillRemoveResultMessage {
320
+ type: 'cron.skill.remove.result';
321
+ success: boolean;
322
+ error?: string;
323
+ }
324
+ export interface CronSkillListResultMessage {
325
+ type: 'cron.skill.list.result';
326
+ skills: CronSkillRecord[];
327
+ }
328
+ export type NodeToUIMessage = AgentEventMessage | AgentCompletedMessage | AgentErrorMessage | ReadyMessage | SessionListResultMessage | FileReadResultMessage | ConfigStatusResultMessage | SessionClearResultMessage | ToolPreExecuteMessage | ToolPreExecuteExpiredMessage | HeartbeatStartedMessage | HeartbeatCompletedMessage | HeartbeatSkippedMessage | CronJobStartedMessage | CronJobCompletedMessage | CronJobErrorMessage | CronNotificationMessage | SchedulerStatusMessage | SchedulerOverdueMessage | HeartbeatSetResultMessage | SchedulerSetResultMessage | SchedulerGetResultMessage | CronJobAddResultMessage | CronJobUpdateResultMessage | CronJobRemoveResultMessage | CronJobListResultMessage | CronJobRunResultMessage | CronRunsListResultMessage | CronSkillAddResultMessage | CronSkillUpdateResultMessage | CronSkillRemoveResultMessage | CronSkillListResultMessage;
153
329
  //# sourceMappingURL=bridge-protocol.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"bridge-protocol.d.ts","sourceRoot":"","sources":["../../../src/services/bridge-protocol.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"bridge-protocol.d.ts","sourceRoot":"","sources":["../../../src/services/bridge-protocol.ts"],"names":[],"mappings":"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"}
@@ -82,12 +82,18 @@ import {
82
82
  initWorkerDb, isDbReady,
83
83
  run as dbRun, query as dbQuery, queryOne as dbQueryOne,
84
84
  transaction as dbTransaction, flush as dbFlush,
85
+ getSchedulerConfig, setSchedulerConfig,
86
+ getHeartbeatConfig, setHeartbeatConfig,
87
+ addCronSkill, updateCronSkill, removeCronSkill, listCronSkills,
88
+ addCronJob, updateCronJob, removeCronJob, listCronJobs,
89
+ listCronRuns,
85
90
  migrateFromJsonl, atomicWrite,
86
91
  } from './worker-db.js';
87
92
 
88
93
  // ── MCP bridge (device tools from WebView) ────────────────────────────────
89
94
  import { initMcpBridge } from './mcp-bridge-client.js';
90
95
  import { buildMcpAgentTools } from './mcp-agent-tools.js';
96
+ import { initHeartbeat, handleHeartbeatWake } from './worker-heartbeat.js';
91
97
 
92
98
  const mcpBridge = initMcpBridge(channel);
93
99
  console.error(`[DEBUG] MCP bridge initialized`);
@@ -122,10 +128,7 @@ async function discoverMcpTools() {
122
128
 
123
129
  // Only cache if the epoch hasn't changed (no invalidation while discovering)
124
130
  if (epoch === discoveryEpoch) {
125
- cachedMcpTools = rawTools.map(tool => ({
126
- ...tool,
127
- execute: wrapWithPreExecuteHook(tool.name, tool.execute),
128
- }));
131
+ cachedMcpTools = rawTools;
129
132
  console.log(`[mobile-claw] Discovered ${cachedMcpTools.length} MCP device tools`);
130
133
  }
131
134
 
@@ -910,6 +913,23 @@ let currentAgent = null;
910
913
  let currentAbortController = null;
911
914
  let currentSessionKey = null;
912
915
  let persistedMessageCount = 0; // Tracks how many messages have been written to JSONL
916
+ let userTurnActive = false;
917
+
918
+ function setUserTurnActive(active) {
919
+ userTurnActive = !!active;
920
+ }
921
+
922
+ function isUserTurnActive() {
923
+ return userTurnActive;
924
+ }
925
+
926
+ function getCurrentAgent() {
927
+ return currentAgent;
928
+ }
929
+
930
+ function getCurrentSessionKey() {
931
+ return currentSessionKey;
932
+ }
913
933
 
914
934
  // Idempotency: track recent message keys to silently drop duplicates
915
935
  const recentIdempotencyKeys = new Set();
@@ -1109,13 +1129,23 @@ function buildAgentTools() {
1109
1129
  },
1110
1130
  ];
1111
1131
 
1112
- // Wrap all tools with pre-execute hook (consumer decides approval policy)
1132
+ return toolDefs;
1133
+ }
1134
+
1135
+ function wrapToolsWithPreExecuteHook(toolDefs) {
1113
1136
  return toolDefs.map(tool => ({
1114
1137
  ...tool,
1115
1138
  execute: wrapWithPreExecuteHook(tool.name, tool.execute),
1116
1139
  }));
1117
1140
  }
1118
1141
 
1142
+ function buildAutoApproveTools(allowedToolNames = null) {
1143
+ const raw = buildAgentTools();
1144
+ return allowedToolNames
1145
+ ? raw.filter(tool => allowedToolNames.includes(tool.name))
1146
+ : raw;
1147
+ }
1148
+
1119
1149
  // ── AgentEvent → Bridge event mapping ────────────────────────────────────
1120
1150
 
1121
1151
  // skillContext: if set, events are tagged as skill events and ignored by the main session view
@@ -1390,6 +1420,11 @@ function _checkpointMessages(agent, agentId, sessionKey) {
1390
1420
  }
1391
1421
  }
1392
1422
 
1423
+ function persistCurrentSession(startTime = Date.now(), agentId = 'main', sessionKey = currentSessionKey) {
1424
+ if (!currentAgent || !sessionKey) return;
1425
+ saveSession(currentAgent, agentId, sessionKey, startTime);
1426
+ }
1427
+
1393
1428
  // ── Error classification ─────────────────────────────────────────────────
1394
1429
 
1395
1430
  function isTransientError(err) {
@@ -1596,7 +1631,11 @@ async function runSkill(agentId, locale = 'en', injectedConfig = null) {
1596
1631
  const setupNames = new Set(setupTools.map(t => t.name));
1597
1632
  const filteredBase = baseTools.filter(t => !setupNames.has(t.name));
1598
1633
  const filteredMcp = mcpTools.filter(t => !setupNames.has(t.name));
1599
- const tools = [...setupTools, ...filteredBase, ...filteredMcp];
1634
+ const tools = [
1635
+ ...setupTools,
1636
+ ...wrapToolsWithPreExecuteHook(filteredBase),
1637
+ ...wrapToolsWithPreExecuteHook(filteredMcp),
1638
+ ];
1600
1639
 
1601
1640
  const skillId = injectedConfig?.id || 'setup';
1602
1641
  const sessionKey = `${skillId}/${Date.now()}`;
@@ -1751,9 +1790,9 @@ async function runAgentLoop(agentId, sessionKey, prompt, requestedModel) {
1751
1790
  console.error(`[DEBUG] Model resolved: ${JSON.stringify({id: model?.id, provider: model?.provider, api: model?.api}).slice(0,200)}`);
1752
1791
 
1753
1792
  // Merge local tools with MCP device tools (if bridge is available)
1754
- const localTools = buildAgentTools();
1793
+ const localTools = wrapToolsWithPreExecuteHook(buildAgentTools());
1755
1794
  console.error(`[DEBUG] Local tools: ${localTools.length}`);
1756
- const mcpTools = await discoverMcpTools();
1795
+ const mcpTools = wrapToolsWithPreExecuteHook(await discoverMcpTools());
1757
1796
  console.error(`[DEBUG] MCP tools: ${mcpTools.length}`);
1758
1797
  const tools = [...localTools, ...mcpTools];
1759
1798
  console.error(`[DEBUG] Total tools: ${tools.length}`);
@@ -1786,6 +1825,7 @@ async function runAgentLoop(agentId, sessionKey, prompt, requestedModel) {
1786
1825
  // Run
1787
1826
  const startTime = Date.now();
1788
1827
  console.error(`[DEBUG] Calling agent.prompt()...`);
1828
+ setUserTurnActive(true);
1789
1829
  try {
1790
1830
  await agent.prompt(prompt);
1791
1831
  console.error(`[DEBUG] agent.prompt() resolved, calling waitForIdle()...`);
@@ -1827,6 +1867,8 @@ async function runAgentLoop(agentId, sessionKey, prompt, requestedModel) {
1827
1867
  lastFailedPrompt = null;
1828
1868
  }
1829
1869
  currentAbortController = null;
1870
+ } finally {
1871
+ setUserTurnActive(false);
1830
1872
  }
1831
1873
  }
1832
1874
 
@@ -1874,6 +1916,7 @@ channel.addListener('message', async (event) => {
1874
1916
  const startTime = Date.now();
1875
1917
  const agentId = msg.agentId || 'main';
1876
1918
  const sessionKey = currentSessionKey || msg.sessionKey;
1919
+ setUserTurnActive(true);
1877
1920
  try {
1878
1921
  await currentAgent.prompt(msg.prompt);
1879
1922
  await currentAgent.waitForIdle();
@@ -1903,6 +1946,8 @@ channel.addListener('message', async (event) => {
1903
1946
  currentSessionKey = null;
1904
1947
  lastFailedPrompt = null;
1905
1948
  }
1949
+ } finally {
1950
+ setUserTurnActive(false);
1906
1951
  }
1907
1952
  } else {
1908
1953
  // New conversation
@@ -1938,6 +1983,7 @@ channel.addListener('message', async (event) => {
1938
1983
  const retryAgentId = msg.agentId || 'main';
1939
1984
  const retrySessionKey = currentSessionKey || msg.sessionKey;
1940
1985
  const retryStart = Date.now();
1986
+ setUserTurnActive(true);
1941
1987
  try {
1942
1988
  await currentAgent.prompt(retryPrompt);
1943
1989
  await currentAgent.waitForIdle();
@@ -1965,6 +2011,8 @@ channel.addListener('message', async (event) => {
1965
2011
  currentSessionKey = null;
1966
2012
  lastFailedPrompt = null;
1967
2013
  }
2014
+ } finally {
2015
+ setUserTurnActive(false);
1968
2016
  }
1969
2017
  break;
1970
2018
  }
@@ -2043,8 +2091,8 @@ channel.addListener('message', async (event) => {
2043
2091
  // If an agent is running, re-discover and inject the updated tool set
2044
2092
  if (currentAgent) {
2045
2093
  try {
2046
- const localTools = buildAgentTools();
2047
- const mcpTools = await discoverMcpTools();
2094
+ const localTools = wrapToolsWithPreExecuteHook(buildAgentTools());
2095
+ const mcpTools = wrapToolsWithPreExecuteHook(await discoverMcpTools());
2048
2096
  const tools = [...localTools, ...mcpTools];
2049
2097
  currentAgent.setTools(tools);
2050
2098
  console.log(`[mobile-claw] Tools invalidated and refreshed: ${tools.length} total (${mcpTools.length} MCP)`);
@@ -2135,6 +2183,142 @@ channel.addListener('message', async (event) => {
2135
2183
  break;
2136
2184
  }
2137
2185
 
2186
+ case 'heartbeat.wake': {
2187
+ await handleHeartbeatWake(msg.source || 'manual');
2188
+ break;
2189
+ }
2190
+
2191
+ case 'heartbeat.set': {
2192
+ try {
2193
+ const heartbeat = setHeartbeatConfig(msg.config || {});
2194
+ channel.send('message', {
2195
+ type: 'heartbeat.set.result',
2196
+ success: true,
2197
+ heartbeat,
2198
+ });
2199
+ } catch (err) {
2200
+ channel.send('message', {
2201
+ type: 'heartbeat.set.result',
2202
+ success: false,
2203
+ error: err.message,
2204
+ });
2205
+ }
2206
+ break;
2207
+ }
2208
+
2209
+ case 'scheduler.set': {
2210
+ try {
2211
+ const scheduler = setSchedulerConfig(msg.config || {});
2212
+ channel.send('message', {
2213
+ type: 'scheduler.set.result',
2214
+ success: true,
2215
+ scheduler,
2216
+ });
2217
+ } catch (err) {
2218
+ channel.send('message', {
2219
+ type: 'scheduler.set.result',
2220
+ success: false,
2221
+ error: err.message,
2222
+ });
2223
+ }
2224
+ break;
2225
+ }
2226
+
2227
+ case 'scheduler.get': {
2228
+ const scheduler = getSchedulerConfig();
2229
+ const heartbeat = getHeartbeatConfig();
2230
+ channel.send('message', {
2231
+ type: 'scheduler.get.result',
2232
+ scheduler,
2233
+ heartbeat,
2234
+ });
2235
+ break;
2236
+ }
2237
+
2238
+ case 'cron.job.add': {
2239
+ try {
2240
+ const job = addCronJob(msg.job || {});
2241
+ channel.send('message', { type: 'cron.job.add.result', success: true, job });
2242
+ } catch (err) {
2243
+ channel.send('message', { type: 'cron.job.add.result', success: false, error: err.message });
2244
+ }
2245
+ break;
2246
+ }
2247
+
2248
+ case 'cron.job.update': {
2249
+ try {
2250
+ updateCronJob(msg.id, msg.patch || {});
2251
+ channel.send('message', { type: 'cron.job.update.result', success: true });
2252
+ } catch (err) {
2253
+ channel.send('message', { type: 'cron.job.update.result', success: false, error: err.message });
2254
+ }
2255
+ break;
2256
+ }
2257
+
2258
+ case 'cron.job.remove': {
2259
+ try {
2260
+ removeCronJob(msg.id);
2261
+ channel.send('message', { type: 'cron.job.remove.result', success: true });
2262
+ } catch (err) {
2263
+ channel.send('message', { type: 'cron.job.remove.result', success: false, error: err.message });
2264
+ }
2265
+ break;
2266
+ }
2267
+
2268
+ case 'cron.job.list': {
2269
+ const jobs = listCronJobs();
2270
+ channel.send('message', { type: 'cron.job.list.result', jobs });
2271
+ break;
2272
+ }
2273
+
2274
+ case 'cron.job.run': {
2275
+ await handleHeartbeatWake('manual', { force: true, forceJobId: msg.id });
2276
+ channel.send('message', { type: 'cron.job.run.result', success: true, id: msg.id });
2277
+ break;
2278
+ }
2279
+
2280
+ case 'cron.runs.list': {
2281
+ const runs = listCronRuns(msg.jobId, msg.limit);
2282
+ channel.send('message', { type: 'cron.runs.list.result', runs });
2283
+ break;
2284
+ }
2285
+
2286
+ case 'cron.skill.add': {
2287
+ try {
2288
+ const skill = addCronSkill(msg.skill || {});
2289
+ channel.send('message', { type: 'cron.skill.add.result', success: true, skill });
2290
+ } catch (err) {
2291
+ channel.send('message', { type: 'cron.skill.add.result', success: false, error: err.message });
2292
+ }
2293
+ break;
2294
+ }
2295
+
2296
+ case 'cron.skill.update': {
2297
+ try {
2298
+ updateCronSkill(msg.id, msg.patch || {});
2299
+ channel.send('message', { type: 'cron.skill.update.result', success: true });
2300
+ } catch (err) {
2301
+ channel.send('message', { type: 'cron.skill.update.result', success: false, error: err.message });
2302
+ }
2303
+ break;
2304
+ }
2305
+
2306
+ case 'cron.skill.remove': {
2307
+ try {
2308
+ removeCronSkill(msg.id);
2309
+ channel.send('message', { type: 'cron.skill.remove.result', success: true });
2310
+ } catch (err) {
2311
+ channel.send('message', { type: 'cron.skill.remove.result', success: false, error: err.message });
2312
+ }
2313
+ break;
2314
+ }
2315
+
2316
+ case 'cron.skill.list': {
2317
+ const skills = listCronSkills();
2318
+ channel.send('message', { type: 'cron.skill.list.result', skills });
2319
+ break;
2320
+ }
2321
+
2138
2322
  case 'session.list': {
2139
2323
  const agentId = msg.agentId || 'main';
2140
2324
  let sessions = [];
@@ -2346,8 +2530,8 @@ channel.addListener('message', async (event) => {
2346
2530
  const systemPrompt = loadSystemPrompt();
2347
2531
  const model = getModel('anthropic', 'claude-sonnet-4-5');
2348
2532
 
2349
- const localTools = buildAgentTools();
2350
- const mcpTools = await discoverMcpTools();
2533
+ const localTools = wrapToolsWithPreExecuteHook(buildAgentTools());
2534
+ const mcpTools = wrapToolsWithPreExecuteHook(await discoverMcpTools());
2351
2535
  const tools = [...localTools, ...mcpTools];
2352
2536
 
2353
2537
  const agent = new Agent({
@@ -2451,6 +2635,23 @@ initWorkerDb(OPENCLAW_ROOT).then(() => {
2451
2635
  });
2452
2636
  console.error(`[DEBUG] worker.ready SENT. Node=${process.version} root=${OPENCLAW_ROOT}`);
2453
2637
 
2638
+ initHeartbeat({
2639
+ channel,
2640
+ buildAutoApproveTools,
2641
+ discoverMcpTools,
2642
+ getCurrentAgent,
2643
+ getCurrentSessionKey,
2644
+ isUserTurnActive,
2645
+ resolveApiKey,
2646
+ loadAuthProfiles,
2647
+ loadSystemPrompt,
2648
+ getModel,
2649
+ refreshOAuthTokenIfNeeded,
2650
+ Agent,
2651
+ OPENCLAW_ROOT,
2652
+ persistCurrentSession,
2653
+ });
2654
+
2454
2655
  // Pre-discover MCP device tools at startup (non-blocking, best-effort).
2455
2656
  channel.send('message', { type: 'worker.loading_phase', phase: 'tools' });
2456
2657
  discoverMcpTools().then(tools => {