grasp_agents 0.5.6__py3-none-any.whl → 0.5.8__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,14 +1,28 @@
1
1
  import time
2
2
  from enum import StrEnum
3
- from typing import Any, Generic, Literal, TypeVar
3
+ from typing import Any, Generic, Literal, TypeVar, get_args
4
4
  from uuid import uuid4
5
5
 
6
6
  from pydantic import BaseModel, ConfigDict, Field
7
7
 
8
8
  from ..packet import Packet
9
9
  from .completion import Completion
10
- from .completion_chunk import CompletionChunk
11
- from .message import AssistantMessage, SystemMessage, ToolCall, ToolMessage, UserMessage
10
+ from .completion_chunk import (
11
+ AnnotationsChunk,
12
+ CompletionChunk,
13
+ RefusalChunk,
14
+ ResponseChunk,
15
+ ThinkingChunk,
16
+ ToolCallChunk,
17
+ )
18
+ from .message import (
19
+ AssistantMessage,
20
+ MessageBase,
21
+ SystemMessage,
22
+ ToolCall,
23
+ ToolMessage,
24
+ UserMessage,
25
+ )
12
26
 
13
27
 
14
28
  class EventSourceType(StrEnum):
@@ -29,73 +43,68 @@ class EventType(StrEnum):
29
43
  GEN_MSG = "gen_message"
30
44
 
31
45
  COMP = "completion"
46
+ COMP_START = "completion_start"
47
+ COMP_END = "completion_end"
48
+
32
49
  COMP_CHUNK = "completion_chunk"
50
+ THINK_CHUNK = "thinking_chunk"
51
+ RESP_CHUNK = "response_chunk"
52
+ TOOL_CALL_CHUNK = "tool_call_chunk"
53
+ ANNOT_CHUNK = "annotations_chunk"
54
+ REFUSAL_CHUNK = "refusal_chunk"
55
+
56
+ RESP_START = "response_start"
57
+ RESP_END = "response_end"
58
+ THINK_START = "thinking_start"
59
+ THINK_END = "thinking_end"
60
+ TOOL_CALL_START = "tool_call_start"
61
+ TOOL_CALL_END = "tool_call_end"
62
+ ANNOT_START = "annotations_start"
63
+ ANNOT_END = "annotations_end"
64
+
33
65
  LLM_ERR = "llm_error"
34
66
 
35
- PROC_START = "processor_start"
36
67
  PACKET_OUT = "packet_output"
37
68
  PAYLOAD_OUT = "payload_output"
38
69
  PROC_FINISH = "processor_finish"
39
70
  PROC_ERR = "processor_error"
71
+ PROC_START = "processor_start"
72
+ PROC_END = "processor_end"
40
73
 
41
74
  WORKFLOW_RES = "workflow_result"
42
75
  RUN_RES = "run_result"
43
76
 
44
- # COMP_THINK_CHUNK = "completion_thinking_chunk"
45
- # COMP_RESP_CHUNK = "completion_response_chunk"
46
77
 
78
+ _T_co = TypeVar("_T_co", covariant=True)
79
+ _M_co = TypeVar("_M_co", covariant=True, bound=MessageBase)
80
+ _C_co = TypeVar("_C_co", covariant=True, bound=CompletionChunk)
47
81
 
48
- _T = TypeVar("_T")
49
82
 
50
-
51
- class Event(BaseModel, Generic[_T], frozen=True):
83
+ class Event(BaseModel, Generic[_T_co], frozen=True):
52
84
  type: EventType
53
85
  source: EventSourceType
54
86
  id: str = Field(default_factory=lambda: str(uuid4()))
55
87
  created: int = Field(default_factory=lambda: int(time.time()))
56
88
  proc_name: str | None = None
57
89
  call_id: str | None = None
58
- data: _T
90
+ data: _T_co
91
+
59
92
 
60
93
  class DummyEvent(Event[Any], frozen=True):
61
94
  type: Literal[EventType.PAYLOAD_OUT] = EventType.PAYLOAD_OUT
62
95
  source: Literal[EventSourceType.PROC] = EventSourceType.PROC
63
96
  data: Any = None
64
97
 
