ghostrail 0.22.0 → 0.23.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 +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
package/dist/loop/engine.js
CHANGED
|
@@ -5,6 +5,7 @@ import { branchName } from "./branch.js";
|
|
|
5
5
|
import { createRunBudget } from "./budget.js";
|
|
6
6
|
import { writeCommentThread } from "./comments.js";
|
|
7
7
|
import { mapWithConcurrency } from "./concurrency.js";
|
|
8
|
+
import { cycleTag, isDue, issueText, lastScheduledAt, nextDueAt, parseRecurrence, recurrenceComment, } from "./recurrence.js";
|
|
8
9
|
import { decideRetry, giveUpReason, resolveRetryGuardrails } from "./retry.js";
|
|
9
10
|
const nullLogger = { info: () => { }, warn: () => { } };
|
|
10
11
|
/**
|
|
@@ -50,6 +51,48 @@ async function recordResult(sink, runId, result) {
|
|
|
50
51
|
...(result.failureKind === undefined ? {} : { failureKind: result.failureKind }),
|
|
51
52
|
});
|
|
52
53
|
}
|
|
54
|
+
/**
|
|
55
|
+
* Drop eligible items that carry a recurrence tag (`#weekly`, `#every-3d`, ...)
|
|
56
|
+
* but already ran within their interval. An item with no recurrence tag always
|
|
57
|
+
* passes through unchanged, and pays no `listComments` call: only tagged items
|
|
58
|
+
* need one to find their last "next eligible" marker.
|
|
59
|
+
*
|
|
60
|
+
* The marker that made a recurring item due also names its cycle, so the same
|
|
61
|
+
* read yields the branch tag that keeps this cycle off the previous cycle's
|
|
62
|
+
* branch (TJ-1689).
|
|
63
|
+
*/
|
|
64
|
+
async function filterDue(source, items) {
|
|
65
|
+
const now = new Date();
|
|
66
|
+
const checked = await Promise.all(items.map(async (item) => {
|
|
67
|
+
const recurrence = parseRecurrence(issueText(item));
|
|
68
|
+
if (recurrence === undefined)
|
|
69
|
+
return { item, due: true, scheduledAt: undefined };
|
|
70
|
+
const scheduledAt = lastScheduledAt(await source.listComments(item));
|
|
71
|
+
return { item, due: isDue(scheduledAt, now), scheduledAt };
|
|
72
|
+
}));
|
|
73
|
+
const cycleTags = new Map();
|
|
74
|
+
for (const row of checked) {
|
|
75
|
+
if (row.due && row.scheduledAt !== undefined) {
|
|
76
|
+
cycleTags.set(row.item.id, cycleTag(row.scheduledAt));
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
return { items: checked.filter((row) => row.due).map((row) => row.item), cycleTags };
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* After a recurring item's `done` outcome, release it back to the eligible
|
|
83
|
+
* pool (the same `reset` call a failure uses) with a comment recording when it
|
|
84
|
+
* is next due, so `filterDue` skips it until that interval has elapsed. A
|
|
85
|
+
* non-recurring item is untouched: it stays claimed, exactly as before.
|
|
86
|
+
*/
|
|
87
|
+
async function rescheduleIfRecurring(deps, item, logger) {
|
|
88
|
+
const recurrence = parseRecurrence(issueText(item));
|
|
89
|
+
if (recurrence === undefined)
|
|
90
|
+
return;
|
|
91
|
+
const scheduledAt = nextDueAt(recurrence, new Date());
|
|
92
|
+
await deps.source.comment(item, recurrenceComment(recurrence, scheduledAt));
|
|
93
|
+
await deps.source.reset(item);
|
|
94
|
+
logger.info(`${item.id}: recurring (${recurrence.label}), next eligible ${scheduledAt.toISOString()}`);
|
|
95
|
+
}
|
|
53
96
|
/** Every run row keyed by its item id, for the retry decision at discovery time. */
|
|
54
97
|
function groupByItem(rows) {
|
|
55
98
|
const byItem = new Map();
|
|
@@ -96,17 +139,21 @@ export async function runTick(deps, config) {
|
|
|
96
139
|
let results = [];
|
|
97
140
|
try {
|
|
98
141
|
const eligible = await deps.source.listEligible();
|
|
142
|
+
const { items: due, cycleTags } = await filterDue(deps.source, eligible);
|
|
143
|
+
if (due.length < eligible.length) {
|
|
144
|
+
logger.info(`${eligible.length - due.length} recurring item(s) not yet due, skipping`);
|
|
145
|
+
}
|
|
99
146
|
// Backoff and give-up are read from the run history the store already
|
|
100
147
|
// keeps, at discovery time, so a failing item costs nothing extra to
|
|
101
148
|
// track. No history reader means no memory of past failures: every
|
|
102
|
-
//
|
|
149
|
+
// due item is claimed, exactly as before this guardrail existed.
|
|
103
150
|
const retryGuardrails = resolveRetryGuardrails(config.guardrails);
|
|
104
151
|
const rowsByItem = deps.history === undefined ? undefined : groupByItem(await deps.history.listRuns());
|
|
105
152
|
const now = Date.now();
|
|
106
153
|
const ready = [];
|
|
107
154
|
const givingUp = [];
|
|
108
155
|
let waiting = 0;
|
|
109
|
-
for (const item of
|
|
156
|
+
for (const item of due) {
|
|
110
157
|
if (rowsByItem === undefined) {
|
|
111
158
|
ready.push(item);
|
|
112
159
|
continue;
|
|
@@ -140,7 +187,7 @@ export async function runTick(deps, config) {
|
|
|
140
187
|
// bounded map cannot reject and every item is accounted for, in order.
|
|
141
188
|
results = [
|
|
142
189
|
...givenUp,
|
|
143
|
-
...(await mapWithConcurrency(items, concurrency, (item) => runItem(deps, config, item, logger, budget))),
|
|
190
|
+
...(await mapWithConcurrency(items, concurrency, (item) => runItem(deps, config, item, logger, budget, cycleTags.get(item.id)))),
|
|
144
191
|
];
|
|
145
192
|
if (budget.unmeasured() > 0) {
|
|
146
193
|
logger.warn(`${budget.unmeasured()} run(s) reported no cost and were charged the per-item budget; the $${budget.spentUsd().toFixed(2)} total is an upper bound, not a measurement`);
|
|
@@ -199,7 +246,9 @@ async function giveUp(deps, item, decision, retryGuardrails, logger) {
|
|
|
199
246
|
return { itemId: item.id, state: "failed", error: message, failureKind: "transient" };
|
|
200
247
|
}
|
|
201
248
|
}
|
|
202
|
-
async function runItem(deps, config, item, logger, budget
|
|
249
|
+
async function runItem(deps, config, item, logger, budget,
|
|
250
|
+
/** The branch tag for a recurring item's current cycle; absent for every other item. */
|
|
251
|
+
cycle) {
|
|
203
252
|
let workspace;
|
|
204
253
|
const runId = randomUUID();
|
|
205
254
|
try {
|
|
@@ -229,7 +278,7 @@ async function runItem(deps, config, item, logger, budget) {
|
|
|
229
278
|
workspace = await deps.backend.provision({
|
|
230
279
|
repoPath: source ?? deps.repoPath,
|
|
231
280
|
baseBranch: config.factory.baseBranch,
|
|
232
|
-
branch: branchName(config.output.branchPrefix, item.id, item.title),
|
|
281
|
+
branch: branchName(config.output.branchPrefix, item.id, item.title, cycle),
|
|
233
282
|
...(source === undefined ? {} : { clone: true }),
|
|
234
283
|
...(config.backend.image === undefined ? {} : { image: config.backend.image }),
|
|
235
284
|
...(deps.claudeProfileDir === undefined ? {} : { profileDir: deps.claudeProfileDir }),
|
|
@@ -261,6 +310,9 @@ async function runItem(deps, config, item, logger, budget) {
|
|
|
261
310
|
...(outcome.costUsd === undefined ? {} : { costUsd: outcome.costUsd }),
|
|
262
311
|
});
|
|
263
312
|
const result = await route(deps, config, item, workspace, outcome, logger);
|
|
313
|
+
if (result.state === "done") {
|
|
314
|
+
await rescheduleIfRecurring(deps, item, logger);
|
|
315
|
+
}
|
|
264
316
|
await recordResult(deps.events, runId, result);
|
|
265
317
|
return result;
|
|
266
318
|
}
|
package/dist/loop/engine.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"engine.js","sourceRoot":"","sources":["../../src/loop/engine.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"engine.js","sourceRoot":"","sources":["../../src/loop/engine.ts"],"names":[],"mappings":"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"}
|
package/dist/loop/ports.d.ts
CHANGED
|
@@ -43,7 +43,10 @@ export interface Source {
|
|
|
43
43
|
listComments(item: WorkItem): Promise<Comment[]>;
|
|
44
44
|
/** Hand the item back to a human (reassign) when a decision is needed. */
|
|
45
45
|
reassignToHuman(item: WorkItem): Promise<void>;
|
|
46
|
-
/**
|
|
46
|
+
/**
|
|
47
|
+
* Return the item to the eligible pool (e.g. after a failure, or after a
|
|
48
|
+
* recurring item's `done` outcome so it can run again on its schedule).
|
|
49
|
+
*/
|
|
47
50
|
reset(item: WorkItem): Promise<void>;
|
|
48
51
|
}
|
|
49
52
|
/** A sub-issue to create under a parent during triage. */
|
package/dist/loop/ports.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ports.d.ts","sourceRoot":"","sources":["../../src/loop/ports.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEnE;;;;;;GAMG;AAEH,2CAA2C;AAC3C,MAAM,WAAW,QAAQ;IACvB,yCAAyC;IACzC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;;;;OAKG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,mEAAmE;AACnE,MAAM,WAAW,OAAO;IACtB,0BAA0B;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,0BAA0B;IAC1B,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,4DAA4D;AAC5D,MAAM,WAAW,MAAM;IACrB,kEAAkE;IAClE,YAAY,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;IACpC;;;OAGG;IACH,KAAK,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACxC,OAAO,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACrD,2EAA2E;IAC3E,YAAY,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;IACjD,0EAA0E;IAC1E,eAAe,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/C
|
|
1
|
+
{"version":3,"file":"ports.d.ts","sourceRoot":"","sources":["../../src/loop/ports.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import type { Comment, WorkItem } from "./ports.js";
|
|
2
|
+
/** A parsed recurrence: how often a recurring item should be re-run. */
|
|
3
|
+
export interface Recurrence {
|
|
4
|
+
/** Human-readable label for logs and tracker comments, e.g. "weekly" or "every-3d". */
|
|
5
|
+
label: string;
|
|
6
|
+
intervalMs: number;
|
|
7
|
+
}
|
|
8
|
+
/** The title and description text a recurrence tag is looked for in. */
|
|
9
|
+
export declare function issueText(item: Pick<WorkItem, "title" | "description">): string;
|
|
10
|
+
/**
|
|
11
|
+
* Find a recurrence hashtag anywhere in `text` and parse it into an interval.
|
|
12
|
+
* Returns undefined when no recurrence tag is present, or an `every-<n><unit>`
|
|
13
|
+
* tag whose amount is not a positive integer.
|
|
14
|
+
*/
|
|
15
|
+
export declare function parseRecurrence(text: string): Recurrence | undefined;
|
|
16
|
+
/**
|
|
17
|
+
* The branch tag for the cycle a recurring item is currently in, derived from
|
|
18
|
+
* the "next eligible" timestamp that made it due, as `YYYYMMDD-HHMM`.
|
|
19
|
+
*
|
|
20
|
+
* A new timestamp is only recorded on a `done` outcome, so this is stable for
|
|
21
|
+
* a whole cycle: every attempt at that cycle, retries included, builds the
|
|
22
|
+
* same branch and keeps the publisher's force-push recovery. The next cycle
|
|
23
|
+
* carries a later timestamp and so gets a branch of its own, which is what
|
|
24
|
+
* stops it colliding with the PR the previous cycle left open (TJ-1689).
|
|
25
|
+
*
|
|
26
|
+
* Minute resolution is enough to keep two cycles apart: the shortest interval
|
|
27
|
+
* a tag can ask for is an hour.
|
|
28
|
+
*/
|
|
29
|
+
export declare function cycleTag(scheduledAt: Date): string;
|
|
30
|
+
/** The timestamp a recurring item next becomes eligible, `interval` after `from`. */
|
|
31
|
+
export declare function nextDueAt(recurrence: Recurrence, from: Date): Date;
|
|
32
|
+
/** Whether an item scheduled for `scheduledAt` is due to run as of `now`. Undefined means "never scheduled", i.e. due. */
|
|
33
|
+
export declare function isDue(scheduledAt: Date | undefined, now: Date): boolean;
|
|
34
|
+
/** The hidden marker embedding a recurring item's next-eligible timestamp in a comment. */
|
|
35
|
+
export declare function recurrenceMarker(scheduledAt: Date): string;
|
|
36
|
+
/** The tracker comment body recording that a recurring item ran and when it is next due. */
|
|
37
|
+
export declare function recurrenceComment(recurrence: Recurrence, scheduledAt: Date): string;
|
|
38
|
+
/**
|
|
39
|
+
* The most recent "next eligible" timestamp recorded across `comments`, or
|
|
40
|
+
* undefined if none carry the marker (or none parse as a valid date).
|
|
41
|
+
*/
|
|
42
|
+
export declare function lastScheduledAt(comments: readonly Comment[]): Date | undefined;
|
|
43
|
+
//# sourceMappingURL=recurrence.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"recurrence.d.ts","sourceRoot":"","sources":["../../src/loop/recurrence.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEpD,wEAAwE;AACxE,MAAM,WAAW,UAAU;IACzB,uFAAuF;IACvF,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;CACpB;AAkBD,wEAAwE;AACxE,wBAAgB,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,OAAO,GAAG,aAAa,CAAC,GAAG,MAAM,CAE/E;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS,CAapE;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,QAAQ,CAAC,WAAW,EAAE,IAAI,GAAG,MAAM,CAGlD;AAED,qFAAqF;AACrF,wBAAgB,SAAS,CAAC,UAAU,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,GAAG,IAAI,CAElE;AAED,0HAA0H;AAC1H,wBAAgB,KAAK,CAAC,WAAW,EAAE,IAAI,GAAG,SAAS,EAAE,GAAG,EAAE,IAAI,GAAG,OAAO,CAEvE;AAID,2FAA2F;AAC3F,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,IAAI,GAAG,MAAM,CAE1D;AAED,4FAA4F;AAC5F,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,UAAU,EAAE,WAAW,EAAE,IAAI,GAAG,MAAM,CAEnF;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,SAAS,OAAO,EAAE,GAAG,IAAI,GAAG,SAAS,CAY9E"}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
const CANNED_INTERVALS_MS = {
|
|
2
|
+
daily: 24 * 3_600_000,
|
|
3
|
+
weekly: 7 * 24 * 3_600_000,
|
|
4
|
+
monthly: 30 * 24 * 3_600_000,
|
|
5
|
+
};
|
|
6
|
+
const UNIT_MS = {
|
|
7
|
+
h: 3_600_000,
|
|
8
|
+
d: 24 * 3_600_000,
|
|
9
|
+
w: 7 * 24 * 3_600_000,
|
|
10
|
+
};
|
|
11
|
+
// #daily, #weekly, #monthly, or #every-<n><h|d|w> (e.g. #every-3d), case
|
|
12
|
+
// insensitive. The trailing \b keeps "#dailymeeting" from matching "#daily".
|
|
13
|
+
const RECURRENCE_TAG = /#(daily|weekly|monthly|every-(\d+)(h|d|w))\b/i;
|
|
14
|
+
/** The title and description text a recurrence tag is looked for in. */
|
|
15
|
+
export function issueText(item) {
|
|
16
|
+
return `${item.title}\n${item.description ?? ""}`;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Find a recurrence hashtag anywhere in `text` and parse it into an interval.
|
|
20
|
+
* Returns undefined when no recurrence tag is present, or an `every-<n><unit>`
|
|
21
|
+
* tag whose amount is not a positive integer.
|
|
22
|
+
*/
|
|
23
|
+
export function parseRecurrence(text) {
|
|
24
|
+
const match = RECURRENCE_TAG.exec(text);
|
|
25
|
+
if (match === null)
|
|
26
|
+
return undefined;
|
|
27
|
+
const canned = match[1]?.toLowerCase();
|
|
28
|
+
if (canned !== undefined && canned in CANNED_INTERVALS_MS) {
|
|
29
|
+
return { label: canned, intervalMs: CANNED_INTERVALS_MS[canned] };
|
|
30
|
+
}
|
|
31
|
+
const amount = Number(match[2]);
|
|
32
|
+
const unit = match[3]?.toLowerCase();
|
|
33
|
+
if (!Number.isSafeInteger(amount) || amount <= 0 || unit === undefined)
|
|
34
|
+
return undefined;
|
|
35
|
+
return { label: `every-${amount}${unit}`, intervalMs: amount * UNIT_MS[unit] };
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* The branch tag for the cycle a recurring item is currently in, derived from
|
|
39
|
+
* the "next eligible" timestamp that made it due, as `YYYYMMDD-HHMM`.
|
|
40
|
+
*
|
|
41
|
+
* A new timestamp is only recorded on a `done` outcome, so this is stable for
|
|
42
|
+
* a whole cycle: every attempt at that cycle, retries included, builds the
|
|
43
|
+
* same branch and keeps the publisher's force-push recovery. The next cycle
|
|
44
|
+
* carries a later timestamp and so gets a branch of its own, which is what
|
|
45
|
+
* stops it colliding with the PR the previous cycle left open (TJ-1689).
|
|
46
|
+
*
|
|
47
|
+
* Minute resolution is enough to keep two cycles apart: the shortest interval
|
|
48
|
+
* a tag can ask for is an hour.
|
|
49
|
+
*/
|
|
50
|
+
export function cycleTag(scheduledAt) {
|
|
51
|
+
const iso = scheduledAt.toISOString();
|
|
52
|
+
return `${iso.slice(0, 10).replace(/-/g, "")}-${iso.slice(11, 16).replace(":", "")}`;
|
|
53
|
+
}
|
|
54
|
+
/** The timestamp a recurring item next becomes eligible, `interval` after `from`. */
|
|
55
|
+
export function nextDueAt(recurrence, from) {
|
|
56
|
+
return new Date(from.getTime() + recurrence.intervalMs);
|
|
57
|
+
}
|
|
58
|
+
/** Whether an item scheduled for `scheduledAt` is due to run as of `now`. Undefined means "never scheduled", i.e. due. */
|
|
59
|
+
export function isDue(scheduledAt, now) {
|
|
60
|
+
return scheduledAt === undefined || now.getTime() >= scheduledAt.getTime();
|
|
61
|
+
}
|
|
62
|
+
const RECUR_MARKER_RE = /<!-- ghostrail:recur next=([^ >]+) -->/;
|
|
63
|
+
/** The hidden marker embedding a recurring item's next-eligible timestamp in a comment. */
|
|
64
|
+
export function recurrenceMarker(scheduledAt) {
|
|
65
|
+
return `<!-- ghostrail:recur next=${scheduledAt.toISOString()} -->`;
|
|
66
|
+
}
|
|
67
|
+
/** The tracker comment body recording that a recurring item ran and when it is next due. */
|
|
68
|
+
export function recurrenceComment(recurrence, scheduledAt) {
|
|
69
|
+
return `Recurring item (${recurrence.label}): done for now, next eligible around ${scheduledAt.toISOString()}.\n\n${recurrenceMarker(scheduledAt)}`;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* The most recent "next eligible" timestamp recorded across `comments`, or
|
|
73
|
+
* undefined if none carry the marker (or none parse as a valid date).
|
|
74
|
+
*/
|
|
75
|
+
export function lastScheduledAt(comments) {
|
|
76
|
+
let latest;
|
|
77
|
+
for (const comment of comments) {
|
|
78
|
+
const match = RECUR_MARKER_RE.exec(comment.body);
|
|
79
|
+
if (match === null)
|
|
80
|
+
continue;
|
|
81
|
+
const iso = match[1];
|
|
82
|
+
if (iso === undefined)
|
|
83
|
+
continue;
|
|
84
|
+
const parsed = new Date(iso);
|
|
85
|
+
if (Number.isNaN(parsed.getTime()))
|
|
86
|
+
continue;
|
|
87
|
+
if (latest === undefined || parsed.getTime() > latest.getTime())
|
|
88
|
+
latest = parsed;
|
|
89
|
+
}
|
|
90
|
+
return latest;
|
|
91
|
+
}
|
|
92
|
+
//# sourceMappingURL=recurrence.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"recurrence.js","sourceRoot":"","sources":["../../src/loop/recurrence.ts"],"names":[],"mappings":"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"}
|
package/dist/version.d.ts
CHANGED
|
@@ -1,3 +1,9 @@
|
|
|
1
1
|
/** The resolved ghostrail version string. */
|
|
2
2
|
export declare const VERSION: string;
|
|
3
|
+
/**
|
|
4
|
+
* The one sentence that says this is not finished software. Defined once and
|
|
5
|
+
* reused everywhere it is said (`install`, `init`, the board, the dashboard),
|
|
6
|
+
* so the wording never drifts between surfaces.
|
|
7
|
+
*/
|
|
8
|
+
export declare const STABILITY_NOTICE: string;
|
|
3
9
|
//# sourceMappingURL=version.d.ts.map
|
package/dist/version.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAmBA,6CAA6C;AAC7C,eAAO,MAAM,OAAO,EAAE,MAAsB,CAAC"}
|
|
1
|
+
{"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAmBA,6CAA6C;AAC7C,eAAO,MAAM,OAAO,EAAE,MAAsB,CAAC;AAE7C;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,EAAE,MACiE,CAAC"}
|
package/dist/version.js
CHANGED
|
@@ -18,4 +18,10 @@ function readVersion() {
|
|
|
18
18
|
}
|
|
19
19
|
/** The resolved ghostrail version string. */
|
|
20
20
|
export const VERSION = readVersion();
|
|
21
|
+
/**
|
|
22
|
+
* The one sentence that says this is not finished software. Defined once and
|
|
23
|
+
* reused everywhere it is said (`install`, `init`, the board, the dashboard),
|
|
24
|
+
* so the wording never drifts between surfaces.
|
|
25
|
+
*/
|
|
26
|
+
export const STABILITY_NOTICE = "ghostrail is pre-alpha: it is under active testing and can break, including breaking itself.";
|
|
21
27
|
//# sourceMappingURL=version.js.map
|
package/dist/version.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"version.js","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC;;;;GAIG;AACH,SAAS,WAAW;IAClB,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,iBAAiB,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC3D,MAAM,GAAG,GAAG,YAAY,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC;QACxD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAA0B,CAAC;QACrD,OAAO,OAAO,GAAG,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC;IACjE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,OAAO,CAAC;IACjB,CAAC;AACH,CAAC;AAED,6CAA6C;AAC7C,MAAM,CAAC,MAAM,OAAO,GAAW,WAAW,EAAE,CAAC"}
|
|
1
|
+
{"version":3,"file":"version.js","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC;;;;GAIG;AACH,SAAS,WAAW;IAClB,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,iBAAiB,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC3D,MAAM,GAAG,GAAG,YAAY,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC;QACxD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAA0B,CAAC;QACrD,OAAO,OAAO,GAAG,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC;IACjE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,OAAO,CAAC;IACjB,CAAC;AACH,CAAC;AAED,6CAA6C;AAC7C,MAAM,CAAC,MAAM,OAAO,GAAW,WAAW,EAAE,CAAC;AAE7C;;;;GAIG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAC3B,8FAA8F,CAAC"}
|