intermesh 0.3.0__py3-none-any.whl
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.
- intermesh/__init__.py +56 -0
- intermesh/adapters.py +90 -0
- intermesh/admin.py +733 -0
- intermesh/agent.py +520 -0
- intermesh/apikeys.py +273 -0
- intermesh/audit.py +153 -0
- intermesh/bridge.py +181 -0
- intermesh/cli.py +453 -0
- intermesh/config.py +145 -0
- intermesh/crypto.py +150 -0
- intermesh/egress.py +180 -0
- intermesh/escrow.py +208 -0
- intermesh/guardrails.py +235 -0
- intermesh/hardware.py +32 -0
- intermesh/health.py +56 -0
- intermesh/hub.py +996 -0
- intermesh/identity.py +94 -0
- intermesh/logger.py +90 -0
- intermesh/message.py +152 -0
- intermesh/metrics.py +49 -0
- intermesh/peering.py +103 -0
- intermesh/pipeline.py +218 -0
- intermesh/policy.py +35 -0
- intermesh/ratelimit.py +42 -0
- intermesh/schema.py +125 -0
- intermesh/secret.py +115 -0
- intermesh/signing.py +64 -0
- intermesh/snapshot.py +342 -0
- intermesh/store.py +177 -0
- intermesh/task.py +122 -0
- intermesh-0.3.0.dist-info/METADATA +198 -0
- intermesh-0.3.0.dist-info/RECORD +35 -0
- intermesh-0.3.0.dist-info/WHEEL +5 -0
- intermesh-0.3.0.dist-info/entry_points.txt +2 -0
- intermesh-0.3.0.dist-info/top_level.txt +1 -0
intermesh/__init__.py
ADDED
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
from intermesh.agent import InterMeshAgent
|
|
2
|
+
from intermesh.message import MessageType, InterMeshMessage
|
|
3
|
+
from intermesh.identity import AgentIdentity
|
|
4
|
+
from intermesh.task import InterMeshTask, TaskStatus
|
|
5
|
+
from intermesh.audit import ImmutableAuditLog, AuditEntry
|
|
6
|
+
from intermesh.ratelimit import RateLimiter, TokenBucket
|
|
7
|
+
from intermesh.adapters import from_callable, from_langchain, intermesh_service
|
|
8
|
+
from intermesh.bridge import (
|
|
9
|
+
BridgeError, exec_handler, from_command, from_http, http_handler,
|
|
10
|
+
post_task, run_command,
|
|
11
|
+
)
|
|
12
|
+
from intermesh.egress import EgressBlocked, EgressPolicy, EgressRule, apply_egress
|
|
13
|
+
from intermesh.guardrails import AsimovGuardrailEngine, GuardrailPolicy, PolicyViolationError, CircuitBreaker
|
|
14
|
+
|
|
15
|
+
# Imports optionnels pour la rétro-compatibilité complète
|
|
16
|
+
try:
|
|
17
|
+
from intermesh.store import InterMeshStore
|
|
18
|
+
except ImportError:
|
|
19
|
+
pass
|
|
20
|
+
|
|
21
|
+
try:
|
|
22
|
+
from intermesh.pipeline import InterMeshPipeline, PipelineError, fan_out
|
|
23
|
+
except ImportError:
|
|
24
|
+
pass
|
|
25
|
+
|
|
26
|
+
try:
|
|
27
|
+
from intermesh.logger import get_logger, JSONFormatter, StandardFormatter
|
|
28
|
+
except ImportError:
|
|
29
|
+
pass
|
|
30
|
+
|
|
31
|
+
try:
|
|
32
|
+
from intermesh.metrics import InterMeshMetricsCollector
|
|
33
|
+
except ImportError:
|
|
34
|
+
pass
|
|
35
|
+
|
|
36
|
+
try:
|
|
37
|
+
from intermesh.policy import InterMeshPolicy
|
|
38
|
+
except ImportError:
|
|
39
|
+
pass
|
|
40
|
+
|
|
41
|
+
try:
|
|
42
|
+
from intermesh.health import InterMeshHealthChecker
|
|
43
|
+
except ImportError:
|
|
44
|
+
pass
|
|
45
|
+
|
|
46
|
+
try:
|
|
47
|
+
from intermesh.config import Settings
|
|
48
|
+
except ImportError:
|
|
49
|
+
pass
|
|
50
|
+
|
|
51
|
+
try:
|
|
52
|
+
from intermesh.snapshot import SnapshotError
|
|
53
|
+
except ImportError:
|
|
54
|
+
pass
|
|
55
|
+
|
|
56
|
+
__version__ = "0.3.0"
|
intermesh/adapters.py
ADDED
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import asyncio
|
|
2
|
+
import inspect
|
|
3
|
+
from typing import Callable, Any, Optional, List
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
def from_callable(
|
|
7
|
+
fn: Callable[[Any], Any],
|
|
8
|
+
name: str,
|
|
9
|
+
capabilities: Optional[List[str]] = None,
|
|
10
|
+
roles: Optional[List[str]] = None,
|
|
11
|
+
permissions: Optional[List[str]] = None,
|
|
12
|
+
org_id: str = "default",
|
|
13
|
+
hub_url: str = "ws://localhost:8765",
|
|
14
|
+
encrypt: bool = True
|
|
15
|
+
):
|
|
16
|
+
from intermesh.agent import InterMeshAgent
|
|
17
|
+
|
|
18
|
+
agent = InterMeshAgent(
|
|
19
|
+
name=name,
|
|
20
|
+
org_id=org_id,
|
|
21
|
+
capabilities=capabilities or ["compute"],
|
|
22
|
+
roles=roles or ["worker"],
|
|
23
|
+
permissions=permissions or [],
|
|
24
|
+
hub_url=hub_url,
|
|
25
|
+
encrypt=encrypt
|
|
26
|
+
)
|
|
27
|
+
|
|
28
|
+
async def adapter_task_handler(input_data: Any, task: Any):
|
|
29
|
+
if inspect.iscoroutinefunction(fn):
|
|
30
|
+
return await fn(input_data)
|
|
31
|
+
else:
|
|
32
|
+
return fn(input_data)
|
|
33
|
+
|
|
34
|
+
agent.on_task(adapter_task_handler)
|
|
35
|
+
return agent
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
def from_langchain(
|
|
39
|
+
chain_or_runnable: Any,
|
|
40
|
+
name: str,
|
|
41
|
+
capabilities: Optional[List[str]] = None,
|
|
42
|
+
roles: Optional[List[str]] = None,
|
|
43
|
+
hub_url: str = "ws://localhost:8765",
|
|
44
|
+
encrypt: bool = True
|
|
45
|
+
):
|
|
46
|
+
from intermesh.agent import InterMeshAgent
|
|
47
|
+
|
|
48
|
+
agent = InterMeshAgent(
|
|
49
|
+
name=name,
|
|
50
|
+
capabilities=capabilities or ["langchain_chain"],
|
|
51
|
+
roles=roles or ["worker"],
|
|
52
|
+
hub_url=hub_url,
|
|
53
|
+
encrypt=encrypt
|
|
54
|
+
)
|
|
55
|
+
|
|
56
|
+
async def langchain_handler(input_data: Any, task: Any):
|
|
57
|
+
if hasattr(chain_or_runnable, "ainvoke"):
|
|
58
|
+
res = await chain_or_runnable.ainvoke(input_data)
|
|
59
|
+
elif hasattr(chain_or_runnable, "invoke"):
|
|
60
|
+
res = chain_or_runnable.invoke(input_data)
|
|
61
|
+
elif hasattr(chain_or_runnable, "run"):
|
|
62
|
+
res = chain_or_runnable.run(input_data)
|
|
63
|
+
elif callable(chain_or_runnable):
|
|
64
|
+
res = chain_or_runnable(input_data)
|
|
65
|
+
else:
|
|
66
|
+
raise TypeError("L'objet fourni n'est pas un Runnable/Chain LangChain valide.")
|
|
67
|
+
|
|
68
|
+
return {"output": res, "adapter": "langchain_intermesh_v1"}
|
|
69
|
+
|
|
70
|
+
agent.on_task(langchain_handler)
|
|
71
|
+
return agent
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
def intermesh_service(
|
|
75
|
+
name: str,
|
|
76
|
+
capabilities: Optional[List[str]] = None,
|
|
77
|
+
roles: Optional[List[str]] = None,
|
|
78
|
+
hub_url: str = "ws://localhost:8765",
|
|
79
|
+
encrypt: bool = True
|
|
80
|
+
):
|
|
81
|
+
def decorator(fn: Callable[[Any], Any]):
|
|
82
|
+
return from_callable(
|
|
83
|
+
fn=fn,
|
|
84
|
+
name=name,
|
|
85
|
+
capabilities=capabilities,
|
|
86
|
+
roles=roles,
|
|
87
|
+
hub_url=hub_url,
|
|
88
|
+
encrypt=encrypt
|
|
89
|
+
)
|
|
90
|
+
return decorator
|