synth-ai 0.2.3__py3-none-any.whl → 0.2.4.dev2__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.
Files changed (30) hide show
  1. synth_ai/compound/cais.py +0 -0
  2. synth_ai/environments/examples/crafter_classic/agent_demos/crafter_modal_ft/filter_traces_sft_turso.py +115 -1
  3. synth_ai/environments/examples/crafter_classic/agent_demos/crafter_modal_ft/test_crafter_react_agent_lm_synth.py +3 -3
  4. synth_ai/environments/examples/crafter_classic/agent_demos/crafter_modal_ft/test_crafter_react_agent_lm_synth_v2_backup.py +3 -3
  5. synth_ai/environments/examples/crafter_classic/agent_demos/crafter_openai_ft/run_rollouts_for_models_and_compare_v3.py +4 -4
  6. synth_ai/environments/examples/crafter_classic/agent_demos/crafter_openai_ft/test_crafter_react_agent_openai_v2_backup.py +3 -3
  7. synth_ai/environments/examples/crafter_classic/agent_demos/example_v3_usage.py +1 -1
  8. synth_ai/environments/examples/crafter_classic/environment.py +1 -1
  9. synth_ai/environments/examples/crafter_custom/environment.py +1 -1
  10. synth_ai/environments/service/core_routes.py +1 -1
  11. synth_ai/learning/prompts/mipro.py +8 -0
  12. synth_ai/lm/core/main_v3.py +219 -158
  13. synth_ai/tracing_v3/__init__.py +2 -2
  14. synth_ai/tracing_v3/abstractions.py +62 -17
  15. synth_ai/tracing_v3/hooks.py +1 -1
  16. synth_ai/tracing_v3/llm_call_record_helpers.py +350 -0
  17. synth_ai/tracing_v3/lm_call_record_abstractions.py +257 -0
  18. synth_ai/tracing_v3/session_tracer.py +5 -5
  19. synth_ai/tracing_v3/tests/test_concurrent_operations.py +1 -1
  20. synth_ai/tracing_v3/tests/test_llm_call_records.py +672 -0
  21. synth_ai/tracing_v3/tests/test_session_tracer.py +43 -9
  22. synth_ai/tracing_v3/tests/test_turso_manager.py +1 -1
  23. synth_ai/tracing_v3/turso/manager.py +10 -3
  24. synth_ai/tracing_v3/turso/models.py +1 -0
  25. {synth_ai-0.2.3.dist-info → synth_ai-0.2.4.dev2.dist-info}/METADATA +3 -2
  26. {synth_ai-0.2.3.dist-info → synth_ai-0.2.4.dev2.dist-info}/RECORD +30 -26
  27. {synth_ai-0.2.3.dist-info → synth_ai-0.2.4.dev2.dist-info}/WHEEL +0 -0
  28. {synth_ai-0.2.3.dist-info → synth_ai-0.2.4.dev2.dist-info}/entry_points.txt +0 -0
  29. {synth_ai-0.2.3.dist-info → synth_ai-0.2.4.dev2.dist-info}/licenses/LICENSE +0 -0
  30. {synth_ai-0.2.3.dist-info → synth_ai-0.2.4.dev2.dist-info}/top_level.txt +0 -0
@@ -12,6 +12,7 @@ import time
12
12
 
13
13
  from synth_ai.tracing_v3.session_tracer import SessionTracer
14
14
  from synth_ai.tracing_v3.abstractions import RuntimeEvent, EnvironmentEvent, LMCAISEvent, TimeRecord
15
+ from synth_ai.tracing_v3.lm_call_record_abstractions import LLMCallRecord, LLMUsage, LLMMessage, LLMContentPart
15
16
  from synth_ai.tracing_v3.hooks import HookManager
16
17
  from synth_ai.tracing_v3.decorators import get_session_id, SessionContext
17
18
 
@@ -49,8 +50,8 @@ class TestSessionTracer:
49
50
 
50
51
  # Record message
51
52
  await tracer.record_message(content="Test message", message_type="user")
52
- assert len(tracer.current_session.message_history) == 1
53
- assert len(tracer.current_step.step_messages) == 1
53
+ assert len(tracer.current_session.markov_blanket_message_history) == 1
54
+ assert len(tracer.current_step.markov_blanket_messages) == 1
54
55
 
55
56
  # End timestep
56
57
  await tracer.end_timestep()
@@ -123,7 +124,7 @@ class TestSessionTracer:
123
124
 
124
125
  assert len(trace.session_time_steps) == 3
125
126
  assert len(trace.event_history) == 3
126
- assert len(trace.message_history) == 3
127
+ assert len(trace.markov_blanket_message_history) == 3
127
128
 
128
129
  # Verify step indices
129
130
  for i, step in enumerate(trace.session_time_steps):
@@ -225,8 +226,8 @@ class TestSessionTracer:
225
226
  await tracer1.record_message("Tracer 1 message", "user")
226
227
 
227
228
  # Verify isolation
