@worca/ui 0.10.0 → 0.11.0
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.
- package/app/main.bundle.js +3 -18
- package/app/main.bundle.js.map +2 -2
- package/app/styles.css +6 -1
- package/package.json +1 -1
- package/server/process-manager.js +10 -5
package/app/styles.css
CHANGED
|
@@ -3889,7 +3889,12 @@ sl-details.learnings-panel::part(content) {
|
|
|
3889
3889
|
.run-card-actions {
|
|
3890
3890
|
display: flex;
|
|
3891
3891
|
align-items: center;
|
|
3892
|
-
|
|
3892
|
+
justify-content: flex-end;
|
|
3893
|
+
gap: 8px;
|
|
3894
|
+
padding-left: 26px;
|
|
3895
|
+
}
|
|
3896
|
+
.run-card-actions:empty {
|
|
3897
|
+
display: none;
|
|
3893
3898
|
}
|
|
3894
3899
|
.btn-quick-resume {
|
|
3895
3900
|
display: inline-flex;
|
package/package.json
CHANGED
|
@@ -185,7 +185,8 @@ export class ProcessManager {
|
|
|
185
185
|
if (!status.stop_reason) {
|
|
186
186
|
status.stop_reason = 'stale';
|
|
187
187
|
}
|
|
188
|
-
status.pipeline_status =
|
|
188
|
+
status.pipeline_status =
|
|
189
|
+
status.stop_reason === 'signal' ? 'interrupted' : 'failed';
|
|
189
190
|
try {
|
|
190
191
|
writeFileSync(
|
|
191
192
|
statusPath,
|
|
@@ -197,8 +198,8 @@ export class ProcessManager {
|
|
|
197
198
|
/* ignore */
|
|
198
199
|
}
|
|
199
200
|
|
|
200
|
-
// Append synthetic
|
|
201
|
-
//
|
|
201
|
+
// Append synthetic terminal event if none exists yet.
|
|
202
|
+
// Use pipeline.run.interrupted for signal-killed runs, pipeline.run.failed otherwise.
|
|
202
203
|
const eventsPath = join(this.worcaDir, 'runs', runId, 'events.jsonl');
|
|
203
204
|
let hasTerminalEvent = false;
|
|
204
205
|
if (existsSync(eventsPath)) {
|
|
@@ -219,6 +220,10 @@ export class ProcessManager {
|
|
|
219
220
|
}
|
|
220
221
|
}
|
|
221
222
|
if (!hasTerminalEvent) {
|
|
223
|
+
const eventType =
|
|
224
|
+
status.stop_reason === 'signal'
|
|
225
|
+
? 'pipeline.run.interrupted'
|
|
226
|
+
: 'pipeline.run.failed';
|
|
222
227
|
const payload = {
|
|
223
228
|
failed_stage: status.current_stage ?? 'unknown',
|
|
224
229
|
elapsed_ms: elapsedMsSince(status.started_at),
|
|
@@ -230,7 +235,7 @@ export class ProcessManager {
|
|
|
230
235
|
dispatchExternal({
|
|
231
236
|
runDir: join(this.worcaDir, 'runs', runId),
|
|
232
237
|
settingsPath: this.settingsPath,
|
|
233
|
-
eventType
|
|
238
|
+
eventType,
|
|
234
239
|
payload,
|
|
235
240
|
}).catch(() => {}),
|
|
236
241
|
);
|
|
@@ -239,7 +244,7 @@ export class ProcessManager {
|
|
|
239
244
|
const evt = {
|
|
240
245
|
schema_version: '1',
|
|
241
246
|
event_id: randomUUID(),
|
|
242
|
-
event_type:
|
|
247
|
+
event_type: eventType,
|
|
243
248
|
timestamp: new Date().toISOString(),
|
|
244
249
|
run_id: status.run_id ?? runId,
|
|
245
250
|
pipeline: {
|