sandboxy 0.0.5__tar.gz → 0.0.6__tar.gz

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 (133) hide show
  1. {sandboxy-0.0.5 → sandboxy-0.0.6}/PKG-INFO +1 -1
  2. {sandboxy-0.0.5 → sandboxy-0.0.6}/local-ui/src/App.tsx +2 -0
  3. {sandboxy-0.0.5 → sandboxy-0.0.6}/local-ui/src/pages/DashboardPage.tsx +14 -7
  4. sandboxy-0.0.6/local-ui/src/pages/ScenarioDetailPage.tsx +664 -0
  5. {sandboxy-0.0.5 → sandboxy-0.0.6}/pyproject.toml +1 -1
  6. sandboxy-0.0.6/sandboxy/ui/dist/assets/index-BZFjoK-_.js +377 -0
  7. sandboxy-0.0.6/sandboxy/ui/dist/assets/index-Qf7gGJk_.css +1 -0
  8. {sandboxy-0.0.5 → sandboxy-0.0.6}/sandboxy/ui/dist/index.html +2 -2
  9. sandboxy-0.0.5/sandboxy/ui/dist/assets/index-CLxxjJuD.js +0 -367
  10. sandboxy-0.0.5/sandboxy/ui/dist/assets/index-DBB7ehs6.css +0 -1
  11. {sandboxy-0.0.5 → sandboxy-0.0.6}/.env.example +0 -0
  12. {sandboxy-0.0.5 → sandboxy-0.0.6}/.github/workflows/ci.yml +0 -0
  13. {sandboxy-0.0.5 → sandboxy-0.0.6}/.github/workflows/publish.yml +0 -0
  14. {sandboxy-0.0.5 → sandboxy-0.0.6}/.gitignore +0 -0
  15. {sandboxy-0.0.5 → sandboxy-0.0.6}/CONTRIBUTING.md +0 -0
  16. {sandboxy-0.0.5 → sandboxy-0.0.6}/LICENSE +0 -0
  17. {sandboxy-0.0.5 → sandboxy-0.0.6}/Makefile +0 -0
  18. {sandboxy-0.0.5 → sandboxy-0.0.6}/README.md +0 -0
  19. {sandboxy-0.0.5 → sandboxy-0.0.6}/docs/yaml-tools.md +0 -0
  20. {sandboxy-0.0.5 → sandboxy-0.0.6}/local-ui/index.html +0 -0
  21. {sandboxy-0.0.5 → sandboxy-0.0.6}/local-ui/package-lock.json +0 -0
  22. {sandboxy-0.0.5 → sandboxy-0.0.6}/local-ui/package.json +0 -0
  23. {sandboxy-0.0.5 → sandboxy-0.0.6}/local-ui/postcss.config.js +0 -0
  24. {sandboxy-0.0.5 → sandboxy-0.0.6}/local-ui/src/components/Layout.tsx +0 -0
  25. {sandboxy-0.0.5 → sandboxy-0.0.6}/local-ui/src/components/ModelSelector.tsx +0 -0
  26. {sandboxy-0.0.5 → sandboxy-0.0.6}/local-ui/src/components/ResultDisplay.tsx +0 -0
  27. {sandboxy-0.0.5 → sandboxy-0.0.6}/local-ui/src/hooks/useScenarioBuilder.ts +0 -0
  28. {sandboxy-0.0.5 → sandboxy-0.0.6}/local-ui/src/hooks/useScenarioRun.ts +0 -0
  29. {sandboxy-0.0.5 → sandboxy-0.0.6}/local-ui/src/hooks/useToolBuilder.ts +0 -0
  30. {sandboxy-0.0.5 → sandboxy-0.0.6}/local-ui/src/index.css +0 -0
  31. {sandboxy-0.0.5 → sandboxy-0.0.6}/local-ui/src/lib/api.ts +0 -0
  32. {sandboxy-0.0.5 → sandboxy-0.0.6}/local-ui/src/main.tsx +0 -0
  33. {sandboxy-0.0.5 → sandboxy-0.0.6}/local-ui/src/pages/BuilderPage.tsx +0 -0
  34. {sandboxy-0.0.5 → sandboxy-0.0.6}/local-ui/src/pages/DatasetPage.tsx +0 -0
  35. {sandboxy-0.0.5 → sandboxy-0.0.6}/local-ui/src/pages/ResultsPage.tsx +0 -0
  36. {sandboxy-0.0.5 → sandboxy-0.0.6}/local-ui/src/pages/RunPage.tsx +0 -0
  37. {sandboxy-0.0.5 → sandboxy-0.0.6}/local-ui/src/pages/ToolBuilderPage.tsx +0 -0
  38. {sandboxy-0.0.5 → sandboxy-0.0.6}/local-ui/tailwind.config.js +0 -0
  39. {sandboxy-0.0.5 → sandboxy-0.0.6}/local-ui/tsconfig.json +0 -0
  40. {sandboxy-0.0.5 → sandboxy-0.0.6}/local-ui/tsconfig.node.json +0 -0
  41. {sandboxy-0.0.5 → sandboxy-0.0.6}/local-ui/vite.config.ts +0 -0
  42. {sandboxy-0.0.5 → sandboxy-0.0.6}/sandboxy/__init__.py +0 -0
  43. {sandboxy-0.0.5 → sandboxy-0.0.6}/sandboxy/agents/__init__.py +0 -0
  44. {sandboxy-0.0.5 → sandboxy-0.0.6}/sandboxy/agents/base.py +0 -0
  45. {sandboxy-0.0.5 → sandboxy-0.0.6}/sandboxy/agents/llm_prompt.py +0 -0
  46. {sandboxy-0.0.5 → sandboxy-0.0.6}/sandboxy/agents/loader.py +0 -0
  47. {sandboxy-0.0.5 → sandboxy-0.0.6}/sandboxy/api/__init__.py +0 -0
  48. {sandboxy-0.0.5 → sandboxy-0.0.6}/sandboxy/api/app.py +0 -0
  49. {sandboxy-0.0.5 → sandboxy-0.0.6}/sandboxy/api/routes/__init__.py +0 -0
  50. {sandboxy-0.0.5 → sandboxy-0.0.6}/sandboxy/api/routes/agents.py +0 -0
  51. {sandboxy-0.0.5 → sandboxy-0.0.6}/sandboxy/api/routes/local.py +0 -0
  52. {sandboxy-0.0.5 → sandboxy-0.0.6}/sandboxy/api/routes/providers.py +0 -0
  53. {sandboxy-0.0.5 → sandboxy-0.0.6}/sandboxy/api/routes/tools.py +0 -0
  54. {sandboxy-0.0.5 → sandboxy-0.0.6}/sandboxy/cli/__init__.py +0 -0
  55. {sandboxy-0.0.5 → sandboxy-0.0.6}/sandboxy/cli/main.py +0 -0
  56. {sandboxy-0.0.5 → sandboxy-0.0.6}/sandboxy/cli/type_detector.py +0 -0
  57. {sandboxy-0.0.5 → sandboxy-0.0.6}/sandboxy/config.py +0 -0
  58. {sandboxy-0.0.5 → sandboxy-0.0.6}/sandboxy/core/__init__.py +0 -0
  59. {sandboxy-0.0.5 → sandboxy-0.0.6}/sandboxy/core/async_runner.py +0 -0
  60. {sandboxy-0.0.5 → sandboxy-0.0.6}/sandboxy/core/mdl_parser.py +0 -0
  61. {sandboxy-0.0.5 → sandboxy-0.0.6}/sandboxy/core/runner.py +0 -0
  62. {sandboxy-0.0.5 → sandboxy-0.0.6}/sandboxy/core/safe_eval.py +0 -0
  63. {sandboxy-0.0.5 → sandboxy-0.0.6}/sandboxy/core/state.py +0 -0
  64. {sandboxy-0.0.5 → sandboxy-0.0.6}/sandboxy/datasets/__init__.py +0 -0
  65. {sandboxy-0.0.5 → sandboxy-0.0.6}/sandboxy/datasets/loader.py +0 -0
  66. {sandboxy-0.0.5 → sandboxy-0.0.6}/sandboxy/datasets/runner.py +0 -0
  67. {sandboxy-0.0.5 → sandboxy-0.0.6}/sandboxy/errors.py +0 -0
  68. {sandboxy-0.0.5 → sandboxy-0.0.6}/sandboxy/local/context.py +0 -0
  69. {sandboxy-0.0.5 → sandboxy-0.0.6}/sandboxy/local/results.py +0 -0
  70. {sandboxy-0.0.5 → sandboxy-0.0.6}/sandboxy/logging.py +0 -0
  71. {sandboxy-0.0.5 → sandboxy-0.0.6}/sandboxy/mcp/__init__.py +0 -0
  72. {sandboxy-0.0.5 → sandboxy-0.0.6}/sandboxy/mcp/client.py +0 -0
  73. {sandboxy-0.0.5 → sandboxy-0.0.6}/sandboxy/mcp/wrapper.py +0 -0
  74. {sandboxy-0.0.5 → sandboxy-0.0.6}/sandboxy/mlflow/__init__.py +0 -0
  75. {sandboxy-0.0.5 → sandboxy-0.0.6}/sandboxy/mlflow/artifacts.py +0 -0
  76. {sandboxy-0.0.5 → sandboxy-0.0.6}/sandboxy/mlflow/config.py +0 -0
  77. {sandboxy-0.0.5 → sandboxy-0.0.6}/sandboxy/mlflow/exporter.py +0 -0
  78. {sandboxy-0.0.5 → sandboxy-0.0.6}/sandboxy/mlflow/metrics.py +0 -0
  79. {sandboxy-0.0.5 → sandboxy-0.0.6}/sandboxy/mlflow/tags.py +0 -0
  80. {sandboxy-0.0.5 → sandboxy-0.0.6}/sandboxy/mlflow/tracing.py +0 -0
  81. {sandboxy-0.0.5 → sandboxy-0.0.6}/sandboxy/providers/__init__.py +0 -0
  82. {sandboxy-0.0.5 → sandboxy-0.0.6}/sandboxy/providers/anthropic_provider.py +0 -0
  83. {sandboxy-0.0.5 → sandboxy-0.0.6}/sandboxy/providers/base.py +0 -0
  84. {sandboxy-0.0.5 → sandboxy-0.0.6}/sandboxy/providers/config.py +0 -0
  85. {sandboxy-0.0.5 → sandboxy-0.0.6}/sandboxy/providers/http_client.py +0 -0
  86. {sandboxy-0.0.5 → sandboxy-0.0.6}/sandboxy/providers/local.py +0 -0
  87. {sandboxy-0.0.5 → sandboxy-0.0.6}/sandboxy/providers/openai_provider.py +0 -0
  88. {sandboxy-0.0.5 → sandboxy-0.0.6}/sandboxy/providers/openrouter.py +0 -0
  89. {sandboxy-0.0.5 → sandboxy-0.0.6}/sandboxy/providers/registry.py +0 -0
  90. {sandboxy-0.0.5 → sandboxy-0.0.6}/sandboxy/scenarios/__init__.py +0 -0
  91. {sandboxy-0.0.5 → sandboxy-0.0.6}/sandboxy/scenarios/comparison.py +0 -0
  92. {sandboxy-0.0.5 → sandboxy-0.0.6}/sandboxy/scenarios/loader.py +0 -0
  93. {sandboxy-0.0.5 → sandboxy-0.0.6}/sandboxy/scenarios/runner.py +0 -0
  94. {sandboxy-0.0.5 → sandboxy-0.0.6}/sandboxy/scenarios/unified.py +0 -0
  95. {sandboxy-0.0.5 → sandboxy-0.0.6}/sandboxy/session/__init__.py +0 -0
  96. {sandboxy-0.0.5 → sandboxy-0.0.6}/sandboxy/session/manager.py +0 -0
  97. {sandboxy-0.0.5 → sandboxy-0.0.6}/sandboxy/tools/__init__.py +0 -0
  98. {sandboxy-0.0.5 → sandboxy-0.0.6}/sandboxy/tools/base.py +0 -0
  99. {sandboxy-0.0.5 → sandboxy-0.0.6}/sandboxy/tools/loader.py +0 -0
  100. {sandboxy-0.0.5 → sandboxy-0.0.6}/sandboxy/tools/yaml_tools.py +0 -0
  101. {sandboxy-0.0.5 → sandboxy-0.0.6}/sandboxy/ui/__init__.py +0 -0
  102. {sandboxy-0.0.5 → sandboxy-0.0.6}/sandboxy/utils/__init__.py +0 -0
  103. {sandboxy-0.0.5 → sandboxy-0.0.6}/sandboxy/utils/time.py +0 -0
  104. {sandboxy-0.0.5 → sandboxy-0.0.6}/scenarios/customer_service.yml +0 -0
  105. {sandboxy-0.0.5 → sandboxy-0.0.6}/tests/__init__.py +0 -0
  106. {sandboxy-0.0.5 → sandboxy-0.0.6}/tests/conftest.py +0 -0
  107. {sandboxy-0.0.5 → sandboxy-0.0.6}/tests/factories.py +0 -0
  108. {sandboxy-0.0.5 → sandboxy-0.0.6}/tests/integration/__init__.py +0 -0
  109. {sandboxy-0.0.5 → sandboxy-0.0.6}/tests/integration/api/__init__.py +0 -0
  110. {sandboxy-0.0.5 → sandboxy-0.0.6}/tests/integration/test_mlflow_integration.py +0 -0
  111. {sandboxy-0.0.5 → sandboxy-0.0.6}/tests/mocks/__init__.py +0 -0
  112. {sandboxy-0.0.5 → sandboxy-0.0.6}/tests/mocks/providers.py +0 -0
  113. {sandboxy-0.0.5 → sandboxy-0.0.6}/tests/unit/__init__.py +0 -0
  114. {sandboxy-0.0.5 → sandboxy-0.0.6}/tests/unit/agents/__init__.py +0 -0
  115. {sandboxy-0.0.5 → sandboxy-0.0.6}/tests/unit/agents/test_base.py +0 -0
  116. {sandboxy-0.0.5 → sandboxy-0.0.6}/tests/unit/agents/test_llm_prompt.py +0 -0
  117. {sandboxy-0.0.5 → sandboxy-0.0.6}/tests/unit/agents/test_loader.py +0 -0
  118. {sandboxy-0.0.5 → sandboxy-0.0.6}/tests/unit/core/__init__.py +0 -0
  119. {sandboxy-0.0.5 → sandboxy-0.0.6}/tests/unit/core/test_async_runner.py +0 -0
  120. {sandboxy-0.0.5 → sandboxy-0.0.6}/tests/unit/core/test_mdl_parser.py +0 -0
  121. {sandboxy-0.0.5 → sandboxy-0.0.6}/tests/unit/core/test_runner.py +0 -0
  122. {sandboxy-0.0.5 → sandboxy-0.0.6}/tests/unit/core/test_safe_eval.py +0 -0
  123. {sandboxy-0.0.5 → sandboxy-0.0.6}/tests/unit/core/test_state.py +0 -0
  124. {sandboxy-0.0.5 → sandboxy-0.0.6}/tests/unit/mlflow/__init__.py +0 -0
  125. {sandboxy-0.0.5 → sandboxy-0.0.6}/tests/unit/mlflow/test_artifacts.py +0 -0
  126. {sandboxy-0.0.5 → sandboxy-0.0.6}/tests/unit/mlflow/test_config.py +0 -0
  127. {sandboxy-0.0.5 → sandboxy-0.0.6}/tests/unit/mlflow/test_metrics.py +0 -0
  128. {sandboxy-0.0.5 → sandboxy-0.0.6}/tests/unit/mlflow/test_tags.py +0 -0
  129. {sandboxy-0.0.5 → sandboxy-0.0.6}/tests/unit/providers/test_openrouter.py +0 -0
  130. {sandboxy-0.0.5 → sandboxy-0.0.6}/tests/unit/tools/__init__.py +0 -0
  131. {sandboxy-0.0.5 → sandboxy-0.0.6}/tests/unit/tools/test_base.py +0 -0
  132. {sandboxy-0.0.5 → sandboxy-0.0.6}/tests/unit/tools/test_loader.py +0 -0
  133. {sandboxy-0.0.5 → sandboxy-0.0.6}/uv.lock +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: sandboxy
