@mobileai/react-native 0.5.4 → 0.5.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.
Files changed (34) hide show
  1. package/README.md +43 -14
  2. package/lib/module/components/AIAgent.js +55 -56
  3. package/lib/module/components/AIAgent.js.map +1 -1
  4. package/lib/module/core/AgentRuntime.js +18 -18
  5. package/lib/module/core/AgentRuntime.js.map +1 -1
  6. package/lib/module/core/FiberTreeWalker.js +6 -7
  7. package/lib/module/core/FiberTreeWalker.js.map +1 -1
  8. package/lib/module/core/ScreenDehydrator.js +1 -1
  9. package/lib/module/core/systemPrompt.js +2 -2
  10. package/lib/module/index.js +1 -1
  11. package/lib/typescript/src/components/AIAgent.d.ts +1 -3
  12. package/lib/typescript/src/components/AIAgent.d.ts.map +1 -1
  13. package/lib/typescript/src/core/AgentRuntime.d.ts +2 -2
  14. package/lib/typescript/src/core/FiberTreeWalker.d.ts +3 -4
  15. package/lib/typescript/src/core/FiberTreeWalker.d.ts.map +1 -1
  16. package/lib/typescript/src/core/ScreenDehydrator.d.ts +1 -1
  17. package/lib/typescript/src/core/systemPrompt.d.ts +2 -2
  18. package/lib/typescript/src/core/types.d.ts +9 -10
  19. package/lib/typescript/src/core/types.d.ts.map +1 -1
  20. package/lib/typescript/src/index.d.ts +1 -1
  21. package/package.json +4 -5
  22. package/src/components/AIAgent.tsx +60 -61
  23. package/src/core/AgentRuntime.ts +18 -18
  24. package/src/core/FiberTreeWalker.ts +8 -9
  25. package/src/core/ScreenDehydrator.ts +1 -1
  26. package/src/core/systemPrompt.ts +2 -2
  27. package/src/core/types.ts +15 -15
  28. package/src/index.ts +1 -1
  29. package/lib/typescript/fetch-models.d.mts +0 -2
  30. package/lib/typescript/fetch-models.d.mts.map +0 -1
  31. package/lib/typescript/list-all-models.d.mts +0 -2
  32. package/lib/typescript/list-all-models.d.mts.map +0 -1
  33. package/lib/typescript/list-models.d.mts +0 -2
  34. package/lib/typescript/list-models.d.mts.map +0 -1
package/README.md CHANGED
@@ -29,13 +29,11 @@ Wrap your navigation with `<AIAgent>`. The AI automatically understands your ent
29
29
  - 🧭 **Auto-navigation** — Navigates between screens to complete multi-step tasks.
30
30
  - 🧩 **Custom actions** — Expose any business logic (checkout, API calls) as AI-callable tools with `useAction`.
31
31
  - 🌐 **MCP bridge** — Let external AI agents (OpenClaw, Claude Desktop) control your app remotely.
32
- - 🌍 **Bilingual** — English and Arabic support built-in.
32
+
33
33
 
34
34
  ### 🎤 Voice Mode (Live Agent)
35
35
  - 🗣️ **Real-time voice chat** — Bidirectional audio with Gemini Live API. Speak naturally, the agent responds with voice.
36
36
  - 🔄 **Screen change detection** — The agent automatically detects when the screen changes (e.g., loading finishes) and updates its context — no polling tool needed.
37
- - 🛡️ **Tool-first protocol** — Tool calls are emitted before speech to prevent server crashes (Gemini Live API limitation).
38
- - 🔇 **Audio gating** — Mic is automatically paused during tool execution and resumed after, preventing race conditions.
39
37
  - 🚫 **Auto-navigation guard** — Code-level gate rejects tool calls before the user speaks, preventing the model from acting on screen context alone.
40
38
 
41
39
  ### Security & Production
@@ -126,9 +124,10 @@ Then rebuild: `npx react-native run-android` (or `run-ios`)
126
124
 
127
125
  ## 🚀 Quick Start
128
126
 
