ghostrail 0.22.0 → 0.23.1
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/agent/claude-code.d.ts.map +1 -1
- package/dist/agent/claude-code.js +5 -0
- package/dist/agent/claude-code.js.map +1 -1
- package/dist/backend/proc.d.ts +10 -0
- package/dist/backend/proc.d.ts.map +1 -1
- package/dist/backend/proc.js +41 -3
- package/dist/backend/proc.js.map +1 -1
- package/dist/backend/types.d.ts +9 -0
- package/dist/backend/types.d.ts.map +1 -1
- package/dist/board/page.d.ts.map +1 -1
- package/dist/board/page.js +3 -0
- package/dist/board/page.js.map +1 -1
- package/dist/cli/commands.d.ts +25 -2
- package/dist/cli/commands.d.ts.map +1 -1
- package/dist/cli/commands.js +58 -7
- package/dist/cli/commands.js.map +1 -1
- package/dist/commands/help.d.ts.map +1 -1
- package/dist/commands/help.js +4 -2
- package/dist/commands/help.js.map +1 -1
- package/dist/dashboard/page.d.ts +0 -14
- package/dist/dashboard/page.d.ts.map +1 -1
- package/dist/dashboard/page.js +3 -0
- package/dist/dashboard/page.js.map +1 -1
- package/dist/loop/branch.d.ts +8 -1
- package/dist/loop/branch.d.ts.map +1 -1
- package/dist/loop/branch.js +14 -2
- package/dist/loop/branch.js.map +1 -1
- package/dist/loop/engine.d.ts.map +1 -1
- package/dist/loop/engine.js +57 -5
- package/dist/loop/engine.js.map +1 -1
- package/dist/loop/ports.d.ts +4 -1
- package/dist/loop/ports.d.ts.map +1 -1
- package/dist/loop/recurrence.d.ts +43 -0
- package/dist/loop/recurrence.d.ts.map +1 -0
- package/dist/loop/recurrence.js +92 -0
- package/dist/loop/recurrence.js.map +1 -0
- package/dist/version.d.ts +6 -0
- package/dist/version.d.ts.map +1 -1
- package/dist/version.js +6 -0
- package/dist/version.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"claude-code.d.ts","sourceRoot":"","sources":["../../src/agent/claude-code.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,YAAY,EAAc,MAAM,kBAAkB,CAAC;AAKtF,+EAA+E;AAC/E,eAAO,MAAM,WAAW,2BAA2B,CAAC;AAEpD,MAAM,WAAW,iBAAiB;IAChC,4EAA4E;IAC5E,MAAM,EAAE,MAAM,CAAC;IACf,4EAA4E;IAC5E,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;IAChC,8EAA8E;IAC9E,MAAM,EAAE,MAAM,CAAC;IACf,6CAA6C;IAC7C,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,aAAa,CAAC;IAC/C,sDAAsD;IACtD,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,oCAAoC;IACpC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,2BAA2B;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,kEAAkE;IAClE,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,iBAAiB,GAAG,MAAM,EAAE,CAwBpE;AAYD;;;;;;GAMG;AACH,qBAAa,eAAgB,YAAW,KAAK;IAezC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC;IAC5B,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC;IAfnC;;;;;;;;;;;;OAYG;gBAEgB,UAAU,CAAC,EAAE,MAAM,YAAA,EACnB,eAAe,CAAC,EAAE,MAAM,YAAA;IAGrC,GAAG,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"claude-code.d.ts","sourceRoot":"","sources":["../../src/agent/claude-code.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,YAAY,EAAc,MAAM,kBAAkB,CAAC;AAKtF,+EAA+E;AAC/E,eAAO,MAAM,WAAW,2BAA2B,CAAC;AAEpD,MAAM,WAAW,iBAAiB;IAChC,4EAA4E;IAC5E,MAAM,EAAE,MAAM,CAAC;IACf,4EAA4E;IAC5E,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;IAChC,8EAA8E;IAC9E,MAAM,EAAE,MAAM,CAAC;IACf,6CAA6C;IAC7C,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,aAAa,CAAC;IAC/C,sDAAsD;IACtD,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,oCAAoC;IACpC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,2BAA2B;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,kEAAkE;IAClE,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,iBAAiB,GAAG,MAAM,EAAE,CAwBpE;AAYD;;;;;;GAMG;AACH,qBAAa,eAAgB,YAAW,KAAK;IAezC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC;IAC5B,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC;IAfnC;;;;;;;;;;;;OAYG;gBAEgB,UAAU,CAAC,EAAE,MAAM,YAAA,EACnB,eAAe,CAAC,EAAE,MAAM,YAAA;IAGrC,GAAG,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC;IAiFvD;;;;;;;OAOG;YACW,UAAU;CAczB"}
|
|
@@ -130,6 +130,11 @@ export class ClaudeCodeAgent {
|
|
|
130
130
|
...spend,
|
|
131
131
|
status: "failed",
|
|
132
132
|
error: describeAgentFailure(run.exitCode, run.stdout, run.stderr),
|
|
133
|
+
// A signal killed the agent from outside: nothing about the change it
|
|
134
|
+
// was making is known to be wrong, so this counts against the transient
|
|
135
|
+
// allowance and is retried, not against the one a bad change spends
|
|
136
|
+
// (TJ-1700).
|
|
137
|
+
...(run.signal === undefined ? {} : { transient: true }),
|
|
133
138
|
};
|
|
134
139
|
}
|
|
135
140
|
// A clean exit with no result document. This is still a noop, because
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"claude-code.js","sourceRoot":"","sources":["../../src/agent/claude-code.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"claude-code.js","sourceRoot":"","sources":["../../src/agent/claude-code.ts"],"names":[],"mappings":"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"}
|
package/dist/backend/proc.d.ts
CHANGED
|
@@ -12,11 +12,21 @@ export declare function splitStream(pending: string, chunk: string): {
|
|
|
12
12
|
lines: string[];
|
|
13
13
|
pending: string;
|
|
14
14
|
};
|
|
15
|
+
/** Said on stderr when a signal killed the command, which otherwise says nothing. */
|
|
16
|
+
export declare const KILLED_BY_SIGNAL = "process was killed by signal";
|
|
15
17
|
/**
|
|
16
18
|
* Spawn a command, collect its output, and resolve an {@link ExecResult}.
|
|
17
19
|
* Never rejects: a spawn error resolves with a non-zero exit code and the error
|
|
18
20
|
* text on stderr. If `onLog` is given, each complete output line is delivered as
|
|
19
21
|
* it arrives. A `timeoutMs` kills the process and sets `timedOut`.
|
|
22
|
+
*
|
|
23
|
+
* A process killed by a signal resolves with the shell's `128 + signum`, the
|
|
24
|
+
* signal's name in `signal`, and a line saying so on stderr. Reading Node's
|
|
25
|
+
* `code: null` as a clean 0 made a killed process indistinguishable from one
|
|
26
|
+
* that exited quietly having printed nothing, which is exactly how a buffered
|
|
27
|
+
* `claude --output-format json` looks when it dies mid-run: the agent adapter
|
|
28
|
+
* then classified a dead run as a deliberate noop and parked the item on a
|
|
29
|
+
* human instead of retrying it (TJ-1700).
|
|
20
30
|
*/
|
|
21
31
|
export declare function spawnCollect(command: readonly string[], options?: ExecOptions & {
|
|
22
32
|
onLog?: (line: LogLine) => void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"proc.d.ts","sourceRoot":"","sources":["../../src/backend/proc.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"proc.d.ts","sourceRoot":"","sources":["../../src/backend/proc.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAEnE;;;;;;;;GAQG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG;IAAE,KAAK,EAAE,MAAM,EAAE,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAMhG;AAED,qFAAqF;AACrF,eAAO,MAAM,gBAAgB,iCAAiC,CAAC;AAY/D;;;;;;;;;;;;;GAaG;AACH,wBAAgB,YAAY,CAC1B,OAAO,EAAE,SAAS,MAAM,EAAE,EAC1B,OAAO,GAAE,WAAW,GAAG;IAAE,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAA;CAAO,GAC9D,OAAO,CAAC,UAAU,CAAC,CAgGrB"}
|
package/dist/backend/proc.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { spawn } from "node:child_process";
|
|
2
|
+
import { constants } from "node:os";
|
|
2
3
|
import process from "node:process";
|
|
3
4
|
/**
|
|
4
5
|
* Split a running text stream into complete lines.
|
|
@@ -16,11 +17,30 @@ export function splitStream(pending, chunk) {
|
|
|
16
17
|
const lines = parts.map((line) => (line.endsWith("\r") ? line.slice(0, -1) : line));
|
|
17
18
|
return { lines, pending: rest };
|
|
18
19
|
}
|
|
20
|
+
/** Said on stderr when a signal killed the command, which otherwise says nothing. */
|
|
21
|
+
export const KILLED_BY_SIGNAL = "process was killed by signal";
|
|
22
|
+
/**
|
|
23
|
+
* The shell's convention for a signal death, `128 + signum`, so a SIGKILL reads
|
|
24
|
+
* as 137 exactly as `docker exec` and a shell already report it. Falls back to
|
|
25
|
+
* 128 for a name Node reports but this platform does not number.
|
|
26
|
+
*/
|
|
27
|
+
function exitCodeForSignal(signal) {
|
|
28
|
+
const number = constants.signals[signal];
|
|
29
|
+
return typeof number === "number" ? 128 + number : 128;
|
|
30
|
+
}
|
|
19
31
|
/**
|
|
20
32
|
* Spawn a command, collect its output, and resolve an {@link ExecResult}.
|
|
21
33
|
* Never rejects: a spawn error resolves with a non-zero exit code and the error
|
|
22
34
|
* text on stderr. If `onLog` is given, each complete output line is delivered as
|
|
23
35
|
* it arrives. A `timeoutMs` kills the process and sets `timedOut`.
|
|
36
|
+
*
|
|
37
|
+
* A process killed by a signal resolves with the shell's `128 + signum`, the
|
|
38
|
+
* signal's name in `signal`, and a line saying so on stderr. Reading Node's
|
|
39
|
+
* `code: null` as a clean 0 made a killed process indistinguishable from one
|
|
40
|
+
* that exited quietly having printed nothing, which is exactly how a buffered
|
|
41
|
+
* `claude --output-format json` looks when it dies mid-run: the agent adapter
|
|
42
|
+
* then classified a dead run as a deliberate noop and parked the item on a
|
|
43
|
+
* human instead of retrying it (TJ-1700).
|
|
24
44
|
*/
|
|
25
45
|
export function spawnCollect(command, options = {}) {
|
|
26
46
|
const [file, ...args] = command;
|
|
@@ -79,7 +99,7 @@ export function spawnCollect(command, options = {}) {
|
|
|
79
99
|
killTree();
|
|
80
100
|
}, options.timeoutMs)
|
|
81
101
|
: undefined;
|
|
82
|
-
const finish = (exitCode) => {
|
|
102
|
+
const finish = (exitCode, signal) => {
|
|
83
103
|
if (settled)
|
|
84
104
|
return;
|
|
85
105
|
settled = true;
|
|
@@ -91,13 +111,31 @@ export function spawnCollect(command, options = {}) {
|
|
|
91
111
|
options.onLog({ stream: which, text: pending[which] });
|
|
92
112
|
}
|
|
93
113
|
}
|
|
94
|
-
resolve({
|
|
114
|
+
resolve({
|
|
115
|
+
exitCode,
|
|
116
|
+
stdout,
|
|
117
|
+
stderr,
|
|
118
|
+
durationMs: Date.now() - start,
|
|
119
|
+
timedOut,
|
|
120
|
+
...(signal === undefined ? {} : { signal }),
|
|
121
|
+
});
|
|
95
122
|
};
|
|
96
123
|
child.on("error", (error) => {
|
|
97
124
|
stderr += `${error instanceof Error ? error.message : String(error)}\n`;
|
|
98
125
|
finish(127);
|
|
99
126
|
});
|
|
100
|
-
child.on("close", (code) =>
|
|
127
|
+
child.on("close", (code, signal) => {
|
|
128
|
+
// A timeout is this function's own kill, and already has its own report.
|
|
129
|
+
if (timedOut)
|
|
130
|
+
return finish(124);
|
|
131
|
+
if (signal !== null) {
|
|
132
|
+
// Both streams are usually empty here, so without a word on stderr the
|
|
133
|
+
// failure would be reported with no reason at all.
|
|
134
|
+
stderr += `${KILLED_BY_SIGNAL} ${signal}\n`;
|
|
135
|
+
return finish(exitCodeForSignal(signal), signal);
|
|
136
|
+
}
|
|
137
|
+
finish(code ?? 0);
|
|
138
|
+
});
|
|
101
139
|
});
|
|
102
140
|
}
|
|
103
141
|
//# sourceMappingURL=proc.js.map
|
package/dist/backend/proc.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"proc.js","sourceRoot":"","sources":["../../src/backend/proc.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,OAAO,MAAM,cAAc,CAAC;AAGnC;;;;;;;;GAQG;AACH,MAAM,UAAU,WAAW,CAAC,OAAe,EAAE,KAAa;IACxD,MAAM,QAAQ,GAAG,OAAO,GAAG,KAAK,CAAC;IACjC,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACnC,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC;IAC/B,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IACpF,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AAClC,CAAC;AAED
|
|
1
|
+
{"version":3,"file":"proc.js","sourceRoot":"","sources":["../../src/backend/proc.ts"],"names":[],"mappings":"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"}
|
package/dist/backend/types.d.ts
CHANGED
|
@@ -79,6 +79,15 @@ export interface ExecResult {
|
|
|
79
79
|
durationMs: number;
|
|
80
80
|
/** True when the command was killed for exceeding `timeoutMs`. */
|
|
81
81
|
timedOut: boolean;
|
|
82
|
+
/**
|
|
83
|
+
* The signal that killed the command, when one did (`"SIGKILL"`, ...).
|
|
84
|
+
*
|
|
85
|
+
* A signal death is not a clean exit, and it usually leaves both streams
|
|
86
|
+
* empty, so without this the caller cannot tell it apart from a command that
|
|
87
|
+
* exited quietly having printed nothing. Absent on every normal exit,
|
|
88
|
+
* including a timeout, which reports `timedOut` instead.
|
|
89
|
+
*/
|
|
90
|
+
signal?: string;
|
|
82
91
|
}
|
|
83
92
|
/** One line of streamed command output. */
|
|
84
93
|
export interface LogLine {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/backend/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,wDAAwD;AACxD,MAAM,WAAW,aAAa;IAC5B;;;OAGG;IACH,QAAQ,EAAE,MAAM,CAAC;IACjB,kFAAkF;IAClF,UAAU,EAAE,MAAM,CAAC;IACnB,yFAAyF;IACzF,MAAM,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,IAAI,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAAC;IAC3B;;;;;;OAMG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,8EAA8E;IAC9E,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;;OAKG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,8EAA8E;AAC9E,MAAM,WAAW,SAAS;IACxB,uCAAuC;IACvC,EAAE,EAAE,MAAM,CAAC;IACX,yCAAyC;IACzC,OAAO,EAAE,MAAM,CAAC;IAChB;;;OAGG;IACH,GAAG,EAAE,MAAM,CAAC;IACZ,sCAAsC;IACtC,MAAM,EAAE,MAAM,CAAC;IACf;;;;;OAKG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,WAAW;IAC1B,2DAA2D;IAC3D,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,mDAAmD;IACnD,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,wEAAwE;IACxE,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,2EAA2E;AAC3E,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,kEAAkE;IAClE,QAAQ,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/backend/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,wDAAwD;AACxD,MAAM,WAAW,aAAa;IAC5B;;;OAGG;IACH,QAAQ,EAAE,MAAM,CAAC;IACjB,kFAAkF;IAClF,UAAU,EAAE,MAAM,CAAC;IACnB,yFAAyF;IACzF,MAAM,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,IAAI,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAAC;IAC3B;;;;;;OAMG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,8EAA8E;IAC9E,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;;OAKG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,8EAA8E;AAC9E,MAAM,WAAW,SAAS;IACxB,uCAAuC;IACvC,EAAE,EAAE,MAAM,CAAC;IACX,yCAAyC;IACzC,OAAO,EAAE,MAAM,CAAC;IAChB;;;OAGG;IACH,GAAG,EAAE,MAAM,CAAC;IACZ,sCAAsC;IACtC,MAAM,EAAE,MAAM,CAAC;IACf;;;;;OAKG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,WAAW;IAC1B,2DAA2D;IAC3D,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,mDAAmD;IACnD,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,wEAAwE;IACxE,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,2EAA2E;AAC3E,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,kEAAkE;IAClE,QAAQ,EAAE,OAAO,CAAC;IAClB;;;;;;;OAOG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,2CAA2C;AAC3C,MAAM,WAAW,OAAO;IACtB,MAAM,EAAE,QAAQ,GAAG,QAAQ,CAAC;IAC5B,IAAI,EAAE,MAAM,CAAC;CACd;AAED,qCAAqC;AACrC,MAAM,WAAW,OAAO;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,iFAAiF;IACjF,SAAS,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;IACnD,0EAA0E;IAC1E,IAAI,CACF,SAAS,EAAE,SAAS,EACpB,OAAO,EAAE,SAAS,MAAM,EAAE,EAC1B,OAAO,CAAC,EAAE,WAAW,GACpB,OAAO,CAAC,UAAU,CAAC,CAAC;IACvB,yFAAyF;IACzF,MAAM,CACJ,SAAS,EAAE,SAAS,EACpB,OAAO,EAAE,SAAS,MAAM,EAAE,EAC1B,KAAK,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,EAC9B,OAAO,CAAC,EAAE,WAAW,GACpB,OAAO,CAAC,UAAU,CAAC,CAAC;IACvB,qFAAqF;IACrF,QAAQ,CAAC,SAAS,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC/C"}
|
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":"
|
|
1
|
+
{"version":3,"file":"page.d.ts","sourceRoot":"","sources":["../../src/board/page.ts"],"names":[],"mappings":"AAGA,kFAAkF;AAClF,eAAO,MAAM,SAAS,QAkXd,CAAC"}
|
package/dist/board/page.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { IN_PROGRESS_STATE } from "../store/events.js";
|
|
2
|
+
import { STABILITY_NOTICE } from "../version.js";
|
|
2
3
|
/** The self-contained board page: polls the read API and renders runs + stats. */
|
|
3
4
|
export const PAGE_HTML = `<!doctype html>
|
|
4
5
|
<html lang="en">
|
|
@@ -39,6 +40,7 @@ export const PAGE_HTML = `<!doctype html>
|
|
|
39
40
|
.subtable td { padding: .15rem .5rem .15rem 0; border-bottom: none; }
|
|
40
41
|
.detail-cell ul { margin: .25rem 0 0; padding-left: 1.2rem; }
|
|
41
42
|
.toggle { font-size: .8rem; font-weight: normal; margin-left: .75rem; }
|
|
43
|
+
footer.notice { margin-top: 1.5rem; opacity: .6; font-size: .85em; }
|
|
42
44
|
</style>
|
|
43
45
|
</head>
|
|
44
46
|
<body>
|
|
@@ -367,6 +369,7 @@ async function refresh() {
|
|
|
367
369
|
refresh();
|
|
368
370
|
setInterval(refresh, 5000);
|
|
369
371
|
</script>
|
|
372
|
+
<footer class="notice">${STABILITY_NOTICE}</footer>
|
|
370
373
|
</body>
|
|
371
374
|
</html>`;
|
|
372
375
|
//# sourceMappingURL=page.js.map
|
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;
|
|
1
|
+
{"version":3,"file":"page.js","sourceRoot":"","sources":["../../src/board/page.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAEjD,kFAAkF;AAClF,MAAM,CAAC,MAAM,SAAS,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;sBAqFH,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;yBA2R9B,gBAAgB;;QAEjC,CAAC"}
|
package/dist/cli/commands.d.ts
CHANGED
|
@@ -66,12 +66,35 @@ interface WatchFlags {
|
|
|
66
66
|
intervalMs: number;
|
|
67
67
|
intervalLabel: string;
|
|
68
68
|
maxTicks?: number;
|
|
69
|
+
/** Present (true) only when --self-update-restart was given. */
|
|
70
|
+
selfUpdateRestart?: boolean;
|
|
69
71
|
}
|
|
70
72
|
/**
|
|
71
|
-
* Parse `ghostrail watch` options: `--interval`/`-i <duration>` (default `60s`)
|
|
72
|
-
*
|
|
73
|
+
* Parse `ghostrail watch` options: `--interval`/`-i <duration>` (default `60s`),
|
|
74
|
+
* an optional `--max-ticks <n>`, and `--self-update-restart`. Returns undefined
|
|
75
|
+
* for a malformed interval.
|
|
73
76
|
*/
|
|
74
77
|
export declare function parseWatchFlags(argv: readonly string[]): WatchFlags | undefined;
|
|
78
|
+
/** Injectables so self-update-restart can be tested without npm or a real process. */
|
|
79
|
+
export interface SelfUpdateRestartDeps {
|
|
80
|
+
currentVersion?: string;
|
|
81
|
+
/** The version the registry publishes as `latest`, or undefined if unreachable. */
|
|
82
|
+
latestVersion?: () => Promise<string | undefined>;
|
|
83
|
+
selfUpdate?: (argv: readonly string[], streams: CommandStreams) => Promise<number>;
|
|
84
|
+
/** Relaunches with the same `watch` argv `watch` was originally given. */
|
|
85
|
+
restart?: (watchArgv: readonly string[]) => void;
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* `--self-update-restart`'s whole behavior: called between ticks (never
|
|
89
|
+
* mid-tick, since `watchLoop` awaits `tick()` to completion first). Checks
|
|
90
|
+
* whether a newer ghostrail is published; if not, this is a no-op — refusing
|
|
91
|
+
* to start an update *is* the "pause ticks" the feature asks for, since the
|
|
92
|
+
* caller simply lets the loop continue. If a newer version exists, updates the
|
|
93
|
+
* same way `ghostrail self-update` does and, only on success, relaunches a
|
|
94
|
+
* detached process with the exact argv `watch` was given. A failed update is
|
|
95
|
+
* reported and left running on the current version rather than restarted.
|
|
96
|
+
*/
|
|
97
|
+
export declare function maybeSelfUpdateAndRestart(watchArgv: readonly string[], streams: CommandStreams, deps?: SelfUpdateRestartDeps): Promise<boolean>;
|
|
75
98
|
export declare function cmdWatch(argv: readonly string[], streams: CommandStreams, env?: CommandEnv, cwd?: string): Promise<number>;
|
|
76
99
|
/** `ghostrail triage`: decompose large issues in the triage queue into sub-issues. */
|
|
77
100
|
export declare function cmdTriage(argv: readonly string[], streams: CommandStreams, env?: CommandEnv, cwd?: string): Promise<number>;
|
|
@@ -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;AAatD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAO3D,OAAO,EACL,KAAK,UAAU,EAKhB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,KAAK,YAAY,EAOlB,MAAM,qBAAqB,CAAC;AAmD7B,OAAO,EAAE,KAAK,QAAQ,EAAW,MAAM,mBAAmB,CAAC;AAE3D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AA4B/C,OAAO,EAGL,KAAK,cAAc,EAOpB,MAAM,qBAAqB,CAAC;AAU7B,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,8BAA8B,CAAC;AAE1D,OAAO,EAAE,KAAK,KAAK,EAAqC,MAAM,aAAa,CAAC;AAG5E,MAAM,WAAW,cAAc;IAC7B,GAAG,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5B,GAAG,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CAC7B;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,EAAE,QAAQ,EAAE,YAAY,GAAG,YAAY,CAc/F;AAED,UAAU,UAAU;IAClB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;CACnC;AAwJD,UAAU,SAAS;IACjB,MAAM,EAAE,eAAe,CAAC;IACxB,IAAI,EAAE,QAAQ,CAAC;IACf,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,4EAA4E;IAC5E,QAAQ,EAAE,MAAM,CAAC;IACjB;;;;OAIG;IACH,GAAG,EAAE,YAAY,CAAC;IAClB;;;;OAIG;IACH,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;;GAIG;AACH,KAAK,aAAa,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,MAAM,EAAE,KAAK,MAAM,CAAC;AAE9E;;;;;;;;;GASG;AACH,wBAAsB,WAAW,CAC/B,KAAK,EAAE,YAAY,EACnB,OAAO,EAAE,cAAc,EACvB,GAAG,EAAE,UAAU,EACf,SAAS,GAAE,aAA+D,GACzE,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC,CA6ChC;AAED,iDAAiD;AACjD,wBAAsB,MAAM,CAC1B,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,OAAO,EAAE,cAAc,EACvB,GAAG,GAAE,UAAwB,EAC7B,GAAG,SAAgB,GAClB,OAAO,CAAC,MAAM,CAAC,CAQjB;AAED,UAAU,UAAU;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../../src/cli/commands.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/commands.js
CHANGED
|
@@ -42,7 +42,7 @@ import { DASHBOARD_UNIT, renderDashboardUnit, servicePath, stopTimeoutSeconds, s
|
|
|
42
42
|
import { applySkillPlan, describePlan, pathCtx, planSkillInstall, uninstallSkill, } from "../skill/install.js";
|
|
43
43
|
import { FileStore } from "../store/file-store.js";
|
|
44
44
|
import { triageTick } from "../triage/engine.js";
|
|
45
|
-
import { VERSION } from "../version.js";
|
|
45
|
+
import { STABILITY_NOTICE, VERSION } from "../version.js";
|
|
46
46
|
import { askOnTerminal, parseInstallOffers } from "./prompt.js";
|
|
47
47
|
import { describeStalledUpdate } from "./update-diagnosis.js";
|
|
48
48
|
/**
|
|
@@ -253,12 +253,14 @@ export async function cmdRun(argv, streams, env = process.env, cwd = process.cwd
|
|
|
253
253
|
return result.results.some((r) => r.state === "failed") ? 1 : 0;
|
|
254
254
|
}
|
|
255
255
|
/**
|
|
256
|
-
* Parse `ghostrail watch` options: `--interval`/`-i <duration>` (default `60s`)
|
|
257
|
-
*
|
|
256
|
+
* Parse `ghostrail watch` options: `--interval`/`-i <duration>` (default `60s`),
|
|
257
|
+
* an optional `--max-ticks <n>`, and `--self-update-restart`. Returns undefined
|
|
258
|
+
* for a malformed interval.
|
|
258
259
|
*/
|
|
259
260
|
export function parseWatchFlags(argv) {
|
|
260
261
|
let intervalLabel = "60s";
|
|
261
262
|
let maxTicks;
|
|
263
|
+
let selfUpdateRestart = false;
|
|
262
264
|
for (let i = 0; i < argv.length; i++) {
|
|
263
265
|
const arg = argv[i];
|
|
264
266
|
const next = argv[i + 1];
|
|
@@ -272,13 +274,51 @@ export function parseWatchFlags(argv) {
|
|
|
272
274
|
maxTicks = n;
|
|
273
275
|
i++;
|
|
274
276
|
}
|
|
277
|
+
else if (arg === "--self-update-restart") {
|
|
278
|
+
selfUpdateRestart = true;
|
|
279
|
+
}
|
|
275
280
|
}
|
|
276
281
|
const intervalMs = parseDuration(intervalLabel);
|
|
277
282
|
if (intervalMs === null)
|
|
278
283
|
return undefined;
|
|
279
|
-
return
|
|
280
|
-
|
|
281
|
-
|
|
284
|
+
return {
|
|
285
|
+
intervalMs,
|
|
286
|
+
intervalLabel,
|
|
287
|
+
...(maxTicks === undefined ? {} : { maxTicks }),
|
|
288
|
+
...(selfUpdateRestart ? { selfUpdateRestart: true } : {}),
|
|
289
|
+
};
|
|
290
|
+
}
|
|
291
|
+
/** Detached so the relaunch survives this process exiting right after. */
|
|
292
|
+
function defaultRestart(watchArgv) {
|
|
293
|
+
spawn("ghostrail", ["watch", ...watchArgv], { stdio: "inherit", detached: true }).unref();
|
|
294
|
+
}
|
|
295
|
+
/**
|
|
296
|
+
* `--self-update-restart`'s whole behavior: called between ticks (never
|
|
297
|
+
* mid-tick, since `watchLoop` awaits `tick()` to completion first). Checks
|
|
298
|
+
* whether a newer ghostrail is published; if not, this is a no-op — refusing
|
|
299
|
+
* to start an update *is* the "pause ticks" the feature asks for, since the
|
|
300
|
+
* caller simply lets the loop continue. If a newer version exists, updates the
|
|
301
|
+
* same way `ghostrail self-update` does and, only on success, relaunches a
|
|
302
|
+
* detached process with the exact argv `watch` was given. A failed update is
|
|
303
|
+
* reported and left running on the current version rather than restarted.
|
|
304
|
+
*/
|
|
305
|
+
export async function maybeSelfUpdateAndRestart(watchArgv, streams, deps = {}) {
|
|
306
|
+
const current = deps.currentVersion ?? VERSION;
|
|
307
|
+
const latestVersion = deps.latestVersion ?? registryLatestVersion;
|
|
308
|
+
const selfUpdate = deps.selfUpdate ?? cmdSelfUpdate;
|
|
309
|
+
const restart = deps.restart ?? defaultRestart;
|
|
310
|
+
const latest = await latestVersion();
|
|
311
|
+
if (latest === undefined || latest === current)
|
|
312
|
+
return false;
|
|
313
|
+
streams.err(`self-update-restart: ${current} -> ${latest} available; updating\n`);
|
|
314
|
+
const code = await selfUpdate([], streams);
|
|
315
|
+
if (code !== 0) {
|
|
316
|
+
streams.err("self-update-restart: update failed; staying on the running version\n");
|
|
317
|
+
return false;
|
|
318
|
+
}
|
|
319
|
+
streams.err(`self-update-restart: restarting: ghostrail watch ${watchArgv.join(" ")}\n`);
|
|
320
|
+
restart(watchArgv);
|
|
321
|
+
return true;
|
|
282
322
|
}
|
|
283
323
|
/**
|
|
284
324
|
* The passes this config can run under `watch`: the fix queue always, plus
|
|
@@ -357,6 +397,7 @@ export async function cmdWatch(argv, streams, env = process.env, cwd = process.c
|
|
|
357
397
|
}
|
|
358
398
|
const passes = schedulablePasses(setup, streams);
|
|
359
399
|
streams.err(`watching every ${watch.intervalLabel}${describeSchedule(passes)}; press Ctrl-C to stop\n`);
|
|
400
|
+
let restarting = false;
|
|
360
401
|
try {
|
|
361
402
|
const controlDir = setup.stateDir;
|
|
362
403
|
// In memory, for the life of this process: a restart re-runs every pass
|
|
@@ -415,9 +456,17 @@ export async function cmdWatch(argv, streams, env = process.env, cwd = process.c
|
|
|
415
456
|
catch {
|
|
416
457
|
// the countdown is a convenience, not something the loop depends on
|
|
417
458
|
}
|
|
459
|
+
// Checked once per tick, never mid-tick: `watchLoop` awaits this whole
|
|
460
|
+
// callback before starting the next one, so this only ever runs
|
|
461
|
+
// between ticks (specs/self-update-restart.spec.md).
|
|
462
|
+
if (watch.selfUpdateRestart === true) {
|
|
463
|
+
restarting = await maybeSelfUpdateAndRestart(argv, streams);
|
|
464
|
+
if (restarting)
|
|
465
|
+
controller.abort();
|
|
466
|
+
}
|
|
418
467
|
},
|
|
419
468
|
});
|
|
420
|
-
streams.err(`stopped after ${ticks} tick(s)\n`);
|
|
469
|
+
streams.err(restarting ? "stopped for self-update-restart\n" : `stopped after ${ticks} tick(s)\n`);
|
|
421
470
|
return 0;
|
|
422
471
|
}
|
|
423
472
|
finally {
|
|
@@ -1854,6 +1903,7 @@ export async function cmdInit(argv, streams, cwd = process.cwd(), env = process.
|
|
|
1854
1903
|
}
|
|
1855
1904
|
await registerGhostrail(repo, env, streams, { repoint, forceRegister: register });
|
|
1856
1905
|
streams.out(await initNextStepsHint(env, cwd));
|
|
1906
|
+
streams.out(`${STABILITY_NOTICE}\n`);
|
|
1857
1907
|
return 0;
|
|
1858
1908
|
}
|
|
1859
1909
|
/**
|
|
@@ -1991,6 +2041,7 @@ async function npmInstallGlobalResult(version) {
|
|
|
1991
2041
|
* install` gives you exactly x.y.z.
|
|
1992
2042
|
*/
|
|
1993
2043
|
export async function cmdInstall(argv, streams, env = process.env, cwd = process.cwd(), deps = {}) {
|
|
2044
|
+
streams.out(`${STABILITY_NOTICE}\n`);
|
|
1994
2045
|
streams.out(`installing ghostrail@${VERSION} globally...\n`);
|
|
1995
2046
|
const code = await npmInstallGlobal(VERSION);
|
|
1996
2047
|
if (code !== 0) {
|