asap-protocol 0.1.0__py3-none-any.whl → 0.5.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.
@@ -1,11 +1,12 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: asap-protocol
3
- Version: 0.1.0
3
+ Version: 0.5.0
4
4
  Summary: Async Simple Agent Protocol - A streamlined protocol for agent-to-agent communication
5
5
  Project-URL: Homepage, https://github.com/adriannoes/asap-protocol
6
6
  Project-URL: Documentation, https://adriannoes.github.io/asap-protocol
7
7
  Project-URL: Repository, https://github.com/adriannoes/asap-protocol
8
8
  Project-URL: Issues, https://github.com/adriannoes/asap-protocol/issues
9
+ Project-URL: PyPI, https://pypi.org/project/asap-protocol/
9
10
  Author: ASAP Protocol Contributors
10
11
  License: Apache-2.0
11
12
  License-File: LICENSE
@@ -19,11 +20,12 @@ Classifier: Topic :: Software Development :: Libraries :: Python Modules
19
20
  Classifier: Topic :: System :: Distributed Computing
20
21
  Classifier: Typing :: Typed
21
22
  Requires-Python: >=3.13
22
- Requires-Dist: fastapi>=0.124
23
+ Requires-Dist: fastapi>=0.128.0
23
24
  Requires-Dist: httpx>=0.28.1
24
25
  Requires-Dist: packaging>=25.0
25
26
  Requires-Dist: pydantic>=2.12.5
26
27
  Requires-Dist: python-ulid>=3.0
28
+ Requires-Dist: slowapi>=0.1.9
27
29
  Requires-Dist: structlog>=24.1
28
30
  Requires-Dist: typer>=0.21.1
29
31
  Requires-Dist: uvicorn>=0.34
@@ -33,6 +35,7 @@ Requires-Dist: pip-audit>=2.7; extra == 'dev'
33
35
  Requires-Dist: pytest-asyncio>=0.24; extra == 'dev'
34
36
  Requires-Dist: pytest-benchmark>=5.1; extra == 'dev'
35
37
  Requires-Dist: pytest-cov>=6.0; extra == 'dev'
38
+ Requires-Dist: pytest-xdist>=3.5.0; extra == 'dev'
36
39
  Requires-Dist: pytest>=8.0; extra == 'dev'
37
40
  Requires-Dist: ruff>=0.14.14; extra == 'dev'
38
41
  Provides-Extra: docs
@@ -42,17 +45,35 @@ Description-Content-Type: text/markdown
42
45
 
43
46
  # ASAP: Async Simple Agent Protocol
44
47
 