65
- class CompletionEvent(Event[Completion], frozen=True):
66
- type: Literal[EventType.COMP] = EventType.COMP
67
- source: Literal[EventSourceType.LLM] = EventSourceType.LLM
68
-
69
98
 
70
- class CompletionChunkEvent(Event[CompletionChunk], frozen=True):
71
- type: Literal[EventType.COMP_CHUNK] = EventType.COMP_CHUNK
72
- source: Literal[EventSourceType.LLM] = EventSourceType.LLM
99
+ # Non-streamed completion events
73
100
 
74
101
 
75
- class LLMStreamingErrorData(BaseModel):
76
- error: Exception
77
- model_name: str | None = None
78
- model_id: str | None = None
79
-
80
- model_config = ConfigDict(arbitrary_types_allowed=True)
81
-
82
-
83
- class LLMStreamingErrorEvent(Event[LLMStreamingErrorData], frozen=True):
84
- type: Literal[EventType.LLM_ERR] = EventType.LLM_ERR
102
+ class CompletionEvent(Event[Completion], frozen=True):
103
+ type: Literal[EventType.COMP] = EventType.COMP
85
104
  source: Literal[EventSourceType.LLM] = EventSourceType.LLM
86
105
 
87
106
 
88
- # class CompletionThinkingChunkEvent(Event[CompletionChunk], frozen=True):
89
- # type: Literal[EventType.COMP_THINK_CHUNK] = EventType.COMP_THINK_CHUNK
90
- # source: Literal[EventSourceType.LLM] = EventSourceType.LLM
91
-
92
-
93
- # class CompletionResponseChunkEvent(Event[CompletionChunk], frozen=True):
94
- # type: Literal[EventType.COMP_RESP_CHUNK] = EventType.COMP_RESP_CHUNK
95
- # source: Literal[EventSourceType.LLM] = EventSourceType.LLM
96
-
97
-
98
- class MessageEvent(Event[_T], Generic[_T], frozen=True):
107
+ class MessageEvent(Event[_M_co], Generic[_M_co], frozen=True):
99
108
  pass
100
109
 
101
110
 
@@ -124,13 +133,207 @@ class ToolCallEvent(Event[ToolCall], frozen=True):
124
133
  source: Literal[EventSourceType.AGENT] = EventSourceType.AGENT
125
134
 
126
135
 
