@fdcn/sourcefed 0.3.6 → 0.3.8
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/README.md +1 -1
- package/dist/{chunk-X3BZSHKZ.js → chunk-5JL3UV72.js} +1328 -399
- package/dist/cli.js +9888 -8063
- package/dist/daemon.js +1194 -263
- package/dist/data/core/SKILL.md +9 -4
- package/dist/data/core/references/commands.md +6 -1
- package/dist/data/sourcefed/SKILL.md +3 -2
- package/dist/guidance.md +6 -2
- package/dist/mcp.js +6 -2
- package/dist/opencode.js +263 -122
- package/dist/pi.js +161 -39
- package/dist/tui-compiled.mjs +306 -166
- package/dist.dts/adapters/opencode/bridge.d.ts +66 -22
- package/dist.dts/adapters/opencode/subscriptions.d.ts +46 -0
- package/dist.dts/adapters/opencode/tool-result.d.ts +2 -1
- package/dist.dts/adapters/opencode/tools/monitor_create.d.ts +19 -2
- package/dist.dts/adapters/opencode/tools/monitor_list.d.ts +3 -2
- package/dist.dts/adapters/opencode/tools/monitor_start.d.ts +3 -2
- package/dist.dts/adapters/opencode/tools/monitor_status.d.ts +3 -2
- package/dist.dts/adapters/opencode/tools/monitor_stop.d.ts +3 -2
- package/dist.dts/adapters/pi/src/dialog.d.ts +1 -2
- package/dist.dts/adapters/pi/src/monitors-dialog.d.ts +32 -0
- package/dist.dts/packages/core/src/types/monitor-create-input.d.ts +4 -0
- package/dist.dts/packages/daemon/src/event-stream.d.ts +26 -0
- package/dist.dts/packages/daemon/src/registry.d.ts +2 -0
- package/dist.dts/packages/daemon/src/stream-lifecycle.test.d.ts +1 -0
- package/dist.dts/packages/daemon/src/types/client.d.ts +3 -1
- package/dist.dts/packages/daemon/src/types/daemon.d.ts +4 -0
- package/dist.dts/packages/daemon/src/utils/index.d.ts +0 -1
- package/dist.dts/providers/yab/src/index.d.ts +2 -0
- package/dist.dts/providers/yab/src/monitor.d.ts +14 -0
- package/dist.dts/providers/yab/src/poll/index.d.ts +2 -0
- package/dist.dts/providers/yab/src/poll/monitor.d.ts +3 -0
- package/dist.dts/providers/yab/src/poll/utils/feed-events.d.ts +5 -0
- package/dist.dts/providers/yab/src/poll/utils/index.d.ts +4 -0
- package/dist.dts/providers/yab/src/poll/utils/parse-feed.d.ts +3 -0
- package/dist.dts/providers/yab/src/poll/utils/poll-yab.d.ts +7 -0
- package/dist.dts/providers/yab/src/poll/utils/yab-mcp.d.ts +10 -0
- package/dist.dts/providers/yab/src/schema.d.ts +12 -0
- package/dist.dts/providers/yab/src/types/cursor.d.ts +4 -0
- package/dist.dts/providers/yab/src/types/event.d.ts +8 -0
- package/dist.dts/providers/yab/src/types/feed-entry.d.ts +8 -0
- package/dist.dts/providers/yab/src/types/index.d.ts +5 -0
- package/dist.dts/providers/yab/src/types/page.d.ts +6 -0
- package/dist.dts/providers/yab/src/types/source-record.d.ts +7 -0
- package/dist.dts/providers/yab/src/yab.test.d.ts +1 -0
- package/package.json +1 -1
- package/dist.dts/packages/daemon/src/utils/forward.d.ts +0 -32
- package/dist.dts/packages/daemon/src/utils/gate.d.ts +0 -33
- package/dist.dts/packages/daemon/src/utils/request-router.d.ts +0 -11
- /package/dist.dts/{packages/daemon/src/forward.test.d.ts → adapters/opencode/lifecycle.test.d.ts} +0 -0
- /package/dist.dts/{packages/daemon/src/gate.test.d.ts → adapters/pi/src/monitors-dialog.test.d.ts} +0 -0
package/dist/tui-compiled.mjs
CHANGED
|
@@ -7,7 +7,7 @@ import { insertNode as _$insertNode2 } from "opentui:runtime-module:%40opentui%2
|
|
|
7
7
|
import { setProp as _$setProp2 } from "opentui:runtime-module:%40opentui%2Fsolid";
|
|
8
8
|
import { createElement as _$createElement2 } from "opentui:runtime-module:%40opentui%2Fsolid";
|
|
9
9
|
import { createComponent as _$createComponent2 } from "opentui:runtime-module:%40opentui%2Fsolid";
|
|
10
|
-
import { createMemo as createMemo2, Show as Show2 } from "opentui:runtime-module:solid-js";
|
|
10
|
+
import { createMemo as createMemo2, createSignal as createSignal2, Show as Show2 } from "opentui:runtime-module:solid-js";
|
|
11
11
|
import { connectDaemonClient as connectDaemonClient2, defaultDaemonUrl as defaultDaemonUrl2 } from "@fdcn/sourcefed/daemon";
|
|
12
12
|
|
|
13
13
|
// .tui-build/tui/sidebar.mjs
|
|
@@ -158,6 +158,64 @@ var sourcefedTui = (ctx) => {
|
|
|
158
158
|
const route = ctx.ui.router.current();
|
|
159
159
|
return route.type === "session" ? route.sessionID : void 0;
|
|
160
160
|
};
|
|
161
|
+
const monitorTarget = (id2) => ({
|
|
162
|
+
target: {
|
|
163
|
+
kind: "opencode-session",
|
|
164
|
+
id: id2
|
|
165
|
+
}
|
|
166
|
+
});
|
|
167
|
+
const listMonitors = async (sessionID) => {
|
|
168
|
+
const result = await (await getClient()).request("monitor.list", monitorTarget(sessionID));
|
|
169
|
+
return result?.monitors ?? [];
|
|
170
|
+
};
|
|
171
|
+
const runAction = async (sessionID, action, id2) => {
|
|
172
|
+
const result = await (await getClient()).request(`monitor.${action}`, {
|
|
173
|
+
...monitorTarget(sessionID),
|
|
174
|
+
id: id2
|
|
175
|
+
});
|
|
176
|
+
if (result?.ok === false) throw new Error(result.error ?? `monitor ${action} failed`);
|
|
177
|
+
};
|
|
178
|
+
const showMonitors = async (sessionID, focusIndex = 0) => {
|
|
179
|
+
const monitors = await listMonitors(sessionID);
|
|
180
|
+
ctx.ui.dialog.set({
|
|
181
|
+
size: "large"
|
|
182
|
+
});
|
|
183
|
+
ctx.ui.dialog.show(() => _$createComponent2(MonitorDialog, {
|
|
184
|
+
ctx,
|
|
185
|
+
monitors,
|
|
186
|
+
focusIndex,
|
|
187
|
+
toggle: async (monitor) => {
|
|
188
|
+
await runAction(sessionID, monitor.enabled ? "stop" : "start", monitor.id);
|
|
189
|
+
return listMonitors(sessionID);
|
|
190
|
+
},
|
|
191
|
+
remove: (monitor, index) => void confirmRemove(sessionID, monitor, index)
|
|
192
|
+
}));
|
|
193
|
+
};
|
|
194
|
+
const confirmRemove = async (sessionID, monitor, index) => {
|
|
195
|
+
try {
|
|
196
|
+
const confirmed = await ctx.ui.dialog.confirm({
|
|
197
|
+
title: "Delete monitor",
|
|
198
|
+
message: `Delete ${monitor.describe}? It stops watching and its record is removed.`,
|
|
199
|
+
label: {
|
|
200
|
+
confirm: "Delete",
|
|
201
|
+
cancel: "Cancel"
|
|
202
|
+
}
|
|
203
|
+
});
|
|
204
|
+
if (confirmed) {
|
|
205
|
+
await runAction(sessionID, "remove", monitor.id);
|
|
206
|
+
ctx.ui.toast.show({
|
|
207
|
+
variant: "success",
|
|
208
|
+
message: `Deleted ${monitor.name}`
|
|
209
|
+
});
|
|
210
|
+
}
|
|
211
|
+
await showMonitors(sessionID, index);
|
|
212
|
+
} catch (error) {
|
|
213
|
+
ctx.ui.toast.show({
|
|
214
|
+
variant: "error",
|
|
215
|
+
message: `Sourcefed: ${errorMessage(error)}`
|
|
216
|
+
});
|
|
217
|
+
}
|
|
218
|
+
};
|
|
161
219
|
const disposeSlot = ctx.ui.slot({
|
|
162
220
|
append: "sidebar.content",
|
|
163
221
|
render: ({
|
|
@@ -172,7 +230,8 @@ var sourcefedTui = (ctx) => {
|
|
|
172
230
|
render: () => _$createComponent2(KeymapRegistration, {
|
|
173
231
|
ctx,
|
|
174
232
|
currentSessionID,
|
|
175
|
-
getClient
|
|
233
|
+
getClient,
|
|
234
|
+
showMonitors
|
|
176
235
|
})
|
|
177
236
|
});
|
|
178
237
|
return () => {
|
|
@@ -185,14 +244,15 @@ function KeymapRegistration(props) {
|
|
|
185
244
|
const {
|
|
186
245
|
ctx,
|
|
187
246
|
currentSessionID,
|
|
188
|
-
getClient
|
|
247
|
+
getClient,
|
|
248
|
+
showMonitors
|
|
189
249
|
} = props;
|
|
190
250
|
ctx.keymap.layer(() => ({
|
|
191
251
|
mode: "global",
|
|
192
252
|
commands: [{
|
|
193
253
|
id: "sourcefed",
|
|
194
254
|
title: "Sourcefed monitors",
|
|
195
|
-
description: "Show monitors for the current OpenCode session",
|
|
255
|
+
description: "Show, stop, start, or delete monitors for the current OpenCode session",
|
|
196
256
|
slash: {
|
|
197
257
|
name: "sourcefed"
|
|
198
258
|
},
|
|
@@ -206,25 +266,11 @@ function KeymapRegistration(props) {
|
|
|
206
266
|
return;
|
|
207
267
|
}
|
|
208
268
|
try {
|
|
209
|
-
|
|
210
|
-
const result = await daemon.request("monitor.list", {
|
|
211
|
-
target: {
|
|
212
|
-
kind: "opencode-session",
|
|
213
|
-
id: id2
|
|
214
|
-
}
|
|
215
|
-
});
|
|
216
|
-
const monitors = result?.monitors ?? [];
|
|
217
|
-
ctx.ui.dialog.set({
|
|
218
|
-
size: "large"
|
|
219
|
-
});
|
|
220
|
-
ctx.ui.dialog.show(() => _$createComponent2(MonitorDialog, {
|
|
221
|
-
ctx,
|
|
222
|
-
monitors
|
|
223
|
-
}));
|
|
269
|
+
await showMonitors(id2);
|
|
224
270
|
} catch (error) {
|
|
225
271
|
ctx.ui.toast.show({
|
|
226
272
|
variant: "error",
|
|
227
|
-
message: `Sourcefed daemon unavailable: ${
|
|
273
|
+
message: `Sourcefed daemon unavailable: ${errorMessage(error)}`
|
|
228
274
|
});
|
|
229
275
|
}
|
|
230
276
|
}
|
|
@@ -263,7 +309,7 @@ function KeymapRegistration(props) {
|
|
|
263
309
|
} catch (error) {
|
|
264
310
|
ctx.ui.toast.show({
|
|
265
311
|
variant: "error",
|
|
266
|
-
message: `Sourcefed daemon unavailable: ${
|
|
312
|
+
message: `Sourcefed daemon unavailable: ${errorMessage(error)}`
|
|
267
313
|
});
|
|
268
314
|
}
|
|
269
315
|
}
|
|
@@ -271,13 +317,62 @@ function KeymapRegistration(props) {
|
|
|
271
317
|
}));
|
|
272
318
|
return null;
|
|
273
319
|
}
|
|
320
|
+
var DIALOG_LAYER_PRIORITY = 100;
|
|
274
321
|
function MonitorDialog(props) {
|
|
275
322
|
const palette = createMemo2(() => tone(props.ctx.theme));
|
|
276
|
-
const
|
|
323
|
+
const [monitors, setMonitors] = createSignal2(props.monitors);
|
|
324
|
+
const [selected, setSelected] = createSignal2(clampIndex(props.focusIndex, props.monitors.length));
|
|
325
|
+
const [busy, setBusy] = createSignal2();
|
|
326
|
+
const [error, setError] = createSignal2();
|
|
327
|
+
const active = createMemo2(() => monitors().filter((monitor) => monitor.enabled).length);
|
|
277
328
|
const maxListRows = Math.max(6, Math.floor(props.ctx.renderer.height * 0.45));
|
|
329
|
+
const move = (delta) => setSelected((index) => clampIndex(index + delta, monitors().length));
|
|
330
|
+
const current = () => busy() ? void 0 : monitors()[selected()];
|
|
331
|
+
const toggle = async (monitor) => {
|
|
332
|
+
setError(void 0);
|
|
333
|
+
setBusy(`${monitor.enabled ? "Stopping" : "Starting"} ${monitor.name}\u2026`);
|
|
334
|
+
try {
|
|
335
|
+
const next = await props.toggle(monitor);
|
|
336
|
+
setMonitors(next);
|
|
337
|
+
const kept = next.findIndex((candidate) => candidate.id === monitor.id);
|
|
338
|
+
setSelected(clampIndex(kept >= 0 ? kept : selected(), next.length));
|
|
339
|
+
} catch (failure) {
|
|
340
|
+
setError(errorMessage(failure));
|
|
341
|
+
} finally {
|
|
342
|
+
setBusy(void 0);
|
|
343
|
+
}
|
|
344
|
+
};
|
|
345
|
+
props.ctx.keymap.layer(() => ({
|
|
346
|
+
mode: "global",
|
|
347
|
+
priority: DIALOG_LAYER_PRIORITY,
|
|
348
|
+
commands: [{
|
|
349
|
+
title: "Previous monitor",
|
|
350
|
+
bind: "up",
|
|
351
|
+
run: () => move(-1)
|
|
352
|
+
}, {
|
|
353
|
+
title: "Next monitor",
|
|
354
|
+
bind: "down",
|
|
355
|
+
run: () => move(1)
|
|
356
|
+
}, {
|
|
357
|
+
title: "Stop or start monitor",
|
|
358
|
+
bind: "s",
|
|
359
|
+
run: () => {
|
|
360
|
+
const monitor = current();
|
|
361
|
+
if (monitor) void toggle(monitor);
|
|
362
|
+
}
|
|
363
|
+
}, {
|
|
364
|
+
title: "Delete monitor",
|
|
365
|
+
bind: "d",
|
|
366
|
+
run: () => {
|
|
367
|
+
const monitor = current();
|
|
368
|
+
if (monitor) props.remove(monitor, selected());
|
|
369
|
+
}
|
|
370
|
+
}]
|
|
371
|
+
}));
|
|
278
372
|
return (() => {
|
|
279
|
-
var _el$ = _$createElement2("box"), _el$2 = _$createElement2("box"), _el$3 = _$createElement2("text"), _el$4 = _$createTextNode2(`Sourcefed monitors (`), _el$5 = _$createTextNode2(`)`), _el$6 = _$createElement2("box"), _el$7 = _$createElement2("text");
|
|
373
|
+
var _el$ = _$createElement2("box"), _el$2 = _$createElement2("box"), _el$3 = _$createElement2("text"), _el$4 = _$createTextNode2(`Sourcefed monitors (`), _el$5 = _$createTextNode2(` active)`), _el$6 = _$createElement2("box"), _el$7 = _$createElement2("text"), _el$10 = _$createElement2("text");
|
|
280
374
|
_$insertNode2(_el$, _el$2);
|
|
375
|
+
_$insertNode2(_el$, _el$10);
|
|
281
376
|
_$setProp2(_el$, "flexDirection", "column");
|
|
282
377
|
_$setProp2(_el$, "width", "100%");
|
|
283
378
|
_$setProp2(_el$, "paddingX", 2);
|
|
@@ -291,45 +386,62 @@ function MonitorDialog(props) {
|
|
|
291
386
|
_$insertNode2(_el$3, _el$4);
|
|
292
387
|
_$insertNode2(_el$3, _el$5);
|
|
293
388
|
_$setProp2(_el$3, "attributes", 1);
|
|
294
|
-
_$insert2(_el$3,
|
|
389
|
+
_$insert2(_el$3, active, _el$5);
|
|
295
390
|
_$setProp2(_el$6, "flexGrow", 1);
|
|
296
391
|
_$insertNode2(_el$7, _$createTextNode2(`esc`));
|
|
297
392
|
_$insert2(_el$, _$createComponent2(Show2, {
|
|
298
393
|
get when() {
|
|
299
|
-
return
|
|
394
|
+
return monitors().length > 0;
|
|
300
395
|
},
|
|
301
396
|
get fallback() {
|
|
302
397
|
return (() => {
|
|
303
|
-
var _el$
|
|
304
|
-
_$insertNode2(_el$
|
|
305
|
-
_$setProp2(_el$
|
|
306
|
-
|
|
307
|
-
_$setProp2(_el$10, "flexDirection", "column");
|
|
308
|
-
_$setProp2(_el$10, "width", "100%");
|
|
309
|
-
_$insert2(_el$10, () => active.map((monitor) => _$createComponent2(MonitorCard, {
|
|
310
|
-
monitor,
|
|
311
|
-
get tone() {
|
|
312
|
-
return palette();
|
|
313
|
-
}
|
|
314
|
-
})));
|
|
315
|
-
return _el$1;
|
|
398
|
+
var _el$11 = _$createElement2("text");
|
|
399
|
+
_$insertNode2(_el$11, _$createTextNode2(`No monitors`));
|
|
400
|
+
_$effect2((_$p) => _$setProp2(_el$11, "fg", palette().textMuted, _$p));
|
|
401
|
+
return _el$11;
|
|
316
402
|
})();
|
|
317
403
|
},
|
|
318
404
|
get children() {
|
|
319
|
-
var _el$9 = _$createElement2("
|
|
320
|
-
_$insertNode2(_el$9,
|
|
321
|
-
_$
|
|
405
|
+
var _el$9 = _$createElement2("scrollbox"), _el$0 = _$createElement2("box");
|
|
406
|
+
_$insertNode2(_el$9, _el$0);
|
|
407
|
+
_$setProp2(_el$9, "maxHeight", maxListRows);
|
|
408
|
+
_$setProp2(_el$9, "scrollY", true);
|
|
409
|
+
_$setProp2(_el$0, "flexDirection", "column");
|
|
410
|
+
_$setProp2(_el$0, "width", "100%");
|
|
411
|
+
_$insert2(_el$0, () => monitors().map((monitor, index) => _$createComponent2(MonitorCard, {
|
|
412
|
+
monitor,
|
|
413
|
+
get tone() {
|
|
414
|
+
return palette();
|
|
415
|
+
},
|
|
416
|
+
get selected() {
|
|
417
|
+
return index === selected();
|
|
418
|
+
}
|
|
419
|
+
})));
|
|
322
420
|
return _el$9;
|
|
323
421
|
}
|
|
324
|
-
}),
|
|
422
|
+
}), _el$10);
|
|
423
|
+
_$insert2(_el$, _$createComponent2(Show2, {
|
|
424
|
+
get when() {
|
|
425
|
+
return error();
|
|
426
|
+
},
|
|
427
|
+
get children() {
|
|
428
|
+
var _el$1 = _$createElement2("text");
|
|
429
|
+
_$insert2(_el$1, error);
|
|
430
|
+
_$effect2((_$p) => _$setProp2(_el$1, "fg", palette().error, _$p));
|
|
431
|
+
return _el$1;
|
|
432
|
+
}
|
|
433
|
+
}), _el$10);
|
|
434
|
+
_$insert2(_el$10, () => busy() ?? "\u2191\u2193 select \xB7 s stop/start \xB7 d delete \xB7 esc close");
|
|
325
435
|
_$effect2((_p$) => {
|
|
326
|
-
var _v$ = palette().text, _v$2 = palette().textMuted;
|
|
436
|
+
var _v$ = palette().text, _v$2 = palette().textMuted, _v$3 = palette().textMuted;
|
|
327
437
|
_v$ !== _p$.e && (_p$.e = _$setProp2(_el$3, "fg", _v$, _p$.e));
|
|
328
438
|
_v$2 !== _p$.t && (_p$.t = _$setProp2(_el$7, "fg", _v$2, _p$.t));
|
|
439
|
+
_v$3 !== _p$.a && (_p$.a = _$setProp2(_el$10, "fg", _v$3, _p$.a));
|
|
329
440
|
return _p$;
|
|
330
441
|
}, {
|
|
331
442
|
e: void 0,
|
|
332
|
-
t: void 0
|
|
443
|
+
t: void 0,
|
|
444
|
+
a: void 0
|
|
333
445
|
});
|
|
334
446
|
return _el$;
|
|
335
447
|
})();
|
|
@@ -337,66 +449,94 @@ function MonitorDialog(props) {
|
|
|
337
449
|
function MonitorCard(props) {
|
|
338
450
|
const monitor = props.monitor;
|
|
339
451
|
const palette = props.tone;
|
|
340
|
-
const status = monitor.
|
|
452
|
+
const status = !monitor.enabled ? palette.textMuted : monitor.unresponsive ? palette.error : palette.success;
|
|
341
453
|
const statusLabel = !monitor.enabled ? "stopped" : monitor.unresponsive ? "recovering connection" : "healthy";
|
|
342
454
|
const rows = [["Delivery", monitor.delivery], ["Poll interval", `${monitor.pollIntervalSec}s`], ["Created", formatTime(monitor.createdAt)], ["Updated", formatTime(monitor.updatedAt)], ["Last poll", formatTime(monitor.lastPolledAt)], ["Webhook heartbeat", formatTime(monitor.webhookHeartbeatAt)]];
|
|
343
455
|
return (() => {
|
|
344
|
-
var _el$
|
|
345
|
-
_$insertNode2(_el$
|
|
346
|
-
_$setProp2(_el$
|
|
347
|
-
_$setProp2(_el$
|
|
348
|
-
_$setProp2(_el$
|
|
349
|
-
_$
|
|
350
|
-
_$insertNode2(_el$
|
|
351
|
-
_$insertNode2(_el$
|
|
352
|
-
_$insertNode2(_el$
|
|
353
|
-
_$setProp2(_el$
|
|
354
|
-
_$setProp2(_el$
|
|
355
|
-
_$setProp2(_el$
|
|
356
|
-
_$insertNode2(_el$13, _$createTextNode2(`\u25CF`));
|
|
357
|
-
_$setProp2(_el$13, "fg", status);
|
|
456
|
+
var _el$13 = _$createElement2("box"), _el$14 = _$createElement2("box"), _el$15 = _$createElement2("box"), _el$16 = _$createElement2("text"), _el$17 = _$createElement2("text"), _el$19 = _$createElement2("text"), _el$20 = _$createTextNode2(` `), _el$21 = _$createTextNode2(` `), _el$22 = _$createElement2("text"), _el$23 = _$createTextNode2(` [`), _el$24 = _$createTextNode2(`]`);
|
|
457
|
+
_$insertNode2(_el$13, _el$14);
|
|
458
|
+
_$setProp2(_el$13, "flexDirection", "column");
|
|
459
|
+
_$setProp2(_el$13, "width", "100%");
|
|
460
|
+
_$setProp2(_el$13, "minWidth", 0);
|
|
461
|
+
_$insertNode2(_el$14, _el$15);
|
|
462
|
+
_$insertNode2(_el$14, _el$17);
|
|
463
|
+
_$insertNode2(_el$14, _el$19);
|
|
464
|
+
_$insertNode2(_el$14, _el$22);
|
|
465
|
+
_$setProp2(_el$14, "flexDirection", "row");
|
|
466
|
+
_$setProp2(_el$14, "width", "100%");
|
|
467
|
+
_$setProp2(_el$14, "minWidth", 0);
|
|
358
468
|
_$insertNode2(_el$15, _el$16);
|
|
359
|
-
_$
|
|
360
|
-
_$
|
|
361
|
-
_$insert2(_el$
|
|
362
|
-
_$insertNode2(_el$
|
|
363
|
-
_$
|
|
364
|
-
_$
|
|
365
|
-
_$
|
|
366
|
-
_$
|
|
367
|
-
_$
|
|
368
|
-
_$
|
|
369
|
-
_$
|
|
370
|
-
_$
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
469
|
+
_$setProp2(_el$15, "width", 2);
|
|
470
|
+
_$setProp2(_el$15, "flexShrink", 0);
|
|
471
|
+
_$insert2(_el$16, () => props.selected ? "\u203A" : "");
|
|
472
|
+
_$insertNode2(_el$17, _$createTextNode2(`\u25CF`));
|
|
473
|
+
_$setProp2(_el$17, "fg", status);
|
|
474
|
+
_$insertNode2(_el$19, _el$20);
|
|
475
|
+
_$insertNode2(_el$19, _el$21);
|
|
476
|
+
_$insert2(_el$19, () => monitor.icon, _el$21);
|
|
477
|
+
_$insert2(_el$19, () => monitor.describe, null);
|
|
478
|
+
_$insertNode2(_el$22, _el$23);
|
|
479
|
+
_$insertNode2(_el$22, _el$24);
|
|
480
|
+
_$setProp2(_el$22, "fg", status);
|
|
481
|
+
_$setProp2(_el$22, "flexGrow", 1);
|
|
482
|
+
_$setProp2(_el$22, "flexShrink", 1);
|
|
483
|
+
_$setProp2(_el$22, "minWidth", 0);
|
|
484
|
+
_$setProp2(_el$22, "truncate", true);
|
|
485
|
+
_$insert2(_el$22, statusLabel, _el$24);
|
|
486
|
+
_$insert2(_el$13, _$createComponent2(Show2, {
|
|
487
|
+
get when() {
|
|
488
|
+
return props.selected;
|
|
489
|
+
},
|
|
490
|
+
get children() {
|
|
491
|
+
return rows.map(([label, value]) => (() => {
|
|
492
|
+
var _el$25 = _$createElement2("box"), _el$26 = _$createElement2("text"), _el$27 = _$createTextNode2(`: `), _el$28 = _$createElement2("text");
|
|
493
|
+
_$insertNode2(_el$25, _el$26);
|
|
494
|
+
_$insertNode2(_el$25, _el$28);
|
|
495
|
+
_$setProp2(_el$25, "flexDirection", "row");
|
|
496
|
+
_$setProp2(_el$25, "width", "100%");
|
|
497
|
+
_$setProp2(_el$25, "minWidth", 0);
|
|
498
|
+
_$setProp2(_el$25, "paddingLeft", 4);
|
|
499
|
+
_$insertNode2(_el$26, _el$27);
|
|
500
|
+
_$setProp2(_el$26, "flexShrink", 0);
|
|
501
|
+
_$insert2(_el$26, label, _el$27);
|
|
502
|
+
_$setProp2(_el$28, "flexGrow", 1);
|
|
503
|
+
_$setProp2(_el$28, "flexShrink", 1);
|
|
504
|
+
_$setProp2(_el$28, "minWidth", 0);
|
|
505
|
+
_$setProp2(_el$28, "truncate", true);
|
|
506
|
+
_$insert2(_el$28, value);
|
|
507
|
+
_$effect2((_p$) => {
|
|
508
|
+
var _v$7 = palette.textMuted, _v$8 = palette.text;
|
|
509
|
+
_v$7 !== _p$.e && (_p$.e = _$setProp2(_el$26, "fg", _v$7, _p$.e));
|
|
510
|
+
_v$8 !== _p$.t && (_p$.t = _$setProp2(_el$28, "fg", _v$8, _p$.t));
|
|
511
|
+
return _p$;
|
|
512
|
+
}, {
|
|
513
|
+
e: void 0,
|
|
514
|
+
t: void 0
|
|
515
|
+
});
|
|
516
|
+
return _el$25;
|
|
517
|
+
})());
|
|
518
|
+
}
|
|
519
|
+
}), null);
|
|
520
|
+
_$effect2((_p$) => {
|
|
521
|
+
var _v$4 = props.selected ? 1 : 0, _v$5 = palette.accent, _v$6 = palette.text;
|
|
522
|
+
_v$4 !== _p$.e && (_p$.e = _$setProp2(_el$13, "marginBottom", _v$4, _p$.e));
|
|
523
|
+
_v$5 !== _p$.t && (_p$.t = _$setProp2(_el$16, "fg", _v$5, _p$.t));
|
|
524
|
+
_v$6 !== _p$.a && (_p$.a = _$setProp2(_el$19, "fg", _v$6, _p$.a));
|
|
525
|
+
return _p$;
|
|
526
|
+
}, {
|
|
527
|
+
e: void 0,
|
|
528
|
+
t: void 0,
|
|
529
|
+
a: void 0
|
|
530
|
+
});
|
|
531
|
+
return _el$13;
|
|
398
532
|
})();
|
|
399
533
|
}
|
|
534
|
+
function clampIndex(index, length) {
|
|
535
|
+
return Math.min(Math.max(index, 0), Math.max(length - 1, 0));
|
|
536
|
+
}
|
|
537
|
+
function errorMessage(error) {
|
|
538
|
+
return error instanceof Error ? error.message : String(error);
|
|
539
|
+
}
|
|
400
540
|
function formatTime(value) {
|
|
401
541
|
if (!value) return "never";
|
|
402
542
|
const date = new Date(value);
|
|
@@ -407,107 +547,107 @@ function LogsDialog(props) {
|
|
|
407
547
|
const palette = createMemo2(() => tone(props.ctx.theme));
|
|
408
548
|
const maxListRows = Math.max(6, Math.floor(props.ctx.renderer.height * 0.45));
|
|
409
549
|
return (() => {
|
|
410
|
-
var _el$
|
|
411
|
-
_$insertNode2(_el$
|
|
412
|
-
_$setProp2(_el$
|
|
413
|
-
_$setProp2(_el$
|
|
414
|
-
_$setProp2(_el$
|
|
415
|
-
_$setProp2(_el$
|
|
416
|
-
_$insertNode2(_el$
|
|
417
|
-
_$insertNode2(_el$
|
|
418
|
-
_$insertNode2(_el$
|
|
419
|
-
_$setProp2(_el$
|
|
420
|
-
_$setProp2(_el$
|
|
421
|
-
_$setProp2(_el$
|
|
422
|
-
_$insertNode2(_el$
|
|
423
|
-
_$insertNode2(_el$
|
|
424
|
-
_$setProp2(_el$
|
|
425
|
-
_$insert2(_el$
|
|
426
|
-
_$setProp2(_el$
|
|
427
|
-
_$insertNode2(_el$
|
|
428
|
-
_$insert2(_el$
|
|
550
|
+
var _el$29 = _$createElement2("box"), _el$30 = _$createElement2("box"), _el$31 = _$createElement2("text"), _el$32 = _$createTextNode2(`Sourcefed notifications (`), _el$33 = _$createTextNode2(`)`), _el$34 = _$createElement2("box"), _el$35 = _$createElement2("text");
|
|
551
|
+
_$insertNode2(_el$29, _el$30);
|
|
552
|
+
_$setProp2(_el$29, "flexDirection", "column");
|
|
553
|
+
_$setProp2(_el$29, "width", "100%");
|
|
554
|
+
_$setProp2(_el$29, "paddingX", 2);
|
|
555
|
+
_$setProp2(_el$29, "paddingY", 1);
|
|
556
|
+
_$insertNode2(_el$30, _el$31);
|
|
557
|
+
_$insertNode2(_el$30, _el$34);
|
|
558
|
+
_$insertNode2(_el$30, _el$35);
|
|
559
|
+
_$setProp2(_el$30, "flexDirection", "row");
|
|
560
|
+
_$setProp2(_el$30, "width", "100%");
|
|
561
|
+
_$setProp2(_el$30, "minWidth", 0);
|
|
562
|
+
_$insertNode2(_el$31, _el$32);
|
|
563
|
+
_$insertNode2(_el$31, _el$33);
|
|
564
|
+
_$setProp2(_el$31, "attributes", 1);
|
|
565
|
+
_$insert2(_el$31, () => props.logs.length, _el$33);
|
|
566
|
+
_$setProp2(_el$34, "flexGrow", 1);
|
|
567
|
+
_$insertNode2(_el$35, _$createTextNode2(`esc`));
|
|
568
|
+
_$insert2(_el$29, _$createComponent2(Show2, {
|
|
429
569
|
get when() {
|
|
430
570
|
return props.logs.length > 0;
|
|
431
571
|
},
|
|
432
572
|
get fallback() {
|
|
433
573
|
return (() => {
|
|
434
|
-
var _el$
|
|
435
|
-
_$insertNode2(_el$
|
|
436
|
-
_$effect2((_$p) => _$setProp2(_el$
|
|
437
|
-
return _el$
|
|
574
|
+
var _el$39 = _$createElement2("text");
|
|
575
|
+
_$insertNode2(_el$39, _$createTextNode2(`No notifications sent yet`));
|
|
576
|
+
_$effect2((_$p) => _$setProp2(_el$39, "fg", palette().textMuted, _$p));
|
|
577
|
+
return _el$39;
|
|
438
578
|
})();
|
|
439
579
|
},
|
|
440
580
|
get children() {
|
|
441
|
-
var _el$
|
|
442
|
-
_$insertNode2(_el$
|
|
443
|
-
_$setProp2(_el$
|
|
444
|
-
_$setProp2(_el$
|
|
445
|
-
_$setProp2(_el$
|
|
446
|
-
_$setProp2(_el$
|
|
447
|
-
_$setProp2(_el$
|
|
448
|
-
_$setProp2(_el$
|
|
449
|
-
_$insert2(_el$
|
|
450
|
-
var _el$
|
|
451
|
-
_$insertNode2(_el$
|
|
452
|
-
_$setProp2(_el$
|
|
453
|
-
_$setProp2(_el$
|
|
454
|
-
_$insertNode2(_el$38, _el$39);
|
|
455
|
-
_$insertNode2(_el$38, _el$40);
|
|
456
|
-
_$insertNode2(_el$38, _el$42);
|
|
457
|
-
_$setProp2(_el$38, "flexDirection", "row");
|
|
458
|
-
_$setProp2(_el$38, "width", "100%");
|
|
459
|
-
_$setProp2(_el$38, "minWidth", 0);
|
|
460
|
-
_$insert2(_el$39, () => entry.actionable ? "\u25B6" : "\xB7");
|
|
461
|
-
_$insertNode2(_el$40, _el$41);
|
|
462
|
-
_$setProp2(_el$40, "flexShrink", 0);
|
|
463
|
-
_$setProp2(_el$40, "minWidth", 0);
|
|
464
|
-
_$insert2(_el$40, () => entry.icon, null);
|
|
581
|
+
var _el$37 = _$createElement2("scrollbox"), _el$38 = _$createElement2("box");
|
|
582
|
+
_$insertNode2(_el$37, _el$38);
|
|
583
|
+
_$setProp2(_el$37, "maxHeight", maxListRows);
|
|
584
|
+
_$setProp2(_el$37, "scrollY", true);
|
|
585
|
+
_$setProp2(_el$37, "stickyScroll", true);
|
|
586
|
+
_$setProp2(_el$37, "stickyStart", "bottom");
|
|
587
|
+
_$setProp2(_el$38, "flexDirection", "column");
|
|
588
|
+
_$setProp2(_el$38, "width", "100%");
|
|
589
|
+
_$insert2(_el$38, () => props.logs.map((entry) => (() => {
|
|
590
|
+
var _el$41 = _$createElement2("box"), _el$42 = _$createElement2("box"), _el$43 = _$createElement2("text"), _el$44 = _$createElement2("text"), _el$45 = _$createTextNode2(` `), _el$46 = _$createElement2("text"), _el$47 = _$createTextNode2(` `), _el$48 = _$createTextNode2(` `);
|
|
591
|
+
_$insertNode2(_el$41, _el$42);
|
|
592
|
+
_$setProp2(_el$41, "flexDirection", "column");
|
|
593
|
+
_$setProp2(_el$41, "width", "100%");
|
|
465
594
|
_$insertNode2(_el$42, _el$43);
|
|
466
595
|
_$insertNode2(_el$42, _el$44);
|
|
467
|
-
_$
|
|
468
|
-
_$setProp2(_el$42, "
|
|
596
|
+
_$insertNode2(_el$42, _el$46);
|
|
597
|
+
_$setProp2(_el$42, "flexDirection", "row");
|
|
598
|
+
_$setProp2(_el$42, "width", "100%");
|
|
469
599
|
_$setProp2(_el$42, "minWidth", 0);
|
|
470
|
-
_$
|
|
471
|
-
_$
|
|
472
|
-
_$
|
|
473
|
-
_$
|
|
600
|
+
_$insert2(_el$43, () => entry.actionable ? "\u25B6" : "\xB7");
|
|
601
|
+
_$insertNode2(_el$44, _el$45);
|
|
602
|
+
_$setProp2(_el$44, "flexShrink", 0);
|
|
603
|
+
_$setProp2(_el$44, "minWidth", 0);
|
|
604
|
+
_$insert2(_el$44, () => entry.icon, null);
|
|
605
|
+
_$insertNode2(_el$46, _el$47);
|
|
606
|
+
_$insertNode2(_el$46, _el$48);
|
|
607
|
+
_$setProp2(_el$46, "flexGrow", 1);
|
|
608
|
+
_$setProp2(_el$46, "flexShrink", 1);
|
|
609
|
+
_$setProp2(_el$46, "minWidth", 0);
|
|
610
|
+
_$setProp2(_el$46, "truncate", true);
|
|
611
|
+
_$insert2(_el$46, () => new Date(entry.at).toLocaleString(), _el$48);
|
|
612
|
+
_$insert2(_el$46, () => entry.summary, null);
|
|
613
|
+
_$insert2(_el$41, _$createComponent2(Show2, {
|
|
474
614
|
get when() {
|
|
475
615
|
return entry.body;
|
|
476
616
|
},
|
|
477
617
|
get children() {
|
|
478
|
-
var _el$
|
|
479
|
-
_$insertNode2(_el$
|
|
480
|
-
_$insert2(_el$
|
|
481
|
-
_$effect2((_$p) => _$setProp2(_el$
|
|
482
|
-
return _el$
|
|
618
|
+
var _el$49 = _$createElement2("text"), _el$50 = _$createTextNode2(` `);
|
|
619
|
+
_$insertNode2(_el$49, _el$50);
|
|
620
|
+
_$insert2(_el$49, () => entry.body, null);
|
|
621
|
+
_$effect2((_$p) => _$setProp2(_el$49, "fg", palette().textMuted, _$p));
|
|
622
|
+
return _el$49;
|
|
483
623
|
}
|
|
484
624
|
}), null);
|
|
485
625
|
_$effect2((_p$) => {
|
|
486
|
-
var _v$
|
|
487
|
-
_v$
|
|
488
|
-
_v$
|
|
489
|
-
_v$
|
|
626
|
+
var _v$1 = entry.actionable ? palette().warning : palette().textMuted, _v$10 = palette().text, _v$11 = palette().text;
|
|
627
|
+
_v$1 !== _p$.e && (_p$.e = _$setProp2(_el$43, "fg", _v$1, _p$.e));
|
|
628
|
+
_v$10 !== _p$.t && (_p$.t = _$setProp2(_el$44, "fg", _v$10, _p$.t));
|
|
629
|
+
_v$11 !== _p$.a && (_p$.a = _$setProp2(_el$46, "fg", _v$11, _p$.a));
|
|
490
630
|
return _p$;
|
|
491
631
|
}, {
|
|
492
632
|
e: void 0,
|
|
493
633
|
t: void 0,
|
|
494
634
|
a: void 0
|
|
495
635
|
});
|
|
496
|
-
return _el$
|
|
636
|
+
return _el$41;
|
|
497
637
|
})()));
|
|
498
|
-
return _el$
|
|
638
|
+
return _el$37;
|
|
499
639
|
}
|
|
500
640
|
}), null);
|
|
501
641
|
_$effect2((_p$) => {
|
|
502
|
-
var _v$
|
|
503
|
-
_v$
|
|
504
|
-
_v$
|
|
642
|
+
var _v$9 = palette().text, _v$0 = palette().textMuted;
|
|
643
|
+
_v$9 !== _p$.e && (_p$.e = _$setProp2(_el$31, "fg", _v$9, _p$.e));
|
|
644
|
+
_v$0 !== _p$.t && (_p$.t = _$setProp2(_el$35, "fg", _v$0, _p$.t));
|
|
505
645
|
return _p$;
|
|
506
646
|
}, {
|
|
507
647
|
e: void 0,
|
|
508
648
|
t: void 0
|
|
509
649
|
});
|
|
510
|
-
return _el$
|
|
650
|
+
return _el$29;
|
|
511
651
|
})();
|
|
512
652
|
}
|
|
513
653
|
|