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.

Files changed (59) hide show
  1. letta/__init__.py +1 -1
  2. letta/client/client.py +144 -68
  3. letta/client/streaming.py +1 -1
  4. letta/functions/function_sets/extras.py +8 -3
  5. letta/functions/function_sets/multi_agent.py +1 -1
  6. letta/functions/helpers.py +2 -2
  7. letta/llm_api/llm_api_tools.py +2 -2
  8. letta/llm_api/openai.py +30 -138
  9. letta/memory.py +4 -4
  10. letta/offline_memory_agent.py +10 -10
  11. letta/orm/agent.py +10 -2
  12. letta/orm/block.py +14 -3
  13. letta/orm/job.py +2 -1
  14. letta/orm/message.py +12 -1
  15. letta/orm/passage.py +6 -2
  16. letta/orm/source.py +6 -1
  17. letta/orm/sqlalchemy_base.py +80 -32
  18. letta/orm/tool.py +5 -2
  19. letta/schemas/embedding_config_overrides.py +3 -0
  20. letta/schemas/enums.py +4 -0
  21. letta/schemas/job.py +1 -1
  22. letta/schemas/letta_message.py +22 -5
  23. letta/schemas/llm_config.py +5 -0
  24. letta/schemas/llm_config_overrides.py +38 -0
  25. letta/schemas/message.py +61 -15
  26. letta/schemas/openai/chat_completions.py +1 -1
  27. letta/schemas/passage.py +1 -1
  28. letta/schemas/providers.py +24 -8
  29. letta/schemas/source.py +1 -1
  30. letta/server/rest_api/app.py +12 -3
  31. letta/server/rest_api/interface.py +5 -7
  32. letta/server/rest_api/routers/v1/agents.py +7 -12
  33. letta/server/rest_api/routers/v1/blocks.py +19 -0
  34. letta/server/rest_api/routers/v1/organizations.py +2 -2
  35. letta/server/rest_api/routers/v1/providers.py +2 -2
  36. letta/server/rest_api/routers/v1/runs.py +15 -7
  37. letta/server/rest_api/routers/v1/sandbox_configs.py +4 -4
  38. letta/server/rest_api/routers/v1/sources.py +2 -2
  39. letta/server/rest_api/routers/v1/tags.py +2 -2
  40. letta/server/rest_api/routers/v1/tools.py +2 -2
  41. letta/server/rest_api/routers/v1/users.py +2 -2
  42. letta/server/server.py +62 -34
  43. letta/services/agent_manager.py +80 -33
  44. letta/services/block_manager.py +15 -2
  45. letta/services/helpers/agent_manager_helper.py +11 -4
  46. letta/services/job_manager.py +19 -9
  47. letta/services/message_manager.py +14 -8
  48. letta/services/organization_manager.py +8 -4
  49. letta/services/provider_manager.py +8 -4
  50. letta/services/sandbox_config_manager.py +16 -8
  51. letta/services/source_manager.py +4 -4
  52. letta/services/tool_manager.py +3 -3
  53. letta/services/user_manager.py +9 -5
  54. {letta_nightly-0.6.14.dev20250123104106.dist-info → letta_nightly-0.6.15.dev20250124104035.dist-info}/METADATA +2 -1
  55. {letta_nightly-0.6.14.dev20250123104106.dist-info → letta_nightly-0.6.15.dev20250124104035.dist-info}/RECORD +58 -57
  56. letta/orm/job_usage_statistics.py +0 -30
  57. {letta_nightly-0.6.14.dev20250123104106.dist-info → letta_nightly-0.6.15.dev20250124104035.dist-info}/LICENSE +0 -0
  58. {letta_nightly-0.6.14.dev20250123104106.dist-info → letta_nightly-0.6.15.dev20250124104035.dist-info}/WHEEL +0 -0
  59. {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, cursor: Optional[str] = None, limit: Optional[int] = 50) -> List[PydanticOrganization]:
75
- """List organizations with pagination based on cursor (org_id) and limit."""
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
- results = OrganizationModel.list(db_session=session, cursor=cursor, limit=limit)
78
- return [org.to_pydantic() for org in results]
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, cursor: Optional[str] = None, limit: Optional[int] = 50) -> List[PydanticProvider]:
63
- """List providers with pagination using cursor (id) and limit."""
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
- results = ProviderModel.list(db_session=session, cursor=cursor, limit=limit)
66
- return [provider.to_pydantic() for provider in results]
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, actor: PydanticUser, cursor: Optional[str] = None, limit: Optional[int] = 50, sandbox_type: Optional[SandboxType] = None
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, cursor=cursor, limit=limit, **kwargs)
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, sandbox_config_id: str, actor: PydanticUser, cursor: Optional[str] = None, limit: Optional[int] = 50
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
- cursor=cursor,
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, cursor: Optional[str] = None, limit: Optional[int] = 50
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
- cursor=cursor,
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, cursor: Optional[str] = None, limit: Optional[int] = 50
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, cursor, limit)
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
@@ -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, cursor: Optional[str] = None, limit: Optional[int] = 50, **kwargs) -> List[PydanticSource]:
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
- cursor=cursor,
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, cursor: Optional[str] = None, limit: Optional[int] = 50
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, cursor=cursor, limit=limit, organization_id=actor.organization_id, source_id=source_id
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
 
