synapse-sdk 1.0.0a96__py3-none-any.whl → 1.0.0b1__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.

Files changed (66) hide show
  1. synapse_sdk/cli/__init__.py +139 -84
  2. synapse_sdk/cli/code_server.py +169 -0
  3. synapse_sdk/cli/config.py +105 -4
  4. synapse_sdk/cli/devtools.py +54 -34
  5. synapse_sdk/clients/base.py +3 -4
  6. synapse_sdk/devtools/server.py +24 -791
  7. synapse_sdk/devtools/streamlit_app/__init__.py +5 -0
  8. synapse_sdk/devtools/streamlit_app/app.py +128 -0
  9. synapse_sdk/devtools/streamlit_app/services/__init__.py +11 -0
  10. synapse_sdk/devtools/streamlit_app/services/job_service.py +233 -0
  11. synapse_sdk/devtools/streamlit_app/services/plugin_service.py +236 -0
  12. synapse_sdk/devtools/streamlit_app/services/serve_service.py +95 -0
  13. synapse_sdk/devtools/streamlit_app/ui/__init__.py +15 -0
  14. synapse_sdk/devtools/streamlit_app/ui/config_tab.py +76 -0
  15. synapse_sdk/devtools/streamlit_app/ui/deployment_tab.py +66 -0
  16. synapse_sdk/devtools/streamlit_app/ui/http_tab.py +125 -0
  17. synapse_sdk/devtools/streamlit_app/ui/jobs_tab.py +573 -0
  18. synapse_sdk/devtools/streamlit_app/ui/serve_tab.py +346 -0
  19. synapse_sdk/devtools/streamlit_app/ui/status_bar.py +118 -0
  20. synapse_sdk/devtools/streamlit_app/utils/__init__.py +40 -0
  21. synapse_sdk/devtools/streamlit_app/utils/json_viewer.py +197 -0
  22. synapse_sdk/devtools/streamlit_app/utils/log_formatter.py +38 -0
  23. synapse_sdk/devtools/streamlit_app/utils/styles.py +241 -0
  24. synapse_sdk/devtools/streamlit_app/utils/ui_components.py +289 -0
  25. synapse_sdk/devtools/streamlit_app.py +10 -0
  26. synapse_sdk/plugins/categories/upload/actions/upload.py +2 -1
  27. synapse_sdk/utils/converters/dm/__init__.py +0 -1
  28. synapse_sdk/utils/converters/pascal/from_dm.py +32 -10
  29. synapse_sdk/utils/storage/providers/file_system.py +15 -13
  30. {synapse_sdk-1.0.0a96.dist-info → synapse_sdk-1.0.0b1.dist-info}/METADATA +4 -6
  31. {synapse_sdk-1.0.0a96.dist-info → synapse_sdk-1.0.0b1.dist-info}/RECORD +35 -46
  32. synapse_sdk/devtools/models.py +0 -55
  33. synapse_sdk/devtools/utils.py +0 -52
  34. synapse_sdk/devtools/web/.gitignore +0 -2
  35. synapse_sdk/devtools/web/README.md +0 -34
  36. synapse_sdk/devtools/web/dist/index.html +0 -17
  37. synapse_sdk/devtools/web/index.html +0 -16
  38. synapse_sdk/devtools/web/jsconfig.json +0 -15
  39. synapse_sdk/devtools/web/package-lock.json +0 -2609
  40. synapse_sdk/devtools/web/package.json +0 -27
  41. synapse_sdk/devtools/web/pnpm-lock.yaml +0 -1055
  42. synapse_sdk/devtools/web/src/App.jsx +0 -14
  43. synapse_sdk/devtools/web/src/App.module.css +0 -33
  44. synapse_sdk/devtools/web/src/assets/favicon.ico +0 -0
  45. synapse_sdk/devtools/web/src/components/Breadcrumbs.jsx +0 -42
  46. synapse_sdk/devtools/web/src/components/Layout.jsx +0 -12
  47. synapse_sdk/devtools/web/src/components/LogViewer.jsx +0 -280
  48. synapse_sdk/devtools/web/src/components/MessageViewer.jsx +0 -150
  49. synapse_sdk/devtools/web/src/components/NavigationSidebar.jsx +0 -128
  50. synapse_sdk/devtools/web/src/components/ServerStatusBar.jsx +0 -245
  51. synapse_sdk/devtools/web/src/components/icons.jsx +0 -325
  52. synapse_sdk/devtools/web/src/index.css +0 -470
  53. synapse_sdk/devtools/web/src/index.jsx +0 -15
  54. synapse_sdk/devtools/web/src/logo.svg +0 -1
  55. synapse_sdk/devtools/web/src/router.jsx +0 -34
  56. synapse_sdk/devtools/web/src/utils/api.js +0 -442
  57. synapse_sdk/devtools/web/src/views/ApplicationDetailView.jsx +0 -241
  58. synapse_sdk/devtools/web/src/views/ApplicationsView.jsx +0 -224
  59. synapse_sdk/devtools/web/src/views/HomeView.jsx +0 -197
  60. synapse_sdk/devtools/web/src/views/JobDetailView.jsx +0 -310
  61. synapse_sdk/devtools/web/src/views/PluginView.jsx +0 -914
  62. synapse_sdk/devtools/web/vite.config.js +0 -13
  63. {synapse_sdk-1.0.0a96.dist-info → synapse_sdk-1.0.0b1.dist-info}/WHEEL +0 -0
  64. {synapse_sdk-1.0.0a96.dist-info → synapse_sdk-1.0.0b1.dist-info}/entry_points.txt +0 -0
  65. {synapse_sdk-1.0.0a96.dist-info → synapse_sdk-1.0.0b1.dist-info}/licenses/LICENSE +0 -0
  66. {synapse_sdk-1.0.0a96.dist-info → synapse_sdk-1.0.0b1.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
- }