giulia 0.1.21__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 (77) hide show
  1. giulia-0.1.21/PKG-INFO +40 -0
  2. giulia-0.1.21/giulia/__init__.py +129 -0
  3. giulia-0.1.21/giulia/agents/__init__.py +72 -0
  4. giulia-0.1.21/giulia/agents/a2a/__init__.py +11 -0
  5. giulia-0.1.21/giulia/agents/a2a/a2a_agent_factory.py +511 -0
  6. giulia-0.1.21/giulia/agents/a2a/a2a_app.py +127 -0
  7. giulia-0.1.21/giulia/agents/auth/__init__.py +29 -0
  8. giulia-0.1.21/giulia/agents/auth/api_keys.py +91 -0
  9. giulia-0.1.21/giulia/agents/auth/crypto.py +252 -0
  10. giulia-0.1.21/giulia/agents/auth/google_oauth.py +99 -0
  11. giulia-0.1.21/giulia/agents/auth/jwt_auth.py +169 -0
  12. giulia-0.1.21/giulia/agents/auth/security.py +103 -0
  13. giulia-0.1.21/giulia/agents/auth/token_mint.py +116 -0
  14. giulia-0.1.21/giulia/agents/core/__init__.py +14 -0
  15. giulia-0.1.21/giulia/agents/core/config.py +152 -0
  16. giulia-0.1.21/giulia/agents/core/config_schema.py +127 -0
  17. giulia-0.1.21/giulia/agents/core/constants.py +12 -0
  18. giulia-0.1.21/giulia/agents/core/context.py +33 -0
  19. giulia-0.1.21/giulia/agents/core/giulia_agent.py +366 -0
  20. giulia-0.1.21/giulia/agents/core/telemetry.py +93 -0
  21. giulia-0.1.21/giulia/agents/delegation/__init__.py +48 -0
  22. giulia-0.1.21/giulia/agents/delegation/backends.py +354 -0
  23. giulia-0.1.21/giulia/agents/delegation/handler.py +549 -0
  24. giulia-0.1.21/giulia/agents/delegation/redis_backend.py +275 -0
  25. giulia-0.1.21/giulia/agents/delegation/tools.py +140 -0
  26. giulia-0.1.21/giulia/agents/delegation/types.py +20 -0
  27. giulia-0.1.21/giulia/agents/google_chat/__init__.py +30 -0
  28. giulia-0.1.21/giulia/agents/google_chat/adk_tools.py +256 -0
  29. giulia-0.1.21/giulia/agents/google_chat/client.py +186 -0
  30. giulia-0.1.21/giulia/agents/google_chat/models.py +143 -0
  31. giulia-0.1.21/giulia/agents/google_chat/webhook_handler.py +81 -0
  32. giulia-0.1.21/giulia/agents/middlewares/__init__.py +11 -0
  33. giulia-0.1.21/giulia/agents/middlewares/api_key.py +97 -0
  34. giulia-0.1.21/giulia/agents/middlewares/request_logging.py +48 -0
  35. giulia-0.1.21/giulia/agents/middlewares/strip_prefix.py +22 -0
  36. giulia-0.1.21/giulia/agents/orchestration/__init__.py +57 -0
  37. giulia-0.1.21/giulia/agents/orchestration/activity_log.py +125 -0
  38. giulia-0.1.21/giulia/agents/orchestration/adk.py +493 -0
  39. giulia-0.1.21/giulia/agents/orchestration/approvals.py +322 -0
  40. giulia-0.1.21/giulia/agents/orchestration/heartbeat_db.py +175 -0
  41. giulia-0.1.21/giulia/agents/orchestration/starlette.py +126 -0
  42. giulia-0.1.21/giulia/agents/orchestration/thoughts_log.py +186 -0
  43. giulia-0.1.21/giulia/agents/orchestration/triggers_sources_db.py +145 -0
  44. giulia-0.1.21/giulia/agents/push_notifications/__init__.py +23 -0
  45. giulia-0.1.21/giulia/agents/push_notifications/client.py +123 -0
  46. giulia-0.1.21/giulia/agents/push_notifications/handler.py +115 -0
  47. giulia-0.1.21/giulia/agents/push_notifications/tools.py +152 -0
  48. giulia-0.1.21/giulia/agents/registry_client/__init__.py +13 -0
  49. giulia-0.1.21/giulia/agents/registry_client/agent_card_builder.py +96 -0
  50. giulia-0.1.21/giulia/agents/registry_client/agentfacts.py +116 -0
  51. giulia-0.1.21/giulia/agents/registry_client/discovery.py +201 -0
  52. giulia-0.1.21/giulia/agents/registry_client/registration.py +171 -0
  53. giulia-0.1.21/giulia/agents/services/__init__.py +7 -0
  54. giulia-0.1.21/giulia/agents/services/artifacts.py +212 -0
  55. giulia-0.1.21/giulia/agents/services/mcp_factories.py +22 -0
  56. giulia-0.1.21/giulia/agents/services/skill_loader.py +83 -0
  57. giulia-0.1.21/giulia/agents/utils/__init__.py +8 -0
  58. giulia-0.1.21/giulia/agents/utils/cache.py +60 -0
  59. giulia-0.1.21/giulia/agents/utils/urn.py +30 -0
  60. giulia-0.1.21/giulia/asyncpg_pool_connect.py +16 -0
  61. giulia-0.1.21/giulia/config.py +78 -0
  62. giulia-0.1.21/giulia/logging.py +184 -0
  63. giulia-0.1.21/giulia/providers/__init__.py +89 -0
  64. giulia-0.1.21/giulia/providers/database.py +255 -0
  65. giulia-0.1.21/giulia/providers/kms.py +155 -0
  66. giulia-0.1.21/giulia/providers/redis_auth.py +113 -0
  67. giulia-0.1.21/giulia/providers/registry.py +104 -0
  68. giulia-0.1.21/giulia/providers/secrets.py +100 -0
  69. giulia-0.1.21/giulia/registry/__init__.py +77 -0
  70. giulia-0.1.21/giulia/registry/cloudsql_store.py +328 -0
  71. giulia-0.1.21/giulia/registry/embeddings.py +93 -0
  72. giulia-0.1.21/giulia/registry/models.py +229 -0
  73. giulia-0.1.21/giulia/registry/registry.py +176 -0
  74. giulia-0.1.21/giulia/registry/store.py +147 -0
  75. giulia-0.1.21/giulia/registry/tools.py +222 -0
  76. giulia-0.1.21/giulia/sql.py +559 -0
  77. giulia-0.1.21/pyproject.toml +48 -0