@@ -93,12 +93,12 @@ class ToolManager:
93
93
  return None
94
94
 
95
95
  @enforce_types
96
- def list_tools(self, actor: PydanticUser, cursor: Optional[str] = None, limit: Optional[int] = 50) -> List[PydanticTool]:
97
- """List all tools with optional pagination using cursor and limit."""
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
- cursor=cursor,
101
+ after=after,
102
102
  limit=limit,
103
103
  organization_id=actor.organization_id,
104
104
  )
@@ -1,4 +1,4 @@
1
- from typing import List, Optional, Tuple
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, cursor: Optional[str] = None, limit: Optional[int] = 50) -> Tuple[Optional[str], List[PydanticUser]]:
103
- """List users with pagination using cursor (id) and limit."""
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
- results = UserModel.list(db_session=session, cursor=cursor, limit=limit)
106
- return [user.to_pydantic() for user in results]
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.14.dev20250123104106
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=BeMu4nr5y0Y255XZLIZrYc_4K9QUwY1ndKLRgJHzip8,920
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=hv5dOwGxhkI9hZarNIV6hmR0ty7-jLjB5VdAalqa6Q4,136428
12
- letta/client/streaming.py,sha256=mWyMMCJeYf0aGcX_-9ZeiH3egh2Fl20Yjo1acaPO4nA,4824
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=sNY5oavQ5ZmO5GpAtnm8hkWokqwqB8ClPB2VOL-B8MM,4719
24
- letta/functions/function_sets/multi_agent.py,sha256=kF1k-MccbRRvzH0Y93Dw5FjqwgToOwlhFCNRGWcQMMw,3851
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=KQVdIq1klsfKsyYiKbzLd-n0r3i01mjra-QfqR9EOdE,14052
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=-cLTeYwhwA6Dy9Io_W3DYrZ-gvYaAtp3TY2Snh1L13o,19512
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=vEQOk_8DA6-qhj3KFk5gcIlE4kAuf6307IVljn8xRRM,25390
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=htiDt-AHci__P8cfxHMts6fe50bPqVK4INw9cbumrRQ,3271
85
- letta/offline_memory_agent.py,sha256=Wc2_je3oXxXcaiPPNPxc78A3IXVsiK6Q7X3t_SrlHck,7651
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=POgpKT4u5FlcCV5w5HsI4D3ZPalZnJ86zBcyJQ1J_mI,6135
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=p360LWSjmpXCcdD0S7jFW3Sl153aljhtjn8shCk2Zm8,3469
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=hTW6INcSc_snMiv8pxCNTAQZACrVXxGMJ-XhCToo6Fk,2088
99
+ letta/orm/job.py,sha256=zcXy44wNVnGMo4IKAkRzctngwWAtO97W1WzLjYIKarA,2167
100
100
  letta/orm/job_messages.py,sha256=SgwaYPYwwAC3dBtl9Xye_TWUl9H_-m95S95TTcfPyOg,1245
