capacitor-mobile-claw 1.6.4 → 1.6.6
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 +53 -95
- package/dist/esm/agent/agent-runner.d.ts +2 -0
- package/dist/esm/agent/agent-runner.d.ts.map +1 -1
- package/dist/esm/agent/agent-runner.js +11 -1
- package/dist/esm/agent/agent-runner.js.map +1 -1
- package/dist/esm/agent/cron-db-access.d.ts +57 -0
- package/dist/esm/agent/cron-db-access.d.ts.map +1 -0
- package/dist/esm/agent/cron-db-access.js +422 -0
- package/dist/esm/agent/cron-db-access.js.map +1 -0
- package/dist/esm/agent/heartbeat-manager.d.ts +49 -0
- package/dist/esm/agent/heartbeat-manager.d.ts.map +1 -0
- package/dist/esm/agent/heartbeat-manager.js +554 -0
- package/dist/esm/agent/heartbeat-manager.js.map +1 -0
- package/dist/esm/engine.d.ts +5 -0
- package/dist/esm/engine.d.ts.map +1 -1
- package/dist/esm/engine.js +124 -15
- package/dist/esm/engine.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
|
|
7
7
|
**On-device AI agent engine for mobile apps** — run Claude directly on your phone with file tools, code execution, git, and extensible MCP tool support.
|
|
8
8
|
|
|
9
|
-
Mobile Claw is a [Capacitor](https://capacitorjs.com/) plugin that embeds a full AI agent runtime on Android and iOS.
|
|
9
|
+
Mobile Claw is a [Capacitor](https://capacitorjs.com/) plugin that embeds a full AI agent runtime on Android and iOS. The agent loop runs directly in the WebView for instant cold start, with LLM API calls routed through native HTTP (OkHttp / URLSession) to bypass CORS — full SSE streaming, no cloud relay, no proxy. Includes **on-device vector memory** via [LanceDB](https://www.npmjs.com/package/capacitor-lancedb), **background scheduling** via [MobileCron](https://www.npmjs.com/package/capacitor-mobilecron) (WorkManager / BGTaskScheduler), and cron jobs with reusable skills.
|
|
10
10
|
|
|
11
11
|
> Built on [OpenClaw](https://github.com/openclaw/openclaw) and the [Pi framework](https://www.npmjs.com/package/@mariozechner/pi-ai) by [Mario Zechner](https://github.com/badlogic). Pi's philosophy of *"what you leave out matters more than what you put in"* — just 4 core tools and a system prompt under 1,000 tokens — is what makes running a capable AI agent on a phone possible at all.
|
|
12
12
|
|
|
@@ -96,63 +96,32 @@ Once the app launches, enter your Anthropic API key in settings and start chatti
|
|
|
96
96
|
|
|
97
97
|
## How It Works
|
|
98
98
|
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
### WebView Agent (recommended)
|
|
102
|
-
|
|
103
|
-
The agent loop runs directly in the WebView for instant cold start. LLM API calls go through a native HTTP plugin (OkHttp on Android, URLSession on iOS) that bypasses WebView CORS restrictions and provides true streaming via `ReadableStream`. Worker tools are transparently proxied via the bridge.
|
|
104
|
-
|
|
105
|
-
```
|
|
106
|
-
┌──────────────────────────────────────────────────────────┐
|
|
107
|
-
│ Your App (Vue, React, Svelte, vanilla JS) │
|
|
108
|
-
│ ┌────────────────────────────────────────────────────┐ │
|
|
109
|
-
│ │ MobileClawEngine (useWebViewAgent: true) │ │
|
|
110
|
-
│ │ ┌──────────────┐ ┌───────────────────────────┐ │ │
|
|
111
|
-
│ │ │ Pi Agent │ │ HttpStreamPlugin (native) │ │ │
|
|
112
|
-
│ │ │ (in WebView) │ │ - OkHttp (Android) │ │ │
|
|
113
|
-
│ │ │ │──│ - URLSession (iOS) │ │ │
|
|
114
|
-
│ │ │ │ │ - CORS bypass │ │ │
|
|
115
|
-
│ │ │ │ │ - ReadableStream assembly │ │ │
|
|
116
|
-
│ │ └──────┬───────┘ └───────────────────────────┘ │ │
|
|
117
|
-
│ │ │ ToolProxy (bridge IPC) │ │
|
|
118
|
-
│ │ ┌──────▼───────────────────────────────────────┐ │ │
|
|
119
|
-
│ │ │ Node.js Worker (file tools, git, code exec) │ │ │
|
|
120
|
-
│ │ └──────────────────────────────────────────────┘ │ │
|
|
121
|
-
│ └────────────────────────────────────────────────────┘ │
|
|
122
|
-
└──────────────────────────────────────────────────────────┘
|
|
123
|
-
```
|
|
124
|
-
|
|
125
|
-
### Worker Agent (legacy)
|
|
126
|
-
|
|
127
|
-
The full agent loop runs inside the embedded Node.js worker. Higher cold start latency but full isolation.
|
|
99
|
+
The agent loop runs directly in the WebView for instant cold start. LLM API calls are routed through native HTTP (OkHttp / URLSession) to bypass WebView CORS, with full SSE streaming. File tools, git, and code execution run on-device via the Capacitor bridge.
|
|
128
100
|
|
|
129
101
|
```
|
|
130
|
-
|
|
131
|
-
│ Your App
|
|
132
|
-
│
|
|
133
|
-
│ │ MobileClawEngine
|
|
134
|
-
│
|
|
135
|
-
│
|
|
136
|
-
│
|
|
137
|
-
│ │
|
|
138
|
-
│ │
|
|
139
|
-
│ │ │
|
|
140
|
-
│ │ │
|
|
141
|
-
│ │ │
|
|
142
|
-
│
|
|
143
|
-
|
|
144
|
-
│ │ ▼ Anthropic Messages API │ │
|
|
145
|
-
│ └─────────────────────────────────────────────────────┘ │
|
|
146
|
-
└──────────────────────────────────────────────────────────┘
|
|
102
|
+
┌──────────────────────────────────────────────────────┐
|
|
103
|
+
│ Your App (Vue, React, Svelte, vanilla JS) │
|
|
104
|
+
│ ┌────────────────────────────────────────────────┐ │
|
|
105
|
+
│ │ MobileClawEngine │ │
|
|
106
|
+
│ │ ┌──────────────┐ │ │
|
|
107
|
+
│ │ │ Pi Agent │── Anthropic API (native HTTP)│ │
|
|
108
|
+
│ │ │ (in WebView) │ │ │
|
|
109
|
+
│ │ └──────┬───────┘ │ │
|
|
110
|
+
│ │ │ Capacitor Bridge │ │
|
|
111
|
+
│ │ ┌──────▼──────────────────────────────────┐ │ │
|
|
112
|
+
│ │ │ File tools · Git · Code exec · SQLite │ │ │
|
|
113
|
+
│ │ └─────────────────────────────────────────┘ │ │
|
|
114
|
+
│ └────────────────────────────────────────────────┘ │
|
|
115
|
+
└──────────────────────────────────────────────────────┘
|
|
147
116
|
```
|
|
148
117
|
|
|
149
118
|
## Install in Your Own App
|
|
150
119
|
|
|
151
120
|
```bash
|
|
152
|
-
npm install capacitor-mobile-claw @capacitor/core @capacitor/device @
|
|
121
|
+
npm install capacitor-mobile-claw @capacitor/core @capacitor/device @capacitor-community/sqlite
|
|
153
122
|
```
|
|
154
123
|
|
|
155
|
-
If using Vite, add the bundler plugin to `vite.config.js
|
|
124
|
+
If using Vite, add the bundler plugin to `vite.config.js`:
|
|
156
125
|
|
|
157
126
|
```javascript
|
|
158
127
|
import { mobileClawVitePlugin } from 'capacitor-mobile-claw/vite-plugin'
|
|
@@ -162,31 +131,6 @@ export default defineConfig({
|
|
|
162
131
|
})
|
|
163
132
|
```
|
|
164
133
|
|
|
165
|
-
Then add these scripts to your `package.json`:
|
|
166
|
-
|
|
167
|
-
```json
|
|
168
|
-
{
|
|
169
|
-
"scripts": {
|
|
170
|
-
"setup:worker": "rm -rf public/nodejs-project && mkdir -p public && cp -R node_modules/capacitor-mobile-claw/nodejs-assets/nodejs-project public/nodejs-project && cd public/nodejs-project && npm install --production",
|
|
171
|
-
"postinstall": "npm run setup:worker",
|
|
172
|
-
"cap:sync": "cap sync && cp -R node_modules/@choreruiz/capacitor-node-js/ios/assets/builtin_modules ios/App/App/public/builtin_modules 2>/dev/null; true",
|
|
173
|
-
"cap:build": "npm run setup:worker && vite build && npm run cap:sync"
|
|
174
|
-
}
|
|
175
|
-
}
|
|
176
|
-
```
|
|
177
|
-
|
|
178
|
-
And add to your `capacitor.config.ts`:
|
|
179
|
-
|
|
180
|
-
```typescript
|
|
181
|
-
plugins: {
|
|
182
|
-
CapacitorNodeJS: {
|
|
183
|
-
nodeDir: 'nodejs-project',
|
|
184
|
-
},
|
|
185
|
-
}
|
|
186
|
-
```
|
|
187
|
-
|
|
188
|
-
Add `public/nodejs-project` to your `.gitignore` — it's generated from the npm package.
|
|
189
|
-
|
|
190
134
|
### Basic Usage
|
|
191
135
|
|
|
192
136
|
```typescript
|
|
@@ -194,8 +138,7 @@ import { MobileClawEngine } from 'capacitor-mobile-claw'
|
|
|
194
138
|
|
|
195
139
|
const engine = new MobileClawEngine()
|
|
196
140
|
|
|
197
|
-
|
|
198
|
-
await engine.init({ useWebViewAgent: true })
|
|
141
|
+
await engine.init()
|
|
199
142
|
|
|
200
143
|
// Listen for streaming text
|
|
201
144
|
engine.addListener('agentEvent', (event) => {
|
|
@@ -227,15 +170,37 @@ const engine = new MobileClawEngine()
|
|
|
227
170
|
|
|
228
171
|
await engine.init({
|
|
229
172
|
tools: myTools,
|
|
230
|
-
useWebViewAgent: true,
|
|
231
173
|
})
|
|
232
174
|
```
|
|
233
175
|
|
|
234
|
-
### With
|
|
176
|
+
### With On-Device Memory
|
|
177
|
+
|
|
178
|
+
The agent remembers across sessions using [capacitor-lancedb](https://www.npmjs.com/package/capacitor-lancedb) — a Rust-powered vector database running entirely on-device. Memories are stored, deduplicated, and recalled via semantic search. Five built-in tools (`memory_store`, `memory_recall`, `memory_search`, `memory_forget`, `memory_get`) are passed to the agent automatically.
|
|
179
|
+
|
|
180
|
+
```typescript
|
|
181
|
+
import { MemoryManager } from 'capacitor-lancedb'
|
|
182
|
+
|
|
183
|
+
const memory = new MemoryManager({ dbPath: 'files://agent-memory' })
|
|
184
|
+
await memory.init()
|
|
185
|
+
|
|
186
|
+
const engine = new MobileClawEngine()
|
|
187
|
+
const memoryTools = memory.getTools()
|
|
188
|
+
await engine.init({ tools: memoryTools })
|
|
189
|
+
|
|
190
|
+
// Agent can now store/recall memories across sessions.
|
|
191
|
+
// Auto-recall injects relevant context at turn start.
|
|
192
|
+
// Auto-capture extracts facts from agent responses.
|
|
193
|
+
```
|
|
194
|
+
|
|
195
|
+
### With Background Scheduling
|
|
196
|
+
|
|
197
|
+
[capacitor-mobilecron](https://www.npmjs.com/package/capacitor-mobilecron) enables the agent to wake and run in the background via Android WorkManager and iOS BGTaskScheduler. The engine's scheduler manages heartbeats (periodic check-ins) and cron jobs (recurring tasks).
|
|
235
198
|
|
|
236
199
|
```typescript
|
|
200
|
+
import { MobileCron } from 'capacitor-mobilecron'
|
|
201
|
+
|
|
237
202
|
const engine = new MobileClawEngine()
|
|
238
|
-
await engine.init({
|
|
203
|
+
await engine.init({ mobileCron: MobileCron })
|
|
239
204
|
|
|
240
205
|
// Enable scheduler + heartbeat (runs every 30 minutes)
|
|
241
206
|
await engine.setSchedulerConfig({ enabled: true, schedulingMode: 'balanced' })
|
|
@@ -245,9 +210,6 @@ await engine.setHeartbeat({ enabled: true, everyMs: 1800000 })
|
|
|
245
210
|
engine.addListener('heartbeatCompleted', (event) => {
|
|
246
211
|
console.log(`Heartbeat: ${event.status} (${event.durationMs}ms)`)
|
|
247
212
|
})
|
|
248
|
-
|
|
249
|
-
// Manual trigger
|
|
250
|
-
await engine.triggerHeartbeatWake('manual')
|
|
251
213
|
```
|
|
252
214
|
|
|
253
215
|
### With Cron Jobs
|
|
@@ -260,7 +222,7 @@ const skill = await engine.addSkill({
|
|
|
260
222
|
timeoutMs: 60000,
|
|
261
223
|
})
|
|
262
224
|
|
|
263
|
-
// Schedule a cron job
|
|
225
|
+
// Schedule a recurring cron job
|
|
264
226
|
await engine.addCronJob({
|
|
265
227
|
name: 'morning-briefing',
|
|
266
228
|
enabled: true,
|
|
@@ -274,8 +236,10 @@ await engine.addCronJob({
|
|
|
274
236
|
|
|
275
237
|
## Features
|
|
276
238
|
|
|
277
|
-
- **
|
|
278
|
-
- **
|
|
239
|
+
- **Instant cold start** — agent loop runs directly in the WebView, no boot delay
|
|
240
|
+
- **On-device vector memory** — store, recall, and search memories via [LanceDB](https://www.npmjs.com/package/capacitor-lancedb) with auto-recall context injection and deduplication
|
|
241
|
+
- **Background scheduling** — heartbeat check-ins and cron jobs via [MobileCron](https://www.npmjs.com/package/capacitor-mobilecron) (Android WorkManager / iOS BGTaskScheduler)
|
|
242
|
+
- **Cron jobs & skills** — recurring agent tasks with reusable skill definitions, run history, and delivery modes
|
|
279
243
|
- **Real-time streaming** — text deltas, tool use, and thinking events
|
|
280
244
|
- **Multi-turn conversations** — session persistence via native SQLite
|
|
281
245
|
- **OAuth PKCE + API key** — sign in with Claude Max or use a direct API key
|
|
@@ -285,9 +249,6 @@ await engine.addCronJob({
|
|
|
285
249
|
- **MCP device tools** — extensible via Model Context Protocol
|
|
286
250
|
- **Tool approval gate** — approve/deny tool executions before they run (120s TTL)
|
|
287
251
|
- **Agent steering** — inject follow-up instructions into a running turn
|
|
288
|
-
- **Background heartbeat** — scheduled agent check-ins via MobileCron + WorkManager
|
|
289
|
-
- **Cron jobs** — recurring agent tasks with skills, schedules, and delivery modes
|
|
290
|
-
- **On-device vector memory** — store/recall/search via LanceDB (capacitor-lancedb)
|
|
291
252
|
- **Vite plugin** — stubs Node.js-only transitive deps for browser bundling
|
|
292
253
|
|
|
293
254
|
## API Reference
|
|
@@ -296,7 +257,7 @@ await engine.addCronJob({
|
|
|
296
257
|
|
|
297
258
|
| Method | Description |
|
|
298
259
|
|--------|-------------|
|
|
299
|
-
| `init(options?)` | Start engine. Options: `
|
|
260
|
+
| `init(options?)` | Start engine. Options: `tools`, `mobileCron` |
|
|
300
261
|
| `sendMessage(prompt, agentId?)` | Send a prompt to the agent |
|
|
301
262
|
| `stopTurn()` | Cancel the running agent turn |
|
|
302
263
|
| `respondToPreExecute(toolCallId, args, deny?)` | Approve/deny a tool execution |
|
|
@@ -337,7 +298,6 @@ await engine.addCronJob({
|
|
|
337
298
|
| `agentCompleted` | Agent turn finished (includes token usage) |
|
|
338
299
|
| `agentError` | Agent execution failed |
|
|
339
300
|
| `toolPreExecute` | Agent wants to run a tool (approval gate) |
|
|
340
|
-
| `workerReady` | Node.js worker initialized |
|
|
341
301
|
| `heartbeatStarted` / `heartbeatCompleted` / `heartbeatSkipped` | Heartbeat lifecycle |
|
|
342
302
|
| `cronJobStarted` / `cronJobCompleted` / `cronJobError` | Cron job lifecycle |
|
|
343
303
|
| `schedulerStatus` | Scheduler state changed (next run times) |
|
|
@@ -345,7 +305,7 @@ await engine.addCronJob({
|
|
|
345
305
|
## Documentation
|
|
346
306
|
|
|
347
307
|
- [Architecture](docs/architecture.md) — system design and layer breakdown
|
|
348
|
-
- [Bridge Protocol](docs/bridge-protocol.md) —
|
|
308
|
+
- [Bridge Protocol](docs/bridge-protocol.md) — bridge message reference
|
|
349
309
|
- [Creating Device Tools](docs/creating-tools.md) — how to build custom MCP tools
|
|
350
310
|
|
|
351
311
|
## Related Packages
|
|
@@ -364,14 +324,12 @@ See [CONTRIBUTING.md](CONTRIBUTING.md) for development setup, workflow, and guid
|
|
|
364
324
|
|-------|-----------|
|
|
365
325
|
| Mobile framework | [Capacitor 8](https://capacitorjs.com/) |
|
|
366
326
|
| Agent core | [Pi](https://www.npmjs.com/package/@mariozechner/pi-ai) by Mario Zechner |
|
|
367
|
-
| Embedded runtime | [@choreruiz/capacitor-node-js](https://github.com/rogelioRuiz/capacitor-node-js) |
|
|
368
|
-
| Native HTTP | OkHttp (Android) + URLSession (iOS) — streaming, CORS bypass |
|
|
369
327
|
| Tool protocol | [Model Context Protocol (MCP)](https://modelcontextprotocol.io/) |
|
|
370
328
|
| LLM provider | [Anthropic Claude](https://anthropic.com/) |
|
|
371
|
-
| Vector memory | [LanceDB](https://lancedb.com/) via [capacitor-lancedb](https://www.npmjs.com/package/capacitor-lancedb) |
|
|
329
|
+
| Vector memory | [LanceDB](https://lancedb.com/) via [capacitor-lancedb](https://www.npmjs.com/package/capacitor-lancedb) (Rust FFI, on-device) |
|
|
372
330
|
| Background scheduling | [capacitor-mobilecron](https://www.npmjs.com/package/capacitor-mobilecron) (WorkManager / BGTaskScheduler) |
|
|
373
331
|
| Git | [isomorphic-git](https://isomorphic-git.org/) |
|
|
374
|
-
| Database | [@capacitor-community/sqlite](https://github.com/nicepkg/capacitor-community-sqlite) (native SQLite
|
|
332
|
+
| Database | [@capacitor-community/sqlite](https://github.com/nicepkg/capacitor-community-sqlite) (native SQLite) |
|
|
375
333
|
| Python | [Pyodide](https://pyodide.org/) (CPython via WebAssembly) |
|
|
376
334
|
| Type system | TypeScript (strict mode) |
|
|
377
335
|
| Lint | [Biome](https://biomejs.dev/) |
|
|
@@ -33,6 +33,8 @@ export interface AgentRunParams {
|
|
|
33
33
|
provider?: string;
|
|
34
34
|
apiKey: string;
|
|
35
35
|
systemPrompt: string;
|
|
36
|
+
maxTurns?: number;
|
|
37
|
+
allowedTools?: string[];
|
|
36
38
|
/** Additional tools (MCP device tools) to merge with proxied worker tools */
|
|
37
39
|
extraTools?: AgentTool<any>[];
|
|
38
40
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-runner.d.ts","sourceRoot":"","sources":["../../../src/agent/agent-runner.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AAK7C,KAAK,KAAK,GAAG,OAAO,6BAA6B,EAAE,KAAK,CAAA;AAExD,KAAK,YAAY,GAAG,OAAO,6BAA6B,EAAE,YAAY,CAAA;AACtE,KAAK,SAAS,CACZ,WAAW,SAAS,OAAO,mBAAmB,EAAE,OAAO,GAAG,OAAO,mBAAmB,EAAE,OAAO,EAC7F,QAAQ,GAAG,GAAG,IACZ,OAAO,6BAA6B,EAAE,SAAS,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAA;AAE1E,MAAM,WAAW,iBAAiB;IAChC,iFAAiF;IACjF,QAAQ,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAA;IAChD,uDAAuD;IACvD,SAAS,EAAE,SAAS,CAAA;IACpB,qFAAqF;IACrF,cAAc,CAAC,EAAE,CACf,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,MAAM,CAAC,EAAE,WAAW,KACjB,OAAO,CAAC,gBAAgB,CAAC,CAAA;CAC/B;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAC9B;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,MAAM,CAAA;IACf,UAAU,EAAE,MAAM,CAAA;IAClB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,MAAM,EAAE,MAAM,CAAA;IACd,YAAY,EAAE,MAAM,CAAA;IACpB,6EAA6E;IAC7E,UAAU,CAAC,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAA;CAC9B;AAED,qBAAa,WAAW;IACtB,OAAO,CAAC,KAAK,CAAqB;IAClC,OAAO,CAAC,iBAAiB,CAAsB;IAC/C,OAAO,CAAC,QAAQ,CAAwC;IACxD,OAAO,CAAC,SAAS,CAAW;IAC5B,OAAO,CAAC,cAAc,CAAC,CAAqC;gBAEhD,MAAM,EAAE,iBAAiB;IAMrC,iEAAiE;IACjE,IAAI,SAAS,IAAI,OAAO,CAEvB;IAED,IAAI,UAAU,IAAI,MAAM,GAAG,IAAI,CAE9B;IAED,IAAI,YAAY,IAAI,KAAK,GAAG,IAAI,CAE/B;IAIK,GAAG,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"agent-runner.d.ts","sourceRoot":"","sources":["../../../src/agent/agent-runner.ts"],"names":[],"mappings":"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"}
|
|
@@ -59,7 +59,10 @@ export class AgentRunner {
|
|
|
59
59
|
// Build tools: proxied worker tools + optional MCP/memory tools
|
|
60
60
|
const workerTools = this._wrapWithPreExecuteHook(this.toolProxy.buildTools());
|
|
61
61
|
const extraTools = params.extraTools ? this._wrapWithPreExecuteHook(params.extraTools) : [];
|
|
62
|
-
|
|
62
|
+
let tools = [...workerTools, ...extraTools];
|
|
63
|
+
if (params.allowedTools?.length) {
|
|
64
|
+
tools = tools.filter((tool) => params.allowedTools?.includes(tool.name));
|
|
65
|
+
}
|
|
63
66
|
this.agent = new Agent({
|
|
64
67
|
initialState: {
|
|
65
68
|
systemPrompt: params.systemPrompt,
|
|
@@ -72,7 +75,14 @@ export class AgentRunner {
|
|
|
72
75
|
});
|
|
73
76
|
this.currentSessionKey = params.sessionKey;
|
|
74
77
|
// Subscribe to events — dispatch DIRECTLY to the engine (no bridge hop)
|
|
78
|
+
let turnCount = 0;
|
|
75
79
|
this.agent.subscribe((event) => {
|
|
80
|
+
if (event.type === 'turn_end' && params.maxTurns) {
|
|
81
|
+
turnCount += 1;
|
|
82
|
+
if (turnCount >= params.maxTurns) {
|
|
83
|
+
this.agent?.abort();
|
|
84
|
+
}
|
|
85
|
+
}
|
|
76
86
|
this._dispatchAgentEvent(event);
|
|
77
87
|
});
|
|
78
88
|
// Echo user prompt to UI
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-runner.js","sourceRoot":"","sources":["../../../src/agent/agent-runner.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;
|
|
1
|
+
{"version":3,"file":"agent-runner.js","sourceRoot":"","sources":["../../../src/agent/agent-runner.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import type { CronJobRecord, CronSkillRecord, HeartbeatConfig, SchedulerConfig } from '../definitions';
|
|
2
|
+
export interface SchedulerStoreConfig extends SchedulerConfig {
|
|
3
|
+
updatedAt?: number;
|
|
4
|
+
}
|
|
5
|
+
export interface HeartbeatStoreConfig extends HeartbeatConfig {
|
|
6
|
+
updatedAt?: number;
|
|
7
|
+
}
|
|
8
|
+
export interface CronSkillStoreRecord extends CronSkillRecord {
|
|
9
|
+
}
|
|
10
|
+
export interface CronJobStoreRecord extends CronJobRecord {
|
|
11
|
+
lastResponseHash?: string;
|
|
12
|
+
lastResponseSentAt?: number;
|
|
13
|
+
}
|
|
14
|
+
export interface PendingSystemEvent {
|
|
15
|
+
id: number;
|
|
16
|
+
sessionKey: string;
|
|
17
|
+
contextKey?: string;
|
|
18
|
+
text: string;
|
|
19
|
+
createdAt: number;
|
|
20
|
+
consumed: boolean;
|
|
21
|
+
}
|
|
22
|
+
export interface CronRunInsert {
|
|
23
|
+
jobId: string;
|
|
24
|
+
startedAt: number;
|
|
25
|
+
endedAt?: number | null;
|
|
26
|
+
status?: string | null;
|
|
27
|
+
durationMs?: number | null;
|
|
28
|
+
error?: string | null;
|
|
29
|
+
responseText?: string | null;
|
|
30
|
+
wasHeartbeatOk?: boolean;
|
|
31
|
+
wasDeduped?: boolean;
|
|
32
|
+
delivered?: boolean;
|
|
33
|
+
wakeSource?: string | null;
|
|
34
|
+
}
|
|
35
|
+
export declare class CronDbAccess {
|
|
36
|
+
private sqlite;
|
|
37
|
+
private db;
|
|
38
|
+
private initPromise;
|
|
39
|
+
ensureReady(): Promise<void>;
|
|
40
|
+
getSchedulerConfig(): Promise<SchedulerStoreConfig>;
|
|
41
|
+
getHeartbeatConfig(): Promise<HeartbeatStoreConfig>;
|
|
42
|
+
setHeartbeatConfig(patch?: Record<string, unknown>): Promise<HeartbeatStoreConfig>;
|
|
43
|
+
listCronSkills(): Promise<CronSkillStoreRecord[]>;
|
|
44
|
+
listCronJobs(): Promise<CronJobStoreRecord[]>;
|
|
45
|
+
getDueJobs(nowMs?: number): Promise<CronJobStoreRecord[]>;
|
|
46
|
+
updateCronJob(id: string, patch?: Record<string, unknown>): Promise<void>;
|
|
47
|
+
insertCronRun(runData: CronRunInsert): Promise<number | null>;
|
|
48
|
+
peekPendingEvents(sessionKey: string): Promise<PendingSystemEvent[]>;
|
|
49
|
+
consumePendingEvents(ids: number[]): Promise<void>;
|
|
50
|
+
enqueueSystemEvent(sessionKey: string, contextKey: string | null, text: string): Promise<void>;
|
|
51
|
+
getMaxMessageSequence(sessionKey: string): Promise<number>;
|
|
52
|
+
deleteMessagesAfter(sessionKey: string, sequence: number): Promise<void>;
|
|
53
|
+
private _init;
|
|
54
|
+
private _run;
|
|
55
|
+
private _queryOne;
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=cron-db-access.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cron-db-access.d.ts","sourceRoot":"","sources":["../../../src/agent/cron-db-access.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,eAAe,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAKtG,MAAM,WAAW,oBAAqB,SAAQ,eAAe;IAC3D,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,MAAM,WAAW,oBAAqB,SAAQ,eAAe;IAC3D,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,MAAM,WAAW,oBAAqB,SAAQ,eAAe;CAAG;AAEhE,MAAM,WAAW,kBAAmB,SAAQ,aAAa;IACvD,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,kBAAkB,CAAC,EAAE,MAAM,CAAA;CAC5B;AAED,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,MAAM,CAAA;IACV,UAAU,EAAE,MAAM,CAAA;IAClB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,EAAE,OAAO,CAAA;CAClB;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAA;IACb,SAAS,EAAE,MAAM,CAAA;IACjB,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACvB,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACtB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACrB,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC5B,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAC3B;AAED,qBAAa,YAAY;IACvB,OAAO,CAAC,MAAM,CAAgC;IAC9C,OAAO,CAAC,EAAE,CAAY;IACtB,OAAO,CAAC,WAAW,CAA6B;IAE1C,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;IAU5B,kBAAkB,IAAI,OAAO,CAAC,oBAAoB,CAAC;IAsBnD,kBAAkB,IAAI,OAAO,CAAC,oBAAoB,CAAC;IAsBnD,kBAAkB,CAAC,KAAK,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAsEtF,cAAc,IAAI,OAAO,CAAC,oBAAoB,EAAE,CAAC;IAgBjD,YAAY,IAAI,OAAO,CAAC,kBAAkB,EAAE,CAAC;IAM7C,UAAU,CAAC,KAAK,SAAa,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC;IAa7D,aAAa,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAkJ7E,aAAa,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAwB7D,iBAAiB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC;IAmBpE,oBAAoB,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAOlD,kBAAkB,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAU9F,qBAAqB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAM1D,mBAAmB,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;YAKhE,KAAK;YAwBL,IAAI;YAKJ,SAAS;CAKxB"}
|