136
+ # Streamed completion events
137
+
138
+ StreamedCompletionEventTypes = Literal[
139
+ EventType.COMP_CHUNK,
140
+ EventType.COMP_START,
141
+ EventType.COMP_END,
142
+ EventType.RESP_CHUNK,
143
+ EventType.RESP_START,
144
+ EventType.RESP_END,
145
+ EventType.THINK_CHUNK,
146
+ EventType.THINK_START,
147
+ EventType.THINK_END,
148
+ EventType.TOOL_CALL_CHUNK,
149
+ EventType.TOOL_CALL_START,
150
+ EventType.TOOL_CALL_END,
151
+ EventType.ANNOT_CHUNK,
152
+ EventType.ANNOT_START,
153
+ EventType.ANNOT_END,
154
+ EventType.REFUSAL_CHUNK,
155
+ ]
156
+
157
+
158
+ class CompletionChunkEvent(Event[_C_co], Generic[_C_co], frozen=True):
159
+ type: StreamedCompletionEventTypes = EventType.COMP_CHUNK
160
+ source: Literal[EventSourceType.LLM] = EventSourceType.LLM
161
+ data: _C_co
162
+
163
+ def split_into_specialized(
164
+ self,
165
+ ) -> "list[CompletionChunkEvent[Any]]":
166
+ specialized_events: list[CompletionChunkEvent[Any]] = []
167
+
168
+ for sub_chunk in self.data.split_into_specialized():
169
+ if isinstance(sub_chunk, ResponseChunk):
170
+ new_event = self.model_copy(
171
+ update={"data": sub_chunk, "type": EventType.RESP_CHUNK}
172
+ )
173
+ specialized_events.append(
174
+ ResponseChunkEvent.model_validate(new_event.model_dump())
175
+ )
176
+ if isinstance(sub_chunk, ThinkingChunk):
177
+ new_event = self.model_copy(
178
+ update={"data": sub_chunk, "type": EventType.THINK_CHUNK}
179
+ )
180
+ specialized_events.append(
181
+ ThinkingChunkEvent.model_validate(new_event.model_dump())
182
+ )
183
+ if isinstance(sub_chunk, ToolCallChunk):
184
+ new_event = self.model_copy(
185
+ update={"data": sub_chunk, "type": EventType.TOOL_CALL_CHUNK}
186
+ )
187
+ specialized_events.append(
188
+ ToolCallChunkEvent.model_validate(new_event.model_dump())
189
+ )
190
+ if isinstance(sub_chunk, AnnotationsChunk):
191
+ new_event = self.model_copy(
192
+ update={"data": sub_chunk, "type": EventType.ANNOT_CHUNK}
193
+ )
194
+ specialized_events.append(
195
+ AnnotationsChunkEvent.model_validate(new_event.model_dump())
196
+ )
197
+ if isinstance(sub_chunk, RefusalChunk):
198
+ new_event = self.model_copy(
199
+ update={"data": sub_chunk, "type": EventType.REFUSAL_CHUNK}
200
+ )
201
+ specialized_events.append(
202
+ RefusalChunkEvent.model_validate(new_event.model_dump())
203
+ )
204
+
205
+ return specialized_events
206
+
207
+
208
+ class ResponseChunkEvent(CompletionChunkEvent[ResponseChunk], frozen=True):
209
+ type: Literal[EventType.RESP_CHUNK] = EventType.RESP_CHUNK
210
+ source: Literal[EventSourceType.LLM] = EventSourceType.LLM
211
+
212
+
213
+ class ThinkingChunkEvent(CompletionChunkEvent[ThinkingChunk], frozen=True):
214
+ type: Literal[EventType.THINK_CHUNK] = EventType.THINK_CHUNK
215
+ source: Literal[EventSourceType.LLM] = EventSourceType.LLM
216
+
217
+
218
+ class ToolCallChunkEvent(CompletionChunkEvent[ToolCallChunk], frozen=True):
219
+ type: Literal[EventType.TOOL_CALL_CHUNK] = EventType.TOOL_CALL_CHUNK
220
+ source: Literal[EventSourceType.LLM] = EventSourceType.LLM
221
+
222
+
223
+ class AnnotationsChunkEvent(CompletionChunkEvent[AnnotationsChunk], frozen=True):
224
+ type: Literal[EventType.ANNOT_CHUNK] = EventType.ANNOT_CHUNK
225
+ source: Literal[EventSourceType.LLM] = EventSourceType.LLM
226
+
227
+
228
+ class RefusalChunkEvent(CompletionChunkEvent[RefusalChunk], frozen=True):
229
+ type: Literal[EventType.REFUSAL_CHUNK] = EventType.REFUSAL_CHUNK
230
+ source: Literal[EventSourceType.LLM] = EventSourceType.LLM
231
+
232
+
233
+ START_END_MAP: dict[EventType, list[EventType]] = {
234
+ EventType.COMP_CHUNK: [EventType.COMP_START, EventType.COMP_END],
235
+ EventType.RESP_CHUNK: [EventType.RESP_START, EventType.RESP_END],
236
+ EventType.THINK_CHUNK: [EventType.THINK_START, EventType.THINK_END],
237
+ EventType.TOOL_CALL_CHUNK: [EventType.TOOL_CALL_START, EventType.TOOL_CALL_END],
238
+ EventType.ANNOT_CHUNK: [EventType.ANNOT_START, EventType.ANNOT_END],
239
+ }
240
+
241
+
242
+ class LLMStateChangeEvent(CompletionChunkEvent[_C_co], Generic[_C_co], frozen=True):
243
+ source: Literal[EventSourceType.LLM] = EventSourceType.LLM
244
+ start: bool = True
245
+
246
+ @classmethod
247
+ def from_chunk_event(
248
+ cls, event: CompletionChunkEvent[CompletionChunk]
249
+ ) -> "LLMStateChangeEvent[_C_co]":
250
+ _type = get_args(cls.model_fields["type"].annotation)[0]
251
+ return cls(**event.model_copy(update={"type": _type}).model_dump())
252
+
253
+
254
+ class CompletionStartEvent(LLMStateChangeEvent[CompletionChunk], frozen=True):
255
+ type: Literal[EventType.COMP_START] = EventType.COMP_START
256
+ source: Literal[EventSourceType.LLM] = EventSourceType.LLM
257
+ start: Literal[True] = True
258
+
259
+
260
+ class CompletionEndEvent(LLMStateChangeEvent[CompletionChunk], frozen=True):
261
+ type: Literal[EventType.COMP_END] = EventType.COMP_END
262
+ source: Literal[EventSourceType.LLM] = EventSourceType.LLM
263
+ start: Literal[False] = False
264
+
265
+
266
+ class ResponseStartEvent(LLMStateChangeEvent[ResponseChunk], frozen=True):
267
+ type: Literal[EventType.RESP_START] = EventType.RESP_START
268
+ source: Literal[EventSourceType.LLM] = EventSourceType.LLM
269
+ start: Literal[True] = True
270
+
271
+
272
+ class ResponseEndEvent(LLMStateChangeEvent[ResponseChunk], frozen=True):
273
+ type: Literal[EventType.RESP_END] = EventType.RESP_END
274
+ source: Literal[EventSourceType.LLM] = EventSourceType.LLM
275
+ start: Literal[False] = False
276
+
277
+
278
+ class ThinkingStartEvent(LLMStateChangeEvent[ThinkingChunk], frozen=True):
279
+ type: Literal[EventType.THINK_START] = EventType.THINK_START
280
+ source: Literal[EventSourceType.LLM] = EventSourceType.LLM
281
+ start: Literal[True] = True
282
+
283
+
284
+ class ThinkingEndEvent(LLMStateChangeEvent[ThinkingChunk], frozen=True):
285
+ type: Literal[EventType.THINK_END] = EventType.THINK_END
286
+ source: Literal[EventSourceType.LLM] = EventSourceType.LLM
287
+ start: Literal[False] = False
288
+
289
+
290
+ class ToolCallStartEvent(LLMStateChangeEvent[ToolCallChunk], frozen=True):
291
+ type: Literal[EventType.TOOL_CALL_START] = EventType.TOOL_CALL_START
292
+ source: Literal[EventSourceType.LLM] = EventSourceType.LLM
293
+ start: Literal[True] = True
294
+
295
+
296
+ class ToolCallEndEvent(LLMStateChangeEvent[ToolCallChunk], frozen=True):
297
+ type: Literal[EventType.TOOL_CALL_END] = EventType.TOOL_CALL_END
298
+ source: Literal[EventSourceType.LLM] = EventSourceType.LLM
299
+ start: Literal[False] = False
300
+
301
+
302
+ class AnnotationsStartEvent(LLMStateChangeEvent[AnnotationsChunk], frozen=True):
303
+ type: Literal[EventType.ANNOT_START] = EventType.ANNOT_START
304
+ source: Literal[EventSourceType.LLM] = EventSourceType.LLM
305
+ start: Literal[True] = True
306
+
307
+
308
+ class AnnotationsEndEvent(LLMStateChangeEvent[AnnotationsChunk], frozen=True):
309
+ type: Literal[EventType.ANNOT_END] = EventType.ANNOT_END
310
+ source: Literal[EventSourceType.LLM] = EventSourceType.LLM
311
+ start: Literal[False] = False
312
+
313
+
314
+ class LLMStreamingErrorData(BaseModel):
315
+ error: Exception
316
+ model_name: str | None = None
317
+ model_id: str | None = None
318
+
319
+ model_config = ConfigDict(arbitrary_types_allowed=True)
320
+
321
+
322
+ class LLMStreamingErrorEvent(Event[LLMStreamingErrorData], frozen=True):
323
+ type: Literal[EventType.LLM_ERR] = EventType.LLM_ERR
324
+ source: Literal[EventSourceType.LLM] = EventSourceType.LLM
325
+
326
+
327
+ # Processor events
328
+
329
+
127
330
  class ProcStartEvent(Event[None], frozen=True):
