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.
- grasp_agents/cloud_llm.py +11 -5
- grasp_agents/llm.py +146 -1
- grasp_agents/llm_policy_executor.py +9 -3
- grasp_agents/packet_pool.py +23 -43
- grasp_agents/printer.py +75 -77
- grasp_agents/processors/parallel_processor.py +15 -13
- grasp_agents/runner.py +27 -24
- grasp_agents/typing/completion_chunk.py +302 -3
- grasp_agents/typing/events.py +256 -50
- {grasp_agents-0.5.6.dist-info → grasp_agents-0.5.8.dist-info}/METADATA +1 -1
- {grasp_agents-0.5.6.dist-info → grasp_agents-0.5.8.dist-info}/RECORD +13 -13
- {grasp_agents-0.5.6.dist-info → grasp_agents-0.5.8.dist-info}/WHEEL +0 -0
- {grasp_agents-0.5.6.dist-info → grasp_agents-0.5.8.dist-info}/licenses/LICENSE.md +0 -0
grasp_agents/typing/events.py
CHANGED
@@ -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
|
11
|
-
|
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:
|
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
|
-
|
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
|
76
|
-
|
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
|
-
|
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
|
133
|
-
type: Literal[EventType.
|
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,21 +1,21 @@
|
|
1
1
|
grasp_agents/__init__.py,sha256=Z3a_j2Etiap9H6lvE8-PQP_OIGMUcHNPeJAJO12B8kY,1031
|
2
|
-
grasp_agents/cloud_llm.py,sha256=
|
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=
|
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=
|
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=
|
15
|
-
grasp_agents/printer.py,sha256=
|
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=
|
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=
|
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=
|
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=
|
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.
|
56
|
-
grasp_agents-0.5.
|
57
|
-
grasp_agents-0.5.
|
58
|
-
grasp_agents-0.5.
|
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,,
|
File without changes
|
File without changes
|