experiential 0.4.0__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 (360) hide show
  1. exp/__init__.py +262 -0
  2. exp/__main__.py +11 -0
  3. exp/cli/__init__.py +5 -0
  4. exp/cli/app.py +50 -0
  5. exp/cli/build/__init__.py +1 -0
  6. exp/cli/build/app.py +966 -0
  7. exp/cli/build/cost.py +77 -0
  8. exp/cli/build/wizard.py +893 -0
  9. exp/cli/build/wizard_screens.py +142 -0
  10. exp/cli/config/__init__.py +1 -0
  11. exp/cli/config/app.py +167 -0
  12. exp/cli/gateway/__init__.py +1 -0
  13. exp/cli/gateway/alias.py +348 -0
  14. exp/cli/gateway/app.py +498 -0
  15. exp/cli/gateway/budget.py +185 -0
  16. exp/cli/gateway/compatibility.py +121 -0
  17. exp/cli/gateway/key_output.py +532 -0
  18. exp/cli/gateway/pool.py +197 -0
  19. exp/cli/gateway/provider.py +166 -0
  20. exp/cli/gateway/receipts.py +74 -0
  21. exp/cli/gateway/setup.py +114 -0
  22. exp/cli/judge/__init__.py +1 -0
  23. exp/cli/judge/app.py +545 -0
  24. exp/cli/judge/review.py +675 -0
  25. exp/cli/judge/rubric.py +261 -0
  26. exp/cli/judge/trace_viewer.py +581 -0
  27. exp/cli/judge/transcript.py +298 -0
  28. exp/cli/optimize/__init__.py +1 -0
  29. exp/cli/optimize/app.py +28 -0
  30. exp/cli/optimize/model.py +613 -0
  31. exp/cli/optimize/router.py +219 -0
  32. exp/cli/optimize/router_candidates.py +524 -0
  33. exp/cli/providers/__init__.py +1 -0
  34. exp/cli/providers/model_picker.py +830 -0
  35. exp/cli/providers/provider_picker.py +718 -0
  36. exp/cli/providers/setup.py +780 -0
  37. exp/cli/run/__init__.py +1 -0
  38. exp/cli/run/app.py +236 -0
  39. exp/cli/shared/__init__.py +1 -0
  40. exp/cli/shared/consent.py +299 -0
  41. exp/cli/shared/defer.py +101 -0
  42. exp/cli/shared/options.py +22 -0
  43. exp/cli/shared/picker.py +814 -0
  44. exp/cli/shared/picker_view.py +277 -0
  45. exp/cli/shared/progress.py +237 -0
  46. exp/cli/shared/theme.py +31 -0
  47. exp/common/__init__.py +1 -0
  48. exp/common/config/__init__.py +23 -0
  49. exp/common/config/dotenv.py +31 -0
  50. exp/common/config/paths.py +5 -0
  51. exp/common/config/settings.py +192 -0
  52. exp/common/core/artifacts.py +435 -0
  53. exp/common/core/files.py +181 -0
  54. exp/common/core/hashing.py +35 -0
  55. exp/common/core/locks.py +97 -0
  56. exp/common/core/money.py +84 -0
  57. exp/common/core/text.py +32 -0
  58. exp/common/core/union_find.py +59 -0
  59. exp/common/evaluations/__init__.py +46 -0
  60. exp/common/evaluations/build.py +532 -0
  61. exp/common/evaluations/dataset.py +291 -0
  62. exp/common/evaluations/evidence.py +229 -0
  63. exp/common/evaluations/fidelity.py +322 -0
  64. exp/common/evaluations/plan.py +144 -0
  65. exp/common/evaluations/planning.py +487 -0
  66. exp/common/judging/__init__.py +111 -0
  67. exp/common/judging/calibration.py +961 -0
  68. exp/common/judging/calibration_assembly.py +65 -0
  69. exp/common/judging/calibration_contracts.py +170 -0
  70. exp/common/judging/calibration_metrics.py +387 -0
  71. exp/common/judging/calibration_provenance.py +103 -0
  72. exp/common/judging/display.py +95 -0
  73. exp/common/judging/evidence.py +141 -0
  74. exp/common/judging/interface.py +35 -0
  75. exp/common/judging/judgment.py +89 -0
  76. exp/common/judging/labels.py +581 -0
  77. exp/common/judging/lineage.py +149 -0
  78. exp/common/judging/lm.py +530 -0
  79. exp/common/judging/prompts.py +41 -0
  80. exp/common/judging/proposal.py +215 -0
  81. exp/common/judging/provenance.py +137 -0
  82. exp/common/judging/review.py +692 -0
  83. exp/common/judging/risk_acceptance.py +222 -0
  84. exp/common/judging/rubric.py +373 -0
  85. exp/common/models/__init__.py +185 -0
  86. exp/common/models/catalog.py +551 -0
  87. exp/common/models/client.py +58 -0
  88. exp/common/models/connection_authoring.py +86 -0
  89. exp/common/models/discovery.py +267 -0
  90. exp/common/models/gateway_catalog.py +225 -0
  91. exp/common/models/known_models.py +573 -0
  92. exp/common/models/model.py +461 -0
  93. exp/common/models/pricing.py +548 -0
  94. exp/common/models/router_candidates.py +380 -0
  95. exp/common/models/setup.py +352 -0
  96. exp/common/models/structured.py +36 -0
  97. exp/common/observability/__init__.py +15 -0
  98. exp/common/observability/telemetry.py +427 -0
  99. exp/common/progress.py +66 -0
  100. exp/common/project/__init__.py +142 -0
  101. exp/common/project/bundle.py +932 -0
  102. exp/common/project/catalog.py +141 -0
  103. exp/common/project/events.py +94 -0
  104. exp/common/project/hosted_state.py +308 -0
  105. exp/common/project/manifests.py +73 -0
  106. exp/common/project/paths.py +119 -0
  107. exp/common/project/project.py +383 -0
  108. exp/common/project/store.py +990 -0
  109. exp/common/release_revision.py +48 -0
  110. exp/common/rollouts/__init__.py +47 -0
  111. exp/common/rollouts/artifact.py +370 -0
  112. exp/common/rollouts/dispatch_failures.py +87 -0
  113. exp/common/rollouts/otel.py +82 -0
  114. exp/common/routing/__init__.py +40 -0
  115. exp/common/routing/bank.py +374 -0
  116. exp/common/routing/decision.py +371 -0
  117. exp/common/routing/embeddings.py +559 -0
  118. exp/common/routing/features.py +120 -0
  119. exp/common/routing/policy.py +133 -0
  120. exp/common/tasks/__init__.py +12 -0
  121. exp/common/tasks/store.py +68 -0
  122. exp/common/tasks/task.py +90 -0
  123. exp/common/traces/__init__.py +14 -0
  124. exp/common/traces/store.py +134 -0
  125. exp/common/traces/trace.py +135 -0
  126. exp/optimize/__init__.py +1 -0
  127. exp/optimize/model/__init__.py +1 -0
  128. exp/optimize/model/sft/__init__.py +145 -0
  129. exp/optimize/model/sft/automatic.py +797 -0
  130. exp/optimize/model/sft/builder.py +868 -0
  131. exp/optimize/model/sft/composition.py +948 -0
  132. exp/optimize/model/sft/contracts.py +511 -0
  133. exp/optimize/model/sft/provider_resources.py +39 -0
  134. exp/optimize/model/sft/rendering.py +89 -0
  135. exp/optimize/model/sft/run_manifest.py +814 -0
  136. exp/optimize/model/sft/runtime_source.py +276 -0
  137. exp/optimize/model/sft/selection.py +386 -0
  138. exp/optimize/model/sft/sources.py +568 -0
  139. exp/optimize/model/sft/tinker.py +407 -0
  140. exp/optimize/model/sft/training.py +865 -0
  141. exp/optimize/model/sft/training_contracts.py +414 -0
  142. exp/optimize/model/sft/training_runtime.py +221 -0
  143. exp/optimize/router/__init__.py +150 -0
  144. exp/optimize/router/activation.py +159 -0
  145. exp/optimize/router/attempt_authority.py +729 -0
  146. exp/optimize/router/automatic/__init__.py +1 -0
  147. exp/optimize/router/automatic/artifacts.py +340 -0
  148. exp/optimize/router/automatic/attribution.py +578 -0
  149. exp/optimize/router/automatic/execution_contract.py +415 -0
  150. exp/optimize/router/automatic/judge.py +350 -0
  151. exp/optimize/router/automatic/judge_provenance.py +325 -0
  152. exp/optimize/router/automatic/preflight.py +793 -0
  153. exp/optimize/router/automatic/provisional.py +471 -0
  154. exp/optimize/router/automatic/replay.py +646 -0
  155. exp/optimize/router/automatic/reservations.py +751 -0
  156. exp/optimize/router/automatic/service.py +738 -0
  157. exp/optimize/router/composition.py +759 -0
  158. exp/optimize/router/errors.py +32 -0
  159. exp/optimize/router/evaluation/__init__.py +1 -0
  160. exp/optimize/router/evaluation/build.py +123 -0
  161. exp/optimize/router/evaluation/setup.py +50 -0
  162. exp/optimize/router/evaluation/simulation_spec.py +91 -0
  163. exp/optimize/router/evaluation/spend.py +199 -0
  164. exp/optimize/router/fit/__init__.py +1 -0
  165. exp/optimize/router/fit/optimizer.py +910 -0
  166. exp/optimize/router/fit/report.py +640 -0
  167. exp/optimize/router/fit/spec.py +81 -0
  168. exp/optimize/router/fit/workflow.py +320 -0
  169. exp/optimize/router/hosted.py +944 -0
  170. exp/optimize/router/hosted_preflight.py +638 -0
  171. exp/optimize/router/hosted_spend.py +285 -0
  172. exp/optimize/router/hosted_stages.py +149 -0
  173. exp/optimize/router/hosted_verification.py +719 -0
  174. exp/optimize/router/judging/__init__.py +1 -0
  175. exp/optimize/router/judging/artifacts.py +940 -0
  176. exp/optimize/router/judging/contracts.py +932 -0
  177. exp/optimize/router/judging/labels.py +207 -0
  178. exp/optimize/router/judging/pricing.py +103 -0
  179. exp/optimize/router/judging/protocol.py +777 -0
  180. exp/optimize/router/judging/provisional.py +108 -0
  181. exp/optimize/router/judging/review.py +954 -0
  182. exp/optimize/router/judging/selection.py +179 -0
  183. exp/optimize/router/judging/service.py +920 -0
  184. exp/optimize/router/judging/setup_store.py +83 -0
  185. exp/optimize/router/judging/template_bind.py +112 -0
  186. exp/optimize/router/judgment_budget.py +866 -0
  187. exp/optimize/router/spend.py +353 -0
  188. exp/runtime/agents/__init__.py +83 -0
  189. exp/runtime/agents/chat.py +252 -0
  190. exp/runtime/agents/factory.py +145 -0
  191. exp/runtime/agents/interface.py +97 -0
  192. exp/runtime/agents/lifecycle.py +230 -0
  193. exp/runtime/agents/pi.py +841 -0
  194. exp/runtime/environments/__init__.py +49 -0
  195. exp/runtime/environments/harbor.py +562 -0
  196. exp/runtime/environments/interface.py +54 -0
  197. exp/runtime/environments/local.py +998 -0
  198. exp/runtime/environments/local_exec_gate.py +27 -0
  199. exp/runtime/environments/sandbox_ledger.py +272 -0
  200. exp/runtime/gateway/__init__.py +203 -0
  201. exp/runtime/gateway/aggregation.py +49 -0
  202. exp/runtime/gateway/auth.py +241 -0
  203. exp/runtime/gateway/budgets.py +664 -0
  204. exp/runtime/gateway/catalog_authority.py +446 -0
  205. exp/runtime/gateway/composition.py +235 -0
  206. exp/runtime/gateway/contracts.py +341 -0
  207. exp/runtime/gateway/execution.py +891 -0
  208. exp/runtime/gateway/health.py +143 -0
  209. exp/runtime/gateway/interfaces.py +145 -0
  210. exp/runtime/gateway/ledger.py +806 -0
  211. exp/runtime/gateway/lifecycle.py +554 -0
  212. exp/runtime/gateway/management.py +791 -0
  213. exp/runtime/gateway/platform.py +846 -0
  214. exp/runtime/gateway/project_activation.py +310 -0
  215. exp/runtime/gateway/project_alias.py +168 -0
  216. exp/runtime/gateway/provider_certification.py +277 -0
  217. exp/runtime/gateway/routing.py +342 -0
  218. exp/runtime/gateway/secrets.py +45 -0
  219. exp/runtime/gateway/service.py +911 -0
  220. exp/runtime/gateway/sqlite/__init__.py +5 -0
  221. exp/runtime/gateway/sqlite/alias_activation.py +166 -0
  222. exp/runtime/gateway/sqlite/key_delivery.py +158 -0
  223. exp/runtime/gateway/sqlite/migrations.py +694 -0
  224. exp/runtime/gateway/sqlite/platform.py +988 -0
  225. exp/runtime/gateway/sqlite/platform_records.py +224 -0
  226. exp/runtime/gateway/sqlite/provider_authority.py +327 -0
  227. exp/runtime/gateway/sqlite/provider_store.py +161 -0
  228. exp/runtime/gateway/sqlite/store.py +975 -0
  229. exp/runtime/gateway/usage.py +175 -0
  230. exp/runtime/models/__init__.py +18 -0
  231. exp/runtime/models/credentials.py +42 -0
  232. exp/runtime/models/preflight.py +83 -0
  233. exp/runtime/models/providers/__init__.py +72 -0
  234. exp/runtime/models/providers/anthropic.py +308 -0
  235. exp/runtime/models/providers/async_transport.py +674 -0
  236. exp/runtime/models/providers/azure.py +179 -0
  237. exp/runtime/models/providers/base.py +304 -0
  238. exp/runtime/models/providers/bedrock.py +737 -0
  239. exp/runtime/models/providers/bedrock_streaming.py +461 -0
  240. exp/runtime/models/providers/errors.py +249 -0
  241. exp/runtime/models/providers/gemini.py +354 -0
  242. exp/runtime/models/providers/gemini_streaming.py +241 -0
  243. exp/runtime/models/providers/listing.py +323 -0
  244. exp/runtime/models/providers/openai.py +364 -0
  245. exp/runtime/models/providers/openai_compatible.py +395 -0
  246. exp/runtime/models/providers/protocol.py +221 -0
  247. exp/runtime/models/providers/stream_attempts.py +128 -0
  248. exp/runtime/models/providers/streaming.py +970 -0
  249. exp/runtime/models/providers/streaming_requests.py +310 -0
  250. exp/runtime/models/providers/streaming_usage.py +85 -0
  251. exp/runtime/models/providers/tinker_sampling.py +334 -0
  252. exp/runtime/models/providers/transport.py +434 -0
  253. exp/runtime/models/registry.py +415 -0
  254. exp/runtime/openai_protocol/__init__.py +21 -0
  255. exp/runtime/openai_protocol/errors.py +166 -0
  256. exp/runtime/openai_protocol/headers.py +127 -0
  257. exp/runtime/openai_protocol/manifest.py +147 -0
  258. exp/runtime/openai_protocol/model_adapter.py +137 -0
  259. exp/runtime/openai_protocol/requests.py +559 -0
  260. exp/runtime/openai_protocol/response.py +191 -0
  261. exp/runtime/openai_protocol/state.py +533 -0
  262. exp/runtime/openai_protocol/streaming.py +727 -0
  263. exp/runtime/router/__init__.py +123 -0
  264. exp/runtime/router/application.py +170 -0
  265. exp/runtime/router/capability.py +219 -0
  266. exp/runtime/router/completion.py +149 -0
  267. exp/runtime/router/economics.py +217 -0
  268. exp/runtime/router/errors.py +5 -0
  269. exp/runtime/router/journal.py +977 -0
  270. exp/runtime/router/journal_handoff.py +47 -0
  271. exp/runtime/router/journal_io.py +77 -0
  272. exp/runtime/router/journal_service.py +379 -0
  273. exp/runtime/router/journal_spend.py +350 -0
  274. exp/runtime/router/journal_validation.py +417 -0
  275. exp/runtime/router/runtime.py +926 -0
  276. exp/runtime/router/runtime_selection.py +133 -0
  277. exp/runtime/router/runtime_support.py +453 -0
  278. exp/runtime/router/snapshot.py +889 -0
  279. exp/simulation/__init__.py +39 -0
  280. exp/simulation/build.py +670 -0
  281. exp/simulation/comparison.py +782 -0
  282. exp/simulation/engines/__init__.py +11 -0
  283. exp/simulation/engines/clock.py +32 -0
  284. exp/simulation/engines/sandbox.py +916 -0
  285. exp/simulation/engines/sandbox_bindings.py +243 -0
  286. exp/simulation/engines/sandbox_recording.py +748 -0
  287. exp/simulation/engines/text/__init__.py +29 -0
  288. exp/simulation/engines/text/artifact_set.py +119 -0
  289. exp/simulation/engines/text/bindings.py +260 -0
  290. exp/simulation/engines/text/cell_progress.py +54 -0
  291. exp/simulation/engines/text/environment.py +66 -0
  292. exp/simulation/engines/text/episode_loop.py +111 -0
  293. exp/simulation/engines/text/errors.py +13 -0
  294. exp/simulation/engines/text/grounded_rollout.py +141 -0
  295. exp/simulation/engines/text/grounding.py +336 -0
  296. exp/simulation/engines/text/leases.py +701 -0
  297. exp/simulation/engines/text/prompt.py +172 -0
  298. exp/simulation/engines/text/recording.py +890 -0
  299. exp/simulation/engines/text/redaction.py +261 -0
  300. exp/simulation/engines/text/resume.py +229 -0
  301. exp/simulation/engines/text/rollout_support.py +170 -0
  302. exp/simulation/engines/text/simulator.py +977 -0
  303. exp/simulation/engines/text/spec_persistence.py +60 -0
  304. exp/simulation/ingest/__init__.py +64 -0
  305. exp/simulation/ingest/braintrust.py +260 -0
  306. exp/simulation/ingest/chat_json.py +318 -0
  307. exp/simulation/ingest/dataset.py +376 -0
  308. exp/simulation/ingest/environment_capture.py +415 -0
  309. exp/simulation/ingest/json_strict.py +31 -0
  310. exp/simulation/ingest/langfuse.py +355 -0
  311. exp/simulation/ingest/langsmith.py +233 -0
  312. exp/simulation/ingest/mastra.py +237 -0
  313. exp/simulation/ingest/model_identity.py +279 -0
  314. exp/simulation/ingest/otel_genai.py +297 -0
  315. exp/simulation/ingest/otlp.py +740 -0
  316. exp/simulation/ingest/phoenix.py +574 -0
  317. exp/simulation/ingest/posthog.py +16 -0
  318. exp/simulation/ingest/posthog_canonical.py +620 -0
  319. exp/simulation/ingest/posthog_pull.py +214 -0
  320. exp/simulation/ingest/sources.py +98 -0
  321. exp/simulation/ingest/testdata/sample_otlp.json +60 -0
  322. exp/simulation/ingest/testdata/sample_spans.jsonl +3 -0
  323. exp/simulation/ingest/trace_extensions.py +355 -0
  324. exp/simulation/ingest/vendor_observations.py +390 -0
  325. exp/simulation/ingest/vendor_records.py +434 -0
  326. exp/simulation/ingest/vendor_source.py +155 -0
  327. exp/simulation/ingest/vendor_trace.py +669 -0
  328. exp/simulation/mining/__init__.py +1 -0
  329. exp/simulation/mining/bindings.py +411 -0
  330. exp/simulation/mining/cleanup.py +323 -0
  331. exp/simulation/mining/coverage.py +359 -0
  332. exp/simulation/mining/deduplicate.py +500 -0
  333. exp/simulation/mining/descriptors.py +315 -0
  334. exp/simulation/mining/lineage.py +126 -0
  335. exp/simulation/mining/select.py +490 -0
  336. exp/simulation/mining/service.py +385 -0
  337. exp/simulation/orchestration/__init__.py +9 -0
  338. exp/simulation/orchestration/interface.py +45 -0
  339. exp/simulation/retrieval/__init__.py +119 -0
  340. exp/simulation/retrieval/build.py +265 -0
  341. exp/simulation/retrieval/build_inputs.py +62 -0
  342. exp/simulation/retrieval/contracts.py +254 -0
  343. exp/simulation/retrieval/embedding.py +130 -0
  344. exp/simulation/retrieval/refresh.py +794 -0
  345. exp/simulation/retrieval/refresh_dataset.py +211 -0
  346. exp/simulation/retrieval/retriever.py +177 -0
  347. exp/simulation/retrieval/runtime_stitching.py +399 -0
  348. exp/simulation/retrieval/store.py +212 -0
  349. exp/simulation/retrieval/transitions.py +305 -0
  350. exp/simulation/specs/__init__.py +27 -0
  351. exp/simulation/specs/completion.py +221 -0
  352. exp/simulation/specs/simulation.py +145 -0
  353. exp/simulation/world_model/__init__.py +91 -0
  354. exp/simulation/world_model/application.py +475 -0
  355. exp/simulation/world_model/artifact.py +193 -0
  356. exp/simulation/world_model/runtime.py +400 -0
  357. experiential-0.4.0.dist-info/METADATA +132 -0
  358. experiential-0.4.0.dist-info/RECORD +360 -0
  359. experiential-0.4.0.dist-info/WHEEL +4 -0
  360. experiential-0.4.0.dist-info/entry_points.txt +2 -0
