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.
Files changed (148) hide show
  1. ai_parrot_server-0.25.1/PKG-INFO +86 -0
  2. ai_parrot_server-0.25.1/README.md +50 -0
  3. ai_parrot_server-0.25.1/pyproject.toml +84 -0
  4. ai_parrot_server-0.25.1/setup.cfg +4 -0
  5. ai_parrot_server-0.25.1/src/ai_parrot_server.egg-info/PKG-INFO +86 -0
  6. ai_parrot_server-0.25.1/src/ai_parrot_server.egg-info/SOURCES.txt +146 -0
  7. ai_parrot_server-0.25.1/src/ai_parrot_server.egg-info/dependency_links.txt +1 -0
  8. ai_parrot_server-0.25.1/src/ai_parrot_server.egg-info/entry_points.txt +2 -0
  9. ai_parrot_server-0.25.1/src/ai_parrot_server.egg-info/requires.txt +19 -0
  10. ai_parrot_server-0.25.1/src/ai_parrot_server.egg-info/top_level.txt +1 -0
  11. ai_parrot_server-0.25.1/src/parrot/a2a/security.py +2065 -0
  12. ai_parrot_server-0.25.1/src/parrot/a2a/server.py +770 -0
  13. ai_parrot_server-0.25.1/src/parrot/autonomous/admin.py +400 -0
  14. ai_parrot_server-0.25.1/src/parrot/autonomous/cli.py +167 -0
  15. ai_parrot_server-0.25.1/src/parrot/autonomous/deploy/__init__.py +1 -0
  16. ai_parrot_server-0.25.1/src/parrot/autonomous/deploy/installer.py +148 -0
  17. ai_parrot_server-0.25.1/src/parrot/autonomous/deploy/templates.py +267 -0
  18. ai_parrot_server-0.25.1/src/parrot/autonomous/evb.py +19 -0
  19. ai_parrot_server-0.25.1/src/parrot/autonomous/example.py +82 -0
  20. ai_parrot_server-0.25.1/src/parrot/autonomous/orchestrator.py +1237 -0
  21. ai_parrot_server-0.25.1/src/parrot/autonomous/redis_jobs.py +233 -0
  22. ai_parrot_server-0.25.1/src/parrot/autonomous/scheduler.py +58 -0
  23. ai_parrot_server-0.25.1/src/parrot/autonomous/transport/__init__.py +5 -0
  24. ai_parrot_server-0.25.1/src/parrot/autonomous/transport/base.py +139 -0
  25. ai_parrot_server-0.25.1/src/parrot/autonomous/transport/filesystem/__init__.py +11 -0
  26. ai_parrot_server-0.25.1/src/parrot/autonomous/transport/filesystem/__main__.py +6 -0
  27. ai_parrot_server-0.25.1/src/parrot/autonomous/transport/filesystem/channel.py +149 -0
  28. ai_parrot_server-0.25.1/src/parrot/autonomous/transport/filesystem/cli.py +243 -0
  29. ai_parrot_server-0.25.1/src/parrot/autonomous/transport/filesystem/config.py +71 -0
  30. ai_parrot_server-0.25.1/src/parrot/autonomous/transport/filesystem/feed.py +118 -0
  31. ai_parrot_server-0.25.1/src/parrot/autonomous/transport/filesystem/hook.py +148 -0
  32. ai_parrot_server-0.25.1/src/parrot/autonomous/transport/filesystem/inbox.py +254 -0
  33. ai_parrot_server-0.25.1/src/parrot/autonomous/transport/filesystem/registry.py +237 -0
  34. ai_parrot_server-0.25.1/src/parrot/autonomous/transport/filesystem/reservation.py +199 -0
  35. ai_parrot_server-0.25.1/src/parrot/autonomous/transport/filesystem/transport.py +306 -0
  36. ai_parrot_server-0.25.1/src/parrot/autonomous/webhooks.py +299 -0
  37. ai_parrot_server-0.25.1/src/parrot/handlers/agent.py +2993 -0
  38. ai_parrot_server-0.25.1/src/parrot/handlers/agents/__init__.py +4 -0
  39. ai_parrot_server-0.25.1/src/parrot/handlers/agents/abstract.py +913 -0
  40. ai_parrot_server-0.25.1/src/parrot/handlers/agents/data.py +78 -0
  41. ai_parrot_server-0.25.1/src/parrot/handlers/agents/ephemeral.py +346 -0
  42. ai_parrot_server-0.25.1/src/parrot/handlers/agents/factory.py +190 -0
  43. ai_parrot_server-0.25.1/src/parrot/handlers/agents/sharing.py +78 -0
  44. ai_parrot_server-0.25.1/src/parrot/handlers/agents/users.py +714 -0
  45. ai_parrot_server-0.25.1/src/parrot/handlers/artifacts.py +673 -0
  46. ai_parrot_server-0.25.1/src/parrot/handlers/bots.py +1406 -0
  47. ai_parrot_server-0.25.1/src/parrot/handlers/chat.py +1011 -0
  48. ai_parrot_server-0.25.1/src/parrot/handlers/chat_interaction.py +404 -0
  49. ai_parrot_server-0.25.1/src/parrot/handlers/config_handler.py +460 -0
  50. ai_parrot_server-0.25.1/src/parrot/handlers/credentials.py +523 -0
  51. ai_parrot_server-0.25.1/src/parrot/handlers/crew/__init__.py +4 -0
  52. ai_parrot_server-0.25.1/src/parrot/handlers/crew/execution_handler.py +670 -0
  53. ai_parrot_server-0.25.1/src/parrot/handlers/crew/handler.py +529 -0
  54. ai_parrot_server-0.25.1/src/parrot/handlers/crew/models.py +153 -0
  55. ai_parrot_server-0.25.1/src/parrot/handlers/crew/redis_persistence.py +634 -0
  56. ai_parrot_server-0.25.1/src/parrot/handlers/csp.py +134 -0
  57. ai_parrot_server-0.25.1/src/parrot/handlers/dashboard_handler.py +634 -0
  58. ai_parrot_server-0.25.1/src/parrot/handlers/database/__init__.py +7 -0
  59. ai_parrot_server-0.25.1/src/parrot/handlers/database/helpers.py +268 -0
  60. ai_parrot_server-0.25.1/src/parrot/handlers/datasets.py +599 -0
  61. ai_parrot_server-0.25.1/src/parrot/handlers/google_generation.py +178 -0
  62. ai_parrot_server-0.25.1/src/parrot/handlers/infographic.py +474 -0
  63. ai_parrot_server-0.25.1/src/parrot/handlers/integrations.py +215 -0
  64. ai_parrot_server-0.25.1/src/parrot/handlers/jobs/__init__.py +12 -0
  65. ai_parrot_server-0.25.1/src/parrot/handlers/jobs/job.py +471 -0
  66. ai_parrot_server-0.25.1/src/parrot/handlers/jobs/mixin.py +627 -0
  67. ai_parrot_server-0.25.1/src/parrot/handlers/jobs/models.py +117 -0
  68. ai_parrot_server-0.25.1/src/parrot/handlers/jobs/redis_store.py +327 -0
  69. ai_parrot_server-0.25.1/src/parrot/handlers/jobs/worker.py +65 -0
  70. ai_parrot_server-0.25.1/src/parrot/handlers/llm.py +286 -0
  71. ai_parrot_server-0.25.1/src/parrot/handlers/lyria_music.py +142 -0
  72. ai_parrot_server-0.25.1/src/parrot/handlers/mcp_helper.py +446 -0
  73. ai_parrot_server-0.25.1/src/parrot/handlers/mcp_persistence.py +191 -0
  74. ai_parrot_server-0.25.1/src/parrot/handlers/models/__init__.py +36 -0
  75. ai_parrot_server-0.25.1/src/parrot/handlers/models/_encrypted_field.py +131 -0
  76. ai_parrot_server-0.25.1/src/parrot/handlers/models/bots.py +646 -0
  77. ai_parrot_server-0.25.1/src/parrot/handlers/models/credentials.py +81 -0
  78. ai_parrot_server-0.25.1/src/parrot/handlers/models/understanding.py +214 -0
  79. ai_parrot_server-0.25.1/src/parrot/handlers/models/users_bots.py +205 -0
  80. ai_parrot_server-0.25.1/src/parrot/handlers/models/users_prompts.py +66 -0
  81. ai_parrot_server-0.25.1/src/parrot/handlers/o365_auth.py +105 -0
  82. ai_parrot_server-0.25.1/src/parrot/handlers/planogram_compliance.py +2 -0
  83. ai_parrot_server-0.25.1/src/parrot/handlers/print_pdf.py +116 -0
  84. ai_parrot_server-0.25.1/src/parrot/handlers/programs.py +114 -0
  85. ai_parrot_server-0.25.1/src/parrot/handlers/scheduler.py +150 -0
  86. ai_parrot_server-0.25.1/src/parrot/handlers/scraping/__init__.py +47 -0
  87. ai_parrot_server-0.25.1/src/parrot/handlers/scraping/handler.py +434 -0
  88. ai_parrot_server-0.25.1/src/parrot/handlers/scraping/info.py +136 -0
  89. ai_parrot_server-0.25.1/src/parrot/handlers/scraping/models.py +159 -0
  90. ai_parrot_server-0.25.1/src/parrot/handlers/stores/__init__.py +5 -0
  91. ai_parrot_server-0.25.1/src/parrot/handlers/stores/handler.py +903 -0
  92. ai_parrot_server-0.25.1/src/parrot/handlers/stores/helpers.py +105 -0
  93. ai_parrot_server-0.25.1/src/parrot/handlers/stream.py +374 -0
  94. ai_parrot_server-0.25.1/src/parrot/handlers/testing_handler.py +264 -0
  95. ai_parrot_server-0.25.1/src/parrot/handlers/threads.py +378 -0
  96. ai_parrot_server-0.25.1/src/parrot/handlers/tools_catalog.py +114 -0
  97. ai_parrot_server-0.25.1/src/parrot/handlers/understanding.py +417 -0
  98. ai_parrot_server-0.25.1/src/parrot/handlers/user.py +775 -0
  99. ai_parrot_server-0.25.1/src/parrot/handlers/user_objects.py +334 -0
  100. ai_parrot_server-0.25.1/src/parrot/handlers/video_reel.py +336 -0
  101. ai_parrot_server-0.25.1/src/parrot/handlers/web_hitl.py +544 -0
  102. ai_parrot_server-0.25.1/src/parrot/human/suspended_store.py +161 -0
  103. ai_parrot_server-0.25.1/src/parrot/manager/ephemeral.py +426 -0
  104. ai_parrot_server-0.25.1/src/parrot/manager/manager.py +2145 -0
  105. ai_parrot_server-0.25.1/src/parrot/mcp/adapter.py +105 -0
  106. ai_parrot_server-0.25.1/src/parrot/mcp/chrome.py +124 -0
  107. ai_parrot_server-0.25.1/src/parrot/mcp/cli.py +189 -0
  108. ai_parrot_server-0.25.1/src/parrot/mcp/config.py +94 -0
  109. ai_parrot_server-0.25.1/src/parrot/mcp/oauth_server.py +699 -0
  110. ai_parrot_server-0.25.1/src/parrot/mcp/parrot_server.py +295 -0
  111. ai_parrot_server-0.25.1/src/parrot/mcp/resources.py +26 -0
  112. ai_parrot_server-0.25.1/src/parrot/mcp/server.py +225 -0
  113. ai_parrot_server-0.25.1/src/parrot/mcp/simple_server.py +291 -0
  114. ai_parrot_server-0.25.1/src/parrot/mcp/transports/__init__.py +3 -0
  115. ai_parrot_server-0.25.1/src/parrot/mcp/transports/base.py +366 -0
  116. ai_parrot_server-0.25.1/src/parrot/mcp/transports/grpc_session.py +163 -0
  117. ai_parrot_server-0.25.1/src/parrot/mcp/transports/http.py +345 -0
  118. ai_parrot_server-0.25.1/src/parrot/mcp/transports/quic.py +1082 -0
  119. ai_parrot_server-0.25.1/src/parrot/mcp/transports/sse.py +357 -0
  120. ai_parrot_server-0.25.1/src/parrot/mcp/transports/stdio.py +317 -0
  121. ai_parrot_server-0.25.1/src/parrot/mcp/transports/unix.py +395 -0
  122. ai_parrot_server-0.25.1/src/parrot/mcp/transports/websocket.py +547 -0
  123. ai_parrot_server-0.25.1/src/parrot/mcp/wrapper.py +187 -0
  124. ai_parrot_server-0.25.1/src/parrot/scheduler/functions/__init__.py +215 -0
  125. ai_parrot_server-0.25.1/src/parrot/scheduler/manager.py +1739 -0
  126. ai_parrot_server-0.25.1/src/parrot/scheduler/models.py +64 -0
  127. ai_parrot_server-0.25.1/src/parrot/server/__init__.py +11 -0
  128. ai_parrot_server-0.25.1/src/parrot/server/version.py +11 -0
  129. ai_parrot_server-0.25.1/src/parrot/services/agent_service.py +465 -0
  130. ai_parrot_server-0.25.1/src/parrot/services/client.py +151 -0
  131. ai_parrot_server-0.25.1/src/parrot/services/delivery.py +213 -0
  132. ai_parrot_server-0.25.1/src/parrot/services/heartbeat.py +129 -0
  133. ai_parrot_server-0.25.1/src/parrot/services/identity_mapping.py +203 -0
  134. ai_parrot_server-0.25.1/src/parrot/services/models.py +140 -0
  135. ai_parrot_server-0.25.1/src/parrot/services/o365_remote_auth.py +235 -0
  136. ai_parrot_server-0.25.1/src/parrot/services/redis_listener.py +170 -0
  137. ai_parrot_server-0.25.1/src/parrot/services/task_queue.py +137 -0
  138. ai_parrot_server-0.25.1/src/parrot/services/vault_token_sync.py +200 -0
  139. ai_parrot_server-0.25.1/src/parrot/services/whatsapp.py +1337 -0
  140. ai_parrot_server-0.25.1/src/parrot/services/worker_pool.py +79 -0
  141. ai_parrot_server-0.25.1/tests/test_agenttalk_infographic_explanation.py +48 -0
  142. ai_parrot_server-0.25.1/tests/test_agenttalk_resume_unit.py +265 -0
  143. ai_parrot_server-0.25.1/tests/test_hitl_web_suspend_resume.py +368 -0
  144. ai_parrot_server-0.25.1/tests/test_namespace_imports.py +387 -0
  145. ai_parrot_server-0.25.1/tests/test_paused_envelope.py +92 -0
  146. ai_parrot_server-0.25.1/tests/test_suspended_store.py +174 -0
  147. ai_parrot_server-0.25.1/tests/test_suspending_web_human_tool.py +65 -0
  148. 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,4 @@
1
+ [egg_info]
2
+ tag_build =
3
+ tag_date = 0
4
+
@@ -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,2 @@
1
+ [console_scripts]
2
+ parrot-fs = parrot.autonomous.transport.filesystem.cli:main
@@ -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