giulia-0.1.21/PKG-INFO ADDED
@@ -0,0 +1,40 @@
1
+ Metadata-Version: 2.4
2
+ Name: giulia
3
+ Version: 0.1.21
4
+ Summary: White-label agent framework: registry discovery, registration, A2A, and cryptographic identity
5
+ Requires-Python: >=3.12
6
+ Requires-Dist: a2a-sdk[http-server]<1.0.0,>=0.3.25
7
+ Requires-Dist: asyncpg>=0.30.0
8
+ Requires-Dist: cachetools>=5.5.0
9
+ Requires-Dist: cryptography>=44.0.0
10
+ Requires-Dist: google-adk[mcp]>=1.23.0
11
+ Requires-Dist: httpx>=0.28.0
12
+ Requires-Dist: loguru>=0.7.0
13
+ Requires-Dist: pydantic-settings>=2.7.0
14
+ Requires-Dist: pydantic>=2.10.0
15
+ Requires-Dist: pyjwt>=2.9.0
16
+ Requires-Dist: python-dotenv>=1.0.0
17
+ Requires-Dist: pyyaml>=6.0.0
18
+ Requires-Dist: redis[hiredis]>=5.2.0
19
+ Requires-Dist: sqlalchemy>=2.0.0
20
+ Requires-Dist: starlette>=0.41.0
21
+ Provides-Extra: all
22
+ Requires-Dist: cloud-sql-python-connector[asyncpg]>=1.15.0; extra == 'all'
23
+ Requires-Dist: google-apps-chat>=0.9.0; extra == 'all'
24
+ Requires-Dist: google-auth>=2.0.0; extra == 'all'
25
+ Requires-Dist: google-cloud-kms>=2.24.0; extra == 'all'
26
+ Requires-Dist: google-cloud-logging>=3.11.0; extra == 'all'
27
+ Requires-Dist: google-cloud-pubsub>=2.29.0; extra == 'all'
28
+ Requires-Dist: google-cloud-secret-manager>=2.20.0; extra == 'all'
29
+ Requires-Dist: google-cloud-storage>=2.18.0; extra == 'all'
30
+ Requires-Dist: greenlet>=3.1.1; extra == 'all'
31
+ Provides-Extra: gcp
32
+ Requires-Dist: cloud-sql-python-connector[asyncpg]>=1.15.0; extra == 'gcp'
33
+ Requires-Dist: google-apps-chat>=0.9.0; extra == 'gcp'
34
+ Requires-Dist: google-auth>=2.0.0; extra == 'gcp'
35
+ Requires-Dist: google-cloud-kms>=2.24.0; extra == 'gcp'
36
+ Requires-Dist: google-cloud-logging>=3.11.0; extra == 'gcp'
37
+ Requires-Dist: google-cloud-pubsub>=2.29.0; extra == 'gcp'
38
+ Requires-Dist: google-cloud-secret-manager>=2.20.0; extra == 'gcp'
39
+ Requires-Dist: google-cloud-storage>=2.18.0; extra == 'gcp'
40
+ Requires-Dist: greenlet>=3.1.1; extra == 'gcp'
@@ -0,0 +1,129 @@
1
+ """Giulia — agent framework for registry discovery, registration, A2A, and cryptographic identity."""
2
+
3
+ from __future__ import annotations
4
+
5
+ from typing import Any
6
+
7
+ __version__ = "0.1.0"
8
+
9
+ # Re-export configure() at the top level so users can write:
10
+ # import giulia
11
+ # giulia.configure(secrets=..., kms=..., redis_auth=..., database=...)
12
+ # Re-export the providers sub-package for convenient access:
13
+ # giulia.providers.EnvSecretsProvider()
14
+ from giulia import providers # noqa: E402
15
+ from giulia.providers.registry import configure
16
+
17
+
18
+ def __getattr__(name: str) -> Any:
19
+ """Lazy-load common symbols for backward compatibility and performance."""
20
+ # Logging (auto-configured on first access)
21
+ if name == "logger":
22
+ from .logging import logger
23
+
24
+ return logger
25
+
26
+ # Core
27
+ if name == "GiuliaAgent":
28
+ from .core.giulia_agent import GiuliaAgent
29
+
30
+ return GiuliaAgent
31
+ if name == "config":
32
+ from .core.config import config
33
+
34
+ return config
35
+ if name == "Config":
36
+ from .core.config import Config
37
+
38
+ return Config
39
+ if name == "AgentYAMLConfig":
40
+ from .core.config_schema import AgentYAMLConfig
41
+
42
+ return AgentYAMLConfig
43
+
44
+ # Registry / Discovery
45
+ if name == "discover_agents":
46
+ from .registry_client.discovery import discover_agents
47
+
48
+ return discover_agents
49
+ if name == "resolve_agent":
50
+ from .registry_client.discovery import resolve_agent
51
+
52
+ return resolve_agent
53
+ if name == "register_private_agent":
54
+ from .registry_client.registration import register_private_agent
55
+
56
+ return register_private_agent
57
+
58
+ # Registry facade
59
+ if name == "Registry":
60
+ from .registry.registry import Registry
61
+
62
+ return Registry
63
+
64
+ # Registry models & protocol
65
+ if name == "AgentTier":
66
+ from .registry.models import AgentTier
67
+
68
+ return AgentTier
69
+ if name == "AgentAddr":
70
+ from .registry.models import AgentAddr
71
+
72
+ return AgentAddr
73
+ if name == "AgentAddrCreate":
74
+ from .registry.models import AgentAddrCreate
75
+
76
+ return AgentAddrCreate
77
+ if name == "AgentAddrUpdate":
78
+ from .registry.models import AgentAddrUpdate
79
+
80
+ return AgentAddrUpdate
81
+ if name == "AgentStore":
82
+ from .registry.store import AgentStore
83
+
84
+ return AgentStore
85
+
86
+ # Utils
87
+ if name == "urn_to_slug":
88
+ from .utils.urn import urn_to_slug
89
+
90
+ return urn_to_slug
91
+
92
+ # Auth
93
+ if name == "verify_jwt":
94
+ from .auth.jwt_auth import verify_jwt
95
+
96
+ return verify_jwt
97
+ if name == "JWTValidationError":
98
+ from .auth.jwt_auth import JWTValidationError
99
+
100
+ return JWTValidationError
101
+
102
+ raise AttributeError(f"module {__name__!r} has no attribute {name!r}")
103
+
104
+
105
+ __all__ = [
106
+ "configure",
107
+ "providers",
108
+ "logger",
109
+ "GiuliaAgent",
110
+ "config",
111
+ "Config",
112
+ "AgentYAMLConfig",
113
+ # Registry discovery
114
+ "discover_agents",
115
+ "resolve_agent",
116
+ "register_private_agent",
117
+ # Registry facade
118
+ "Registry",
119
+ # Registry models & protocol
120
+ "AgentTier",
121
+ "AgentAddr",
122
+ "AgentAddrCreate",
123
+ "AgentAddrUpdate",
124
+ "AgentStore",
125
+ # Utils / auth
126
+ "urn_to_slug",
127
+ "verify_jwt",
128
+ "JWTValidationError",
129
+ ]
@@ -0,0 +1,72 @@
1
+ """Giulia — agent framework for registry discovery, registration, A2A, and cryptographic identity."""
2
+
3
+ from __future__ import annotations
4
+
5
+ __version__ = "0.1.0"
6
+
7
+
8
+ # Lazy-load common symbols for backward compatibility and performance
9
+ def __getattr__(name: str):
10
+ # Core
11
+ if name == "GiuliaAgent":
12
+ from .core.giulia_agent import GiuliaAgent
13
+
14
+ return GiuliaAgent
15
+ if name == "config":
16
+ from .core.config import config
17
+
18
+ return config
19
+ if name == "Config":
20
+ from .core.config import Config
21
+
22
+ return Config
23
+ if name == "AgentYAMLConfig":
24
+ from .core.config_schema import AgentYAMLConfig
25
+
26
+ return AgentYAMLConfig
27
+
28
+ # Registry / Discovery
29
+ if name == "discover_agents":
30
+ from .registry_client.discovery import discover_agents
31
+
32
+ return discover_agents
33
+ if name == "resolve_agent":
34
+ from .registry_client.discovery import resolve_agent
35
+
36
+ return resolve_agent
37
+ if name == "register_private_agent":
38
+ from .registry_client.registration import register_private_agent
39
+
40
+ return register_private_agent
41
+
42
+ # Utils
43
+ if name == "urn_to_slug":
44
+ from .utils.urn import urn_to_slug
45
+
46
+ return urn_to_slug
47
+
48
+ # Auth
49
+ if name == "verify_jwt":
50
+ from .auth.jwt_auth import verify_jwt
51
+
52
+ return verify_jwt
53
+ if name == "JWTValidationError":
54
+ from .auth.jwt_auth import JWTValidationError
55
+
56
+ return JWTValidationError
57
+
58
+ raise AttributeError(f"module {__name__!r} has no attribute {name!r}")
59
+
60
+
61
+ __all__ = [
62
+ "GiuliaAgent",
63
+ "config",
64
+ "Config",
65
+ "AgentYAMLConfig",
66
+ "discover_agents",
67
+ "resolve_agent",
68
+ "register_private_agent",
69
+ "urn_to_slug",
70
+ "verify_jwt",
71
+ "JWTValidationError",
72
+ ]
@@ -0,0 +1,11 @@
1
+ from .a2a_agent_factory import (
2
+ create_a2a_registry_oauth_async_client,
3
+ remote_a2a_agent_from_registry,
4
+ )
5
+ from .a2a_app import to_a2a_giulia
6
+
7
+ __all__ = [
8
+ "remote_a2a_agent_from_registry",
9
+ "create_a2a_registry_oauth_async_client",
10
+ "to_a2a_giulia",
11
+ ]