128
331
  type: Literal[EventType.PROC_START] = EventType.PROC_START
129
332
  source: Literal[EventSourceType.PROC] = EventSourceType.PROC
130
333
 
131
334
 
132
- class ProcFinishEvent(Event[None], frozen=True):
133
- type: Literal[EventType.PROC_FINISH] = EventType.PROC_FINISH
335
+ class ProcEndEvent(Event[None], frozen=True):
336
+ type: Literal[EventType.PROC_END] = EventType.PROC_END
134
337
  source: Literal[EventSourceType.PROC] = EventSourceType.PROC
135
338
 
136
339
 
@@ -148,16 +351,6 @@ class ProcPacketOutputEvent(Event[Packet[Any]], frozen=True):
148
351
  ] = EventSourceType.PROC
149
352
 
150
353
 
151
- class WorkflowResultEvent(ProcPacketOutputEvent, frozen=True):
152
- type: Literal[EventType.WORKFLOW_RES] = EventType.WORKFLOW_RES
153
- source: Literal[EventSourceType.WORKFLOW] = EventSourceType.WORKFLOW
154
-
155
-
156
- class RunResultEvent(ProcPacketOutputEvent, frozen=True):
157
- type: Literal[EventType.RUN_RES] = EventType.RUN_RES
158
- source: Literal[EventSourceType.RUN] = EventSourceType.RUN
159
-
160
-
161
354
  class ProcStreamingErrorData(BaseModel):