101
- letta/orm/job_usage_statistics.py,sha256=gR-lp-ZEBDK8TIFEgwFSDt382l6CFLWHciB-KCISbCQ,1380
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=tm5YhUozLR9hN7odGCqCniTl-3GDiFNz3LWAxullaGA,3132
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=xM3Iwy3xzYdoZja9BZrQwyAnPf5iksaQOs8HlNCvb_c,2031
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=g3ZuILuaPD1IhqMi2k0Uwka7SYj4xl9XrwcHP1wz3PA,19442
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=dJi56QksOCYsz2RvXyGQODyuHmx0rEoU3E1wHt_jPOI,2293
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/enums.py,sha256=f8SVJqb0dzhlNCBN2SgeM4ZMHX5LMyhln1SCJAgXeow,1068
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=npIWwV3G3eTTbN9rNxqI0Avb9Q3YJJ18e4CrjU-jMoM,1520
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=k8j0_x0YRHV2QYfqCHOySTmoY-DoBR84rljKc-k2sDQ,9078
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=HQrwXk6LGJVoOmZwTUXfK0jwVSeX9kCsL-GUcv7loWQ,4603
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=XOObBue8VfWF2TStiPo3ASvJRovncy38kYMnOLW1YAU,34277
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=V0ZPIIk-ds3O6MAkNHMz8zh1hqMFSPrTcYr88WDYzWE,3588
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=HOPdaTNCe6vZ1jqZf9PD758d0wG5haMW4Ztfde4ZQq8,3674
165
- letta/schemas/providers.py,sha256=8sEM3J_KgHkYy7zy8IAsYgltqGMHt15nlNEdK6MpOTo,29668
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=Z9pGfZIpV19PY5kAbgzz15AckgSRYMab8FkSaC0DsMI,2850
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=0gQ9TJ6AvbuiyewtNkLPHsk1o3HltDdixCz1rqvhwJg,11108
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=1p8Bt7uLNLJsKa-TnLXobiLfO91laclK-AiE-jbJr18,51494
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=IAs3LsuoyWHBHJMKdfTNEvVXQ9tiCG8Sa98RI9GyGy0,25265
186
- letta/server/rest_api/routers/v1/blocks.py,sha256=6zMA4qRbc1kqBzOhkX1Ra4mZM-Z-ccb-cwJf3sSjKt8,3145
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=tyqVzXTpMtk3sKxI3Iz4aS6RhbGEbXDzFBB_CpW18v4,2080
191
- letta/server/rest_api/routers/v1/providers.py,sha256=cUDcNsLxmv_q6BmW3d78qa-K7y3W87Dz_zChWl50jfE,2447
192
- letta/server/rest_api/routers/v1/runs.py,sha256=zsxXyhGrPloyHVgcxMeREP-l2ay_zMUZdHRr5afV40o,5121
193
- letta/server/rest_api/routers/v1/sandbox_configs.py,sha256=DJ8mz7HsXCuGypNaxTgoMW8xR1kMOwdVnon00srRdCo,5266
194
- letta/server/rest_api/routers/v1/sources.py,sha256=Bcy7E0KgzrNkjpHoywaQoNVFjxFdkVdh5UwRw20X1WA,8417
195
- letta/server/rest_api/routers/v1/tags.py,sha256=j0Oach9hNcPQx2KVuN4QJQHVlhjbdL2pv1JExq9yCVo,881
196
- letta/server/rest_api/routers/v1/tools.py,sha256=WwzLLEXoidQqtosPcV6nTIvuusbu6Iz3WIOFYq6jzE0,12013
197
- letta/server/rest_api/routers/v1/users.py,sha256=EBQe9IfCG3kzHpKmotz4yVGZioXz3SCSRy5yEhJK8hU,2293
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=ZV7cNuvvFqJnAQ0vAT1Swc9Yo4YzAvapvF_jt-WxWh0,57625
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=BkGss9v1jBWSWok8bjvFInUZMHb-9Nats8kjJp9qtzg,47794
215
- letta/services/block_manager.py,sha256=5unHvV0-nDRaPRFh-bcqr4Qye-b1-QWdpz-Il3CfLuM,4968
216
- letta/services/helpers/agent_manager_helper.py,sha256=ytNViS18ubRbj90yZ2B3jf1on5pzxT9xaQOpCLFA-ss,10451
217
- letta/services/job_manager.py,sha256=KIXikN9dPrAK_lIEmgn3IdQ-thn6sMLs3zLfa9u7MeA,12897
218
- letta/services/message_manager.py,sha256=a7U0MfgaNAdjbls7ZtUdS7eJ6prJaMkE0NIHgtzh4us,8552
219
- letta/services/organization_manager.py,sha256=YRYQKlvIgc3gyKoubcwWVEyCbA9CXvh83EVATkkZNPs,3342
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=1NSbn9m5F8xvDw0bQ52Y8wqU0CXqORlbfv81lsiNQxM,3526
223
- letta/services/sandbox_config_manager.py,sha256=5CoUqM4pw-RT5C3GgQjnDrb6eGo3Ovet-tKgnWFQx2k,13316
224
- letta/services/source_manager.py,sha256=8P0EiKc9SXTECg5DeKL9RFTuXgIkGVup2NJfJ6YY6kI,7682
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=mkWrr0PnTWi8JGKgfcV8WZ8H8FrJ6qsBAT04-2mF1zc,8458
228
- letta/services/user_manager.py,sha256=RaXWC8Nbg_5GZSj2fIDXRFb6hRKWTtqtk2d5H4_Ywwo,4296
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.14.dev20250123104106.dist-info/LICENSE,sha256=mExtuZ_GYJgDEI38GWdiEYZizZS4KkVt2SF1g_GPNhI,10759
235
- letta_nightly-0.6.14.dev20250123104106.dist-info/METADATA,sha256=Y_Nyei1BFenDkYkoGD9sgh7m5yuNySO6JcCvfrcWoqs,22116
236
- letta_nightly-0.6.14.dev20250123104106.dist-info/WHEEL,sha256=FMvqSimYX_P7y0a7UY-_Mc83r5zkBZsCYPm7Lr0Bsq4,88
237
- letta_nightly-0.6.14.dev20250123104106.dist-info/entry_points.txt,sha256=2zdiyGNEZGV5oYBuS-y2nAAgjDgcC9yM_mHJBFSRt5U,40
238
- letta_nightly-0.6.14.dev20250123104106.dist-info/RECORD,,
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")