friday-neural-os 0.1.2__py3-none-any.whl → 0.1.4__py3-none-any.whl

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.
friday/__init__.py CHANGED
@@ -1,3 +1,3 @@
1
- __version__ = "0.1.2"
1
+ __version__ = "0.1.4"
2
2
 
3
- from .agent import main
3
+ from .agent import run
Binary file
friday/agent.py CHANGED
@@ -331,18 +331,53 @@ IMPORTANT INSTRUCTIONS:
331
331
  # ==============================
332
332
  # RUN
333
333
  # ==============================
334
- def main():
335
- print("Friday online.")
336
- # existing logic here
334
+ # ==============================
335
+ # RUN
336
+ # ==============================
337
+ def run():
338
+ import os
339
+ import sys
340
+ from .config import validate_env
341
+
342
+ # 1. Check if .env exists, if not run setup
343
+ if not os.path.exists(".env"):
344
+ from .installer import setup as installer_setup
345
+ installer_setup()
346
+
347
+ # 2. Validate environment
348
+ try:
349
+ validate_env()
350
+ except RuntimeError as e:
351
+ print(f"⚠️ Configuration Error: {e}")
352
+ return
337
353
 
338
- if __name__ == "__main__":
354
+ # 3. Access Code Check
355
+ print("\n" + "="*30)
356
+ print(" FRIDAY NEURAL OS")
357
+ print("="*30 + "\n")
358
+
339
359
  while True:
340
- pwd = input("🔒 ENTER ACCESS CODE: ")
341
- if pwd.strip() == "JARVIS":
342
- print("✅ ACCESS GRANTED")
343
- break
344
- print("❌ ACCESS DENIED")
345
-
360
+ try:
361
+ pwd = input("🔒 ENTER ACCESS CODE: ").strip()
362
+ if pwd == "JARVIS":
363
+ print("✅ ACCESS GRANTED. Welcome back, Sir.")
364
+ break
365
+ print("❌ ACCESS DENIED.")
366
+ except KeyboardInterrupt:
367
+ print("\nShutting down...")
368
+ return
369
+
370
+ # 4. Start LiveKit Worker
371
+ # We need to ensure sys.argv has a command if called manually without args
372
+ if len(sys.argv) <= 1:
373
+ sys.argv.append("dev") # Default to dev mode for easier local running
374
+
346
375
  agents.cli.run_app(
347
376
  agents.WorkerOptions(entrypoint_fnc=entrypoint)
348
377
  )
378
+
379
+ def main():
380
+ run()
381
+
382
+ if __name__ == "__main__":
383
+ main()
friday/cli.py CHANGED
@@ -3,11 +3,12 @@ import sys
3
3
  def main():
4
4
  if len(sys.argv) > 1 and sys.argv[1] == "config":
5
5
  if len(sys.argv) > 2 and sys.argv[2] == "setup":
6
- from friday.installer import setup
6
+ from .installer import setup
7
7
  setup()
8
8
  return
9
9
 
10
- from friday.config import validate_env
11
- from friday.agent import main as agent_main
10
+ from .agent import run
11
+ run()
12
12
 
13
- agent_main()
13
+ if __name__ == "__main__":
14
+ main()
friday/config.py CHANGED
@@ -4,6 +4,7 @@ from dotenv import load_dotenv
4
4
  load_dotenv()
5
5
 