162
355
  error: Exception
163
356
  call_id: str | None = None
@@ -168,3 +361,16 @@ class ProcStreamingErrorData(BaseModel):
168
361
  class ProcStreamingErrorEvent(Event[ProcStreamingErrorData], frozen=True):
169
362
  type: Literal[EventType.PROC_ERR] = EventType.PROC_ERR
170
363
  source: Literal[EventSourceType.PROC] = EventSourceType.PROC
364
+
365
+
366
+ # Workflow and run events
367
+
368
+
369
+ class WorkflowResultEvent(ProcPacketOutputEvent, frozen=True):
370
+ type: Literal[EventType.WORKFLOW_RES] = EventType.WORKFLOW_RES
371
+ source: Literal[EventSourceType.WORKFLOW] = EventSourceType.WORKFLOW
372
+
373
+
374
+ class RunResultEvent(ProcPacketOutputEvent, frozen=True):
375
+ type: Literal[EventType.RUN_RES] = EventType.RUN_RES
376
+ source: Literal[EventSourceType.RUN] = EventSourceType.RUN
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: grasp_agents
3
- Version: 0.5.6
3
+ Version: 0.5.8
4
4
  Summary: Grasp Agents Library
5
5
  License-File: LICENSE.md
6
6
  Requires-Python: <4,>=3.11.4
@@ -1,21 +1,21 @@
1
1
  grasp_agents/__init__.py,sha256=Z3a_j2Etiap9H6lvE8-PQP_OIGMUcHNPeJAJO12B8kY,1031
2
- grasp_agents/cloud_llm.py,sha256=C6xrKYhiQb4tNXK_rFo2pNlVTXPS_gYd5uevAnpLFeE,13119
2
+ grasp_agents/cloud_llm.py,sha256=gM43G4-dR-vugeKuhGty8iEuZUbloImbz2XyWO0IMjg,13254
3
3
  grasp_agents/costs_dict.yaml,sha256=2MFNWtkv5W5WSCcv1Cj13B1iQLVv5Ot9pS_KW2Gu2DA,2510
4
4
  grasp_agents/errors.py,sha256=K-22TCM1Klhsej47Rg5eTqnGiGPaXgKOpdOZZ7cPipw,4633
5
5
  grasp_agents/generics_utils.py,sha256=5Pw3I9dlnKC2VGqYKC4ZZUO3Z_vTNT-NPFovNfPkl6I,6542
6
6
  grasp_agents/grasp_logging.py,sha256=H1GYhXdQvVkmauFDZ-KDwvVmPQHZUUm9sRqX_ObK2xI,1111
7
7
  grasp_agents/http_client.py,sha256=Es8NXGDkp4Nem7g24-jW0KFGA9Hp_o2Cv3cOvjup-iU,859
8
- grasp_agents/llm.py,sha256=ZkAeGEkpMsOY6T_zj2pL3ZWkP0mwDN_e9ArN99qZfmY,6574
8
+ grasp_agents/llm.py,sha256=w3vVIYUfhr_t45sZa0Nl373Htm05r9NUS02SvCKXbVA,12151
9
9
  grasp_agents/llm_agent.py,sha256=hX3T2Y5qiTt5CrsahNo5t08HFCyBWEiurzYnFykJN9Y,13513
