hostel-protocol-python 0.4.2__tar.gz → 0.4.4__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.
Files changed (20) hide show
  1. {hostel_protocol_python-0.4.2 → hostel_protocol_python-0.4.4}/Makefile +7 -1
  2. {hostel_protocol_python-0.4.2 → hostel_protocol_python-0.4.4}/PKG-INFO +3 -3
  3. {hostel_protocol_python-0.4.2 → hostel_protocol_python-0.4.4}/pyproject.toml +3 -3
  4. {hostel_protocol_python-0.4.2 → hostel_protocol_python-0.4.4}/src/hostel/protocol/__init__.py +6 -0
  5. {hostel_protocol_python-0.4.2 → hostel_protocol_python-0.4.4}/src/hostel/protocol/converter.py +6 -1
  6. {hostel_protocol_python-0.4.2 → hostel_protocol_python-0.4.4}/src/hostel/protocol/models.py +20 -0
  7. {hostel_protocol_python-0.4.2 → hostel_protocol_python-0.4.4}/.github/workflows/ci.yml +0 -0
  8. {hostel_protocol_python-0.4.2 → hostel_protocol_python-0.4.4}/.github/workflows/publish.yml +0 -0
  9. {hostel_protocol_python-0.4.2 → hostel_protocol_python-0.4.4}/.gitignore +0 -0
  10. {hostel_protocol_python-0.4.2 → hostel_protocol_python-0.4.4}/src/hostel/client/__init__.py +0 -0
  11. {hostel_protocol_python-0.4.2 → hostel_protocol_python-0.4.4}/src/hostel/client/client.py +0 -0
  12. {hostel_protocol_python-0.4.2 → hostel_protocol_python-0.4.4}/src/hostel/py.typed +0 -0
  13. {hostel_protocol_python-0.4.2 → hostel_protocol_python-0.4.4}/src/hostel/transport/__init__.py +0 -0
  14. {hostel_protocol_python-0.4.2 → hostel_protocol_python-0.4.4}/src/hostel/transport/transport.py +0 -0
  15. {hostel_protocol_python-0.4.2 → hostel_protocol_python-0.4.4}/src/hostel/transport/zeromq.py +0 -0
  16. {hostel_protocol_python-0.4.2 → hostel_protocol_python-0.4.4}/tests/__init__.py +0 -0
  17. {hostel_protocol_python-0.4.2 → hostel_protocol_python-0.4.4}/tests/test_client.py +0 -0
  18. {hostel_protocol_python-0.4.2 → hostel_protocol_python-0.4.4}/tests/test_converter.py +0 -0
  19. {hostel_protocol_python-0.4.2 → hostel_protocol_python-0.4.4}/tests/test_models.py +0 -0
  20. {hostel_protocol_python-0.4.2 → hostel_protocol_python-0.4.4}/tests/test_transport.py +0 -0
@@ -1,4 +1,4 @@
1
- .PHONY: install format lint typecheck test build check-tag-version
1
+ .PHONY: install format lint typecheck test build check-tag-version clean
2
2
 
3
3
  install:
4
4
  uv sync --all-groups
@@ -20,6 +20,12 @@ test:
20
20
  build:
21
21
  uv build
22
22
 
23
+ clean:
24
+ uv cache clean
25
+ find . -type d -name __pycache__ | xargs rm -rf
26
+ find . -type d -name "*.egg-info" | xargs rm -rf
27
+ rm -rf .venv dist build
28
+
23
29
  check-tag-version:
24
30
  @test -n "$(TAG)" || (echo "Usage: make check-tag-version TAG=vX.Y.Z"; exit 1)
25
31
  @uv run python -c "import pathlib, sys, tomllib; p=pathlib.Path('pyproject.toml'); v=tomllib.loads(p.read_text())['project']['version']; t='$(TAG)'; expected=f'v{v}';\
@@ -1,10 +1,10 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: hostel-protocol-python
3
- Version: 0.4.2
3
+ Version: 0.4.4
4
4
  Summary: Pydantic models, transport and client for the Hostel protocol
5
5
  Requires-Python: >=3.12
6
- Requires-Dist: hostel-protocol>=0.4.0
7
- Requires-Dist: protobuf<8,>=7.35.0
6
+ Requires-Dist: hostel-protocol>=0.4.2
7
+ Requires-Dist: protobuf<8,>=7.35.1
8
8
  Requires-Dist: pydantic>=2.5.0
9
9
  Provides-Extra: client
10
10
  Requires-Dist: pyzmq>=26.0; extra == 'client'
@@ -4,13 +4,13 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "hostel-protocol-python"
7
- version = "0.4.2"
7
+ version = "0.4.4"
8
8
  description = "Pydantic models, transport and client for the Hostel protocol"
9
9
  requires-python = ">=3.12"
10
10
  dependencies = [
11
- "hostel-protocol>=0.4.0",
11
+ "hostel-protocol>=0.4.2",
12
12
  "pydantic>=2.5.0",
13
- "protobuf>=7.35.0,<8",
13
+ "protobuf>=7.35.1,<8",
14
14
  ]
15
15
 
16
16
  [project.optional-dependencies]
