@mobileai/react-native 0.5.5 → 0.5.7
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 +46 -14
- package/lib/module/components/AIAgent.js +55 -56
- package/lib/module/components/AIAgent.js.map +1 -1
- package/lib/module/core/AgentRuntime.js +18 -18
- package/lib/module/core/AgentRuntime.js.map +1 -1
- package/lib/module/core/FiberTreeWalker.js +6 -7
- package/lib/module/core/FiberTreeWalker.js.map +1 -1
- package/lib/module/core/ScreenDehydrator.js +1 -1
- package/lib/module/core/systemPrompt.js +2 -2
- package/lib/module/index.js +1 -1
- package/lib/typescript/src/components/AIAgent.d.ts +1 -3
- package/lib/typescript/src/components/AIAgent.d.ts.map +1 -1
- package/lib/typescript/src/core/AgentRuntime.d.ts +2 -2
- package/lib/typescript/src/core/FiberTreeWalker.d.ts +3 -4
- package/lib/typescript/src/core/FiberTreeWalker.d.ts.map +1 -1
- package/lib/typescript/src/core/ScreenDehydrator.d.ts +1 -1
- package/lib/typescript/src/core/systemPrompt.d.ts +2 -2
- package/lib/typescript/src/core/types.d.ts +9 -10
- package/lib/typescript/src/core/types.d.ts.map +1 -1
- package/lib/typescript/src/index.d.ts +1 -1
- package/package.json +4 -5
- package/src/components/AIAgent.tsx +60 -61
- package/src/core/AgentRuntime.ts +18 -18
- package/src/core/FiberTreeWalker.ts +8 -9
- package/src/core/ScreenDehydrator.ts +1 -1
- package/src/core/systemPrompt.ts +2 -2
- package/src/core/types.ts +15 -15
- package/src/index.ts +1 -1
- package/lib/typescript/fetch-models.d.mts +0 -2
- package/lib/typescript/fetch-models.d.mts.map +0 -1
- package/lib/typescript/list-all-models.d.mts +0 -2
- package/lib/typescript/list-all-models.d.mts.map +0 -1
- package/lib/typescript/list-models.d.mts +0 -2
- package/lib/typescript/list-models.d.mts.map +0 -1
package/README.md
CHANGED
|
@@ -18,18 +18,19 @@
|
|
|
18
18
|
[](https://github.com/mohamed2m2018/mobileai-react-native/blob/main/LICENSE)
|
|
19
19
|
[]()
|
|
20
20
|
|
|
21
|
-
Wrap your navigation with `<AIAgent>`. The AI
|
|
21
|
+
Wrap your navigation with `<AIAgent>`. The AI reads your app's rendered UI structure automatically — every button, every input, every label — and acts on it. **Structure-first, not screenshot-first** — fast, accurate, and lightweight. Screenshots are used optionally to understand visual content like images and colors.
|
|
22
22
|
|
|
23
23
|
## ✨ Features
|
|
24
24
|
|
|
25
25
|
### Text Mode
|
|
26
|
-
- 🤖 **Zero-config UI understanding** — No annotations needed. The AI
|
|
26
|
+
- 🤖 **Zero-config UI understanding** — No annotations needed. The AI reads your app's rendered UI structure automatically.
|
|
27
|
+
- 📐 **Structure-first** — Reads your UI structure directly. No OCR, no vision-only approach. Screenshots used optionally for visual content.
|
|
27
28
|
- 🎯 **Works with every component** — Buttons, switches, inputs, custom components — all work out of the box.
|
|
28
29
|
- 🖼️ **Sees images & videos** — The AI knows what media is on screen and can describe it.
|
|
29
30
|
- 🧭 **Auto-navigation** — Navigates between screens to complete multi-step tasks.
|
|
30
31
|
- 🧩 **Custom actions** — Expose any business logic (checkout, API calls) as AI-callable tools with `useAction`.
|
|
31
32
|
- 🌐 **MCP bridge** — Let external AI agents (OpenClaw, Claude Desktop) control your app remotely.
|
|
32
|
-
|
|
33
|
+
|
|
33
34
|
|
|
34
35
|
### 🎤 Voice Mode (Live Agent)
|
|
35
36
|
- 🗣️ **Real-time voice chat** — Bidirectional audio with Gemini Live API. Speak naturally, the agent responds with voice.
|
|
@@ -124,9 +125,10 @@ Then rebuild: `npx react-native run-android` (or `run-ios`)
|
|
|
124
125
|
|
|
125
126
|
## 🚀 Quick Start
|
|
126
127
|
|
|
128
|
+
### React Navigation
|
|
129
|
+
|
|
127
130
|
```tsx
|
|
128
131
|
import { AIAgent } from '@mobileai/react-native';
|
|
129
|
-
// or: import { AIAgent } from 'react-native-agentic-ai';
|
|
130
132
|
import { NavigationContainer, useNavigationContainerRef } from '@react-navigation/native';
|
|
131
133
|
|
|
132
134
|
export default function App() {
|
|
@@ -142,6 +144,27 @@ export default function App() {
|
|
|
142
144
|
}
|
|
143
145
|
```
|
|
144
146
|
|
|
147
|
+
### Expo Router
|
|
148
|
+
|
|
149
|
+
In your root layout (`app/_layout.tsx`):
|
|
150
|
+
|
|
151
|
+
```tsx
|
|
152
|
+
import { AIAgent } from '@mobileai/react-native';
|
|
153
|
+
import { Slot, useNavigationContainerRef } from 'expo-router';
|
|
154
|
+
|
|
155
|
+
export default function RootLayout() {
|
|
156
|
+
// expo-router re-exports useNavigationContainerRef from React Navigation
|
|
157
|
+
// so useNavigationContainerRef works — just don't wrap with <NavigationContainer>
|
|
158
|
+
const navRef = useNavigationContainerRef();
|
|
159
|
+
|
|
160
|
+
return (
|
|
161
|
+
<AIAgent apiKey={process.env.EXPO_PUBLIC_GEMINI_API_KEY!} navRef={navRef}>
|
|
162
|
+
<Slot />
|
|
163
|
+
</AIAgent>
|
|
164
|
+
);
|
|
165
|
+
}
|
|
166
|
+
```
|
|
167
|
+
|
|
145
168
|
A floating chat bar appears automatically. Ask the AI to navigate, tap buttons, fill forms — it reads your live UI and acts.
|
|
146
169
|
|
|
147
170
|
## 🔌 API Reference
|
|
@@ -150,16 +173,25 @@ A floating chat bar appears automatically. Ask the AI to navigate, tap buttons,
|
|
|
150
173
|
|
|
151
174
|
The root provider. Wrap your app once at the top level.
|
|
152
175
|
|
|
153
|
-
| Prop | Type | Default | Description |
|
|
154
|
-
|
|
155
|
-
| `apiKey` | `string` | — | **Required.** Gemini API key. |
|
|
156
|
-
| `model` | `string` | `'gemini-2.5-flash'` | Gemini model name
|
|
157
|
-
| `navRef` | `NavigationContainerRef` | — | Navigation ref for auto-navigation. |
|
|
158
|
-
| `maxSteps` | `number` | `10` | Max steps per task
|
|
159
|
-
| `showChatBar` | `boolean` | `true` | Show the floating chat bar. |
|
|
160
|
-
| `enableVoice` | `boolean` | `true` | Enable voice mode tab in the chat bar. |
|
|
161
|
-
| `
|
|
162
|
-
| `
|
|
176
|
+
| Prop | Type | Default | Mode | Description |
|
|
177
|
+
|------|------|---------|------|-------------|
|
|
178
|
+
| `apiKey` | `string` | — | Both | **Required.** Gemini API key. |
|
|
179
|
+
| `model` | `string` | `'gemini-2.5-flash'` | Text | Gemini model name. |
|
|
180
|
+
| `navRef` | `NavigationContainerRef` | — | Both | Navigation ref for auto-navigation. |
|
|
181
|
+
| `maxSteps` | `number` | `10` | Text | Max steps per task. |
|
|
182
|
+
| `showChatBar` | `boolean` | `true` | Both | Show the floating chat bar. |
|
|
183
|
+
| `enableVoice` | `boolean` | `true` | Voice | Enable voice mode tab in the chat bar. |
|
|
184
|
+
| `instructions` | `{ system?, getScreenInstructions? }` | — | Both | Custom system prompt and per-screen instructions. |
|
|
185
|
+
| `customTools` | `Record<string, ToolDefinition \| null>` | — | Both | Override or remove built-in tools. |
|
|
186
|
+
| `onResult` | `(result) => void` | — | Text | Called when the agent finishes a task. |
|
|
187
|
+
| `onBeforeStep` | `(stepCount) => void` | — | Text | Called before each agent step. |
|
|
188
|
+
| `onAfterStep` | `(history) => void` | — | Text | Called after each agent step. |
|
|
189
|
+
| `onTokenUsage` | `(usage) => void` | — | Text | Token usage callback per step. |
|
|
190
|
+
| `stepDelay` | `number` | — | Text | Delay between steps in ms. |
|
|
191
|
+
| `router` | `{ push, replace, back }` | — | Both | Expo Router instance. |
|
|
192
|
+
| `pathname` | `string` | — | Both | Current pathname (Expo Router). |
|
|
193
|
+
| `mcpServerUrl` | `string` | — | Text | WebSocket URL for MCP bridge. |
|
|
194
|
+
| `debug` | `boolean` | `false` | Both | Enable SDK debug logging. |
|
|
163
195
|
|
|
164
196
|
### `useAction(name, description, params, handler)`
|
|
165
197
|
|
|
@@ -35,7 +35,6 @@ export function AIAgent({
|
|
|
35
35
|
apiKey,
|
|
36
36
|
model = 'gemini-2.5-flash',
|
|
37
37
|
navRef,
|
|
38
|
-
language = 'en',
|
|
39
38
|
maxSteps = 10,
|
|
40
39
|
showChatBar = true,
|
|
41
40
|
children,
|
|
@@ -101,7 +100,7 @@ export function AIAgent({
|
|
|
101
100
|
const config = useMemo(() => ({
|
|
102
101
|
apiKey,
|
|
103
102
|
model,
|
|
104
|
-
language,
|
|
103
|
+
language: 'en',
|
|
105
104
|
maxSteps,
|
|
106
105
|
interactiveBlacklist,
|
|
107
106
|
interactiveWhitelist,
|
|
@@ -120,7 +119,7 @@ export function AIAgent({
|
|
|
120
119
|
pathname,
|
|
121
120
|
onStatusUpdate: setStatusText,
|
|
122
121
|
onTokenUsage,
|
|
123
|
-
//
|
|
122
|
+
// Block the agent loop until user responds
|
|
124
123
|
onAskUser: mode === 'voice' ? undefined : question => {
|
|
125
124
|
return new Promise(resolve => {
|
|
126
125
|
askUserResolverRef.current = resolve;
|
|
@@ -134,7 +133,7 @@ export function AIAgent({
|
|
|
134
133
|
setStatusText('');
|
|
135
134
|
});
|
|
136
135
|
}
|
|
137
|
-
}), [mode, apiKey, model,
|
|
136
|
+
}), [mode, apiKey, model, maxSteps, interactiveBlacklist, interactiveWhitelist, onBeforeStep, onAfterStep, onBeforeTask, onAfterTask, transformScreenContent, customTools, instructions, stepDelay, mcpServerUrl, router, pathname, onTokenUsage]);
|
|
138
137
|
const provider = useMemo(() => new GeminiProvider(apiKey, model), [apiKey, model]);
|
|
139
138
|
const runtime = useMemo(() => new AgentRuntime(provider, config, rootViewRef.current, navRef),
|
|
140
139
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
@@ -176,13 +175,13 @@ export function AIAgent({
|
|
|
176
175
|
logger.info('AIAgent', `Registering ${runtimeTools.length} tools with VoiceService: ${runtimeTools.map(t => t.name).join(', ')}`);
|
|
177
176
|
// Use voice-adapted system prompt — same core rules as text mode
|
|
178
177
|
// but without agent-loop directives that trigger autonomous actions
|
|
179
|
-
const voicePrompt = buildVoiceSystemPrompt(
|
|
178
|
+
const voicePrompt = buildVoiceSystemPrompt('en', instructions?.system);
|
|
180
179
|
logger.info('AIAgent', `📝 Voice system prompt (${voicePrompt.length} chars):\n${voicePrompt}`);
|
|
181
180
|
voiceServiceRef.current = new VoiceService({
|
|
182
181
|
apiKey,
|
|
183
182
|
systemPrompt: voicePrompt,
|
|
184
183
|
tools: runtimeTools,
|
|
185
|
-
language
|
|
184
|
+
language: 'en'
|
|
186
185
|
});
|
|
187
186
|
logger.info('AIAgent', `VoiceService created with ${runtimeTools.length} tools: ${runtimeTools.map(t => t.name).join(', ')}`);
|
|
188
187
|
}
|
|
@@ -410,7 +409,7 @@ export function AIAgent({
|
|
|
410
409
|
setIsVoiceConnected(false);
|
|
411
410
|
};
|
|
412
411
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
413
|
-
}, [mode, apiKey, runtime,
|
|
412
|
+
}, [mode, apiKey, runtime, instructions]);
|
|
414
413
|
|
|
415
414
|
// ─── Stop Voice Session (full cleanup) ─────────────────────
|
|
416
415
|
|
|
@@ -475,60 +474,60 @@ export function AIAgent({
|
|
|
475
474
|
|
|
476
475
|
// ─── Render ──────────────────────────────────────────────────
|
|
477
476
|
|
|
478
|
-
return /*#__PURE__*/
|
|
477
|
+
return /*#__PURE__*/_jsx(AgentContext.Provider, {
|
|
479
478
|
value: runtime,
|
|
480
|
-
children:
|
|
479
|
+
children: /*#__PURE__*/_jsxs(View, {
|
|
481
480
|
ref: rootViewRef,
|
|
482
481
|
style: styles.root,
|
|
483
482
|
collapsable: false,
|
|
484
|
-
children: children
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
}
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
}
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
483
|
+
children: [children, /*#__PURE__*/_jsx(AgentOverlay, {
|
|
484
|
+
visible: isThinking,
|
|
485
|
+
statusText: statusText
|
|
486
|
+
}), showChatBar && /*#__PURE__*/_jsx(AgentChatBar, {
|
|
487
|
+
onSend: handleSend,
|
|
488
|
+
isThinking: isThinking,
|
|
489
|
+
lastResult: lastResult,
|
|
490
|
+
language: 'en',
|
|
491
|
+
onDismiss: () => setLastResult(null),
|
|
492
|
+
availableModes: availableModes,
|
|
493
|
+
mode: mode,
|
|
494
|
+
onModeChange: newMode => {
|
|
495
|
+
logger.info('AIAgent', `Mode change: ${mode} → ${newMode}`);
|
|
496
|
+
setMode(newMode);
|
|
497
|
+
},
|
|
498
|
+
isMicActive: isMicActive,
|
|
499
|
+
isSpeakerMuted: isSpeakerMuted,
|
|
500
|
+
isAISpeaking: isAISpeaking,
|
|
501
|
+
onStopSession: stopVoiceSession,
|
|
502
|
+
isVoiceConnected: isVoiceConnected,
|
|
503
|
+
onMicToggle: active => {
|
|
504
|
+
if (active && !isVoiceConnected) {
|
|
505
|
+
logger.warn('AIAgent', 'Cannot toggle mic — VoiceService not connected yet');
|
|
506
|
+
return;
|
|
507
|
+
}
|
|
508
|
+
logger.info('AIAgent', `Mic toggle: ${active ? 'ON' : 'OFF'}`);
|
|
509
|
+
setIsMicActive(active);
|
|
510
|
+
if (active) {
|
|
511
|
+
logger.info('AIAgent', 'Starting AudioInput...');
|
|
512
|
+
audioInputRef.current?.start().then(ok => {
|
|
513
|
+
logger.info('AIAgent', `AudioInput start result: ${ok}`);
|
|
514
|
+
});
|
|
515
|
+
} else {
|
|
516
|
+
logger.info('AIAgent', 'Stopping AudioInput...');
|
|
517
|
+
audioInputRef.current?.stop();
|
|
518
|
+
}
|
|
519
|
+
},
|
|
520
|
+
onSpeakerToggle: muted => {
|
|
521
|
+
logger.info('AIAgent', `Speaker toggle: ${muted ? 'MUTED' : 'UNMUTED'}`);
|
|
522
|
+
setIsSpeakerMuted(muted);
|
|
523
|
+
if (muted) {
|
|
524
|
+
audioOutputRef.current?.mute();
|
|
525
|
+
} else {
|
|
526
|
+
audioOutputRef.current?.unmute();
|
|
527
|
+
}
|
|
529
528
|
}
|
|
530
|
-
}
|
|
531
|
-
})
|
|
529
|
+
})]
|
|
530
|
+
})
|
|
532
531
|
});
|
|
533
532
|
}
|
|
534
533
|
const styles = StyleSheet.create({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","useCallback","useEffect","useMemo","useRef","useState","View","StyleSheet","AgentRuntime","GeminiProvider","AgentContext","AgentChatBar","AgentOverlay","logger","buildVoiceSystemPrompt","MCPBridge","VoiceService","AudioInputService","AudioOutputService","jsx","_jsx","jsxs","_jsxs","console","log","AIAgent","apiKey","model","navRef","language","maxSteps","showChatBar","children","onResult","interactiveBlacklist","interactiveWhitelist","onBeforeStep","onAfterStep","onBeforeTask","onAfterTask","transformScreenContent","customTools","instructions","stepDelay","mcpServerUrl","router","pathname","enableVoice","onTokenUsage","debug","setEnabled","info","rootViewRef","isThinking","setIsThinking","statusText","setStatusText","lastResult","setLastResult","mode","setMode","isMicActive","setIsMicActive","isSpeakerMuted","setIsSpeakerMuted","isAISpeaking","setIsAISpeaking","isVoiceConnected","setIsVoiceConnected","voiceServiceRef","audioInputRef","audioOutputRef","toolLockRef","userHasSpokenRef","lastScreenContextRef","screenPollIntervalRef","availableModes","modes","push","join","askUserResolverRef","config","ask_user","onStatusUpdate","onAskUser","undefined","question","Promise","resolve","current","success","message","steps","provider","runtime","updateRefs","bridge","destroy","audioOutputInitPromise","runtimeTools","getTools","length","map","t","name","voicePrompt","system","systemPrompt","tools","onError","err","error","initialize","then","ok","onAudioChunk","chunk","isConnected","sendAudio","onPermissionDenied","warn","connect","onAudioResponse","audio","enqueue","onStatusChange","status","connected","start","intentionalDisconnect","stop","setTimeout","lastCallbacks","onTranscript","text","isFinal","role","onSetupComplete","initialContext","getScreenContext","passiveContext","sendScreenContext","onToolCall","toolCall","JSON","stringify","args","id","sendFunctionResponse","result","executeTool","updatedContext","enrichedResult","onTurnComplete","SCREEN_POLL_INTERVAL","MIN_DIFF_RATIO","setInterval","currentContext","lastLen","diff","Math","abs","diffRatio","toFixed","passiveUpdate","clearInterval","disconnect","stopVoiceSession","handleSend","trim","resolver","execute","Provider","value","ref","style","styles","root","collapsable","visible","onSend","onDismiss","onModeChange","newMode","onStopSession","onMicToggle","active","onSpeakerToggle","muted","mute","unmute","create","flex"],"sourceRoot":"../../../src","sources":["components/AIAgent.tsx"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["React","useCallback","useEffect","useMemo","useRef","useState","View","StyleSheet","AgentRuntime","GeminiProvider","AgentContext","AgentChatBar","AgentOverlay","logger","buildVoiceSystemPrompt","MCPBridge","VoiceService","AudioInputService","AudioOutputService","jsx","_jsx","jsxs","_jsxs","console","log","AIAgent","apiKey","model","navRef","maxSteps","showChatBar","children","onResult","interactiveBlacklist","interactiveWhitelist","onBeforeStep","onAfterStep","onBeforeTask","onAfterTask","transformScreenContent","customTools","instructions","stepDelay","mcpServerUrl","router","pathname","enableVoice","onTokenUsage","debug","setEnabled","info","rootViewRef","isThinking","setIsThinking","statusText","setStatusText","lastResult","setLastResult","mode","setMode","isMicActive","setIsMicActive","isSpeakerMuted","setIsSpeakerMuted","isAISpeaking","setIsAISpeaking","isVoiceConnected","setIsVoiceConnected","voiceServiceRef","audioInputRef","audioOutputRef","toolLockRef","userHasSpokenRef","lastScreenContextRef","screenPollIntervalRef","availableModes","modes","push","join","askUserResolverRef","config","language","ask_user","onStatusUpdate","onAskUser","undefined","question","Promise","resolve","current","success","message","steps","provider","runtime","updateRefs","bridge","destroy","audioOutputInitPromise","runtimeTools","getTools","length","map","t","name","voicePrompt","system","systemPrompt","tools","onError","err","error","initialize","then","ok","onAudioChunk","chunk","isConnected","sendAudio","onPermissionDenied","warn","connect","onAudioResponse","audio","enqueue","onStatusChange","status","connected","start","intentionalDisconnect","stop","setTimeout","lastCallbacks","onTranscript","text","isFinal","role","onSetupComplete","initialContext","getScreenContext","passiveContext","sendScreenContext","onToolCall","toolCall","JSON","stringify","args","id","sendFunctionResponse","result","executeTool","updatedContext","enrichedResult","onTurnComplete","SCREEN_POLL_INTERVAL","MIN_DIFF_RATIO","setInterval","currentContext","lastLen","diff","Math","abs","diffRatio","toFixed","passiveUpdate","clearInterval","disconnect","stopVoiceSession","handleSend","trim","resolver","execute","Provider","value","ref","style","styles","root","collapsable","visible","onSend","onDismiss","onModeChange","newMode","onStopSession","onMicToggle","active","onSpeakerToggle","muted","mute","unmute","create","flex"],"sourceRoot":"../../../src","sources":["components/AIAgent.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
|
-
* AgentRuntime — The main agent loop
|
|
4
|
+
* AgentRuntime — The main agent loop.
|
|
5
5
|
*
|
|
6
6
|
* Flow:
|
|
7
7
|
* 1. Walk Fiber tree → detect interactive elements
|
|
@@ -32,7 +32,7 @@ export class AgentRuntime {
|
|
|
32
32
|
this.navRef = navRef;
|
|
33
33
|
this.registerBuiltInTools();
|
|
34
34
|
|
|
35
|
-
// Apply customTools
|
|
35
|
+
// Apply customTools
|
|
36
36
|
if (config.customTools) {
|
|
37
37
|
for (const [name, tool] of Object.entries(config.customTools)) {
|
|
38
38
|
if (tool === null) {
|
|
@@ -246,7 +246,7 @@ export class AgentRuntime {
|
|
|
246
246
|
}
|
|
247
247
|
});
|
|
248
248
|
|
|
249
|
-
// ask_user — ask for clarification
|
|
249
|
+
// ask_user — ask for clarification
|
|
250
250
|
this.tools.set('ask_user', {
|
|
251
251
|
name: 'ask_user',
|
|
252
252
|
description: 'Ask the user a question and wait for their answer. Use this if you need more information or clarification.',
|
|
@@ -259,7 +259,7 @@ export class AgentRuntime {
|
|
|
259
259
|
},
|
|
260
260
|
execute: async args => {
|
|
261
261
|
if (this.config.onAskUser) {
|
|
262
|
-
//
|
|
262
|
+
// Block until user responds, then continue the loop
|
|
263
263
|
this.config.onStatusUpdate?.('Waiting for your answer...');
|
|
264
264
|
const answer = await this.config.onAskUser(args.question);
|
|
265
265
|
return `User answered: ${answer}`;
|
|
@@ -455,7 +455,7 @@ export class AgentRuntime {
|
|
|
455
455
|
/**
|
|
456
456
|
* Get current screen context as formatted text.
|
|
457
457
|
* Used by voice mode: sent once at connect + after each tool call.
|
|
458
|
-
*
|
|
458
|
+
* Tree goes in user prompt, not system instructions.
|
|
459
459
|
*/
|
|
460
460
|
getScreenContext() {
|
|
461
461
|
try {
|
|
@@ -533,7 +533,7 @@ ${screen.elementsText}
|
|
|
533
533
|
};
|
|
534
534
|
}
|
|
535
535
|
|
|
536
|
-
// ─── Instructions
|
|
536
|
+
// ─── Instructions ───────
|
|
537
537
|
|
|
538
538
|
getInstructions(screenName) {
|
|
539
539
|
const {
|
|
@@ -557,7 +557,7 @@ ${screen.elementsText}
|
|
|
557
557
|
return result ? `<instructions>\n${result}</instructions>\n\n` : '';
|
|
558
558
|
}
|
|
559
559
|
|
|
560
|
-
// ─── Observation System
|
|
560
|
+
// ─── Observation System ──
|
|
561
561
|
|
|
562
562
|
observations = [];
|
|
563
563
|
lastScreenName = '';
|
|
@@ -577,7 +577,7 @@ ${screen.elementsText}
|
|
|
577
577
|
}
|
|
578
578
|
}
|
|
579
579
|
|
|
580
|
-
// ─── User Prompt Assembly
|
|
580
|
+
// ─── User Prompt Assembly ──
|
|
581
581
|
|
|
582
582
|
assembleUserPrompt(step, maxSteps, contextualMessage, screenName, screenContent) {
|
|
583
583
|
let prompt = '';
|
|
@@ -585,7 +585,7 @@ ${screen.elementsText}
|
|
|
585
585
|
// 1. <instructions> (optional system/screen instructions)
|
|
586
586
|
prompt += this.getInstructions(screenName);
|
|
587
587
|
|
|
588
|
-
// 2. <agent_state> — user request + step info
|
|
588
|
+
// 2. <agent_state> — user request + step info
|
|
589
589
|
prompt += '<agent_state>\n';
|
|
590
590
|
prompt += '<user_request>\n';
|
|
591
591
|
prompt += `${contextualMessage}\n`;
|
|
@@ -595,7 +595,7 @@ ${screen.elementsText}
|
|
|
595
595
|
prompt += '</step_info>\n';
|
|
596
596
|
prompt += '</agent_state>\n\n';
|
|
597
597
|
|
|
598
|
-
// 3. <agent_history> — structured per-step history
|
|
598
|
+
// 3. <agent_history> — structured per-step history
|
|
599
599
|
prompt += '<agent_history>\n';
|
|
600
600
|
let stepIndex = 0;
|
|
601
601
|
for (const event of this.history) {
|
|
@@ -656,13 +656,13 @@ ${screen.elementsText}
|
|
|
656
656
|
}
|
|
657
657
|
logger.info('AgentRuntime', `Starting execution: "${contextualMessage}"`);
|
|
658
658
|
|
|
659
|
-
// Lifecycle: onBeforeTask
|
|
659
|
+
// Lifecycle: onBeforeTask
|
|
660
660
|
await this.config.onBeforeTask?.();
|
|
661
661
|
try {
|
|
662
662
|
for (let step = 0; step < maxSteps; step++) {
|
|
663
663
|
logger.info('AgentRuntime', `===== Step ${step + 1}/${maxSteps} =====`);
|
|
664
664
|
|
|
665
|
-
// Lifecycle: onBeforeStep
|
|
665
|
+
// Lifecycle: onBeforeStep
|
|
666
666
|
await this.config.onBeforeStep?.(step);
|
|
667
667
|
|
|
668
668
|
// 1. Walk Fiber tree with security config and dehydrate screen
|
|
@@ -672,16 +672,16 @@ ${screen.elementsText}
|
|
|
672
672
|
logger.info('AgentRuntime', `Screen: ${screen.screenName}`);
|
|
673
673
|
logger.debug('AgentRuntime', `Dehydrated:\n${screen.elementsText}`);
|
|
674
674
|
|
|
675
|
-
// 2. Apply transformScreenContent
|
|
675
|
+
// 2. Apply transformScreenContent
|
|
676
676
|
let screenContent = screen.elementsText;
|
|
677
677
|
if (this.config.transformScreenContent) {
|
|
678
678
|
screenContent = await this.config.transformScreenContent(screenContent);
|
|
679
679
|
}
|
|
680
680
|
|
|
681
|
-
// 3. Handle observations
|
|
681
|
+
// 3. Handle observations
|
|
682
682
|
this.handleObservations(step, maxSteps, screenName);
|
|
683
683
|
|
|
684
|
-
// 4. Assemble structured user prompt
|
|
684
|
+
// 4. Assemble structured user prompt
|
|
685
685
|
const contextMessage = this.assembleUserPrompt(step, maxSteps, contextualMessage, screenName, screenContent);
|
|
686
686
|
|
|
687
687
|
// 4.5. Capture screenshot for Gemini vision (optional)
|
|
@@ -689,7 +689,7 @@ ${screen.elementsText}
|
|
|
689
689
|
|
|
690
690
|
// 5. Send to AI provider
|
|
691
691
|
this.config.onStatusUpdate?.('Analyzing screen...');
|
|
692
|
-
const systemPrompt = buildSystemPrompt(
|
|
692
|
+
const systemPrompt = buildSystemPrompt('en');
|
|
693
693
|
const tools = this.buildToolsForProvider();
|
|
694
694
|
logger.info('AgentRuntime', `Sending to AI with ${tools.length} tools...`);
|
|
695
695
|
const response = await this.provider.generateContent(systemPrompt, contextMessage, tools, this.history, screenshot);
|
|
@@ -759,7 +759,7 @@ ${screen.elementsText}
|
|
|
759
759
|
};
|
|
760
760
|
this.history.push(agentStep);
|
|
761
761
|
|
|
762
|
-
// Lifecycle: onAfterStep
|
|
762
|
+
// Lifecycle: onAfterStep
|
|
763
763
|
await this.config.onAfterStep?.(this.history);
|
|
764
764
|
|
|
765
765
|
// Check if done
|
|
@@ -786,7 +786,7 @@ ${screen.elementsText}
|
|
|
786
786
|
return result;
|
|
787
787
|
}
|
|
788
788
|
|
|
789
|
-
// Step delay
|
|
789
|
+
// Step delay
|
|
790
790
|
await new Promise(resolve => setTimeout(resolve, stepDelay));
|
|
791
791
|
}
|
|
792
792
|
|