10
10
  grasp_agents/llm_agent_memory.py,sha256=gQwH3g4Ib3ciW2jrBiW13ttwax_pcPobH5RhXRmbc0E,1842
11
- grasp_agents/llm_policy_executor.py,sha256=glusWe4wTIh_rl3bXPbAMueJ5eDfJxPYBTzoecrHPYg,16849
11
+ grasp_agents/llm_policy_executor.py,sha256=bP-O1itfaG-dr2PC9_zLCNMI862cPRqW7vsj9tRCz-I,17062
12
12
  grasp_agents/memory.py,sha256=keHuNEZNSxHT9FKpMohHOCNi7UAz_oRIc91IQEuzaWE,1162
13
13
  grasp_agents/packet.py,sha256=EmE-W4ZSMVZoqClECGFe7OGqrT4FSJ8IVGICrdjtdEY,1462
14
- grasp_agents/packet_pool.py,sha256=i0g4O_fnpsYTU3LNjKgM4TiiiJkHA3YeZP9Y5GatM_I,5082
15
- grasp_agents/printer.py,sha256=wtCH75DgWAwjJntr57kK2e7dagcfliUAfefYHpiwWi0,11203
14
+ grasp_agents/packet_pool.py,sha256=AF7ZMYY1U6ppNLEn6o0R8QXyWmcLQGcju7_TYQpAudg,4443
15
+ grasp_agents/printer.py,sha256=wVNCaR9mbFKyzYdT8YpYD1JQqRqHdLtdfiZrwYxaM6Y,11132
16
16
  grasp_agents/prompt_builder.py,sha256=UuQNnvjrhzd3_NVnvHlCs-NRNRMo4jsMePgZeIxmzSY,5894
17
17
  grasp_agents/run_context.py,sha256=ikakNK1khm0UBEIPETB508BL0IlOKbOUPuq0FZ-iQHQ,942
18
- grasp_agents/runner.py,sha256=sRuKkX8Iopxv_MdGZf22b_AsuH4FIPY28rl15RqwGEY,5005
18
+ grasp_agents/runner.py,sha256=Gc4xQ9EQWbIHPaoe4KQsFkHhSnJK3xNPIGxHsYLI3aY,5147
19
19
  grasp_agents/usage_tracker.py,sha256=ZQfVUUpG0C89hyPWT_JgXnjQOxoYmumcQ9t-aCfcMo8,3561
20
20
  grasp_agents/utils.py,sha256=qKmGBwrQHw1-BgqRLuGTPKGs3J_zbrpk3nxnP1iZBiQ,6152
21
21
  grasp_agents/litellm/__init__.py,sha256=wD8RZBYokFDfbS9Cs7nO_zKb3w7RIVwEGj7g2D5CJH0,4510
@@ -33,7 +33,7 @@ grasp_agents/openai/message_converters.py,sha256=fhSN81uK51EGbLyM2-f0MvPX_UBrMy7
33
33
  grasp_agents/openai/openai_llm.py,sha256=uJbbCytqpv8OCncKdzpiUdkVh3mJWgo95Y9Xetk_Ptg,10556
34
34
  grasp_agents/openai/tool_converters.py,sha256=IotZvpe3xMQcBfcjUTfAsn4LtZljj3zkU9bfpcoiqPw,1177
35
35
  grasp_agents/processors/base_processor.py,sha256=j2_QY6HUjckdxfsf7yAF0xRDp_V-DNDb7hIRMRKUyWw,10685
36
- grasp_agents/processors/parallel_processor.py,sha256=EoB1sqtnuv362S1MTUyn3-TUSO4M5Vpe86Q9HlBmbok,7816
36
+ grasp_agents/processors/parallel_processor.py,sha256=4NH2gfGgUheZWQGKn3NEMp0uQ0kOeJRZ3Ja0a7qmqpg,7863
37
37
  grasp_agents/processors/processor.py,sha256=v7Bf6CGVsjb43XuOtTMuev9UedMy_lBTGifzzCZwh4Q,5157