45
- > A streamlined, scalable, asynchronous protocol for agent-to-agent communication and task coordination.
48
+ ![ASAP Protocol Banner](.cursor/docs/asap-protocol-banner.png)
49
+
50
+ > A streamlined, scalable, asynchronous protocol for agent-to-agent communication and task coordination. Built as a simpler, more powerful alternative to A2A with native MCP integration and stateful orchestration.
51
+
52
+ **Quick Info**: `v0.5.0` | `Apache 2.0` | `Python 3.13+` | [Documentation](docs/index.md) | [PyPI](https://pypi.org/project/asap-protocol/) | [Changelog](CHANGELOG.md)
53
+
54
+ ⚠️ **Alpha Release**: ASAP Protocol is currently in **alpha** (v0.5.0). We're actively developing and improving the protocol based on real-world usage. Your feedback, contributions, and suggestions are essential to help us evolve and make ASAP better for the entire community. See our [Contributing](#contributing) section to get involved!
46
55
 
47
56
  ## Why ASAP?
48
57
 
49
- Building multi-agent systems today suffers from three core technical challenges:
58
+ Building multi-agent systems today suffers from three core technical challenges that existing protocols like A2A don't fully address:
50
59
  1. **$N^2$ Connection Complexity**: Most protocols assume static point-to-point HTTP connections that don't scale.
51
60
  2. **State Drift**: Lack of native persistence makes it impossible to reliably resume long-running agentic workflows.
52
61
  3. **Fragmentation**: No unified way to handle task delegation, artifact exchange, and tool execution (MCP) in a single envelope.
53
62
 
54
63
  **ASAP** provides a production-ready communication layer that simplifies these complexities. It introduces a standardized, stateful orchestration framework that ensures your agents can coordinate reliably across distributed environments.
55
64
 
65
+ ### Security-First Design
66
+
67
+ v0.5.0 introduces comprehensive security hardening:
68
+ - **Authentication**: Bearer token authentication with configurable token validators
69
+ - **Replay Attack Prevention**: Timestamp validation (5-minute window) and optional nonce tracking
70
+ - **DoS Protection**: Built-in rate limiting (100 req/min), request size limits (10MB), and thread pool bounds
71
+ - **HTTPS Enforcement**: Client-side HTTPS validation in production mode
72
+ - **Secure Logging**: Automatic sanitization of sensitive data (tokens, credentials, nonces) in logs
73
+ - **Input Validation**: Strict schema validation with Pydantic v2 for all incoming requests
74
+
75
+ All security features are **opt-in** to maintain backward compatibility with existing deployments.
76
+
56
77
  ### Key Features
57
78
 
58
79
  - **Stateful Orchestration**: Native task state machine with built-in snapshotting for durable, resumable agent workflows.
@@ -61,8 +82,10 @@ Building multi-agent systems today suffers from three core technical challenges:
61
82
  - **Observable Chains**: First-class support for `trace_id` and `correlation_id` to debug complex multi-agent delegation.
62
83
  - **MCP Integration**: Uses the Model Context Protocol (MCP) as a tool-execution substrate, wrapped in a high-level coordination envelope.
63
84
  - **Async-Native**: Engineered from the ground up for high-concurrency environments using `asyncio` and `httpx`. Supports both sync and async handlers with automatic event loop management.
85
+ - **Security-Hardened (v0.5.0)**: Authentication (Bearer tokens), replay attack prevention (timestamp + nonce validation), HTTPS enforcement, secure logging, and comprehensive input validation. All security features are opt-in for backward compatibility.
86
+ - **DoS Protection**: Built-in rate limiting (100 req/min), request size limits (10MB), and thread pool bounds to prevent resource exhaustion attacks.
64
87
 
65
- > 💡 **Performance Note**: Pure Python codebase leveraging Rust-accelerated dependencies (`pydantic-core`, `orjson`, `python-ulid`) for native-level performance without build complexity.
88
+ 💡 **Performance Note**: Pure Python codebase leveraging Rust-accelerated dependencies (`pydantic-core`, `orjson`, `python-ulid`) for native-level performance without build complexity.
66
89
 
67
90
  ## Installation
68
91
 
@@ -78,8 +101,16 @@ Or with pip:
78
101
  pip install asap-protocol
79
102
  ```
80
103
 
104
+ 📦 **Available on [PyPI](https://pypi.org/project/asap-protocol/)**
105
+
81
106
  For reproducible environments, prefer `uv` when possible.
82
107
 
108
+ ## Requirements
109
+
110
+ - **Python**: 3.13 or higher
111
+ - **Dependencies**: Automatically installed via `uv` or `pip`
112
+ - **Optional**: For development, see [Contributing](CONTRIBUTING.md)
113
+
83
114
  ## Quick Start
84
115
 
85
116
  ### 1. Create an Agent (Server)
@@ -92,13 +123,15 @@ from asap.transport.server import create_app
92
123
  manifest = Manifest(
93
124
  id="urn:asap:agent:echo-agent",
94
125
  name="Echo Agent",
95
- version="0.1.0",
126
+ version="0.5.0",
96
127
  description="Echoes task input as output",
97
128
  capabilities=Capability(
98
129
  asap_version="0.1",
99
130
  skills=[Skill(id="echo", description="Echo back the input")],
100
131
  state_persistence=False,
101
132
  ),
133
+ # Development: HTTP localhost is allowed
134
+ # Production: Always use HTTPS (e.g., "https://api.example.com/asap")
102
135
  endpoints=Endpoint(asap="http://127.0.0.1:8001/asap"),
103
136
  )
104
137
 
@@ -129,6 +162,8 @@ async def main():
129
162
  payload_type="task.request",
130
163
  payload=request.model_dump(),
131
164
  )
165
+ # Development: HTTP localhost is allowed (with warning)
166
+ # Production: Always use HTTPS (e.g., "https://api.example.com")
132
167
  async with ASAPClient("http://127.0.0.1:8001") as client:
133
168
  response = await client.send(envelope)
134
169
  print(response.payload)
@@ -158,91 +193,49 @@ Transport:
158
193
  - [Spec](.cursor/docs/general-specs.md)
159
194
  - [Docs](docs/index.md)
160
195
  - [API Reference](docs/api-reference.md)
196
+ - [Changelog](CHANGELOG.md)
197
+ - [PyPI Package](https://pypi.org/project/asap-protocol/)
161
198
 
162
- ## Advanced Examples
163
-
164
- ### State Snapshots
165
-
166
- ```python
167
- from datetime import datetime, timezone
168
- from asap.models.entities import StateSnapshot
169
- from asap.state import InMemorySnapshotStore
170
-
171
- store = InMemorySnapshotStore()
172
- snapshot = StateSnapshot(
173
- id="snap_01HX5K7R...",
174
- task_id="task_01HX5K4N...",
175
- version=1,
176
- data={"status": "submitted", "progress": 0},
177
- created_at=datetime.now(timezone.utc),
178
- )
179
- store.save(snapshot)
180
- latest = store.get("task_01HX5K4N...")
181
- ```
182
-
183
- ### Error Recovery
199
+ ## When to Use ASAP?
184
200
 
185
- ```python
186
- from asap.errors import InvalidTransitionError
201
+ ASAP is ideal for:
202
+ - **Multi-agent orchestration**: Coordinate tasks across multiple AI agents
203
+ - **Stateful workflows**: Long-running tasks that need persistence and resumability
204
+ - **MCP integration**: Agents that need to execute tools via Model Context Protocol
205
+ - **Production systems**: High-performance, type-safe agent communication
187
206
 
188
- try:
189
- raise InvalidTransitionError(from_state="submitted", to_state="completed")
190
- except InvalidTransitionError as exc:
191
- payload = exc.to_dict()
192
- print(payload["code"])
193
- ```
207
+ If you're building simple point-to-point agent communication, a basic HTTP API might suffice. ASAP shines when you need orchestration, state management and multi-agent coordination.
194
208
 
195
- ### Async Handlers
209
+ ## Advanced Topics
196
210
 
197
- Handlers can be either synchronous or asynchronous:
211
+ Explore these guides for detailed information on specific features:
198
212
 
199
- ```python
200
- # Sync handler
201
- def my_sync_handler(envelope: Envelope, manifest: Manifest) -> Envelope:
202
- # Process synchronously
203
- return response_envelope
204
-
205
- # Async handler
206
- async def my_async_handler(envelope: Envelope, manifest: Manifest) -> Envelope:
207
- # Process asynchronously (e.g., database calls, API requests)
208
- result = await some_async_operation()
209
- return response_envelope
210
-
211
- registry.register("task.request", my_async_handler) # Works with both!
212
- ```
213
+ - **[State Management](docs/state-management.md)**: Task lifecycle, state machine, and snapshot persistence for resumable workflows.
214
+ - **[Error Handling](docs/error-handling.md)**: Structured error taxonomy and recovery patterns for robust agent communication.
215
+ - **[Transport Layer](docs/transport.md)**: HTTP/JSON-RPC binding details, async handlers, and server configuration.
216
+ - **[Security](docs/security.md)**: Production security practices, rate limiting, DoS protection, and authentication.
217
+ - **[Observability](docs/observability.md)**: Tracing, metrics, and logging for debugging multi-agent systems.
218
+ - **[Testing](docs/testing.md)**: Testing strategies and utilities for ASAP-based agents.
213
219
 
214
- ### Multi-Agent Flow
220
+ ### Examples & Demos
215
221
 
216
- Run the built-in demo to see two agents exchanging messages:
222
+ Run the built-in multi-agent demo to see ASAP in action:
217
223
 
218
224
  ```bash
219
225
  uv run python -m asap.examples.run_demo
220
226
  ```
221
227
 
222
- ### CLI Tools
223
-
224
- The ASAP CLI provides utilities for schema management:
228
+ See [`src/asap/examples/`](src/asap/examples/) for complete example implementations.
225
229
 
226
- ```bash
227
- # Export all JSON schemas
228
- asap export-schemas --output-dir ./schemas
229
-
230
- # List available schemas
231
- asap list-schemas
232
-
233
- # Show a specific schema
234
- asap show-schema envelope
235
-
236
- # Validate JSON against a schema
237
- asap validate-schema message.json --schema-type envelope
230
+ ### CLI Tools
238
231
 
239
- # Verbose output
240
- asap export-schemas --verbose
241
- ```
232
+ The ASAP CLI provides utilities for schema management. See [CLI documentation](docs/index.md#cli) or run `asap --help` for available commands.
242
233
 
243
234
  ## Contributing
244
235
 
245
- We love contributions! Whether it's fixing a bug, improving documentation, or proposing a new feature, your help is welcome.
236
+ We love contributions! Whether it's fixing a bug, improving documentation or proposing a new feature.. your help is welcome.
237
+
238
+ **As an alpha release, community feedback and contributions are essential** for ASAP Protocol's evolution. We're actively working on improvements and your input helps shape the future of the protocol. Every contribution, from bug reports to feature suggestions, documentation improvements and code contributions, makes a real difference.
246
239
 
247
240
  Check out our [Contributing Guidelines](CONTRIBUTING.md) to get started. It's easier than you think! 🚀
248
241
 
@@ -0,0 +1,41 @@
1
+ asap/__init__.py,sha256=Mhc6RFW5rBP7ZrgHSJ4Lsha1ajo1WT7VWtEdGe_f9ng,169
2
+ asap/cli.py,sha256=JzMA3t2Gn94kunkn5bgAkl6ZgzgwGtL5QFcKLYqWZYA,6621
3
+ asap/errors.py,sha256=pc4QQfseteEujGp3bDH-IiPpr-xh1N6DvDL5faiFY9M,11917
4
+ asap/schemas.py,sha256=c9MttEoI4mgXFHDFzphSRAJhw7cpy2rcnXH31jlo1sQ,6135
5
+ asap/examples/README.md,sha256=0XSkQaP5mRYZPtzEf1gYu6HbZw84vrd77pYtx7doHHM,1002
6
+ asap/examples/__init__.py,sha256=LaEkmPQ4tpYrkLFjBE_aodjW3_XUcKWoFLGVFD5kuvo,56
7
+ asap/examples/coordinator.py,sha256=C5Ugi47PGwtbRao8eD29v2l_9tww2_sL-kXK5jQaWGw,5370
8
+ asap/examples/echo_agent.py,sha256=cmNjEx28jCNcU4waYFOZ8ZcHxth1znMOhmaGXIquJzA,2947
9
+ asap/examples/run_demo.py,sha256=GLbtcpggAZfoDSFXpXJf8kdn9jg4HVblg4h3_5u6jrM,4056
10
+ asap/models/__init__.py,sha256=c9TDscYv-_2U8OlEt7G-Il02flISgGbckZu4RtDwgDk,2643
11
+ asap/models/base.py,sha256=PvLkFinOzfU6DDJ4pXMku7PK_2Xsaprh055mJKbdPUA,2008
12
+ asap/models/constants.py,sha256=r-KekW8tmCpsYuUN9Fay-gGc-1T7T4S2pn8-MwO4qAI,3155
13
+ asap/models/entities.py,sha256=Ah2k-aXO9mDLcMUjJ88ZKhpcKiRr4KzQ4HWvMiCuBhY,17938
14
+ asap/models/enums.py,sha256=q8tnW10AT94hxDFoH1Psg1a1x4tzs47x12N7RTGLNRQ,1644
15
+ asap/models/envelope.py,sha256=3EZ7QGi9lVeNN4FAmChbRBgPIiIxQjB7jDkzN1oeXiM,4022
16
+ asap/models/ids.py,sha256=ttTebUohYD_7Gmyg1GRi1jnRtnLcAL2SiXuOi4vGtb0,1425
17
+ asap/models/parts.py,sha256=XiNvlEEqqb0W8cvvvLHYfzYzLULg7oFStMxm817-IZo,6939
18
+ asap/models/payloads.py,sha256=l0taURdWy09BASSJkiCrR6VixbqzD3HrFdVrFad7YqQ,14867
19
+ asap/models/types.py,sha256=ldWyz6gThlK_cxywxfcIiMLD74_BRV0lbfyussvSURg,978
20
+ asap/observability/__init__.py,sha256=V1bBAZix7_IAoy09ETTlkSsi-1ENq5_EpBhi599EBxE,1145
21
+ asap/observability/logging.py,sha256=1nK1OP-3BBpOf8d5UFmpSP8_mULF5kZ27YoS3S3U1a0,6733
22
+ asap/observability/metrics.py,sha256=5yvXfvQ8FpigJ6pJ3vTQetSCQhPnoUCKywWigrxgnCI,14778
23
+ asap/state/__init__.py,sha256=bV1oO86TReF48C5IaglNr8WHczzAWTpw3n7SyDw04nk,565
24
+ asap/state/machine.py,sha256=1Obl1BcwwU-Xz20MX-layuPh1BVzcI1Kiowl_CueuU4,2795
25
+ asap/state/snapshot.py,sha256=wPc2pnQD_EdPecEndbjIC9mXJep-LCJwtdazGMJSUJc,8654
26
+ asap/transport/__init__.py,sha256=VvtPh5Zr1R3-Y5DSj9NWUyvAdvfC_YRCw_mX1FDMQsg,2619
27
+ asap/transport/circuit_breaker.py,sha256=jnPYxaLJ1_ImbAeKa6RZigM2aBY1sx4Y3qzChn9lhiw,6305
28
+ asap/transport/client.py,sha256=wm_V-I4BUEaMr5ujRlD0l0QmjD2Z8ktQy502zS_79wY,42380
29
+ asap/transport/executors.py,sha256=0UH2cd5fVPGPGtnzmnFq1W8IF9BLjp5grCz3Oucj7CQ,5737
30
+ asap/transport/handlers.py,sha256=BGnAF-RDiZYjdh0V-AqmvqrAkCh_QfI0yO-x1wzxOGQ,15924
31
+ asap/transport/jsonrpc.py,sha256=Cnh6ahoXr4Dkmt2KqoXESDKKs_9MwfsgIjn-TDjpkEQ,5800
32
+ asap/transport/middleware.py,sha256=4WFg2_7NUJcT01VdOEa2UpkyFEcl_ZYcLDBuoYBfTaQ,23372
33
+ asap/transport/server.py,sha256=r0DmPoPyw6drR3W-FE39eWWGSbL42PltogZ3JC3dq3E,45878
34
+ asap/transport/validators.py,sha256=CmaRuBZFB1hzBDxDez3WFaR2Rkqotz3KtcoWzSrdGJM,11041
35
+ asap/utils/__init__.py,sha256=aWEjhGOgrzvBjvMVW1Dg5yJH_xixaOqrsilNdU7zz4A,206
36
+ asap/utils/sanitization.py,sha256=kIkuEuYXhTOxGNyychlBg4ffz4ylq_Tj_-WTi1mf-bg,4305
37
+ asap_protocol-0.5.0.dist-info/METADATA,sha256=LloHREQmhwaBilILZQacR514Ptv7HcRslu-LZfGkoDg,11197
38
+ asap_protocol-0.5.0.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
39
+ asap_protocol-0.5.0.dist-info/entry_points.txt,sha256=H_u_JamRG5mGQTXwnCFljBFep6lZPuln9NPLfgq1naM,39
40
+ asap_protocol-0.5.0.dist-info/licenses/LICENSE,sha256=JmjzvAfg8BUP_0y_hu4SQSUgnSniWe2eBS7x2WPTo2A,10771
41
+ asap_protocol-0.5.0.dist-info/RECORD,,
@@ -1,36 +0,0 @@
1
- asap/__init__.py,sha256=YW8oB4OJk7hQo15mjC11rBxXws105kyFXhM_TemD2nI,169
2
- asap/cli.py,sha256=JzMA3t2Gn94kunkn5bgAkl6ZgzgwGtL5QFcKLYqWZYA,6621
3
- asap/errors.py,sha256=S0eifqXZd1f9PJKeo8EKF0x1-Yh5m6eGWoxCVEYgeRg,4994
4
- asap/schemas.py,sha256=c9MttEoI4mgXFHDFzphSRAJhw7cpy2rcnXH31jlo1sQ,6135
5
- asap/examples/README.md,sha256=xqMIMcZANi1eML6t4cNJ3rG6MjySf2SchgFiecxKpik,765
6
- asap/examples/__init__.py,sha256=LaEkmPQ4tpYrkLFjBE_aodjW3_XUcKWoFLGVFD5kuvo,56
7
- asap/examples/coordinator.py,sha256=hBwyNgJ7SgBl8OoliLtiaN_dpOVW2UXgwje05ThgvJc,5370
8
- asap/examples/echo_agent.py,sha256=WW-p8fpBvdbRylYSbPqjMkUfSNjqXdi5QL6XLjHoQYM,2947
9
- asap/examples/run_demo.py,sha256=bFHH4IY-xYXIw66opgKGfmuXSC7_6astkERLtN0a9pw,3700
10
- asap/models/__init__.py,sha256=iUriI2CN9NcpH1_TyY5PkWiX3Mz7UnJDC9IeJzcWFUI,2511
11
- asap/models/base.py,sha256=PvLkFinOzfU6DDJ4pXMku7PK_2Xsaprh055mJKbdPUA,2008
12
- asap/models/constants.py,sha256=Ur8ngPehsOZtFUicVtdHbn1LhsvKjMDqgGMVA7X4kHs,360
13
- asap/models/entities.py,sha256=siZCt-XqbOSPleXFBvwCSC9sVfZCrydNrUiKso8RHDo,16742
14
- asap/models/enums.py,sha256=q8tnW10AT94hxDFoH1Psg1a1x4tzs47x12N7RTGLNRQ,1644
15
- asap/models/envelope.py,sha256=MTlFEmYcT47gpQhOxWYGEUe99hw_woMWqWdp3rZl-co,3733
16
- asap/models/ids.py,sha256=ttTebUohYD_7Gmyg1GRi1jnRtnLcAL2SiXuOi4vGtb0,1425
17
- asap/models/parts.py,sha256=XiNvlEEqqb0W8cvvvLHYfzYzLULg7oFStMxm817-IZo,6939
18
- asap/models/payloads.py,sha256=l0taURdWy09BASSJkiCrR6VixbqzD3HrFdVrFad7YqQ,14867
19
- asap/models/types.py,sha256=ldWyz6gThlK_cxywxfcIiMLD74_BRV0lbfyussvSURg,978
20
- asap/observability/__init__.py,sha256=V1bBAZix7_IAoy09ETTlkSsi-1ENq5_EpBhi599EBxE,1145
21
- asap/observability/logging.py,sha256=1nK1OP-3BBpOf8d5UFmpSP8_mULF5kZ27YoS3S3U1a0,6733
22
- asap/observability/metrics.py,sha256=k0nr5Ovj0dJBuK1YVy3GvkL2IQSjxMq9FHp4MHT7C2U,14685
23
- asap/state/__init__.py,sha256=bV1oO86TReF48C5IaglNr8WHczzAWTpw3n7SyDw04nk,565
24
- asap/state/machine.py,sha256=1Obl1BcwwU-Xz20MX-layuPh1BVzcI1Kiowl_CueuU4,2795
25
- asap/state/snapshot.py,sha256=wPc2pnQD_EdPecEndbjIC9mXJep-LCJwtdazGMJSUJc,8654
26
- asap/transport/__init__.py,sha256=rX_hcnm0c-XxJKvxc4H2b_APNIVmdvXphRIqDrDWC8U,2506
27
- asap/transport/client.py,sha256=fHzz8M_qeNMLZhDxsOWeAVMXMNeOHFnmovptBMDsN2I,14325
28
- asap/transport/handlers.py,sha256=t7VKooeoP4eaqV4IFCymCIEECDBk3KxNgC5x2D_FJ00,15238
29
- asap/transport/jsonrpc.py,sha256=Cnh6ahoXr4Dkmt2KqoXESDKKs_9MwfsgIjn-TDjpkEQ,5800
30
- asap/transport/middleware.py,sha256=bijTgqKbYQ32Wz869y2nCPNs7YGXgoQc6xxagdqZbC0,12666
31
- asap/transport/server.py,sha256=7bMecSo8w__wwlmAe-kwYAJoZ3e6cz590_QCf8m0x70,27924
32
- asap_protocol-0.1.0.dist-info/METADATA,sha256=DRmzSrjqSZaGbaaTrIkX7EZR-Gg3duaNZYI8SK7Y0a8,8342
33
- asap_protocol-0.1.0.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
34
- asap_protocol-0.1.0.dist-info/entry_points.txt,sha256=H_u_JamRG5mGQTXwnCFljBFep6lZPuln9NPLfgq1naM,39
35
- asap_protocol-0.1.0.dist-info/licenses/LICENSE,sha256=JmjzvAfg8BUP_0y_hu4SQSUgnSniWe2eBS7x2WPTo2A,10771
36
- asap_protocol-0.1.0.dist-info/RECORD,,