jarviscore-framework 0.1.0__tar.gz

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 (63) hide show
  1. jarviscore_framework-0.1.0/.env.example +146 -0
  2. jarviscore_framework-0.1.0/LICENSE +21 -0
  3. jarviscore_framework-0.1.0/MANIFEST.in +30 -0
  4. jarviscore_framework-0.1.0/PKG-INFO +136 -0
  5. jarviscore_framework-0.1.0/README.md +92 -0
  6. jarviscore_framework-0.1.0/TESTING_GUIDE.md +420 -0
  7. jarviscore_framework-0.1.0/examples/calculator_agent_example.py +77 -0
  8. jarviscore_framework-0.1.0/examples/multi_agent_workflow.py +132 -0
  9. jarviscore_framework-0.1.0/examples/research_agent_example.py +76 -0
  10. jarviscore_framework-0.1.0/jarviscore/__init__.py +54 -0
  11. jarviscore_framework-0.1.0/jarviscore/cli/__init__.py +7 -0
  12. jarviscore_framework-0.1.0/jarviscore/cli/__main__.py +33 -0
  13. jarviscore_framework-0.1.0/jarviscore/cli/check.py +404 -0
  14. jarviscore_framework-0.1.0/jarviscore/cli/smoketest.py +371 -0
  15. jarviscore_framework-0.1.0/jarviscore/config/__init__.py +7 -0
  16. jarviscore_framework-0.1.0/jarviscore/config/settings.py +128 -0
  17. jarviscore_framework-0.1.0/jarviscore/core/__init__.py +7 -0
  18. jarviscore_framework-0.1.0/jarviscore/core/agent.py +163 -0
  19. jarviscore_framework-0.1.0/jarviscore/core/mesh.py +463 -0
  20. jarviscore_framework-0.1.0/jarviscore/core/profile.py +64 -0
  21. jarviscore_framework-0.1.0/jarviscore/docs/API_REFERENCE.md +932 -0
  22. jarviscore_framework-0.1.0/jarviscore/docs/CONFIGURATION.md +753 -0
  23. jarviscore_framework-0.1.0/jarviscore/docs/GETTING_STARTED.md +600 -0
  24. jarviscore_framework-0.1.0/jarviscore/docs/TROUBLESHOOTING.md +424 -0
  25. jarviscore_framework-0.1.0/jarviscore/docs/USER_GUIDE.md +983 -0
  26. jarviscore_framework-0.1.0/jarviscore/execution/__init__.py +94 -0
  27. jarviscore_framework-0.1.0/jarviscore/execution/code_registry.py +298 -0
  28. jarviscore_framework-0.1.0/jarviscore/execution/generator.py +268 -0
  29. jarviscore_framework-0.1.0/jarviscore/execution/llm.py +430 -0
  30. jarviscore_framework-0.1.0/jarviscore/execution/repair.py +283 -0
  31. jarviscore_framework-0.1.0/jarviscore/execution/result_handler.py +332 -0
  32. jarviscore_framework-0.1.0/jarviscore/execution/sandbox.py +555 -0
  33. jarviscore_framework-0.1.0/jarviscore/execution/search.py +281 -0
  34. jarviscore_framework-0.1.0/jarviscore/orchestration/__init__.py +18 -0
  35. jarviscore_framework-0.1.0/jarviscore/orchestration/claimer.py +101 -0
  36. jarviscore_framework-0.1.0/jarviscore/orchestration/dependency.py +143 -0
  37. jarviscore_framework-0.1.0/jarviscore/orchestration/engine.py +292 -0
  38. jarviscore_framework-0.1.0/jarviscore/orchestration/status.py +96 -0
  39. jarviscore_framework-0.1.0/jarviscore/p2p/__init__.py +23 -0
  40. jarviscore_framework-0.1.0/jarviscore/p2p/broadcaster.py +353 -0
  41. jarviscore_framework-0.1.0/jarviscore/p2p/coordinator.py +364 -0
  42. jarviscore_framework-0.1.0/jarviscore/p2p/keepalive.py +361 -0
  43. jarviscore_framework-0.1.0/jarviscore/p2p/swim_manager.py +290 -0
  44. jarviscore_framework-0.1.0/jarviscore/profiles/__init__.py +6 -0
  45. jarviscore_framework-0.1.0/jarviscore/profiles/autoagent.py +264 -0
  46. jarviscore_framework-0.1.0/jarviscore/profiles/customagent.py +137 -0
  47. jarviscore_framework-0.1.0/jarviscore_framework.egg-info/PKG-INFO +136 -0
  48. jarviscore_framework-0.1.0/jarviscore_framework.egg-info/SOURCES.txt +61 -0
  49. jarviscore_framework-0.1.0/jarviscore_framework.egg-info/dependency_links.txt +1 -0
  50. jarviscore_framework-0.1.0/jarviscore_framework.egg-info/requires.txt +22 -0
  51. jarviscore_framework-0.1.0/jarviscore_framework.egg-info/top_level.txt +5 -0
  52. jarviscore_framework-0.1.0/pyproject.toml +99 -0
  53. jarviscore_framework-0.1.0/setup.cfg +4 -0
  54. jarviscore_framework-0.1.0/tests/conftest.py +44 -0
  55. jarviscore_framework-0.1.0/tests/test_agent.py +165 -0
  56. jarviscore_framework-0.1.0/tests/test_autoagent.py +140 -0
  57. jarviscore_framework-0.1.0/tests/test_autoagent_day4.py +186 -0
  58. jarviscore_framework-0.1.0/tests/test_customagent.py +248 -0
  59. jarviscore_framework-0.1.0/tests/test_integration.py +293 -0
  60. jarviscore_framework-0.1.0/tests/test_llm_fallback.py +185 -0
  61. jarviscore_framework-0.1.0/tests/test_mesh.py +356 -0
  62. jarviscore_framework-0.1.0/tests/test_p2p_integration.py +375 -0
  63. jarviscore_framework-0.1.0/tests/test_remote_sandbox.py +116 -0