@@ -10,7 +10,10 @@ from hostel.protocol.models import (
10
10
  ChatMessage,
11
11
  ChatRequest,
12
12
  ChatResponse,
13
+ ConversationCompletedNotification,
13
14
  ConversationMessage,
15
+ ConversationSubscribeRequest,
16
+ ConversationSubscribeResponse,
14
17
  ConversationSummary,
15
18
  CreateComponentRequest,
16
19
  CreateComponentResponse,
@@ -66,6 +69,9 @@ __all__ = [
66
69
  "GetConversationResponse",
67
70
  "DeleteConversationRequest",
68
71
  "DeleteConversationResponse",
72
+ "ConversationSubscribeRequest",
73
+ "ConversationSubscribeResponse",
74
+ "ConversationCompletedNotification",
69
75
  # Agent
70
76
  "ListAgentsRequest",
71
77
  "ListAgentsResponse",
@@ -39,6 +39,9 @@ _PYDANTIC_TO_PROTO: dict[type[BaseModel], type[Message]] = {
39
39
  models.GetConversationResponse: chat_pb2.GetConversationResponse,
40
40
  models.DeleteConversationRequest: chat_pb2.DeleteConversationRequest,
41
41
  models.DeleteConversationResponse: chat_pb2.DeleteConversationResponse,
42
+ models.ConversationSubscribeRequest: chat_pb2.ConversationSubscribeRequest,
43
+ models.ConversationSubscribeResponse: chat_pb2.ConversationSubscribeResponse,
44
+ models.ConversationCompletedNotification: chat_pb2.ConversationCompletedNotification,
42
45
  # Agent
43
46
  models.ListAgentsRequest: agent_pb2.ListAgentsRequest,
44
47
  models.ListAgentsResponse: agent_pb2.ListAgentsResponse,
@@ -148,6 +151,9 @@ _HOSTEL_MESSAGE_PAYLOAD_FIELDS: dict[str, type[Message]] = {
148
151
  "conversation_get_response": chat_pb2.GetConversationResponse,
149
152
  "conversation_delete_request": chat_pb2.DeleteConversationRequest,
150
153
  "conversation_delete_response": chat_pb2.DeleteConversationResponse,
154
+ "conversation_subscribe_request": chat_pb2.ConversationSubscribeRequest,
155
+ "conversation_subscribe_response": chat_pb2.ConversationSubscribeResponse,
156
+ "conversation_completed_notification": chat_pb2.ConversationCompletedNotification,
151
157
  "task_create": task_pb2.CreateTaskRequest,
152
158
  "task_create_response": task_pb2.CreateTaskResponse,
153
159
  "task_list": task_pb2.ListTasksRequest,
@@ -225,7 +231,6 @@ def pydantic_to_proto(model: BaseModel) -> Message:
225
231
  def _pydantic_to_proto_inner(model: BaseModel, proto_cls: type[Message]) -> Message:
226
232
  proto = proto_cls()
227
233
  string_value_fields = _STRING_VALUE_FIELDS.get(proto_cls, set())
228
- optional_string_fields = _OPTIONAL_STRING_FIELDS.get(proto_cls, set())
229
234
  struct_fields = _STRUCT_FIELDS.get(proto_cls, set())
230
235
  value_fields = _VALUE_FIELDS.get(proto_cls, set())
231
236
  repeated_fields = _REPEATED_MSG_FIELDS.get(proto_cls, {})
@@ -222,6 +222,7 @@ class ConversationSummary(BaseModel):
222
222
  agent_name: str = ""
223
223
  created_at: str = ""
224
224
  updated_at: str = ""
225
+ in_progress: bool = False
225
226
 
226
227
 
227
228
  class ConversationMessage(BaseModel):
@@ -267,6 +268,22 @@ class DeleteConversationResponse(BaseModel):
267
268
  model_config = ConfigDict(populate_by_name=True)
268
269
 
269
270
 
271
+ class ConversationSubscribeRequest(BaseModel):
272
+ model_config = ConfigDict(populate_by_name=True)
273
+ conversation_id: str
274
+
275
+
276
+ class ConversationSubscribeResponse(BaseModel):
277
+ model_config = ConfigDict(populate_by_name=True)
278
+ conversation_id: str = ""
279
+ in_progress: bool = False
280
+
281
+
282
+ class ConversationCompletedNotification(BaseModel):
283
+ model_config = ConfigDict(populate_by_name=True)
284
+ conversation_id: str = ""
285
+
286
+
270
287
  # ---------------------------------------------------------------------------
271
288
  # Envelope (HostelMessage)
272
289
  # ---------------------------------------------------------------------------
@@ -306,6 +323,9 @@ class HostelMessage(BaseModel):
306
323
  conversation_get_response: GetConversationResponse | None = None
307
324
  conversation_delete_request: DeleteConversationRequest | None = None
308
325
  conversation_delete_response: DeleteConversationResponse | None = None
326
+ conversation_subscribe_request: ConversationSubscribeRequest | None = None
327
+ conversation_subscribe_response: ConversationSubscribeResponse | None = None
328
+ conversation_completed_notification: ConversationCompletedNotification | None = None
309
329
 
310
330
  # oneof payload – Task
311
331
  task_create: CreateTaskRequest | None = None