3
- Version: 0.0.5
3
+ Version: 0.0.6
4
4
  Summary: Open-source agent simulation and benchmarking platform
5
5
  Project-URL: Homepage, https://github.com/sandboxy-ai/sandboxy
6
6
  Project-URL: Repository, https://github.com/sandboxy-ai/sandboxy
@@ -1,6 +1,7 @@
1
1
  import { Routes, Route } from 'react-router-dom'
2
2
  import Layout from './components/Layout'
3
3
  import DashboardPage from './pages/DashboardPage'
4
+ import ScenarioDetailPage from './pages/ScenarioDetailPage'
4
5
  import RunPage from './pages/RunPage'
5
6
  import ResultsPage from './pages/ResultsPage'
6
7
  import BuilderPage from './pages/BuilderPage'
@@ -12,6 +13,7 @@ function App() {
12
13
  <Routes>
13
14
  <Route path="/" element={<Layout />}>
14
15
  <Route index element={<DashboardPage />} />
16
+ <Route path="scenario/:scenarioId" element={<ScenarioDetailPage />} />
15
17
  <Route path="run/:scenarioId" element={<RunPage />} />
16
18
  <Route path="run" element={<RunPage />} />
17
19
  <Route path="results" element={<ResultsPage />} />
@@ -1,6 +1,6 @@
1
1
  import { useEffect, useState } from 'react'
2
2
  import { Link } from 'react-router-dom'
3
- import { Play, FileCode, Wrench, Server, Plus, RefreshCw, Trash2, CheckCircle, XCircle, AlertCircle } from 'lucide-react'
3
+ import { Play, FileCode, Wrench, Server, Plus, RefreshCw, Trash2, CheckCircle, XCircle, AlertCircle, ChevronRight } from 'lucide-react'
4
4
  import { api, ProviderSummary, AddProviderRequest } from '../lib/api'
5
5
 
6
6
  interface LocalFile {
@@ -183,13 +183,20 @@ export default function DashboardPage() {
183
183
  {status.scenarios.map((scenario) => (
184
184
  <div
185
185
  key={scenario.id}
186
- className="panel-card p-4"
186
+ className="panel-card p-4 hover:border-slate-600 transition-colors"
187
187
  >
188
- <h3 className="font-medium text-slate-100 mb-1">{scenario.name}</h3>
189
- <p className="text-sm text-slate-400 mb-3 line-clamp-2">
190
- {scenario.description || 'No description'}
191
- </p>
192
- <div className="flex justify-between items-center">
188
+ <Link to={`/scenario/${scenario.id}`} className="block mb-3">
189
+ <div className="flex items-start justify-between">
190
+ <h3 className="font-medium text-slate-100 mb-1 hover:text-orange-400 transition-colors">
191
+ {scenario.name}
192
+ </h3>
193
+ <ChevronRight size={16} className="text-slate-600 mt-1 flex-shrink-0" />
194
+ </div>
195
+ <p className="text-sm text-slate-400 line-clamp-2">
196
+ {scenario.description || 'No description'}
197
+ </p>
198
+ </Link>
199
+ <div className="flex justify-between items-center pt-2 border-t border-slate-700/40">
193
200
  <span className="text-xs text-slate-500">{scenario.relative_path}</span>
194
201
  <Link
195
202
  to={`/run/${scenario.id}`}