ghostrail 0.20.0 → 0.21.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/dist/backend/attach.d.ts +49 -0
- package/dist/backend/attach.d.ts.map +1 -0
- package/dist/backend/attach.js +66 -0
- package/dist/backend/attach.js.map +1 -0
- package/dist/backend/container.d.ts.map +1 -1
- package/dist/backend/container.js +20 -30
- package/dist/backend/container.js.map +1 -1
- package/dist/backend/local-worktree.d.ts.map +1 -1
- package/dist/backend/local-worktree.js +6 -4
- package/dist/backend/local-worktree.js.map +1 -1
- package/dist/board/page.d.ts.map +1 -1
- package/dist/board/page.js +46 -2
- package/dist/board/page.js.map +1 -1
- package/dist/cli/commands.d.ts +7 -1
- package/dist/cli/commands.d.ts.map +1 -1
- package/dist/cli/commands.js +80 -11
- package/dist/cli/commands.js.map +1 -1
- package/dist/commands/help.d.ts.map +1 -1
- package/dist/commands/help.js +3 -0
- package/dist/commands/help.js.map +1 -1
- package/dist/dashboard/page.d.ts.map +1 -1
- package/dist/dashboard/page.js +159 -5
- package/dist/dashboard/page.js.map +1 -1
- package/dist/dashboard/review-page.d.ts +5 -0
- package/dist/dashboard/review-page.d.ts.map +1 -1
- package/dist/dashboard/review-page.js +23 -3
- package/dist/dashboard/review-page.js.map +1 -1
- package/dist/dashboard/routes.d.ts +13 -0
- package/dist/dashboard/routes.d.ts.map +1 -1
- package/dist/dashboard/routes.js +21 -0
- package/dist/dashboard/routes.js.map +1 -1
- package/dist/dashboard/server.d.ts.map +1 -1
- package/dist/dashboard/server.js +19 -1
- package/dist/dashboard/server.js.map +1 -1
- package/dist/doctor/checks.d.ts +1 -0
- package/dist/doctor/checks.d.ts.map +1 -1
- package/dist/doctor/checks.js +1 -1
- package/dist/doctor/checks.js.map +1 -1
- package/dist/doctor/probes.d.ts +19 -3
- package/dist/doctor/probes.d.ts.map +1 -1
- package/dist/doctor/probes.js +22 -27
- package/dist/doctor/probes.js.map +1 -1
- package/dist/doctor/run.d.ts.map +1 -1
- package/dist/doctor/run.js +17 -3
- package/dist/doctor/run.js.map +1 -1
- package/dist/factory/build.d.ts.map +1 -1
- package/dist/factory/build.js +3 -0
- package/dist/factory/build.js.map +1 -1
- package/dist/loop/next-tick.d.ts +12 -0
- package/dist/loop/next-tick.d.ts.map +1 -0
- package/dist/loop/next-tick.js +37 -0
- package/dist/loop/next-tick.js.map +1 -0
- package/dist/loop/tick-log.d.ts +13 -0
- package/dist/loop/tick-log.d.ts.map +1 -0
- package/dist/loop/tick-log.js +64 -0
- package/dist/loop/tick-log.js.map +1 -0
- package/dist/respond/merge.js +3 -0
- package/dist/respond/merge.js.map +1 -1
- package/dist/respond/respond.d.ts +7 -0
- package/dist/respond/respond.d.ts.map +1 -1
- package/dist/respond/respond.js +1 -0
- package/dist/respond/respond.js.map +1 -1
- package/dist/store/events.d.ts +48 -0
- package/dist/store/events.d.ts.map +1 -1
- package/dist/store/events.js +57 -4
- package/dist/store/events.js.map +1 -1
- package/dist/store/index.d.ts +1 -1
- package/dist/store/index.d.ts.map +1 -1
- package/dist/store/index.js +1 -1
- package/dist/store/index.js.map +1 -1
- package/dist/triage/engine.d.ts +6 -2
- package/dist/triage/engine.d.ts.map +1 -1
- package/dist/triage/engine.js +6 -1
- package/dist/triage/engine.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"help.js","sourceRoot":"","sources":["../../src/commands/help.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAcxC,MAAM,UAAU,GAAG;IACjB,+DAA+D;IAC/D,qFAAqF;CACtF,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,QAAQ,GAA2B;IAC9C;QACE,IAAI,EAAE,MAAM;QACZ,OAAO,EAAE,iDAAiD;QAC1D,MAAM,EACJ,uwBAAuwB;QACzwB,KAAK,EAAE,qCAAqC;QAC5C,OAAO,EAAE;YACP,8DAA8D;YAC9D,wEAAwE;YACxE,2EAA2E;YAC3E,0EAA0E;YAC1E,8BAA8B;YAC9B,wEAAwE;YACxE,0EAA0E;YAC1E,8DAA8D;
|
|
1
|
+
{"version":3,"file":"help.js","sourceRoot":"","sources":["../../src/commands/help.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAcxC,MAAM,UAAU,GAAG;IACjB,+DAA+D;IAC/D,qFAAqF;CACtF,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,QAAQ,GAA2B;IAC9C;QACE,IAAI,EAAE,MAAM;QACZ,OAAO,EAAE,iDAAiD;QAC1D,MAAM,EACJ,uwBAAuwB;QACzwB,KAAK,EAAE,qCAAqC;QAC5C,OAAO,EAAE;YACP,8DAA8D;YAC9D,wEAAwE;YACxE,2EAA2E;YAC3E,0EAA0E;YAC1E,8BAA8B;YAC9B,wEAAwE;YACxE,0EAA0E;YAC1E,8DAA8D;YAC9D,yEAAyE;YACzE,yEAAyE;YACzE,mDAAmD;SACpD;KACF;IACD;QACE,IAAI,EAAE,SAAS;QACf,OAAO,EAAE,uDAAuD;QAChE,MAAM,EACJ,4WAA4W;QAC9W,KAAK,EAAE,6BAA6B;QACpC,OAAO,EAAE;YACP,iFAAiF;YACjF,qFAAqF;YACrF,4FAA4F;SAC7F;KACF;IACD;QACE,IAAI,EAAE,OAAO;QACb,OAAO,EAAE,4DAA4D;QACrE,MAAM,EACJ,yOAAyO;QAC3O,KAAK,EAAE,uCAAuC;QAC9C,OAAO,EAAE;YACP,4EAA4E;YAC5E,yEAAyE;YACzE,sEAAsE;YACtE,iEAAiE;YACjE,sDAAsD;YACtD,2DAA2D;SAC5D;KACF;IACD;QACE,IAAI,EAAE,aAAa;QACnB,OAAO,EAAE,gCAAgC;QACzC,MAAM,EACJ,2MAA2M;QAC7M,KAAK,EAAE,uCAAuC;QAC9C,OAAO,EAAE,EAAE;KACZ;IACD;QACE,IAAI,EAAE,OAAO;QACb,OAAO,EAAE,4DAA4D;QACrE,MAAM,EACJ,oRAAoR;QACtR,KAAK,EAAE,iCAAiC;QACxC,OAAO,EAAE,CAAC,sEAAsE,CAAC;KAClF;IACD;QACE,IAAI,EAAE,eAAe;QACrB,OAAO,EAAE,8DAA8D;QACvE,MAAM,EACJ,wSAAwS;QAC1S,KAAK,EAAE,mCAAmC;QAC1C,OAAO,EAAE;YACP,0EAA0E;YAC1E,6DAA6D;SAC9D;KACF;IACD;QACE,IAAI,EAAE,KAAK;QACX,OAAO,EAAE,+DAA+D;QACxE,MAAM,EACJ,mSAAmS;QACrS,KAAK,EAAE,yBAAyB;QAChC,OAAO,EAAE,UAAU;KACpB;IACD;QACE,IAAI,EAAE,OAAO;QACb,OAAO,EAAE,6DAA6D;QACtE,MAAM,EACJ,6VAA6V;QAC/V,KAAK,EAAE,2BAA2B;QAClC,OAAO,EAAE;YACP,GAAG,UAAU;YACb,wEAAwE;YACxE,6EAA6E;SAC9E;KACF;IACD;QACE,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,4DAA4D;QACrE,MAAM,EACJ,8KAA8K;QAChL,KAAK,EAAE,4BAA4B;QACnC,OAAO,EAAE,UAAU;KACpB;IACD;QACE,IAAI,EAAE,SAAS;QACf,OAAO,EAAE,qDAAqD;QAC9D,MAAM,EACJ,mNAAmN;QACrN,KAAK,EAAE,6BAA6B;QACpC,OAAO,EAAE,UAAU;KACpB;IACD;QACE,IAAI,EAAE,OAAO;QACb,OAAO,EAAE,0CAA0C;QACnD,MAAM,EACJ,4oBAA4oB;QAC9oB,KAAK,EAAE,2BAA2B;QAClC,OAAO,EAAE;YACP,qEAAqE;YACrE,2EAA2E;YAC3E,mFAAmF;YACnF,6DAA6D;YAC7D,oFAAoF;SACrF;KACF;IACD;QACE,IAAI,EAAE,WAAW;QACjB,OAAO,EAAE,+DAA+D;QACxE,MAAM,EACJ,8eAA8e;QAChf,KAAK,EAAE,+BAA+B;QACtC,OAAO,EAAE;YACP,2EAA2E;YAC3E,8DAA8D;YAC9D,6DAA6D;SAC9D;KACF;IACD;QACE,IAAI,EAAE,OAAO;QACb,OAAO,EAAE,wDAAwD;QACjE,MAAM,EACJ,kdAAkd;QACpd,KAAK,EAAE,2BAA2B;QAClC,OAAO,EAAE;YACP,0DAA0D;YAC1D,yEAAyE;YACzE,qEAAqE;YACrE,wEAAwE;YACxE,oEAAoE;YACpE,kFAAkF;YAClF,0EAA0E;YAC1E,6EAA6E;YAC7E,sFAAsF;SACvF;KACF;IACD;QACE,IAAI,EAAE,MAAM;QACZ,OAAO,EAAE,0DAA0D;QACnE,MAAM,EACJ,6QAA6Q;QAC/Q,KAAK,EAAE,0BAA0B;QACjC,OAAO,EAAE;YACP,yDAAyD;YACzD,wEAAwE;YACxE,qDAAqD;SACtD;KACF;IACD;QACE,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,2DAA2D;QACpE,MAAM,EACJ,oJAAoJ;QACtJ,KAAK,EAAE,kBAAkB;QACzB,OAAO,EAAE,EAAE;KACZ;IACD;QACE,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,6DAA6D;QACtE,MAAM,EACJ,mZAAmZ;QACrZ,KAAK,EAAE,4BAA4B;QACnC,OAAO,EAAE;YACP,GAAG,UAAU;YACb,iDAAiD;YACjD,2EAA2E;SAC5E;KACF;IACD;QACE,IAAI,EAAE,IAAI;QACV,OAAO,EAAE,8CAA8C;QACvD,MAAM,EACJ,0VAA0V;QAC5V,KAAK,EAAE,cAAc;QACrB,OAAO,EAAE,EAAE;KACZ;IACD;QACE,IAAI,EAAE,WAAW;QACjB,OAAO,EAAE,2CAA2C;QACpD,MAAM,EACJ,2LAA2L;QAC7L,KAAK,EAAE,qBAAqB;QAC5B,OAAO,EAAE,EAAE;KACZ;IACD;QACE,IAAI,EAAE,cAAc;QACpB,OAAO,EAAE,gEAAgE;QACzE,MAAM,EACJ,+NAA+N;QACjO,KAAK,EAAE,kCAAkC;QACzC,OAAO,EAAE;YACP,oEAAoE;YACpE,mEAAmE;SACpE;KACF;IACD;QACE,IAAI,EAAE,MAAM;QACZ,OAAO,EAAE,qDAAqD;QAC9D,MAAM,EACJ,0JAA0J;QAC5J,KAAK,EAAE,0BAA0B;QACjC,OAAO,EAAE,EAAE;KACZ;IACD;QACE,IAAI,EAAE,SAAS;QACf,OAAO,EAAE,4BAA4B;QACrC,MAAM,EAAE,mDAAmD;QAC3D,KAAK,EAAE,mBAAmB;QAC1B,OAAO,EAAE,EAAE;KACZ;CACF,CAAC;AAEF,sEAAsE;AACtE,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC;AAExE;;;;GAIG;AACH,MAAM,UAAU,UAAU;IACxB,OAAO;QACL,aAAa,OAAO,mDAAmD;QACvE,EAAE;QACF,QAAQ;QACR,iCAAiC;QACjC,EAAE;QACF,WAAW;QACX,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC;QACrE,EAAE;QACF,yEAAyE;QACzE,6EAA6E;QAC7E,EAAE;QACF,6BAA6B;KAC9B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,iBAAiB,CAAC,IAAY;IAC5C,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;IACtD,IAAI,OAAO,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAE5C,MAAM,KAAK,GAAG;QACZ,aAAa,OAAO,CAAC,IAAI,MAAM,OAAO,CAAC,OAAO,EAAE;QAChD,EAAE;QACF,OAAO,CAAC,MAAM;QACd,EAAE;QACF,QAAQ;QACR,KAAK,OAAO,CAAC,KAAK,EAAE;KACrB,CAAC;IACF,IAAI,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC;QAAE,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC/E,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"page.d.ts","sourceRoot":"","sources":["../../src/dashboard/page.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"page.d.ts","sourceRoot":"","sources":["../../src/dashboard/page.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,mBAAmB,QAic/B,CAAC"}
|
package/dist/dashboard/page.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { IN_PROGRESS_STATE } from "../store/events.js";
|
|
2
|
+
import { VERSION } from "../version.js";
|
|
2
3
|
/**
|
|
3
4
|
* The dashboard page. Inline, like the board's, so the package ships one file
|
|
4
5
|
* and the server needs no static asset handling.
|
|
@@ -21,6 +22,7 @@ export const DASHBOARD_PAGE_HTML = `<!doctype html>
|
|
|
21
22
|
body { font: 15px/1.5 ui-sans-serif, system-ui, sans-serif; margin: 2rem auto; max-width: 72rem; padding: 0 1rem; }
|
|
22
23
|
h1 { font-size: 1.3rem; margin: 0 0 .25rem; }
|
|
23
24
|
.sub { opacity: .7; margin: 0 0 1.5rem; }
|
|
25
|
+
.ver { opacity: .5; font-size: .6em; font-weight: 400; margin-left: .5rem; }
|
|
24
26
|
.gr { border: 1px solid color-mix(in oklab, currentColor 20%, transparent); border-radius: 8px; padding: .9rem 1rem; margin-bottom: .75rem; }
|
|
25
27
|
.top { display: flex; align-items: baseline; gap: .6rem; flex-wrap: wrap; }
|
|
26
28
|
.name { font-weight: 600; }
|
|
@@ -34,6 +36,8 @@ export const DASHBOARD_PAGE_HTML = `<!doctype html>
|
|
|
34
36
|
table.runs th { font-weight: 600; opacity: .7; font-size: .85em; }
|
|
35
37
|
a { color: inherit; }
|
|
36
38
|
.state { font-weight: 600; }
|
|
39
|
+
.hist-entry { margin: 6px 0 0 0; padding-left: 8px; border-left: 2px solid #ddd; }
|
|
40
|
+
.row-err { font-size: 12px; color: #b3261e; margin-top: 2px; overflow-wrap: anywhere; }
|
|
37
41
|
.done { color: #2a9d3a; } .failed { color: #d33; } .blocked, .abandoned { color: #d90; }
|
|
38
42
|
.noop, .skipped { opacity: .6; } .muted { opacity: .6; }
|
|
39
43
|
.twirl {
|
|
@@ -51,8 +55,14 @@ export const DASHBOARD_PAGE_HTML = `<!doctype html>
|
|
|
51
55
|
.merge-row { display: flex; align-items: center; gap: .5rem; }
|
|
52
56
|
.merge-btn { font: inherit; }
|
|
53
57
|
.merge-status { font-size: .85em; opacity: .8; }
|
|
58
|
+
.log-section { margin-top: .6rem; }
|
|
59
|
+
.log-head { display: flex; align-items: center; gap: .5rem; }
|
|
60
|
+
.countdown { opacity: .7; font-size: .85em; }
|
|
61
|
+
.log-panel { margin-top: .4rem; max-height: 30rem; overflow-y: auto; border-radius: 6px; padding: .5rem .75rem; background: color-mix(in oklab, currentColor 6%, transparent); }
|
|
62
|
+
.log-panel pre { white-space: pre-wrap; word-break: break-word; margin: 0; font: .85em/1.4 ui-monospace, monospace; }
|
|
63
|
+
.load-more { display: inline-block; margin-top: .4rem; font-size: .85em; cursor: pointer; background: none; border: none; color: inherit; text-decoration: underline; padding: 0; }
|
|
54
64
|
</style>
|
|
55
|
-
<h1>ghostrails</h1>
|
|
65
|
+
<h1>ghostrails <span class="ver">v${VERSION}</span></h1>
|
|
56
66
|
<p class="sub">The checkbox is what <code>ghostrail start</code> should bring up. The pill beside it is what is running right now.</p>
|
|
57
67
|
<div id="list">loading…</div>
|
|
58
68
|
<script>
|
|
@@ -78,10 +88,28 @@ const prStatus = new Map();
|
|
|
78
88
|
const rowKey = (path, runId) => JSON.stringify([path, runId]);
|
|
79
89
|
let latest = [];
|
|
80
90
|
|
|
91
|
+
// The log section's own state, keyed by ghostrail path (there is one section
|
|
92
|
+
// per ghostrail, not per run). Kept outside render() for the same reason
|
|
93
|
+
// \`expanded\` and \`prStatus\` are: it must survive the 10s poll's re-render.
|
|
94
|
+
const logOpen = new Set();
|
|
95
|
+
const logLimit = new Map();
|
|
96
|
+
const logData = new Map();
|
|
97
|
+
const LOG_PAGE = 100;
|
|
98
|
+
|
|
81
99
|
function fmtWhen(ts) {
|
|
82
100
|
return ts ? new Date(ts).toLocaleString() : "";
|
|
83
101
|
}
|
|
84
102
|
|
|
103
|
+
function fmtCountdown(nextTickAt) {
|
|
104
|
+
if (nextTickAt === undefined) return "next tick: unknown";
|
|
105
|
+
const ms = nextTickAt - Date.now();
|
|
106
|
+
if (ms <= 0) return "next tick: due now";
|
|
107
|
+
const totalSeconds = Math.round(ms / 1000);
|
|
108
|
+
const m = Math.floor(totalSeconds / 60);
|
|
109
|
+
const s = totalSeconds % 60;
|
|
110
|
+
return "next tick in " + (m > 0 ? m + "m " : "") + s + "s";
|
|
111
|
+
}
|
|
112
|
+
|
|
85
113
|
function gateStepsHtml(gate) {
|
|
86
114
|
if (!gate || gate.length === 0) return "<div class=muted>no gate steps</div>";
|
|
87
115
|
const rows = gate.map((s) =>
|
|
@@ -135,6 +163,27 @@ function mergeButtonHtml(path, r) {
|
|
|
135
163
|
"<span class='merge-status'></span></div>";
|
|
136
164
|
}
|
|
137
165
|
|
|
166
|
+
/**
|
|
167
|
+
* What earlier passes said, once a later one has superseded them. The row's own
|
|
168
|
+
* Error and Comment above are always the latest pass's; this is the record of
|
|
169
|
+
* the ones before it, so a comment posted on the PR two passes ago is still
|
|
170
|
+
* readable here (TJ-1676).
|
|
171
|
+
*/
|
|
172
|
+
function outcomeHistoryHtml(row) {
|
|
173
|
+
const all = row.outcomes || [];
|
|
174
|
+
if (all.length < 2) return "";
|
|
175
|
+
const earlier = all.slice(0, -1).reverse();
|
|
176
|
+
const items = earlier.map((o) => {
|
|
177
|
+
const said = o.error || o.summary || "";
|
|
178
|
+
return "<div class=hist-entry>" +
|
|
179
|
+
"<span class='state " + esc(o.state) + "'>" + esc(o.state) + "</span> " +
|
|
180
|
+
"<span class=muted>" + esc(fmtWhen(o.ts)) + "</span>" +
|
|
181
|
+
(said ? "<pre>" + esc(said) + "</pre>" : "") +
|
|
182
|
+
"</div>";
|
|
183
|
+
}).join("");
|
|
184
|
+
return "<div><b>Earlier passes</b>" + items + "</div>";
|
|
185
|
+
}
|
|
186
|
+
|
|
138
187
|
function detailHtml(path, r) {
|
|
139
188
|
const parts = [];
|
|
140
189
|
parts.push(
|
|
@@ -152,6 +201,7 @@ function detailHtml(path, r) {
|
|
|
152
201
|
parts.push("<div><b>Gate</b>" + gateStepsHtml(r.gate) + "</div>");
|
|
153
202
|
if (r.error) parts.push("<div><b>Error</b><pre class=failed>" + esc(r.error) + "</pre></div>");
|
|
154
203
|
if (r.summary) parts.push("<div><b>Comment</b><pre>" + esc(r.summary) + "</pre></div>");
|
|
204
|
+
parts.push(outcomeHistoryHtml(r));
|
|
155
205
|
if (r.prUrl) {
|
|
156
206
|
parts.push(
|
|
157
207
|
"<div><b>PR</b> <a href='" + esc(r.prUrl) + "'" + NEWTAB + ">" + esc(r.prUrl) + "</a></div>",
|
|
@@ -168,6 +218,14 @@ function detailHtml(path, r) {
|
|
|
168
218
|
return parts.join("");
|
|
169
219
|
}
|
|
170
220
|
|
|
221
|
+
/** A failed row's reason on the summary line, truncated, full text on hover (TJ-1676). */
|
|
222
|
+
function errLine(r) {
|
|
223
|
+
if (!r.error) return "";
|
|
224
|
+
const oneLine = String(r.error).replace(/\\s+/g, " ").trim();
|
|
225
|
+
const short = oneLine.length > 120 ? oneLine.slice(0, 119) + "…" : oneLine;
|
|
226
|
+
return "<div class='row-err' title='" + esc(oneLine) + "'>" + esc(short) + "</div>";
|
|
227
|
+
}
|
|
228
|
+
|
|
171
229
|
function runsHtml(g, gi) {
|
|
172
230
|
if (!g.runs.length) {
|
|
173
231
|
return "<p class='none'>" + (g.health === "ok" ? "no runs yet" : esc(g.health)) + "</p>";
|
|
@@ -184,7 +242,7 @@ function runsHtml(g, gi) {
|
|
|
184
242
|
" aria-expanded='" + open + "' data-path='" + esc(g.path) + "' data-run='" + esc(r.runId) + "'" +
|
|
185
243
|
" title='show detail'>▶</button></td>" +
|
|
186
244
|
"<td class=muted>" + esc(r.runId.slice(0, 8)) + "</td>" +
|
|
187
|
-
"<td>" + itemLink(r, r.title || r.itemId || "") + "</td>" +
|
|
245
|
+
"<td>" + itemLink(r, r.title || r.itemId || "") + errLine(r) + "</td>" +
|
|
188
246
|
"<td class='state " + state + "'>" + state + "</td>" +
|
|
189
247
|
"<td>" + esc(r.backend || "") + "</td>" +
|
|
190
248
|
"<td>" + gate + "</td>" +
|
|
@@ -198,6 +256,32 @@ function runsHtml(g, gi) {
|
|
|
198
256
|
body + "</tbody></table>";
|
|
199
257
|
}
|
|
200
258
|
|
|
259
|
+
// The log section: collapsed by default (\`specs/dashboard-log.spec.md\`). The
|
|
260
|
+
// countdown in its header is always visible, open or not; the log lines only
|
|
261
|
+
// render once it's expanded.
|
|
262
|
+
function logSectionHtml(g, gi) {
|
|
263
|
+
const open = logOpen.has(g.path);
|
|
264
|
+
const data = logData.get(g.path);
|
|
265
|
+
const nextTickAt = data ? data.nextTickAt : undefined;
|
|
266
|
+
const head = "<div class='log-head'>" +
|
|
267
|
+
"<button class='twirl log-twirl" + (open ? " open" : "") + "' id='lt-" + gi + "'" +
|
|
268
|
+
" aria-expanded='" + open + "' data-path='" + esc(g.path) + "' title='show log'>▶</button>" +
|
|
269
|
+
"<span>log</span>" +
|
|
270
|
+
"<span class='countdown' data-next='" + esc(nextTickAt === undefined ? "" : nextTickAt) + "'>" +
|
|
271
|
+
fmtCountdown(nextTickAt) + "</span></div>";
|
|
272
|
+
if (!open) return "<div class='log-section'>" + head + "</div>";
|
|
273
|
+
|
|
274
|
+
const lines = data ? data.lines : [];
|
|
275
|
+
const total = data ? data.total : 0;
|
|
276
|
+
const body = lines.length
|
|
277
|
+
? "<div class='log-panel'><pre>" + esc(lines.join("\\n")) + "</pre></div>"
|
|
278
|
+
: "<div class='log-panel muted'>no log yet</div>";
|
|
279
|
+
const more = total > lines.length
|
|
280
|
+
? "<button class='load-more' type='button' data-path='" + esc(g.path) + "'>load more</button>"
|
|
281
|
+
: "";
|
|
282
|
+
return "<div class='log-section'>" + head + body + more + "</div>";
|
|
283
|
+
}
|
|
284
|
+
|
|
201
285
|
function render(ghostrails) {
|
|
202
286
|
latest = ghostrails;
|
|
203
287
|
const list = document.getElementById("list");
|
|
@@ -212,7 +296,7 @@ function render(ghostrails) {
|
|
|
212
296
|
"<span class='pill'>" + esc(g.state) + "</span>" +
|
|
213
297
|
"<span class='path'>" + esc(g.path) + "</span>" +
|
|
214
298
|
"<a class='review' href='" + esc(api("review?path=" + enc(g.path))) + "'>review</a>" +
|
|
215
|
-
"</div>" + runsHtml(g, gi) + "</div>"
|
|
299
|
+
"</div>" + runsHtml(g, gi) + logSectionHtml(g, gi) + "</div>"
|
|
216
300
|
).join("");
|
|
217
301
|
}
|
|
218
302
|
|
|
@@ -237,6 +321,25 @@ async function refreshPrStatus() {
|
|
|
237
321
|
render(latest);
|
|
238
322
|
}
|
|
239
323
|
|
|
324
|
+
/**
|
|
325
|
+
* Fetch the countdown (and, for an expanded section, the log lines) for every
|
|
326
|
+
* ghostrail on the page. A collapsed section asks for \`limit=0\`, so a
|
|
327
|
+
* ghostrail nobody has expanded costs a small JSON reply, not a log dump.
|
|
328
|
+
*/
|
|
329
|
+
async function refreshLogs() {
|
|
330
|
+
if (!latest.length) return;
|
|
331
|
+
await Promise.all(latest.map(async (g) => {
|
|
332
|
+
const limit = logOpen.has(g.path) ? (logLimit.get(g.path) ?? LOG_PAGE) : 0;
|
|
333
|
+
try {
|
|
334
|
+
const res = await fetch(api("/api/log?path=" + enc(g.path) + "&limit=" + limit));
|
|
335
|
+
if (res.ok) logData.set(g.path, await res.json());
|
|
336
|
+
} catch {
|
|
337
|
+
// Leave whatever was last known. A dropped poll is not new information.
|
|
338
|
+
}
|
|
339
|
+
}));
|
|
340
|
+
render(latest);
|
|
341
|
+
}
|
|
342
|
+
|
|
240
343
|
function toggle(path, runId, buttonId) {
|
|
241
344
|
const k = rowKey(path, runId);
|
|
242
345
|
if (expanded.has(k)) expanded.delete(k);
|
|
@@ -249,6 +352,24 @@ function toggle(path, runId, buttonId) {
|
|
|
249
352
|
if (expanded.has(k)) refreshPrStatus();
|
|
250
353
|
}
|
|
251
354
|
|
|
355
|
+
function toggleLog(path, buttonId) {
|
|
356
|
+
if (logOpen.has(path)) {
|
|
357
|
+
logOpen.delete(path);
|
|
358
|
+
} else {
|
|
359
|
+
logOpen.add(path);
|
|
360
|
+
if (!logLimit.has(path)) logLimit.set(path, LOG_PAGE);
|
|
361
|
+
}
|
|
362
|
+
render(latest);
|
|
363
|
+
const btn = document.getElementById(buttonId);
|
|
364
|
+
if (btn) btn.focus();
|
|
365
|
+
if (logOpen.has(path)) refreshLogs();
|
|
366
|
+
}
|
|
367
|
+
|
|
368
|
+
function loadMoreLog(path) {
|
|
369
|
+
logLimit.set(path, (logLimit.get(path) ?? LOG_PAGE) + LOG_PAGE);
|
|
370
|
+
refreshLogs();
|
|
371
|
+
}
|
|
372
|
+
|
|
252
373
|
async function postMerge(path, runId, button) {
|
|
253
374
|
const status = button.parentElement.querySelector(".merge-status");
|
|
254
375
|
button.disabled = true;
|
|
@@ -270,11 +391,23 @@ async function postMerge(path, runId, button) {
|
|
|
270
391
|
const list = document.getElementById("list");
|
|
271
392
|
|
|
272
393
|
list.addEventListener("click", (e) => {
|
|
394
|
+
// Checked before the generic \`.twirl\` below: a log section's twirl carries
|
|
395
|
+
// both classes, and it has no \`data-run\` for \`toggle\` to key on.
|
|
396
|
+
const logTwirlBtn = e.target.closest(".log-twirl");
|
|
397
|
+
if (logTwirlBtn) {
|
|
398
|
+
toggleLog(logTwirlBtn.dataset.path, logTwirlBtn.id);
|
|
399
|
+
return;
|
|
400
|
+
}
|
|
273
401
|
const twirlBtn = e.target.closest(".twirl");
|
|
274
402
|
if (twirlBtn) {
|
|
275
403
|
toggle(twirlBtn.dataset.path, twirlBtn.dataset.run, twirlBtn.id);
|
|
276
404
|
return;
|
|
277
405
|
}
|
|
406
|
+
const loadMoreBtn = e.target.closest(".load-more");
|
|
407
|
+
if (loadMoreBtn) {
|
|
408
|
+
loadMoreLog(loadMoreBtn.dataset.path);
|
|
409
|
+
return;
|
|
410
|
+
}
|
|
278
411
|
const mergeBtn = e.target.closest(".merge-btn");
|
|
279
412
|
if (mergeBtn) postMerge(mergeBtn.dataset.path, mergeBtn.dataset.run, mergeBtn);
|
|
280
413
|
});
|
|
@@ -282,16 +415,26 @@ list.addEventListener("click", (e) => {
|
|
|
282
415
|
list.addEventListener("change", async (e) => {
|
|
283
416
|
const t = e.target;
|
|
284
417
|
if (!t.matches("input[type=checkbox]")) return;
|
|
418
|
+
const wanted = t.checked;
|
|
419
|
+
const before = !wanted;
|
|
420
|
+
// Undo the browser's own flip before anything else runs: nothing is true
|
|
421
|
+
// until the server confirms it, so the box shows the old value, not the
|
|
422
|
+
// clicked one, for the whole width of the request.
|
|
423
|
+
t.checked = before;
|
|
424
|
+
t.indeterminate = true;
|
|
425
|
+
t.disabled = true;
|
|
285
426
|
try {
|
|
286
427
|
const res = await fetch(api("/api/watch"), {
|
|
287
428
|
method: "POST",
|
|
288
429
|
headers: { "content-type": "application/json" },
|
|
289
|
-
body: JSON.stringify({ path: t.dataset.path, watch:
|
|
430
|
+
body: JSON.stringify({ path: t.dataset.path, watch: wanted }),
|
|
290
431
|
});
|
|
291
432
|
if (!res.ok) throw new Error((await res.json()).error || res.statusText);
|
|
292
433
|
render((await res.json()).ghostrails);
|
|
293
434
|
} catch (err) {
|
|
294
|
-
t.
|
|
435
|
+
t.indeterminate = false;
|
|
436
|
+
t.disabled = false;
|
|
437
|
+
t.checked = before;
|
|
295
438
|
alert("could not update: " + err.message);
|
|
296
439
|
}
|
|
297
440
|
});
|
|
@@ -302,12 +445,23 @@ async function load() {
|
|
|
302
445
|
if (!res.ok) throw new Error((await res.json()).error || res.statusText);
|
|
303
446
|
render((await res.json()).ghostrails);
|
|
304
447
|
await refreshPrStatus();
|
|
448
|
+
await refreshLogs();
|
|
305
449
|
} catch (err) {
|
|
306
450
|
document.getElementById("list").innerHTML = '<p class="err">' + esc(err.message) + "</p>";
|
|
307
451
|
}
|
|
308
452
|
}
|
|
309
453
|
load();
|
|
310
454
|
setInterval(load, 10000);
|
|
455
|
+
// Ticks every countdown down by one second between polls, without touching
|
|
456
|
+
// anything else on the page (no re-fetch, no re-render of the log or run
|
|
457
|
+
// tables, so an open log panel's scroll position and an in-flight "load
|
|
458
|
+
// more" are both left alone).
|
|
459
|
+
setInterval(() => {
|
|
460
|
+
for (const el of document.querySelectorAll(".countdown")) {
|
|
461
|
+
const raw = el.getAttribute("data-next");
|
|
462
|
+
el.textContent = fmtCountdown(raw ? Number(raw) : undefined);
|
|
463
|
+
}
|
|
464
|
+
}, 1000);
|
|
311
465
|
</script>
|
|
312
466
|
`;
|
|
313
467
|
//# sourceMappingURL=page.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"page.js","sourceRoot":"","sources":["../../src/dashboard/page.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"page.js","sourceRoot":"","sources":["../../src/dashboard/page.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAExC;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;oCAgDC,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mCA8KR,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmOnE,CAAC"}
|
|
@@ -9,6 +9,11 @@
|
|
|
9
9
|
* The detail rendering (gate steps, artifacts, PR status) intentionally mirrors
|
|
10
10
|
* `page.ts`'s: same information, same shape, because this is the same detail
|
|
11
11
|
* panel shown one run at a time instead of behind a twirl.
|
|
12
|
+
*
|
|
13
|
+
* Prev/Next pages through runs that need a person's attention, not every run
|
|
14
|
+
* in the ghostrail's history: `needsAction` mirrors the pure predicate of the
|
|
15
|
+
* same name in `src/store/events.ts` (see `specs/review-needs-action.spec.md`
|
|
16
|
+
* for the full rule and why each case belongs on its side of it).
|
|
12
17
|
*/
|
|
13
18
|
export declare const REVIEW_PAGE_HTML: string;
|
|
14
19
|
//# sourceMappingURL=review-page.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"review-page.d.ts","sourceRoot":"","sources":["../../src/dashboard/review-page.ts"],"names":[],"mappings":"AAEA
|
|
1
|
+
{"version":3,"file":"review-page.d.ts","sourceRoot":"","sources":["../../src/dashboard/review-page.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,gBAAgB,QAgQ5B,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { IN_PROGRESS_STATE } from "../store/events.js";
|
|
1
|
+
import { IN_PROGRESS_STATE, TRIAGE_RUN_KIND } from "../store/events.js";
|
|
2
2
|
/**
|
|
3
3
|
* The review-mode page: one ghostrail's runs, one at a time, with Prev/Next.
|
|
4
4
|
*
|
|
@@ -10,6 +10,11 @@ import { IN_PROGRESS_STATE } from "../store/events.js";
|
|
|
10
10
|
* The detail rendering (gate steps, artifacts, PR status) intentionally mirrors
|
|
11
11
|
* `page.ts`'s: same information, same shape, because this is the same detail
|
|
12
12
|
* panel shown one run at a time instead of behind a twirl.
|
|
13
|
+
*
|
|
14
|
+
* Prev/Next pages through runs that need a person's attention, not every run
|
|
15
|
+
* in the ghostrail's history: `needsAction` mirrors the pure predicate of the
|
|
16
|
+
* same name in `src/store/events.ts` (see `specs/review-needs-action.spec.md`
|
|
17
|
+
* for the full rule and why each case belongs on its side of it).
|
|
13
18
|
*/
|
|
14
19
|
export const REVIEW_PAGE_HTML = `<!doctype html>
|
|
15
20
|
<meta charset="utf-8">
|
|
@@ -65,7 +70,18 @@ const NEWTAB = " target='_blank' rel='noopener noreferrer'";
|
|
|
65
70
|
const itemLink = (r, label) =>
|
|
66
71
|
r.url ? "<a href='" + esc(r.url) + "'" + NEWTAB + ">" + esc(label) + "</a>" : esc(label);
|
|
67
72
|
|
|
73
|
+
// Mirrors \`needsAction\` in src/store/events.ts: whether a row is something a
|
|
74
|
+
// person should look at right now, not a run still going or one an automated
|
|
75
|
+
// pass already resolved on its own. See specs/review-needs-action.spec.md.
|
|
76
|
+
function needsAction(r) {
|
|
77
|
+
if (!r.state) return false;
|
|
78
|
+
if (r.state === "skipped") return false;
|
|
79
|
+
if (r.kind === ${JSON.stringify(TRIAGE_RUN_KIND)} && r.state === "noop") return false;
|
|
80
|
+
return true;
|
|
81
|
+
}
|
|
82
|
+
|
|
68
83
|
let runs = [];
|
|
84
|
+
let hadAnyRuns = false;
|
|
69
85
|
let index = 0;
|
|
70
86
|
let name = "";
|
|
71
87
|
const prStatus = new Map();
|
|
@@ -170,7 +186,9 @@ function render() {
|
|
|
170
186
|
const body = document.getElementById("body");
|
|
171
187
|
if (runs.length === 0) {
|
|
172
188
|
nav.hidden = true;
|
|
173
|
-
body.innerHTML =
|
|
189
|
+
body.innerHTML = hadAnyRuns
|
|
190
|
+
? "<p class=none>nothing needs your attention right now</p>"
|
|
191
|
+
: "<p class=none>no runs yet</p>";
|
|
174
192
|
return;
|
|
175
193
|
}
|
|
176
194
|
nav.hidden = false;
|
|
@@ -241,7 +259,9 @@ async function load() {
|
|
|
241
259
|
if (!res.ok) throw new Error((await res.json()).error || res.statusText);
|
|
242
260
|
const data = await res.json();
|
|
243
261
|
name = data.name || "";
|
|
244
|
-
|
|
262
|
+
const all = data.runs || [];
|
|
263
|
+
hadAnyRuns = all.length > 0;
|
|
264
|
+
runs = all.filter(needsAction);
|
|
245
265
|
const wanted = params.get("run");
|
|
246
266
|
const found = wanted ? runs.findIndex((r) => r.runId === wanted) : -1;
|
|
247
267
|
index = found >= 0 ? found : 0;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"review-page.js","sourceRoot":"","sources":["../../src/dashboard/review-page.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"review-page.js","sourceRoot":"","sources":["../../src/dashboard/review-page.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAExE;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mBA4Db,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iCA2EjB,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyHjE,CAAC"}
|
|
@@ -20,6 +20,8 @@ export type DashboardRoute = {
|
|
|
20
20
|
kind: "runs";
|
|
21
21
|
} | {
|
|
22
22
|
kind: "merge";
|
|
23
|
+
} | {
|
|
24
|
+
kind: "log";
|
|
23
25
|
} | {
|
|
24
26
|
kind: "notfound";
|
|
25
27
|
};
|
|
@@ -65,6 +67,17 @@ export declare function parseDetailQuery(params: URLSearchParams, key: "run" | "
|
|
|
65
67
|
* that would join it onto a directory.
|
|
66
68
|
*/
|
|
67
69
|
export declare function parseArtifactHash(params: URLSearchParams): string | undefined;
|
|
70
|
+
/** The most `/api/log` will ever return in one request, whatever `limit` asks for. */
|
|
71
|
+
export declare const MAX_LOG_LIMIT = 2000;
|
|
72
|
+
/**
|
|
73
|
+
* The `limit` query param for `/api/log`: how many of the most recent log
|
|
74
|
+
* lines to return, oldest first. Absent, non-numeric, negative, or
|
|
75
|
+
* non-integer all mean `0` — the collapsed section's request, which still
|
|
76
|
+
* wants `nextTickAt` and `total` but no line content. A supplied value is
|
|
77
|
+
* clamped to {@link MAX_LOG_LIMIT}, so a malformed or hostile value can't
|
|
78
|
+
* force an unbounded read.
|
|
79
|
+
*/
|
|
80
|
+
export declare function parseLogLimit(params: URLSearchParams): number;
|
|
68
81
|
/**
|
|
69
82
|
* True when a request looks cross-origin, which the write route refuses.
|
|
70
83
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"routes.d.ts","sourceRoot":"","sources":["../../src/dashboard/routes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAGrD;;;;GAIG;AAEH,MAAM,MAAM,cAAc,GACtB;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAChB;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,GAClB;IAAE,IAAI,EAAE,YAAY,CAAA;CAAE,GACtB;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE,GACjB;IAAE,IAAI,EAAE,UAAU,CAAA;CAAE,GACpB;IAAE,IAAI,EAAE,UAAU,CAAA;CAAE,GACpB;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAChB;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE,GACjB;IAAE,IAAI,EAAE,UAAU,CAAA;CAAE,CAAC;AAEzB,8DAA8D;AAC9D,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,cAAc,
|
|
1
|
+
{"version":3,"file":"routes.d.ts","sourceRoot":"","sources":["../../src/dashboard/routes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAGrD;;;;GAIG;AAEH,MAAM,MAAM,cAAc,GACtB;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAChB;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,GAClB;IAAE,IAAI,EAAE,YAAY,CAAA;CAAE,GACtB;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE,GACjB;IAAE,IAAI,EAAE,UAAU,CAAA;CAAE,GACpB;IAAE,IAAI,EAAE,UAAU,CAAA;CAAE,GACpB;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAChB;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE,GACjB;IAAE,IAAI,EAAE,KAAK,CAAA;CAAE,GACf;IAAE,IAAI,EAAE,UAAU,CAAA;CAAE,CAAC;AAEzB,8DAA8D;AAC9D,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,cAAc,CAqBpE;AAED;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,eAAe,GAAG;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CAIzF;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,eAAe,EACvB,GAAG,EAAE,KAAK,GAAG,MAAM,GAClB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CAM7C;AAED;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,eAAe,GAAG,MAAM,GAAG,SAAS,CAI7E;AAED,sFAAsF;AACtF,eAAO,MAAM,aAAa,OAAO,CAAC;AAElC;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,eAAe,GAAG,MAAM,CAM7D;AA2BD;;;;;;;;;;;;GAYG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAYxE;AAOD;;;;;;GAMG;AACH;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,GAAG,SAAS,CAY3F"}
|
package/dist/dashboard/routes.js
CHANGED
|
@@ -28,6 +28,8 @@ export function parseDashboardRoute(pathname) {
|
|
|
28
28
|
return { kind: "runs" };
|
|
29
29
|
if (parts[1] === "merge")
|
|
30
30
|
return { kind: "merge" };
|
|
31
|
+
if (parts[1] === "log")
|
|
32
|
+
return { kind: "log" };
|
|
31
33
|
return { kind: "notfound" };
|
|
32
34
|
}
|
|
33
35
|
/**
|
|
@@ -83,6 +85,25 @@ export function parseArtifactHash(params) {
|
|
|
83
85
|
return undefined;
|
|
84
86
|
return hash;
|
|
85
87
|
}
|
|
88
|
+
/** The most `/api/log` will ever return in one request, whatever `limit` asks for. */
|
|
89
|
+
export const MAX_LOG_LIMIT = 2000;
|
|
90
|
+
/**
|
|
91
|
+
* The `limit` query param for `/api/log`: how many of the most recent log
|
|
92
|
+
* lines to return, oldest first. Absent, non-numeric, negative, or
|
|
93
|
+
* non-integer all mean `0` — the collapsed section's request, which still
|
|
94
|
+
* wants `nextTickAt` and `total` but no line content. A supplied value is
|
|
95
|
+
* clamped to {@link MAX_LOG_LIMIT}, so a malformed or hostile value can't
|
|
96
|
+
* force an unbounded read.
|
|
97
|
+
*/
|
|
98
|
+
export function parseLogLimit(params) {
|
|
99
|
+
const raw = params.get("limit");
|
|
100
|
+
if (raw === null)
|
|
101
|
+
return 0;
|
|
102
|
+
const n = Number(raw);
|
|
103
|
+
if (!Number.isInteger(n) || n < 0)
|
|
104
|
+
return 0;
|
|
105
|
+
return Math.min(n, MAX_LOG_LIMIT);
|
|
106
|
+
}
|
|
86
107
|
/**
|
|
87
108
|
* Every value for a header, case-insensitively.
|
|
88
109
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"routes.js","sourceRoot":"","sources":["../../src/dashboard/routes.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"routes.js","sourceRoot":"","sources":["../../src/dashboard/routes.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/dashboard/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,MAAM,EAAqC,MAAM,WAAW,CAAC;AAK3E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/dashboard/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,MAAM,EAAqC,MAAM,WAAW,CAAC;AAK3E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAIvD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAEtD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAEjD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAajD,uEAAuE;AACvE,MAAM,MAAM,eAAe,GAAG,IAAI,GAAG,WAAW,GAAG,SAAS,CAAC;AAE7D,kFAAkF;AAClF,MAAM,WAAW,aAAc,SAAQ,SAAS;IAC9C,MAAM,EAAE,eAAe,CAAC;IACxB,gFAAgF;IAChF,KAAK,EAAE,MAAM,CAAC;IACd;;;;;;;OAOG;IACH,IAAI,EAAE,MAAM,EAAE,CAAC;CAChB;AAED,mFAAmF;AACnF,MAAM,WAAW,aAAa;IAC5B,8DAA8D;IAC9D,YAAY,IAAI,OAAO,CAAC,SAAS,EAAE,GAAG,SAAS,CAAC,CAAC;IACjD,aAAa,CAAC,OAAO,EAAE,SAAS,SAAS,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5D,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;IAC/C,0CAA0C;IAC1C,MAAM,CAAC,OAAO,EAAE,SAAS,SAAS,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACpE;;;;;;OAMG;IACH,QAAQ,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC5C;;;;;;;;OAQG;IACH,KAAK,CAAC,CAAC,KAAK,EAAE,SAAS,GAAG,QAAQ,CAAC;IACnC;;;;;;;;OAQG;IACH,QAAQ,CAAC,CAAC,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IACjE;;;;;;;;;OASG;IACH,YAAY,CAAC,CAAC,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAClE;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,qFAAqF;IACrF,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;;OAKG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAKD;;;;;;GAMG;AACH,eAAO,MAAM,qBAAqB,QAES,CAAC;AAkC5C,wDAAwD;AACxD,wBAAsB,YAAY,CAChC,IAAI,EAAE,aAAa,EACnB,OAAO,EAAE,SAAS,SAAS,EAAE,GAC5B,OAAO,CAAC,aAAa,EAAE,CAAC,CAkB1B;AAED;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,aAAa,EAAE,OAAO,GAAE,gBAAqB,GAAG,MAAM,CAqMjG;AAED;;;;;;;;;GASG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,CAIjE"}
|
package/dist/dashboard/server.js
CHANGED
|
@@ -4,11 +4,13 @@ import process from "node:process";
|
|
|
4
4
|
import { isLoopback, normalizeToken } from "../board/server.js";
|
|
5
5
|
import { resolveStateDir } from "../factory/state.js";
|
|
6
6
|
import { repoStateDir } from "../global/state-dir.js";
|
|
7
|
+
import { readNextTickAt } from "../loop/next-tick.js";
|
|
8
|
+
import { readLog } from "../loop/tick-log.js";
|
|
7
9
|
import { MERGE_COMMAND_PHRASE } from "../respond/select.js";
|
|
8
10
|
import { FileStore } from "../store/file-store.js";
|
|
9
11
|
import { DASHBOARD_PAGE_HTML } from "./page.js";
|
|
10
12
|
import { REVIEW_PAGE_HTML } from "./review-page.js";
|
|
11
|
-
import { isCrossOriginWrite, parseArtifactHash, parseDashboardRoute, parseDetailQuery, parseGhostrailQuery, parseWatchUpdate, } from "./routes.js";
|
|
13
|
+
import { isCrossOriginWrite, parseArtifactHash, parseDashboardRoute, parseDetailQuery, parseGhostrailQuery, parseLogLimit, parseWatchUpdate, } from "./routes.js";
|
|
12
14
|
/** How many runs to show per ghostrail. Enough to see recent activity, not a log. */
|
|
13
15
|
const RUNS_PER_GHOSTRAIL = 5;
|
|
14
16
|
/**
|
|
@@ -188,6 +190,22 @@ export function createDashboardServer(deps, options = {}) {
|
|
|
188
190
|
const runs = await (await storeFor(deps, entry)).listRuns({});
|
|
189
191
|
return sendJson(res, 200, { name: entry.name, path: entry.path, runs });
|
|
190
192
|
}
|
|
193
|
+
if (route.kind === "log") {
|
|
194
|
+
if (req.method !== "GET")
|
|
195
|
+
return sendJson(res, 405, { error: "use GET" });
|
|
196
|
+
const query = parseGhostrailQuery(url.searchParams);
|
|
197
|
+
if (query === undefined) {
|
|
198
|
+
return sendJson(res, 400, { error: "expected ?path=<ghostrail path>" });
|
|
199
|
+
}
|
|
200
|
+
const entry = entries.find((e) => e.path === query.path);
|
|
201
|
+
if (entry === undefined) {
|
|
202
|
+
return sendJson(res, 404, { error: "no registered ghostrail at that path" });
|
|
203
|
+
}
|
|
204
|
+
const limit = parseLogLimit(url.searchParams);
|
|
205
|
+
const dir = await deps.stateDir(entry);
|
|
206
|
+
const [nextTickAt, page] = await Promise.all([readNextTickAt(dir), readLog(dir, limit)]);
|
|
207
|
+
return sendJson(res, 200, { nextTickAt, ...page });
|
|
208
|
+
}
|
|
191
209
|
if (route.kind === "merge") {
|
|
192
210
|
if (req.method !== "POST")
|
|
193
211
|
return sendJson(res, 405, { error: "use POST" });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/dashboard/server.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/dashboard/server.ts"],"names":[],"mappings":"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"}
|
package/dist/doctor/checks.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"checks.d.ts","sourceRoot":"","sources":["../../src/doctor/checks.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"checks.d.ts","sourceRoot":"","sources":["../../src/doctor/checks.ts"],"names":[],"mappings":"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"}
|