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 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