127
+ ### React Navigation
128
+
129
129
  ```tsx
130
130
  import { AIAgent } from '@mobileai/react-native';
131
- // or: import { AIAgent } from 'react-native-agentic-ai';
132
131
  import { NavigationContainer, useNavigationContainerRef } from '@react-navigation/native';
133
132
 
134
133
  export default function App() {
@@ -144,6 +143,27 @@ export default function App() {
144
143
  }
145
144
  ```
146
145
 
146
+ ### Expo Router
147
+
148
+ In your root layout (`app/_layout.tsx`):
149
+
150
+ ```tsx
151
+ import { AIAgent } from '@mobileai/react-native';
152
+ import { Slot, useNavigationContainerRef } from 'expo-router';
153
+
154
+ export default function RootLayout() {
155
+ // expo-router re-exports useNavigationContainerRef from React Navigation
156
+ // so useNavigationContainerRef works — just don't wrap with <NavigationContainer>
157
+ const navRef = useNavigationContainerRef();
158
+
159
+ return (
160
+ <AIAgent apiKey={process.env.EXPO_PUBLIC_GEMINI_API_KEY!} navRef={navRef}>
161
+ <Slot />
162
+ </AIAgent>
163
+ );
164
+ }
165
+ ```
166
+
147
167
  A floating chat bar appears automatically. Ask the AI to navigate, tap buttons, fill forms — it reads your live UI and acts.
148
168
 
149
169
  ## 🔌 API Reference
@@ -152,16 +172,25 @@ A floating chat bar appears automatically. Ask the AI to navigate, tap buttons,
152
172
 
153
173
  The root provider. Wrap your app once at the top level.
154
174
 
155
- | Prop | Type | Default | Description |
156
- |------|------|---------|-------------|
157
- | `apiKey` | `string` | — | **Required.** Gemini API key. |
158
- | `model` | `string` | `'gemini-2.5-flash'` | Gemini model name for text mode. |
159
- | `navRef` | `NavigationContainerRef` | — | Navigation ref for auto-navigation. |
160
- | `maxSteps` | `number` | `10` | Max steps per task (text mode). |
161
- | `showChatBar` | `boolean` | `true` | Show the floating chat bar. |
162
- | `enableVoice` | `boolean` | `true` | Enable voice mode tab in the chat bar. |
163
- | `language` | `'en' \| 'ar'` | `'en'` | Agent language (English/Arabic). |
164
- | `onResult` | `(result) => void` | — | Called when the agent finishes. |
175
+ | Prop | Type | Default | Mode | Description |
176
+ |------|------|---------|------|-------------|
177
+ | `apiKey` | `string` | — | Both | **Required.** Gemini API key. |
178
+ | `model` | `string` | `'gemini-2.5-flash'` | Text | Gemini model name. |
179
+ | `navRef` | `NavigationContainerRef` | — | Both | Navigation ref for auto-navigation. |
180
+ | `maxSteps` | `number` | `10` | Text | Max steps per task. |
181
+ | `showChatBar` | `boolean` | `true` | Both | Show the floating chat bar. |
182
+ | `enableVoice` | `boolean` | `true` | Voice | Enable voice mode tab in the chat bar. |
183
+ | `instructions` | `{ system?, getScreenInstructions? }` | | Both | Custom system prompt and per-screen instructions. |
184
+ | `customTools` | `Record<string, ToolDefinition \| null>` | — | Both | Override or remove built-in tools. |
185
+ | `onResult` | `(result) => void` | — | Text | Called when the agent finishes a task. |
186
+ | `onBeforeStep` | `(stepCount) => void` | — | Text | Called before each agent step. |
187
+ | `onAfterStep` | `(history) => void` | — | Text | Called after each agent step. |
188
+ | `onTokenUsage` | `(usage) => void` | — | Text | Token usage callback per step. |
189
+ | `stepDelay` | `number` | — | Text | Delay between steps in ms. |
190
+ | `router` | `{ push, replace, back }` | — | Both | Expo Router instance. |
191
+ | `pathname` | `string` | — | Both | Current pathname (Expo Router). |
192
+ | `mcpServerUrl` | `string` | — | Text | WebSocket URL for MCP bridge. |
193
+ | `debug` | `boolean` | `false` | Both | Enable SDK debug logging. |
165
194
 