228
- assert len(tracer1.current_session.message_history) == 1
229
- assert len(tracer2.current_session.message_history) == 0
229
+ assert len(tracer1.current_session.markov_blanket_message_history) == 1
230
+ assert len(tracer2.current_session.markov_blanket_message_history) == 0
230
231
 
231
232
  await tracer1.end_session(save=False)
232
233
  await tracer2.end_session(save=False)
@@ -242,7 +243,7 @@ class TestSessionTracer:
242
243
 
243
244
  # Should complete without errors
244
245
  assert trace is not None
245
- assert len(trace.message_history) == 1
246
+ assert len(trace.markov_blanket_message_history) == 1
246
247
 
247
248
  async def test_session_context_variables(self):
248
249
  """Test session context variables."""
@@ -296,16 +297,45 @@ class TestSessionTracer:
296
297
  )
297
298
  await tracer.record_event(env_event)
298
299
 
299
- # LM CAIS event
300
+ # LM CAIS event with call_records (new pattern)
301
+ import uuid
302
+ call_record = LLMCallRecord(
303
+ call_id=str(uuid.uuid4()),
304
+ api_type="chat_completions",
305
+ provider="openai",
306
+ model_name="gpt-4",
307
+ usage=LLMUsage(
308
+ input_tokens=100,
309
+ output_tokens=50,
310
+ total_tokens=150,
311
+ cost_usd=0.003
312
+ ),
313
+ input_messages=[
314
+ LLMMessage(
315
+ role="user",
316
+ parts=[LLMContentPart(type="text", text="Test prompt")]
317
+ )
318
+ ],
319
+ output_messages=[
320
+ LLMMessage(
321
+ role="assistant",
322
+ parts=[LLMContentPart(type="text", text="Test response")]
323
+ )
324
+ ],
325
+ latency_ms=500
326
+ )
327
+
300
328
  lm_event = LMCAISEvent(
301
329
  system_instance_id="llm",
302
330
  time_record=TimeRecord(event_time=time.time()),
303
- model_name="gpt-4",
331
+ # Aggregates at event level
304
332
  input_tokens=100,
305
333
  output_tokens=50,
306
334
  total_tokens=150,
307
335
  cost_usd=0.003,
308
336
  latency_ms=500,
337
+ # Store the call record
338
+ call_records=[call_record]
309
339
  )
310
340
  await tracer.record_event(lm_event)
311
341
 
@@ -320,7 +350,11 @@ class TestSessionTracer:
320
350
  # Verify metadata
321
351
  assert trace.event_history[0].metadata["type"] == "runtime"
322
352
  assert trace.event_history[1].reward == 0.5
323
- assert trace.event_history[2].model_name == "gpt-4"
353
+ # Verify new call_records structure
354
+ lm_event_from_trace = trace.event_history[2]
355
+ assert len(lm_event_from_trace.call_records) == 1
356
+ assert lm_event_from_trace.call_records[0].model_name == "gpt-4"
357
+ assert lm_event_from_trace.call_records[0].usage.total_tokens == 150
324
358
 
325
359
  async def test_concurrent_timesteps_same_session(self):
326
360
  """Test that timesteps within a session are sequential, not concurrent."""
@@ -18,7 +18,7 @@ import pandas as pd
18
18
  from synth_ai.tracing_v3.turso.manager import AsyncSQLTraceManager
19
19
  from synth_ai.tracing_v3.session_tracer import SessionTracer
20
20
  from synth_ai.tracing_v3.abstractions import (
21
- SessionEventMessage,
21
+ SessionEventMarkovBlanketMessage,
22
22
  TimeRecord,
23
23
  RuntimeEvent,
24
24
  EnvironmentEvent,
@@ -223,7 +223,7 @@ class AsyncSQLTraceManager:
223
223
  created_at=trace.created_at,
224
224
  num_timesteps=len(trace.session_time_steps),
225
225
  num_events=len(trace.event_history),
226
- num_messages=len(trace.message_history),
226
+ num_messages=len(trace.markov_blanket_message_history),
227
227
  session_metadata=trace.metadata or {},
228
228
  )
229
229
  sess.add(db_session)
@@ -242,7 +242,7 @@ class AsyncSQLTraceManager:
242
242
  started_at=step.timestamp,
243
243
  completed_at=step.completed_at,
244
244
  num_events=len(step.events),
245
- num_messages=len(step.step_messages),
245
+ num_messages=len(step.markov_blanket_messages),
246
246
  step_metadata=step.step_metadata or {},
247
247
  )
248
248
  sess.add(db_step)
@@ -266,6 +266,12 @@ class AsyncSQLTraceManager:
266
266
  }
267
267
 
268
268
  if isinstance(event, LMCAISEvent):
269
+ # Serialize call_records if present
270
+ call_records_data = None
271
+ if event.call_records:
272
+ from dataclasses import asdict
273
+ call_records_data = [asdict(record) for record in event.call_records]
274
+
269
275
  event_data.update(
270
276
  {
271
277
  "event_type": "cais",
@@ -280,6 +286,7 @@ class AsyncSQLTraceManager:
280
286
  "trace_id": event.trace_id,
281
287
  "system_state_before": event.system_state_before,
282
288
  "system_state_after": event.system_state_after,
289
+ "call_records": call_records_data, # Store in the proper column
283
290
  }
284
291
  )