@@ -0,0 +1,146 @@
1
+ # =============================================================================
2
+ # JARVISCORE FRAMEWORK CONFIGURATION
3
+ # =============================================================================
4
+ # Copy this file to .env and fill in your values
5
+ # All settings are optional - framework provides sensible defaults
6
+ # Standard environment variable names (no JARVISCORE_ prefix)
7
+
8
+ # =============================================================================
9
+ # LLM CONFIGURATION (Zero-Config with Automatic Fallback)
10
+ # =============================================================================
11
+ # Framework tries providers in order: Claude → vLLM → Azure → Gemini
12
+ # At least ONE provider must be configured for AutoAgent to work
13
+
14
+ # --- Anthropic Claude ---
15
+ # Standard: CLAUDE_API_KEY or ANTHROPIC_API_KEY
16
+ # CLAUDE_API_KEY=your-anthropic-api-key
17
+ # CLAUDE_ENDPOINT=https://api.anthropic.com # Optional: custom endpoint
18
+ # CLAUDE_MODEL=claude-sonnet-4
19
+
20
+ # --- vLLM (Local/Self-Hosted) ---
21
+ # Recommended for development and cost-effective production
22
+ # LLM_ENDPOINT=http://localhost:8000
23
+ # LLM_MODEL=Qwen/Qwen2.5-Coder-32B-Instruct
24
+
25
+ # --- Azure OpenAI ---
26
+ # Standard: AZURE_API_KEY or AZURE_OPENAI_KEY
27
+ # AZURE_API_KEY=your-azure-openai-key
28
+ # AZURE_ENDPOINT=https://your-resource.openai.azure.com
29
+ # AZURE_DEPLOYMENT=gpt-4o
30
+ # AZURE_API_VERSION=2024-02-15-preview
31
+
32
+ # --- Google Gemini ---
33
+ # GEMINI_API_KEY=your-gemini-api-key
34
+ # GEMINI_MODEL=gemini-1.5-flash
35
+ # GEMINI_TEMPERATURE=0.1
36
+ # GEMINI_TIMEOUT=30.0
37
+
38
+ # Common LLM Settings
39
+ # LLM_TIMEOUT=120.0
40
+ # LLM_TEMPERATURE=0.7
41
+
42
+ # =============================================================================
43
+ # EXECUTION SETTINGS
44
+ # =============================================================================
45
+ # Sandbox execution and code generation limits
46
+
47
+ # Maximum execution time for generated code (seconds)
48
+ EXECUTION_TIMEOUT=300
49
+
50
+ # Maximum number of autonomous repair attempts
51
+ MAX_REPAIR_ATTEMPTS=3
52
+
53
+ # Maximum retries for failed operations
54
+ MAX_RETRIES=3
55
+
56
+ # =============================================================================
57
+ # SANDBOX CONFIGURATION (Phase 2)
58
+ # =============================================================================
59
+ # Sandbox execution mode: "local" (in-process) or "remote" (service)
60
+ # Default: local (for development)
61
+ # Production: remote (uses JarvisCore's Azure Container Apps sandbox)
62
+ SANDBOX_MODE=local
63
+
64
+ # Remote sandbox service URL (provided by JarvisCore)
65
+ # Azure Container Apps sandbox service - no setup required!
66
+ # Uncomment and set SANDBOX_MODE=remote to use it
67
+ # SANDBOX_SERVICE_URL=https://browser-task-executor.bravesea-3f5f7e75.eastus.azurecontainerapps.io
68
+
69
+ # =============================================================================
70
+ # STORAGE CONFIGURATION (Phase 1)
71
+ # =============================================================================
72
+ # Directory for result storage and code registry
73
+ LOG_DIRECTORY=./logs
74
+
75
+ # =============================================================================
76
+ # P2P CONFIGURATION (For Distributed Mode)
77
+ # =============================================================================
78
+ # Required only if using mesh in distributed mode
79
+ # Autonomous mode works without P2P
80
+
81
+ # Enable P2P mesh networking
82
+ P2P_ENABLED=true
83
+
84
+ # Node identification
85
+ NODE_NAME=jarviscore-node-1
86
+
87
+ # Bind address and port for P2P communication
88
+ BIND_HOST=127.0.0.1
89
+ BIND_PORT=7946
90
+
91
+ # Seed nodes to join existing mesh (comma-separated)
92
+ # Example: 192.168.1.100:7946,192.168.1.101:7946
93
+ # SEED_NODES=
94
+
95
+ # ZeroMQ port offset (P2P messaging)
96
+ ZMQ_PORT_OFFSET=1000
97
+
98
+ # Transport type: udp, tcp, or hybrid
99
+ TRANSPORT_TYPE=hybrid
100
+
101
+ # =============================================================================
102
+ # KEEPALIVE SETTINGS (P2P Health Monitoring)
103
+ # =============================================================================
104
+
105
+ # Enable smart keepalive (suppresses when active)
106
+ KEEPALIVE_ENABLED=true
107
+
108
+ # Keepalive interval (seconds)
109
+ KEEPALIVE_INTERVAL=90
110
+
111
+ # Keepalive timeout (seconds)
112
+ KEEPALIVE_TIMEOUT=10
113
+
114
+ # Activity suppression window (seconds)
115
+ # If agent is actively working, suppress keepalive for this duration
116
+ ACTIVITY_SUPPRESS_WINDOW=60
117
+
118
+ # =============================================================================
119
+ # LOGGING
120
+ # =============================================================================
121
+ # Log level: DEBUG, INFO, WARNING, ERROR, CRITICAL
122
+ LOG_LEVEL=INFO
123
+
124
+ # =============================================================================
125
+ # EXAMPLES
126
+ # =============================================================================
127
+
128
+ # Example 1: Local development with vLLM
129
+ # LLM_ENDPOINT=http://localhost:8000
130
+ # LLM_MODEL=Qwen/Qwen2.5-Coder-32B-Instruct
131
+ # P2P_ENABLED=false
132
+
133
+ # Example 2: Production with Azure OpenAI + P2P mesh
134
+ # AZURE_API_KEY=sk-...
135
+ # AZURE_ENDPOINT=https://my-resource.openai.azure.com
136
+ # AZURE_DEPLOYMENT=gpt-4o
137
+ # P2P_ENABLED=true
138
+ # BIND_HOST=0.0.0.0
139
+ # BIND_PORT=7946
140
+ # SEED_NODES=192.168.1.100:7946
141
+
142
+ # Example 3: Zero-config (use defaults)
143
+ # Just don't set any variables and framework will:
144
+ # - Try to detect available LLM providers
145
+ # - Use sensible defaults for all settings
146
+ # - Work in autonomous mode (no P2P)
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 JarvisCore Contributors
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,30 @@
1
+ # Include documentation
2
+ include README.md
3
+ include LICENSE
4
+ include .env.example
5
+ include TESTING_GUIDE.md
6
+
7
+ # Include all markdown docs in package
8
+ recursive-include jarviscore/docs *.md
9
+
10
+ # Include examples
11
+ recursive-include examples *.py
12
+
13
+ # Include tests (optional, for users who want to run tests)
14
+ recursive-include tests *.py
15
+
16
+ # Exclude compiled Python files
17
+ global-exclude *.pyc
18
+ global-exclude __pycache__
19
+ global-exclude *.so
20
+ global-exclude .DS_Store
21
+
22
+ # Exclude development files
23
+ exclude .gitignore
24
+ exclude pytest.ini
25
+ exclude benchmark_performance.py
26
+ exclude benchmark_results.txt
27
+ prune .venv
28
+ prune .git
29
+ prune logs
30
+ prune jarviscore.egg-info
@@ -0,0 +1,136 @@
1
+ Metadata-Version: 2.4
2
+ Name: jarviscore-framework
3
+ Version: 0.1.0
4
+ Summary: P2P distributed agent framework with LLM code generation and event-sourced state management
5
+ Author-email: Ruth Mutua <mutuandinda82@gmail.com>, Muyukani Kizito <muyukani@prescottdata.io>
6
+ Maintainer-email: Prescott Data <info@prescottdata.io>
7
+ License: MIT
8
+ Project-URL: Homepage, https://github.com/yourusername/jarviscore
9
+ Project-URL: Documentation, https://jarviscore.readthedocs.io
10
+ Project-URL: Repository, https://github.com/yourusername/jarviscore
11
+ Project-URL: Issues, https://github.com/yourusername/jarviscore/issues
12
+ Keywords: agents,p2p,llm,distributed,workflow,orchestration
13
+ Classifier: Development Status :: 3 - Alpha
14
+ Classifier: Intended Audience :: Developers
15
+ Classifier: License :: OSI Approved :: MIT License
16
+ Classifier: Programming Language :: Python :: 3
17
+ Classifier: Programming Language :: Python :: 3.10
18
+ Classifier: Programming Language :: Python :: 3.11
19
+ Classifier: Programming Language :: Python :: 3.12
20
+ Requires-Python: >=3.10
21
+ Description-Content-Type: text/markdown
22
+ License-File: LICENSE
23
+ Requires-Dist: pydantic>=2.0.0
24
+ Requires-Dist: pydantic-settings>=2.0.0
25
+ Requires-Dist: swim-p2p
26
+ Requires-Dist: pyzmq
27
+ Requires-Dist: python-dotenv>=1.0.0
28
+ Requires-Dist: aiohttp>=3.9.0
29
+ Requires-Dist: beautifulsoup4>=4.12.0
30
+ Requires-Dist: anthropic>=0.18.0
31
+ Requires-Dist: openai>=1.0.0
32
+ Requires-Dist: google-generativeai>=0.3.0
33
+ Requires-Dist: httpx>=0.25.0
34
+ Provides-Extra: dev
35
+ Requires-Dist: pytest>=7.4.0; extra == "dev"
36
+ Requires-Dist: pytest-asyncio>=0.21.0; extra == "dev"
37
+ Requires-Dist: pytest-cov>=4.1.0; extra == "dev"
38
+ Requires-Dist: black>=23.0.0; extra == "dev"
39
+ Requires-Dist: mypy>=1.5.0; extra == "dev"
40
+ Requires-Dist: ruff>=0.1.0; extra == "dev"
41
+ Provides-Extra: all
42
+ Requires-Dist: jarviscore[dev]; extra == "all"
43
+ Dynamic: license-file
44
+
45
+ # JarvisCore Framework
46
+
47
+ **P2P distributed agent framework with LLM code generation and production-grade state management**
48
+
49
+ ## Features
50
+
51
+ - ✅ **Simple Agent Definition** - Write just 3 attributes, framework handles everything
52
+ - ✅ **P2P Mesh Architecture** - Automatic agent discovery and task routing via SWIM protocol
53
+ - ✅ **Event-Sourced State** - Complete audit trail with crash recovery
54
+ - ✅ **Autonomous Execution** - LLM code generation with automatic repair
55
+
56
+ ## Installation
57
+
58
+ ```bash
59
+ pip install jarviscore
60
+ ```
61
+
62
+ ## Setup & Validation
63
+
64
+ ### 1. Configure LLM Provider
65
+
66
+ Copy the example config and add your API key:
67
+
68
+ ```bash
69
+ cp .env.example .env
70
+ # Edit .env and add one of: CLAUDE_API_KEY, AZURE_API_KEY, GEMINI_API_KEY, or LLM_ENDPOINT
71
+ ```
72
+
73
+ ### 2. Validate Installation
74
+
75
+ ```bash
76
+ # Check setup
77
+ python -m jarviscore.cli.check
78
+
79
+ # Test LLM connectivity
80
+ python -m jarviscore.cli.check --validate-llm
81
+
82
+ # Run smoke test (end-to-end validation)
83
+ python -m jarviscore.cli.smoketest
84
+ ```
85
+
86
+ ✅ **All checks pass?** You're ready to build agents!
87
+
88
+ ## Quick Start
89
+
90
+ ```python
91
+ from jarviscore import Mesh
92
+ from jarviscore.profiles import PromptDevAgent
93
+
94
+ # Define agent (3 lines)
95
+ class ScraperAgent(PromptDevAgent):
96
+ role = "scraper"
97
+ capabilities = ["web_scraping"]
98
+ system_prompt = "You are an expert web scraper..."
99
+
100
+ # Create mesh and run workflow
101
+ mesh = Mesh(mode="autonomous")
102
+ mesh.add(ScraperAgent)
103
+ await mesh.start()
104
+
105
+ results = await mesh.workflow(
106
+ workflow_id="wf-123",
107
+ steps=[
108
+ {"id": "scrape", "task": "Scrape example.com", "role": "scraper"}
109
+ ]
110
+ )
111
+ ```
112
+
113
+ ## Architecture
114
+
115
+ JarvisCore is built on three layers:
116
+
117
+ 1. **Execution Layer (20%)** - Profile-specific execution (Prompt-Dev, MCP)
118
+ 2. **Orchestration Layer (60%)** - Workflow engine, dependencies, state management
119
+ 3. **P2P Layer (20%)** - Agent discovery, task routing, mesh coordination
120
+
121
+ ## Documentation
122
+
123
+ - [User Guide](jarviscore/docs/USER_GUIDE.md) - Complete guide for AutoAgent users
124
+ - [API Reference](jarviscore/docs/API_REFERENCE.md) - Detailed API documentation
125
+ - [Configuration Guide](jarviscore/docs/CONFIGURATION.md) - Settings and environment variables
126
+ - [Troubleshooting](jarviscore/docs/TROUBLESHOOTING.md) - Common issues and solutions
127
+ - [Examples](examples/) - Working code examples
128
+
129
+ ## Development Status
130
+
131
+ **Version:** 0.1.0 (Alpha)
132
+ **Day 1:** Core framework foundation ✅
133
+
134
+ ## License
135
+
136
+ MIT License - see LICENSE file for details
@@ -0,0 +1,92 @@
1
+ # JarvisCore Framework
2
+
3
+ **P2P distributed agent framework with LLM code generation and production-grade state management**
4
+
5
+ ## Features
6
+
7
+ - ✅ **Simple Agent Definition** - Write just 3 attributes, framework handles everything
8
+ - ✅ **P2P Mesh Architecture** - Automatic agent discovery and task routing via SWIM protocol
9
+ - ✅ **Event-Sourced State** - Complete audit trail with crash recovery
10
+ - ✅ **Autonomous Execution** - LLM code generation with automatic repair
11
+
12
+ ## Installation
13
+
14
+ ```bash
15
+ pip install jarviscore
16
+ ```
17
+
18
+ ## Setup & Validation
19
+
20
+ ### 1. Configure LLM Provider
21
+
22
+ Copy the example config and add your API key:
23
+
24
+ ```bash
25
+ cp .env.example .env
26
+ # Edit .env and add one of: CLAUDE_API_KEY, AZURE_API_KEY, GEMINI_API_KEY, or LLM_ENDPOINT
27
+ ```
28
+
29
+ ### 2. Validate Installation
30
+
31
+ ```bash
32
+ # Check setup
33
+ python -m jarviscore.cli.check
34
+
35
+ # Test LLM connectivity
36
+ python -m jarviscore.cli.check --validate-llm
37
+
38
+ # Run smoke test (end-to-end validation)
39
+ python -m jarviscore.cli.smoketest
40
+ ```
41
+
42
+ ✅ **All checks pass?** You're ready to build agents!
43
+
44
+ ## Quick Start
45
+
46
+ ```python
47
+ from jarviscore import Mesh
48
+ from jarviscore.profiles import PromptDevAgent
49
+
50
+ # Define agent (3 lines)
51
+ class ScraperAgent(PromptDevAgent):
52
+ role = "scraper"
53
+ capabilities = ["web_scraping"]
54
+ system_prompt = "You are an expert web scraper..."
55
+
56
+ # Create mesh and run workflow
57
+ mesh = Mesh(mode="autonomous")
58
+ mesh.add(ScraperAgent)
59
+ await mesh.start()
60
+
61
+ results = await mesh.workflow(
62
+ workflow_id="wf-123",
63
+ steps=[
64
+ {"id": "scrape", "task": "Scrape example.com", "role": "scraper"}
65
+ ]
66
+ )
67
+ ```
68
+
69
+ ## Architecture
70
+
71
+ JarvisCore is built on three layers:
72
+
73
+ 1. **Execution Layer (20%)** - Profile-specific execution (Prompt-Dev, MCP)
74
+ 2. **Orchestration Layer (60%)** - Workflow engine, dependencies, state management
75
+ 3. **P2P Layer (20%)** - Agent discovery, task routing, mesh coordination
76
+
77
+ ## Documentation
78
+
79
+ - [User Guide](jarviscore/docs/USER_GUIDE.md) - Complete guide for AutoAgent users
80
+ - [API Reference](jarviscore/docs/API_REFERENCE.md) - Detailed API documentation
81
+ - [Configuration Guide](jarviscore/docs/CONFIGURATION.md) - Settings and environment variables
82
+ - [Troubleshooting](jarviscore/docs/TROUBLESHOOTING.md) - Common issues and solutions
83
+ - [Examples](examples/) - Working code examples
84
+
85
+ ## Development Status
86
+
87
+ **Version:** 0.1.0 (Alpha)
88
+ **Day 1:** Core framework foundation ✅
89
+
90
+ ## License
91
+
92
+ MIT License - see LICENSE file for details