diff --git a/EAIP_Technical_Specification.xml b/EAIP_Technical_Specification.xml new file mode 100644 index 0000000..7766aec --- /dev/null +++ b/EAIP_Technical_Specification.xml @@ -0,0 +1,75 @@ + + + + + Enterprise AI Agent Interoperability Protocol (EAIP) Technical Specification + EAIP + 1.0.0 + DRAFT + 2026-05-29 + + + + Necessity of Standardization + + The rapid proliferation of autonomous AI agents within enterprise environments has led to a fragmented ecosystem. Without a standardized protocol, inter-agent collaboration is hindered by incompatible communication patterns, inconsistent identity management, and opaque state handling. EAIP addresses these challenges by providing a common framework for discovery, authentication, and task delegation, ensuring seamless interoperability across diverse agentic systems. + + + + + API Architecture + + EAIP mandates the use of gRPC over HTTP/2 as the primary transport mechanism. This choice is driven by the need for high-performance, bidirectional streaming, and strong contract enforcement via Protocol Buffers. gRPC enables efficient task handoff and real-time feedback loops between agents. While REST and WebSockets were considered, gRPC's support for strictly typed interfaces and multiplexed streams makes it the optimal choice for complex agent-to-agent interactions. + + + gRPC Configuration + + Agents MUST implement services using proto3 definitions. All service methods SHOULD support deadline propagation to ensure system-wide responsiveness. + + + + + + IAM for Autonomous Agents + + Security in EAIP is built on the SPIFFE (Secure Production Identity Framework for Everyone) standard. Each agent is assigned a SPIFFE ID, which is used to issue short-lived, cryptographically verifiable SVIDs (SPIFFE Verifiable Identity Documents). SPIRE is recommended as the control plane for attesting agent workloads and managing the SVID lifecycle. Mutual TLS (mTLS) using X.509 SVIDs is the required method for securing agent-to-agent communication. + + + + + State & Error Management + + EAIP introduces the Recursive Context Envelope (RCE) for managing distributed agent state. The RCE is a nested data structure that accompanies every request, capturing the lineage of the task, current execution context, and accumulated error metadata. This allows agents to maintain a shared understanding of multi-step processes without relying on a centralized database for transient state. Errors are propagated up the RCE chain, enabling sophisticated recovery and backtracking strategies. + + + + + + The following sequence diagram illustrates the standard EAIP flow for SVID acquisition, agent lookup, and task execution with RCE state management. + + >SPIRE: Request SVID + SPIRE-->>Caller: X.509 SVID + Caller->>Registry: Lookup Target (capabilities) + Registry-->>Caller: Target Endpoint + Caller->>RCE_Store: Init Envelope (RCE depth-0 root) + Caller->>Target: HandoffRequest (gRPC/HTTP/2, SVID, RCE root) + Target->>RCE_Store: Read Context + Target->>Caller: TaskStream (gRPC bidi, HTTP/2) + Target->>RCE_Store: Update Context (append child RCE) + Target->>Caller: TaskComplete + ]]> + + + diff --git a/EAIP_Technical_Specification.xsd b/EAIP_Technical_Specification.xsd new file mode 100644 index 0000000..68908e7 --- /dev/null +++ b/EAIP_Technical_Specification.xsd @@ -0,0 +1,75 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/__pycache__/main.cpython-312.pyc b/__pycache__/main.cpython-312.pyc new file mode 100644 index 0000000..579796c Binary files /dev/null and b/__pycache__/main.cpython-312.pyc differ diff --git a/__pycache__/test_cv_module.cpython-312-pytest-9.0.3.pyc b/__pycache__/test_cv_module.cpython-312-pytest-9.0.3.pyc new file mode 100644 index 0000000..ca4a1e9 Binary files /dev/null and b/__pycache__/test_cv_module.cpython-312-pytest-9.0.3.pyc differ diff --git a/__pycache__/test_main.cpython-312-pytest-9.0.3.pyc b/__pycache__/test_main.cpython-312-pytest-9.0.3.pyc new file mode 100644 index 0000000..1033710 Binary files /dev/null and b/__pycache__/test_main.cpython-312-pytest-9.0.3.pyc differ diff --git a/__pycache__/test_nlp_module.cpython-312-pytest-9.0.3.pyc b/__pycache__/test_nlp_module.cpython-312-pytest-9.0.3.pyc new file mode 100644 index 0000000..5718b53 Binary files /dev/null and b/__pycache__/test_nlp_module.cpython-312-pytest-9.0.3.pyc differ diff --git a/__pycache__/test_speech_processor.cpython-312-pytest-9.0.3.pyc b/__pycache__/test_speech_processor.cpython-312-pytest-9.0.3.pyc new file mode 100644 index 0000000..479b88e Binary files /dev/null and b/__pycache__/test_speech_processor.cpython-312-pytest-9.0.3.pyc differ diff --git a/pipeline_2026-05-29_18-23-13_889624.log b/pipeline_2026-05-29_18-23-13_889624.log new file mode 100644 index 0000000..e262c21 --- /dev/null +++ b/pipeline_2026-05-29_18-23-13_889624.log @@ -0,0 +1,3 @@ +2026-05-29 18:23:13.925 | INFO | main::23 - Application startup +2026-05-29 18:23:29.683 | INFO | main:__init__:56 - NLP model loaded successfully. +2026-05-29 18:23:30.156 | INFO | main:__init__:73 - CV model loaded successfully. diff --git a/pipeline_2026-05-29_18-25-55_544530.log b/pipeline_2026-05-29_18-25-55_544530.log new file mode 100644 index 0000000..95811ab --- /dev/null +++ b/pipeline_2026-05-29_18-25-55_544530.log @@ -0,0 +1,12 @@ +2026-05-29 18:25:55.555 | INFO | main::23 - Application startup +2026-05-29 18:25:56.900 | INFO | main:__init__:56 - NLP model loaded successfully. +2026-05-29 18:25:56.965 | INFO | main:__init__:73 - CV model loaded successfully. +2026-05-29 18:26:07.257 | INFO | main::23 - Application startup +2026-05-29 18:26:08.071 | INFO | main:__init__:56 - NLP model loaded successfully. +2026-05-29 18:26:08.130 | INFO | main:__init__:73 - CV model loaded successfully. +2026-05-29 18:26:09.584 | INFO | main::23 - Application startup +2026-05-29 18:26:10.647 | INFO | main:__init__:56 - NLP model loaded successfully. +2026-05-29 18:26:10.708 | INFO | main:__init__:73 - CV model loaded successfully. +2026-05-29 18:26:12.233 | INFO | main::23 - Application startup +2026-05-29 18:26:13.095 | INFO | main:__init__:56 - NLP model loaded successfully. +2026-05-29 18:26:13.246 | INFO | main:__init__:73 - CV model loaded successfully. diff --git a/pipeline_2026-05-29_18-26-07_247345.log b/pipeline_2026-05-29_18-26-07_247345.log new file mode 100644 index 0000000..e6eeaa3 --- /dev/null +++ b/pipeline_2026-05-29_18-26-07_247345.log @@ -0,0 +1,9 @@ +2026-05-29 18:26:07.257 | INFO | main::23 - Application startup +2026-05-29 18:26:08.071 | INFO | main:__init__:56 - NLP model loaded successfully. +2026-05-29 18:26:08.130 | INFO | main:__init__:73 - CV model loaded successfully. +2026-05-29 18:26:09.584 | INFO | main::23 - Application startup +2026-05-29 18:26:10.647 | INFO | main:__init__:56 - NLP model loaded successfully. +2026-05-29 18:26:10.708 | INFO | main:__init__:73 - CV model loaded successfully. +2026-05-29 18:26:12.233 | INFO | main::23 - Application startup +2026-05-29 18:26:13.095 | INFO | main:__init__:56 - NLP model loaded successfully. +2026-05-29 18:26:13.246 | INFO | main:__init__:73 - CV model loaded successfully. diff --git a/pipeline_2026-05-29_18-26-09_575874.log b/pipeline_2026-05-29_18-26-09_575874.log new file mode 100644 index 0000000..58ece3b --- /dev/null +++ b/pipeline_2026-05-29_18-26-09_575874.log @@ -0,0 +1,6 @@ +2026-05-29 18:26:09.584 | INFO | main::23 - Application startup +2026-05-29 18:26:10.647 | INFO | main:__init__:56 - NLP model loaded successfully. +2026-05-29 18:26:10.708 | INFO | main:__init__:73 - CV model loaded successfully. +2026-05-29 18:26:12.233 | INFO | main::23 - Application startup +2026-05-29 18:26:13.095 | INFO | main:__init__:56 - NLP model loaded successfully. +2026-05-29 18:26:13.246 | INFO | main:__init__:73 - CV model loaded successfully. diff --git a/pipeline_2026-05-29_18-26-12_224333.log b/pipeline_2026-05-29_18-26-12_224333.log new file mode 100644 index 0000000..a53d949 --- /dev/null +++ b/pipeline_2026-05-29_18-26-12_224333.log @@ -0,0 +1,3 @@ +2026-05-29 18:26:12.233 | INFO | main::23 - Application startup +2026-05-29 18:26:13.095 | INFO | main:__init__:56 - NLP model loaded successfully. +2026-05-29 18:26:13.246 | INFO | main:__init__:73 - CV model loaded successfully. diff --git a/test_cv_module.py b/test_cv_module.py index bdb6aef..0052b31 100644 --- a/test_cv_module.py +++ b/test_cv_module.py @@ -1,6 +1,6 @@ import unittest from PIL import Image -from cv_module import CVModule +from main import CVModule class TestCVModule(unittest.TestCase): def setUp(self): diff --git a/test_nlp_module.py b/test_nlp_module.py index 9a20bb5..12e2e69 100644 --- a/test_nlp_module.py +++ b/test_nlp_module.py @@ -1,5 +1,5 @@ import unittest -from nlp_module import NLPModule +from main import NLPModule class TestNLPModule(unittest.TestCase): def setUp(self): diff --git a/test_speech_processor.py b/test_speech_processor.py index 5582cd0..de97623 100644 --- a/test_speech_processor.py +++ b/test_speech_processor.py @@ -1,7 +1,7 @@ import unittest from io import BytesIO from fastapi import UploadFile -from speech_processor import SpeechProcessor +from main import SpeechProcessor class TestSpeechProcessor(unittest.TestCase): def setUp(self):