synth-ai 0.2.8.dev8__py3-none-any.whl → 0.2.8.dev9__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 synth-ai might be problematic. Click here for more details.
- synth_ai/demos/core/cli.py +18 -99
- synth_ai/demos/demo_task_apps/core.py +13 -13
- synth_ai/demos/demo_task_apps/math/modal_task_app.py +41 -3
- {synth_ai-0.2.8.dev8.dist-info → synth_ai-0.2.8.dev9.dist-info}/METADATA +1 -1
- {synth_ai-0.2.8.dev8.dist-info → synth_ai-0.2.8.dev9.dist-info}/RECORD +9 -9
- {synth_ai-0.2.8.dev8.dist-info → synth_ai-0.2.8.dev9.dist-info}/WHEEL +0 -0
- {synth_ai-0.2.8.dev8.dist-info → synth_ai-0.2.8.dev9.dist-info}/entry_points.txt +0 -0
- {synth_ai-0.2.8.dev8.dist-info → synth_ai-0.2.8.dev9.dist-info}/licenses/LICENSE +0 -0
- {synth_ai-0.2.8.dev8.dist-info → synth_ai-0.2.8.dev9.dist-info}/top_level.txt +0 -0
synth_ai/demos/core/cli.py
CHANGED
|
@@ -16,9 +16,6 @@ from synth_ai.handshake import run_handshake, HandshakeError
|
|
|
16
16
|
from synth_ai.demos.demo_task_apps.core import DemoEnv, DEFAULT_TASK_APP_SECRET_NAME
|
|
17
17
|
|
|
18
18
|
|
|
19
|
-
TASK_APP_MODAL_SECRET = DEFAULT_TASK_APP_SECRET_NAME
|
|
20
|
-
|
|
21
|
-
|
|
22
19
|
def _key_preview(value: str, label: str) -> str:
|
|
23
20
|
"""Return a short descriptor for a secret without leaking the full value."""
|
|
24
21
|
try:
|
|
@@ -115,7 +112,6 @@ def cmd_setup(_args: argparse.Namespace) -> int:
|
|
|
115
112
|
dotenv_values = {
|
|
116
113
|
"TASK_APP_BASE_URL": new_url,
|
|
117
114
|
"TASK_APP_NAME": env.task_app_name,
|
|
118
|
-
"TASK_APP_SECRET_NAME": TASK_APP_MODAL_SECRET,
|
|
119
115
|
}
|
|
120
116
|
demo_core.persist_dotenv_values(dotenv_values)
|
|
121
117
|
os.environ["TASK_APP_BASE_URL"] = new_url
|
|
@@ -237,67 +233,6 @@ def _popen_stream_capture(cmd: list[str], cwd: str | None = None, env: dict | No
|
|
|
237
233
|
return int(proc.returncode or 0), "\n".join(buf_lines)
|
|
238
234
|
|
|
239
235
|
|
|
240
|
-
def _mask_secret_args(args: list[str]) -> list[str]:
|
|
241
|
-
masked: list[str] = []
|
|
242
|
-
sensitive_prefixes = (
|
|
243
|
-
"ENVIRONMENT_API_KEY=",
|
|
244
|
-
"OPENAI_API_KEY=",
|
|
245
|
-
"SYNTH_API_KEY=",
|
|
246
|
-
)
|
|
247
|
-
for a in args:
|
|
248
|
-
if "=" in a and any(a.startswith(prefix) for prefix in sensitive_prefixes):
|
|
249
|
-
try:
|
|
250
|
-
key, value = a.split("=", 1)
|
|
251
|
-
tail = value[-5:] if len(value) >= 5 else value
|
|
252
|
-
masked.append(f"{key}=***{tail}")
|
|
253
|
-
except Exception:
|
|
254
|
-
masked.append("<masked>")
|
|
255
|
-
else:
|
|
256
|
-
masked.append(a)
|
|
257
|
-
return masked
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
def _ensure_modal_secret(
|
|
261
|
-
secret_name: str,
|
|
262
|
-
*,
|
|
263
|
-
values: dict[str, str],
|
|
264
|
-
label: str = "deploy",
|
|
265
|
-
replace: bool = False,
|
|
266
|
-
) -> bool:
|
|
267
|
-
prefix = f"[{label}]"
|
|
268
|
-
if not secret_name.strip():
|
|
269
|
-
raise RuntimeError("Secret name is required")
|
|
270
|
-
|
|
271
|
-
if not values:
|
|
272
|
-
raise RuntimeError("No values provided to create Modal secret")
|
|
273
|
-
|
|
274
|
-
create_args = [f"{k}={v}" for k, v in values.items()]
|
|
275
|
-
create_cmd = ["uv", "run", "modal", "secret", "create", secret_name, *create_args]
|
|
276
|
-
|
|
277
|
-
if replace:
|
|
278
|
-
print(f"{prefix} Removing Modal secret '{secret_name}' (if present)…")
|
|
279
|
-
delete_commands = [
|
|
280
|
-
["bash", "-lc", f"printf 'y\\n' | uv run modal secret delete {secret_name}"],
|
|
281
|
-
["bash", "-lc", f"printf 'y\\n' | modal secret delete {secret_name}"],
|
|
282
|
-
]
|
|
283
|
-
delete_code = None
|
|
284
|
-
for delete_cmd in delete_commands:
|
|
285
|
-
print(f"{prefix} Command:", " ".join(delete_cmd))
|
|
286
|
-
delete_code = _popen_stream(delete_cmd)
|
|
287
|
-
if delete_code in (0, 1):
|
|
288
|
-
break
|
|
289
|
-
if delete_code not in (0, 1):
|
|
290
|
-
print(f"{prefix} Warning: delete command exited with {delete_code}; continuing to recreate")
|
|
291
|
-
|
|
292
|
-
print(f"\n{prefix} Creating Modal secret '{secret_name}'…")
|
|
293
|
-
print(f"{prefix} Command:", " ".join(_mask_secret_args(create_cmd)))
|
|
294
|
-
code = _popen_stream(create_cmd)
|
|
295
|
-
if code != 0:
|
|
296
|
-
raise RuntimeError("Failed to provision Modal secret (see logs above)")
|
|
297
|
-
|
|
298
|
-
return True
|
|
299
|
-
|
|
300
|
-
|
|
301
236
|
def _fmt_float(value: float) -> str:
|
|
302
237
|
return f"{value:.10g}"
|
|
303
238
|
|
|
@@ -666,22 +601,19 @@ def _ensure_task_app_ready(env: DemoEnv, synth_key: str, *, label: str) -> DemoE
|
|
|
666
601
|
app_name = fallback
|
|
667
602
|
demo_core.persist_task_url(task_url, name=app_name)
|
|
668
603
|
|
|
669
|
-
secret_name = TASK_APP_MODAL_SECRET
|
|
670
604
|
demo_core.persist_task_url(task_url, name=app_name)
|
|
671
605
|
demo_core.persist_dotenv_values({
|
|
672
606
|
"TASK_APP_BASE_URL": task_url,
|
|
673
607
|
"TASK_APP_NAME": app_name,
|
|
674
|
-
"TASK_APP_SECRET_NAME":
|
|
608
|
+
"TASK_APP_SECRET_NAME": DEFAULT_TASK_APP_SECRET_NAME,
|
|
675
609
|
})
|
|
676
610
|
|
|
677
|
-
openai_key = (os.environ.get("OPENAI_API_KEY") or local_env.get("OPENAI_API_KEY") or "").strip()
|
|
678
|
-
secret_values: dict[str, str] = {"ENVIRONMENT_API_KEY": env_key}
|
|
679
|
-
if openai_key:
|
|
680
|
-
secret_values["OPENAI_API_KEY"] = openai_key
|
|
681
611
|
if synth_key:
|
|
682
|
-
|
|
612
|
+
os.environ["SYNTH_API_KEY"] = synth_key
|
|
683
613
|
|
|
684
|
-
|
|
614
|
+
openai_key = (os.environ.get("OPENAI_API_KEY") or local_env.get("OPENAI_API_KEY") or "").strip()
|
|
615
|
+
if openai_key:
|
|
616
|
+
os.environ["OPENAI_API_KEY"] = openai_key
|
|
685
617
|
|
|
686
618
|
rollout_url = task_url.rstrip("/") + "/health/rollout"
|
|
687
619
|
print(f"[{label}] Verifying rollout health:")
|
|
@@ -712,8 +644,6 @@ def _ensure_task_app_ready(env: DemoEnv, synth_key: str, *, label: str) -> DemoE
|
|
|
712
644
|
print(f"[{label}] Warning: rollout health check failed ({rc}). Response: {body}")
|
|
713
645
|
try:
|
|
714
646
|
print(f"[{label}] Sent header X-API-Key → {_key_preview(env_key, 'X-API-Key')}")
|
|
715
|
-
if secret_name:
|
|
716
|
-
print(f"[{label}] Modal secret name={secret_name}")
|
|
717
647
|
except Exception:
|
|
718
648
|
pass
|
|
719
649
|
else:
|
|
@@ -721,16 +651,18 @@ def _ensure_task_app_ready(env: DemoEnv, synth_key: str, *, label: str) -> DemoE
|
|
|
721
651
|
|
|
722
652
|
os.environ["TASK_APP_BASE_URL"] = task_url
|
|
723
653
|
os.environ["ENVIRONMENT_API_KEY"] = env_key
|
|
654
|
+
os.environ["TASK_APP_SECRET_NAME"] = DEFAULT_TASK_APP_SECRET_NAME
|
|
724
655
|
updated_env = demo_core.load_env()
|
|
725
656
|
updated_env.env_api_key = env_key
|
|
726
657
|
updated_env.task_app_base_url = task_url
|
|
727
658
|
updated_env.task_app_name = app_name
|
|
728
|
-
updated_env.task_app_secret_name =
|
|
659
|
+
updated_env.task_app_secret_name = DEFAULT_TASK_APP_SECRET_NAME
|
|
729
660
|
return updated_env
|
|
730
661
|
|
|
731
662
|
|
|
732
663
|
def cmd_deploy(args: argparse.Namespace) -> int:
|
|
733
664
|
env = demo_core.load_env()
|
|
665
|
+
os.environ["TASK_APP_SECRET_NAME"] = DEFAULT_TASK_APP_SECRET_NAME
|
|
734
666
|
cwd_env_path = os.path.join(os.getcwd(), ".env")
|
|
735
667
|
local_env = demo_core.load_dotenv_file(cwd_env_path)
|
|
736
668
|
url = ""
|
|
@@ -808,7 +740,6 @@ def cmd_deploy(args: argparse.Namespace) -> int:
|
|
|
808
740
|
print("Aborted by user.")
|
|
809
741
|
return 1
|
|
810
742
|
|
|
811
|
-
secret_name = TASK_APP_MODAL_SECRET
|
|
812
743
|
existing_env_key = (env.env_api_key or "").strip()
|
|
813
744
|
env_key: str | None = existing_env_key or None
|
|
814
745
|
if existing_env_key:
|
|
@@ -831,6 +762,8 @@ def cmd_deploy(args: argparse.Namespace) -> int:
|
|
|
831
762
|
env.env_api_key = env_key
|
|
832
763
|
local_env["ENVIRONMENT_API_KEY"] = env_key
|
|
833
764
|
print("[deploy] Minted new ENVIRONMENT_API_KEY")
|
|
765
|
+
elif env_key:
|
|
766
|
+
os.environ["ENVIRONMENT_API_KEY"] = env_key
|
|
834
767
|
|
|
835
768
|
# Optionally upload the new key to the backend using sealed box helper
|
|
836
769
|
backend_base = (env.dev_backend_url or "").rstrip("/")
|
|
@@ -861,13 +794,14 @@ def cmd_deploy(args: argparse.Namespace) -> int:
|
|
|
861
794
|
|
|
862
795
|
synth_key = (env.synth_api_key or os.environ.get("SYNTH_API_KEY") or local_env.get("SYNTH_API_KEY") or "").strip()
|
|
863
796
|
if not synth_key:
|
|
864
|
-
synth_key = input("Enter SYNTH_API_KEY for
|
|
797
|
+
synth_key = input("Enter SYNTH_API_KEY for deployment (required): ").strip()
|
|
865
798
|
if not synth_key:
|
|
866
|
-
print("SYNTH_API_KEY is required
|
|
799
|
+
print("SYNTH_API_KEY is required for deployment.")
|
|
867
800
|
return 1
|
|
868
801
|
demo_core.persist_api_key(synth_key)
|
|
869
802
|
demo_core.persist_dotenv_values({"SYNTH_API_KEY": synth_key})
|
|
870
803
|
env.synth_api_key = synth_key
|
|
804
|
+
os.environ["SYNTH_API_KEY"] = synth_key
|
|
871
805
|
|
|
872
806
|
openai_key = (os.environ.get("OPENAI_API_KEY") or local_env.get("OPENAI_API_KEY") or "").strip()
|
|
873
807
|
if not openai_key:
|
|
@@ -875,25 +809,11 @@ def cmd_deploy(args: argparse.Namespace) -> int:
|
|
|
875
809
|
"Enter your OpenAI API key, found at https://platform.openai.com/api-keys\n> "
|
|
876
810
|
).strip()
|
|
877
811
|
if not openai_key:
|
|
878
|
-
print("OPENAI_API_KEY is required
|
|
812
|
+
print("OPENAI_API_KEY is required for deployment.")
|
|
879
813
|
return 1
|
|
880
814
|
demo_core.persist_dotenv_values({"OPENAI_API_KEY": openai_key})
|
|
881
815
|
local_env["OPENAI_API_KEY"] = openai_key
|
|
882
|
-
|
|
883
|
-
values = {
|
|
884
|
-
"SYNTH_API_KEY": synth_key,
|
|
885
|
-
"OPENAI_API_KEY": openai_key,
|
|
886
|
-
}
|
|
887
|
-
if env_key:
|
|
888
|
-
values["ENVIRONMENT_API_KEY"] = env_key
|
|
889
|
-
|
|
890
|
-
try:
|
|
891
|
-
created = _ensure_modal_secret(secret_name, values=values, label="deploy", replace=True)
|
|
892
|
-
except RuntimeError as secret_err:
|
|
893
|
-
print(f"Failed to prepare Modal secret '{secret_name}': {secret_err}")
|
|
894
|
-
return 2
|
|
895
|
-
if created:
|
|
896
|
-
print(f"[deploy] Modal secret '{secret_name}' provisioned.")
|
|
816
|
+
os.environ["OPENAI_API_KEY"] = openai_key
|
|
897
817
|
|
|
898
818
|
deploy_cmd = ["uv", "run", "python", "-m", "modal", "deploy", "--name", name_in, app_path]
|
|
899
819
|
print("\nStreaming Modal build/deploy logs (this can take several minutes on first run)…\n")
|
|
@@ -943,7 +863,7 @@ def cmd_deploy(args: argparse.Namespace) -> int:
|
|
|
943
863
|
dotenv_values = {"TASK_APP_BASE_URL": url}
|
|
944
864
|
if app_name:
|
|
945
865
|
dotenv_values["TASK_APP_NAME"] = app_name
|
|
946
|
-
|
|
866
|
+
dotenv_values["TASK_APP_SECRET_NAME"] = DEFAULT_TASK_APP_SECRET_NAME
|
|
947
867
|
dotenv_path = demo_core.persist_dotenv_values(dotenv_values)
|
|
948
868
|
print(f"TASK_APP_BASE_URL={url}")
|
|
949
869
|
if app_name:
|
|
@@ -952,7 +872,6 @@ def cmd_deploy(args: argparse.Namespace) -> int:
|
|
|
952
872
|
print(f" export TASK_APP_BASE_URL={url}")
|
|
953
873
|
if app_name:
|
|
954
874
|
print(f" export TASK_APP_NAME={app_name}")
|
|
955
|
-
print(f" export TASK_APP_SECRET_NAME={TASK_APP_MODAL_SECRET}")
|
|
956
875
|
print(f"Persisted to {dotenv_path}")
|
|
957
876
|
print("\nNext step:\n$ uvx synth-ai run")
|
|
958
877
|
return 0
|
|
@@ -1228,7 +1147,7 @@ def cmd_run(args: argparse.Namespace) -> int:
|
|
|
1228
1147
|
print(f" {_key_preview(sk, 'SYNTH_API_KEY')}")
|
|
1229
1148
|
if ek:
|
|
1230
1149
|
print(f" {_key_preview(ek, 'ENVIRONMENT_API_KEY')}")
|
|
1231
|
-
print("
|
|
1150
|
+
print("Ensure the ENVIRONMENT_API_KEY you deployed with matches the task app and remains exported.")
|
|
1232
1151
|
return code
|
|
1233
1152
|
|
|
1234
1153
|
# Fallback: legacy jobs API flow
|
|
@@ -1305,7 +1224,7 @@ def cmd_run(args: argparse.Namespace) -> int:
|
|
|
1305
1224
|
print("Hint: HTTP 401 Unauthorized from backend. Verify SYNTH_API_KEY for:", base_url)
|
|
1306
1225
|
if sk:
|
|
1307
1226
|
print(f" {_key_preview(sk, 'SYNTH_API_KEY')}")
|
|
1308
|
-
print("
|
|
1227
|
+
print("Ensure the ENVIRONMENT_API_KEY and OPENAI_API_KEY used for deployment remain valid.")
|
|
1309
1228
|
except Exception:
|
|
1310
1229
|
pass
|
|
1311
1230
|
return 2
|
|
@@ -4,7 +4,6 @@ import json
|
|
|
4
4
|
import os
|
|
5
5
|
import subprocess
|
|
6
6
|
import sys
|
|
7
|
-
import time
|
|
8
7
|
from dataclasses import dataclass
|
|
9
8
|
from typing import Any, Dict, Optional, Tuple
|
|
10
9
|
|
|
@@ -13,6 +12,9 @@ import urllib.request
|
|
|
13
12
|
from synth_ai.config.base_url import PROD_BASE_URL_DEFAULT
|
|
14
13
|
|
|
15
14
|
|
|
15
|
+
DEFAULT_TASK_APP_SECRET_NAME = "hendrycks-math-task-app-secret"
|
|
16
|
+
|
|
17
|
+
|
|
16
18
|
@dataclass
|
|
17
19
|
class DemoEnv:
|
|
18
20
|
dev_backend_url: str = ""
|
|
@@ -20,10 +22,7 @@ class DemoEnv:
|
|
|
20
22
|
env_api_key: str = ""
|
|
21
23
|
task_app_base_url: str = ""
|
|
22
24
|
task_app_name: str = ""
|
|
23
|
-
task_app_secret_name: str =
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
DEFAULT_TASK_APP_SECRET_NAME = "hendrycks-math-task-app-secret"
|
|
25
|
+
task_app_secret_name: str = DEFAULT_TASK_APP_SECRET_NAME
|
|
27
26
|
|
|
28
27
|
def _mask(value: str, keep: int = 4) -> str:
|
|
29
28
|
if not value:
|
|
@@ -287,7 +286,7 @@ def load_env() -> DemoEnv:
|
|
|
287
286
|
)
|
|
288
287
|
|
|
289
288
|
task_app_name = str(state.get("TASK_APP_NAME") or "")
|
|
290
|
-
task_app_secret_name = DEFAULT_TASK_APP_SECRET_NAME
|
|
289
|
+
task_app_secret_name = str(state.get("TASK_APP_SECRET_NAME") or DEFAULT_TASK_APP_SECRET_NAME)
|
|
291
290
|
|
|
292
291
|
env.dev_backend_url = dev_url.rstrip("/")
|
|
293
292
|
env.synth_api_key = synth_api_key
|
|
@@ -369,16 +368,17 @@ def persist_task_url(url: str, *, name: str | None = None) -> None:
|
|
|
369
368
|
if data.get("TASK_APP_NAME") != name:
|
|
370
369
|
data["TASK_APP_NAME"] = name
|
|
371
370
|
changed.append("TASK_APP_NAME")
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
371
|
+
if data.get("TASK_APP_SECRET_NAME") != DEFAULT_TASK_APP_SECRET_NAME:
|
|
372
|
+
data["TASK_APP_SECRET_NAME"] = DEFAULT_TASK_APP_SECRET_NAME
|
|
373
|
+
changed.append("TASK_APP_SECRET_NAME")
|
|
374
|
+
elif data.get("TASK_APP_SECRET_NAME") != DEFAULT_TASK_APP_SECRET_NAME:
|
|
375
|
+
data["TASK_APP_SECRET_NAME"] = DEFAULT_TASK_APP_SECRET_NAME
|
|
376
|
+
changed.append("TASK_APP_SECRET_NAME")
|
|
377
377
|
_write_state(data)
|
|
378
378
|
if changed:
|
|
379
379
|
print(f"Saved {', '.join(changed)} to {_state_path()}")
|
|
380
|
-
if "
|
|
381
|
-
print(f"TASK_APP_SECRET_NAME={
|
|
380
|
+
if "TASK_APP_SECRET_NAME" in changed:
|
|
381
|
+
print(f"TASK_APP_SECRET_NAME={DEFAULT_TASK_APP_SECRET_NAME}")
|
|
382
382
|
|
|
383
383
|
|
|
384
384
|
def persist_api_key(key: str) -> None:
|
|
@@ -7,7 +7,11 @@ from pathlib import Path
|
|
|
7
7
|
|
|
8
8
|
from modal import App, Image, Secret, asgi_app
|
|
9
9
|
from functools import lru_cache
|
|
10
|
-
|
|
10
|
+
|
|
11
|
+
try: # Backward compatibility with older installed SDKs
|
|
12
|
+
from synth_ai.demos.demo_task_apps.core import DEFAULT_TASK_APP_SECRET_NAME
|
|
13
|
+
except Exception: # pragma: no cover - occurs on older deployments
|
|
14
|
+
DEFAULT_TASK_APP_SECRET_NAME = "hendrycks-math-task-app-secret"
|
|
11
15
|
|
|
12
16
|
# Self-contained: no external problem bank installer required
|
|
13
17
|
|
|
@@ -43,15 +47,49 @@ if _SYNTH_HOSTED is not None:
|
|
|
43
47
|
|
|
44
48
|
# No extra local dirs required; app is self-contained
|
|
45
49
|
|
|
50
|
+
|
|
51
|
+
def _build_inline_secret() -> Secret:
|
|
52
|
+
required = ("ENVIRONMENT_API_KEY",)
|
|
53
|
+
optional = ("SYNTH_API_KEY", "OPENAI_API_KEY")
|
|
54
|
+
payload: dict[str, str] = {}
|
|
55
|
+
missing: list[str] = []
|
|
56
|
+
|
|
57
|
+
for key in required:
|
|
58
|
+
value = (os.environ.get(key) or "").strip()
|
|
59
|
+
if not value:
|
|
60
|
+
missing.append(key)
|
|
61
|
+
else:
|
|
62
|
+
payload[key] = value
|
|
63
|
+
|
|
64
|
+
for key in optional:
|
|
65
|
+
value = (os.environ.get(key) or "").strip()
|
|
66
|
+
if value:
|
|
67
|
+
payload[key] = value
|
|
68
|
+
|
|
69
|
+
if missing:
|
|
70
|
+
raise RuntimeError(
|
|
71
|
+
"Missing required environment values for inline secret: " + ", ".join(missing)
|
|
72
|
+
)
|
|
73
|
+
|
|
74
|
+
previews = ", ".join(f"{k}:len={len(v)}" for k, v in payload.items())
|
|
75
|
+
print(f"[startup] TASK_APP_SECRET_NAME={DEFAULT_TASK_APP_SECRET_NAME}")
|
|
76
|
+
print(f"[startup] inline secret prepared ({previews})")
|
|
77
|
+
|
|
78
|
+
return Secret.from_dict(payload)
|
|
79
|
+
|
|
80
|
+
|
|
81
|
+
INLINE_SECRET = _build_inline_secret()
|
|
82
|
+
|
|
46
83
|
app = App("hendrycks-math-task-app")
|
|
47
|
-
|
|
84
|
+
|
|
85
|
+
|
|
48
86
|
@app.function(
|
|
49
87
|
image=image,
|
|
50
88
|
timeout=600,
|
|
51
89
|
memory=16384,
|
|
52
90
|
cpu=4,
|
|
53
91
|
min_containers=1,
|
|
54
|
-
secrets=[
|
|
92
|
+
secrets=[INLINE_SECRET],
|
|
55
93
|
)
|
|
56
94
|
@asgi_app()
|
|
57
95
|
def fastapi_app():
|
|
@@ -21,16 +21,16 @@ synth_ai/config/base_url.py,sha256=c85LaABBrvsl8Fp8KH0LNtJJrpnUwlzA5Ywbuth8fHE,3
|
|
|
21
21
|
synth_ai/core/experiment.py,sha256=hLkPtzUFA7iY3-QpeJ5K8YjvQeyfqnjab5P2CFaojys,236
|
|
22
22
|
synth_ai/core/system.py,sha256=s-Z7np2ISYmYc1r9YN-y2yb3cgRlOalrh0iaqnxeo84,206
|
|
23
23
|
synth_ai/demos/core/__init__.py,sha256=A2FjhY7KXGtyzdQXqeTPCkEhHfrH-eQg6bvP8HaYhZM,36
|
|
24
|
-
synth_ai/demos/core/cli.py,sha256=
|
|
24
|
+
synth_ai/demos/core/cli.py,sha256=3yQSyygbK6Ix2UZCbVepVrSQF4LnI4E2TARLlyuhVF4,54009
|
|
25
25
|
synth_ai/demos/demo_task_apps/__init__.py,sha256=8aUGEGpWUw11GRb3wQXRAmQ99yjAt5qd5FCTDJpXWjI,44
|
|
26
|
-
synth_ai/demos/demo_task_apps/core.py,sha256=
|
|
26
|
+
synth_ai/demos/demo_task_apps/core.py,sha256=Eu7gp0VtZ9tE1HPLG14-pkjC1cD_7brsdl2IRbdSBts,14764
|
|
27
27
|
synth_ai/demos/demo_task_apps/math/__init__.py,sha256=WBzpZwSn7pRarBmhopQi34i9bEm05-71eM3siboOavY,43
|
|
28
28
|
synth_ai/demos/demo_task_apps/math/_common.py,sha256=SgtVW1pne4pgwGS2gYYQWkmG9BvU2sQTYzlncmUJ0NM,533
|
|
29
29
|
synth_ai/demos/demo_task_apps/math/app.py,sha256=gNopoAhwM0vzdKuCa7AwQqSwiV2xagrjMxMH9YIniv4,1160
|
|
30
30
|
synth_ai/demos/demo_task_apps/math/config.toml,sha256=Kxrzuyj7Az5mvzXaipPIyngKTDqphohf6uSWOHCF5cw,2105
|
|
31
31
|
synth_ai/demos/demo_task_apps/math/deploy_modal.py,sha256=O4745sFuGEZTsygl-mz6ZOFJ7mog8CquXMgMyjFKr_c,2288
|
|
32
32
|
synth_ai/demos/demo_task_apps/math/deploy_task_app.sh,sha256=qVffbAmsiCAxzFDzcxNVF4f7yyLWnmqPc1cNydHT5BQ,791
|
|
33
|
-
synth_ai/demos/demo_task_apps/math/modal_task_app.py,sha256=
|
|
33
|
+
synth_ai/demos/demo_task_apps/math/modal_task_app.py,sha256=JKSlBxl5BetTx8211PomHvqPibj6bglx-iXFYYmO87s,21313
|
|
34
34
|
synth_ai/environments/__init__.py,sha256=BQW0Nc_BFQq_N-pcqTyJVjW56kSEXu7XZyaSer-U95Q,1032
|
|
35
35
|
synth_ai/environments/environment/__init__.py,sha256=EBol9AKxPTIPXWcbH9Tja-l3yL-N2kB8e5atyf6F66c,31
|
|
36
36
|
synth_ai/environments/environment/core.py,sha256=0jd0CZ88_s_qqA3d1lOgVsnv-ucw_1lJDAIUj1gTSt0,2201
|
|
@@ -412,9 +412,9 @@ synth_ai/v0/tracing_v1/events/manage.py,sha256=ZDXXP-ZwLH9LCsmw7Ru9o55d7bl_diPtJ
|
|
|
412
412
|
synth_ai/v0/tracing_v1/events/scope.py,sha256=BuBkhSpVHUJt8iGT9HJZF82rbb88mQcd2vM2shg-w2I,2550
|
|
413
413
|
synth_ai/v0/tracing_v1/events/store.py,sha256=0342lvAcalyJbVEIzQFaPuMQGgwiFm7M5rE6gr-G0E8,9041
|
|
414
414
|
synth_ai/zyk/__init__.py,sha256=htVLnzTYQ5rxzYpzSYBm7_o6uNKZ3pB_PrqkBrgTRS4,771
|
|
415
|
-
synth_ai-0.2.8.
|
|
416
|
-
synth_ai-0.2.8.
|
|
417
|
-
synth_ai-0.2.8.
|
|
418
|
-
synth_ai-0.2.8.
|
|
419
|
-
synth_ai-0.2.8.
|
|
420
|
-
synth_ai-0.2.8.
|
|
415
|
+
synth_ai-0.2.8.dev9.dist-info/licenses/LICENSE,sha256=ynhjRQUfqA_RdGRATApfFA_fBAy9cno04sLtLUqxVFM,1069
|
|
416
|
+
synth_ai-0.2.8.dev9.dist-info/METADATA,sha256=GhbfwG2ZggpD4GgfnWfSc4DoRG1OKktoRQL4XBKJ1gw,5152
|
|
417
|
+
synth_ai-0.2.8.dev9.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
418
|
+
synth_ai-0.2.8.dev9.dist-info/entry_points.txt,sha256=Neq-3bT7TAijjgOIR77pKL-WYg6TWBDeO8pp_nL4vGY,91
|
|
419
|
+
synth_ai-0.2.8.dev9.dist-info/top_level.txt,sha256=fBmtZyVHuKaGa29oHBaaUkrUIWTqSpoVMPiVdCDP3k8,9
|
|
420
|
+
synth_ai-0.2.8.dev9.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|