synapse-sdk 1.0.0a98__py3-none-any.whl → 1.0.0b2__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 synapse-sdk might be problematic. Click here for more details.
- synapse_sdk/cli/__init__.py +139 -84
- synapse_sdk/cli/code_server.py +169 -0
- synapse_sdk/cli/config.py +105 -4
- synapse_sdk/cli/devtools.py +54 -34
- synapse_sdk/clients/base.py +3 -4
- synapse_sdk/devtools/server.py +24 -791
- synapse_sdk/devtools/streamlit_app/__init__.py +5 -0
- synapse_sdk/devtools/streamlit_app/app.py +128 -0
- synapse_sdk/devtools/streamlit_app/services/__init__.py +11 -0
- synapse_sdk/devtools/streamlit_app/services/job_service.py +233 -0
- synapse_sdk/devtools/streamlit_app/services/plugin_service.py +236 -0
- synapse_sdk/devtools/streamlit_app/services/serve_service.py +95 -0
- synapse_sdk/devtools/streamlit_app/ui/__init__.py +15 -0
- synapse_sdk/devtools/streamlit_app/ui/config_tab.py +76 -0
- synapse_sdk/devtools/streamlit_app/ui/deployment_tab.py +66 -0
- synapse_sdk/devtools/streamlit_app/ui/http_tab.py +125 -0
- synapse_sdk/devtools/streamlit_app/ui/jobs_tab.py +573 -0
- synapse_sdk/devtools/streamlit_app/ui/serve_tab.py +346 -0
- synapse_sdk/devtools/streamlit_app/ui/status_bar.py +118 -0
- synapse_sdk/devtools/streamlit_app/utils/__init__.py +40 -0
- synapse_sdk/devtools/streamlit_app/utils/json_viewer.py +197 -0
- synapse_sdk/devtools/streamlit_app/utils/log_formatter.py +38 -0
- synapse_sdk/devtools/streamlit_app/utils/styles.py +241 -0
- synapse_sdk/devtools/streamlit_app/utils/ui_components.py +289 -0
- synapse_sdk/devtools/streamlit_app.py +10 -0
- synapse_sdk/plugins/categories/upload/actions/upload.py +2 -1
- synapse_sdk/utils/converters/coco/from_dm.py +2 -2
- synapse_sdk/utils/converters/dm/__init__.py +0 -1
- {synapse_sdk-1.0.0a98.dist-info → synapse_sdk-1.0.0b2.dist-info}/METADATA +4 -6
- {synapse_sdk-1.0.0a98.dist-info → synapse_sdk-1.0.0b2.dist-info}/RECORD +34 -45
- synapse_sdk/devtools/models.py +0 -55
- synapse_sdk/devtools/utils.py +0 -52
- synapse_sdk/devtools/web/.gitignore +0 -2
- synapse_sdk/devtools/web/README.md +0 -34
- synapse_sdk/devtools/web/dist/index.html +0 -17
- synapse_sdk/devtools/web/index.html +0 -16
- synapse_sdk/devtools/web/jsconfig.json +0 -15
- synapse_sdk/devtools/web/package-lock.json +0 -2609
- synapse_sdk/devtools/web/package.json +0 -27
- synapse_sdk/devtools/web/pnpm-lock.yaml +0 -1055
- synapse_sdk/devtools/web/src/App.jsx +0 -14
- synapse_sdk/devtools/web/src/App.module.css +0 -33
- synapse_sdk/devtools/web/src/assets/favicon.ico +0 -0
- synapse_sdk/devtools/web/src/components/Breadcrumbs.jsx +0 -42
- synapse_sdk/devtools/web/src/components/Layout.jsx +0 -12
- synapse_sdk/devtools/web/src/components/LogViewer.jsx +0 -280
- synapse_sdk/devtools/web/src/components/MessageViewer.jsx +0 -150
- synapse_sdk/devtools/web/src/components/NavigationSidebar.jsx +0 -128
- synapse_sdk/devtools/web/src/components/ServerStatusBar.jsx +0 -245
- synapse_sdk/devtools/web/src/components/icons.jsx +0 -325
- synapse_sdk/devtools/web/src/index.css +0 -470
- synapse_sdk/devtools/web/src/index.jsx +0 -15
- synapse_sdk/devtools/web/src/logo.svg +0 -1
- synapse_sdk/devtools/web/src/router.jsx +0 -34
- synapse_sdk/devtools/web/src/utils/api.js +0 -442
- synapse_sdk/devtools/web/src/views/ApplicationDetailView.jsx +0 -241
- synapse_sdk/devtools/web/src/views/ApplicationsView.jsx +0 -224
- synapse_sdk/devtools/web/src/views/HomeView.jsx +0 -197
- synapse_sdk/devtools/web/src/views/JobDetailView.jsx +0 -310
- synapse_sdk/devtools/web/src/views/PluginView.jsx +0 -914
- synapse_sdk/devtools/web/vite.config.js +0 -13
- {synapse_sdk-1.0.0a98.dist-info → synapse_sdk-1.0.0b2.dist-info}/WHEEL +0 -0
- {synapse_sdk-1.0.0a98.dist-info → synapse_sdk-1.0.0b2.dist-info}/entry_points.txt +0 -0
- {synapse_sdk-1.0.0a98.dist-info → synapse_sdk-1.0.0b2.dist-info}/licenses/LICENSE +0 -0
- {synapse_sdk-1.0.0a98.dist-info → synapse_sdk-1.0.0b2.dist-info}/top_level.txt +0 -0
|
@@ -1,310 +0,0 @@
|
|
|
1
|
-
import { Show, createSignal, createMemo, onMount } from "solid-js";
|
|
2
|
-
import { useParams, useNavigate } from "@solidjs/router";
|
|
3
|
-
import { createJobResource, createJobLogsStream, formatTimestamp } from "../utils/api";
|
|
4
|
-
import { ArrowLeftIcon, RefreshIcon, EyeIcon } from "../components/icons";
|
|
5
|
-
import LogViewer from "../components/LogViewer";
|
|
6
|
-
import MessageViewer from "../components/MessageViewer";
|
|
7
|
-
import Breadcrumbs from "../components/Breadcrumbs";
|
|
8
|
-
|
|
9
|
-
export default function JobDetailView() {
|
|
10
|
-
const params = useParams();
|
|
11
|
-
const navigate = useNavigate();
|
|
12
|
-
const [showRuntimeEnvModal, setShowRuntimeEnvModal] = createSignal(false);
|
|
13
|
-
|
|
14
|
-
const submissionId = () => params.id;
|
|
15
|
-
const { data, loading, error, refresh } = createJobResource(() => submissionId());
|
|
16
|
-
|
|
17
|
-
// Computed properties
|
|
18
|
-
const hasRuntimeEnv = createMemo(() =>
|
|
19
|
-
data()?.runtime_env && Object.keys(data().runtime_env).length > 0
|
|
20
|
-
);
|
|
21
|
-
|
|
22
|
-
const hasMessage = createMemo(() =>
|
|
23
|
-
data()?.message && data().message.trim().length > 0
|
|
24
|
-
);
|
|
25
|
-
|
|
26
|
-
const hasDriverInfo = createMemo(() =>
|
|
27
|
-
data()?.driver_info && Object.keys(data().driver_info).length > 0
|
|
28
|
-
);
|
|
29
|
-
|
|
30
|
-
const hasMetadata = createMemo(() =>
|
|
31
|
-
data()?.metadata && Object.keys(data().metadata).length > 0
|
|
32
|
-
);
|
|
33
|
-
|
|
34
|
-
const getStatusBadgeClass = (status) => {
|
|
35
|
-
switch (status?.toUpperCase()) {
|
|
36
|
-
case "SUCCEEDED":
|
|
37
|
-
return "badge-outline badge-success";
|
|
38
|
-
case "FAILED":
|
|
39
|
-
case "CANCELLED":
|
|
40
|
-
return "badge-outline badge-error";
|
|
41
|
-
case "RUNNING":
|
|
42
|
-
return "badge-outline badge-info";
|
|
43
|
-
case "PENDING":
|
|
44
|
-
return "badge-outline badge-warning";
|
|
45
|
-
default:
|
|
46
|
-
return "badge-outline badge-neutral";
|
|
47
|
-
}
|
|
48
|
-
};
|
|
49
|
-
|
|
50
|
-
return (
|
|
51
|
-
<div class="p-6">
|
|
52
|
-
{/* Breadcrumbs */}
|
|
53
|
-
<Breadcrumbs
|
|
54
|
-
items={[
|
|
55
|
-
{ label: "Jobs", path: "/" },
|
|
56
|
-
{ label: data()?.job_id || submissionId() || "Job Details" }
|
|
57
|
-
]}
|
|
58
|
-
/>
|
|
59
|
-
|
|
60
|
-
{/* Header */}
|
|
61
|
-
<div class="flex justify-between items-center mb-6">
|
|
62
|
-
<div class="flex items-center gap-4">
|
|
63
|
-
<button
|
|
64
|
-
class="btn btn-sm btn-outline"
|
|
65
|
-
onClick={() => navigate(-1)}
|
|
66
|
-
>
|
|
67
|
-
<ArrowLeftIcon class="w-4 h-4 mr-2" />
|
|
68
|
-
Back
|
|
69
|
-
</button>
|
|
70
|
-
<div>
|
|
71
|
-
<h1 class="text-2xl font-semibold text-slate-900">Job Details</h1>
|
|
72
|
-
<p class="text-sm text-slate-600">View job execution details and logs</p>
|
|
73
|
-
</div>
|
|
74
|
-
</div>
|
|
75
|
-
{/* Refresh button removed as requested */}
|
|
76
|
-
</div>
|
|
77
|
-
|
|
78
|
-
{/* Error State */}
|
|
79
|
-
<Show when={error()}>
|
|
80
|
-
<div class="alert alert-error mb-6">
|
|
81
|
-
<div>
|
|
82
|
-
<h3 class="font-medium">Failed to load job details</h3>
|
|
83
|
-
<div class="text-sm">{error()}</div>
|
|
84
|
-
</div>
|
|
85
|
-
</div>
|
|
86
|
-
</Show>
|
|
87
|
-
|
|
88
|
-
{/* Loading State */}
|
|
89
|
-
<Show when={loading() && !data()}>
|
|
90
|
-
<div class="flex flex-col items-center justify-center py-12">
|
|
91
|
-
<div class="loading loading-spinner loading-lg mb-4"></div>
|
|
92
|
-
<p class="text-slate-500">Loading job details...</p>
|
|
93
|
-
</div>
|
|
94
|
-
</Show>
|
|
95
|
-
|
|
96
|
-
{/* Job Not Found */}
|
|
97
|
-
<Show when={!loading() && !data() && !error()}>
|
|
98
|
-
<div class="flex flex-col items-center justify-center py-12">
|
|
99
|
-
<div class="text-slate-400 mb-4">
|
|
100
|
-
<svg class="w-16 h-16" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
|
101
|
-
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
|
|
102
|
-
d="M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z" />
|
|
103
|
-
</svg>
|
|
104
|
-
</div>
|
|
105
|
-
<h3 class="text-lg font-medium text-slate-900 mb-2">Job not found</h3>
|
|
106
|
-
<p class="text-slate-500">The requested job could not be found</p>
|
|
107
|
-
</div>
|
|
108
|
-
</Show>
|
|
109
|
-
|
|
110
|
-
{/* Job Details */}
|
|
111
|
-
<Show when={data()}>
|
|
112
|
-
<div class="space-y-6">
|
|
113
|
-
{/* Job Overview */}
|
|
114
|
-
<div class="card bg-white shadow-professional">
|
|
115
|
-
<div class="card-body p-6">
|
|
116
|
-
<h2 class="text-lg font-semibold text-slate-900 mb-4">Overview</h2>
|
|
117
|
-
|
|
118
|
-
<div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4">
|
|
119
|
-
<div class="bg-slate-50 p-4 rounded-lg">
|
|
120
|
-
<div class="text-sm font-medium text-slate-600 uppercase tracking-wide mb-1">
|
|
121
|
-
Submission ID
|
|
122
|
-
</div>
|
|
123
|
-
<div class="font-mono text-sm text-blue-600 font-medium">
|
|
124
|
-
{data().submission_id}
|
|
125
|
-
</div>
|
|
126
|
-
</div>
|
|
127
|
-
|
|
128
|
-
<Show when={data().job_id}>
|
|
129
|
-
<div class="bg-slate-50 p-4 rounded-lg">
|
|
130
|
-
<div class="text-sm font-medium text-slate-600 uppercase tracking-wide mb-1">
|
|
131
|
-
Job ID
|
|
132
|
-
</div>
|
|
133
|
-
<div class="font-mono text-sm text-slate-700">
|
|
134
|
-
{data().job_id}
|
|
135
|
-
</div>
|
|
136
|
-
</div>
|
|
137
|
-
</Show>
|
|
138
|
-
|
|
139
|
-
<div class="bg-slate-50 p-4 rounded-lg">
|
|
140
|
-
<div class="text-sm font-medium text-slate-600 uppercase tracking-wide mb-1">
|
|
141
|
-
Type
|
|
142
|
-
</div>
|
|
143
|
-
<div class="font-mono text-sm text-slate-700">
|
|
144
|
-
{data().type}
|
|
145
|
-
</div>
|
|
146
|
-
</div>
|
|
147
|
-
|
|
148
|
-
<div class="bg-slate-50 p-4 rounded-lg">
|
|
149
|
-
<div class="text-sm font-medium text-slate-600 uppercase tracking-wide mb-1">
|
|
150
|
-
Status
|
|
151
|
-
</div>
|
|
152
|
-
<span class={`badge badge-sm ${getStatusBadgeClass(data().status)}`}>
|
|
153
|
-
{data().status}
|
|
154
|
-
</span>
|
|
155
|
-
</div>
|
|
156
|
-
|
|
157
|
-
<div class="bg-slate-50 p-4 rounded-lg">
|
|
158
|
-
<div class="text-sm font-medium text-slate-600 uppercase tracking-wide mb-1">
|
|
159
|
-
Start Time
|
|
160
|
-
</div>
|
|
161
|
-
<div class="text-sm text-slate-700">
|
|
162
|
-
{formatTimestamp(data().start_time)}
|
|
163
|
-
</div>
|
|
164
|
-
</div>
|
|
165
|
-
|
|
166
|
-
<div class="bg-slate-50 p-4 rounded-lg">
|
|
167
|
-
<div class="text-sm font-medium text-slate-600 uppercase tracking-wide mb-1">
|
|
168
|
-
End Time
|
|
169
|
-
</div>
|
|
170
|
-
<div class="text-sm text-slate-700">
|
|
171
|
-
{formatTimestamp(data().end_time)}
|
|
172
|
-
</div>
|
|
173
|
-
</div>
|
|
174
|
-
|
|
175
|
-
<Show when={hasRuntimeEnv()}>
|
|
176
|
-
<div class="bg-slate-50 p-4 rounded-lg">
|
|
177
|
-
<div class="text-sm font-medium text-slate-600 uppercase tracking-wide mb-1">
|
|
178
|
-
Runtime Environment
|
|
179
|
-
</div>
|
|
180
|
-
<button
|
|
181
|
-
class="btn btn-sm btn-ghost"
|
|
182
|
-
onClick={() => setShowRuntimeEnvModal(true)}
|
|
183
|
-
>
|
|
184
|
-
<EyeIcon class="w-3 h-3 mr-1" />
|
|
185
|
-
View Details
|
|
186
|
-
</button>
|
|
187
|
-
</div>
|
|
188
|
-
</Show>
|
|
189
|
-
</div>
|
|
190
|
-
</div>
|
|
191
|
-
</div>
|
|
192
|
-
|
|
193
|
-
{/* Message/Error Details */}
|
|
194
|
-
<Show when={hasMessage()}>
|
|
195
|
-
<div class="card bg-white shadow-professional">
|
|
196
|
-
<div class="card-body p-6">
|
|
197
|
-
<h2 class="text-lg font-semibold text-slate-900 mb-4">Message</h2>
|
|
198
|
-
<MessageViewer message={data().message} />
|
|
199
|
-
</div>
|
|
200
|
-
</div>
|
|
201
|
-
</Show>
|
|
202
|
-
|
|
203
|
-
{/* Driver Information */}
|
|
204
|
-
<Show when={hasDriverInfo()}>
|
|
205
|
-
<div class="card bg-white shadow-professional">
|
|
206
|
-
<div class="card-body p-6">
|
|
207
|
-
<h2 class="text-lg font-semibold text-slate-900 mb-4">Driver Information</h2>
|
|
208
|
-
|
|
209
|
-
<div class="grid grid-cols-1 md:grid-cols-3 gap-4 mb-6">
|
|
210
|
-
<Show when={data().driver_node_id}>
|
|
211
|
-
<div class="bg-slate-50 p-4 rounded-lg">
|
|
212
|
-
<div class="text-sm font-medium text-slate-600 uppercase tracking-wide mb-1">
|
|
213
|
-
Node ID
|
|
214
|
-
</div>
|
|
215
|
-
<div class="font-mono text-sm text-slate-700">
|
|
216
|
-
{data().driver_node_id}
|
|
217
|
-
</div>
|
|
218
|
-
</div>
|
|
219
|
-
</Show>
|
|
220
|
-
|
|
221
|
-
<Show when={data().driver_agent_http_address}>
|
|
222
|
-
<div class="bg-slate-50 p-4 rounded-lg">
|
|
223
|
-
<div class="text-sm font-medium text-slate-600 uppercase tracking-wide mb-1">
|
|
224
|
-
HTTP Address
|
|
225
|
-
</div>
|
|
226
|
-
<div class="font-mono text-sm text-slate-700">
|
|
227
|
-
{data().driver_agent_http_address}
|
|
228
|
-
</div>
|
|
229
|
-
</div>
|
|
230
|
-
</Show>
|
|
231
|
-
|
|
232
|
-
<Show when={data().driver_exit_code !== null}>
|
|
233
|
-
<div class="bg-slate-50 p-4 rounded-lg">
|
|
234
|
-
<div class="text-sm font-medium text-slate-600 uppercase tracking-wide mb-1">
|
|
235
|
-
Exit Code
|
|
236
|
-
</div>
|
|
237
|
-
<span class={`badge badge-outline badge-sm ${data().driver_exit_code === 0 ? 'badge-success' : 'badge-error'}`}>
|
|
238
|
-
{data().driver_exit_code}
|
|
239
|
-
</span>
|
|
240
|
-
</div>
|
|
241
|
-
</Show>
|
|
242
|
-
</div>
|
|
243
|
-
|
|
244
|
-
<Show when={Object.keys(data().driver_info).length > 0}>
|
|
245
|
-
<div>
|
|
246
|
-
<h3 class="text-sm font-medium text-slate-600 mb-3">Driver Details</h3>
|
|
247
|
-
<div class="bg-slate-50 p-4 rounded-lg">
|
|
248
|
-
<pre class="text-sm text-slate-700 overflow-auto">
|
|
249
|
-
{JSON.stringify(data().driver_info, null, 2)}
|
|
250
|
-
</pre>
|
|
251
|
-
</div>
|
|
252
|
-
</div>
|
|
253
|
-
</Show>
|
|
254
|
-
</div>
|
|
255
|
-
</div>
|
|
256
|
-
</Show>
|
|
257
|
-
|
|
258
|
-
{/* Terminal Output */}
|
|
259
|
-
<LogViewer submissionId={submissionId()} />
|
|
260
|
-
|
|
261
|
-
{/* Metadata */}
|
|
262
|
-
<Show when={hasMetadata()}>
|
|
263
|
-
<div class="card bg-white shadow-professional">
|
|
264
|
-
<div class="card-body p-6">
|
|
265
|
-
<h2 class="text-lg font-semibold text-slate-900 mb-4">Metadata</h2>
|
|
266
|
-
<div class="bg-slate-50 p-4 rounded-lg">
|
|
267
|
-
<pre class="text-sm text-slate-700 overflow-auto">
|
|
268
|
-
{JSON.stringify(data().metadata, null, 2)}
|
|
269
|
-
</pre>
|
|
270
|
-
</div>
|
|
271
|
-
</div>
|
|
272
|
-
</div>
|
|
273
|
-
</Show>
|
|
274
|
-
</div>
|
|
275
|
-
</Show>
|
|
276
|
-
|
|
277
|
-
{/* Runtime Environment Modal */}
|
|
278
|
-
<Show when={showRuntimeEnvModal()}>
|
|
279
|
-
<div class="modal modal-open">
|
|
280
|
-
<div class="modal-box max-w-4xl">
|
|
281
|
-
<div class="flex justify-between items-center mb-4">
|
|
282
|
-
<h3 class="text-lg font-semibold">Runtime Environment</h3>
|
|
283
|
-
<button
|
|
284
|
-
class="btn btn-sm btn-circle btn-ghost"
|
|
285
|
-
onClick={() => setShowRuntimeEnvModal(false)}
|
|
286
|
-
>
|
|
287
|
-
✕
|
|
288
|
-
</button>
|
|
289
|
-
</div>
|
|
290
|
-
|
|
291
|
-
<div class="bg-slate-50 p-4 rounded-lg max-h-96 overflow-auto">
|
|
292
|
-
<pre class="text-sm text-slate-700">
|
|
293
|
-
{JSON.stringify(data()?.runtime_env || {}, null, 2)}
|
|
294
|
-
</pre>
|
|
295
|
-
</div>
|
|
296
|
-
|
|
297
|
-
<div class="modal-action">
|
|
298
|
-
<button
|
|
299
|
-
class="btn btn-sm"
|
|
300
|
-
onClick={() => setShowRuntimeEnvModal(false)}
|
|
301
|
-
>
|
|
302
|
-
Close
|
|
303
|
-
</button>
|
|
304
|
-
</div>
|
|
305
|
-
</div>
|
|
306
|
-
</div>
|
|
307
|
-
</Show>
|
|
308
|
-
</div>
|
|
309
|
-
);
|
|
310
|
-
}
|