38
38
  grasp_agents/rate_limiting/__init__.py,sha256=KRgtF_E7R3YfA2cpYcFcZ7wycV0pWVJ0xRQC7YhiIEQ,158
39
39
  grasp_agents/rate_limiting/rate_limiter_chunked.py,sha256=BPgkUXvhmZhTpZs2T6uujNFuxH_kYHiISuf6_-eNhUc,5544
@@ -41,10 +41,10 @@ grasp_agents/rate_limiting/types.py,sha256=PbnNhEAcYedQdIpPJWud8HUVcxa_xZS2RDZu4
41
41
  grasp_agents/rate_limiting/utils.py,sha256=oEDWDNHYMUdxOOG49PlAJochkZq8nnVBCo6JxPc1iSo,2007
42
42
  grasp_agents/typing/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
43
43
  grasp_agents/typing/completion.py,sha256=PHJ01m7WI2KYQL8w7W2ti6hMsKEZnzYGaxbNcBCc_IE,2782
44
- grasp_agents/typing/completion_chunk.py,sha256=t6PvkDWQxRN5xA4efBdeou46RifMFodBmZc45Sx7qxQ,7610
44
+ grasp_agents/typing/completion_chunk.py,sha256=eiOcpyMrH4Ws2XnY3_jj2_g396MqA3zV3lHygHfXt4o,17883
45
45
  grasp_agents/typing/content.py,sha256=XFmLpNWkGhkw5JujO6UsYwhzTHkU67PfhzaXH2waLcQ,3659
46
46
  grasp_agents/typing/converters.py,sha256=kHlocHQS8QnduZOzNPbj3aRD8JpvJd53oudYqWdOxKE,2978
47
- grasp_agents/typing/events.py,sha256=UB0G2mQLmyLHYdEp1YnFi8XF2jpWeUZ4TLFnY64lK0I,5450
47
+ grasp_agents/typing/events.py,sha256=vFq6qRGofY8NuxOG9ZIN2_CnhAqsAodYLD4b4KtAq2U,12620
48
48
  grasp_agents/typing/io.py,sha256=MGEoUjAwKH1AHYglFkKNpHiielw-NFf13Epg3B4Q7Iw,139
49
49
  grasp_agents/typing/message.py,sha256=o7bN84AgrC5Fm3Wx20gqL9ArAMcEtYvnHnXbb04ngCs,3224
50
50
  grasp_agents/typing/tool.py,sha256=4N-k_GvHVPAFyVyEq7z_LYKkA24iQlGoVYiWCzGTgT4,1786
@@ -52,7 +52,7 @@ grasp_agents/workflow/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3h
52
52
  grasp_agents/workflow/looped_workflow.py,sha256=WHp9O3Za2sBVfY_BLOdvPvtY20XsjZQaWSO2-oAFvOY,6806
53
53
  grasp_agents/workflow/sequential_workflow.py,sha256=e3BIWzy_2novmEWNwIteyMbrzvl1-evHrTBE3r3SpU8,3648
54
54
  grasp_agents/workflow/workflow_processor.py,sha256=yrxqAGfznmdkbP5zScKKJguxATfU4ObmA6BDR7YCBNU,3549
55
- grasp_agents-0.5.6.dist-info/METADATA,sha256=c0CNKc5v1lF7iPtHiLfanUt0UKQUztGVJsMcq-vco_0,6865
56
- grasp_agents-0.5.6.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
57
- grasp_agents-0.5.6.dist-info/licenses/LICENSE.md,sha256=-nNNdWqGB8gJ2O-peFQ2Irshv5tW5pHKyTcYkwvH7CE,1201
58
- grasp_agents-0.5.6.dist-info/RECORD,,
55
+ grasp_agents-0.5.8.dist-info/METADATA,sha256=0LFzAa3UIg87-9jv2oCAbh-bPSnt0fELxIDWHmgbJzg,6865
56
+ grasp_agents-0.5.8.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
57
+ grasp_agents-0.5.8.dist-info/licenses/LICENSE.md,sha256=-nNNdWqGB8gJ2O-peFQ2Irshv5tW5pHKyTcYkwvH7CE,1201
58
+ grasp_agents-0.5.8.dist-info/RECORD,,