6
6
  REQUIRED = [
7
+ "GOOGLE_API_KEY",
7
8
  "LIVEKIT_API_KEY",
8
9
  "LIVEKIT_API_SECRET",
9
10
  "LIVEKIT_URL",
@@ -17,7 +18,7 @@ def validate_env():
17
18
  missing = [k for k in REQUIRED if not os.getenv(k)]
18
19
  if missing:
19
20
  raise RuntimeError(
20
- "Friday is not configured.\n"
21
+ "Friday is not fully configured.\n"
21
22
  "Run: friday config setup\n\nMissing:\n"
22
23
  + "\n".join(missing)
23
24
  )
friday/installer.py CHANGED
@@ -1,30 +1,48 @@
1
1
  import os
2
2
 
3
- ENV_VARS = [
4
- "LIVEKIT_API_KEY",
5
- "LIVEKIT_API_SECRET",
6
- "LIVEKIT_URL",
7
- "GMAIL_USER",
8
- "GMAIL_APP_PASSWORD",
9
- "MEM0_API_KEY",
10
- "GITHUB_TOKEN",
11
- ]
3
+ ENV_VARS = {
4
+ "GOOGLE_API_KEY": "Google AI (Gemini) API Key",
5
+ "LIVEKIT_URL": "LiveKit Cloud/Server URL",
6
+ "LIVEKIT_API_KEY": "LiveKit API Key",
7
+ "LIVEKIT_API_SECRET": "LiveKit API Secret",
8
+ "GMAIL_USER": "Gmail Address",
9
+ "GMAIL_APP_PASSWORD": "Gmail App Password",
10
+ "MEM0_API_KEY": "Mem0 AI API Key",
11
+ "GITHUB_TOKEN": "GitHub Token",
12
+ }
12
13
 
13
14
  def setup():
14
15
  env_path = os.path.join(os.getcwd(), ".env")
15
16
 
16
- if os.path.exists(env_path):
17
- print(" .env already exists")
18
- return
17
+ print("\n" + "═"*60)
18
+ print(" 🛠️ FRIDAY NEURAL OS - API CONFIGURATION")
19
+ print("═"*60)
20
+ print("Please provide the following credentials. Press Enter to skip/keep current.\n")
19
21
 
20
- print("🔐 Friday first-time setup\n")
22
+ # Load existing values if any
23
+ existing = {}
24
+ if os.path.exists(env_path):
25
+ try:
26
+ with open(env_path, "r") as f:
27
+ for line in f:
28
+ if "=" in line:
29
+ k, v = line.strip().split("=", 1)
30
+ existing[k] = v
31
+ except:
32
+ pass
21
33
 
22
34
  lines = []
23
- for var in ENV_VARS:
24
- value = input(f"{var}: ").strip()
25
- lines.append(f"{var}={value}")
35
+ for var, description in ENV_VARS.items():
36
+ current = existing.get(var, "")
37
+ display_val = f" [{current[:5]}...{current[-5:]}]" if current else ""
38
+
39
+ value = input(f" ➤ {description}{display_val}: ").strip()
40
+
41
+ final_value = value if value else current
42
+ lines.append(f"{var}={final_value}")
26
43
 
27
44
  with open(env_path, "w") as f:
28
45
  f.write("\n".join(lines))
29
46
 
30
- print("\n✅ Setup complete")
47
+ print("\n✅ Configuration updated successfully!")
48
+ print("═"*60 + "\n")
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: friday_neural_os
3
- Version: 0.1.2
3
+ Version: 0.1.4
4
4
  Summary: A real-time AI assistant with tools, memory, and voice
5
5
  Author: Shivansh Pancholi
6
6
  Author-email: shivamogh.123@gmail.com
@@ -23,8 +23,6 @@ Requires-Dist: duckduckgo-search
23
23
  Requires-Dist: langchain_community
24
24
  Requires-Dist: google-genai
25
25
  Requires-Dist: pyautogui
26
- Requires-Dist: scapy
27
- Requires-Dist: impacket
28
26
  Requires-Dist: truecallerpy
29
27
  Requires-Dist: phonenumbers
30
28
  Requires-Dist: opencage
@@ -33,6 +31,10 @@ Requires-Dist: pywebostv
33
31
  Requires-Dist: pywin32; platform_system == "Windows"
34
32
  Requires-Dist: win10toast; platform_system == "Windows"
35
33
  Requires-Dist: screen-brightness-control; platform_system == "Windows"
34
+ Provides-Extra: hacking
35
+ Requires-Dist: scapy; extra == "hacking"
36
+ Requires-Dist: impacket; extra == "hacking"
37
+ Dynamic: provides-extra
36
38
  Dynamic: requires-dist
37
39
 
38
40
  # 🌐 PROJECT FRIDAY: Strategic Intelligence & Autonomous Control System
@@ -1,9 +1,13 @@
1
- friday/__init__.py,sha256=y0KFcycUlkttWhrNL5CH8j4lFf0PlAfIICcwEbkftUo,50
2
- friday/agent.py,sha256=0k3z9ZDRIHueK6JCsCEP6X6nt4CvjzOtlKQxbOHgmpk,12982
3
- friday/cli.py,sha256=gGN1MyLfR806SRj0I-hIijaMAw2_xq6DNIHo9idFeQw,344
4
- friday/config.py,sha256=TVz932Wt7fYJ_RSIsxiA-Awm_ptguonHlswbWM3hPcs,506
5
- friday/installer.py,sha256=pkM-Ru-1VfAJe6R87BcF8EttHpfaL0X2kNzr8Abx8qo,633
1
+ friday/__init__.py,sha256=71lPpThlLShF2kIRs8J98nmaKsNaLTMPb7HUCAfXdT8,49
2
+ friday/agent.py,sha256=m8dX9mGq8CLHzjsVv9jKuXaEzgxXAuYOMKSHM5S6ci0,13920
3
+ friday/cli.py,sha256=ozSxyJLK5dvll6eJcCutcU7HfJ2-J39woMS3w8a0Pgo,306
4
+ friday/config.py,sha256=nowziZmMQD4uPzq0zeMKo3xwfcO5VRyJn-qfwHHiwO8,535
5
+ friday/installer.py,sha256=X4UevWkJiDduNH2dciet1CG9CdVXjV2oEzSVpwRUkVM,1542
6
6
  friday/prompts.py,sha256=yBNvTA3gDNApWmb9yRg_pZLCyUSfK5l052B-rHUEiVs,11652
7
+ friday/__pycache__/__init__.cpython-312.pyc,sha256=UP71FEg4WmEgu3BgY_mzv9lJMGa3AWfxH842Ks6MUJA,190
8
+ friday/__pycache__/agent.cpython-312.pyc,sha256=Lsaii0hfKcwmgHIXo7MoHz6wo1sI8pjPH2QW2MDz1wQ,17607
9
+ friday/__pycache__/config.cpython-312.pyc,sha256=5NHysfVjFAooXjej5SIr-K2ar56d38WLRbyzwz9DIgw,796
10
+ friday/__pycache__/prompts.cpython-312.pyc,sha256=Uks0kv2qh_l4sHIRVTYVxo0ur0hW4ROKqtQ9YsuRvLs,11786
7
11
  friday/tools/__init__.py,sha256=La1OuvWBrfqpRS8OdmCFpDns4foQURf8Q_J-l-LCHJA,194
8
12
  friday/tools/communication.py,sha256=XcuzP-yktltVA-LdD_RldPe-UkhRPumHhgByGkDyrto,4043
9
13
  friday/tools/core.py,sha256=x7degTvO3-6wiQtXTtOf-TL1AV6plXffxlFV3RFSr6Y,8859
@@ -19,7 +23,7 @@ friday/tools/__pycache__/core.cpython-312.pyc,sha256=laO00AdmrYZZ9ekLrYZrMGNfyh0
19
23
  friday/tools/__pycache__/files.cpython-312.pyc,sha256=u_7q6vdUhTIkyuIRZ9TdPbpg3Nr2qJcC4Ti2L4fP8d4,4822
20
24
  friday/tools/__pycache__/media.cpython-312.pyc,sha256=Y7M7EEzfHNZ4UQovgFCohAfZy0hzsxbV7z92ER-5Y78,5633
21
25
  friday/tools/__pycache__/network.cpython-312.pyc,sha256=G1syr6A058LNXEXCPkzffs6lob3pXXEBnbTA1X7loos,17533
22
- friday/tools/__pycache__/productivity.cpython-312.pyc,sha256=Pq7q_sKu1iPq1mu13n1g7_59vsUwiFb_8-AH4bxnGUU,4230
26
+ friday/tools/__pycache__/productivity.cpython-312.pyc,sha256=oaLxrUX5aQm_HA2q6QvU0mTt_aMKhdYAxaX-VqJBp4w,6061
23
27
  friday/tools/__pycache__/security.cpython-312.pyc,sha256=oo6tfasVy4Z6D1Bbli5ygjFNwxO31rsqJIwlFzOQlcg,5792
24
28
  friday/tools/__pycache__/ui.cpython-312.pyc,sha256=s3WNEhTWHvOsCmWNPeq4Jn5sEsI34dgWwuqoLwjifEM,14402
25
29
  tools/__init__.py,sha256=La1OuvWBrfqpRS8OdmCFpDns4foQURf8Q_J-l-LCHJA,194
@@ -31,8 +35,8 @@ tools/network.py,sha256=fnq2n46tJbSCo4ym-UmVAFirks9mE20XoXZC7Q6LxmA,9806
31
35
  tools/productivity.py,sha256=nvL0OwGEhRwotVbTZY_UY2MqO8-6586bVsJ6wiQWk6A,2858
32
36
  tools/security.py,sha256=Tv19VJD1GAW8Vw1GKnAkd3x54XvC3dD7sCpVaZYGYCw,3473
33
37
  tools/ui.py,sha256=G8eLIKgZeJqCfQd8dSlNfmAOwiNwHvwp07AC_2Jo_e8,8249
34
- friday_neural_os-0.1.2.dist-info/METADATA,sha256=ba9c2-wE-7CErvjv_0L5oZ-AxCWCOQGEv8emlRivSlg,3675
35
- friday_neural_os-0.1.2.dist-info/WHEEL,sha256=wUyA8OaulRlbfwMtmQsvNngGrxQHAvkKcvRmdizlJi0,92
36
- friday_neural_os-0.1.2.dist-info/entry_points.txt,sha256=-9Sy1QyS0eeVNDJHwqiUhzTW2TQqtSqTXh5_ACYrSZo,101
37
- friday_neural_os-0.1.2.dist-info/top_level.txt,sha256=EcQEgoHTwgsZ4Evmd6Sqk0pHivub7Fpn-RQ5JNVRDQQ,7
38
- friday_neural_os-0.1.2.dist-info/RECORD,,
38
+ friday_neural_os-0.1.4.dist-info/METADATA,sha256=va3fBXmGZYBq1oP9D4J-pPUa673odtjCuIoY0e-tpDA,3765
39
+ friday_neural_os-0.1.4.dist-info/WHEEL,sha256=wUyA8OaulRlbfwMtmQsvNngGrxQHAvkKcvRmdizlJi0,92
40
+ friday_neural_os-0.1.4.dist-info/entry_points.txt,sha256=-9Sy1QyS0eeVNDJHwqiUhzTW2TQqtSqTXh5_ACYrSZo,101
41
+ friday_neural_os-0.1.4.dist-info/top_level.txt,sha256=EcQEgoHTwgsZ4Evmd6Sqk0pHivub7Fpn-RQ5JNVRDQQ,7
42
+ friday_neural_os-0.1.4.dist-info/RECORD,,