ai-parrot-server 0.25.1__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.
- ai_parrot_server-0.25.1/PKG-INFO +86 -0
- ai_parrot_server-0.25.1/README.md +50 -0
- ai_parrot_server-0.25.1/pyproject.toml +84 -0
- ai_parrot_server-0.25.1/setup.cfg +4 -0
- ai_parrot_server-0.25.1/src/ai_parrot_server.egg-info/PKG-INFO +86 -0
- ai_parrot_server-0.25.1/src/ai_parrot_server.egg-info/SOURCES.txt +146 -0
- ai_parrot_server-0.25.1/src/ai_parrot_server.egg-info/dependency_links.txt +1 -0
- ai_parrot_server-0.25.1/src/ai_parrot_server.egg-info/entry_points.txt +2 -0
- ai_parrot_server-0.25.1/src/ai_parrot_server.egg-info/requires.txt +19 -0
- ai_parrot_server-0.25.1/src/ai_parrot_server.egg-info/top_level.txt +1 -0
- ai_parrot_server-0.25.1/src/parrot/a2a/security.py +2065 -0
- ai_parrot_server-0.25.1/src/parrot/a2a/server.py +770 -0
- ai_parrot_server-0.25.1/src/parrot/autonomous/admin.py +400 -0
- ai_parrot_server-0.25.1/src/parrot/autonomous/cli.py +167 -0
- ai_parrot_server-0.25.1/src/parrot/autonomous/deploy/__init__.py +1 -0
- ai_parrot_server-0.25.1/src/parrot/autonomous/deploy/installer.py +148 -0
- ai_parrot_server-0.25.1/src/parrot/autonomous/deploy/templates.py +267 -0
- ai_parrot_server-0.25.1/src/parrot/autonomous/evb.py +19 -0
- ai_parrot_server-0.25.1/src/parrot/autonomous/example.py +82 -0
- ai_parrot_server-0.25.1/src/parrot/autonomous/orchestrator.py +1237 -0
- ai_parrot_server-0.25.1/src/parrot/autonomous/redis_jobs.py +233 -0
- ai_parrot_server-0.25.1/src/parrot/autonomous/scheduler.py +58 -0
- ai_parrot_server-0.25.1/src/parrot/autonomous/transport/__init__.py +5 -0
- ai_parrot_server-0.25.1/src/parrot/autonomous/transport/base.py +139 -0
- ai_parrot_server-0.25.1/src/parrot/autonomous/transport/filesystem/__init__.py +11 -0
- ai_parrot_server-0.25.1/src/parrot/autonomous/transport/filesystem/__main__.py +6 -0
- ai_parrot_server-0.25.1/src/parrot/autonomous/transport/filesystem/channel.py +149 -0
- ai_parrot_server-0.25.1/src/parrot/autonomous/transport/filesystem/cli.py +243 -0
- ai_parrot_server-0.25.1/src/parrot/autonomous/transport/filesystem/config.py +71 -0
- ai_parrot_server-0.25.1/src/parrot/autonomous/transport/filesystem/feed.py +118 -0
- ai_parrot_server-0.25.1/src/parrot/autonomous/transport/filesystem/hook.py +148 -0
- ai_parrot_server-0.25.1/src/parrot/autonomous/transport/filesystem/inbox.py +254 -0
- ai_parrot_server-0.25.1/src/parrot/autonomous/transport/filesystem/registry.py +237 -0
- ai_parrot_server-0.25.1/src/parrot/autonomous/transport/filesystem/reservation.py +199 -0
- ai_parrot_server-0.25.1/src/parrot/autonomous/transport/filesystem/transport.py +306 -0
- ai_parrot_server-0.25.1/src/parrot/autonomous/webhooks.py +299 -0
- ai_parrot_server-0.25.1/src/parrot/handlers/agent.py +2993 -0
- ai_parrot_server-0.25.1/src/parrot/handlers/agents/__init__.py +4 -0
- ai_parrot_server-0.25.1/src/parrot/handlers/agents/abstract.py +913 -0
- ai_parrot_server-0.25.1/src/parrot/handlers/agents/data.py +78 -0
- ai_parrot_server-0.25.1/src/parrot/handlers/agents/ephemeral.py +346 -0
- ai_parrot_server-0.25.1/src/parrot/handlers/agents/factory.py +190 -0
- ai_parrot_server-0.25.1/src/parrot/handlers/agents/sharing.py +78 -0
- ai_parrot_server-0.25.1/src/parrot/handlers/agents/users.py +714 -0
- ai_parrot_server-0.25.1/src/parrot/handlers/artifacts.py +673 -0
- ai_parrot_server-0.25.1/src/parrot/handlers/bots.py +1406 -0
- ai_parrot_server-0.25.1/src/parrot/handlers/chat.py +1011 -0
- ai_parrot_server-0.25.1/src/parrot/handlers/chat_interaction.py +404 -0
- ai_parrot_server-0.25.1/src/parrot/handlers/config_handler.py +460 -0
- ai_parrot_server-0.25.1/src/parrot/handlers/credentials.py +523 -0
- ai_parrot_server-0.25.1/src/parrot/handlers/crew/__init__.py +4 -0
- ai_parrot_server-0.25.1/src/parrot/handlers/crew/execution_handler.py +670 -0
- ai_parrot_server-0.25.1/src/parrot/handlers/crew/handler.py +529 -0
- ai_parrot_server-0.25.1/src/parrot/handlers/crew/models.py +153 -0
- ai_parrot_server-0.25.1/src/parrot/handlers/crew/redis_persistence.py +634 -0
- ai_parrot_server-0.25.1/src/parrot/handlers/csp.py +134 -0
- ai_parrot_server-0.25.1/src/parrot/handlers/dashboard_handler.py +634 -0
- ai_parrot_server-0.25.1/src/parrot/handlers/database/__init__.py +7 -0
- ai_parrot_server-0.25.1/src/parrot/handlers/database/helpers.py +268 -0
- ai_parrot_server-0.25.1/src/parrot/handlers/datasets.py +599 -0
- ai_parrot_server-0.25.1/src/parrot/handlers/google_generation.py +178 -0
- ai_parrot_server-0.25.1/src/parrot/handlers/infographic.py +474 -0
- ai_parrot_server-0.25.1/src/parrot/handlers/integrations.py +215 -0
- ai_parrot_server-0.25.1/src/parrot/handlers/jobs/__init__.py +12 -0
- ai_parrot_server-0.25.1/src/parrot/handlers/jobs/job.py +471 -0
- ai_parrot_server-0.25.1/src/parrot/handlers/jobs/mixin.py +627 -0
- ai_parrot_server-0.25.1/src/parrot/handlers/jobs/models.py +117 -0
- ai_parrot_server-0.25.1/src/parrot/handlers/jobs/redis_store.py +327 -0
- ai_parrot_server-0.25.1/src/parrot/handlers/jobs/worker.py +65 -0
- ai_parrot_server-0.25.1/src/parrot/handlers/llm.py +286 -0
- ai_parrot_server-0.25.1/src/parrot/handlers/lyria_music.py +142 -0
- ai_parrot_server-0.25.1/src/parrot/handlers/mcp_helper.py +446 -0
- ai_parrot_server-0.25.1/src/parrot/handlers/mcp_persistence.py +191 -0
- ai_parrot_server-0.25.1/src/parrot/handlers/models/__init__.py +36 -0
- ai_parrot_server-0.25.1/src/parrot/handlers/models/_encrypted_field.py +131 -0
- ai_parrot_server-0.25.1/src/parrot/handlers/models/bots.py +646 -0
- ai_parrot_server-0.25.1/src/parrot/handlers/models/credentials.py +81 -0
- ai_parrot_server-0.25.1/src/parrot/handlers/models/understanding.py +214 -0
- ai_parrot_server-0.25.1/src/parrot/handlers/models/users_bots.py +205 -0
- ai_parrot_server-0.25.1/src/parrot/handlers/models/users_prompts.py +66 -0
- ai_parrot_server-0.25.1/src/parrot/handlers/o365_auth.py +105 -0
- ai_parrot_server-0.25.1/src/parrot/handlers/planogram_compliance.py +2 -0
- ai_parrot_server-0.25.1/src/parrot/handlers/print_pdf.py +116 -0
- ai_parrot_server-0.25.1/src/parrot/handlers/programs.py +114 -0
- ai_parrot_server-0.25.1/src/parrot/handlers/scheduler.py +150 -0
- ai_parrot_server-0.25.1/src/parrot/handlers/scraping/__init__.py +47 -0
- ai_parrot_server-0.25.1/src/parrot/handlers/scraping/handler.py +434 -0
- ai_parrot_server-0.25.1/src/parrot/handlers/scraping/info.py +136 -0
- ai_parrot_server-0.25.1/src/parrot/handlers/scraping/models.py +159 -0
- ai_parrot_server-0.25.1/src/parrot/handlers/stores/__init__.py +5 -0
- ai_parrot_server-0.25.1/src/parrot/handlers/stores/handler.py +903 -0
- ai_parrot_server-0.25.1/src/parrot/handlers/stores/helpers.py +105 -0
- ai_parrot_server-0.25.1/src/parrot/handlers/stream.py +374 -0
- ai_parrot_server-0.25.1/src/parrot/handlers/testing_handler.py +264 -0
- ai_parrot_server-0.25.1/src/parrot/handlers/threads.py +378 -0
- ai_parrot_server-0.25.1/src/parrot/handlers/tools_catalog.py +114 -0
- ai_parrot_server-0.25.1/src/parrot/handlers/understanding.py +417 -0
- ai_parrot_server-0.25.1/src/parrot/handlers/user.py +775 -0
- ai_parrot_server-0.25.1/src/parrot/handlers/user_objects.py +334 -0
- ai_parrot_server-0.25.1/src/parrot/handlers/video_reel.py +336 -0
- ai_parrot_server-0.25.1/src/parrot/handlers/web_hitl.py +544 -0
- ai_parrot_server-0.25.1/src/parrot/human/suspended_store.py +161 -0
- ai_parrot_server-0.25.1/src/parrot/manager/ephemeral.py +426 -0
- ai_parrot_server-0.25.1/src/parrot/manager/manager.py +2145 -0
- ai_parrot_server-0.25.1/src/parrot/mcp/adapter.py +105 -0
- ai_parrot_server-0.25.1/src/parrot/mcp/chrome.py +124 -0
- ai_parrot_server-0.25.1/src/parrot/mcp/cli.py +189 -0
- ai_parrot_server-0.25.1/src/parrot/mcp/config.py +94 -0
- ai_parrot_server-0.25.1/src/parrot/mcp/oauth_server.py +699 -0
- ai_parrot_server-0.25.1/src/parrot/mcp/parrot_server.py +295 -0
- ai_parrot_server-0.25.1/src/parrot/mcp/resources.py +26 -0
- ai_parrot_server-0.25.1/src/parrot/mcp/server.py +225 -0
- ai_parrot_server-0.25.1/src/parrot/mcp/simple_server.py +291 -0
- ai_parrot_server-0.25.1/src/parrot/mcp/transports/__init__.py +3 -0
- ai_parrot_server-0.25.1/src/parrot/mcp/transports/base.py +366 -0
- ai_parrot_server-0.25.1/src/parrot/mcp/transports/grpc_session.py +163 -0
- ai_parrot_server-0.25.1/src/parrot/mcp/transports/http.py +345 -0
- ai_parrot_server-0.25.1/src/parrot/mcp/transports/quic.py +1082 -0
- ai_parrot_server-0.25.1/src/parrot/mcp/transports/sse.py +357 -0
- ai_parrot_server-0.25.1/src/parrot/mcp/transports/stdio.py +317 -0
- ai_parrot_server-0.25.1/src/parrot/mcp/transports/unix.py +395 -0
- ai_parrot_server-0.25.1/src/parrot/mcp/transports/websocket.py +547 -0
- ai_parrot_server-0.25.1/src/parrot/mcp/wrapper.py +187 -0
- ai_parrot_server-0.25.1/src/parrot/scheduler/functions/__init__.py +215 -0
- ai_parrot_server-0.25.1/src/parrot/scheduler/manager.py +1739 -0
- ai_parrot_server-0.25.1/src/parrot/scheduler/models.py +64 -0
- ai_parrot_server-0.25.1/src/parrot/server/__init__.py +11 -0
- ai_parrot_server-0.25.1/src/parrot/server/version.py +11 -0
- ai_parrot_server-0.25.1/src/parrot/services/agent_service.py +465 -0
- ai_parrot_server-0.25.1/src/parrot/services/client.py +151 -0
- ai_parrot_server-0.25.1/src/parrot/services/delivery.py +213 -0
- ai_parrot_server-0.25.1/src/parrot/services/heartbeat.py +129 -0
- ai_parrot_server-0.25.1/src/parrot/services/identity_mapping.py +203 -0
- ai_parrot_server-0.25.1/src/parrot/services/models.py +140 -0
- ai_parrot_server-0.25.1/src/parrot/services/o365_remote_auth.py +235 -0
- ai_parrot_server-0.25.1/src/parrot/services/redis_listener.py +170 -0
- ai_parrot_server-0.25.1/src/parrot/services/task_queue.py +137 -0
- ai_parrot_server-0.25.1/src/parrot/services/vault_token_sync.py +200 -0
- ai_parrot_server-0.25.1/src/parrot/services/whatsapp.py +1337 -0
- ai_parrot_server-0.25.1/src/parrot/services/worker_pool.py +79 -0
- ai_parrot_server-0.25.1/tests/test_agenttalk_infographic_explanation.py +48 -0
- ai_parrot_server-0.25.1/tests/test_agenttalk_resume_unit.py +265 -0
- ai_parrot_server-0.25.1/tests/test_hitl_web_suspend_resume.py +368 -0
- ai_parrot_server-0.25.1/tests/test_namespace_imports.py +387 -0
- ai_parrot_server-0.25.1/tests/test_paused_envelope.py +92 -0
- ai_parrot_server-0.25.1/tests/test_suspended_store.py +174 -0
- ai_parrot_server-0.25.1/tests/test_suspending_web_human_tool.py +65 -0
- ai_parrot_server-0.25.1/tests/test_wheel_layout.py +84 -0
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: ai-parrot-server
|
|
3
|
+
Version: 0.25.1
|
|
4
|
+
Summary: Server infrastructure (handlers, MCP/A2A transports, scheduler, autonomous) for AI-Parrot
|
|
5
|
+
Author-email: Jesus Lara <jesuslara@phenobarbital.info>
|
|
6
|
+
License-Expression: MIT
|
|
7
|
+
Project-URL: Homepage, https://github.com/phenobarbital/ai-parrot
|
|
8
|
+
Project-URL: Source, https://github.com/phenobarbital/ai-parrot
|
|
9
|
+
Keywords: ai,agents,server,mcp,a2a,handlers,scheduler,autonomous
|
|
10
|
+
Classifier: Development Status :: 4 - Beta
|
|
11
|
+
Classifier: Intended Audience :: Developers
|
|
12
|
+
Classifier: Operating System :: POSIX :: Linux
|
|
13
|
+
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
14
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
15
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
16
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
17
|
+
Classifier: Programming Language :: Python :: 3 :: Only
|
|
18
|
+
Classifier: Framework :: AsyncIO
|
|
19
|
+
Classifier: Typing :: Typed
|
|
20
|
+
Requires-Python: >=3.11
|
|
21
|
+
Description-Content-Type: text/markdown
|
|
22
|
+
Requires-Dist: ai-parrot
|
|
23
|
+
Provides-Extra: scheduler
|
|
24
|
+
Requires-Dist: apscheduler==3.11.2; extra == "scheduler"
|
|
25
|
+
Provides-Extra: mcp
|
|
26
|
+
Requires-Dist: aioquic==1.3.0; extra == "mcp"
|
|
27
|
+
Requires-Dist: pylsqpack==0.3.23; extra == "mcp"
|
|
28
|
+
Requires-Dist: click>=8.1.7; extra == "mcp"
|
|
29
|
+
Requires-Dist: PyYAML>=6.0.2; extra == "mcp"
|
|
30
|
+
Provides-Extra: a2a
|
|
31
|
+
Requires-Dist: PyJWT>=2.8.0; extra == "a2a"
|
|
32
|
+
Provides-Extra: autonomous
|
|
33
|
+
Requires-Dist: aiofiles>=23.0; extra == "autonomous"
|
|
34
|
+
Provides-Extra: all
|
|
35
|
+
Requires-Dist: ai-parrot-server[a2a,autonomous,mcp,scheduler]; extra == "all"
|
|
36
|
+
|
|
37
|
+
# ai-parrot-server
|
|
38
|
+
|
|
39
|
+
Server infrastructure for the [AI-Parrot](https://github.com/phenobarbital/ai-parrot) framework, extracted as a PEP 420 implicit namespace satellite package.
|
|
40
|
+
|
|
41
|
+
## Overview
|
|
42
|
+
|
|
43
|
+
`ai-parrot-server` contributes server-side modules to the `parrot.*` namespace alongside the core `ai-parrot` package. All existing import paths remain unchanged — `from parrot.handlers import ChatbotHandler` works identically whether using the combined install or the split install.
|
|
44
|
+
|
|
45
|
+
## What's Included
|
|
46
|
+
|
|
47
|
+
| Module | Contents |
|
|
48
|
+
|---|---|
|
|
49
|
+
| `parrot.handlers` | ~59 aiohttp HTTP handler files (ChatbotHandler, BotHandler, etc.) |
|
|
50
|
+
| `parrot.manager` | BotManager, EphemeralRegistry |
|
|
51
|
+
| `parrot.services` | AgentService, delivery, heartbeat, worker pool, WhatsApp bridge, etc. |
|
|
52
|
+
| `parrot.scheduler` | AgentSchedulerManager, schedule decorators, models, functions |
|
|
53
|
+
| `parrot.autonomous` | AutonomousOrchestrator, transport layer (parrot-fs), deploy tools |
|
|
54
|
+
| `parrot.mcp` (server) | MCPServer, MCPToolAdapter, MCPServerConfig, transports, CLI |
|
|
55
|
+
| `parrot.a2a` (server) | A2AServer, A2AEnabledMixin, A2ASecurityMiddleware |
|
|
56
|
+
|
|
57
|
+
## Installation
|
|
58
|
+
|
|
59
|
+
```bash
|
|
60
|
+
# Core framework only (no server infrastructure)
|
|
61
|
+
pip install ai-parrot
|
|
62
|
+
|
|
63
|
+
# Core + all server infrastructure
|
|
64
|
+
pip install ai-parrot-server
|
|
65
|
+
|
|
66
|
+
# Core + server with specific extras
|
|
67
|
+
pip install ai-parrot-server[scheduler] # + APScheduler
|
|
68
|
+
pip install ai-parrot-server[mcp] # + MCP server transports (QUIC, gRPC)
|
|
69
|
+
pip install ai-parrot-server[a2a] # + A2A server (JWT auth)
|
|
70
|
+
pip install ai-parrot-server[autonomous] # + autonomous orchestrator (aiofiles)
|
|
71
|
+
pip install ai-parrot-server[all] # everything
|
|
72
|
+
|
|
73
|
+
# Via host meta-extra
|
|
74
|
+
pip install ai-parrot[server] # convenience alias for ai-parrot-server[all]
|
|
75
|
+
pip install ai-parrot[all] # includes ai-parrot-server[all]
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
## How It Works
|
|
79
|
+
|
|
80
|
+
This package uses [PEP 420 implicit namespace packages](https://peps.python.org/pep-0420/). It contributes to the same `parrot.*` namespace as `ai-parrot` without any `__init__.py` files at the namespace levels. Python's import system merges the two distributions' directory trees transparently.
|
|
81
|
+
|
|
82
|
+
The host `parrot.*` `__init__.py` files use `pkgutil.extend_path` and lazy `__getattr__` patterns to expose server classes when this satellite is installed, and provide helpful `ImportError` messages when it is not.
|
|
83
|
+
|
|
84
|
+
## Migration
|
|
85
|
+
|
|
86
|
+
See [`docs/migration/feat-203-ai-parrot-server.md`](../../docs/migration/feat-203-ai-parrot-server.md) for the full migration guide.
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
# ai-parrot-server
|
|
2
|
+
|
|
3
|
+
Server infrastructure for the [AI-Parrot](https://github.com/phenobarbital/ai-parrot) framework, extracted as a PEP 420 implicit namespace satellite package.
|
|
4
|
+
|
|
5
|
+
## Overview
|
|
6
|
+
|
|
7
|
+
`ai-parrot-server` contributes server-side modules to the `parrot.*` namespace alongside the core `ai-parrot` package. All existing import paths remain unchanged — `from parrot.handlers import ChatbotHandler` works identically whether using the combined install or the split install.
|
|
8
|
+
|
|
9
|
+
## What's Included
|
|
10
|
+
|
|
11
|
+
| Module | Contents |
|
|
12
|
+
|---|---|
|
|
13
|
+
| `parrot.handlers` | ~59 aiohttp HTTP handler files (ChatbotHandler, BotHandler, etc.) |
|
|
14
|
+
| `parrot.manager` | BotManager, EphemeralRegistry |
|
|
15
|
+
| `parrot.services` | AgentService, delivery, heartbeat, worker pool, WhatsApp bridge, etc. |
|
|
16
|
+
| `parrot.scheduler` | AgentSchedulerManager, schedule decorators, models, functions |
|
|
17
|
+
| `parrot.autonomous` | AutonomousOrchestrator, transport layer (parrot-fs), deploy tools |
|
|
18
|
+
| `parrot.mcp` (server) | MCPServer, MCPToolAdapter, MCPServerConfig, transports, CLI |
|
|
19
|
+
| `parrot.a2a` (server) | A2AServer, A2AEnabledMixin, A2ASecurityMiddleware |
|
|
20
|
+
|
|
21
|
+
## Installation
|
|
22
|
+
|
|
23
|
+
```bash
|
|
24
|
+
# Core framework only (no server infrastructure)
|
|
25
|
+
pip install ai-parrot
|
|
26
|
+
|
|
27
|
+
# Core + all server infrastructure
|
|
28
|
+
pip install ai-parrot-server
|
|
29
|
+
|
|
30
|
+
# Core + server with specific extras
|
|
31
|
+
pip install ai-parrot-server[scheduler] # + APScheduler
|
|
32
|
+
pip install ai-parrot-server[mcp] # + MCP server transports (QUIC, gRPC)
|
|
33
|
+
pip install ai-parrot-server[a2a] # + A2A server (JWT auth)
|
|
34
|
+
pip install ai-parrot-server[autonomous] # + autonomous orchestrator (aiofiles)
|
|
35
|
+
pip install ai-parrot-server[all] # everything
|
|
36
|
+
|
|
37
|
+
# Via host meta-extra
|
|
38
|
+
pip install ai-parrot[server] # convenience alias for ai-parrot-server[all]
|
|
39
|
+
pip install ai-parrot[all] # includes ai-parrot-server[all]
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
## How It Works
|
|
43
|
+
|
|
44
|
+
This package uses [PEP 420 implicit namespace packages](https://peps.python.org/pep-0420/). It contributes to the same `parrot.*` namespace as `ai-parrot` without any `__init__.py` files at the namespace levels. Python's import system merges the two distributions' directory trees transparently.
|
|
45
|
+
|
|
46
|
+
The host `parrot.*` `__init__.py` files use `pkgutil.extend_path` and lazy `__getattr__` patterns to expose server classes when this satellite is installed, and provide helpful `ImportError` messages when it is not.
|
|
47
|
+
|
|
48
|
+
## Migration
|
|
49
|
+
|
|
50
|
+
See [`docs/migration/feat-203-ai-parrot-server.md`](../../docs/migration/feat-203-ai-parrot-server.md) for the full migration guide.
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
[build-system]
|
|
2
|
+
requires = ["setuptools>=67.6.1", "wheel>=0.44.0"]
|
|
3
|
+
build-backend = "setuptools.build_meta"
|
|
4
|
+
|
|
5
|
+
[project]
|
|
6
|
+
name = "ai-parrot-server"
|
|
7
|
+
dynamic = ["version"]
|
|
8
|
+
description = "Server infrastructure (handlers, MCP/A2A transports, scheduler, autonomous) for AI-Parrot"
|
|
9
|
+
readme = "README.md"
|
|
10
|
+
requires-python = ">=3.11"
|
|
11
|
+
license = "MIT"
|
|
12
|
+
authors = [
|
|
13
|
+
{name = "Jesus Lara", email = "jesuslara@phenobarbital.info"}
|
|
14
|
+
]
|
|
15
|
+
keywords = ["ai", "agents", "server", "mcp", "a2a", "handlers", "scheduler", "autonomous"]
|
|
16
|
+
classifiers = [
|
|
17
|
+
"Development Status :: 4 - Beta",
|
|
18
|
+
"Intended Audience :: Developers",
|
|
19
|
+
"Operating System :: POSIX :: Linux",
|
|
20
|
+
"Topic :: Software Development :: Libraries :: Python Modules",
|
|
21
|
+
"Programming Language :: Python :: 3.11",
|
|
22
|
+
"Programming Language :: Python :: 3.12",
|
|
23
|
+
"Programming Language :: Python :: 3.13",
|
|
24
|
+
"Programming Language :: Python :: 3 :: Only",
|
|
25
|
+
"Framework :: AsyncIO",
|
|
26
|
+
"Typing :: Typed",
|
|
27
|
+
]
|
|
28
|
+
dependencies = [
|
|
29
|
+
"ai-parrot",
|
|
30
|
+
]
|
|
31
|
+
|
|
32
|
+
[project.optional-dependencies]
|
|
33
|
+
# APScheduler runtime (for AgentSchedulerManager)
|
|
34
|
+
scheduler = [
|
|
35
|
+
"apscheduler==3.11.2",
|
|
36
|
+
]
|
|
37
|
+
|
|
38
|
+
# MCP server transports (QUIC, gRPC, etc.)
|
|
39
|
+
mcp = [
|
|
40
|
+
"aioquic==1.3.0",
|
|
41
|
+
"pylsqpack==0.3.23",
|
|
42
|
+
"click>=8.1.7",
|
|
43
|
+
"PyYAML>=6.0.2",
|
|
44
|
+
]
|
|
45
|
+
|
|
46
|
+
# A2A server (optional JWT auth)
|
|
47
|
+
a2a = [
|
|
48
|
+
"PyJWT>=2.8.0",
|
|
49
|
+
]
|
|
50
|
+
|
|
51
|
+
# Autonomous orchestrator (file transport)
|
|
52
|
+
autonomous = [
|
|
53
|
+
"aiofiles>=23.0",
|
|
54
|
+
]
|
|
55
|
+
|
|
56
|
+
# Aggregator: all server extras
|
|
57
|
+
all = [
|
|
58
|
+
"ai-parrot-server[scheduler,mcp,a2a,autonomous]",
|
|
59
|
+
]
|
|
60
|
+
|
|
61
|
+
[project.scripts]
|
|
62
|
+
parrot-fs = "parrot.autonomous.transport.filesystem.cli:main"
|
|
63
|
+
|
|
64
|
+
[project.urls]
|
|
65
|
+
Homepage = "https://github.com/phenobarbital/ai-parrot"
|
|
66
|
+
Source = "https://github.com/phenobarbital/ai-parrot"
|
|
67
|
+
|
|
68
|
+
[tool.setuptools.dynamic]
|
|
69
|
+
version = {attr = "parrot.server.version.__version__"}
|
|
70
|
+
|
|
71
|
+
[tool.setuptools.packages.find]
|
|
72
|
+
where = ["src"]
|
|
73
|
+
include = ["parrot*"]
|
|
74
|
+
namespaces = true
|
|
75
|
+
|
|
76
|
+
[tool.pytest.ini_options]
|
|
77
|
+
markers = [
|
|
78
|
+
"wheel_build: requires building the wheel (slow, needs uv)",
|
|
79
|
+
"requires_apscheduler: requires the scheduler extra (apscheduler)",
|
|
80
|
+
"requires_aioquic: requires the mcp extra (aioquic)",
|
|
81
|
+
]
|
|
82
|
+
|
|
83
|
+
[tool.uv.sources]
|
|
84
|
+
ai-parrot = { workspace = true }
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: ai-parrot-server
|
|
3
|
+
Version: 0.25.1
|
|
4
|
+
Summary: Server infrastructure (handlers, MCP/A2A transports, scheduler, autonomous) for AI-Parrot
|
|
5
|
+
Author-email: Jesus Lara <jesuslara@phenobarbital.info>
|
|
6
|
+
License-Expression: MIT
|
|
7
|
+
Project-URL: Homepage, https://github.com/phenobarbital/ai-parrot
|
|
8
|
+
Project-URL: Source, https://github.com/phenobarbital/ai-parrot
|
|
9
|
+
Keywords: ai,agents,server,mcp,a2a,handlers,scheduler,autonomous
|
|
10
|
+
Classifier: Development Status :: 4 - Beta
|
|
11
|
+
Classifier: Intended Audience :: Developers
|
|
12
|
+
Classifier: Operating System :: POSIX :: Linux
|
|
13
|
+
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
14
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
15
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
16
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
17
|
+
Classifier: Programming Language :: Python :: 3 :: Only
|
|
18
|
+
Classifier: Framework :: AsyncIO
|
|
19
|
+
Classifier: Typing :: Typed
|
|
20
|
+
Requires-Python: >=3.11
|
|
21
|
+
Description-Content-Type: text/markdown
|
|
22
|
+
Requires-Dist: ai-parrot
|
|
23
|
+
Provides-Extra: scheduler
|
|
24
|
+
Requires-Dist: apscheduler==3.11.2; extra == "scheduler"
|
|
25
|
+
Provides-Extra: mcp
|
|
26
|
+
Requires-Dist: aioquic==1.3.0; extra == "mcp"
|
|
27
|
+
Requires-Dist: pylsqpack==0.3.23; extra == "mcp"
|
|
28
|
+
Requires-Dist: click>=8.1.7; extra == "mcp"
|
|
29
|
+
Requires-Dist: PyYAML>=6.0.2; extra == "mcp"
|
|
30
|
+
Provides-Extra: a2a
|
|
31
|
+
Requires-Dist: PyJWT>=2.8.0; extra == "a2a"
|
|
32
|
+
Provides-Extra: autonomous
|
|
33
|
+
Requires-Dist: aiofiles>=23.0; extra == "autonomous"
|
|
34
|
+
Provides-Extra: all
|
|
35
|
+
Requires-Dist: ai-parrot-server[a2a,autonomous,mcp,scheduler]; extra == "all"
|
|
36
|
+
|
|
37
|
+
# ai-parrot-server
|
|
38
|
+
|
|
39
|
+
Server infrastructure for the [AI-Parrot](https://github.com/phenobarbital/ai-parrot) framework, extracted as a PEP 420 implicit namespace satellite package.
|
|
40
|
+
|
|
41
|
+
## Overview
|
|
42
|
+
|
|
43
|
+
`ai-parrot-server` contributes server-side modules to the `parrot.*` namespace alongside the core `ai-parrot` package. All existing import paths remain unchanged — `from parrot.handlers import ChatbotHandler` works identically whether using the combined install or the split install.
|
|
44
|
+
|
|
45
|
+
## What's Included
|
|
46
|
+
|
|
47
|
+
| Module | Contents |
|
|
48
|
+
|---|---|
|
|
49
|
+
| `parrot.handlers` | ~59 aiohttp HTTP handler files (ChatbotHandler, BotHandler, etc.) |
|
|
50
|
+
| `parrot.manager` | BotManager, EphemeralRegistry |
|
|
51
|
+
| `parrot.services` | AgentService, delivery, heartbeat, worker pool, WhatsApp bridge, etc. |
|
|
52
|
+
| `parrot.scheduler` | AgentSchedulerManager, schedule decorators, models, functions |
|
|
53
|
+
| `parrot.autonomous` | AutonomousOrchestrator, transport layer (parrot-fs), deploy tools |
|
|
54
|
+
| `parrot.mcp` (server) | MCPServer, MCPToolAdapter, MCPServerConfig, transports, CLI |
|
|
55
|
+
| `parrot.a2a` (server) | A2AServer, A2AEnabledMixin, A2ASecurityMiddleware |
|
|
56
|
+
|
|
57
|
+
## Installation
|
|
58
|
+
|
|
59
|
+
```bash
|
|
60
|
+
# Core framework only (no server infrastructure)
|
|
61
|
+
pip install ai-parrot
|
|
62
|
+
|
|
63
|
+
# Core + all server infrastructure
|
|
64
|
+
pip install ai-parrot-server
|
|
65
|
+
|
|
66
|
+
# Core + server with specific extras
|
|
67
|
+
pip install ai-parrot-server[scheduler] # + APScheduler
|
|
68
|
+
pip install ai-parrot-server[mcp] # + MCP server transports (QUIC, gRPC)
|
|
69
|
+
pip install ai-parrot-server[a2a] # + A2A server (JWT auth)
|
|
70
|
+
pip install ai-parrot-server[autonomous] # + autonomous orchestrator (aiofiles)
|
|
71
|
+
pip install ai-parrot-server[all] # everything
|
|
72
|
+
|
|
73
|
+
# Via host meta-extra
|
|
74
|
+
pip install ai-parrot[server] # convenience alias for ai-parrot-server[all]
|
|
75
|
+
pip install ai-parrot[all] # includes ai-parrot-server[all]
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
## How It Works
|
|
79
|
+
|
|
80
|
+
This package uses [PEP 420 implicit namespace packages](https://peps.python.org/pep-0420/). It contributes to the same `parrot.*` namespace as `ai-parrot` without any `__init__.py` files at the namespace levels. Python's import system merges the two distributions' directory trees transparently.
|
|
81
|
+
|
|
82
|
+
The host `parrot.*` `__init__.py` files use `pkgutil.extend_path` and lazy `__getattr__` patterns to expose server classes when this satellite is installed, and provide helpful `ImportError` messages when it is not.
|
|
83
|
+
|
|
84
|
+
## Migration
|
|
85
|
+
|
|
86
|
+
See [`docs/migration/feat-203-ai-parrot-server.md`](../../docs/migration/feat-203-ai-parrot-server.md) for the full migration guide.
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
README.md
|
|
2
|
+
pyproject.toml
|
|
3
|
+
src/ai_parrot_server.egg-info/PKG-INFO
|
|
4
|
+
src/ai_parrot_server.egg-info/SOURCES.txt
|
|
5
|
+
src/ai_parrot_server.egg-info/dependency_links.txt
|
|
6
|
+
src/ai_parrot_server.egg-info/entry_points.txt
|
|
7
|
+
src/ai_parrot_server.egg-info/requires.txt
|
|
8
|
+
src/ai_parrot_server.egg-info/top_level.txt
|
|
9
|
+
src/parrot/a2a/security.py
|
|
10
|
+
src/parrot/a2a/server.py
|
|
11
|
+
src/parrot/autonomous/admin.py
|
|
12
|
+
src/parrot/autonomous/cli.py
|
|
13
|
+
src/parrot/autonomous/evb.py
|
|
14
|
+
src/parrot/autonomous/example.py
|
|
15
|
+
src/parrot/autonomous/orchestrator.py
|
|
16
|
+
src/parrot/autonomous/redis_jobs.py
|
|
17
|
+
src/parrot/autonomous/scheduler.py
|
|
18
|
+
src/parrot/autonomous/webhooks.py
|
|
19
|
+
src/parrot/autonomous/deploy/__init__.py
|
|
20
|
+
src/parrot/autonomous/deploy/installer.py
|
|
21
|
+
src/parrot/autonomous/deploy/templates.py
|
|
22
|
+
src/parrot/autonomous/transport/__init__.py
|
|
23
|
+
src/parrot/autonomous/transport/base.py
|
|
24
|
+
src/parrot/autonomous/transport/filesystem/__init__.py
|
|
25
|
+
src/parrot/autonomous/transport/filesystem/__main__.py
|
|
26
|
+
src/parrot/autonomous/transport/filesystem/channel.py
|
|
27
|
+
src/parrot/autonomous/transport/filesystem/cli.py
|
|
28
|
+
src/parrot/autonomous/transport/filesystem/config.py
|
|
29
|
+
src/parrot/autonomous/transport/filesystem/feed.py
|
|
30
|
+
src/parrot/autonomous/transport/filesystem/hook.py
|
|
31
|
+
src/parrot/autonomous/transport/filesystem/inbox.py
|
|
32
|
+
src/parrot/autonomous/transport/filesystem/registry.py
|
|
33
|
+
src/parrot/autonomous/transport/filesystem/reservation.py
|
|
34
|
+
src/parrot/autonomous/transport/filesystem/transport.py
|
|
35
|
+
src/parrot/handlers/agent.py
|
|
36
|
+
src/parrot/handlers/artifacts.py
|
|
37
|
+
src/parrot/handlers/bots.py
|
|
38
|
+
src/parrot/handlers/chat.py
|
|
39
|
+
src/parrot/handlers/chat_interaction.py
|
|
40
|
+
src/parrot/handlers/config_handler.py
|
|
41
|
+
src/parrot/handlers/credentials.py
|
|
42
|
+
src/parrot/handlers/csp.py
|
|
43
|
+
src/parrot/handlers/dashboard_handler.py
|
|
44
|
+
src/parrot/handlers/datasets.py
|
|
45
|
+
src/parrot/handlers/google_generation.py
|
|
46
|
+
src/parrot/handlers/infographic.py
|
|
47
|
+
src/parrot/handlers/integrations.py
|
|
48
|
+
src/parrot/handlers/llm.py
|
|
49
|
+
src/parrot/handlers/lyria_music.py
|
|
50
|
+
src/parrot/handlers/mcp_helper.py
|
|
51
|
+
src/parrot/handlers/mcp_persistence.py
|
|
52
|
+
src/parrot/handlers/o365_auth.py
|
|
53
|
+
src/parrot/handlers/planogram_compliance.py
|
|
54
|
+
src/parrot/handlers/print_pdf.py
|
|
55
|
+
src/parrot/handlers/programs.py
|
|
56
|
+
src/parrot/handlers/scheduler.py
|
|
57
|
+
src/parrot/handlers/stream.py
|
|
58
|
+
src/parrot/handlers/testing_handler.py
|
|
59
|
+
src/parrot/handlers/threads.py
|
|
60
|
+
src/parrot/handlers/tools_catalog.py
|
|
61
|
+
src/parrot/handlers/understanding.py
|
|
62
|
+
src/parrot/handlers/user.py
|
|
63
|
+
src/parrot/handlers/user_objects.py
|
|
64
|
+
src/parrot/handlers/video_reel.py
|
|
65
|
+
src/parrot/handlers/web_hitl.py
|
|
66
|
+
src/parrot/handlers/agents/__init__.py
|
|
67
|
+
src/parrot/handlers/agents/abstract.py
|
|
68
|
+
src/parrot/handlers/agents/data.py
|
|
69
|
+
src/parrot/handlers/agents/ephemeral.py
|
|
70
|
+
src/parrot/handlers/agents/factory.py
|
|
71
|
+
src/parrot/handlers/agents/sharing.py
|
|
72
|
+
src/parrot/handlers/agents/users.py
|
|
73
|
+
src/parrot/handlers/crew/__init__.py
|
|
74
|
+
src/parrot/handlers/crew/execution_handler.py
|
|
75
|
+
src/parrot/handlers/crew/handler.py
|
|
76
|
+
src/parrot/handlers/crew/models.py
|
|
77
|
+
src/parrot/handlers/crew/redis_persistence.py
|
|
78
|
+
src/parrot/handlers/database/__init__.py
|
|
79
|
+
src/parrot/handlers/database/helpers.py
|
|
80
|
+
src/parrot/handlers/jobs/__init__.py
|
|
81
|
+
src/parrot/handlers/jobs/job.py
|
|
82
|
+
src/parrot/handlers/jobs/mixin.py
|
|
83
|
+
src/parrot/handlers/jobs/models.py
|
|
84
|
+
src/parrot/handlers/jobs/redis_store.py
|
|
85
|
+
src/parrot/handlers/jobs/worker.py
|
|
86
|
+
src/parrot/handlers/models/__init__.py
|
|
87
|
+
src/parrot/handlers/models/_encrypted_field.py
|
|
88
|
+
src/parrot/handlers/models/bots.py
|
|
89
|
+
src/parrot/handlers/models/credentials.py
|
|
90
|
+
src/parrot/handlers/models/understanding.py
|
|
91
|
+
src/parrot/handlers/models/users_bots.py
|
|
92
|
+
src/parrot/handlers/models/users_prompts.py
|
|
93
|
+
src/parrot/handlers/scraping/__init__.py
|
|
94
|
+
src/parrot/handlers/scraping/handler.py
|
|
95
|
+
src/parrot/handlers/scraping/info.py
|
|
96
|
+
src/parrot/handlers/scraping/models.py
|
|
97
|
+
src/parrot/handlers/stores/__init__.py
|
|
98
|
+
src/parrot/handlers/stores/handler.py
|
|
99
|
+
src/parrot/handlers/stores/helpers.py
|
|
100
|
+
src/parrot/human/suspended_store.py
|
|
101
|
+
src/parrot/manager/ephemeral.py
|
|
102
|
+
src/parrot/manager/manager.py
|
|
103
|
+
src/parrot/mcp/adapter.py
|
|
104
|
+
src/parrot/mcp/chrome.py
|
|
105
|
+
src/parrot/mcp/cli.py
|
|
106
|
+
src/parrot/mcp/config.py
|
|
107
|
+
src/parrot/mcp/oauth_server.py
|
|
108
|
+
src/parrot/mcp/parrot_server.py
|
|
109
|
+
src/parrot/mcp/resources.py
|
|
110
|
+
src/parrot/mcp/server.py
|
|
111
|
+
src/parrot/mcp/simple_server.py
|
|
112
|
+
src/parrot/mcp/wrapper.py
|
|
113
|
+
src/parrot/mcp/transports/__init__.py
|
|
114
|
+
src/parrot/mcp/transports/base.py
|
|
115
|
+
src/parrot/mcp/transports/grpc_session.py
|
|
116
|
+
src/parrot/mcp/transports/http.py
|
|
117
|
+
src/parrot/mcp/transports/quic.py
|
|
118
|
+
src/parrot/mcp/transports/sse.py
|
|
119
|
+
src/parrot/mcp/transports/stdio.py
|
|
120
|
+
src/parrot/mcp/transports/unix.py
|
|
121
|
+
src/parrot/mcp/transports/websocket.py
|
|
122
|
+
src/parrot/scheduler/manager.py
|
|
123
|
+
src/parrot/scheduler/models.py
|
|
124
|
+
src/parrot/scheduler/functions/__init__.py
|
|
125
|
+
src/parrot/server/__init__.py
|
|
126
|
+
src/parrot/server/version.py
|
|
127
|
+
src/parrot/services/agent_service.py
|
|
128
|
+
src/parrot/services/client.py
|
|
129
|
+
src/parrot/services/delivery.py
|
|
130
|
+
src/parrot/services/heartbeat.py
|
|
131
|
+
src/parrot/services/identity_mapping.py
|
|
132
|
+
src/parrot/services/models.py
|
|
133
|
+
src/parrot/services/o365_remote_auth.py
|
|
134
|
+
src/parrot/services/redis_listener.py
|
|
135
|
+
src/parrot/services/task_queue.py
|
|
136
|
+
src/parrot/services/vault_token_sync.py
|
|
137
|
+
src/parrot/services/whatsapp.py
|
|
138
|
+
src/parrot/services/worker_pool.py
|
|
139
|
+
tests/test_agenttalk_infographic_explanation.py
|
|
140
|
+
tests/test_agenttalk_resume_unit.py
|
|
141
|
+
tests/test_hitl_web_suspend_resume.py
|
|
142
|
+
tests/test_namespace_imports.py
|
|
143
|
+
tests/test_paused_envelope.py
|
|
144
|
+
tests/test_suspended_store.py
|
|
145
|
+
tests/test_suspending_web_human_tool.py
|
|
146
|
+
tests/test_wheel_layout.py
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
ai-parrot
|
|
2
|
+
|
|
3
|
+
[a2a]
|
|
4
|
+
PyJWT>=2.8.0
|
|
5
|
+
|
|
6
|
+
[all]
|
|
7
|
+
ai-parrot-server[a2a,autonomous,mcp,scheduler]
|
|
8
|
+
|
|
9
|
+
[autonomous]
|
|
10
|
+
aiofiles>=23.0
|
|
11
|
+
|
|
12
|
+
[mcp]
|
|
13
|
+
aioquic==1.3.0
|
|
14
|
+
pylsqpack==0.3.23
|
|
15
|
+
click>=8.1.7
|
|
16
|
+
PyYAML>=6.0.2
|
|
17
|
+
|
|
18
|
+
[scheduler]
|
|
19
|
+
apscheduler==3.11.2
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
parrot
|