ghostrail 0.20.1 → 0.22.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/board/page.d.ts.map +1 -1
- package/dist/board/page.js +76 -14
- package/dist/board/page.js.map +1 -1
- package/dist/board/server.d.ts +10 -0
- package/dist/board/server.d.ts.map +1 -1
- package/dist/board/server.js +24 -0
- package/dist/board/server.js.map +1 -1
- package/dist/cli/commands.d.ts +56 -1
- package/dist/cli/commands.d.ts.map +1 -1
- package/dist/cli/commands.js +203 -20
- package/dist/cli/commands.js.map +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +3 -1
- package/dist/cli.js.map +1 -1
- package/dist/commands/help.d.ts.map +1 -1
- package/dist/commands/help.js +10 -0
- package/dist/commands/help.js.map +1 -1
- package/dist/config/load.d.ts.map +1 -1
- package/dist/config/load.js +19 -0
- package/dist/config/load.js.map +1 -1
- package/dist/config/schema.d.ts +13 -0
- package/dist/config/schema.d.ts.map +1 -1
- package/dist/config/schema.js.map +1 -1
- package/dist/dashboard/page.d.ts.map +1 -1
- package/dist/dashboard/page.js +226 -9
- 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 +17 -0
- package/dist/dashboard/routes.d.ts.map +1 -1
- package/dist/dashboard/routes.js +25 -0
- package/dist/dashboard/routes.js.map +1 -1
- package/dist/dashboard/server.d.ts +29 -0
- package/dist/dashboard/server.d.ts.map +1 -1
- package/dist/dashboard/server.js +91 -2
- 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 +6 -0
- package/dist/factory/build.d.ts.map +1 -1
- package/dist/factory/build.js +26 -0
- package/dist/factory/build.js.map +1 -1
- package/dist/loop/next-tick.d.ts +50 -0
- package/dist/loop/next-tick.d.ts.map +1 -0
- package/dist/loop/next-tick.js +87 -0
- package/dist/loop/next-tick.js.map +1 -0
- package/dist/loop/schedule.d.ts +11 -2
- package/dist/loop/schedule.d.ts.map +1 -1
- package/dist/loop/schedule.js +3 -1
- package/dist/loop/schedule.js.map +1 -1
- 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/publish/gh.d.ts +43 -2
- package/dist/publish/gh.d.ts.map +1 -1
- package/dist/publish/gh.js +80 -2
- package/dist/publish/gh.js.map +1 -1
- package/dist/publish/githost.d.ts +18 -1
- package/dist/publish/githost.d.ts.map +1 -1
- package/dist/publish/githost.js +13 -0
- package/dist/publish/githost.js.map +1 -1
- package/dist/publish/index.d.ts +1 -1
- package/dist/publish/index.d.ts.map +1 -1
- package/dist/publish/index.js +1 -1
- package/dist/publish/index.js.map +1 -1
- package/dist/release/index.d.ts +2 -0
- package/dist/release/index.d.ts.map +1 -0
- package/dist/release/index.js +2 -0
- package/dist/release/index.js.map +1 -0
- package/dist/release/release.d.ts +67 -0
- package/dist/release/release.d.ts.map +1 -0
- package/dist/release/release.js +193 -0
- package/dist/release/release.js.map +1 -0
- package/dist/respond/ci-fix-queue.d.ts +40 -0
- package/dist/respond/ci-fix-queue.d.ts.map +1 -0
- package/dist/respond/ci-fix-queue.js +74 -0
- package/dist/respond/ci-fix-queue.js.map +1 -0
- package/dist/respond/index.d.ts +2 -1
- package/dist/respond/index.d.ts.map +1 -1
- package/dist/respond/index.js +2 -1
- package/dist/respond/index.js.map +1 -1
- package/dist/respond/merge.d.ts.map +1 -1
- package/dist/respond/merge.js +17 -1
- package/dist/respond/merge.js.map +1 -1
- package/dist/respond/respond.d.ts +33 -1
- package/dist/respond/respond.d.ts.map +1 -1
- package/dist/respond/respond.js +155 -9
- package/dist/respond/respond.js.map +1 -1
- package/dist/store/events.d.ts +30 -0
- package/dist/store/events.d.ts.map +1 -1
- package/dist/store/events.js +38 -0
- 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
- package/skill/ghostrail/SKILL.md +15 -4
- package/templates/code/ghostrail.toml +3 -0
- package/templates/code/prompts/release.md +40 -0
- package/templates/code/prompts/respond.md +2 -1
- package/templates/content/prompts/respond.md +3 -1
package/dist/board/page.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"page.d.ts","sourceRoot":"","sources":["../../src/board/page.ts"],"names":[],"mappings":"AAEA,kFAAkF;AAClF,eAAO,MAAM,SAAS,
|
|
1
|
+
{"version":3,"file":"page.d.ts","sourceRoot":"","sources":["../../src/board/page.ts"],"names":[],"mappings":"AAEA,kFAAkF;AAClF,eAAO,MAAM,SAAS,QAgXd,CAAC"}
|
package/dist/board/page.js
CHANGED
|
@@ -20,6 +20,12 @@ export const PAGE_HTML = `<!doctype html>
|
|
|
20
20
|
.row-err { font-size: 12px; color: #b3261e; margin-top: 2px; overflow-wrap: anywhere; }
|
|
21
21
|
.done, .merged, .responded { color: #2a9d3a; } .failed { color: #d33; } .blocked, .abandoned { color: #d90; }
|
|
22
22
|
.noop, .skipped, .closed { opacity: .6; } .muted { opacity: .6; }
|
|
23
|
+
.ci-failed { color: #d33; }
|
|
24
|
+
.fix-ci {
|
|
25
|
+
font: inherit; font-size: .8em; margin-left: .4rem; padding: .05rem .4rem;
|
|
26
|
+
border-radius: 4px; border: 1px solid currentColor; background: none; cursor: pointer;
|
|
27
|
+
}
|
|
28
|
+
.fix-ci:disabled { cursor: default; opacity: .6; }
|
|
23
29
|
a { color: inherit; }
|
|
24
30
|
.twirl {
|
|
25
31
|
background: none; border: none; cursor: pointer; font: inherit; padding: 0 .3rem;
|
|
@@ -52,11 +58,50 @@ const link = (href, label) => '<a href="' + esc(href) + '" ' + NEW_TAB + '>' + l
|
|
|
52
58
|
const expanded = new Set();
|
|
53
59
|
const detailHtml = new Map();
|
|
54
60
|
const prStatusCache = new Map();
|
|
61
|
+
const queuedCi = new Set();
|
|
55
62
|
|
|
56
63
|
function fmtWhen(ts) {
|
|
57
64
|
return ts ? new Date(ts).toLocaleString() : "";
|
|
58
65
|
}
|
|
59
66
|
|
|
67
|
+
// Same rule as publish/githost.ts's hasFailingCheck: at least one check has
|
|
68
|
+
// concluded and did not succeed. Restated here because this inline script
|
|
69
|
+
// cannot import that module.
|
|
70
|
+
function ciFailed(status) {
|
|
71
|
+
return !!(
|
|
72
|
+
status && status.available && status.state === "open" &&
|
|
73
|
+
(status.checks || []).some((c) => c.conclusion && c.conclusion !== "success")
|
|
74
|
+
);
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
// The summary table's State cell: the live PR status once it resolves to
|
|
78
|
+
// something terminal (e.g. "merged" instead of "done"); otherwise a "done"
|
|
79
|
+
// row with a still-open PR shows "ci-failed" once its live status confirms a
|
|
80
|
+
// failing check; every other row keeps its stored/fallback state.
|
|
81
|
+
function deriveState(r) {
|
|
82
|
+
const status = prStatusCache.get(r.runId);
|
|
83
|
+
if (isTerminalPrStatus(status)) return status.state;
|
|
84
|
+
if (r.state === "done" && r.prNumber !== undefined && ciFailed(status)) {
|
|
85
|
+
return "ci-failed";
|
|
86
|
+
}
|
|
87
|
+
return r.state || ${JSON.stringify(IN_PROGRESS_STATE)};
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
async function queueCiFix(runId, btn) {
|
|
91
|
+
if (queuedCi.has(runId)) return;
|
|
92
|
+
btn.disabled = true;
|
|
93
|
+
try {
|
|
94
|
+
const res = await fetch("api/runs/" + encodeURIComponent(runId) + "/queue-ci-fix", {
|
|
95
|
+
method: "POST",
|
|
96
|
+
});
|
|
97
|
+
if (!res.ok) throw new Error("queue failed");
|
|
98
|
+
queuedCi.add(runId);
|
|
99
|
+
btn.textContent = "queued";
|
|
100
|
+
} catch {
|
|
101
|
+
btn.disabled = false;
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
|
|
60
105
|
function gateStepsHtml(gate) {
|
|
61
106
|
if (!gate || gate.length === 0) return "<div class=muted>no gate steps</div>";
|
|
62
107
|
const rows = gate.map((s) =>
|
|
@@ -186,15 +231,6 @@ function isTerminalPrStatus(status) {
|
|
|
186
231
|
return Boolean(status && status.available && status.state !== "open");
|
|
187
232
|
}
|
|
188
233
|
|
|
189
|
-
// What the summary table's State cell shows: the live PR status once it
|
|
190
|
-
// resolves to something other than "open" (e.g. "merged" instead of "done"),
|
|
191
|
-
// falling back to the run's own state exactly like before.
|
|
192
|
-
function mainLineState(r) {
|
|
193
|
-
const status = prStatusCache.get(r.runId);
|
|
194
|
-
if (isTerminalPrStatus(status)) return status.state;
|
|
195
|
-
return r.state || ${JSON.stringify(IN_PROGRESS_STATE)};
|
|
196
|
-
}
|
|
197
|
-
|
|
198
234
|
function paintDetail(runId) {
|
|
199
235
|
const cell = document.getElementById("detail-" + runId);
|
|
200
236
|
if (cell) cell.innerHTML = detailHtml.get(runId) || "<div class=muted>loading…</div>";
|
|
@@ -234,12 +270,18 @@ function rowHtml(r) {
|
|
|
234
270
|
const when = fmtWhen(r.startedAt);
|
|
235
271
|
const itemLabel = esc(r.title || r.itemId || "");
|
|
236
272
|
const item = (r.url ? link(r.url, itemLabel) : itemLabel) + errLine(r);
|
|
237
|
-
const state =
|
|
273
|
+
const state = deriveState(r);
|
|
274
|
+
const stateLabel = state === "ci-failed" ? "CI failed" : state;
|
|
275
|
+
const fixCi = state === "ci-failed"
|
|
276
|
+
? "<button class='fix-ci' data-run-id='" + esc(r.runId) + "'" +
|
|
277
|
+
(queuedCi.has(r.runId) ? " disabled" : "") + ">" +
|
|
278
|
+
(queuedCi.has(r.runId) ? "queued" : "fix CI") + "</button>"
|
|
279
|
+
: "";
|
|
238
280
|
const main = "<tr class=run-row>" +
|
|
239
281
|
"<td><button class='twirl" + (isOpen ? " open" : "") + "' data-run-id='" + esc(r.runId) + "'>▶</button></td>" +
|
|
240
282
|
"<td class=muted>" + esc(r.runId.slice(0, 8)) + "</td>" +
|
|
241
283
|
"<td>" + item + "</td>" +
|
|
242
|
-
"<td class='state " + state + "'>" +
|
|
284
|
+
"<td class='state " + esc(state) + "'>" + esc(stateLabel) + fixCi + "</td>" +
|
|
243
285
|
"<td>" + esc(r.backend || "") + "</td>" +
|
|
244
286
|
"<td>" + gate + "</td>" +
|
|
245
287
|
"<td>" + pr + "</td>" +
|
|
@@ -252,14 +294,25 @@ function rowHtml(r) {
|
|
|
252
294
|
}
|
|
253
295
|
|
|
254
296
|
document.getElementById("rows").addEventListener("click", (e) => {
|
|
255
|
-
const
|
|
256
|
-
if (
|
|
297
|
+
const twirl = e.target.closest(".twirl");
|
|
298
|
+
if (twirl) {
|
|
299
|
+
toggle(twirl.dataset.runId);
|
|
300
|
+
return;
|
|
301
|
+
}
|
|
302
|
+
const fixCi = e.target.closest(".fix-ci");
|
|
303
|
+
if (fixCi) queueCiFix(fixCi.dataset.runId, fixCi);
|
|
257
304
|
});
|
|
258
305
|
|
|
259
306
|
const runningBox = document.getElementById("running");
|
|
260
307
|
let toggling = false;
|
|
261
308
|
runningBox.addEventListener("change", async () => {
|
|
262
309
|
const wanted = runningBox.checked;
|
|
310
|
+
const before = !wanted;
|
|
311
|
+
// Undo the browser's own flip before anything else runs: nothing is true
|
|
312
|
+
// until the server confirms it, so the box shows the old value, not the
|
|
313
|
+
// clicked one, for the whole width of the request.
|
|
314
|
+
runningBox.checked = before;
|
|
315
|
+
runningBox.indeterminate = true;
|
|
263
316
|
toggling = true;
|
|
264
317
|
runningBox.disabled = true;
|
|
265
318
|
try {
|
|
@@ -272,8 +325,9 @@ runningBox.addEventListener("change", async () => {
|
|
|
272
325
|
const state = await res.json();
|
|
273
326
|
runningBox.checked = state.enabled;
|
|
274
327
|
} catch {
|
|
275
|
-
runningBox.checked =
|
|
328
|
+
runningBox.checked = before;
|
|
276
329
|
} finally {
|
|
330
|
+
runningBox.indeterminate = false;
|
|
277
331
|
runningBox.disabled = false;
|
|
278
332
|
toggling = false;
|
|
279
333
|
}
|
|
@@ -301,6 +355,14 @@ async function refresh() {
|
|
|
301
355
|
].map(([k, v]) => '<div class="stat"><b>' + esc(v) + "</b>" + esc(k) + "</div>").join("");
|
|
302
356
|
document.getElementById("rows").innerHTML = runs.map(rowHtml).join("");
|
|
303
357
|
for (const runId of expanded) loadDetail(runId);
|
|
358
|
+
// A collapsed "done" row with an open PR still needs its live status polled,
|
|
359
|
+
// so "CI failed" can show up without expanding anything; an expanded one
|
|
360
|
+
// already gets this via loadDetail above.
|
|
361
|
+
for (const r of runs) {
|
|
362
|
+
if (r.state === "done" && r.prNumber !== undefined && !expanded.has(r.runId)) {
|
|
363
|
+
loadPrStatus(r.runId);
|
|
364
|
+
}
|
|
365
|
+
}
|
|
304
366
|
}
|
|
305
367
|
refresh();
|
|
306
368
|
setInterval(refresh, 5000);
|
package/dist/board/page.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"page.js","sourceRoot":"","sources":["../../src/board/page.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAEvD,kFAAkF;AAClF,MAAM,CAAC,MAAM,SAAS,GAAG
|
|
1
|
+
{"version":3,"file":"page.js","sourceRoot":"","sources":["../../src/board/page.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAEvD,kFAAkF;AAClF,MAAM,CAAC,MAAM,SAAS,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;sBAoFH,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QA4R/C,CAAC"}
|
package/dist/board/server.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { type Server } from "node:http";
|
|
2
2
|
import type { RunControl } from "../loop/control.js";
|
|
3
3
|
import type { PrStatus } from "../publish/githost.js";
|
|
4
|
+
import type { CiFixQueueStore } from "../respond/ci-fix-queue.js";
|
|
4
5
|
import { type RunStore } from "../store/port.js";
|
|
5
6
|
export type Route = {
|
|
6
7
|
kind: "page";
|
|
@@ -15,6 +16,9 @@ export type Route = {
|
|
|
15
16
|
} | {
|
|
16
17
|
kind: "prStatus";
|
|
17
18
|
id: string;
|
|
19
|
+
} | {
|
|
20
|
+
kind: "queueCiFix";
|
|
21
|
+
id: string;
|
|
18
22
|
} | {
|
|
19
23
|
kind: "stats";
|
|
20
24
|
} | {
|
|
@@ -51,6 +55,12 @@ export interface BoardOptions {
|
|
|
51
55
|
* say so rather than claim a pause it did not perform.
|
|
52
56
|
*/
|
|
53
57
|
control?: RunControl;
|
|
58
|
+
/**
|
|
59
|
+
* Where a "Fix CI" click queues a PR number for the next respond tick.
|
|
60
|
+
* Without it, `/api/runs/:id/queue-ci-fix` refuses the request rather than
|
|
61
|
+
* claiming a request it cannot actually queue.
|
|
62
|
+
*/
|
|
63
|
+
ciFixQueue?: CiFixQueueStore;
|
|
54
64
|
}
|
|
55
65
|
/** True for an address only this machine can reach, where a token is optional. */
|
|
56
66
|
export declare function isLoopback(bind: string): boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/board/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAwB,KAAK,MAAM,EAAqC,MAAM,WAAW,CAAC;AACjG,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAkB,KAAK,QAAQ,EAAkB,MAAM,kBAAkB,CAAC;AAIjF,MAAM,MAAM,KAAK,GACb;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAChB;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAChB;IAAE,IAAI,EAAE,KAAK,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,GAC3B;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,GAC9B;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,GAChC;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE,GACjB;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAClC;IAAE,IAAI,EAAE,SAAS,CAAA;CAAE,GACnB;IAAE,IAAI,EAAE,UAAU,CAAA;CAAE,CAAC;AAEzB,qDAAqD;AACrD,wBAAgB,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,KAAK,
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/board/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAwB,KAAK,MAAM,EAAqC,MAAM,WAAW,CAAC;AACjG,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,EAAkB,KAAK,QAAQ,EAAkB,MAAM,kBAAkB,CAAC;AAIjF,MAAM,MAAM,KAAK,GACb;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAChB;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAChB;IAAE,IAAI,EAAE,KAAK,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,GAC3B;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,GAC9B;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,GAChC;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,GAClC;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE,GACjB;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAClC;IAAE,IAAI,EAAE,SAAS,CAAA;CAAE,GACnB;IAAE,IAAI,EAAE,UAAU,CAAA;CAAE,CAAC;AAEzB,qDAAqD;AACrD,wBAAgB,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,KAAK,CAyBlD;AAED,2FAA2F;AAC3F,MAAM,WAAW,cAAc;IAC7B,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;CAClD;AAuBD,MAAM,WAAW,YAAY;IAC3B,6CAA6C;IAC7C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,4FAA4F;IAC5F,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;;OAKG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,oGAAoG;IACpG,OAAO,CAAC,EAAE,cAAc,CAAC;IACzB;;;;OAIG;IACH,OAAO,CAAC,EAAE,UAAU,CAAC;IACrB;;;;OAIG;IACH,UAAU,CAAC,EAAE,eAAe,CAAC;CAC9B;AAED,kFAAkF;AAClF,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEhD;AAQD;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,GAAE,YAAiB,GAAG,MAAM,CAqBrF;AAED,4EAA4E;AAC5E;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAG5E"}
|
package/dist/board/server.js
CHANGED
|
@@ -19,6 +19,8 @@ export function parseRoute(pathname) {
|
|
|
19
19
|
return { kind: "events", id };
|
|
20
20
|
if (parts.length === 4 && parts[3] === "pr-status")
|
|
21
21
|
return { kind: "prStatus", id };
|
|
22
|
+
if (parts.length === 4 && parts[3] === "queue-ci-fix")
|
|
23
|
+
return { kind: "queueCiFix", id };
|
|
22
24
|
return { kind: "notfound" };
|
|
23
25
|
}
|
|
24
26
|
if (parts[1] === "stats" && parts.length === 2)
|
|
@@ -167,6 +169,28 @@ async function handle(store, options, req, res) {
|
|
|
167
169
|
}
|
|
168
170
|
return;
|
|
169
171
|
}
|
|
172
|
+
case "queueCiFix": {
|
|
173
|
+
if (req.method !== "POST") {
|
|
174
|
+
sendJson(res, 405, { error: "use POST" });
|
|
175
|
+
return;
|
|
176
|
+
}
|
|
177
|
+
const row = await store.getRun(route.id);
|
|
178
|
+
if (row === undefined) {
|
|
179
|
+
sendJson(res, 404, { error: "not found" });
|
|
180
|
+
return;
|
|
181
|
+
}
|
|
182
|
+
if (row.prNumber === undefined) {
|
|
183
|
+
sendJson(res, 404, { error: "no pull request for this run" });
|
|
184
|
+
return;
|
|
185
|
+
}
|
|
186
|
+
if (options.ciFixQueue === undefined) {
|
|
187
|
+
sendJson(res, 503, { error: "this board cannot queue a CI fix" });
|
|
188
|
+
return;
|
|
189
|
+
}
|
|
190
|
+
await options.ciFixQueue.add(row.prNumber);
|
|
191
|
+
sendJson(res, 200, { queued: true });
|
|
192
|
+
return;
|
|
193
|
+
}
|
|
170
194
|
case "stats":
|
|
171
195
|
sendJson(res, 200, computeStats(await store.listRuns()));
|
|
172
196
|
return;
|
package/dist/board/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/board/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAA0D,YAAY,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/board/server.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/commands.d.ts
CHANGED
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
import type { ExecResult } from "../backend/types.js";
|
|
2
|
+
import type { GhostrailConfig } from "../config/schema.js";
|
|
2
3
|
import { type DoctorDeps } from "../doctor/index.js";
|
|
4
|
+
import { type BuildContext } from "../factory/build.js";
|
|
5
|
+
import { type LoopDeps } from "../loop/engine.js";
|
|
6
|
+
import type { Logger } from "../loop/ports.js";
|
|
3
7
|
import { type ServiceManager } from "../service/index.js";
|
|
4
8
|
import type { Scope } from "../vendor/skilltend/paths.js";
|
|
5
9
|
import { type Asker } from "./prompt.js";
|
|
@@ -20,6 +24,42 @@ export declare function parseCommandFlags(argv: readonly string[], defaults: Com
|
|
|
20
24
|
interface CommandEnv {
|
|
21
25
|
[key: string]: string | undefined;
|
|
22
26
|
}
|
|
27
|
+
interface LoopSetup {
|
|
28
|
+
config: GhostrailConfig;
|
|
29
|
+
deps: LoopDeps;
|
|
30
|
+
secrets: string[];
|
|
31
|
+
/** This repo's state directory, so `watch` reads its pause flag from it. */
|
|
32
|
+
stateDir: string;
|
|
33
|
+
/**
|
|
34
|
+
* The context the loop deps were built from, so `watch` can assemble the
|
|
35
|
+
* respond and triage passes from the same state dir, lock, and credentials
|
|
36
|
+
* instead of redoing the setup (TJ-1664).
|
|
37
|
+
*/
|
|
38
|
+
ctx: BuildContext;
|
|
39
|
+
/**
|
|
40
|
+
* The very logger `deps` were built with. `watch` narrates through this one
|
|
41
|
+
* rather than a second logger of its own, so its lines and the engine's land
|
|
42
|
+
* in the same places (TJ-1682).
|
|
43
|
+
*/
|
|
44
|
+
logger: Logger;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Builds the logger the loop deps get, given the state directory `prepareLoop`
|
|
48
|
+
* resolved and the secrets to redact. Only `watch` overrides it, to persist a
|
|
49
|
+
* copy of every line (see {@link watchLogger}).
|
|
50
|
+
*/
|
|
51
|
+
type LoggerFactory = (stateDir: string, secrets: readonly string[]) => Logger;
|
|
52
|
+
/**
|
|
53
|
+
* Shared setup for the run/watch loops: apply secrets, load the merged config,
|
|
54
|
+
* require the Linear key, and assemble the loop deps. Prints errors and returns
|
|
55
|
+
* undefined on failure.
|
|
56
|
+
*
|
|
57
|
+
* `loggerFor` is the seam TJ-1682 turned on: the logger the deps are built with
|
|
58
|
+
* is decided here, because only here is the state directory known, and a caller
|
|
59
|
+
* that builds its own afterwards cannot reach the engine's narration. Exported
|
|
60
|
+
* so that invariant can be tested directly rather than inferred from a tick.
|
|
61
|
+
*/
|
|
62
|
+
export declare function prepareLoop(flags: CommandFlags, streams: CommandStreams, env: CommandEnv, loggerFor?: LoggerFactory): Promise<LoopSetup | undefined>;
|
|
23
63
|
/** `ghostrail run`: drain eligible work once. */
|
|
24
64
|
export declare function cmdRun(argv: readonly string[], streams: CommandStreams, env?: CommandEnv, cwd?: string): Promise<number>;
|
|
25
65
|
interface WatchFlags {
|
|
@@ -37,6 +77,8 @@ export declare function cmdWatch(argv: readonly string[], streams: CommandStream
|
|
|
37
77
|
export declare function cmdTriage(argv: readonly string[], streams: CommandStreams, env?: CommandEnv, cwd?: string): Promise<number>;
|
|
38
78
|
/** `ghostrail respond`: fold new human PR comments back into their branches. */
|
|
39
79
|
export declare function cmdRespond(argv: readonly string[], streams: CommandStreams, env?: CommandEnv, cwd?: string): Promise<number>;
|
|
80
|
+
/** `ghostrail release`: cut one release now. What "release" means is entirely [release].prompt's business. */
|
|
81
|
+
export declare function cmdRelease(argv: readonly string[], streams: CommandStreams, env?: CommandEnv, cwd?: string): Promise<number>;
|
|
40
82
|
interface BoardFlags {
|
|
41
83
|
repo: string;
|
|
42
84
|
port: number;
|
|
@@ -72,6 +114,13 @@ export declare function cmdArtifacts(argv: readonly string[], streams: CommandSt
|
|
|
72
114
|
export type GhostrailHealth = "ok" | "no config" | "missing";
|
|
73
115
|
/** Check one registered path without trusting the registry's own claims. */
|
|
74
116
|
export declare function ghostrailHealth(path: string): Promise<GhostrailHealth>;
|
|
117
|
+
/**
|
|
118
|
+
* Whether a registered ghostrail has `[release]` configured — the dashboard's
|
|
119
|
+
* gate for showing the release button. False for anything that cannot be
|
|
120
|
+
* read or parsed, the same leniency `ghostrailHealth` already has: a config
|
|
121
|
+
* problem hides the button rather than erroring the whole listing.
|
|
122
|
+
*/
|
|
123
|
+
export declare function releaseEnabledFor(path: string): Promise<boolean>;
|
|
75
124
|
/** `ghostrail ls`: the ghostrails this account knows about. */
|
|
76
125
|
export declare function cmdLs(_argv: readonly string[], streams: CommandStreams, env?: CommandEnv): Promise<number>;
|
|
77
126
|
/**
|
|
@@ -86,7 +135,8 @@ export declare function cmdStatus(argv: readonly string[], streams: CommandStrea
|
|
|
86
135
|
/** The quickstart templates bundled with the package. */
|
|
87
136
|
export declare const TEMPLATES: readonly ["code", "content"];
|
|
88
137
|
/**
|
|
89
|
-
* `ghostrail init <template> [--repo <path>] [--force|--diff|--update|--greenroom
|
|
138
|
+
* `ghostrail init <template> [--repo <path>] [--force|--diff|--update|--greenroom
|
|
139
|
+
* [<path>]] [--register] [--repoint]`:
|
|
90
140
|
* scaffold `ghostrail.toml` and `prompts/` from a quickstart template. Safe for
|
|
91
141
|
* a fresh OR an existing repo: existing files are left untouched (skipped)
|
|
92
142
|
* unless `--force` is given. `--diff` reports drift instead of writing
|
|
@@ -98,6 +148,11 @@ export declare const TEMPLATES: readonly ["code", "content"];
|
|
|
98
148
|
*
|
|
99
149
|
* Registration is skipped, not just the write, when the target looks like a
|
|
100
150
|
* temp directory (TJ-1654); `--register` registers it anyway.
|
|
151
|
+
*
|
|
152
|
+
* `--repoint` opts into the one registry write that is an act rather than an
|
|
153
|
+
* add: moving an already-registered ghostrail's entry to this checkout when it
|
|
154
|
+
* is currently pointing somewhere else. Without it, that mismatch is reported
|
|
155
|
+
* and the registry is left alone (TJ-1652).
|
|
101
156
|
*/
|
|
102
157
|
export declare function cmdInit(argv: readonly string[], streams: CommandStreams, cwd?: string, env?: CommandEnv): Promise<number>;
|
|
103
158
|
interface SkillFlags {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../../src/cli/commands.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../../src/cli/commands.ts"],"names":[],"mappings":"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"}
|