letta-nightly 0.6.14.dev20250123104106__py3-none-any.whl → 0.6.15.dev20250124104035__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.
Potentially problematic release.
This version of letta-nightly might be problematic. Click here for more details.
- letta/__init__.py +1 -1
- letta/client/client.py +144 -68
- letta/client/streaming.py +1 -1
- letta/functions/function_sets/extras.py +8 -3
- letta/functions/function_sets/multi_agent.py +1 -1
- letta/functions/helpers.py +2 -2
- letta/llm_api/llm_api_tools.py +2 -2
- letta/llm_api/openai.py +30 -138
- letta/memory.py +4 -4
- letta/offline_memory_agent.py +10 -10
- letta/orm/agent.py +10 -2
- letta/orm/block.py +14 -3
- letta/orm/job.py +2 -1
- letta/orm/message.py +12 -1
- letta/orm/passage.py +6 -2
- letta/orm/source.py +6 -1
- letta/orm/sqlalchemy_base.py +80 -32
- letta/orm/tool.py +5 -2
- letta/schemas/embedding_config_overrides.py +3 -0
- letta/schemas/enums.py +4 -0
- letta/schemas/job.py +1 -1
- letta/schemas/letta_message.py +22 -5
- letta/schemas/llm_config.py +5 -0
- letta/schemas/llm_config_overrides.py +38 -0
- letta/schemas/message.py +61 -15
- letta/schemas/openai/chat_completions.py +1 -1
- letta/schemas/passage.py +1 -1
- letta/schemas/providers.py +24 -8
- letta/schemas/source.py +1 -1
- letta/server/rest_api/app.py +12 -3
- letta/server/rest_api/interface.py +5 -7
- letta/server/rest_api/routers/v1/agents.py +7 -12
- letta/server/rest_api/routers/v1/blocks.py +19 -0
- letta/server/rest_api/routers/v1/organizations.py +2 -2
- letta/server/rest_api/routers/v1/providers.py +2 -2
- letta/server/rest_api/routers/v1/runs.py +15 -7
- letta/server/rest_api/routers/v1/sandbox_configs.py +4 -4
- letta/server/rest_api/routers/v1/sources.py +2 -2
- letta/server/rest_api/routers/v1/tags.py +2 -2
- letta/server/rest_api/routers/v1/tools.py +2 -2
- letta/server/rest_api/routers/v1/users.py +2 -2
- letta/server/server.py +62 -34
- letta/services/agent_manager.py +80 -33
- letta/services/block_manager.py +15 -2
- letta/services/helpers/agent_manager_helper.py +11 -4
- letta/services/job_manager.py +19 -9
- letta/services/message_manager.py +14 -8
- letta/services/organization_manager.py +8 -4
- letta/services/provider_manager.py +8 -4
- letta/services/sandbox_config_manager.py +16 -8
- letta/services/source_manager.py +4 -4
- letta/services/tool_manager.py +3 -3
- letta/services/user_manager.py +9 -5
- {letta_nightly-0.6.14.dev20250123104106.dist-info → letta_nightly-0.6.15.dev20250124104035.dist-info}/METADATA +2 -1
- {letta_nightly-0.6.14.dev20250123104106.dist-info → letta_nightly-0.6.15.dev20250124104035.dist-info}/RECORD +58 -57
- letta/orm/job_usage_statistics.py +0 -30
- {letta_nightly-0.6.14.dev20250123104106.dist-info → letta_nightly-0.6.15.dev20250124104035.dist-info}/LICENSE +0 -0
- {letta_nightly-0.6.14.dev20250123104106.dist-info → letta_nightly-0.6.15.dev20250124104035.dist-info}/WHEEL +0 -0
- {letta_nightly-0.6.14.dev20250123104106.dist-info → letta_nightly-0.6.15.dev20250124104035.dist-info}/entry_points.txt +0 -0
|
@@ -71,8 +71,12 @@ class OrganizationManager:
|
|
|
71
71
|
organization.hard_delete(session)
|
|
72
72
|
|
|
73
73
|
@enforce_types
|
|
74
|
-
def list_organizations(self,
|
|
75
|
-
"""List organizations with pagination
|
|
74
|
+
def list_organizations(self, after: Optional[str] = None, limit: Optional[int] = 50) -> List[PydanticOrganization]:
|
|
75
|
+
"""List all organizations with optional pagination."""
|
|
76
76
|
with self.session_maker() as session:
|
|
77
|
-
|
|
78
|
-
|
|
77
|
+
organizations = OrganizationModel.list(
|
|
78
|
+
db_session=session,
|
|
79
|
+
after=after,
|
|
80
|
+
limit=limit,
|
|
81
|
+
)
|
|
82
|
+
return [org.to_pydantic() for org in organizations]
|
|
@@ -59,11 +59,15 @@ class ProviderManager:
|
|
|
59
59
|
session.commit()
|
|
60
60
|
|
|
61
61
|
@enforce_types
|
|
62
|
-
def list_providers(self,
|
|
63
|
-
"""List providers with pagination
|
|
62
|
+
def list_providers(self, after: Optional[str] = None, limit: Optional[int] = 50) -> List[PydanticProvider]:
|
|
63
|
+
"""List all providers with optional pagination."""
|
|
64
64
|
with self.session_maker() as session:
|
|
65
|
-
|
|
66
|
-
|
|
65
|
+
providers = ProviderModel.list(
|
|
66
|
+
db_session=session,
|
|
67
|
+
after=after,
|
|
68
|
+
limit=limit,
|
|
69
|
+
)
|
|
70
|
+
return [provider.to_pydantic() for provider in providers]
|
|
67
71
|
|
|
68
72
|
@enforce_types
|
|
69
73
|
def get_anthropic_override_provider_id(self) -> Optional[str]:
|
|
@@ -111,7 +111,11 @@ class SandboxConfigManager:
|
|
|
111
111
|
|
|
112
112
|
@enforce_types
|
|
113
113
|
def list_sandbox_configs(
|
|
114
|
-
self,
|
|
114
|
+
self,
|
|
115
|
+
actor: PydanticUser,
|
|
116
|
+
after: Optional[str] = None,
|
|
117
|
+
limit: Optional[int] = 50,
|
|
118
|
+
sandbox_type: Optional[SandboxType] = None,
|
|
115
119
|
) -> List[PydanticSandboxConfig]:
|
|
116
120
|
"""List all sandbox configurations with optional pagination."""
|
|
117
121
|
kwargs = {"organization_id": actor.organization_id}
|
|
@@ -119,7 +123,7 @@ class SandboxConfigManager:
|
|
|
119
123
|
kwargs.update({"type": sandbox_type})
|
|
120
124
|
|
|
121
125
|
with self.session_maker() as session:
|
|
122
|
-
sandboxes = SandboxConfigModel.list(db_session=session,
|
|
126
|
+
sandboxes = SandboxConfigModel.list(db_session=session, after=after, limit=limit, **kwargs)
|
|
123
127
|
return [sandbox.to_pydantic() for sandbox in sandboxes]
|
|
124
128
|
|
|
125
129
|
@enforce_types
|
|
@@ -207,13 +211,17 @@ class SandboxConfigManager:
|
|
|
207
211
|
|
|
208
212
|
@enforce_types
|
|
209
213
|
def list_sandbox_env_vars(
|
|
210
|
-
self,
|
|
214
|
+
self,
|
|
215
|
+
sandbox_config_id: str,
|
|
216
|
+
actor: PydanticUser,
|
|
217
|
+
after: Optional[str] = None,
|
|
218
|
+
limit: Optional[int] = 50,
|
|
211
219
|
) -> List[PydanticEnvVar]:
|
|
212
220
|
"""List all sandbox environment variables with optional pagination."""
|
|
213
221
|
with self.session_maker() as session:
|
|
214
222
|
env_vars = SandboxEnvVarModel.list(
|
|
215
223
|
db_session=session,
|
|
216
|
-
|
|
224
|
+
after=after,
|
|
217
225
|
limit=limit,
|
|
218
226
|
organization_id=actor.organization_id,
|
|
219
227
|
sandbox_config_id=sandbox_config_id,
|
|
@@ -222,13 +230,13 @@ class SandboxConfigManager:
|
|
|
222
230
|
|
|
223
231
|
@enforce_types
|
|
224
232
|
def list_sandbox_env_vars_by_key(
|
|
225
|
-
self, key: str, actor: PydanticUser,
|
|
233
|
+
self, key: str, actor: PydanticUser, after: Optional[str] = None, limit: Optional[int] = 50
|
|
226
234
|
) -> List[PydanticEnvVar]:
|
|
227
235
|
"""List all sandbox environment variables with optional pagination."""
|
|
228
236
|
with self.session_maker() as session:
|
|
229
237
|
env_vars = SandboxEnvVarModel.list(
|
|
230
238
|
db_session=session,
|
|
231
|
-
|
|
239
|
+
after=after,
|
|
232
240
|
limit=limit,
|
|
233
241
|
organization_id=actor.organization_id,
|
|
234
242
|
key=key,
|
|
@@ -237,9 +245,9 @@ class SandboxConfigManager:
|
|
|
237
245
|
|
|
238
246
|
@enforce_types
|
|
239
247
|
def get_sandbox_env_vars_as_dict(
|
|
240
|
-
self, sandbox_config_id: str, actor: PydanticUser,
|
|
248
|
+
self, sandbox_config_id: str, actor: PydanticUser, after: Optional[str] = None, limit: Optional[int] = 50
|
|
241
249
|
) -> Dict[str, str]:
|
|
242
|
-
env_vars = self.list_sandbox_env_vars(sandbox_config_id, actor,
|
|
250
|
+
env_vars = self.list_sandbox_env_vars(sandbox_config_id, actor, after, limit)
|
|
243
251
|
result = {}
|
|
244
252
|
for env_var in env_vars:
|
|
245
253
|
result[env_var.key] = env_var.value
|
letta/services/source_manager.py
CHANGED
|
@@ -65,12 +65,12 @@ class SourceManager:
|
|
|
65
65
|
return source.to_pydantic()
|
|
66
66
|
|
|
67
67
|
@enforce_types
|
|
68
|
-
def list_sources(self, actor: PydanticUser,
|
|
68
|
+
def list_sources(self, actor: PydanticUser, after: Optional[str] = None, limit: Optional[int] = 50, **kwargs) -> List[PydanticSource]:
|
|
69
69
|
"""List all sources with optional pagination."""
|
|
70
70
|
with self.session_maker() as session:
|
|
71
71
|
sources = SourceModel.list(
|
|
72
72
|
db_session=session,
|
|
73
|
-
|
|
73
|
+
after=after,
|
|
74
74
|
limit=limit,
|
|
75
75
|
organization_id=actor.organization_id,
|
|
76
76
|
**kwargs,
|
|
@@ -149,12 +149,12 @@ class SourceManager:
|
|
|
149
149
|
|
|
150
150
|
@enforce_types
|
|
151
151
|
def list_files(
|
|
152
|
-
self, source_id: str, actor: PydanticUser,
|
|
152
|
+
self, source_id: str, actor: PydanticUser, after: Optional[str] = None, limit: Optional[int] = 50
|
|
153
153
|
) -> List[PydanticFileMetadata]:
|
|
154
154
|
"""List all files with optional pagination."""
|
|
155
155
|
with self.session_maker() as session:
|
|
156
156
|
files = FileMetadataModel.list(
|
|
157
|
-
db_session=session,
|
|
157
|
+
db_session=session, after=after, limit=limit, organization_id=actor.organization_id, source_id=source_id
|
|
158
158
|
)
|
|
159
159
|
return [file.to_pydantic() for file in files]
|
|
160
160
|
|
letta/services/tool_manager.py
CHANGED
|
@@ -93,12 +93,12 @@ class ToolManager:
|
|
|
93
93
|
return None
|
|
94
94
|
|
|
95
95
|
@enforce_types
|
|
96
|
-
def list_tools(self, actor: PydanticUser,
|
|
97
|
-
"""List all tools with optional pagination
|
|
96
|
+
def list_tools(self, actor: PydanticUser, after: Optional[str] = None, limit: Optional[int] = 50) -> List[PydanticTool]:
|
|
97
|
+
"""List all tools with optional pagination."""
|
|
98
98
|
with self.session_maker() as session:
|
|
99
99
|
tools = ToolModel.list(
|
|
100
100
|
db_session=session,
|
|
101
|
-
|
|
101
|
+
after=after,
|
|
102
102
|
limit=limit,
|
|
103
103
|
organization_id=actor.organization_id,
|
|
104
104
|
)
|
letta/services/user_manager.py
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
from typing import List, Optional
|
|
1
|
+
from typing import List, Optional
|
|
2
2
|
|
|
3
3
|
from letta.orm.errors import NoResultFound
|
|
4
4
|
from letta.orm.organization import Organization as OrganizationModel
|
|
@@ -99,8 +99,12 @@ class UserManager:
|
|
|
99
99
|
return self.get_default_user()
|
|
100
100
|
|
|
101
101
|
@enforce_types
|
|
102
|
-
def list_users(self,
|
|
103
|
-
"""List users with pagination
|
|
102
|
+
def list_users(self, after: Optional[str] = None, limit: Optional[int] = 50) -> List[PydanticUser]:
|
|
103
|
+
"""List all users with optional pagination."""
|
|
104
104
|
with self.session_maker() as session:
|
|
105
|
-
|
|
106
|
-
|
|
105
|
+
users = UserModel.list(
|
|
106
|
+
db_session=session,
|
|
107
|
+
after=after,
|
|
108
|
+
limit=limit,
|
|
109
|
+
)
|
|
110
|
+
return [user.to_pydantic() for user in users]
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: letta-nightly
|
|
3
|
-
Version: 0.6.
|
|
3
|
+
Version: 0.6.15.dev20250124104035
|
|
4
4
|
Summary: Create LLM agents with long-term memory and custom tools
|
|
5
5
|
License: Apache License
|
|
6
6
|
Author: Letta Team
|
|
@@ -50,6 +50,7 @@ Requires-Dist: llama-index-embeddings-openai (>=0.3.1,<0.4.0)
|
|
|
50
50
|
Requires-Dist: locust (>=2.31.5,<3.0.0) ; extra == "dev" or extra == "all"
|
|
51
51
|
Requires-Dist: nltk (>=3.8.1,<4.0.0)
|
|
52
52
|
Requires-Dist: numpy (>=1.26.2,<2.0.0)
|
|
53
|
+
Requires-Dist: openai (>=1.60.0,<2.0.0)
|
|
53
54
|
Requires-Dist: pathvalidate (>=3.2.1,<4.0.0)
|
|
54
55
|
Requires-Dist: pexpect (>=4.9.0,<5.0.0) ; extra == "dev" or extra == "all"
|
|
55
56
|
Requires-Dist: pg8000 (>=1.30.3,<2.0.0) ; extra == "postgres" or extra == "all"
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
letta/__init__.py,sha256=
|
|
1
|
+
letta/__init__.py,sha256=APDyQWe8kU4chpaoGCmEEzk3fbTDbfUN-4zqkVAXWFg,920
|
|
2
2
|
letta/__main__.py,sha256=6Hs2PV7EYc5Tid4g4OtcLXhqVHiNYTGzSBdoOnW2HXA,29
|
|
3
3
|
letta/agent.py,sha256=aKJWo3Q3OXuSa8UhPTdHvMvyQaDPMaYHhMZgF8Sg3lc,56622
|
|
4
4
|
letta/benchmark/benchmark.py,sha256=ebvnwfp3yezaXOQyGXkYCDYpsmre-b9hvNtnyx4xkG0,3701
|
|
@@ -8,8 +8,8 @@ letta/cli/cli.py,sha256=_uGKM-RvGLGf7y8iWjkLgLTxIw7uWrdCdL5ETUOCkUs,16472
|
|
|
8
8
|
letta/cli/cli_config.py,sha256=I5J8D0OpsDDXCTOWFqjmxQuZCGrC1oCuNbVkrKwg4VM,8544
|
|
9
9
|
letta/cli/cli_load.py,sha256=xFw-CuzjChcIptaqQ1XpDROENt0JSjyPeiQ0nmEeO1k,2706
|
|
10
10
|
letta/client/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
11
|
-
letta/client/client.py,sha256=
|
|
12
|
-
letta/client/streaming.py,sha256=
|
|
11
|
+
letta/client/client.py,sha256=1TsyCdY0f6aYxxHinA6Rgld8C-nmDC0beA3_iyYlcq0,139269
|
|
12
|
+
letta/client/streaming.py,sha256=Vkf5iz6h9FwiCmpYTrtMR162HQZNqrpHHWQlhUjpxQA,4873
|
|
13
13
|
letta/client/utils.py,sha256=VCGV-op5ZSmurd4yw7Vhf93XDQ0BkyBT8qsuV7EqfiU,2859
|
|
14
14
|
letta/config.py,sha256=JFGY4TWW0Wm5fTbZamOwWqk5G8Nn-TXyhgByGoAqy2c,12375
|
|
15
15
|
letta/constants.py,sha256=CTJa3eFroiQIPg2iCxT_9PqV5IogJKEZLc78K70Ou-Q,7118
|
|
@@ -20,10 +20,10 @@ letta/errors.py,sha256=6fQXg2unP-2fo3R7db0ayKKWlD2XMusOPNi9TgJplCg,5558
|
|
|
20
20
|
letta/functions/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
21
21
|
letta/functions/ast_parsers.py,sha256=MEFfGxpflUsw34JiY9zdunkpbczAYxte8t4rDPOmXfQ,3620
|
|
22
22
|
letta/functions/function_sets/base.py,sha256=bOiitkhzqYKwZBiRYrx29AlordiA5IrXw25eVSRK8BY,5984
|
|
23
|
-
letta/functions/function_sets/extras.py,sha256=
|
|
24
|
-
letta/functions/function_sets/multi_agent.py,sha256=
|
|
23
|
+
letta/functions/function_sets/extras.py,sha256=Z9yEdBpQFtTjpxkgbtkWMA8GtDWC6ai2bdsRpnv0H_w,4837
|
|
24
|
+
letta/functions/function_sets/multi_agent.py,sha256=Z5x0J71l_14FDd0QbQ0rNqCb5UVRkSKH-u2cPrQPF4o,3838
|
|
25
25
|
letta/functions/functions.py,sha256=wxxo6MJXBfcPeEc1YYWK5ENOD3RFNTIc65RTDBo77x4,5673
|
|
26
|
-
letta/functions/helpers.py,sha256=
|
|
26
|
+
letta/functions/helpers.py,sha256=iG6KVUDamhJuWNxVANtZB5GSSEUv1KWQTRnb5fVNh4Q,14045
|
|
27
27
|
letta/functions/schema_generator.py,sha256=qIdEYn4gu_lQRaCLSA_zmogcPBWF1Lv7G-PxN77ozCI,19686
|
|
28
28
|
letta/helpers/__init__.py,sha256=p0luQ1Oe3Skc6sH4O58aHHA3Qbkyjifpuq0DZ1GAY0U,59
|
|
29
29
|
letta/helpers/tool_rule_solver.py,sha256=VnJfqb5L1Lcipc_tBVGj0om60GKQkMkNLgg6X9VZl2c,6210
|
|
@@ -39,9 +39,9 @@ letta/llm_api/azure_openai_constants.py,sha256=oXtKrgBFHf744gyt5l1thILXgyi8NDNUr
|
|
|
39
39
|
letta/llm_api/cohere.py,sha256=H5kzYH_aQAnGNq7lip7XyKGLEOKC318Iw0_tiTP6kc4,14772
|
|
40
40
|
letta/llm_api/google_ai.py,sha256=MIX4nmyC6448AvyPPSE8JZ_tzSpKJTArkZSfQGGoy0M,17920
|
|
41
41
|
letta/llm_api/helpers.py,sha256=ov9WHsLSvkceIpSNJ3PUgCvufD862Bcrum-bWrUVJko,16193
|
|
42
|
-
letta/llm_api/llm_api_tools.py,sha256
|
|
42
|
+
letta/llm_api/llm_api_tools.py,sha256=yv4r9m212Fie2uBDV6F3sMN8mRGmZeYFj1P1rtC5UFw,19591
|
|
43
43
|
letta/llm_api/mistral.py,sha256=fHdfD9ug-rQIk2qn8tRKay1U6w9maF11ryhKi91FfXM,1593
|
|
44
|
-
letta/llm_api/openai.py,sha256=
|
|
44
|
+
letta/llm_api/openai.py,sha256=6iXuuuLBhvdsCsRFNZMPMAhn_w2EvVKroHS5Sc7lK6Q,19912
|
|
45
45
|
letta/local_llm/README.md,sha256=hFJyw5B0TU2jrh9nb0zGZMgdH-Ei1dSRfhvPQG_NSoU,168
|
|
46
46
|
letta/local_llm/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
47
47
|
letta/local_llm/chat_completion_proxy.py,sha256=ElYR0M5SY2zL4NQzInye21MxqtiP3AUXX9Ia0KbkD4Y,12948
|
|
@@ -81,36 +81,35 @@ letta/local_llm/webui/legacy_settings.py,sha256=BLmd3TSx5StnY3ibjwaxYATPt_Lvq-o1
|
|
|
81
81
|
letta/local_llm/webui/settings.py,sha256=gmLHfiOl1u4JmlAZU2d2O8YKF9lafdakyjwR_ftVPh8,552
|
|
82
82
|
letta/log.py,sha256=FxkAk2f8Bl-u9dfImSj1DYnjAsmV6PL3tjTSnEiNP48,2218
|
|
83
83
|
letta/main.py,sha256=_agyaYPJq70OL0goNwO34zENL2KupnTgqlg-HVcNaTY,15379
|
|
84
|
-
letta/memory.py,sha256=
|
|
85
|
-
letta/offline_memory_agent.py,sha256=
|
|
84
|
+
letta/memory.py,sha256=Jqh6Uz4mMAC1aAO2sH8zw4TuMWZr1OI-ZgkSUDh2TQI,3353
|
|
85
|
+
letta/offline_memory_agent.py,sha256=P_rm6GmKAH6lg7-njuv7dK29f7v5-tAQy-rMOwcPfwk,7499
|
|
86
86
|
letta/openai_backcompat/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
87
87
|
letta/openai_backcompat/openai_object.py,sha256=Y1ZS1sATP60qxJiOsjOP3NbwSzuzvkNAvb3DeuhM5Uk,13490
|
|
88
88
|
letta/orm/__all__.py,sha256=2gh2MZTkA3Hw67VWVKK3JIStJOqTeLdpCvYSVYNeEDA,692
|
|
89
89
|
letta/orm/__init__.py,sha256=wPokP-EvOri2LhKLjmYVtI_FWchaxgFvJeF_NAfqJIo,842
|
|
90
|
-
letta/orm/agent.py,sha256=
|
|
90
|
+
letta/orm/agent.py,sha256=nNdRyaN6osj5pUP3wCfhtrijauEQyfQJSik2bgb6RxY,6441
|
|
91
91
|
letta/orm/agents_tags.py,sha256=dYSnHz4IWBjyOiQ4RJomX3P0QN76JTlEZEw5eJM6Emg,925
|
|
92
92
|
letta/orm/base.py,sha256=VjvxF9TwKF9Trf8BJkDgf7D6KrWWopOkUiF18J3IElk,3071
|
|
93
|
-
letta/orm/block.py,sha256=
|
|
93
|
+
letta/orm/block.py,sha256=EjH8lXexHtFIHJ8G-RjNo2oAH834x0Hbn4CER9S4U74,3880
|
|
94
94
|
letta/orm/blocks_agents.py,sha256=W0dykl9OchAofSuAYZD5zNmhyMabPr9LTJrz-I3A0m4,983
|
|
95
95
|
letta/orm/custom_columns.py,sha256=EML5AE5FQ4ugI8MGj4yqfmwBrw7YAcp4_dO6i9oQs6I,5192
|
|
96
96
|
letta/orm/enums.py,sha256=HzX3eXhBH-PnpxhBWtWbkV4J6wrStlJaX_OVdZgAdLU,428
|
|
97
97
|
letta/orm/errors.py,sha256=Se0Guz-gqi-D36NUWSh7AP9zTVCSph9KgZh_trwng4o,734
|
|
98
98
|
letta/orm/file.py,sha256=7_p7LxityP3NQZVURQYG0kgcZhEkVuMN0Fj4h9YOe1w,1780
|
|
99
|
-
letta/orm/job.py,sha256=
|
|
99
|
+
letta/orm/job.py,sha256=zcXy44wNVnGMo4IKAkRzctngwWAtO97W1WzLjYIKarA,2167
|
|
100
100
|
letta/orm/job_messages.py,sha256=SgwaYPYwwAC3dBtl9Xye_TWUl9H_-m95S95TTcfPyOg,1245
|
|
101
|
-
letta/orm/
|
|
102
|
-
letta/orm/message.py,sha256=RIu-w2Qk8tt9V-3MwDO9uM1UU433skb1eLpZBMsdTHE,2288
|
|
101
|
+
letta/orm/message.py,sha256=qY5lhSq5JDOSGKnEnLryKr2bHYLr60pk2LqYBxGeONQ,2718
|
|
103
102
|
letta/orm/mixins.py,sha256=9c79Kfr-Z1hL-SDYKeoptx_yMTbBwJJBo9nrKEzSDAc,1622
|
|
104
103
|
letta/orm/organization.py,sha256=b12iASuskPnG2yHyFh8p2BFROkoqMPEYUFMuVcFPCHs,2897
|
|
105
|
-
letta/orm/passage.py,sha256=
|
|
104
|
+
letta/orm/passage.py,sha256=tQi-fZZFBFVz0KZxd0foKPkAOaempgiYOHHK6lJ98gw,3332
|
|
106
105
|
letta/orm/provider.py,sha256=-qA9tvKTZgaM4D7CoDZZiA7zTgjaaWDV4jZvifQv_MM,805
|
|
107
106
|
letta/orm/sandbox_config.py,sha256=DyOy_1_zCMlp13elCqPcuuA6OwUove6mrjhcpROTg50,4150
|
|
108
|
-
letta/orm/source.py,sha256=
|
|
107
|
+
letta/orm/source.py,sha256=cpaleNiP-DomM2oopwgL2DGn38ITQwLMs5mKODf_c_4,2167
|
|
109
108
|
letta/orm/sources_agents.py,sha256=Ik_PokCBrXRd9wXWomeNeb8EtLUwjb9VMZ8LWXqpK5A,473
|
|
110
|
-
letta/orm/sqlalchemy_base.py,sha256=
|
|
109
|
+
letta/orm/sqlalchemy_base.py,sha256=scF7umxCxw0cV6szlNzlROLbV7-ppT4_Btrt7AHU3FQ,21513
|
|
111
110
|
letta/orm/sqlite_functions.py,sha256=JCScKiRlYCKxy9hChQ8wsk4GMKknZE24MunnG3fM1Gw,4255
|
|
112
111
|
letta/orm/step.py,sha256=6ygEnkQSIMxNH08Om0a-UK-f2E66QSpp9GdGm7mGjFg,2853
|
|
113
|
-
letta/orm/tool.py,sha256=
|
|
112
|
+
letta/orm/tool.py,sha256=JEPHlM4ePaLaGtHpHhYdKCteHTRJnOFgQmfR5wL8TpA,2379
|
|
114
113
|
letta/orm/tools_agents.py,sha256=r6t-V21w2_mG8n38zuUb5jOi_3hRxsjgezsLA4sg0m4,626
|
|
115
114
|
letta/orm/user.py,sha256=rK5N5ViDxmesZMqVVHB7FcQNpcSoM-hB42MyI6q3MnI,1004
|
|
116
115
|
letta/personas/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -143,29 +142,31 @@ letta/pytest.ini,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
|
143
142
|
letta/schemas/agent.py,sha256=VmzzaRb4HA20fahzUxU2JOdcIxt2ywLFdTRjbR6Ogyk,11783
|
|
144
143
|
letta/schemas/block.py,sha256=FYYmRWjH4d4QHMUx_nmIXjv_qJna_l-Ip_4i51wDBPA,5942
|
|
145
144
|
letta/schemas/embedding_config.py,sha256=RkLbUorFkMWr1tPkn6c2aHrnICjWTbhPY86tIncwXyA,3373
|
|
146
|
-
letta/schemas/
|
|
145
|
+
letta/schemas/embedding_config_overrides.py,sha256=lkTa4y-EQ2RnaEKtKDM0sEAk7EwNa67REw8DGNNtGQY,84
|
|
146
|
+
letta/schemas/enums.py,sha256=UUkeGQNw-9vButo1AXVZLKggLo8QsfO8Zm_fM5pD_zA,1125
|
|
147
147
|
letta/schemas/environment_variables.py,sha256=VRtzOjdeQdHcSHXisk7oJUQlheruxhSWNS0xqlfGzbs,2429
|
|
148
148
|
letta/schemas/file.py,sha256=ChN2CWzLI2TT9WLItcfElEH0E8b7kzPylF2OQBr6Beg,1550
|
|
149
149
|
letta/schemas/health.py,sha256=zT6mYovvD17iJRuu2rcaQQzbEEYrkwvAE9TB7iU824c,139
|
|
150
|
-
letta/schemas/job.py,sha256=
|
|
150
|
+
letta/schemas/job.py,sha256=pbLNNH1D9HAncGelkvUcG4LUf23hl9FGKeldNzteLq8,1550
|
|
151
151
|
letta/schemas/letta_base.py,sha256=HTnSHJ2YSyhEdpY-vg9Y7ywqS1zzTjb9j5iVPYsuVSk,3991
|
|
152
|
-
letta/schemas/letta_message.py,sha256=
|
|
152
|
+
letta/schemas/letta_message.py,sha256=QHzIEwnEJEkE02biCwyQo5IvL2fVq_whBRQD3vPYO48,9837
|
|
153
153
|
letta/schemas/letta_request.py,sha256=YRLjzGHQusj0NIue2AjCN-6j0cvxZ_DJQKjgTpT3fPc,1355
|
|
154
154
|
letta/schemas/letta_response.py,sha256=yL0w-cdUazgEqg6_F4LJz2tugKNAZsB83Gr5jfXwa5U,7124
|
|
155
|
-
letta/schemas/llm_config.py,sha256=
|
|
155
|
+
letta/schemas/llm_config.py,sha256=d18QhSjy8TxtXior00PQE3Q8Kk2gbyvFPF6GmMnjEuc,4934
|
|
156
|
+
letta/schemas/llm_config_overrides.py,sha256=-oRglCTcajF6UAK3RAa0FLWVuKODPI1v403fDIWMAtA,1815
|
|
156
157
|
letta/schemas/memory.py,sha256=GOYDfPKzbWftUWO9Hv4KW7xAi1EIQmC8zpP7qvEkVHw,10245
|
|
157
|
-
letta/schemas/message.py,sha256=
|
|
158
|
+
letta/schemas/message.py,sha256=aVhx0h5aoHoC-Qg9zEHy8iqK7aIFh-r6Mw__KVXlskc,36197
|
|
158
159
|
letta/schemas/openai/chat_completion_request.py,sha256=AOIwgbN3CZKVqkuXeMHeSa53u4h0wVq69t3T_LJ0vIE,3389
|
|
159
160
|
letta/schemas/openai/chat_completion_response.py,sha256=ub-oVSyLpuJd-5_yzCSIRR8tD3GM83IeDO1c1uAATa4,3970
|
|
160
|
-
letta/schemas/openai/chat_completions.py,sha256=
|
|
161
|
+
letta/schemas/openai/chat_completions.py,sha256=l0e9sT9boTD5VBU5YtJ0s7qUtCfFGB2K-gQLeEZ2LHU,3599
|
|
161
162
|
letta/schemas/openai/embedding_response.py,sha256=WKIZpXab1Av7v6sxKG8feW3ZtpQUNosmLVSuhXYa_xU,357
|
|
162
163
|
letta/schemas/openai/openai.py,sha256=Hilo5BiLAGabzxCwnwfzK5QrWqwYD8epaEKFa4Pwndk,7970
|
|
163
164
|
letta/schemas/organization.py,sha256=WWbUWVSp_VQRFwWN4fdHg1yObiV6x9rZnvIY8x5BPs0,746
|
|
164
|
-
letta/schemas/passage.py,sha256=
|
|
165
|
-
letta/schemas/providers.py,sha256=
|
|
165
|
+
letta/schemas/passage.py,sha256=pdCLZgOn0gWK1gB6aFHLS0gfdWCBqLaiHDA0iQ12Zd8,3704
|
|
166
|
+
letta/schemas/providers.py,sha256=6Pj8V7Z37jAHRE8P6AGbXvE-R-cl9USNbWTFFu8V2Qg,30531
|
|
166
167
|
letta/schemas/run.py,sha256=OyuAXXjL96ftOeLdqkiIKi9csGeewy-pN5SgWk-vYGg,2124
|
|
167
168
|
letta/schemas/sandbox_config.py,sha256=v32V5T73X-VxhDk0g_1RGniK985KMvg2xyLVi1dvMQY,4215
|
|
168
|
-
letta/schemas/source.py,sha256
|
|
169
|
+
letta/schemas/source.py,sha256=-BQVolcXA2ziCu2ztR6cbTdGUc8G7vGJy7rvpdf1hpg,2880
|
|
169
170
|
letta/schemas/step.py,sha256=cCmDChQMndy7aMJGH0Z19VbzJkAeFTYuA0cJpzjW2g0,1928
|
|
170
171
|
letta/schemas/tool.py,sha256=bvWMDH_dSSLqyXXvItiLENwHfXS067Cw-ZsKa6lAlmc,11302
|
|
171
172
|
letta/schemas/tool_rule.py,sha256=LJwi1T474-3zbFGiW7_fegyfduC3F2u7cdlBsV0U_IU,1679
|
|
@@ -175,29 +176,29 @@ letta/server/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
|
175
176
|
letta/server/constants.py,sha256=yAdGbLkzlOU_dLTx0lKDmAnj0ZgRXCEaIcPJWO69eaE,92
|
|
176
177
|
letta/server/generate_openapi_schema.sh,sha256=0OtBhkC1g6CobVmNEd_m2B6sTdppjbJLXaM95icejvE,371
|
|
177
178
|
letta/server/rest_api/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
178
|
-
letta/server/rest_api/app.py,sha256=
|
|
179
|
+
letta/server/rest_api/app.py,sha256=bhF2LyikAQckEAqDHJ6mCCjeIT0QFEvYOkvO6dWPjD4,11460
|
|
179
180
|
letta/server/rest_api/auth/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
180
181
|
letta/server/rest_api/auth/index.py,sha256=fQBGyVylGSRfEMLQ17cZzrHd5Y1xiVylvPqH5Rl-lXQ,1378
|
|
181
182
|
letta/server/rest_api/auth_token.py,sha256=725EFEIiNj4dh70hrSd94UysmFD8vcJLrTRfNHkzxDo,774
|
|
182
|
-
letta/server/rest_api/interface.py,sha256=
|
|
183
|
+
letta/server/rest_api/interface.py,sha256=5atcyNbOQYryVqPxu54qi-zRAjzSaG3gncW7xVicBYE,51325
|
|
183
184
|
letta/server/rest_api/routers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
184
185
|
letta/server/rest_api/routers/v1/__init__.py,sha256=bXEZzmvHNX7N11NDwsxyajjci7yxP-2dYIvbeJi33vA,1070
|
|
185
|
-
letta/server/rest_api/routers/v1/agents.py,sha256=
|
|
186
|
-
letta/server/rest_api/routers/v1/blocks.py,sha256=
|
|
186
|
+
letta/server/rest_api/routers/v1/agents.py,sha256=wsAQbyWEvPdIxiPQZg2xSPtrZXtSbp_ri1WXdjayDvM,25040
|
|
187
|
+
letta/server/rest_api/routers/v1/blocks.py,sha256=oJYOpGUTd4AhKwVolVlZPIXO2EoOrBHkyi2PdrmbtmA,3888
|
|
187
188
|
letta/server/rest_api/routers/v1/health.py,sha256=pKCuVESlVOhGIb4VC4K-H82eZqfghmT6kvj2iOkkKuc,401
|
|
188
189
|
letta/server/rest_api/routers/v1/jobs.py,sha256=pKihW12hQdFwt6tHQXs94yOMv6xotlhBB3Vl7Q5ASKQ,2738
|
|
189
190
|
letta/server/rest_api/routers/v1/llms.py,sha256=lYp5URXtZk1yu_Pe-p1Wq1uQ0qeb6aWtx78rXSB7N_E,881
|
|
190
|
-
letta/server/rest_api/routers/v1/organizations.py,sha256=
|
|
191
|
-
letta/server/rest_api/routers/v1/providers.py,sha256=
|
|
192
|
-
letta/server/rest_api/routers/v1/runs.py,sha256=
|
|
193
|
-
letta/server/rest_api/routers/v1/sandbox_configs.py,sha256=
|
|
194
|
-
letta/server/rest_api/routers/v1/sources.py,sha256=
|
|
195
|
-
letta/server/rest_api/routers/v1/tags.py,sha256=
|
|
196
|
-
letta/server/rest_api/routers/v1/tools.py,sha256=
|
|
197
|
-
letta/server/rest_api/routers/v1/users.py,sha256=
|
|
191
|
+
letta/server/rest_api/routers/v1/organizations.py,sha256=8n-kA9LHtKImdY2xL-v7m6nYAbFWqH1vjBCJhQbv7Is,2077
|
|
192
|
+
letta/server/rest_api/routers/v1/providers.py,sha256=EOwSy4KsU63RY_NjzjjR4K6uaAmewXYTgbNOL4aO-X8,2444
|
|
193
|
+
letta/server/rest_api/routers/v1/runs.py,sha256=4w06j5CYfRzVf5Jf9Fzh7zQyVxC1R6q9gpglERYKeHU,6062
|
|
194
|
+
letta/server/rest_api/routers/v1/sandbox_configs.py,sha256=RR7u3Yj2d9llopbUYyXxgJnV-UXY0LvUMoL41a1yXCk,5260
|
|
195
|
+
letta/server/rest_api/routers/v1/sources.py,sha256=g7NKgbZkS7y1vlukJHZ_yoWrk3AxyoWKTVGszp0Ky18,8414
|
|
196
|
+
letta/server/rest_api/routers/v1/tags.py,sha256=45G0cmcP-ER0OO5OanT_fGtGQfl9ZjRKU97mFwtwyfo,878
|
|
197
|
+
letta/server/rest_api/routers/v1/tools.py,sha256=MqnnCDAfNLAEcZLRroZBthueiG7QJViNAMf84HZZM5A,12010
|
|
198
|
+
letta/server/rest_api/routers/v1/users.py,sha256=G5DBHSkPfBgVHN2Wkm-rVYiLQAudwQczIq2Z3YLdbVo,2277
|
|
198
199
|
letta/server/rest_api/static_files.py,sha256=NG8sN4Z5EJ8JVQdj19tkFa9iQ1kBPTab9f_CUxd_u4Q,3143
|
|
199
200
|
letta/server/rest_api/utils.py,sha256=dsjkZzgo9Rk3fjUf1ajjiiql1eeO5DAzmXprttI7bJU,3993
|
|
200
|
-
letta/server/server.py,sha256=
|
|
201
|
+
letta/server/server.py,sha256=vex2TY4xZK8p7rwlk9u2iz5YgqwYBHIz5lJ8r_-Kxjw,59016
|
|
201
202
|
letta/server/startup.sh,sha256=722uKJWB2C4q3vjn39De2zzPacaZNw_1fN1SpLGjKIo,1569
|
|
202
203
|
letta/server/static_files/assets/index-048c9598.js,sha256=mR16XppvselwKCcNgONs4L7kZEVa4OEERm4lNZYtLSk,146819
|
|
203
204
|
letta/server/static_files/assets/index-0e31b727.css,sha256=SBbja96uiQVLDhDOroHgM6NSl7tS4lpJRCREgSS_hA8,7672
|
|
@@ -211,28 +212,28 @@ letta/server/ws_api/interface.py,sha256=TWl9vkcMCnLsUtgsuENZ-ku2oMDA-OUTzLh_yNRo
|
|
|
211
212
|
letta/server/ws_api/protocol.py,sha256=M_-gM5iuDBwa1cuN2IGNCG5GxMJwU2d3XW93XALv9s8,1821
|
|
212
213
|
letta/server/ws_api/server.py,sha256=cBSzf-V4zT1bL_0i54OTI3cMXhTIIxqjSRF8pYjk7fg,5835
|
|
213
214
|
letta/services/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
214
|
-
letta/services/agent_manager.py,sha256=
|
|
215
|
-
letta/services/block_manager.py,sha256=
|
|
216
|
-
letta/services/helpers/agent_manager_helper.py,sha256=
|
|
217
|
-
letta/services/job_manager.py,sha256=
|
|
218
|
-
letta/services/message_manager.py,sha256=
|
|
219
|
-
letta/services/organization_manager.py,sha256=
|
|
215
|
+
letta/services/agent_manager.py,sha256=I6F-nED9Q6O_FY2-O1gHDY-OaQIxbt3FsL88DENVTfE,50287
|
|
216
|
+
letta/services/block_manager.py,sha256=u56TXG46QDMbQZadDGCO7fY1vreJ69Xr_0MUF53xw4k,5519
|
|
217
|
+
letta/services/helpers/agent_manager_helper.py,sha256=FcdVeFDi52Dvj3v6zLMYW2IaRUGhgYhW_pndH98s1b0,10630
|
|
218
|
+
letta/services/job_manager.py,sha256=TR35-2kD1xOWJhO2V_YA4cYZc5HgA7vuafZ_I8ABi3U,13237
|
|
219
|
+
letta/services/message_manager.py,sha256=w6-B9Zz5z9UXcd6mKhinsaCINTsmxDsH9JJsV2_qlH4,8878
|
|
220
|
+
letta/services/organization_manager.py,sha256=h3hrknBhA3YQt90OeBzFnqjYM9NWKnk8jDKzXGm4AUg,3392
|
|
220
221
|
letta/services/passage_manager.py,sha256=INxeNiFAluAkzmCL5jeWWimA3ONUZcck8BuCa0UYajk,7714
|
|
221
222
|
letta/services/per_agent_lock_manager.py,sha256=porM0cKKANQ1FvcGXOO_qM7ARk5Fgi1HVEAhXsAg9-4,546
|
|
222
|
-
letta/services/provider_manager.py,sha256=
|
|
223
|
-
letta/services/sandbox_config_manager.py,sha256=
|
|
224
|
-
letta/services/source_manager.py,sha256=
|
|
223
|
+
letta/services/provider_manager.py,sha256=jEal0A0XWobWH5CVfmzPtcFhsflI-sanqyg26FqpDKk,3575
|
|
224
|
+
letta/services/sandbox_config_manager.py,sha256=eWDNTscRG9Gt_Ixho3-daOOno_9KcebxeA9v_CbzYu0,13371
|
|
225
|
+
letta/services/source_manager.py,sha256=0JLKIv405oS5wc6bY5k2bxxZpS9O-VwUGHVdGPbJ3e4,7676
|
|
225
226
|
letta/services/step_manager.py,sha256=RngrVs2Sd_oDZv_UoQ1ToLY0RnH-6wS1DqIBPRm-Imc,2961
|
|
226
227
|
letta/services/tool_execution_sandbox.py,sha256=Tjufm58V9XzeYr8oF6g5b3OV5zZ7oPWUTqcC8GsBi9k,23162
|
|
227
|
-
letta/services/tool_manager.py,sha256=
|
|
228
|
-
letta/services/user_manager.py,sha256=
|
|
228
|
+
letta/services/tool_manager.py,sha256=KQTMSzGmWxsS5VOfv5XpRUF0fVA6PEKoudS18z3QVHE,8432
|
|
229
|
+
letta/services/user_manager.py,sha256=1U8BQ_-MBkEW2wnSFV_OsTwBmRAZLN8uHLFjnDjK3hA,4308
|
|
229
230
|
letta/settings.py,sha256=wqKdD4C9HjGWvQlbQN69LK6s_TYj4IT-au_sa1Ad6zE,6011
|
|
230
231
|
letta/streaming_interface.py,sha256=lo2VAQRUJOdWTijwnXuKOC9uejqr2siUAEmZiQUXkj8,15710
|
|
231
232
|
letta/streaming_utils.py,sha256=pJExJe6OgWDyRgzxbsSuT5JrVsXNlZP4hrT4Xu_z3Po,11778
|
|
232
233
|
letta/system.py,sha256=iCcjvMKXvG1sa18Suy8Gjoa0djYGiPKi3ywMECce40Y,6974
|
|
233
234
|
letta/utils.py,sha256=FQgWuYF0CTCIyH41rVy_rD5_ATPIlBZ24ovBtf3T1tI,33291
|
|
234
|
-
letta_nightly-0.6.
|
|
235
|
-
letta_nightly-0.6.
|
|
236
|
-
letta_nightly-0.6.
|
|
237
|
-
letta_nightly-0.6.
|
|
238
|
-
letta_nightly-0.6.
|
|
235
|
+
letta_nightly-0.6.15.dev20250124104035.dist-info/LICENSE,sha256=mExtuZ_GYJgDEI38GWdiEYZizZS4KkVt2SF1g_GPNhI,10759
|
|
236
|
+
letta_nightly-0.6.15.dev20250124104035.dist-info/METADATA,sha256=vHMMpuHLgT_0To0_p2eTs9FBWCmAPzo0-pc7XlnfkgY,22156
|
|
237
|
+
letta_nightly-0.6.15.dev20250124104035.dist-info/WHEEL,sha256=FMvqSimYX_P7y0a7UY-_Mc83r5zkBZsCYPm7Lr0Bsq4,88
|
|
238
|
+
letta_nightly-0.6.15.dev20250124104035.dist-info/entry_points.txt,sha256=2zdiyGNEZGV5oYBuS-y2nAAgjDgcC9yM_mHJBFSRt5U,40
|
|
239
|
+
letta_nightly-0.6.15.dev20250124104035.dist-info/RECORD,,
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
from typing import TYPE_CHECKING, Optional
|
|
2
|
-
|
|
3
|
-
from sqlalchemy import ForeignKey
|
|
4
|
-
from sqlalchemy.orm import Mapped, mapped_column, relationship
|
|
5
|
-
|
|
6
|
-
from letta.orm.sqlalchemy_base import SqlalchemyBase
|
|
7
|
-
|
|
8
|
-
if TYPE_CHECKING:
|
|
9
|
-
from letta.orm.job import Job
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
class JobUsageStatistics(SqlalchemyBase):
|
|
13
|
-
"""Tracks usage statistics for jobs, with future support for per-step tracking."""
|
|
14
|
-
|
|
15
|
-
__tablename__ = "job_usage_statistics"
|
|
16
|
-
|
|
17
|
-
id: Mapped[int] = mapped_column(primary_key=True, doc="Unique identifier for the usage statistics entry")
|
|
18
|
-
job_id: Mapped[str] = mapped_column(
|
|
19
|
-
ForeignKey("jobs.id", ondelete="CASCADE"), nullable=False, doc="ID of the job these statistics belong to"
|
|
20
|
-
)
|
|
21
|
-
step_id: Mapped[Optional[str]] = mapped_column(
|
|
22
|
-
nullable=True, doc="ID of the specific step within the job (for future per-step tracking)"
|
|
23
|
-
)
|
|
24
|
-
completion_tokens: Mapped[int] = mapped_column(default=0, doc="Number of tokens generated by the agent")
|
|
25
|
-
prompt_tokens: Mapped[int] = mapped_column(default=0, doc="Number of tokens in the prompt")
|
|
26
|
-
total_tokens: Mapped[int] = mapped_column(default=0, doc="Total number of tokens processed by the agent")
|
|
27
|
-
step_count: Mapped[int] = mapped_column(default=0, doc="Number of steps taken by the agent")
|
|
28
|
-
|
|
29
|
-
# Relationship back to the job
|
|
30
|
-
job: Mapped["Job"] = relationship("Job", back_populates="usage_statistics")
|
|
File without changes
|
|
File without changes
|