exp/__init__.py ADDED
@@ -0,0 +1,262 @@
1
+ """Experiential public customer services with lazy package-root exports."""
2
+
3
+ from __future__ import annotations
4
+
5
+ from importlib import import_module
6
+ from typing import TYPE_CHECKING
7
+
8
+ if TYPE_CHECKING:
9
+ from exp.common.evaluations import FidelityReport as FidelityReport
10
+ from exp.common.evaluations import (
11
+ build_fidelity_evaluation_plan as build_fidelity_evaluation_plan,
12
+ )
13
+ from exp.common.evaluations import build_fidelity_report as build_fidelity_report
14
+ from exp.common.models import BillingSource as BillingSource
15
+ from exp.common.models import ConnectionConfig as ConnectionConfig
16
+ from exp.common.models import DiscoveredModel as DiscoveredModel
17
+ from exp.common.models import ModelCapabilities as ModelCapabilities
18
+ from exp.common.models import ModelCatalog as ModelCatalog
19
+ from exp.common.models import ModelRecord as ModelRecord
20
+ from exp.common.models import ModelRoles as ModelRoles
21
+ from exp.common.models import ResolvedDiscoveredModel as ResolvedDiscoveredModel
22
+ from exp.common.models import resolve_discovered_model as resolve_discovered_model
23
+ from exp.common.project import ExportedProjectBundle as ExportedProjectBundle
24
+ from exp.common.project import ProjectBudgetConfiguration as ProjectBudgetConfiguration
25
+ from exp.common.project import ProjectModelConfiguration as ProjectModelConfiguration
26
+ from exp.common.project import ProjectProviderFreeStage as ProjectProviderFreeStage
27
+ from exp.common.project import ProjectRetrievalConfiguration as ProjectRetrievalConfiguration
28
+ from exp.common.project import ProjectStage as ProjectStage
29
+ from exp.common.project import ProjectStageEvent as ProjectStageEvent
30
+ from exp.common.project import ProjectStore as ProjectStore
31
+ from exp.common.project import ProjectSystemConfiguration as ProjectSystemConfiguration
32
+ from exp.common.project import (
33
+ ProjectTracePreparationSettings as ProjectTracePreparationSettings,
34
+ )
35
+ from exp.common.project import export_project_bundle as export_project_bundle
36
+ from exp.common.project import restore_project_bundle as restore_project_bundle
37
+ from exp.optimize.router.activation import load_project_router as load_project_router
38
+ from exp.optimize.router.activation import load_router as load_router
39
+ from exp.optimize.router.attempt_authority import (
40
+ FileHostedAttemptAuthorityStore as FileHostedAttemptAuthorityStore,
41
+ )
42
+ from exp.optimize.router.attempt_authority import (
43
+ HostedAttemptAuthority as HostedAttemptAuthority,
44
+ )
45
+ from exp.optimize.router.attempt_authority import (
46
+ HostedAttemptAuthorityStore as HostedAttemptAuthorityStore,
47
+ )
48
+ from exp.optimize.router.attempt_authority import HostedAttemptState as HostedAttemptState
49
+ from exp.optimize.router.attempt_authority import HostedProviderHazard as HostedProviderHazard
50
+ from exp.optimize.router.attempt_authority import HostedStageCommit as HostedStageCommit
51
+ from exp.optimize.router.attempt_authority import (
52
+ create_hosted_attempt_authority as create_hosted_attempt_authority,
53
+ )
54
+ from exp.optimize.router.composition import (
55
+ ApprovedRouterReview as ApprovedRouterReview,
56
+ )
57
+ from exp.optimize.router.composition import (
58
+ RouterCompositionBudget as RouterCompositionBudget,
59
+ )
60
+ from exp.optimize.router.composition import (
61
+ RouterCompositionResult as RouterCompositionResult,
62
+ )
63
+ from exp.optimize.router.composition import (
64
+ RouterEvaluationSetup as RouterEvaluationSetup,
65
+ )
66
+ from exp.optimize.router.composition import RouterWorkflowServices as RouterWorkflowServices
67
+ from exp.optimize.router.composition import compose_router as compose_router
68
+ from exp.optimize.router.fit.workflow import EvaluationInputs as EvaluationInputs
69
+ from exp.optimize.router.fit.workflow import RouterFitConfig as RouterFitConfig
70
+ from exp.optimize.router.fit.workflow import (
71
+ RouterFitWorkflowResult as RouterFitWorkflowResult,
72
+ )
73
+ from exp.optimize.router.fit.workflow import (
74
+ RouterOptimizationConfig as RouterOptimizationConfig,
75
+ )
76
+ from exp.optimize.router.fit.workflow import RouterReportConfig as RouterReportConfig
77
+ from exp.optimize.router.fit.workflow import RouterWorkflowResult as RouterWorkflowResult
78
+ from exp.optimize.router.fit.workflow import fit_router as fit_router
79
+ from exp.optimize.router.fit.workflow import optimize_router as optimize_router
80
+ from exp.optimize.router.fit.workflow import report_router as report_router
81
+ from exp.optimize.router.hosted import HostedRouterWorkflowError as HostedRouterWorkflowError
82
+ from exp.optimize.router.hosted import (
83
+ HostedRouterWorkflowOptions as HostedRouterWorkflowOptions,
84
+ )
85
+ from exp.optimize.router.hosted import HostedRouterWorkflowResult as HostedRouterWorkflowResult
86
+ from exp.optimize.router.hosted import HostedRouterWorkflowSetup as HostedRouterWorkflowSetup
87
+ from exp.optimize.router.hosted import HostedStageBundle as HostedStageBundle
88
+ from exp.optimize.router.hosted import (
89
+ restore_hosted_project_bundle as restore_hosted_project_bundle,
90
+ )
91
+ from exp.optimize.router.hosted import run_hosted_router_workflow as run_hosted_router_workflow
92
+ from exp.optimize.router.hosted_preflight import (
93
+ HostedRouterPreflightError as HostedRouterPreflightError,
94
+ )
95
+ from exp.optimize.router.spend import ProviderSpendComponent as ProviderSpendComponent
96
+ from exp.optimize.router.spend import ProviderSpendEntry as ProviderSpendEntry
97
+ from exp.optimize.router.spend import ProviderSpendLedger as ProviderSpendLedger
98
+ from exp.optimize.router.spend import ProviderSpendStatus as ProviderSpendStatus
99
+ from exp.runtime.gateway.composition import GatewayRuntime as GatewayRuntime
100
+ from exp.runtime.gateway.composition import GatewayRuntimeConfig as GatewayRuntimeConfig
101
+ from exp.runtime.gateway.composition import create_gateway_runtime as create_gateway_runtime
102
+ from exp.runtime.models import RuntimeModelCatalog as RuntimeModelCatalog
103
+ from exp.runtime.router.economics import (
104
+ BillingSourceEconomics as BillingSourceEconomics,
105
+ )
106
+ from exp.runtime.router.economics import (
107
+ RoutedCompletionEconomics as RoutedCompletionEconomics,
108
+ )
109
+ from exp.runtime.router.economics import (
110
+ RoutedProviderComponent as RoutedProviderComponent,
111
+ )
112
+ from exp.runtime.router.economics import (
113
+ RoutedProviderOperation as RoutedProviderOperation,
114
+ )
115
+ from exp.runtime.router.economics import (
116
+ RoutedSpendDisposition as RoutedSpendDisposition,
117
+ )
118
+ from exp.runtime.router.economics import RoutedSpendLedger as RoutedSpendLedger
119
+ from exp.runtime.router.runtime import RoutedModelResponse as RoutedModelResponse
120
+ from exp.runtime.router.runtime import RouterRuntime as RouterRuntime
121
+ from exp.simulation.build import BuildReviewReadiness as BuildReviewReadiness
122
+ from exp.simulation.build import ProjectBuild as ProjectBuild
123
+ from exp.simulation.build import TaskSetBuild as TaskSetBuild
124
+ from exp.simulation.build import build_project as build_project
125
+ from exp.simulation.build import build_task_set as build_task_set
126
+ from exp.simulation.build import (
127
+ load_project_provider_free_stage as load_project_provider_free_stage,
128
+ )
129
+ from exp.simulation.build import prepare_project_traces as prepare_project_traces
130
+ from exp.simulation.world_model.application import WorldModel as WorldModel
131
+ from exp.simulation.world_model.application import (
132
+ WorldModelLoadError as WorldModelLoadError,
133
+ )
134
+ from exp.simulation.world_model.application import (
135
+ WorldModelObservation as WorldModelObservation,
136
+ )
137
+ from exp.simulation.world_model.application import (
138
+ WorldModelSession as WorldModelSession,
139
+ )
140
+ from exp.simulation.world_model.application import (
141
+ WorldModelSessionError as WorldModelSessionError,
142
+ )
143
+ from exp.simulation.world_model.application import (
144
+ WorldModelSessionLimits as WorldModelSessionLimits,
145
+ )
146
+ from exp.simulation.world_model.application import load_world_model as load_world_model
147
+
148
+ _EXPORT_MODULES = {
149
+ "BillingSource": "exp.common.models",
150
+ "ConnectionConfig": "exp.common.models",
151
+ "DiscoveredModel": "exp.common.models",
152
+ "ModelCapabilities": "exp.common.models",
153
+ "ModelCatalog": "exp.common.models",
154
+ "ModelRecord": "exp.common.models",
155
+ "ModelRoles": "exp.common.models",
156
+ "ResolvedDiscoveredModel": "exp.common.models",
157
+ "resolve_discovered_model": "exp.common.models",
158
+ "RuntimeModelCatalog": "exp.runtime.models",
159
+ "GatewayRuntime": "exp.runtime.gateway.composition",
160
+ "GatewayRuntimeConfig": "exp.runtime.gateway.composition",
161
+ "create_gateway_runtime": "exp.runtime.gateway.composition",
162
+ "ExportedProjectBundle": "exp.common.project",
163
+ "export_project_bundle": "exp.common.project",
164
+ "restore_project_bundle": "exp.common.project",
165
+ "ProjectProviderFreeStage": "exp.common.project",
166
+ "ProjectBudgetConfiguration": "exp.common.project",
167
+ "ProjectModelConfiguration": "exp.common.project",
168
+ "ProjectRetrievalConfiguration": "exp.common.project",
169
+ "ProjectStage": "exp.common.project",
170
+ "ProjectStageEvent": "exp.common.project",
171
+ "ProjectStore": "exp.common.project",
172
+ "ProjectSystemConfiguration": "exp.common.project",
173
+ "ProjectTracePreparationSettings": "exp.common.project",
174
+ "BuildReviewReadiness": "exp.simulation.build",
175
+ "ProjectBuild": "exp.simulation.build",
176
+ "TaskSetBuild": "exp.simulation.build",
177
+ "build_project": "exp.simulation.build",
178
+ "build_task_set": "exp.simulation.build",
179
+ "load_project_provider_free_stage": "exp.simulation.build",
180
+ "prepare_project_traces": "exp.simulation.build",
181
+ "WorldModel": "exp.simulation.world_model.application",
182
+ "WorldModelLoadError": "exp.simulation.world_model.application",
183
+ "WorldModelObservation": "exp.simulation.world_model.application",
184
+ "WorldModelSession": "exp.simulation.world_model.application",
185
+ "WorldModelSessionError": "exp.simulation.world_model.application",
186
+ "WorldModelSessionLimits": "exp.simulation.world_model.application",
187
+ "load_world_model": "exp.simulation.world_model.application",
188
+ "FidelityReport": "exp.common.evaluations",
189
+ "build_fidelity_evaluation_plan": "exp.common.evaluations",
190
+ "build_fidelity_report": "exp.common.evaluations",
191
+ "EvaluationInputs": "exp.optimize.router.fit.workflow",
192
+ "RouterFitConfig": "exp.optimize.router.fit.workflow",
193
+ "RouterFitWorkflowResult": "exp.optimize.router.fit.workflow",
194
+ "RouterOptimizationConfig": "exp.optimize.router.fit.workflow",
195
+ "RouterReportConfig": "exp.optimize.router.fit.workflow",
196
+ "RouterWorkflowResult": "exp.optimize.router.fit.workflow",
197
+ "fit_router": "exp.optimize.router.fit.workflow",
198
+ "optimize_router": "exp.optimize.router.fit.workflow",
199
+ "report_router": "exp.optimize.router.fit.workflow",
200
+ "RouterRuntime": "exp.runtime.router.runtime",
201
+ "load_project_router": "exp.optimize.router.activation",
202
+ "load_router": "exp.optimize.router.activation",
203
+ "ApprovedRouterReview": "exp.optimize.router.composition",
204
+ "RouterCompositionBudget": "exp.optimize.router.composition",
205
+ "RouterCompositionResult": "exp.optimize.router.composition",
206
+ "RouterEvaluationSetup": "exp.optimize.router.composition",
207
+ "RouterWorkflowServices": "exp.optimize.router.composition",
208
+ "compose_router": "exp.optimize.router.composition",
209
+ "HostedRouterWorkflowError": "exp.optimize.router.hosted",
210
+ "HostedRouterWorkflowOptions": "exp.optimize.router.hosted",
211
+ "HostedRouterWorkflowResult": "exp.optimize.router.hosted",
212
+ "HostedRouterWorkflowSetup": "exp.optimize.router.hosted",
213
+ "HostedStageBundle": "exp.optimize.router.hosted",
214
+ "restore_hosted_project_bundle": "exp.optimize.router.hosted",
215
+ "run_hosted_router_workflow": "exp.optimize.router.hosted",
216
+ "FileHostedAttemptAuthorityStore": "exp.optimize.router.attempt_authority",
217
+ "HostedAttemptAuthority": "exp.optimize.router.attempt_authority",
218
+ "HostedAttemptAuthorityStore": "exp.optimize.router.attempt_authority",
219
+ "HostedAttemptState": "exp.optimize.router.attempt_authority",
220
+ "HostedProviderHazard": "exp.optimize.router.attempt_authority",
221
+ "HostedStageCommit": "exp.optimize.router.attempt_authority",
222
+ "create_hosted_attempt_authority": "exp.optimize.router.attempt_authority",
223
+ "HostedRouterPreflightError": "exp.optimize.router.hosted_preflight",
224
+ "ProviderSpendComponent": "exp.optimize.router.spend",
225
+ "ProviderSpendEntry": "exp.optimize.router.spend",
226
+ "ProviderSpendLedger": "exp.optimize.router.spend",
227
+ "ProviderSpendStatus": "exp.optimize.router.spend",
228
+ "BillingSourceEconomics": "exp.runtime.router.economics",
229
+ "RoutedCompletionEconomics": "exp.runtime.router.economics",
230
+ "RoutedProviderComponent": "exp.runtime.router.economics",
231
+ "RoutedProviderOperation": "exp.runtime.router.economics",
232
+ "RoutedSpendDisposition": "exp.runtime.router.economics",
233
+ "RoutedSpendLedger": "exp.runtime.router.economics",
234
+ "RoutedModelResponse": "exp.runtime.router.runtime",
235
+ }
236
+
237
+ __all__ = list(_EXPORT_MODULES)
238
+
239
+
240
+ def __getattr__(name: str) -> object:
241
+ """Resolve one supported package-root service on first access.
242
+
243
+ Args:
244
+ name: Package attribute requested by Python.
245
+
246
+ Returns:
247
+ The supported public object loaded from its owning domain module.
248
+
249
+ Raises:
250
+ AttributeError: The name is not part of the supported public API.
251
+ """
252
+ module_name = _EXPORT_MODULES.get(name)
253
+ if module_name is None:
254
+ raise AttributeError(f"module {__name__!r} has no attribute {name!r}")
255
+ value = getattr(import_module(module_name), name)
256
+ globals()[name] = value
257
+ return value
258
+
259
+
260
+ def __dir__() -> list[str]:
261
+ """Return module globals plus supported lazy exports for introspection."""
262
+ return sorted(set(globals()) | set(__all__))
exp/__main__.py ADDED
@@ -0,0 +1,11 @@
1
+ """`python -m exp`: the same CLI as the `exp` console script.
2
+
3
+ Exists so a subprocess can invoke the CLI through the interpreter that imported this
4
+ package (`sys.executable -m exp ...`) without depending on PATH, which is what a caller
5
+ replaying a pinned command manifest needs.
6
+ """
7
+
8
+ from exp.cli import main
9
+
10
+ if __name__ == "__main__":
11
+ main()
exp/cli/__init__.py ADDED
@@ -0,0 +1,5 @@
1
+ """The `exp` command-line interface."""
2
+
3
+ from exp.cli.app import app, main
4
+
5
+ __all__ = ["app", "main"]
exp/cli/app.py ADDED
@@ -0,0 +1,50 @@
1
+ """Compose the supported root CLI surface."""
2
+
3
+ from __future__ import annotations
4
+
5
+ import logging
6
+
7
+ import typer
8
+
9
+ from exp.cli.build.app import build
10
+ from exp.cli.config.app import config_app
11
+ from exp.cli.run.app import run
12
+ from exp.cli.shared.defer import add_deferred_typer
13
+ from exp.common.config import load_env_file
14
+
15
+ app = typer.Typer(
16
+ help="Build grounded simulations, optimize model use, and serve routers locally.",
17
+ no_args_is_help=True,
18
+ )
19
+ app.add_typer(config_app, name="config")
20
+ add_deferred_typer(
21
+ app,
22
+ name="optimize",
23
+ module="exp.cli.optimize.app",
24
+ attr="optimize_app",
25
+ help="Optimize supported frozen project artifacts.",
26
+ known_names=("router", "model"),
27
+ )
28
+ app.command("build", help="Build a reusable grounded world model from local trace evidence.")(build)
29
+ app.command("run", help="Run the local gateway, optionally with one project-backed alias.")(run)
30
+
31
+
32
+ def _quiet_http_logs() -> None:
33
+ """Cap noisy per-request loggers at WARNING."""
34
+ for name in ("httpx", "httpcore", "urllib3"):
35
+ logging.getLogger(name).setLevel(logging.WARNING)
36
+
37
+
38
+ def main() -> None:
39
+ """Load local environment settings, quiet HTTP logs, and dispatch the CLI.
40
+
41
+ The explicit entrypoint keeps environment loading out of import time, so library imports
42
+ cannot mutate an operator's process environment.
43
+ """
44
+ load_env_file()
45
+ _quiet_http_logs()
46
+ app()
47
+
48
+
49
+ if __name__ == "__main__":
50
+ main()
@@ -0,0 +1 @@
1
+ """Grounded project build command modules."""