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.
- giulia-0.1.21/PKG-INFO +40 -0
- giulia-0.1.21/giulia/__init__.py +129 -0
- giulia-0.1.21/giulia/agents/__init__.py +72 -0
- giulia-0.1.21/giulia/agents/a2a/__init__.py +11 -0
- giulia-0.1.21/giulia/agents/a2a/a2a_agent_factory.py +511 -0
- giulia-0.1.21/giulia/agents/a2a/a2a_app.py +127 -0
- giulia-0.1.21/giulia/agents/auth/__init__.py +29 -0
- giulia-0.1.21/giulia/agents/auth/api_keys.py +91 -0
- giulia-0.1.21/giulia/agents/auth/crypto.py +252 -0
- giulia-0.1.21/giulia/agents/auth/google_oauth.py +99 -0
- giulia-0.1.21/giulia/agents/auth/jwt_auth.py +169 -0
- giulia-0.1.21/giulia/agents/auth/security.py +103 -0
- giulia-0.1.21/giulia/agents/auth/token_mint.py +116 -0
- giulia-0.1.21/giulia/agents/core/__init__.py +14 -0
- giulia-0.1.21/giulia/agents/core/config.py +152 -0
- giulia-0.1.21/giulia/agents/core/config_schema.py +127 -0
- giulia-0.1.21/giulia/agents/core/constants.py +12 -0
- giulia-0.1.21/giulia/agents/core/context.py +33 -0
- giulia-0.1.21/giulia/agents/core/giulia_agent.py +366 -0
- giulia-0.1.21/giulia/agents/core/telemetry.py +93 -0
- giulia-0.1.21/giulia/agents/delegation/__init__.py +48 -0
- giulia-0.1.21/giulia/agents/delegation/backends.py +354 -0
- giulia-0.1.21/giulia/agents/delegation/handler.py +549 -0
- giulia-0.1.21/giulia/agents/delegation/redis_backend.py +275 -0
- giulia-0.1.21/giulia/agents/delegation/tools.py +140 -0
- giulia-0.1.21/giulia/agents/delegation/types.py +20 -0
- giulia-0.1.21/giulia/agents/google_chat/__init__.py +30 -0
- giulia-0.1.21/giulia/agents/google_chat/adk_tools.py +256 -0
- giulia-0.1.21/giulia/agents/google_chat/client.py +186 -0
- giulia-0.1.21/giulia/agents/google_chat/models.py +143 -0
- giulia-0.1.21/giulia/agents/google_chat/webhook_handler.py +81 -0
- giulia-0.1.21/giulia/agents/middlewares/__init__.py +11 -0
- giulia-0.1.21/giulia/agents/middlewares/api_key.py +97 -0
- giulia-0.1.21/giulia/agents/middlewares/request_logging.py +48 -0
- giulia-0.1.21/giulia/agents/middlewares/strip_prefix.py +22 -0
- giulia-0.1.21/giulia/agents/orchestration/__init__.py +57 -0
- giulia-0.1.21/giulia/agents/orchestration/activity_log.py +125 -0
- giulia-0.1.21/giulia/agents/orchestration/adk.py +493 -0
- giulia-0.1.21/giulia/agents/orchestration/approvals.py +322 -0
- giulia-0.1.21/giulia/agents/orchestration/heartbeat_db.py +175 -0
- giulia-0.1.21/giulia/agents/orchestration/starlette.py +126 -0
- giulia-0.1.21/giulia/agents/orchestration/thoughts_log.py +186 -0
- giulia-0.1.21/giulia/agents/orchestration/triggers_sources_db.py +145 -0
- giulia-0.1.21/giulia/agents/push_notifications/__init__.py +23 -0
- giulia-0.1.21/giulia/agents/push_notifications/client.py +123 -0
- giulia-0.1.21/giulia/agents/push_notifications/handler.py +115 -0
- giulia-0.1.21/giulia/agents/push_notifications/tools.py +152 -0
- giulia-0.1.21/giulia/agents/registry_client/__init__.py +13 -0
- giulia-0.1.21/giulia/agents/registry_client/agent_card_builder.py +96 -0
- giulia-0.1.21/giulia/agents/registry_client/agentfacts.py +116 -0
- giulia-0.1.21/giulia/agents/registry_client/discovery.py +201 -0
- giulia-0.1.21/giulia/agents/registry_client/registration.py +171 -0
- giulia-0.1.21/giulia/agents/services/__init__.py +7 -0
- giulia-0.1.21/giulia/agents/services/artifacts.py +212 -0
- giulia-0.1.21/giulia/agents/services/mcp_factories.py +22 -0
- giulia-0.1.21/giulia/agents/services/skill_loader.py +83 -0
- giulia-0.1.21/giulia/agents/utils/__init__.py +8 -0
- giulia-0.1.21/giulia/agents/utils/cache.py +60 -0
- giulia-0.1.21/giulia/agents/utils/urn.py +30 -0
- giulia-0.1.21/giulia/asyncpg_pool_connect.py +16 -0
- giulia-0.1.21/giulia/config.py +78 -0
- giulia-0.1.21/giulia/logging.py +184 -0
- giulia-0.1.21/giulia/providers/__init__.py +89 -0
- giulia-0.1.21/giulia/providers/database.py +255 -0
- giulia-0.1.21/giulia/providers/kms.py +155 -0
- giulia-0.1.21/giulia/providers/redis_auth.py +113 -0
- giulia-0.1.21/giulia/providers/registry.py +104 -0
- giulia-0.1.21/giulia/providers/secrets.py +100 -0
- giulia-0.1.21/giulia/registry/__init__.py +77 -0
- giulia-0.1.21/giulia/registry/cloudsql_store.py +328 -0
- giulia-0.1.21/giulia/registry/embeddings.py +93 -0
- giulia-0.1.21/giulia/registry/models.py +229 -0
- giulia-0.1.21/giulia/registry/registry.py +176 -0
- giulia-0.1.21/giulia/registry/store.py +147 -0
- giulia-0.1.21/giulia/registry/tools.py +222 -0
- giulia-0.1.21/giulia/sql.py +559 -0
- 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
|
+
]
|