@minded-ai/mindedjs 2.0.11 → 2.0.12

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.
@@ -1 +1 @@
1
- {"version":3,"file":"executeBrowserTask.d.ts","sourceRoot":"","sources":["../../src/browserTask/executeBrowserTask.ts"],"names":[],"mappings":"AAIA,OAAO,EAEL,4BAA4B,EAC5B,yBAAyB,EAIzB,6BAA6B,EAC9B,MAAM,mCAAmC,CAAC;AAE3C,OAAO,EAAE,eAAe,EAAE,wBAAwB,EAAE,MAAM,SAAS,CAAC;AAGpE,eAAO,MAAM,oBAAoB,0CAAiD;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,eAAe,EAAE,eAAe,CAAA;CAAE,KAAG,OAAO,CAAC,4BAA4B,CAiC/L,CAAC;AAEF,eAAO,MAAM,qBAAqB,oCAA2C;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAE,KAAG,OAAO,CAAC,6BAA6B,CA2B/K,CAAC;AAEF,eAAO,MAAM,iBAAiB,YACnB,wBAAwB,KAChC,OAAO,CAAC,yBAAyB,CA+GnC,CAAC"}
1
+ {"version":3,"file":"executeBrowserTask.d.ts","sourceRoot":"","sources":["../../src/browserTask/executeBrowserTask.ts"],"names":[],"mappings":"AAIA,OAAO,EAEL,4BAA4B,EAC5B,yBAAyB,EAIzB,6BAA6B,EAC9B,MAAM,mCAAmC,CAAC;AAE3C,OAAO,EAAE,eAAe,EAAE,wBAAwB,EAAE,MAAM,SAAS,CAAC;AAGpE,eAAO,MAAM,oBAAoB,0CAAiD;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,eAAe,EAAE,eAAe,CAAA;CAAE,KAAG,OAAO,CAAC,4BAA4B,CAiC/L,CAAC;AAEF,eAAO,MAAM,qBAAqB,oCAA2C;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAE,KAAG,OAAO,CAAC,6BAA6B,CA2B/K,CAAC;AAEF,eAAO,MAAM,iBAAiB,YACnB,wBAAwB,KAChC,OAAO,CAAC,yBAAyB,CA2HnC,CAAC"}
@@ -65,10 +65,20 @@ const invokeBrowserTask = async (options) => {
65
65
  const { sessionId, cdpUrl, task, keepAlive, hooks, browserTaskMode, toolSchemas, outputSchema, } = options;
66
66
  if (browserTaskMode === types_1.BrowserTaskMode.LOCAL) {
67
67
  const pythonScriptPath = path_1.default.resolve(__dirname, 'executeBrowserTask.py');
68
- const outputSchemaArg = JSON.stringify(outputSchema || []);
69
- const args = ['run', pythonScriptPath, sessionId, cdpUrl, task, outputSchemaArg];
68
+ const args = ['run', pythonScriptPath];
70
69
  logger_1.logger.info({ message: 'Spawning Python process', args });
71
- const child = (0, node_child_process_1.spawn)('uv', args, { stdio: ['ignore', 'pipe', 'pipe'] });
70
+ const child = (0, node_child_process_1.spawn)('uv', args, { stdio: ['pipe', 'pipe', 'pipe'] });
71
+ // Build payload to send over stdin
72
+ const payload = {
73
+ sessionId,
74
+ cdpUrl,
75
+ task,
76
+ outputSchema,
77
+ otpSecret: process.env.OTP_SECRET,
78
+ };
79
+ // Write JSON payload to stdin
80
+ child.stdin.write(JSON.stringify(payload));
81
+ child.stdin.end();
72
82
  let stdoutBuffer = '';
73
83
  let stderrBuffer = '';
74
84
  child.stdout.on('data', (data) => {
@@ -1 +1 @@
1
- {"version":3,"file":"executeBrowserTask.js","sourceRoot":"","sources":["../../src/browserTask/executeBrowserTask.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"executeBrowserTask.js","sourceRoot":"","sources":["../../src/browserTask/executeBrowserTask.ts"],"names":[],"mappings":"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"}
@@ -2,9 +2,10 @@ import asyncio
2
2
  import json
3
3
  from typing import List, Optional, Dict, Any, TypedDict
4
4
  from pydantic import BaseModel, create_model, Field
5
- from browser_use import Agent, Controller
5
+ from browser_use import Agent, Controller, ActionResult
6
6
  from browser_use.browser import BrowserProfile, BrowserSession
7
7
  from browser_use.llm import ChatOpenAI
8
+ from playwright.async_api import Page
8
9
  import os
9
10
  import sys
10
11
  from dotenv import load_dotenv
@@ -43,12 +44,12 @@ def create_pydantic_model_from_schema(output_schema: Optional[List[Dict[str, Any
43
44
  return None
44
45
 
45
46
 
46
- async def main(session_id: str, cdp_url: str, task: str, output_schema_json: Optional[str] = None):
47
+ async def main(session_id: str, cdp_url: str, task: str, output_schema_json: Optional[str] = None, otp_secret: Optional[str] = None):
47
48
  llm = ChatOpenAI(
48
49
  model="gpt-4.1",
49
50
  api_key=os.getenv("OPENAI_API_KEY"),
50
51
  )
51
- folder_path = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'downloads')
52
+ folder_path = os.path.join(os.path.dirname(os.path.abspath(__file__)), f'downloads_{session_id}')
52
53
 
53
54
  # Create folder if it doesn't exist
54
55
  os.makedirs(folder_path, exist_ok=True)
@@ -69,11 +70,33 @@ async def main(session_id: str, cdp_url: str, task: str, output_schema_json: Opt
69
70
  output_schema = None
70
71
 
71
72
  output_model = create_pydantic_model_from_schema(output_schema)
73
+
74
+ # Build controller and register dynamic tools
75
+ controller = Controller(output_model=output_model) if output_model is not None else Controller()
76
+
77
+ # Dynamically add generate_otp action when OTP secret is provided
78
+
79
+ if otp_secret:
80
+ # Ensure pyotp is available when OTP is requested
81
+ try:
82
+ import pyotp # type: ignore
83
+ except Exception as e:
84
+ raise RuntimeError("pyotp is required when otpSecret is provided. Install it with 'uv add pyotp'.") from e
85
+
86
+ @controller.registry.action("Generate a 6-digit TOTP code. Do not call any other tool at the same time.")
87
+ async def generate_otp() -> ActionResult:
88
+ try:
89
+ code = pyotp.TOTP(otp_secret).now()
90
+ print(f"Generated OTP: {code}")
91
+ return ActionResult(extracted_content=code)
92
+ except Exception as e:
93
+ print(f"Failed to generate OTP: {e}")
94
+ return ActionResult(extracted_content=f"Failed to generate OTP: {e}")
72
95
 
73
96
  agent = Agent(
74
97
  task=task,
75
98
  llm=llm,
76
- controller=Controller(output_model=output_model) if output_model is not None else Controller(),
99
+ controller=controller,
77
100
  available_file_paths=available_files,
78
101
  browser_session=browser_session,
79
102
  )
@@ -102,10 +125,30 @@ async def main(session_id: str, cdp_url: str, task: str, output_schema_json: Opt
102
125
  print(final_result)
103
126
 
104
127
  if __name__ == '__main__':
105
- if len(sys.argv) < 4:
106
- raise SystemExit("Usage: uv run executeBrowserTask.py <session_id> <cdp_url> <task> [output_schema_json]")
107
- session_id = sys.argv[1]
108
- cdp_url = sys.argv[2]
109
- task = sys.argv[3]
110
- output_schema_json = sys.argv[4] if len(sys.argv) > 4 else None
111
- asyncio.run(main(session_id, cdp_url, task, output_schema_json))
128
+ # Prefer JSON payload via stdin; fallback to argv for backwards compatibility
129
+ payload_str = ''
130
+ try:
131
+ if not sys.stdin.isatty():
132
+ payload_str = sys.stdin.read().strip()
133
+ except Exception:
134
+ payload_str = ''
135
+
136
+ if payload_str:
137
+ try:
138
+ payload = json.loads(payload_str)
139
+ except Exception as e:
140
+ raise SystemExit(f"Failed to parse JSON payload from stdin: {e}")
141
+
142
+ session_id = payload.get('sessionId')
143
+ cdp_url = payload.get('cdpUrl')
144
+ task = payload.get('task')
145
+ output_schema = payload.get('outputSchema')
146
+ otp_secret = payload.get('otpSecret')
147
+
148
+ if not session_id or not cdp_url or not task:
149
+ raise SystemExit("Missing required fields in JSON payload: sessionId, cdpUrl, task")
150
+
151
+ output_schema_json = json.dumps(output_schema) if output_schema is not None else None
152
+ asyncio.run(main(session_id, cdp_url, task, output_schema_json, otp_secret))
153
+ else:
154
+ raise SystemExit("Usage: uv run executeBrowserTask.py; send a JSON payload via stdin")
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@minded-ai/mindedjs",
3
- "version": "2.0.11",
3
+ "version": "2.0.12",
4
4
  "description": "MindedJS is a TypeScript library for building agents.",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -2,9 +2,10 @@ import asyncio
2
2
  import json
3
3
  from typing import List, Optional, Dict, Any, TypedDict
4
4
  from pydantic import BaseModel, create_model, Field
5
- from browser_use import Agent, Controller
5
+ from browser_use import Agent, Controller, ActionResult
6
6
  from browser_use.browser import BrowserProfile, BrowserSession
7
7
  from browser_use.llm import ChatOpenAI
8
+ from playwright.async_api import Page
8
9
  import os
9
10
  import sys
10
11
  from dotenv import load_dotenv
@@ -43,12 +44,12 @@ def create_pydantic_model_from_schema(output_schema: Optional[List[Dict[str, Any
43
44
  return None
44
45
 
45
46
 
46
- async def main(session_id: str, cdp_url: str, task: str, output_schema_json: Optional[str] = None):
47
+ async def main(session_id: str, cdp_url: str, task: str, output_schema_json: Optional[str] = None, otp_secret: Optional[str] = None):
47
48
  llm = ChatOpenAI(
48
49
  model="gpt-4.1",
49
50
  api_key=os.getenv("OPENAI_API_KEY"),
50
51
  )
51
- folder_path = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'downloads')
52
+ folder_path = os.path.join(os.path.dirname(os.path.abspath(__file__)), f'downloads_{session_id}')
52
53
 
53
54
  # Create folder if it doesn't exist
54
55
  os.makedirs(folder_path, exist_ok=True)
@@ -69,11 +70,33 @@ async def main(session_id: str, cdp_url: str, task: str, output_schema_json: Opt
69
70
  output_schema = None
70
71
 
71
72
  output_model = create_pydantic_model_from_schema(output_schema)
73
+
74
+ # Build controller and register dynamic tools
75
+ controller = Controller(output_model=output_model) if output_model is not None else Controller()
76
+
77
+ # Dynamically add generate_otp action when OTP secret is provided
78
+
79
+ if otp_secret:
80
+ # Ensure pyotp is available when OTP is requested
81
+ try:
82
+ import pyotp # type: ignore
83
+ except Exception as e:
84
+ raise RuntimeError("pyotp is required when otpSecret is provided. Install it with 'uv add pyotp'.") from e
85
+
86
+ @controller.registry.action("Generate a 6-digit TOTP code. Do not call any other tool at the same time.")
87
+ async def generate_otp() -> ActionResult:
88
+ try:
89
+ code = pyotp.TOTP(otp_secret).now()
90
+ print(f"Generated OTP: {code}")
91
+ return ActionResult(extracted_content=code)
92
+ except Exception as e:
93
+ print(f"Failed to generate OTP: {e}")
94
+ return ActionResult(extracted_content=f"Failed to generate OTP: {e}")
72
95
 
73
96
  agent = Agent(
74
97
  task=task,
75
98
  llm=llm,
76
- controller=Controller(output_model=output_model) if output_model is not None else Controller(),
99
+ controller=controller,
77
100
  available_file_paths=available_files,
78
101
  browser_session=browser_session,
79
102
  )
@@ -102,10 +125,30 @@ async def main(session_id: str, cdp_url: str, task: str, output_schema_json: Opt
102
125
  print(final_result)
103
126
 
104
127
  if __name__ == '__main__':
105
- if len(sys.argv) < 4:
106
- raise SystemExit("Usage: uv run executeBrowserTask.py <session_id> <cdp_url> <task> [output_schema_json]")
107
- session_id = sys.argv[1]
108
- cdp_url = sys.argv[2]
109
- task = sys.argv[3]
110
- output_schema_json = sys.argv[4] if len(sys.argv) > 4 else None
111
- asyncio.run(main(session_id, cdp_url, task, output_schema_json))
128
+ # Prefer JSON payload via stdin; fallback to argv for backwards compatibility
129
+ payload_str = ''
130
+ try:
131
+ if not sys.stdin.isatty():
132
+ payload_str = sys.stdin.read().strip()
133
+ except Exception:
134
+ payload_str = ''
135
+
136
+ if payload_str:
137
+ try:
138
+ payload = json.loads(payload_str)
139
+ except Exception as e:
140
+ raise SystemExit(f"Failed to parse JSON payload from stdin: {e}")
141
+
142
+ session_id = payload.get('sessionId')
143
+ cdp_url = payload.get('cdpUrl')
144
+ task = payload.get('task')
145
+ output_schema = payload.get('outputSchema')
146
+ otp_secret = payload.get('otpSecret')
147
+
148
+ if not session_id or not cdp_url or not task:
149
+ raise SystemExit("Missing required fields in JSON payload: sessionId, cdpUrl, task")
150
+
151
+ output_schema_json = json.dumps(output_schema) if output_schema is not None else None
152
+ asyncio.run(main(session_id, cdp_url, task, output_schema_json, otp_secret))
153
+ else:
154
+ raise SystemExit("Usage: uv run executeBrowserTask.py; send a JSON payload via stdin")
@@ -97,13 +97,25 @@ export const invokeBrowserTask = async (
97
97
 
98
98
  if (browserTaskMode === BrowserTaskMode.LOCAL) {
99
99
  const pythonScriptPath = path.resolve(__dirname, 'executeBrowserTask.py');
100
- const outputSchemaArg = JSON.stringify(outputSchema || []);
101
100
 
102
- const args = ['run', pythonScriptPath, sessionId, cdpUrl, task, outputSchemaArg];
101
+ const args = ['run', pythonScriptPath];
103
102
 
104
103
  logger.info({ message: 'Spawning Python process', args });
105
104
 
106
- const child = spawn('uv', args, { stdio: ['ignore', 'pipe', 'pipe'] });
105
+ const child = spawn('uv', args, { stdio: ['pipe', 'pipe', 'pipe'] });
106
+
107
+ // Build payload to send over stdin
108
+ const payload = {
109
+ sessionId,
110
+ cdpUrl,
111
+ task,
112
+ outputSchema,
113
+ otpSecret: process.env.OTP_SECRET,
114
+ };
115
+
116
+ // Write JSON payload to stdin
117
+ child.stdin.write(JSON.stringify(payload));
118
+ child.stdin.end();
107
119
 
108
120
  let stdoutBuffer = '';
109
121
  let stderrBuffer = '';