@bojackduy/opencode-loopd 1.10.3 → 1.10.4
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/CHANGELOG.md +15 -0
- package/commands/goal.md +2 -0
- package/dist/server.js +1538 -70
- package/dist/tui.js +704 -369
- package/package.json +1 -1
- package/skills/loopd/SKILL.md +171 -14
package/dist/tui.js
CHANGED
|
@@ -5613,7 +5613,7 @@ import { randomUUID } from "crypto";
|
|
|
5613
5613
|
// src/infrastructure/state-repository.ts
|
|
5614
5614
|
import { promises as fs } from "fs";
|
|
5615
5615
|
import path from "path";
|
|
5616
|
-
var CURRENT_VERSION =
|
|
5616
|
+
var CURRENT_VERSION = 9;
|
|
5617
5617
|
function emptyState() {
|
|
5618
5618
|
return { version: CURRENT_VERSION, revision: 0, goals: [], runtimes: [], commandLedger: [], commands: [] };
|
|
5619
5619
|
}
|
|
@@ -5750,6 +5750,14 @@ function migrate(state) {
|
|
|
5750
5750
|
if (!Array.isArray(result.commandAwaits))
|
|
5751
5751
|
result.commandAwaits = [];
|
|
5752
5752
|
}
|
|
5753
|
+
if (result.version < 9) {
|
|
5754
|
+
result.version = 9;
|
|
5755
|
+
result.goals = result.goals.map((goal) => ({
|
|
5756
|
+
...goal,
|
|
5757
|
+
workerTopology: goal.workerTopology ?? undefined,
|
|
5758
|
+
nativeParentID: goal.nativeParentID ?? undefined
|
|
5759
|
+
}));
|
|
5760
|
+
}
|
|
5753
5761
|
return result;
|
|
5754
5762
|
}
|
|
5755
5763
|
async function writeAtomic(target, contents) {
|
|
@@ -6081,6 +6089,33 @@ function parseCommandLine(input) {
|
|
|
6081
6089
|
args.push(current);
|
|
6082
6090
|
return args;
|
|
6083
6091
|
}
|
|
6092
|
+
function watchBadge(c) {
|
|
6093
|
+
const st = c.watchState?.state;
|
|
6094
|
+
if (st === "until-matched")
|
|
6095
|
+
return "until-matched";
|
|
6096
|
+
if (st === "flood-suspended")
|
|
6097
|
+
return "flood-suspended";
|
|
6098
|
+
if (st === "budget-exhausted")
|
|
6099
|
+
return "budget-exhausted";
|
|
6100
|
+
if (c.watchUntil !== undefined)
|
|
6101
|
+
return `until:${c.watchUntilAction ?? "stop"}-armed`;
|
|
6102
|
+
if (c.watchFilter !== undefined)
|
|
6103
|
+
return "watch:filter";
|
|
6104
|
+
return;
|
|
6105
|
+
}
|
|
6106
|
+
function formatWatchDetail(c) {
|
|
6107
|
+
if (c.watchFilter === undefined && c.watchUntil === undefined && c.watchState === undefined)
|
|
6108
|
+
return;
|
|
6109
|
+
const spec = [
|
|
6110
|
+
c.watchFilter !== undefined ? `filter="${c.watchFilter}"` : null,
|
|
6111
|
+
c.watchUntil !== undefined ? `until="${c.watchUntil}"` : null,
|
|
6112
|
+
`action=${c.watchUntilAction ?? "stop"}`,
|
|
6113
|
+
c.watchIgnoreCase === true ? "ignore-case" : null
|
|
6114
|
+
].filter((x) => x !== null).join(" ");
|
|
6115
|
+
const st = c.watchState;
|
|
6116
|
+
const counters = st ? `state=${st.state} matches=${st.matches} pushes=${st.pushes} dropped=${st.droppedLines}` : "state=\u2014";
|
|
6117
|
+
return `watch ${spec} \xB7 ${counters}`;
|
|
6118
|
+
}
|
|
6084
6119
|
function parseNewCommandTail(raw) {
|
|
6085
6120
|
const match = /^(?::?\s*new)(?:\s+(.*))?\s*$/s.exec(raw.trim());
|
|
6086
6121
|
if (!match)
|
|
@@ -8151,152 +8186,183 @@ function LoopDashboard(props) {
|
|
|
8151
8186
|
})()];
|
|
8152
8187
|
})(), null);
|
|
8153
8188
|
_$insert(_el$133, (() => {
|
|
8154
|
-
var _c$15 = _$memo(() =>
|
|
8155
|
-
return () => _c$15()
|
|
8189
|
+
var _c$15 = _$memo(() => !!goal().workerTopology);
|
|
8190
|
+
return () => _c$15() && [(() => {
|
|
8156
8191
|
var _el$218 = _$createElement("span"), _el$219 = _$createTextNode(`
|
|
8157
|
-
\
|
|
8192
|
+
\uD83C\uDF3F Worker: `);
|
|
8158
8193
|
_$insertNode(_el$218, _el$219);
|
|
8159
8194
|
_$effect((_$p) => _$setProp(_el$218, "style", {
|
|
8160
|
-
fg: theme().
|
|
8195
|
+
fg: theme().textMuted
|
|
8161
8196
|
}, _$p));
|
|
8162
8197
|
return _el$218;
|
|
8163
8198
|
})(), (() => {
|
|
8164
8199
|
var _el$221 = _$createElement("span");
|
|
8165
|
-
_$
|
|
8200
|
+
_$insert(_el$221, (() => {
|
|
8201
|
+
var _c$22 = _$memo(() => goal().workerTopology === "v2-native-child");
|
|
8202
|
+
return () => _c$22() ? "native child" : goal().workerTopology === "v2-root-fallback" ? "root fallback" : "v1 child";
|
|
8203
|
+
})());
|
|
8166
8204
|
_$effect((_$p) => _$setProp(_el$221, "style", {
|
|
8205
|
+
fg: theme().text
|
|
8206
|
+
}, _$p));
|
|
8207
|
+
return _el$221;
|
|
8208
|
+
})(), _$memo(() => _$memo(() => !!goal().nativeParentID)() ? (() => {
|
|
8209
|
+
var _el$222 = _$createElement("span"), _el$223 = _$createTextNode(` of `), _el$224 = _$createTextNode(`\u2026`);
|
|
8210
|
+
_$insertNode(_el$222, _el$223);
|
|
8211
|
+
_$insertNode(_el$222, _el$224);
|
|
8212
|
+
_$insert(_el$222, () => goal().nativeParentID.slice(0, 12), _el$224);
|
|
8213
|
+
_$effect((_$p) => _$setProp(_el$222, "style", {
|
|
8214
|
+
fg: theme().textMuted
|
|
8215
|
+
}, _$p));
|
|
8216
|
+
return _el$222;
|
|
8217
|
+
})() : null)];
|
|
8218
|
+
})(), null);
|
|
8219
|
+
_$insert(_el$133, (() => {
|
|
8220
|
+
var _c$16 = _$memo(() => (goal().config.checks?.length ?? 0) > 0);
|
|
8221
|
+
return () => _c$16() ? [(() => {
|
|
8222
|
+
var _el$225 = _$createElement("span"), _el$226 = _$createTextNode(`
|
|
8223
|
+
\u25A3 `);
|
|
8224
|
+
_$insertNode(_el$225, _el$226);
|
|
8225
|
+
_$effect((_$p) => _$setProp(_el$225, "style", {
|
|
8226
|
+
fg: theme().warning
|
|
8227
|
+
}, _$p));
|
|
8228
|
+
return _el$225;
|
|
8229
|
+
})(), (() => {
|
|
8230
|
+
var _el$228 = _$createElement("span");
|
|
8231
|
+
_$insertNode(_el$228, _$createTextNode(`Checks: `));
|
|
8232
|
+
_$effect((_$p) => _$setProp(_el$228, "style", {
|
|
8167
8233
|
fg: theme().warning,
|
|
8168
8234
|
bold: true
|
|
8169
8235
|
}, _$p));
|
|
8170
|
-
return _el$
|
|
8236
|
+
return _el$228;
|
|
8171
8237
|
})(), (() => {
|
|
8172
|
-
var _el$
|
|
8173
|
-
_$insert(_el$
|
|
8174
|
-
_$effect((_$p) => _$setProp(_el$
|
|
8238
|
+
var _el$230 = _$createElement("span");
|
|
8239
|
+
_$insert(_el$230, () => goal().config.checks.join(", ").slice(0, 100));
|
|
8240
|
+
_$effect((_$p) => _$setProp(_el$230, "style", {
|
|
8175
8241
|
fg: theme().textMuted
|
|
8176
8242
|
}, _$p));
|
|
8177
|
-
return _el$
|
|
8243
|
+
return _el$230;
|
|
8178
8244
|
})()] : null;
|
|
8179
8245
|
})(), null);
|
|
8180
8246
|
_$insert(_el$133, (() => {
|
|
8181
|
-
var _c$
|
|
8182
|
-
return () => _c$
|
|
8183
|
-
var _el$
|
|
8247
|
+
var _c$17 = _$memo(() => rt()?.evaluatorRejectionCount > 0);
|
|
8248
|
+
return () => _c$17() && [(() => {
|
|
8249
|
+
var _el$231 = _$createElement("span"), _el$232 = _$createTextNode(`
|
|
8184
8250
|
\u26A0 rejections: `);
|
|
8185
|
-
_$insertNode(_el$
|
|
8186
|
-
_$effect((_$p) => _$setProp(_el$
|
|
8251
|
+
_$insertNode(_el$231, _el$232);
|
|
8252
|
+
_$effect((_$p) => _$setProp(_el$231, "style", {
|
|
8187
8253
|
fg: theme().warning
|
|
8188
8254
|
}, _$p));
|
|
8189
|
-
return _el$
|
|
8255
|
+
return _el$231;
|
|
8190
8256
|
})(), (() => {
|
|
8191
|
-
var _el$
|
|
8192
|
-
_$insertNode(_el$
|
|
8193
|
-
_$insert(_el$
|
|
8194
|
-
_$insert(_el$
|
|
8195
|
-
_$effect((_$p) => _$setProp(_el$
|
|
8257
|
+
var _el$234 = _$createElement("span"), _el$235 = _$createTextNode(` \u2014 `);
|
|
8258
|
+
_$insertNode(_el$234, _el$235);
|
|
8259
|
+
_$insert(_el$234, () => String(rt().evaluatorRejectionCount), _el$235);
|
|
8260
|
+
_$insert(_el$234, () => String(rt().lastRejectionDetails || "").slice(0, 80), null);
|
|
8261
|
+
_$effect((_$p) => _$setProp(_el$234, "style", {
|
|
8196
8262
|
fg: theme().warning
|
|
8197
8263
|
}, _$p));
|
|
8198
|
-
return _el$
|
|
8264
|
+
return _el$234;
|
|
8199
8265
|
})()];
|
|
8200
8266
|
})(), null);
|
|
8201
8267
|
_$insert(_el$133, (() => {
|
|
8202
|
-
var _c$
|
|
8203
|
-
return () => _c$
|
|
8204
|
-
var _el$
|
|
8268
|
+
var _c$18 = _$memo(() => rt()?.unknownStatusCount > 0);
|
|
8269
|
+
return () => _c$18() && [(() => {
|
|
8270
|
+
var _el$236 = _$createElement("span"), _el$237 = _$createTextNode(`
|
|
8205
8271
|
\u26A0\uFE0F unreachable: `);
|
|
8206
|
-
_$insertNode(_el$
|
|
8207
|
-
_$effect((_$p) => _$setProp(_el$
|
|
8272
|
+
_$insertNode(_el$236, _el$237);
|
|
8273
|
+
_$effect((_$p) => _$setProp(_el$236, "style", {
|
|
8208
8274
|
fg: theme().error
|
|
8209
8275
|
}, _$p));
|
|
8210
|
-
return _el$
|
|
8276
|
+
return _el$236;
|
|
8211
8277
|
})(), (() => {
|
|
8212
|
-
var _el$
|
|
8213
|
-
_$insertNode(_el$
|
|
8214
|
-
_$insert(_el$
|
|
8215
|
-
_$effect((_$p) => _$setProp(_el$
|
|
8278
|
+
var _el$239 = _$createElement("span"), _el$240 = _$createTextNode(`/3`);
|
|
8279
|
+
_$insertNode(_el$239, _el$240);
|
|
8280
|
+
_$insert(_el$239, () => String(rt().unknownStatusCount), _el$240);
|
|
8281
|
+
_$effect((_$p) => _$setProp(_el$239, "style", {
|
|
8216
8282
|
fg: theme().error
|
|
8217
8283
|
}, _$p));
|
|
8218
|
-
return _el$
|
|
8284
|
+
return _el$239;
|
|
8219
8285
|
})(), (() => {
|
|
8220
|
-
var _el$
|
|
8221
|
-
_$insertNode(_el$
|
|
8222
|
-
_$effect((_$p) => _$setProp(_el$
|
|
8286
|
+
var _el$241 = _$createElement("span");
|
|
8287
|
+
_$insertNode(_el$241, _$createTextNode(` \u2014 nudge to recover`));
|
|
8288
|
+
_$effect((_$p) => _$setProp(_el$241, "style", {
|
|
8223
8289
|
fg: theme().textMuted
|
|
8224
8290
|
}, _$p));
|
|
8225
|
-
return _el$
|
|
8291
|
+
return _el$241;
|
|
8226
8292
|
})()];
|
|
8227
8293
|
})(), null);
|
|
8228
8294
|
_$insert(_el$133, (() => {
|
|
8229
|
-
var _c$
|
|
8230
|
-
return () => _c$
|
|
8231
|
-
var _el$
|
|
8295
|
+
var _c$19 = _$memo(() => !!rt()?.retryAfter);
|
|
8296
|
+
return () => _c$19() && [(() => {
|
|
8297
|
+
var _el$243 = _$createElement("span"), _el$244 = _$createTextNode(`
|
|
8232
8298
|
\u21BB retry in: `);
|
|
8233
|
-
_$insertNode(_el$
|
|
8234
|
-
_$effect((_$p) => _$setProp(_el$
|
|
8299
|
+
_$insertNode(_el$243, _el$244);
|
|
8300
|
+
_$effect((_$p) => _$setProp(_el$243, "style", {
|
|
8235
8301
|
fg: theme().accent
|
|
8236
8302
|
}, _$p));
|
|
8237
|
-
return _el$
|
|
8303
|
+
return _el$243;
|
|
8238
8304
|
})(), (() => {
|
|
8239
|
-
var _el$
|
|
8240
|
-
_$insert(_el$
|
|
8241
|
-
_$effect((_$p) => _$setProp(_el$
|
|
8305
|
+
var _el$246 = _$createElement("span");
|
|
8306
|
+
_$insert(_el$246, () => countdownLabel(rt().retryAfter, clock()));
|
|
8307
|
+
_$effect((_$p) => _$setProp(_el$246, "style", {
|
|
8242
8308
|
fg: theme().accent
|
|
8243
8309
|
}, _$p));
|
|
8244
|
-
return _el$
|
|
8310
|
+
return _el$246;
|
|
8245
8311
|
})()];
|
|
8246
8312
|
})(), null);
|
|
8247
8313
|
_$insert(_el$133, (() => {
|
|
8248
|
-
var _c$
|
|
8249
|
-
return () => _c$
|
|
8250
|
-
var _el$
|
|
8314
|
+
var _c$20 = _$memo(() => !!rt()?.nextRunAt);
|
|
8315
|
+
return () => _c$20() && [(() => {
|
|
8316
|
+
var _el$247 = _$createElement("span"), _el$248 = _$createTextNode(`
|
|
8251
8317
|
\u23F0 next run: `);
|
|
8252
|
-
_$insertNode(_el$
|
|
8253
|
-
_$effect((_$p) => _$setProp(_el$
|
|
8318
|
+
_$insertNode(_el$247, _el$248);
|
|
8319
|
+
_$effect((_$p) => _$setProp(_el$247, "style", {
|
|
8254
8320
|
fg: theme().accent
|
|
8255
8321
|
}, _$p));
|
|
8256
|
-
return _el$
|
|
8322
|
+
return _el$247;
|
|
8257
8323
|
})(), (() => {
|
|
8258
|
-
var _el$
|
|
8259
|
-
_$insert(_el$
|
|
8260
|
-
_$effect((_$p) => _$setProp(_el$
|
|
8324
|
+
var _el$250 = _$createElement("span");
|
|
8325
|
+
_$insert(_el$250, () => countdownLabel(rt().nextRunAt, clock()));
|
|
8326
|
+
_$effect((_$p) => _$setProp(_el$250, "style", {
|
|
8261
8327
|
fg: theme().accent
|
|
8262
8328
|
}, _$p));
|
|
8263
|
-
return _el$
|
|
8329
|
+
return _el$250;
|
|
8264
8330
|
})(), (() => {
|
|
8265
|
-
var _el$
|
|
8266
|
-
_$insertNode(_el$
|
|
8267
|
-
_$insertNode(_el$
|
|
8268
|
-
_$insert(_el$
|
|
8269
|
-
_$effect((_$p) => _$setProp(_el$
|
|
8331
|
+
var _el$251 = _$createElement("span"), _el$252 = _$createTextNode(` (`), _el$253 = _$createTextNode(` runs)`);
|
|
8332
|
+
_$insertNode(_el$251, _el$252);
|
|
8333
|
+
_$insertNode(_el$251, _el$253);
|
|
8334
|
+
_$insert(_el$251, () => String(rt().scheduleRunCount || 0), _el$253);
|
|
8335
|
+
_$effect((_$p) => _$setProp(_el$251, "style", {
|
|
8270
8336
|
fg: theme().textMuted
|
|
8271
8337
|
}, _$p));
|
|
8272
|
-
return _el$
|
|
8338
|
+
return _el$251;
|
|
8273
8339
|
})()];
|
|
8274
8340
|
})(), null);
|
|
8275
8341
|
_$insert(_el$133, (() => {
|
|
8276
|
-
var _c$
|
|
8277
|
-
return () => _c$
|
|
8278
|
-
var _el$
|
|
8342
|
+
var _c$21 = _$memo(() => !!rt()?.lastError);
|
|
8343
|
+
return () => _c$21() && [(() => {
|
|
8344
|
+
var _el$254 = _$createElement("span"), _el$255 = _$createTextNode(`
|
|
8279
8345
|
\u26A0 `);
|
|
8280
|
-
_$insertNode(_el$
|
|
8281
|
-
_$effect((_$p) => _$setProp(_el$
|
|
8346
|
+
_$insertNode(_el$254, _el$255);
|
|
8347
|
+
_$effect((_$p) => _$setProp(_el$254, "style", {
|
|
8282
8348
|
fg: theme().error
|
|
8283
8349
|
}, _$p));
|
|
8284
|
-
return _el$
|
|
8350
|
+
return _el$254;
|
|
8285
8351
|
})(), (() => {
|
|
8286
|
-
var _el$
|
|
8287
|
-
_$insertNode(_el$
|
|
8288
|
-
_$effect((_$p) => _$setProp(_el$
|
|
8352
|
+
var _el$257 = _$createElement("span");
|
|
8353
|
+
_$insertNode(_el$257, _$createTextNode(`Error: `));
|
|
8354
|
+
_$effect((_$p) => _$setProp(_el$257, "style", {
|
|
8289
8355
|
fg: theme().error,
|
|
8290
8356
|
bold: true
|
|
8291
8357
|
}, _$p));
|
|
8292
|
-
return _el$
|
|
8358
|
+
return _el$257;
|
|
8293
8359
|
})(), (() => {
|
|
8294
|
-
var _el$
|
|
8295
|
-
_$insert(_el$
|
|
8296
|
-
_$effect((_$p) => _$setProp(_el$
|
|
8360
|
+
var _el$259 = _$createElement("span");
|
|
8361
|
+
_$insert(_el$259, () => rt().lastError.slice(0, 120));
|
|
8362
|
+
_$effect((_$p) => _$setProp(_el$259, "style", {
|
|
8297
8363
|
fg: theme().error
|
|
8298
8364
|
}, _$p));
|
|
8299
|
-
return _el$
|
|
8365
|
+
return _el$259;
|
|
8300
8366
|
})()];
|
|
8301
8367
|
})(), null);
|
|
8302
8368
|
_$effect((_p$) => {
|
|
@@ -8349,28 +8415,28 @@ function LoopDashboard(props) {
|
|
|
8349
8415
|
},
|
|
8350
8416
|
get fallback() {
|
|
8351
8417
|
return (() => {
|
|
8352
|
-
var _el$
|
|
8353
|
-
_$insertNode(_el$
|
|
8354
|
-
_$insertNode(_el$
|
|
8355
|
-
_$setProp(_el$
|
|
8356
|
-
_$setProp(_el$
|
|
8357
|
-
_$setProp(_el$
|
|
8358
|
-
_$insertNode(_el$254, _el$255);
|
|
8359
|
-
_$insertNode(_el$254, _el$257);
|
|
8360
|
-
_$insertNode(_el$254, _el$259);
|
|
8361
|
-
_$insertNode(_el$255, _$createTextNode(`No command sessions owned by this session. `));
|
|
8362
|
-
_$insertNode(_el$257, _$createTextNode(`:new <command>`));
|
|
8363
|
-
_$insertNode(_el$259, _$createTextNode(` to start one.`));
|
|
8418
|
+
var _el$260 = _$createElement("box"), _el$261 = _$createElement("text"), _el$262 = _$createElement("span"), _el$264 = _$createElement("span"), _el$266 = _$createElement("span"), _el$268 = _$createElement("text"), _el$269 = _$createElement("span"), _el$271 = _$createElement("span"), _el$273 = _$createElement("span"), _el$275 = _$createElement("span"), _el$277 = _$createElement("span");
|
|
8419
|
+
_$insertNode(_el$260, _el$261);
|
|
8420
|
+
_$insertNode(_el$260, _el$268);
|
|
8421
|
+
_$setProp(_el$260, "flexDirection", "column");
|
|
8422
|
+
_$setProp(_el$260, "gap", 1);
|
|
8423
|
+
_$setProp(_el$260, "padding", 1);
|
|
8364
8424
|
_$insertNode(_el$261, _el$262);
|
|
8365
8425
|
_$insertNode(_el$261, _el$264);
|
|
8366
8426
|
_$insertNode(_el$261, _el$266);
|
|
8367
|
-
_$insertNode(_el$
|
|
8368
|
-
_$insertNode(_el$
|
|
8369
|
-
_$insertNode(_el$
|
|
8370
|
-
_$insertNode(_el$
|
|
8371
|
-
_$insertNode(_el$
|
|
8372
|
-
_$insertNode(_el$268,
|
|
8373
|
-
_$insertNode(_el$
|
|
8427
|
+
_$insertNode(_el$262, _$createTextNode(`No command sessions owned by this session. `));
|
|
8428
|
+
_$insertNode(_el$264, _$createTextNode(`:new <command>`));
|
|
8429
|
+
_$insertNode(_el$266, _$createTextNode(` to start one.`));
|
|
8430
|
+
_$insertNode(_el$268, _el$269);
|
|
8431
|
+
_$insertNode(_el$268, _el$271);
|
|
8432
|
+
_$insertNode(_el$268, _el$273);
|
|
8433
|
+
_$insertNode(_el$268, _el$275);
|
|
8434
|
+
_$insertNode(_el$268, _el$277);
|
|
8435
|
+
_$insertNode(_el$269, _$createTextNode(`Tip: `));
|
|
8436
|
+
_$insertNode(_el$271, _$createTextNode(`o`));
|
|
8437
|
+
_$insertNode(_el$273, _$createTextNode(` fullscreen \xB7 `));
|
|
8438
|
+
_$insertNode(_el$275, _$createTextNode(`:interrupt :terminate :remove`));
|
|
8439
|
+
_$insertNode(_el$277, _$createTextNode(` manage \xB7 text + Enter writes stdin.`));
|
|
8374
8440
|
_$effect((_p$) => {
|
|
8375
8441
|
var _v$49 = {
|
|
8376
8442
|
fg: theme().textMuted
|
|
@@ -8389,14 +8455,14 @@ function LoopDashboard(props) {
|
|
|
8389
8455
|
}, _v$56 = {
|
|
8390
8456
|
fg: theme().textMuted
|
|
8391
8457
|
};
|
|
8392
|
-
_v$49 !== _p$.e && (_p$.e = _$setProp(_el$
|
|
8393
|
-
_v$50 !== _p$.t && (_p$.t = _$setProp(_el$
|
|
8394
|
-
_v$51 !== _p$.a && (_p$.a = _$setProp(_el$
|
|
8395
|
-
_v$52 !== _p$.o && (_p$.o = _$setProp(_el$
|
|
8396
|
-
_v$53 !== _p$.i && (_p$.i = _$setProp(_el$
|
|
8397
|
-
_v$54 !== _p$.n && (_p$.n = _$setProp(_el$
|
|
8398
|
-
_v$55 !== _p$.s && (_p$.s = _$setProp(_el$
|
|
8399
|
-
_v$56 !== _p$.h && (_p$.h = _$setProp(_el$
|
|
8458
|
+
_v$49 !== _p$.e && (_p$.e = _$setProp(_el$262, "style", _v$49, _p$.e));
|
|
8459
|
+
_v$50 !== _p$.t && (_p$.t = _$setProp(_el$264, "style", _v$50, _p$.t));
|
|
8460
|
+
_v$51 !== _p$.a && (_p$.a = _$setProp(_el$266, "style", _v$51, _p$.a));
|
|
8461
|
+
_v$52 !== _p$.o && (_p$.o = _$setProp(_el$269, "style", _v$52, _p$.o));
|
|
8462
|
+
_v$53 !== _p$.i && (_p$.i = _$setProp(_el$271, "style", _v$53, _p$.i));
|
|
8463
|
+
_v$54 !== _p$.n && (_p$.n = _$setProp(_el$273, "style", _v$54, _p$.n));
|
|
8464
|
+
_v$55 !== _p$.s && (_p$.s = _$setProp(_el$275, "style", _v$55, _p$.s));
|
|
8465
|
+
_v$56 !== _p$.h && (_p$.h = _$setProp(_el$277, "style", _v$56, _p$.h));
|
|
8400
8466
|
return _p$;
|
|
8401
8467
|
}, {
|
|
8402
8468
|
e: undefined,
|
|
@@ -8408,7 +8474,7 @@ function LoopDashboard(props) {
|
|
|
8408
8474
|
s: undefined,
|
|
8409
8475
|
h: undefined
|
|
8410
8476
|
});
|
|
8411
|
-
return _el$
|
|
8477
|
+
return _el$260;
|
|
8412
8478
|
})();
|
|
8413
8479
|
},
|
|
8414
8480
|
get children() {
|
|
@@ -8420,77 +8486,77 @@ function LoopDashboard(props) {
|
|
|
8420
8486
|
children: (cmd, i) => {
|
|
8421
8487
|
const isActive = () => i() === cmdSelected();
|
|
8422
8488
|
return (() => {
|
|
8423
|
-
var _el$
|
|
8424
|
-
_$insertNode(_el$
|
|
8425
|
-
_$setProp(_el$
|
|
8426
|
-
_$setProp(_el$
|
|
8427
|
-
_$setProp(_el$
|
|
8428
|
-
_$insertNode(_el$
|
|
8429
|
-
_$insertNode(_el$
|
|
8430
|
-
_$insertNode(_el$
|
|
8431
|
-
_$insertNode(_el$
|
|
8432
|
-
_$insertNode(_el$
|
|
8433
|
-
_$insertNode(_el$
|
|
8434
|
-
_$insertNode(_el$
|
|
8435
|
-
_$setProp(_el$
|
|
8436
|
-
_$setProp(_el$
|
|
8437
|
-
_$insert(_el$
|
|
8438
|
-
var _c$
|
|
8439
|
-
return () => _c$
|
|
8489
|
+
var _el$279 = _$createElement("box"), _el$280 = _$createElement("text"), _el$281 = _$createElement("span"), _el$282 = _$createElement("span"), _el$284 = _$createElement("span"), _el$286 = _$createElement("span"), _el$287 = _$createElement("span"), _el$289 = _$createElement("span"), _el$290 = _$createElement("span"), _el$291 = _$createTextNode(` \u2502 `);
|
|
8490
|
+
_$insertNode(_el$279, _el$280);
|
|
8491
|
+
_$setProp(_el$279, "flexDirection", "row");
|
|
8492
|
+
_$setProp(_el$279, "paddingLeft", 1);
|
|
8493
|
+
_$setProp(_el$279, "paddingRight", 1);
|
|
8494
|
+
_$insertNode(_el$280, _el$281);
|
|
8495
|
+
_$insertNode(_el$280, _el$282);
|
|
8496
|
+
_$insertNode(_el$280, _el$284);
|
|
8497
|
+
_$insertNode(_el$280, _el$286);
|
|
8498
|
+
_$insertNode(_el$280, _el$287);
|
|
8499
|
+
_$insertNode(_el$280, _el$289);
|
|
8500
|
+
_$insertNode(_el$280, _el$290);
|
|
8501
|
+
_$setProp(_el$280, "wrapMode", "none");
|
|
8502
|
+
_$setProp(_el$280, "truncate", true);
|
|
8503
|
+
_$insert(_el$281, (() => {
|
|
8504
|
+
var _c$23 = _$memo(() => !!isActive());
|
|
8505
|
+
return () => _c$23() ? `\u25B6 ${commandStatusIcon(cmd.status)} ${cmd.title}` : ` ${commandStatusIcon(cmd.status)} ${cmd.title}`;
|
|
8440
8506
|
})());
|
|
8441
|
-
_$insertNode(_el$
|
|
8442
|
-
_$insertNode(_el$
|
|
8443
|
-
_$insert(_el$
|
|
8444
|
-
_$insertNode(_el$
|
|
8445
|
-
_$insert(_el$
|
|
8446
|
-
_$insert(_el$
|
|
8447
|
-
var _c$
|
|
8448
|
-
return () => _c$
|
|
8449
|
-
var _el$
|
|
8450
|
-
_$insertNode(_el$
|
|
8451
|
-
_$insert(_el$
|
|
8452
|
-
_$effect((_$p) => _$setProp(_el$
|
|
8507
|
+
_$insertNode(_el$282, _$createTextNode(` \u2502 `));
|
|
8508
|
+
_$insertNode(_el$284, _$createTextNode(`Cmd `));
|
|
8509
|
+
_$insert(_el$286, () => commandStatusLabel(cmd.status).short);
|
|
8510
|
+
_$insertNode(_el$287, _$createTextNode(` \u2502 `));
|
|
8511
|
+
_$insert(_el$289, () => cmd.command);
|
|
8512
|
+
_$insert(_el$280, (() => {
|
|
8513
|
+
var _c$24 = _$memo(() => cmd.args.length > 0);
|
|
8514
|
+
return () => _c$24() && (() => {
|
|
8515
|
+
var _el$292 = _$createElement("span"), _el$293 = _$createTextNode(` `);
|
|
8516
|
+
_$insertNode(_el$292, _el$293);
|
|
8517
|
+
_$insert(_el$292, () => cmd.args.join(" ").slice(0, 40), null);
|
|
8518
|
+
_$effect((_$p) => _$setProp(_el$292, "style", {
|
|
8453
8519
|
fg: theme().textMuted
|
|
8454
8520
|
}, _$p));
|
|
8455
|
-
return _el$
|
|
8521
|
+
return _el$292;
|
|
8456
8522
|
})();
|
|
8457
|
-
})(), _el$
|
|
8458
|
-
_$insert(_el$
|
|
8459
|
-
var _c$
|
|
8460
|
-
return () => _c$
|
|
8461
|
-
var _el$
|
|
8462
|
-
_$insertNode(_el$
|
|
8463
|
-
_$insert(_el$
|
|
8464
|
-
_$effect((_$p) => _$setProp(_el$
|
|
8523
|
+
})(), _el$290);
|
|
8524
|
+
_$insert(_el$280, (() => {
|
|
8525
|
+
var _c$25 = _$memo(() => cmd.exitCode !== undefined);
|
|
8526
|
+
return () => _c$25() && (() => {
|
|
8527
|
+
var _el$294 = _$createElement("span"), _el$295 = _$createTextNode(` \u2502 exit `);
|
|
8528
|
+
_$insertNode(_el$294, _el$295);
|
|
8529
|
+
_$insert(_el$294, () => cmd.exitCode, null);
|
|
8530
|
+
_$effect((_$p) => _$setProp(_el$294, "style", {
|
|
8465
8531
|
fg: cmd.exitCode === 0 ? theme().success : theme().error
|
|
8466
8532
|
}, _$p));
|
|
8467
|
-
return _el$
|
|
8533
|
+
return _el$294;
|
|
8468
8534
|
})();
|
|
8469
|
-
})(), _el$
|
|
8470
|
-
_$insert(_el$
|
|
8471
|
-
var _c$
|
|
8472
|
-
return () => _c$
|
|
8473
|
-
var _el$
|
|
8474
|
-
_$insertNode(_el$
|
|
8475
|
-
_$insert(_el$
|
|
8476
|
-
_$effect((_$p) => _$setProp(_el$
|
|
8535
|
+
})(), _el$290);
|
|
8536
|
+
_$insert(_el$280, (() => {
|
|
8537
|
+
var _c$26 = _$memo(() => !!cmd.signal);
|
|
8538
|
+
return () => _c$26() && (() => {
|
|
8539
|
+
var _el$296 = _$createElement("span"), _el$297 = _$createTextNode(` \u2502 `);
|
|
8540
|
+
_$insertNode(_el$296, _el$297);
|
|
8541
|
+
_$insert(_el$296, () => cmd.signal, null);
|
|
8542
|
+
_$effect((_$p) => _$setProp(_el$296, "style", {
|
|
8477
8543
|
fg: theme().warning
|
|
8478
8544
|
}, _$p));
|
|
8479
|
-
return _el$
|
|
8545
|
+
return _el$296;
|
|
8480
8546
|
})();
|
|
8481
|
-
})(), _el$
|
|
8482
|
-
_$insertNode(_el$
|
|
8483
|
-
_$insert(_el$
|
|
8484
|
-
_$insert(_el$
|
|
8485
|
-
var _c$
|
|
8486
|
-
return () => _c$
|
|
8487
|
-
var _el$
|
|
8488
|
-
_$insertNode(_el$
|
|
8489
|
-
_$effect((_$p) => _$setProp(_el$
|
|
8547
|
+
})(), _el$290);
|
|
8548
|
+
_$insertNode(_el$290, _el$291);
|
|
8549
|
+
_$insert(_el$290, () => ageLabel(cmd.updatedAt, clock()), null);
|
|
8550
|
+
_$insert(_el$280, (() => {
|
|
8551
|
+
var _c$27 = _$memo(() => !!cmd.truncated);
|
|
8552
|
+
return () => _c$27() && (() => {
|
|
8553
|
+
var _el$298 = _$createElement("span");
|
|
8554
|
+
_$insertNode(_el$298, _$createTextNode(` \u2502 \u26A0 truncated`));
|
|
8555
|
+
_$effect((_$p) => _$setProp(_el$298, "style", {
|
|
8490
8556
|
fg: theme().warning,
|
|
8491
8557
|
bold: true
|
|
8492
8558
|
}, _$p));
|
|
8493
|
-
return _el$
|
|
8559
|
+
return _el$298;
|
|
8494
8560
|
})();
|
|
8495
8561
|
})(), null);
|
|
8496
8562
|
_$effect((_p$) => {
|
|
@@ -8512,14 +8578,14 @@ function LoopDashboard(props) {
|
|
|
8512
8578
|
}, _v$64 = {
|
|
8513
8579
|
fg: theme().textMuted
|
|
8514
8580
|
};
|
|
8515
|
-
_v$57 !== _p$.e && (_p$.e = _$setProp(_el$
|
|
8516
|
-
_v$58 !== _p$.t && (_p$.t = _$setProp(_el$
|
|
8517
|
-
_v$59 !== _p$.a && (_p$.a = _$setProp(_el$
|
|
8518
|
-
_v$60 !== _p$.o && (_p$.o = _$setProp(_el$
|
|
8519
|
-
_v$61 !== _p$.i && (_p$.i = _$setProp(_el$
|
|
8520
|
-
_v$62 !== _p$.n && (_p$.n = _$setProp(_el$
|
|
8521
|
-
_v$63 !== _p$.s && (_p$.s = _$setProp(_el$
|
|
8522
|
-
_v$64 !== _p$.h && (_p$.h = _$setProp(_el$
|
|
8581
|
+
_v$57 !== _p$.e && (_p$.e = _$setProp(_el$279, "backgroundColor", _v$57, _p$.e));
|
|
8582
|
+
_v$58 !== _p$.t && (_p$.t = _$setProp(_el$281, "style", _v$58, _p$.t));
|
|
8583
|
+
_v$59 !== _p$.a && (_p$.a = _$setProp(_el$282, "style", _v$59, _p$.a));
|
|
8584
|
+
_v$60 !== _p$.o && (_p$.o = _$setProp(_el$284, "style", _v$60, _p$.o));
|
|
8585
|
+
_v$61 !== _p$.i && (_p$.i = _$setProp(_el$286, "style", _v$61, _p$.i));
|
|
8586
|
+
_v$62 !== _p$.n && (_p$.n = _$setProp(_el$287, "style", _v$62, _p$.n));
|
|
8587
|
+
_v$63 !== _p$.s && (_p$.s = _$setProp(_el$289, "style", _v$63, _p$.s));
|
|
8588
|
+
_v$64 !== _p$.h && (_p$.h = _$setProp(_el$290, "style", _v$64, _p$.h));
|
|
8523
8589
|
return _p$;
|
|
8524
8590
|
}, {
|
|
8525
8591
|
e: undefined,
|
|
@@ -8531,7 +8597,7 @@ function LoopDashboard(props) {
|
|
|
8531
8597
|
s: undefined,
|
|
8532
8598
|
h: undefined
|
|
8533
8599
|
});
|
|
8534
|
-
return _el$
|
|
8600
|
+
return _el$279;
|
|
8535
8601
|
})();
|
|
8536
8602
|
}
|
|
8537
8603
|
}));
|
|
@@ -8543,115 +8609,115 @@ function LoopDashboard(props) {
|
|
|
8543
8609
|
return selectedCommand();
|
|
8544
8610
|
},
|
|
8545
8611
|
children: (cmd) => (() => {
|
|
8546
|
-
var _el$
|
|
8547
|
-
`), _el$
|
|
8548
|
-
`), _el$
|
|
8549
|
-
`), _el$
|
|
8550
|
-
`), _el$
|
|
8551
|
-
_$insertNode(_el$
|
|
8552
|
-
_$setProp(_el$
|
|
8553
|
-
_$setProp(_el$
|
|
8554
|
-
_$setProp(_el$
|
|
8555
|
-
_$setProp(_el$
|
|
8556
|
-
_$setProp(_el$
|
|
8557
|
-
_$insertNode(_el$
|
|
8558
|
-
_$insertNode(_el$
|
|
8559
|
-
_$insertNode(_el$
|
|
8560
|
-
_$insertNode(_el$
|
|
8561
|
-
_$insertNode(_el$
|
|
8562
|
-
_$insertNode(_el$
|
|
8563
|
-
_$insertNode(_el$
|
|
8564
|
-
_$insertNode(_el$
|
|
8565
|
-
_$insertNode(_el$
|
|
8566
|
-
_$insertNode(_el$
|
|
8567
|
-
_$insertNode(_el$
|
|
8568
|
-
_$insertNode(_el$
|
|
8569
|
-
_$insertNode(_el$
|
|
8570
|
-
_$insertNode(_el$
|
|
8571
|
-
_$insertNode(_el$
|
|
8572
|
-
_$insertNode(_el$
|
|
8573
|
-
_$insertNode(_el$
|
|
8574
|
-
_$insertNode(_el$
|
|
8575
|
-
_$insert(_el$
|
|
8576
|
-
_$insert(_el$
|
|
8577
|
-
_$insertNode(_el$
|
|
8578
|
-
_$insertNode(_el$
|
|
8579
|
-
_$insert(_el$
|
|
8580
|
-
_$insert(_el$
|
|
8581
|
-
_$insertNode(_el$
|
|
8582
|
-
_$insert(_el$
|
|
8583
|
-
_$insert(_el$
|
|
8584
|
-
var _c$
|
|
8585
|
-
return () => _c$
|
|
8586
|
-
var _el$
|
|
8587
|
-
_$insertNode(_el$
|
|
8588
|
-
_$insert(_el$
|
|
8589
|
-
_$effect((_$p) => _$setProp(_el$
|
|
8612
|
+
var _el$300 = _$createElement("box"), _el$301 = _$createElement("text"), _el$302 = _$createElement("span"), _el$303 = _$createTextNode(` `), _el$304 = _$createElement("span"), _el$306 = _$createElement("span"), _el$307 = _$createTextNode(` \u2014 `), _el$308 = _$createTextNode(`
|
|
8613
|
+
`), _el$309 = _$createElement("span"), _el$311 = _$createElement("span"), _el$312 = _$createTextNode(`
|
|
8614
|
+
`), _el$313 = _$createElement("span"), _el$315 = _$createElement("span"), _el$317 = _$createElement("span"), _el$318 = _$createTextNode(`
|
|
8615
|
+
`), _el$319 = _$createElement("span"), _el$321 = _$createElement("span"), _el$323 = _$createElement("span"), _el$324 = _$createTextNode(` bytes`), _el$325 = _$createElement("span"), _el$326 = _$createTextNode(` \u2502 updated `), _el$327 = _$createTextNode(`
|
|
8616
|
+
`), _el$328 = _$createElement("span");
|
|
8617
|
+
_$insertNode(_el$300, _el$301);
|
|
8618
|
+
_$setProp(_el$300, "flexDirection", "column");
|
|
8619
|
+
_$setProp(_el$300, "border", true);
|
|
8620
|
+
_$setProp(_el$300, "padding", 1);
|
|
8621
|
+
_$setProp(_el$300, "flexShrink", 0);
|
|
8622
|
+
_$setProp(_el$300, "maxHeight", 8);
|
|
8623
|
+
_$insertNode(_el$301, _el$302);
|
|
8624
|
+
_$insertNode(_el$301, _el$304);
|
|
8625
|
+
_$insertNode(_el$301, _el$306);
|
|
8626
|
+
_$insertNode(_el$301, _el$308);
|
|
8627
|
+
_$insertNode(_el$301, _el$309);
|
|
8628
|
+
_$insertNode(_el$301, _el$311);
|
|
8629
|
+
_$insertNode(_el$301, _el$312);
|
|
8630
|
+
_$insertNode(_el$301, _el$313);
|
|
8631
|
+
_$insertNode(_el$301, _el$315);
|
|
8632
|
+
_$insertNode(_el$301, _el$317);
|
|
8633
|
+
_$insertNode(_el$301, _el$318);
|
|
8634
|
+
_$insertNode(_el$301, _el$319);
|
|
8635
|
+
_$insertNode(_el$301, _el$321);
|
|
8636
|
+
_$insertNode(_el$301, _el$323);
|
|
8637
|
+
_$insertNode(_el$301, _el$325);
|
|
8638
|
+
_$insertNode(_el$301, _el$327);
|
|
8639
|
+
_$insertNode(_el$301, _el$328);
|
|
8640
|
+
_$insertNode(_el$302, _el$303);
|
|
8641
|
+
_$insert(_el$302, () => commandStatusIcon(cmd().status), _el$303);
|
|
8642
|
+
_$insert(_el$302, () => cmd().title, null);
|
|
8643
|
+
_$insertNode(_el$304, _$createTextNode(` Cmd `));
|
|
8644
|
+
_$insertNode(_el$306, _el$307);
|
|
8645
|
+
_$insert(_el$306, () => commandStatusLabel(cmd().status).short, _el$307);
|
|
8646
|
+
_$insert(_el$306, () => commandStatusLabel(cmd().status).hint, null);
|
|
8647
|
+
_$insertNode(_el$309, _$createTextNode(`\u2B22 Spawn: `));
|
|
8648
|
+
_$insert(_el$311, () => cmd().command);
|
|
8649
|
+
_$insert(_el$301, (() => {
|
|
8650
|
+
var _c$28 = _$memo(() => cmd().args.length > 0);
|
|
8651
|
+
return () => _c$28() && (() => {
|
|
8652
|
+
var _el$330 = _$createElement("span"), _el$331 = _$createTextNode(` `);
|
|
8653
|
+
_$insertNode(_el$330, _el$331);
|
|
8654
|
+
_$insert(_el$330, () => cmd().args.join(" "), null);
|
|
8655
|
+
_$effect((_$p) => _$setProp(_el$330, "style", {
|
|
8590
8656
|
fg: theme().text
|
|
8591
8657
|
}, _$p));
|
|
8592
|
-
return _el$
|
|
8658
|
+
return _el$330;
|
|
8593
8659
|
})();
|
|
8594
|
-
})(), _el$
|
|
8595
|
-
_$insertNode(_el$
|
|
8596
|
-
_$insertNode(_el$
|
|
8597
|
-
_$insert(_el$
|
|
8598
|
-
_$insert(_el$
|
|
8599
|
-
var _c$
|
|
8600
|
-
return () => _c$
|
|
8601
|
-
var _el$
|
|
8602
|
-
_$insertNode(_el$
|
|
8603
|
-
_$effect((_$p) => _$setProp(_el$
|
|
8660
|
+
})(), _el$312);
|
|
8661
|
+
_$insertNode(_el$313, _$createTextNode(`\uD83D\uDCC1 `));
|
|
8662
|
+
_$insertNode(_el$315, _$createTextNode(`Cwd: `));
|
|
8663
|
+
_$insert(_el$317, () => cmd().cwd.replace(String(props.directory), "."));
|
|
8664
|
+
_$insert(_el$301, (() => {
|
|
8665
|
+
var _c$29 = _$memo(() => !!cmd().goalID);
|
|
8666
|
+
return () => _c$29() && [(() => {
|
|
8667
|
+
var _el$332 = _$createElement("span");
|
|
8668
|
+
_$insertNode(_el$332, _$createTextNode(` \u2502 \uD83D\uDD17 linked goal `));
|
|
8669
|
+
_$effect((_$p) => _$setProp(_el$332, "style", {
|
|
8604
8670
|
fg: theme().textMuted
|
|
8605
8671
|
}, _$p));
|
|
8606
|
-
return _el$
|
|
8672
|
+
return _el$332;
|
|
8607
8673
|
})(), (() => {
|
|
8608
|
-
var _el$
|
|
8609
|
-
_$insert(_el$
|
|
8610
|
-
_$effect((_$p) => _$setProp(_el$
|
|
8674
|
+
var _el$334 = _$createElement("span");
|
|
8675
|
+
_$insert(_el$334, () => cmd().goalID.slice(0, 8));
|
|
8676
|
+
_$effect((_$p) => _$setProp(_el$334, "style", {
|
|
8611
8677
|
fg: theme().text
|
|
8612
8678
|
}, _$p));
|
|
8613
|
-
return _el$
|
|
8679
|
+
return _el$334;
|
|
8614
8680
|
})()];
|
|
8615
|
-
})(), _el$
|
|
8616
|
-
_$insertNode(_el$
|
|
8617
|
-
_$insertNode(_el$
|
|
8618
|
-
_$insertNode(_el$
|
|
8619
|
-
_$insert(_el$
|
|
8620
|
-
_$insert(_el$
|
|
8621
|
-
var _c$
|
|
8622
|
-
return () => _c$
|
|
8623
|
-
var _el$
|
|
8624
|
-
_$insertNode(_el$
|
|
8625
|
-
_$effect((_$p) => _$setProp(_el$
|
|
8681
|
+
})(), _el$318);
|
|
8682
|
+
_$insertNode(_el$319, _$createTextNode(`\uD83D\uDCBE `));
|
|
8683
|
+
_$insertNode(_el$321, _$createTextNode(`Output: `));
|
|
8684
|
+
_$insertNode(_el$323, _el$324);
|
|
8685
|
+
_$insert(_el$323, () => cmd().outputBytes, _el$324);
|
|
8686
|
+
_$insert(_el$301, (() => {
|
|
8687
|
+
var _c$30 = _$memo(() => !!cmd().truncated);
|
|
8688
|
+
return () => _c$30() && (() => {
|
|
8689
|
+
var _el$335 = _$createElement("span");
|
|
8690
|
+
_$insertNode(_el$335, _$createTextNode(` \xB7 \u26A0 truncated`));
|
|
8691
|
+
_$effect((_$p) => _$setProp(_el$335, "style", {
|
|
8626
8692
|
fg: theme().warning,
|
|
8627
8693
|
bold: true
|
|
8628
8694
|
}, _$p));
|
|
8629
|
-
return _el$
|
|
8695
|
+
return _el$335;
|
|
8630
8696
|
})();
|
|
8631
|
-
})(), _el$
|
|
8632
|
-
_$insertNode(_el$
|
|
8633
|
-
_$insert(_el$
|
|
8634
|
-
_$insert(_el$
|
|
8635
|
-
var _c$
|
|
8636
|
-
return () => _c$
|
|
8637
|
-
var _el$
|
|
8697
|
+
})(), _el$325);
|
|
8698
|
+
_$insertNode(_el$325, _el$326);
|
|
8699
|
+
_$insert(_el$325, () => ageLabel(cmd().updatedAt, clock()), null);
|
|
8700
|
+
_$insert(_el$301, (() => {
|
|
8701
|
+
var _c$31 = _$memo(() => !!cmd().lastError);
|
|
8702
|
+
return () => _c$31() && [(() => {
|
|
8703
|
+
var _el$337 = _$createElement("span"), _el$338 = _$createTextNode(`
|
|
8638
8704
|
\u26A0 Error: `);
|
|
8639
|
-
_$insertNode(_el$
|
|
8640
|
-
_$effect((_$p) => _$setProp(_el$
|
|
8705
|
+
_$insertNode(_el$337, _el$338);
|
|
8706
|
+
_$effect((_$p) => _$setProp(_el$337, "style", {
|
|
8641
8707
|
fg: theme().error,
|
|
8642
8708
|
bold: true
|
|
8643
8709
|
}, _$p));
|
|
8644
|
-
return _el$
|
|
8710
|
+
return _el$337;
|
|
8645
8711
|
})(), (() => {
|
|
8646
|
-
var _el$
|
|
8647
|
-
_$insert(_el$
|
|
8648
|
-
_$effect((_$p) => _$setProp(_el$
|
|
8712
|
+
var _el$340 = _$createElement("span");
|
|
8713
|
+
_$insert(_el$340, () => cmd().lastError.slice(0, 120));
|
|
8714
|
+
_$effect((_$p) => _$setProp(_el$340, "style", {
|
|
8649
8715
|
fg: theme().error
|
|
8650
8716
|
}, _$p));
|
|
8651
|
-
return _el$
|
|
8717
|
+
return _el$340;
|
|
8652
8718
|
})()];
|
|
8653
|
-
})(), _el$
|
|
8654
|
-
_$insertNode(_el$
|
|
8719
|
+
})(), _el$327);
|
|
8720
|
+
_$insertNode(_el$328, _$createTextNode(`o fullscreen \xB7 :interrupt :terminate :remove \xB7 text + Enter writes stdin`));
|
|
8655
8721
|
_$effect((_p$) => {
|
|
8656
8722
|
var _v$65 = commandBorderColor(cmd().status, theme()), _v$66 = {
|
|
8657
8723
|
fg: commandStatusColor(cmd().status, theme()),
|
|
@@ -8686,20 +8752,20 @@ function LoopDashboard(props) {
|
|
|
8686
8752
|
}, _v$78 = {
|
|
8687
8753
|
fg: theme().textMuted
|
|
8688
8754
|
};
|
|
8689
|
-
_v$65 !== _p$.e && (_p$.e = _$setProp(_el$
|
|
8690
|
-
_v$66 !== _p$.t && (_p$.t = _$setProp(_el$
|
|
8691
|
-
_v$67 !== _p$.a && (_p$.a = _$setProp(_el$
|
|
8692
|
-
_v$68 !== _p$.o && (_p$.o = _$setProp(_el$
|
|
8693
|
-
_v$69 !== _p$.i && (_p$.i = _$setProp(_el$
|
|
8694
|
-
_v$70 !== _p$.n && (_p$.n = _$setProp(_el$
|
|
8695
|
-
_v$71 !== _p$.s && (_p$.s = _$setProp(_el$
|
|
8696
|
-
_v$72 !== _p$.h && (_p$.h = _$setProp(_el$
|
|
8697
|
-
_v$73 !== _p$.r && (_p$.r = _$setProp(_el$
|
|
8698
|
-
_v$74 !== _p$.d && (_p$.d = _$setProp(_el$
|
|
8699
|
-
_v$75 !== _p$.l && (_p$.l = _$setProp(_el$
|
|
8700
|
-
_v$76 !== _p$.u && (_p$.u = _$setProp(_el$
|
|
8701
|
-
_v$77 !== _p$.c && (_p$.c = _$setProp(_el$
|
|
8702
|
-
_v$78 !== _p$.w && (_p$.w = _$setProp(_el$
|
|
8755
|
+
_v$65 !== _p$.e && (_p$.e = _$setProp(_el$300, "borderColor", _v$65, _p$.e));
|
|
8756
|
+
_v$66 !== _p$.t && (_p$.t = _$setProp(_el$302, "style", _v$66, _p$.t));
|
|
8757
|
+
_v$67 !== _p$.a && (_p$.a = _$setProp(_el$304, "style", _v$67, _p$.a));
|
|
8758
|
+
_v$68 !== _p$.o && (_p$.o = _$setProp(_el$306, "style", _v$68, _p$.o));
|
|
8759
|
+
_v$69 !== _p$.i && (_p$.i = _$setProp(_el$309, "style", _v$69, _p$.i));
|
|
8760
|
+
_v$70 !== _p$.n && (_p$.n = _$setProp(_el$311, "style", _v$70, _p$.n));
|
|
8761
|
+
_v$71 !== _p$.s && (_p$.s = _$setProp(_el$313, "style", _v$71, _p$.s));
|
|
8762
|
+
_v$72 !== _p$.h && (_p$.h = _$setProp(_el$315, "style", _v$72, _p$.h));
|
|
8763
|
+
_v$73 !== _p$.r && (_p$.r = _$setProp(_el$317, "style", _v$73, _p$.r));
|
|
8764
|
+
_v$74 !== _p$.d && (_p$.d = _$setProp(_el$319, "style", _v$74, _p$.d));
|
|
8765
|
+
_v$75 !== _p$.l && (_p$.l = _$setProp(_el$321, "style", _v$75, _p$.l));
|
|
8766
|
+
_v$76 !== _p$.u && (_p$.u = _$setProp(_el$323, "style", _v$76, _p$.u));
|
|
8767
|
+
_v$77 !== _p$.c && (_p$.c = _$setProp(_el$325, "style", _v$77, _p$.c));
|
|
8768
|
+
_v$78 !== _p$.w && (_p$.w = _$setProp(_el$328, "style", _v$78, _p$.w));
|
|
8703
8769
|
return _p$;
|
|
8704
8770
|
}, {
|
|
8705
8771
|
e: undefined,
|
|
@@ -8717,7 +8783,7 @@ function LoopDashboard(props) {
|
|
|
8717
8783
|
c: undefined,
|
|
8718
8784
|
w: undefined
|
|
8719
8785
|
});
|
|
8720
|
-
return _el$
|
|
8786
|
+
return _el$300;
|
|
8721
8787
|
})()
|
|
8722
8788
|
})];
|
|
8723
8789
|
}
|
|
@@ -8745,29 +8811,29 @@ function LoopDashboard(props) {
|
|
|
8745
8811
|
},
|
|
8746
8812
|
children: (ev) => [`
|
|
8747
8813
|
`, (() => {
|
|
8748
|
-
var _el$
|
|
8749
|
-
_$insert(_el$
|
|
8750
|
-
_$effect((_$p) => _$setProp(_el$
|
|
8814
|
+
var _el$341 = _$createElement("span");
|
|
8815
|
+
_$insert(_el$341, () => String(ev.type));
|
|
8816
|
+
_$effect((_$p) => _$setProp(_el$341, "style", {
|
|
8751
8817
|
fg: eventColor(String(ev.type), theme()),
|
|
8752
8818
|
bold: true
|
|
8753
8819
|
}, _$p));
|
|
8754
|
-
return _el$
|
|
8820
|
+
return _el$341;
|
|
8755
8821
|
})(), (() => {
|
|
8756
|
-
var _el$
|
|
8757
|
-
_$insertNode(_el$
|
|
8758
|
-
_$insert(_el$
|
|
8759
|
-
_$effect((_$p) => _$setProp(_el$
|
|
8822
|
+
var _el$342 = _$createElement("span"), _el$343 = _$createTextNode(` `);
|
|
8823
|
+
_$insertNode(_el$342, _el$343);
|
|
8824
|
+
_$insert(_el$342, () => ev.goalID?.slice(0, 8), null);
|
|
8825
|
+
_$effect((_$p) => _$setProp(_el$342, "style", {
|
|
8760
8826
|
fg: theme().textMuted
|
|
8761
8827
|
}, _$p));
|
|
8762
|
-
return _el$
|
|
8828
|
+
return _el$342;
|
|
8763
8829
|
})(), _$memo(() => _$memo(() => !!ev.summary)() && (() => {
|
|
8764
|
-
var _el$
|
|
8765
|
-
_$insertNode(_el$
|
|
8766
|
-
_$insert(_el$
|
|
8767
|
-
_$effect((_$p) => _$setProp(_el$
|
|
8830
|
+
var _el$344 = _$createElement("span"), _el$345 = _$createTextNode(` \u2014 `);
|
|
8831
|
+
_$insertNode(_el$344, _el$345);
|
|
8832
|
+
_$insert(_el$344, () => String(ev.summary).slice(0, 60), null);
|
|
8833
|
+
_$effect((_$p) => _$setProp(_el$344, "style", {
|
|
8768
8834
|
fg: theme().text
|
|
8769
8835
|
}, _$p));
|
|
8770
|
-
return _el$
|
|
8836
|
+
return _el$344;
|
|
8771
8837
|
})())]
|
|
8772
8838
|
}), null);
|
|
8773
8839
|
_$effect((_p$) => {
|
|
@@ -10564,43 +10630,69 @@ function CommandPanel(props) {
|
|
|
10564
10630
|
get each() {
|
|
10565
10631
|
return state().commands;
|
|
10566
10632
|
},
|
|
10567
|
-
children: (cmd, i) =>
|
|
10568
|
-
|
|
10569
|
-
|
|
10570
|
-
|
|
10571
|
-
|
|
10572
|
-
|
|
10573
|
-
|
|
10574
|
-
|
|
10575
|
-
|
|
10576
|
-
|
|
10577
|
-
|
|
10578
|
-
|
|
10579
|
-
|
|
10580
|
-
|
|
10581
|
-
|
|
10582
|
-
|
|
10583
|
-
|
|
10584
|
-
|
|
10585
|
-
|
|
10586
|
-
|
|
10587
|
-
|
|
10588
|
-
|
|
10589
|
-
|
|
10590
|
-
},
|
|
10591
|
-
|
|
10592
|
-
|
|
10593
|
-
|
|
10594
|
-
|
|
10595
|
-
|
|
10596
|
-
|
|
10597
|
-
|
|
10598
|
-
|
|
10599
|
-
|
|
10600
|
-
|
|
10601
|
-
|
|
10602
|
-
|
|
10603
|
-
|
|
10633
|
+
children: (cmd, i) => {
|
|
10634
|
+
const badge = watchBadge(cmd);
|
|
10635
|
+
const badgeWarn = badge === "flood-suspended" || badge === "budget-exhausted";
|
|
10636
|
+
const badgeHot = badge === "until-matched";
|
|
10637
|
+
const terminalReason = cmd.status !== "running" ? cmd.endReason : undefined;
|
|
10638
|
+
return (() => {
|
|
10639
|
+
var _el$17 = _$createElement2("box"), _el$18 = _$createElement2("text"), _el$19 = _$createElement2("span"), _el$20 = _$createElement2("span"), _el$21 = _$createTextNode2(` \u2502 `), _el$22 = _$createTextNode2(` \u2502 `);
|
|
10640
|
+
_$insertNode2(_el$17, _el$18);
|
|
10641
|
+
_$setProp2(_el$17, "paddingLeft", 1);
|
|
10642
|
+
_$setProp2(_el$17, "paddingRight", 1);
|
|
10643
|
+
_$insertNode2(_el$18, _el$19);
|
|
10644
|
+
_$insertNode2(_el$18, _el$20);
|
|
10645
|
+
_$setProp2(_el$18, "wrapMode", "none");
|
|
10646
|
+
_$setProp2(_el$18, "truncate", true);
|
|
10647
|
+
_$insert2(_el$19, () => i() === state().selected ? "\u25B6 " : " ", null);
|
|
10648
|
+
_$insert2(_el$19, () => cmd.title, null);
|
|
10649
|
+
_$insertNode2(_el$20, _el$21);
|
|
10650
|
+
_$insertNode2(_el$20, _el$22);
|
|
10651
|
+
_$insert2(_el$20, () => [cmd.command, ...cmd.args].join(" ").slice(0, 60), _el$22);
|
|
10652
|
+
_$insert2(_el$20, () => cmd.status, null);
|
|
10653
|
+
_$insert2(_el$20, (() => {
|
|
10654
|
+
var _c$ = _$memo2(() => cmd.exitCode !== undefined);
|
|
10655
|
+
return () => _c$() ? ` (${cmd.exitCode})` : "";
|
|
10656
|
+
})(), null);
|
|
10657
|
+
_$insert2(_el$18, terminalReason ? (() => {
|
|
10658
|
+
var _el$23 = _$createElement2("span"), _el$24 = _$createTextNode2(` [`), _el$25 = _$createTextNode2(`]`);
|
|
10659
|
+
_$insertNode2(_el$23, _el$24);
|
|
10660
|
+
_$insertNode2(_el$23, _el$25);
|
|
10661
|
+
_$insert2(_el$23, terminalReason, _el$25);
|
|
10662
|
+
_$effect2((_$p) => _$setProp2(_el$23, "style", {
|
|
10663
|
+
fg: terminalReason === "timeout" ? theme().warning : theme().textMuted
|
|
10664
|
+
}, _$p));
|
|
10665
|
+
return _el$23;
|
|
10666
|
+
})() : undefined, null);
|
|
10667
|
+
_$insert2(_el$18, badge ? (() => {
|
|
10668
|
+
var _el$26 = _$createElement2("span"), _el$27 = _$createTextNode2(` [`), _el$28 = _$createTextNode2(`]`);
|
|
10669
|
+
_$insertNode2(_el$26, _el$27);
|
|
10670
|
+
_$insertNode2(_el$26, _el$28);
|
|
10671
|
+
_$insert2(_el$26, badge, _el$28);
|
|
10672
|
+
_$effect2((_$p) => _$setProp2(_el$26, "style", {
|
|
10673
|
+
fg: badgeWarn ? theme().warning : badgeHot ? theme().primary : theme().textMuted
|
|
10674
|
+
}, _$p));
|
|
10675
|
+
return _el$26;
|
|
10676
|
+
})() : undefined, null);
|
|
10677
|
+
_$effect2((_p$) => {
|
|
10678
|
+
var _v$10 = i() === state().selected ? theme().backgroundElement : undefined, _v$11 = {
|
|
10679
|
+
fg: cmd.status === "running" ? theme().success : theme().textMuted,
|
|
10680
|
+
bold: i() === state().selected
|
|
10681
|
+
}, _v$12 = {
|
|
10682
|
+
fg: theme().textMuted
|
|
10683
|
+
};
|
|
10684
|
+
_v$10 !== _p$.e && (_p$.e = _$setProp2(_el$17, "backgroundColor", _v$10, _p$.e));
|
|
10685
|
+
_v$11 !== _p$.t && (_p$.t = _$setProp2(_el$19, "style", _v$11, _p$.t));
|
|
10686
|
+
_v$12 !== _p$.a && (_p$.a = _$setProp2(_el$20, "style", _v$12, _p$.a));
|
|
10687
|
+
return _p$;
|
|
10688
|
+
}, {
|
|
10689
|
+
e: undefined,
|
|
10690
|
+
t: undefined,
|
|
10691
|
+
a: undefined
|
|
10692
|
+
});
|
|
10693
|
+
return _el$17;
|
|
10694
|
+
})();
|
|
10695
|
+
}
|
|
10604
10696
|
}));
|
|
10605
10697
|
return _el$1;
|
|
10606
10698
|
}
|
|
@@ -10610,43 +10702,59 @@ function CommandPanel(props) {
|
|
|
10610
10702
|
return sel();
|
|
10611
10703
|
},
|
|
10612
10704
|
children: (cmd) => (() => {
|
|
10613
|
-
var _el$
|
|
10614
|
-
_$insertNode2(_el$
|
|
10615
|
-
_$setProp2(_el$
|
|
10616
|
-
_$setProp2(_el$
|
|
10617
|
-
_$setProp2(_el$
|
|
10618
|
-
_$setProp2(_el$
|
|
10619
|
-
_$setProp2(_el$
|
|
10620
|
-
_$setProp2(_el$
|
|
10621
|
-
_$insertNode2(_el$
|
|
10622
|
-
_$insertNode2(_el$
|
|
10623
|
-
_$insert2(_el$
|
|
10624
|
-
_$insertNode2(_el$
|
|
10625
|
-
_$insertNode2(_el$
|
|
10626
|
-
_$insertNode2(_el$
|
|
10627
|
-
_$insertNode2(_el$
|
|
10628
|
-
_$insert2(_el$
|
|
10629
|
-
_$insert2(_el$
|
|
10630
|
-
_$insert2(_el$
|
|
10631
|
-
_$insert2(_el$
|
|
10632
|
-
_$insert2(_el$
|
|
10633
|
-
_$insert2(_el$
|
|
10634
|
-
var _c$2 = _$memo2(() => !!(
|
|
10635
|
-
return () => _c$2() ? ` \xB7
|
|
10705
|
+
var _el$29 = _$createElement2("box"), _el$30 = _$createElement2("text"), _el$31 = _$createElement2("span"), _el$32 = _$createElement2("span"), _el$33 = _$createTextNode2(` \u2502 `), _el$34 = _$createTextNode2(` \u2502 `), _el$35 = _$createTextNode2(` \u2502 `), _el$36 = _$createTextNode2(` bytes`);
|
|
10706
|
+
_$insertNode2(_el$29, _el$30);
|
|
10707
|
+
_$setProp2(_el$29, "flexDirection", "column");
|
|
10708
|
+
_$setProp2(_el$29, "border", true);
|
|
10709
|
+
_$setProp2(_el$29, "padding", 1);
|
|
10710
|
+
_$setProp2(_el$29, "flexShrink", 0);
|
|
10711
|
+
_$setProp2(_el$29, "maxHeight", 16);
|
|
10712
|
+
_$setProp2(_el$29, "overflow", "hidden");
|
|
10713
|
+
_$insertNode2(_el$30, _el$31);
|
|
10714
|
+
_$insertNode2(_el$30, _el$32);
|
|
10715
|
+
_$insert2(_el$31, () => cmd().title);
|
|
10716
|
+
_$insertNode2(_el$32, _el$33);
|
|
10717
|
+
_$insertNode2(_el$32, _el$34);
|
|
10718
|
+
_$insertNode2(_el$32, _el$35);
|
|
10719
|
+
_$insertNode2(_el$32, _el$36);
|
|
10720
|
+
_$insert2(_el$32, () => [cmd().command, ...cmd().args].join(" "), _el$34);
|
|
10721
|
+
_$insert2(_el$32, () => cmd().status, _el$35);
|
|
10722
|
+
_$insert2(_el$32, () => outputMeta().totalBytes, _el$36);
|
|
10723
|
+
_$insert2(_el$32, () => outputMeta().live ? " \xB7 live" : "", null);
|
|
10724
|
+
_$insert2(_el$32, () => cmd().truncated ? " \xB7 truncated" : "", null);
|
|
10725
|
+
_$insert2(_el$32, (() => {
|
|
10726
|
+
var _c$2 = _$memo2(() => !!(cmd().status !== "running" && cmd().endReason));
|
|
10727
|
+
return () => _c$2() ? ` \xB7 end:${cmd().endReason}` : "";
|
|
10728
|
+
})(), null);
|
|
10729
|
+
_$insert2(_el$32, (() => {
|
|
10730
|
+
var _c$3 = _$memo2(() => !!(emulated() && screen && feedForID === cmd().id));
|
|
10731
|
+
return () => _c$3() ? ` \xB7 ${screen.cols}x${screen.rows} screen${screen.activeBuffer === "alternate" ? " \xB7 alt-screen" : ""}` : "";
|
|
10636
10732
|
})(), null);
|
|
10637
|
-
_$insert2(_el$
|
|
10733
|
+
_$insert2(_el$29, (() => {
|
|
10734
|
+
var _c$4 = _$memo2(() => !!formatWatchDetail(cmd()));
|
|
10735
|
+
return () => _c$4() ? (() => {
|
|
10736
|
+
var _el$37 = _$createElement2("text"), _el$38 = _$createElement2("span");
|
|
10737
|
+
_$insertNode2(_el$37, _el$38);
|
|
10738
|
+
_$insert2(_el$38, () => formatWatchDetail(cmd()));
|
|
10739
|
+
_$effect2((_$p) => _$setProp2(_el$38, "style", {
|
|
10740
|
+
fg: theme().textMuted
|
|
10741
|
+
}, _$p));
|
|
10742
|
+
return _el$37;
|
|
10743
|
+
})() : undefined;
|
|
10744
|
+
})(), null);
|
|
10745
|
+
_$insert2(_el$29, _$createComponent2(Show2, {
|
|
10638
10746
|
get when() {
|
|
10639
10747
|
return _$memo2(() => !!emulated())() && screenRows().length > 0;
|
|
10640
10748
|
},
|
|
10641
10749
|
get fallback() {
|
|
10642
10750
|
return (() => {
|
|
10643
|
-
var _el$
|
|
10644
|
-
_$insertNode2(_el$
|
|
10645
|
-
_$insert2(_el$
|
|
10646
|
-
_$effect2((_$p) => _$setProp2(_el$
|
|
10751
|
+
var _el$39 = _$createElement2("text"), _el$40 = _$createElement2("span");
|
|
10752
|
+
_$insertNode2(_el$39, _el$40);
|
|
10753
|
+
_$insert2(_el$40, () => output().slice(-4000) || "(no output yet)");
|
|
10754
|
+
_$effect2((_$p) => _$setProp2(_el$40, "style", {
|
|
10647
10755
|
fg: theme().text
|
|
10648
10756
|
}, _$p));
|
|
10649
|
-
return _el$
|
|
10757
|
+
return _el$39;
|
|
10650
10758
|
})();
|
|
10651
10759
|
},
|
|
10652
10760
|
get children() {
|
|
@@ -10655,26 +10763,26 @@ function CommandPanel(props) {
|
|
|
10655
10763
|
return screenRows();
|
|
10656
10764
|
},
|
|
10657
10765
|
children: (row) => (() => {
|
|
10658
|
-
var _el$
|
|
10659
|
-
_$setProp2(_el$
|
|
10660
|
-
_$setProp2(_el$
|
|
10661
|
-
_$insert2(_el$
|
|
10766
|
+
var _el$41 = _$createElement2("text");
|
|
10767
|
+
_$setProp2(_el$41, "wrapMode", "none");
|
|
10768
|
+
_$setProp2(_el$41, "truncate", true);
|
|
10769
|
+
_$insert2(_el$41, _$createComponent2(For2, {
|
|
10662
10770
|
get each() {
|
|
10663
10771
|
return row.runs;
|
|
10664
10772
|
},
|
|
10665
10773
|
children: (run) => (() => {
|
|
10666
|
-
var _el$
|
|
10667
|
-
_$insert2(_el$
|
|
10668
|
-
_$effect2((_$p) => _$setProp2(_el$
|
|
10774
|
+
var _el$42 = _$createElement2("span");
|
|
10775
|
+
_$insert2(_el$42, () => run.text);
|
|
10776
|
+
_$effect2((_$p) => _$setProp2(_el$42, "style", {
|
|
10669
10777
|
fg: run.fg ?? theme().text,
|
|
10670
10778
|
bg: run.bg,
|
|
10671
10779
|
bold: run.bold,
|
|
10672
10780
|
underline: run.underline
|
|
10673
10781
|
}, _$p));
|
|
10674
|
-
return _el$
|
|
10782
|
+
return _el$42;
|
|
10675
10783
|
})()
|
|
10676
10784
|
}));
|
|
10677
|
-
return _el$
|
|
10785
|
+
return _el$41;
|
|
10678
10786
|
})()
|
|
10679
10787
|
});
|
|
10680
10788
|
}
|
|
@@ -10686,16 +10794,16 @@ function CommandPanel(props) {
|
|
|
10686
10794
|
}, _v$15 = {
|
|
10687
10795
|
fg: theme().textMuted
|
|
10688
10796
|
};
|
|
10689
|
-
_v$13 !== _p$.e && (_p$.e = _$setProp2(_el$
|
|
10690
|
-
_v$14 !== _p$.t && (_p$.t = _$setProp2(_el$
|
|
10691
|
-
_v$15 !== _p$.a && (_p$.a = _$setProp2(_el$
|
|
10797
|
+
_v$13 !== _p$.e && (_p$.e = _$setProp2(_el$29, "borderColor", _v$13, _p$.e));
|
|
10798
|
+
_v$14 !== _p$.t && (_p$.t = _$setProp2(_el$31, "style", _v$14, _p$.t));
|
|
10799
|
+
_v$15 !== _p$.a && (_p$.a = _$setProp2(_el$32, "style", _v$15, _p$.a));
|
|
10692
10800
|
return _p$;
|
|
10693
10801
|
}, {
|
|
10694
10802
|
e: undefined,
|
|
10695
10803
|
t: undefined,
|
|
10696
10804
|
a: undefined
|
|
10697
10805
|
});
|
|
10698
|
-
return _el$
|
|
10806
|
+
return _el$29;
|
|
10699
10807
|
})()
|
|
10700
10808
|
}), _el$10);
|
|
10701
10809
|
_$insertNode2(_el$10, _el$11);
|
|
@@ -11722,6 +11830,179 @@ Press Ctrl+] to go back. Nothing was subscribed or written.`);
|
|
|
11722
11830
|
})();
|
|
11723
11831
|
}
|
|
11724
11832
|
|
|
11833
|
+
// src/v2/native-rpc.ts
|
|
11834
|
+
var NATIVE_RPC_ID = "loopd.native";
|
|
11835
|
+
function resolveNativeParentID(child) {
|
|
11836
|
+
return child.fork?.sessionID ?? child.parentID ?? undefined;
|
|
11837
|
+
}
|
|
11838
|
+
var requestSchema = {
|
|
11839
|
+
type: "object",
|
|
11840
|
+
properties: {
|
|
11841
|
+
requestID: { type: "string" },
|
|
11842
|
+
goalID: { type: "string" },
|
|
11843
|
+
parentSessionID: { type: "string" },
|
|
11844
|
+
title: { type: "string" },
|
|
11845
|
+
agent: { type: "string" },
|
|
11846
|
+
model: {
|
|
11847
|
+
type: "object",
|
|
11848
|
+
properties: {
|
|
11849
|
+
id: { type: "string" },
|
|
11850
|
+
providerID: { type: "string" }
|
|
11851
|
+
},
|
|
11852
|
+
required: ["id", "providerID"],
|
|
11853
|
+
additionalProperties: false
|
|
11854
|
+
},
|
|
11855
|
+
permissions: {
|
|
11856
|
+
type: "array",
|
|
11857
|
+
items: {
|
|
11858
|
+
type: "object",
|
|
11859
|
+
properties: {
|
|
11860
|
+
action: { type: "string" },
|
|
11861
|
+
resource: { type: "string" },
|
|
11862
|
+
effect: { type: "string", enum: ["allow", "deny", "ask"] }
|
|
11863
|
+
},
|
|
11864
|
+
required: ["action", "resource", "effect"],
|
|
11865
|
+
additionalProperties: false
|
|
11866
|
+
}
|
|
11867
|
+
},
|
|
11868
|
+
directory: { type: "string" }
|
|
11869
|
+
},
|
|
11870
|
+
required: ["requestID", "goalID", "parentSessionID", "title"],
|
|
11871
|
+
additionalProperties: false
|
|
11872
|
+
};
|
|
11873
|
+
var claimResultSchema = {
|
|
11874
|
+
type: "object",
|
|
11875
|
+
properties: {
|
|
11876
|
+
requestID: { type: "string" },
|
|
11877
|
+
claimantID: { type: "string" }
|
|
11878
|
+
},
|
|
11879
|
+
required: ["requestID", "claimantID"],
|
|
11880
|
+
additionalProperties: false
|
|
11881
|
+
};
|
|
11882
|
+
var claimAckSchema = {
|
|
11883
|
+
type: "object",
|
|
11884
|
+
properties: {
|
|
11885
|
+
requestID: { type: "string" },
|
|
11886
|
+
claimantID: { type: "string" },
|
|
11887
|
+
won: { type: "boolean" }
|
|
11888
|
+
},
|
|
11889
|
+
required: ["requestID", "claimantID", "won"],
|
|
11890
|
+
additionalProperties: false
|
|
11891
|
+
};
|
|
11892
|
+
var createResultSchema = {
|
|
11893
|
+
type: "object",
|
|
11894
|
+
properties: {
|
|
11895
|
+
requestID: { type: "string" },
|
|
11896
|
+
childSessionID: { type: "string" },
|
|
11897
|
+
parentSessionID: { type: "string" },
|
|
11898
|
+
topology: { type: "string", const: "v2-native-child" }
|
|
11899
|
+
},
|
|
11900
|
+
required: ["requestID", "childSessionID", "parentSessionID", "topology"],
|
|
11901
|
+
additionalProperties: false
|
|
11902
|
+
};
|
|
11903
|
+
var failureSchema = {
|
|
11904
|
+
type: "object",
|
|
11905
|
+
properties: {
|
|
11906
|
+
requestID: { type: "string" },
|
|
11907
|
+
reason: { type: "string" },
|
|
11908
|
+
detail: { type: "string" },
|
|
11909
|
+
preCreation: { type: "boolean" }
|
|
11910
|
+
},
|
|
11911
|
+
required: ["requestID", "reason", "preCreation"],
|
|
11912
|
+
additionalProperties: false
|
|
11913
|
+
};
|
|
11914
|
+
var emptySchema = {
|
|
11915
|
+
type: "object",
|
|
11916
|
+
properties: {},
|
|
11917
|
+
additionalProperties: false
|
|
11918
|
+
};
|
|
11919
|
+
var nativeRpcDefinition = {
|
|
11920
|
+
id: NATIVE_RPC_ID,
|
|
11921
|
+
methods: {
|
|
11922
|
+
claimRequest: { input: claimResultSchema, output: claimAckSchema, errors: {} },
|
|
11923
|
+
completeWorkerCreate: { input: createResultSchema, output: emptySchema, errors: {} },
|
|
11924
|
+
failRequest: { input: failureSchema, output: emptySchema, errors: {} }
|
|
11925
|
+
},
|
|
11926
|
+
events: {
|
|
11927
|
+
workerCreateRequested: { schema: requestSchema }
|
|
11928
|
+
}
|
|
11929
|
+
};
|
|
11930
|
+
|
|
11931
|
+
// src/v2/native-tui.ts
|
|
11932
|
+
function subscribeNativeRequests(rpcClient, deps) {
|
|
11933
|
+
return rpcClient.events.on("workerCreateRequested", (event) => {
|
|
11934
|
+
const request = event?.data;
|
|
11935
|
+
if (!request || typeof request.requestID !== "string")
|
|
11936
|
+
return;
|
|
11937
|
+
const directory = event?.location?.directory;
|
|
11938
|
+
const options = typeof directory === "string" && directory.length > 0 ? { location: { directory } } : undefined;
|
|
11939
|
+
handleWorkerCreateRequest(request, {
|
|
11940
|
+
...deps,
|
|
11941
|
+
claim: (input) => rpcClient.claimRequest(input, options).then((ack) => ({ won: ack?.won === true })),
|
|
11942
|
+
complete: (result) => rpcClient.completeWorkerCreate(result, options),
|
|
11943
|
+
fail: (failure) => rpcClient.failRequest(failure, options)
|
|
11944
|
+
}).then((outcome) => {
|
|
11945
|
+
try {
|
|
11946
|
+
deps.onOutcome?.(outcome, request.requestID);
|
|
11947
|
+
} catch {}
|
|
11948
|
+
}, () => {});
|
|
11949
|
+
});
|
|
11950
|
+
}
|
|
11951
|
+
async function handleWorkerCreateRequest(request, deps) {
|
|
11952
|
+
const parent = deps.data.session.get(request.parentSessionID);
|
|
11953
|
+
if (!parent)
|
|
11954
|
+
return { handled: "ignored-unknown-parent" };
|
|
11955
|
+
if (deps.isKnownParent && !deps.isKnownParent(request.parentSessionID)) {
|
|
11956
|
+
return { handled: "ignored-unknown-parent" };
|
|
11957
|
+
}
|
|
11958
|
+
const { won } = await deps.claim({ requestID: request.requestID, claimantID: deps.claimantID });
|
|
11959
|
+
if (!won)
|
|
11960
|
+
return { handled: "claim-lost" };
|
|
11961
|
+
const fail = (reason, preCreation, detail) => deps.fail({ requestID: request.requestID, reason, preCreation, detail }).then(() => ({
|
|
11962
|
+
handled: "failed",
|
|
11963
|
+
reason,
|
|
11964
|
+
preCreation
|
|
11965
|
+
}));
|
|
11966
|
+
let forkInput;
|
|
11967
|
+
try {
|
|
11968
|
+
const messages = deps.data.session.message.list(request.parentSessionID);
|
|
11969
|
+
const firstID = messages[0]?.id;
|
|
11970
|
+
forkInput = firstID ? { sessionID: request.parentSessionID, before: firstID } : { sessionID: request.parentSessionID };
|
|
11971
|
+
} catch (error) {
|
|
11972
|
+
return fail("message-list-failed", true, error instanceof Error ? error.message : String(error));
|
|
11973
|
+
}
|
|
11974
|
+
let child;
|
|
11975
|
+
try {
|
|
11976
|
+
child = await deps.client.session.fork(forkInput);
|
|
11977
|
+
} catch (error) {
|
|
11978
|
+
return fail("fork-failed", true, error instanceof Error ? error.message : String(error));
|
|
11979
|
+
}
|
|
11980
|
+
const actualParent = resolveNativeParentID(child);
|
|
11981
|
+
if (actualParent !== request.parentSessionID) {
|
|
11982
|
+
return fail("parent-mismatch", false, `resolved-parent=${JSON.stringify(actualParent)} expected=${JSON.stringify(request.parentSessionID)}`);
|
|
11983
|
+
}
|
|
11984
|
+
try {
|
|
11985
|
+
if (request.agent && deps.client.session.switchAgent) {
|
|
11986
|
+
await deps.client.session.switchAgent({ sessionID: child.id, agent: request.agent });
|
|
11987
|
+
}
|
|
11988
|
+
if (request.model && deps.client.session.switchModel) {
|
|
11989
|
+
await deps.client.session.switchModel({ sessionID: child.id, model: request.model });
|
|
11990
|
+
}
|
|
11991
|
+
if (deps.client.session.update) {
|
|
11992
|
+
await deps.client.session.update({ sessionID: child.id, title: request.title });
|
|
11993
|
+
}
|
|
11994
|
+
} catch (error) {
|
|
11995
|
+
return fail("configure-failed", false, error instanceof Error ? error.message : String(error));
|
|
11996
|
+
}
|
|
11997
|
+
await deps.complete({
|
|
11998
|
+
requestID: request.requestID,
|
|
11999
|
+
childSessionID: child.id,
|
|
12000
|
+
parentSessionID: request.parentSessionID,
|
|
12001
|
+
topology: "v2-native-child"
|
|
12002
|
+
});
|
|
12003
|
+
return { handled: "completed", childSessionID: child.id, forkInput };
|
|
12004
|
+
}
|
|
12005
|
+
|
|
11725
12006
|
// src/tui/plugin.tsx
|
|
11726
12007
|
var PLUGIN_ID = "opencode-loopd.tui";
|
|
11727
12008
|
function navigateToTerminalV1(api, commandID, ownerSessionID, returnSessionID) {
|
|
@@ -11907,6 +12188,57 @@ function navigateToTerminalV2(router, commandID, ownerSessionID, returnSessionID
|
|
|
11907
12188
|
}
|
|
11908
12189
|
var v2setup = (ctx) => {
|
|
11909
12190
|
const directory = ctx.location?.directory ?? ctx.data.location.default().directory;
|
|
12191
|
+
const claimantID = `tui-${Date.now().toString(36)}-${Math.floor(Math.random() * 1e6).toString(36)}`;
|
|
12192
|
+
let unsubscribeNative;
|
|
12193
|
+
try {
|
|
12194
|
+
const rpcClient = ctx.client.rpc(nativeRpcDefinition);
|
|
12195
|
+
unsubscribeNative = subscribeNativeRequests(rpcClient, {
|
|
12196
|
+
client: {
|
|
12197
|
+
session: {
|
|
12198
|
+
fork: (input) => ctx.client.session.fork(input),
|
|
12199
|
+
switchAgent: (input) => ctx.client.session.switchAgent(input),
|
|
12200
|
+
switchModel: (input) => ctx.client.session.switchModel(input),
|
|
12201
|
+
update: (input) => ctx.client.session.update(input)
|
|
12202
|
+
}
|
|
12203
|
+
},
|
|
12204
|
+
data: {
|
|
12205
|
+
session: {
|
|
12206
|
+
get: (sessionID) => {
|
|
12207
|
+
const session = ctx.data.session.get(sessionID);
|
|
12208
|
+
return session ? {
|
|
12209
|
+
id: session.id
|
|
12210
|
+
} : undefined;
|
|
12211
|
+
},
|
|
12212
|
+
message: {
|
|
12213
|
+
list: (sessionID) => ctx.data.session.message.list(sessionID).map((message) => ({
|
|
12214
|
+
id: message.id
|
|
12215
|
+
}))
|
|
12216
|
+
}
|
|
12217
|
+
}
|
|
12218
|
+
},
|
|
12219
|
+
claimantID,
|
|
12220
|
+
onOutcome: (outcome, requestID) => {
|
|
12221
|
+
try {
|
|
12222
|
+
const {
|
|
12223
|
+
appendFileSync
|
|
12224
|
+
} = __require("fs");
|
|
12225
|
+
appendFileSync("/tmp/loopd-tui.log", `[${new Date().toISOString()}] native-worker request=${requestID} outcome=${JSON.stringify(outcome)}
|
|
12226
|
+
`);
|
|
12227
|
+
} catch {}
|
|
12228
|
+
},
|
|
12229
|
+
isKnownParent: (parentSessionID) => {
|
|
12230
|
+
const parent = ctx.data.session.get(parentSessionID);
|
|
12231
|
+
if (!parent)
|
|
12232
|
+
return false;
|
|
12233
|
+
const parentDirectory = parent.location?.directory;
|
|
12234
|
+
if (!parentDirectory)
|
|
12235
|
+
return true;
|
|
12236
|
+
return parentDirectory === directory;
|
|
12237
|
+
}
|
|
12238
|
+
});
|
|
12239
|
+
} catch {
|
|
12240
|
+
unsubscribeNative = undefined;
|
|
12241
|
+
}
|
|
11910
12242
|
let dialogOpen = false;
|
|
11911
12243
|
const closeDialog = () => {
|
|
11912
12244
|
dialogOpen = false;
|
|
@@ -12096,6 +12428,9 @@ var v2setup = (ctx) => {
|
|
|
12096
12428
|
return () => {
|
|
12097
12429
|
closeDialog();
|
|
12098
12430
|
ctx.ui.panel.close();
|
|
12431
|
+
try {
|
|
12432
|
+
unsubscribeNative?.();
|
|
12433
|
+
} catch {}
|
|
12099
12434
|
try {
|
|
12100
12435
|
unregisterTerminalRoute?.();
|
|
12101
12436
|
} catch {}
|