285
292
  elif isinstance(event, EnvironmentEvent):
@@ -307,7 +314,7 @@ class AsyncSQLTraceManager:
307
314
  sess.add(db_event)
308
315
 
309
316
  # Insert messages
310
- for msg in trace.message_history:
317
+ for msg in trace.markov_blanket_message_history:
311
318
  db_msg = DBMessage(
312
319
  session_id=trace.session_id,
313
320
  timestep_id=step_id_map.get(msg.metadata.get("step_id"))
@@ -171,6 +171,7 @@ class Event(Base):
171
171
  latency_ms = Column(Integer)
172
172
  span_id = Column(String)
173
173
  trace_id = Column(String)
174
+ call_records = Column(JSONText) # Store serialized LLMCallRecord list
174
175
 
175
176
  # Environment event fields
176
177
  reward = Column(Float)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: synth-ai
3
- Version: 0.2.3
3
+ Version: 0.2.4.dev2
4
4
  Summary: Software for aiding the best and multiplying the will - Core AI functionality and tracing
5
5
  Author-email: Synth AI <josh@usesynth.ai>
6
6
  License-Expression: MIT
@@ -85,7 +85,7 @@ Modern Compound AI System Development
85
85
 
86
86
  [![Python](https://img.shields.io/badge/python-3.11+-blue)](https://www.python.org/)
87
87
  [![License](https://img.shields.io/badge/license-MIT-green)](LICENSE)
88
- [![PyPI](https://img.shields.io/badge/PyPI-0.2.1.dev0-orange)](https://pypi.org/project/synth-ai/)
88
+ [![PyPI](https://img.shields.io/badge/PyPI-0.2.3.dev0-orange)](https://pypi.org/project/synth-ai/)
89
89
  ![Coverage](https://img.shields.io/badge/coverage-0.0%25-red)
90
90
  ![Tests](https://img.shields.io/badge/tests-17%2F17%20passing-brightgreen)
91
91
 
@@ -189,6 +189,7 @@ Notes:
189
189
  - `export LEARNING_V2_BASE_URL="http://localhost:8000/api"` (or your proxy)
190
190
  - `export SYNTH_API_KEY="sk_live_..."`
191
191
  - v3 trace data is stored under `traces/v3/synth_ai.db/` by default. Inspect with `uvx synth-ai traces`.
192
+ - LM tracing: all model calls (prompts, outputs, tool calls, token usage, latency, cost) are automatically captured via v3 tracing and stored locally; inspect with `uvx synth-ai traces`.
192
193
 
193
194
  ### One-Command Demos
194
195
 
@@ -12,6 +12,7 @@ synth_ai/cli/root.py,sha256=kcBcpBzfIIJjvDSllQ6mNYsx4zD6uE-ZMrwN8E2PiKs,6817
12
12
  synth_ai/cli/status.py,sha256=ANQDpgeWzlhuM8sitP2Iza1qFxDy87giuTsxmQ8XsQA,4463
13
13
  synth_ai/cli/traces.py,sha256=NtlWm25ceF5UAJ_RoINoJScX0utryS7Zom2AAelsBpI,5924
14
14
  synth_ai/cli/watch.py,sha256=_KBI9fVvhX-cqGHKk55g3lOKQfwRyLuspHUnj8qC86A,17867
15
+ synth_ai/compound/cais.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
15
16
  synth_ai/config/base_url.py,sha256=yvbVL_Rpo_G8eHFr2OqGM6y6m10aN9847kovwhBIeJg,1320
16
17
  synth_ai/core/experiment.py,sha256=2n0CpmCjiRoIxejn9QP_0La-r7waBJTN17CP5gbgar4,260
17
18
  synth_ai/core/system.py,sha256=s-Z7np2ISYmYc1r9YN-y2yb3cgRlOalrh0iaqnxeo84,206
@@ -36,7 +37,7 @@ synth_ai/environments/examples/crafter_classic/debug_translation.py,sha256=47DEQ
36
37
  synth_ai/environments/examples/crafter_classic/engine.py,sha256=Nvp3aSd2Qqby6eJOPH1bLXuk-rU6EuUC-HEs8d-D-sY,25046
37
38
  synth_ai/environments/examples/crafter_classic/engine_deterministic_patch.py,sha256=Jhn4dtLypG4-eLMsHxesagVTGJtzoGF6UssEfblEJYE,2801
38
39
  synth_ai/environments/examples/crafter_classic/engine_serialization_patch_v3.py,sha256=E7EA1IODxeb8Fq6uV15pL5HFuv4q-KTwnmRGqweuM34,11126
39
- synth_ai/environments/examples/crafter_classic/environment.py,sha256=cL2MJRhkU1Gcmqqiie_L6ud99eYAWAIrRyTuExWK8W0,17205
40
+ synth_ai/environments/examples/crafter_classic/environment.py,sha256=6Us77M0AhVOrBwZoaZesxC4QXC6q1tmVphga2BZvVv4,17218
40
41
  synth_ai/environments/examples/crafter_classic/taskset.py,sha256=Jg3BgGetBjFor6MT3Fsx8BrrNRcS-RsffvusZsmi7v0,9843
41
42
  synth_ai/environments/examples/crafter_classic/trace_hooks_v3.py,sha256=OuP_pm565jRIFc4AzzEAa7jrIvm0E4B5EAv6GnQWGzw,7195
42
43
  synth_ai/environments/examples/crafter_classic/world_config_patch_simple.py,sha256=hrWo6OweT1Cyrck9YVP4TtxGdHmezbvITRTrhibWieo,10165
@@ -48,16 +49,16 @@ synth_ai/environments/examples/crafter_classic/agent_demos/crafter_evaluation_fr
48
49
  synth_ai/environments/examples/crafter_classic/agent_demos/crafter_quick_evaluation.py,sha256=rVfNtcgvJwPmYFFIfHhptsSbgKYlcTKhdFkvNkJoxyQ,1459
49
50
  synth_ai/environments/examples/crafter_classic/agent_demos/crafter_react_agent.py,sha256=16oWOO_o1FyLp4nLGfHled07CS7-VqqwXJeq5iA4Qbw,34453
50
51
  synth_ai/environments/examples/crafter_classic/agent_demos/crafter_trace_evaluation.py,sha256=ig8_pJcDUeIqMKTurnv5-4KfhSPewWxJ1tF8J9nhyEo,46735
51
- synth_ai/environments/examples/crafter_classic/agent_demos/example_v3_usage.py,sha256=PVCjmbZcBrNU8NIQg2JmFiMIx0AyPCMb0dxmXhN3wAM,6891
52
+ synth_ai/environments/examples/crafter_classic/agent_demos/example_v3_usage.py,sha256=4K4ixPl8nYR-mjhhxmV9n3PXbYvBY3UQlkOu45ZER38,6904
52
53
  synth_ai/environments/examples/crafter_classic/agent_demos/test_crafter_react_agent.py,sha256=CHQE_pH-H-uXQ_c3oBFmT9WV5E2_dotjXt6a-DtLhNo,45590
53
54
  synth_ai/environments/examples/crafter_classic/agent_demos/crafter_modal_ft/crafter_synth_config.toml,sha256=xUAL54kT5ThnZPmMQI0eGWXoVe8Gn1_imnB0-DMOlo4,1104
54
55
  synth_ai/environments/examples/crafter_classic/agent_demos/crafter_modal_ft/filter_config_modal.toml,sha256=Hws5eQUBSG00w825BgBgQDrUeuOq2KXwUsnDrkOC-2g,748
55
56
  synth_ai/environments/examples/crafter_classic/agent_demos/crafter_modal_ft/filter_traces_sft_duckdb_v2_backup.py,sha256=dGPfneZHib03d7CcEUF6XD9DJ20AubQ0d5Dx_ta7Pds,14361
56
- synth_ai/environments/examples/crafter_classic/agent_demos/crafter_modal_ft/filter_traces_sft_turso.py,sha256=mxpXwQoipJ3QQHDLZdUi7nAqbshKBcKuYBj7HIWdiwE,23819
57
+ synth_ai/environments/examples/crafter_classic/agent_demos/crafter_modal_ft/filter_traces_sft_turso.py,sha256=2k-ydq_nJbWl0afuBKfGzYjSyLE-6Rd0P0WLjz_j7UE,29316
57
58
  synth_ai/environments/examples/crafter_classic/agent_demos/crafter_modal_ft/kick_off_ft_modal.py,sha256=plMiWNSsJQV2kr_8UztLJyadJlgtghxQmpcDrGv_Vf4,15268
58
59
  synth_ai/environments/examples/crafter_classic/agent_demos/crafter_modal_ft/kick_off_ft_synth.py,sha256=8u8w2tv8Jdl-2T2HXaDUxm2RTPHg6scd2AkT7eI40o8,1287
59
- synth_ai/environments/examples/crafter_classic/agent_demos/crafter_modal_ft/test_crafter_react_agent_lm_synth.py,sha256=XOoY5YAmJAqo_drX8SAJbsrNRpQyPy5YtrtM3AvGplQ,76549
60
- synth_ai/environments/examples/crafter_classic/agent_demos/crafter_modal_ft/test_crafter_react_agent_lm_synth_v2_backup.py,sha256=1WOQX2NSUcj2788PZ9ksC85_qTBLsMHXJicHG9zOBr8,56251
60
+ synth_ai/environments/examples/crafter_classic/agent_demos/crafter_modal_ft/test_crafter_react_agent_lm_synth.py,sha256=D2wTo9LNZq4z8oSh5arOz689pQUmNKQENlf-zJJN9x4,76588
61
+ synth_ai/environments/examples/crafter_classic/agent_demos/crafter_modal_ft/test_crafter_react_agent_lm_synth_v2_backup.py,sha256=06OJXW0TmmnPo7HYiQw3oTfEEavxCCQPSCJFE0YKmgc,56290
61
62
  synth_ai/environments/examples/crafter_classic/agent_demos/crafter_modal_ft/old/analyze_action_results.py,sha256=6n2xKD8VBFn5EKrtFNYQgR9nSxfK6jcpavrGnUgi4Eo,1550
62
63
  synth_ai/environments/examples/crafter_classic/agent_demos/crafter_modal_ft/old/analyze_agent_actions.py,sha256=eUoPNPE2hMUhDTOkYJyLWeJCOrpQfEc5GtcgedUczKk,6302
63
64
  synth_ai/environments/examples/crafter_classic/agent_demos/crafter_modal_ft/old/analyze_latest_run.py,sha256=tyvqPirMsLTHS0PwONv5Xaogc8hrQb7uSyjcTfk5hZk,8922
@@ -78,8 +79,8 @@ synth_ai/environments/examples/crafter_classic/agent_demos/crafter_openai_ft/fil
78
79
  synth_ai/environments/examples/crafter_classic/agent_demos/crafter_openai_ft/kick_off_ft_oai.py,sha256=ZQh9vpIUdB3DGH0SMjBBznPuCOSlausr07Eij3aHZyQ,13521
79
80
  synth_ai/environments/examples/crafter_classic/agent_demos/crafter_openai_ft/multi_model_config.toml,sha256=_7KIJo1TPwN0wia_TfJYX1azav56YEZxVyTp2vC3Dt4,1063
80
81
  synth_ai/environments/examples/crafter_classic/agent_demos/crafter_openai_ft/run_rollouts_for_models_and_compare_v2_backup.py,sha256=yg93UMMq51EOKHkmf9EdtfOappFJKQdtMFwOgFXo86U,57598
81
- synth_ai/environments/examples/crafter_classic/agent_demos/crafter_openai_ft/run_rollouts_for_models_and_compare_v3.py,sha256=dVxvefrD6k581SwD4u_Q59Y-bZd5entNhRm0ocISlJI,38374
82
- synth_ai/environments/examples/crafter_classic/agent_demos/crafter_openai_ft/test_crafter_react_agent_openai_v2_backup.py,sha256=wVieVWKCgI-1gr_UWVnF8O7XbawikhRowGBAf7SksSc,111834
82
+ synth_ai/environments/examples/crafter_classic/agent_demos/crafter_openai_ft/run_rollouts_for_models_and_compare_v3.py,sha256=IYISpqgZiR0PomUWoVBcg6uveGQjI-vmGXAUNDgPgBc,38426
83
+ synth_ai/environments/examples/crafter_classic/agent_demos/crafter_openai_ft/test_crafter_react_agent_openai_v2_backup.py,sha256=bdL-90W-BGq1ckGj-qhXBr12TD-clgANISBC_n-Oagk,111873
83
84
  synth_ai/environments/examples/crafter_classic/agent_demos/crafter_openai_ft/old/analyze_enhanced_hooks.py,sha256=vbyJZ-YonMXLrSFegQ1JZIYRPza6BLvCqQmFzAQuu64,12387
84
85
  synth_ai/environments/examples/crafter_classic/agent_demos/crafter_openai_ft/old/analyze_hook_events.py,sha256=Jdmm3N6nPBjbwn0PkHb-YKY32_sS6YIKC6qz2WgCicw,3401
85
86
  synth_ai/environments/examples/crafter_classic/agent_demos/crafter_openai_ft/old/analyze_hook_results.py,sha256=UCV_XZt2xmUdLM0x5pg_fw2lZGcwep86mRbMwJeD31o,8816
@@ -677,7 +678,7 @@ synth_ai/environments/examples/crafter_classic/old/trace_hooks.py,sha256=TgMbJh8
677
678
  synth_ai/environments/examples/crafter_classic/old/world_config_patch.py,sha256=o5pSN2r_0utFbFNjrLkxB09-zBM8N3yt1_feMwHfGFE,22066
678
679
  synth_ai/environments/examples/crafter_custom/__init__.py,sha256=139ewayoaO3Oxr-vG-1hxI89urYr1Dsy35JEeJEdvj0,190
679
680
  synth_ai/environments/examples/crafter_custom/dataset_builder.py,sha256=QHoP45shr9kFvCjf0ta0aHPuVq9R6rU9MP1ZE1wk4L0,12956
680
- synth_ai/environments/examples/crafter_custom/environment.py,sha256=0XXxvVtca4U3U8SL3HKgl4ytAKFlw-hZ3mN4kOB6-Ts,14771
681
+ synth_ai/environments/examples/crafter_custom/environment.py,sha256=9RswjKlVa2NwSELqYuvqxeZnW9O3eOVClMKDmdVV0m0,14784
681
682
  synth_ai/environments/examples/crafter_custom/run_dataset.py,sha256=DmyxqebahMcnUDLgTCQdprfHYzFXKho17U6ypbobuQs,9959
682
683
  synth_ai/environments/examples/crafter_custom/agent_demos/__init__.py,sha256=IiyZdN_DdRxej8kqTeZ3ko5HbqjUY56BlnkatI5KZe4,59
683
684
  synth_ai/environments/examples/crafter_custom/agent_demos/trace_eval.py,sha256=U0GdxlPVg2ljRHY_UVHBGk2cnQF3PpZIjKSL39jeI0o,7127
@@ -883,7 +884,7 @@ synth_ai/environments/reproducibility/core.py,sha256=y4__bivu_tdyIas509oK2EH9KUd
883
884
  synth_ai/environments/reproducibility/helpers.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
884
885
  synth_ai/environments/reproducibility/tree.py,sha256=bl0lfIjrJGxMNmcWs75uPBwurgd1ENjN_mI5RHfrANY,13743
885
886
  synth_ai/environments/service/app.py,sha256=KoouFEIOHQFSfP1CfiS756VTK6ActRG-jZ1v6xrVq0U,2637
886
- synth_ai/environments/service/core_routes.py,sha256=oQtpp3ecjUysxKQoxsUZKejtdF9aOXmXCCyVBRNDaCk,37213
887
+ synth_ai/environments/service/core_routes.py,sha256=vblHFC5ibOyCkLRmTusOXmJnrXBty_FStqVVMTsl-_w,37226
887
888
  synth_ai/environments/service/external_registry.py,sha256=x7Qgbw83-1xcN69J337UHm4xPpWc5B0KUZrNUFtutLE,1795
888
889
  synth_ai/environments/service/registry.py,sha256=Ex9c3ZwfZ-oW9nGz7bwCj1GNzvu78Z54rwufjKhsnMg,405
889
890
  synth_ai/environments/stateful/__init__.py,sha256=UPNmotqxS2zXjSfhBui6R4qsDOIxKECL5xVTVDHcvsk,39
@@ -908,7 +909,7 @@ synth_ai/learning/offline/shared.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG
908
909
  synth_ai/learning/online/grpo.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
909
910
  synth_ai/learning/online/irft.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
910
911
  synth_ai/learning/prompts/gepa.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
911
- synth_ai/learning/prompts/mipro.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
912
+ synth_ai/learning/prompts/mipro.py,sha256=nIw7v6t3DXA8MbmPFQTxKbpFhMa1ocMmWLtxhfONwoc,51
912
913
  synth_ai/lm/__init__.py,sha256=aylYW_xWcQlRppFNfys7VtkNICMyYe6FMZmjVRN_BmM,1142
913
914
  synth_ai/lm/config.py,sha256=LW5QG-U2heRdvXQ9qi5NWExOF8yprQi-cCo817nf28g,3604
914
915
  synth_ai/lm/constants.py,sha256=ToYCu-ZeHgbb7VIRpDcCDV2D668P4UEHOKXM7urkp08,1248
@@ -925,7 +926,7 @@ synth_ai/lm/core/__init__.py,sha256=pFiA6qPyQu6e-KrZruL9A-soRlhSU4Vd_TmdqMzWaIU,
925
926
  synth_ai/lm/core/all.py,sha256=AQGBbOqNvx0GhckR1rPl52gOp1PeH5I1GWEYynabtME,1518
926
927
  synth_ai/lm/core/exceptions.py,sha256=K0BVdAzxVIchsvYZAaHEH1GAWBZvpxhFi-SPcJOjyPQ,205
927
928
  synth_ai/lm/core/main.py,sha256=eqWhAnxQfSW8ZzgrPJWSJvnVjgpV-UOrG0CWf-79etU,13163
928
- synth_ai/lm/core/main_v3.py,sha256=pPqgjWTuzWlrdY5IY6nSfU6N1SAfOTVVljLFS5Xkq8w,20888
929
+ synth_ai/lm/core/main_v3.py,sha256=V59VW0mSaPDyzb3_4damsgPk5Hrw1ylhV0jynDGGvzI,23815
929
930
  synth_ai/lm/core/vendor_clients.py,sha256=2l-uF1kPbvYSdPMFY7jaqaBxRTS9TpOv1d-zL0bLRq4,6606
930
931
  synth_ai/lm/cost/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
931
932
  synth_ai/lm/cost/monitor.py,sha256=DkeLUlrb7rGx3nZ04aADU9HXXu5mZTf_DBwT0xhzIv4,7
@@ -964,15 +965,17 @@ synth_ai/lm/vendors/supported/openrouter.py,sha256=CCL3dYR9VQkZMoRBuPKWVA1cSk3_T
964
965
  synth_ai/lm/vendors/supported/together.py,sha256=IFd6gJtfPuE_KLh51ywp1iIkvow_R26EHPcYXBnw8Vc,337
965
966
  synth_ai/tracing/__init__.py,sha256=AFaclnZ3w2dLEPUKixEw04qAiviqlKzfiZm2vQvzDE8,726
966
967
  synth_ai/tracing_v1/__init__.py,sha256=gjO9NpuiFo14zzLG1LBUYioWT6X0TyKSjcbUD0E_xFs,916
967
- synth_ai/tracing_v3/__init__.py,sha256=0lneMR-0vuShFCi_KOZ9KuZ1XcbocVs8Vv4P-4yLmag,3234
968
- synth_ai/tracing_v3/abstractions.py,sha256=4aIqSMunKtYjXBCM_Wu4z6XqmeHijm-tShvQ4J-hXgI,9344
968
+ synth_ai/tracing_v3/__init__.py,sha256=vEJ_PeQdf-uL8R48kwpA5mIC_At064T5hbjHQY-6ABw,3260
969
+ synth_ai/tracing_v3/abstractions.py,sha256=ivN58m0bR6MzL7KxuAeSbMBquVzkZvV7opAqSGBkYgQ,12509
969
970
  synth_ai/tracing_v3/config.py,sha256=7-_4gA1b1u0A2Z4I2SaS-yauoe_GUXzOm0ZEDD_Mqcw,3227
970
971
  synth_ai/tracing_v3/db_config.py,sha256=ntW_cxeoodmP1L9w5xGoFl3oP_YfT-_ZRAY5MAmVNno,5889
971
972
  synth_ai/tracing_v3/decorators.py,sha256=bzaGIl3IP0noKVzUb9k60_vr7I-eecMF4hzSqcpuTLg,13372
972
- synth_ai/tracing_v3/hooks.py,sha256=s7KK_4945vy_91PbNfEEVs5o_LU-cRtLPWBC_eiPIvI,7975
973
+ synth_ai/tracing_v3/hooks.py,sha256=YFPbY7t-dHOOCZVF6eaRNZqR1bbNcdm2tpPGK5g_P8I,7988
974
+ synth_ai/tracing_v3/llm_call_record_helpers.py,sha256=DcIJbeVBU9OUcXjGW4Cun_XIkP-XARgkTVHom06-vHc,12453
975
+ synth_ai/tracing_v3/lm_call_record_abstractions.py,sha256=Wdg116VMKEWvpenHcbJfDN4cX6kkFiP6qtLId8lgtT0,9210
973
976
  synth_ai/tracing_v3/migration_helper.py,sha256=q6G4v3UKJAU4nMytz7znIK1M3xeLGObxl1hUtYV5_ns,4238
974
977
  synth_ai/tracing_v3/replica_sync.py,sha256=CP7hPCR2oETrdsInwQl79mdInFA5xL1Q4Nzp3KGLu5A,8879
975
- synth_ai/tracing_v3/session_tracer.py,sha256=Q-Y0josDqopYiiJIROZBjrtPJjqGgG9s309_9GBYT-8,11313
978
+ synth_ai/tracing_v3/session_tracer.py,sha256=zPCtO73oXVsHN5N64_pleporKiMuAmue9dStAZSFESA,11379
976
979
  synth_ai/tracing_v3/utils.py,sha256=RAFZTf8JyRCQsR9DwJ1ykelKkoY3OSrCBUStCLvpn8w,3431
977
980
  synth_ai/tracing_v3/examples/basic_usage.py,sha256=zbl9bJaZawToMEV0skzvP4sIwLnmBeo7Pa_f1gJlkf8,7265
978
981
  synth_ai/tracing_v3/storage/__init__.py,sha256=S_g7h34JZ6v1hoCcrlP7TaAAU-f0owKUx78QB8TUGkQ,332
@@ -983,14 +986,15 @@ synth_ai/tracing_v3/storage/factory.py,sha256=2h8aok1dAykVBshpB7dP0iwqVVrNoSj6Ku
983
986
  synth_ai/tracing_v3/storage/types.py,sha256=LevN8M12ilZ0EaiQ6Y3yONSMuLGEhSKNt0ir5wbVbek,613
984
987
  synth_ai/tracing_v3/storage/utils.py,sha256=B2mFgTJe4ivretu_6VZ_s7lDBZYyB_aCTrKimeYuZHQ,6057
985
988
  synth_ai/tracing_v3/tests/__init__.py,sha256=0XskpPHyPm8CwwiIJyFTsIhdEpZ-hJHHMwHqMKlL_XE,28
986
- synth_ai/tracing_v3/tests/test_concurrent_operations.py,sha256=SpirbdTfs1HMkEYEtahx9fJGpMuIwY9G8xVJo7mTGG0,15294
989
+ synth_ai/tracing_v3/tests/test_concurrent_operations.py,sha256=R0cewZB3iUKAVzBvC6dFmt2M-UewEDGKGv5U3ODhjWI,15307
990
+ synth_ai/tracing_v3/tests/test_llm_call_records.py,sha256=jzLsY0CQNfmExu0aVg0w9vlKES4P26tGa9LBBo6i1Lc,23317
987
991
  synth_ai/tracing_v3/tests/test_replica_sync.py,sha256=gUt7fR6XoOjCYbfH1ObZ-UmobMwnpRph4OwMbHUI1fo,7637
988
- synth_ai/tracing_v3/tests/test_session_tracer.py,sha256=EsSJJM1dLHPvuGeVhqEy6sI-Li3AYYJQ3_XKKWE9qKo,11619
989
- synth_ai/tracing_v3/tests/test_turso_manager.py,sha256=wGzjsfzRTqfXrwX8o9GfZg1I4b32ikkeHbUIQ4O1Cms,21406
992
+ synth_ai/tracing_v3/tests/test_session_tracer.py,sha256=OXeVAwFEbZQLSiBgpqgGEQRmKR7X_eqRYEOkjsk_E-s,13004
993
+ synth_ai/tracing_v3/tests/test_turso_manager.py,sha256=h5P70I8yxLiiP8zsrmaTpoJj5uRvkNVWfI9q-cml76c,21419
990
994
  synth_ai/tracing_v3/turso/__init__.py,sha256=o4o-ck4AjcE4OXoCDR8qWzb5UMGyQSJzYfBzfL74_i4,414
991
995
  synth_ai/tracing_v3/turso/daemon.py,sha256=EjNTSWg7i8gY-asDZgyXb0d12lMEtWOJBNTMfBMbYzg,4391
992
- synth_ai/tracing_v3/turso/manager.py,sha256=qL08V9WyGhERLg9fEZE_KPMHDWYJAaLnczBtyUUyIrc,21462
993
- synth_ai/tracing_v3/turso/models.py,sha256=SnSjRtZ5-wbJ0hFI_Ykh6KYoO4NCeGK-KjKMY0dwm0I,14067
996
+ synth_ai/tracing_v3/turso/manager.py,sha256=BbHbS3o-voUAhKlG0HoWxQ6AUYIsxX69-Qk1Gp2n1wc,21937
997
+ synth_ai/tracing_v3/turso/models.py,sha256=MCO0wvGJDLwTpO3RsgfN42IvDouaZz4Oc-bS3Cjugsc,14142
994
998
  synth_ai/tui/__init__.py,sha256=URh-sqpBz93jF7BURdVagh7TcNTrUxyGosfSRF1uyMo,50
995
999
  synth_ai/tui/__main__.py,sha256=Io-a8FyvgkXIYchhmZyiEnhEmosF5YXtf-dXt2XLKWg,237
996
1000
  synth_ai/tui/dashboard.py,sha256=OYrwUB4M2ARqJQu_CeDFMo19nlXWOIY2l84cjkhMDXI,11067
@@ -1034,9 +1038,9 @@ synth_ai/v0/tracing_v1/events/manage.py,sha256=dgIlH43aEz7yA1_rj4IisJP6ROiROmLwD
1034
1038
  synth_ai/v0/tracing_v1/events/scope.py,sha256=BuBkhSpVHUJt8iGT9HJZF82rbb88mQcd2vM2shg-w2I,2550
1035
1039
  synth_ai/v0/tracing_v1/events/store.py,sha256=gVM3L_bV_PAEh9GD9eg2AQqNfANu-zH9ied7bAKk_Eg,9040
1036
1040
  synth_ai/zyk/__init__.py,sha256=6HFa13sdHCouhzKOUPEWcJeVxKlzjWO7ERsrrwtTugs,752
1037
- synth_ai-0.2.3.dist-info/licenses/LICENSE,sha256=ynhjRQUfqA_RdGRATApfFA_fBAy9cno04sLtLUqxVFM,1069
1038
- synth_ai-0.2.3.dist-info/METADATA,sha256=TrVsJX8TGmOK4Yfsq9D8TupEybzFDwQx94QsIIto334,6941
1039
- synth_ai-0.2.3.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
1040
- synth_ai-0.2.3.dist-info/entry_points.txt,sha256=GSFXaJreq4PJXbixkUI0GHZwGh2dZDG5pYaoVmqr_KE,46
1041
- synth_ai-0.2.3.dist-info/top_level.txt,sha256=fBmtZyVHuKaGa29oHBaaUkrUIWTqSpoVMPiVdCDP3k8,9
1042
- synth_ai-0.2.3.dist-info/RECORD,,
1041
+ synth_ai-0.2.4.dev2.dist-info/licenses/LICENSE,sha256=ynhjRQUfqA_RdGRATApfFA_fBAy9cno04sLtLUqxVFM,1069
1042
+ synth_ai-0.2.4.dev2.dist-info/METADATA,sha256=Bw0eQ71X63-PmP9dMhObXDMKW3P--4pWVRrArk69XHc,7134
1043
+ synth_ai-0.2.4.dev2.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
1044
+ synth_ai-0.2.4.dev2.dist-info/entry_points.txt,sha256=GSFXaJreq4PJXbixkUI0GHZwGh2dZDG5pYaoVmqr_KE,46
1045
+ synth_ai-0.2.4.dev2.dist-info/top_level.txt,sha256=fBmtZyVHuKaGa29oHBaaUkrUIWTqSpoVMPiVdCDP3k8,9
1046
+ synth_ai-0.2.4.dev2.dist-info/RECORD,,