166
195
  ### `useAction(name, description, params, handler)`
167
196
 
@@ -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
- // Page-agent pattern: block the agent loop until user responds
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, language, maxSteps, interactiveBlacklist, interactiveWhitelist, onBeforeStep, onAfterStep, onBeforeTask, onAfterTask, transformScreenContent, customTools, instructions, stepDelay, mcpServerUrl, router, pathname, onTokenUsage]);
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(language, instructions?.system);
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, language, instructions]);
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__*/_jsxs(AgentContext.Provider, {
477
+ return /*#__PURE__*/_jsx(AgentContext.Provider, {
479
478
  value: runtime,
480
- children: [/*#__PURE__*/_jsx(View, {
479
+ children: /*#__PURE__*/_jsxs(View, {
481
480
  ref: rootViewRef,
482
481
  style: styles.root,
483
482
  collapsable: false,
484
- children: children
485
- }), /*#__PURE__*/_jsx(AgentOverlay, {
486
- visible: isThinking,
487
- statusText: statusText
488
- }), showChatBar && /*#__PURE__*/_jsx(AgentChatBar, {
489
- onSend: handleSend,
490
- isThinking: isThinking,
491
- lastResult: lastResult,
492
- language: language,
493
- onDismiss: () => setLastResult(null),
494
- availableModes: availableModes,
495
- mode: mode,
496
- onModeChange: newMode => {
497
- logger.info('AIAgent', `Mode change: ${mode} → ${newMode}`);
498
- setMode(newMode);
499
- },
500
- isMicActive: isMicActive,
501
- isSpeakerMuted: isSpeakerMuted,
502
- isAISpeaking: isAISpeaking,
503
- onStopSession: stopVoiceSession,
504
- isVoiceConnected: isVoiceConnected,
505
- onMicToggle: active => {
506
- if (active && !isVoiceConnected) {
507
- logger.warn('AIAgent', 'Cannot toggle mic — VoiceService not connected yet');
508
- return;
509
- }
510
- logger.info('AIAgent', `Mic toggle: ${active ? 'ON' : 'OFF'}`);
511
- setIsMicActive(active);
512
- if (active) {
513
- logger.info('AIAgent', 'Starting AudioInput...');
514
- audioInputRef.current?.start().then(ok => {
515
- logger.info('AIAgent', `AudioInput start result: ${ok}`);
516
- });
517
- } else {
518
- logger.info('AIAgent', 'Stopping AudioInput...');
519
- audioInputRef.current?.stop();
520
- }
521
- },
522
- onSpeakerToggle: muted => {
523
- logger.info('AIAgent', `Speaker toggle: ${muted ? 'MUTED' : 'UNMUTED'}`);
524
- setIsSpeakerMuted(muted);
525
- if (muted) {
526
- audioOutputRef.current?.mute();
527
- } else {
528
- audioOutputRef.current?.unmute();
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, inspired by page-agent.js.
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 — mirrors page-agent: null = remove, otherwise override
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 (mirrors page-agent: blocks until user responds)
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
- // Page-agent pattern: block until user responds, then continue the loop
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
- * Follows page-agent pattern: tree in user prompt, not system instructions.
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 (mirrors page-agent #getInstructions) ───────
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 (mirrors PageAgentCore.#handleObservations) ──
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 (mirrors PageAgentCore.#assembleUserPrompt) ──
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 (mirrors page-agent)
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 (mirrors page-agent)
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 (mirrors page-agent)
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 (mirrors page-agent)
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 (mirrors page-agent transformPageContent)
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 (mirrors page-agent #handleObservations)
681
+ // 3. Handle observations
682
682
  this.handleObservations(step, maxSteps, screenName);
683
683
 
684
- // 4. Assemble structured user prompt (mirrors page-agent #assembleUserPrompt)
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(this.config.language || 'en');
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 (mirrors page-agent)
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 (mirrors page-agent stepDelay)
789
+ // Step delay
790
790
  await new Promise(resolve => setTimeout(resolve, stepDelay));
791
791
  }
792
792