@reneturcios/greenlight 0.9.3 → 0.10.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/README.md +26 -0
- package/dist/automate.js +11 -17
- package/dist/automate.js.map +1 -1
- package/dist/babysit.d.ts +10 -1
- package/dist/babysit.js +37 -6
- package/dist/babysit.js.map +1 -1
- package/dist/claims-registry.d.ts +21 -0
- package/dist/claims-registry.js +6 -1
- package/dist/claims-registry.js.map +1 -1
- package/dist/cli.js +61 -4
- package/dist/cli.js.map +1 -1
- package/dist/digest.d.ts +0 -1
- package/dist/digest.js +2 -2
- package/dist/digest.js.map +1 -1
- package/dist/guard.d.ts +0 -1
- package/dist/guard.js +2 -2
- package/dist/guard.js.map +1 -1
- package/dist/help.js +31 -1
- package/dist/help.js.map +1 -1
- package/dist/index.js +36 -2
- package/dist/index.js.map +1 -1
- package/dist/portfolio.d.ts +77 -0
- package/dist/portfolio.js +108 -0
- package/dist/portfolio.js.map +1 -0
- package/dist/posting-ledger.d.ts +51 -1
- package/dist/posting-ledger.js +145 -8
- package/dist/posting-ledger.js.map +1 -1
- package/dist/scout.d.ts +5 -0
- package/dist/scout.js +9 -1
- package/dist/scout.js.map +1 -1
- package/dist/sync.d.ts +88 -0
- package/dist/sync.js +320 -0
- package/dist/sync.js.map +1 -0
- package/package.json +1 -1
- package/server.json +2 -2
package/dist/posting-ledger.d.ts
CHANGED
|
@@ -4,13 +4,32 @@ export type PostingOutcome = "confirmed" | "blocked" | "unconfirmed" | "supersed
|
|
|
4
4
|
export interface PostingLedgerEntry {
|
|
5
5
|
/** ISO timestamp of the attempt. */
|
|
6
6
|
ts: string;
|
|
7
|
+
/**
|
|
8
|
+
* Unique entry id (v0.10.0). Two posts in the same millisecond share a
|
|
9
|
+
* ts, so finishPost matches on this, never on ts alone. Older entries
|
|
10
|
+
* may lack it; matching falls back to ts + targetUrl for those.
|
|
11
|
+
*/
|
|
12
|
+
id?: string;
|
|
7
13
|
kind: PostingKind;
|
|
8
14
|
/** Canonical target, e.g. https://github.com/owner/repo/issues/123. */
|
|
9
15
|
targetUrl: string;
|
|
10
16
|
outcome: PostingOutcome;
|
|
11
17
|
/** Short human note, e.g. "comment #6238115199" or "403 Blocked". */
|
|
12
18
|
note?: string;
|
|
19
|
+
/**
|
|
20
|
+
* Which agent recorded the entry (v0.10.0). GREENLIGHT_AGENT_ID when set,
|
|
21
|
+
* otherwise "<hostname>:<pid>" captured at write time. Older entries may
|
|
22
|
+
* lack it; pacing counts every entry regardless.
|
|
23
|
+
*/
|
|
24
|
+
agent?: string;
|
|
13
25
|
}
|
|
26
|
+
/**
|
|
27
|
+
* The identity stamped on each ledger entry. Operators running several
|
|
28
|
+
* agents (or machines) in parallel set GREENLIGHT_AGENT_ID per agent
|
|
29
|
+
* (e.g. "worker-a", "cron-scan") so the ledger shows who posted what.
|
|
30
|
+
* Unset, the tool falls back to "<hostname>:<pid>".
|
|
31
|
+
*/
|
|
32
|
+
export declare function agentId(env?: NodeJS.ProcessEnv): string;
|
|
14
33
|
export interface PostingLedger {
|
|
15
34
|
v: 1;
|
|
16
35
|
entries: PostingLedgerEntry[];
|
|
@@ -19,9 +38,40 @@ export declare function defaultLedgerPath(): string;
|
|
|
19
38
|
export declare function emptyLedger(): PostingLedger;
|
|
20
39
|
/** Read the ledger; a missing or corrupt file means an empty ledger. */
|
|
21
40
|
export declare function readLedger(path?: string): PostingLedger;
|
|
22
|
-
|
|
41
|
+
/**
|
|
42
|
+
* Exclusive lock around read-modify-write, so concurrent agents cannot
|
|
43
|
+
* both read an empty-looking ledger and race past the daily cap or the
|
|
44
|
+
* claim cadence. Implemented with an exclusive-create lock file and a
|
|
45
|
+
* staleness rule (a lock older than 30s is a crashed holder and is
|
|
46
|
+
* stolen), so a dead process can never wedge the ledger forever.
|
|
47
|
+
*/
|
|
48
|
+
export declare function withLedgerLock<T>(path: string, fn: () => T): T;
|
|
49
|
+
export declare function appendLedgerEntry(entry: Omit<PostingLedgerEntry, "ts" | "agent"> & {
|
|
23
50
|
ts?: string;
|
|
51
|
+
agent?: string;
|
|
24
52
|
}, path?: string): PostingLedgerEntry;
|
|
53
|
+
/**
|
|
54
|
+
* Result of reserving a post under the lock: the pacing check and the
|
|
55
|
+
* ledger write happen in one critical section, so two agents cannot both
|
|
56
|
+
* observe an allowed window and both post. The reservation is recorded
|
|
57
|
+
* immediately with outcome "unconfirmed"; finishPost updates it once the
|
|
58
|
+
* post resolves.
|
|
59
|
+
*/
|
|
60
|
+
export interface ReserveResult {
|
|
61
|
+
allowed: boolean;
|
|
62
|
+
reason: string | null;
|
|
63
|
+
/** The reserved entry (matched by ts + targetUrl in finishPost), or null. */
|
|
64
|
+
entry: PostingLedgerEntry | null;
|
|
65
|
+
decision: PacingDecision;
|
|
66
|
+
}
|
|
67
|
+
export declare function reservePost(path: string, entry: Omit<PostingLedgerEntry, "ts" | "agent" | "outcome"> & {
|
|
68
|
+
outcome?: PostingOutcome;
|
|
69
|
+
agent?: string;
|
|
70
|
+
}, config: PacingConfig, nowMs: number, opts?: {
|
|
71
|
+
force?: boolean;
|
|
72
|
+
}): ReserveResult;
|
|
73
|
+
/** Update a reserved entry's outcome under the lock (matched by ts + targetUrl). */
|
|
74
|
+
export declare function finishPost(path: string, entry: PostingLedgerEntry, outcome: PostingOutcome, note?: string): void;
|
|
25
75
|
/** Comment-class writes (the surface GitHub's anti-spam flag watches). */
|
|
26
76
|
export declare const COMMENT_KINDS: PostingKind[];
|
|
27
77
|
export interface PacingConfig {
|
package/dist/posting-ledger.js
CHANGED
|
@@ -17,9 +17,22 @@
|
|
|
17
17
|
* All time-dependent decisions take an explicit `nowMs`, so the tests
|
|
18
18
|
* drive them with an injected clock.
|
|
19
19
|
*/
|
|
20
|
-
import { homedir } from "node:os";
|
|
20
|
+
import { homedir, hostname } from "node:os";
|
|
21
21
|
import { join } from "node:path";
|
|
22
|
-
import {
|
|
22
|
+
import { randomUUID } from "node:crypto";
|
|
23
|
+
import { mkdirSync, readFileSync, writeFileSync, openSync, closeSync, statSync, unlinkSync, } from "node:fs";
|
|
24
|
+
/**
|
|
25
|
+
* The identity stamped on each ledger entry. Operators running several
|
|
26
|
+
* agents (or machines) in parallel set GREENLIGHT_AGENT_ID per agent
|
|
27
|
+
* (e.g. "worker-a", "cron-scan") so the ledger shows who posted what.
|
|
28
|
+
* Unset, the tool falls back to "<hostname>:<pid>".
|
|
29
|
+
*/
|
|
30
|
+
export function agentId(env = process.env) {
|
|
31
|
+
const fromEnv = (env.GREENLIGHT_AGENT_ID ?? "").trim();
|
|
32
|
+
if (fromEnv.length > 0)
|
|
33
|
+
return fromEnv;
|
|
34
|
+
return `${hostname()}:${process.pid}`;
|
|
35
|
+
}
|
|
23
36
|
export function defaultLedgerPath() {
|
|
24
37
|
return join(homedir(), ".greenlight", "posting-ledger.json");
|
|
25
38
|
}
|
|
@@ -42,19 +55,143 @@ export function readLedger(path = defaultLedgerPath()) {
|
|
|
42
55
|
}
|
|
43
56
|
return emptyLedger();
|
|
44
57
|
}
|
|
58
|
+
/** Lock-file path for the atomic ledger operations below. */
|
|
59
|
+
function ledgerLockPath(path) {
|
|
60
|
+
return `${path}.lock`;
|
|
61
|
+
}
|
|
62
|
+
const LOCK_STALE_MS = 30_000;
|
|
63
|
+
const LOCK_POLL_MS = 25;
|
|
64
|
+
const LOCK_TIMEOUT_MS = 10_000;
|
|
65
|
+
function sleepMs(ms) {
|
|
66
|
+
Atomics.wait(new Int32Array(new SharedArrayBuffer(4)), 0, 0, ms);
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Exclusive lock around read-modify-write, so concurrent agents cannot
|
|
70
|
+
* both read an empty-looking ledger and race past the daily cap or the
|
|
71
|
+
* claim cadence. Implemented with an exclusive-create lock file and a
|
|
72
|
+
* staleness rule (a lock older than 30s is a crashed holder and is
|
|
73
|
+
* stolen), so a dead process can never wedge the ledger forever.
|
|
74
|
+
*/
|
|
75
|
+
export function withLedgerLock(path, fn) {
|
|
76
|
+
const lp = ledgerLockPath(path);
|
|
77
|
+
const deadline = Date.now() + LOCK_TIMEOUT_MS;
|
|
78
|
+
for (;;) {
|
|
79
|
+
try {
|
|
80
|
+
const fd = openSync(lp, "wx");
|
|
81
|
+
try {
|
|
82
|
+
writeFileSync(fd, `${process.pid}`);
|
|
83
|
+
}
|
|
84
|
+
catch {
|
|
85
|
+
// Best effort: the lock's existence is the signal, not its content.
|
|
86
|
+
}
|
|
87
|
+
closeSync(fd);
|
|
88
|
+
break;
|
|
89
|
+
}
|
|
90
|
+
catch (err) {
|
|
91
|
+
if (err?.code !== "EEXIST")
|
|
92
|
+
throw err;
|
|
93
|
+
try {
|
|
94
|
+
const st = statSync(lp);
|
|
95
|
+
if (Date.now() - st.mtimeMs > LOCK_STALE_MS) {
|
|
96
|
+
try {
|
|
97
|
+
unlinkSync(lp);
|
|
98
|
+
}
|
|
99
|
+
catch {
|
|
100
|
+
// Lost the race to steal it; loop back and re-check.
|
|
101
|
+
}
|
|
102
|
+
continue;
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
catch {
|
|
106
|
+
// Lock vanished between checks; loop back and re-create it.
|
|
107
|
+
continue;
|
|
108
|
+
}
|
|
109
|
+
if (Date.now() > deadline) {
|
|
110
|
+
throw new Error(`timed out acquiring posting-ledger lock for ${path}`);
|
|
111
|
+
}
|
|
112
|
+
sleepMs(LOCK_POLL_MS);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
try {
|
|
116
|
+
return fn();
|
|
117
|
+
}
|
|
118
|
+
finally {
|
|
119
|
+
try {
|
|
120
|
+
unlinkSync(lp);
|
|
121
|
+
}
|
|
122
|
+
catch {
|
|
123
|
+
// Another process already stole and released it; nothing to do.
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
function writeLedger(path, ledger) {
|
|
128
|
+
mkdirSync(join(path, ".."), { recursive: true });
|
|
129
|
+
writeFileSync(path, JSON.stringify(ledger, null, 2));
|
|
130
|
+
}
|
|
45
131
|
export function appendLedgerEntry(entry, path = defaultLedgerPath()) {
|
|
46
|
-
const full = {
|
|
47
|
-
|
|
48
|
-
|
|
132
|
+
const full = {
|
|
133
|
+
ts: new Date().toISOString(),
|
|
134
|
+
agent: agentId(),
|
|
135
|
+
...entry,
|
|
136
|
+
};
|
|
49
137
|
try {
|
|
50
|
-
|
|
51
|
-
|
|
138
|
+
withLedgerLock(path, () => {
|
|
139
|
+
const ledger = readLedger(path);
|
|
140
|
+
ledger.entries.push(full);
|
|
141
|
+
writeLedger(path, ledger);
|
|
142
|
+
});
|
|
52
143
|
}
|
|
53
144
|
catch {
|
|
54
|
-
// The ledger is advisory: a write failure must never break posting.
|
|
145
|
+
// The ledger is advisory: a lock or write failure must never break posting.
|
|
146
|
+
// Fall through and still return the entry we meant to record.
|
|
55
147
|
}
|
|
56
148
|
return full;
|
|
57
149
|
}
|
|
150
|
+
export function reservePost(path, entry, config, nowMs, opts = {}) {
|
|
151
|
+
return withLedgerLock(path, () => {
|
|
152
|
+
const ledger = readLedger(path);
|
|
153
|
+
const decision = checkPacing(ledger, nowMs, config);
|
|
154
|
+
if (!decision.allowed && !opts.force) {
|
|
155
|
+
return { allowed: false, reason: decision.reason, entry: null, decision };
|
|
156
|
+
}
|
|
157
|
+
const full = {
|
|
158
|
+
ts: new Date(nowMs).toISOString(),
|
|
159
|
+
agent: agentId(),
|
|
160
|
+
outcome: "unconfirmed",
|
|
161
|
+
...entry,
|
|
162
|
+
// Unique per reservation: two posts in the same millisecond must
|
|
163
|
+
// not share an identity (finishPost matches on this). The caller's
|
|
164
|
+
// partial never overrides it.
|
|
165
|
+
id: randomUUID(),
|
|
166
|
+
};
|
|
167
|
+
ledger.entries.push(full);
|
|
168
|
+
writeLedger(path, ledger);
|
|
169
|
+
return { allowed: true, reason: null, entry: full, decision };
|
|
170
|
+
});
|
|
171
|
+
}
|
|
172
|
+
/** Update a reserved entry's outcome under the lock (matched by ts + targetUrl). */
|
|
173
|
+
export function finishPost(path, entry, outcome, note) {
|
|
174
|
+
try {
|
|
175
|
+
withLedgerLock(path, () => {
|
|
176
|
+
const ledger = readLedger(path);
|
|
177
|
+
// Match on the reservation id: ts + targetUrl is not unique when
|
|
178
|
+
// two posts land in the same millisecond. Entries written before
|
|
179
|
+
// ids existed fall back to ts + targetUrl.
|
|
180
|
+
const stored = entry.id
|
|
181
|
+
? ledger.entries.find((e) => e.id === entry.id)
|
|
182
|
+
: ledger.entries.find((e) => e.ts === entry.ts && e.targetUrl === entry.targetUrl);
|
|
183
|
+
if (stored) {
|
|
184
|
+
stored.outcome = outcome;
|
|
185
|
+
if (note !== undefined)
|
|
186
|
+
stored.note = note;
|
|
187
|
+
writeLedger(path, ledger);
|
|
188
|
+
}
|
|
189
|
+
});
|
|
190
|
+
}
|
|
191
|
+
catch {
|
|
192
|
+
// Advisory, like every ledger write.
|
|
193
|
+
}
|
|
194
|
+
}
|
|
58
195
|
/** Comment-class writes (the surface GitHub's anti-spam flag watches). */
|
|
59
196
|
export const COMMENT_KINDS = ["claim", "release", "heartbeat", "comment"];
|
|
60
197
|
export function pacingConfigFromEnv(env = process.env) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"posting-ledger.js","sourceRoot":"","sources":["../src/posting-ledger.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"posting-ledger.js","sourceRoot":"","sources":["../src/posting-ledger.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC5C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAEL,SAAS,EACT,YAAY,EACZ,aAAa,EACb,QAAQ,EACR,SAAS,EACT,QAAQ,EACR,UAAU,GACX,MAAM,SAAS,CAAC;AA8BjB;;;;;GAKG;AACH,MAAM,UAAU,OAAO,CAAC,MAAyB,OAAO,CAAC,GAAG;IAC1D,MAAM,OAAO,GAAG,CAAC,GAAG,CAAC,mBAAmB,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IACvD,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,OAAO,CAAC;IACvC,OAAO,GAAG,QAAQ,EAAE,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;AACxC,CAAC;AAOD,MAAM,UAAU,iBAAiB;IAC/B,OAAO,IAAI,CAAC,OAAO,EAAE,EAAE,aAAa,EAAE,qBAAqB,CAAC,CAAC;AAC/D,CAAC;AAED,MAAM,UAAU,WAAW;IACzB,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;AAC/B,CAAC;AAED,wEAAwE;AACxE,MAAM,UAAU,UAAU,CAAC,OAAe,iBAAiB,EAAE;IAC3D,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAA2B,CAAC;QAC7E,IAAI,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;YACtC,OAAO;gBACL,CAAC,EAAE,CAAC;gBACJ,OAAO,EAAE,GAAG,CAAC,OAAO,CAAC,MAAM,CACzB,CAAC,CAAC,EAA2B,EAAE,CAC7B,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,EAAE,KAAK,QAAQ,IAAI,OAAO,CAAC,CAAC,SAAS,KAAK,QAAQ,CACrE;aACF,CAAC;QACJ,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,mCAAmC;IACrC,CAAC;IACD,OAAO,WAAW,EAAE,CAAC;AACvB,CAAC;AAED,6DAA6D;AAC7D,SAAS,cAAc,CAAC,IAAY;IAClC,OAAO,GAAG,IAAI,OAAO,CAAC;AACxB,CAAC;AAED,MAAM,aAAa,GAAG,MAAM,CAAC;AAC7B,MAAM,YAAY,GAAG,EAAE,CAAC;AACxB,MAAM,eAAe,GAAG,MAAM,CAAC;AAE/B,SAAS,OAAO,CAAC,EAAU;IACzB,OAAO,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,IAAI,iBAAiB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;AACnE,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,cAAc,CAAI,IAAY,EAAE,EAAW;IACzD,MAAM,EAAE,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;IAChC,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,eAAe,CAAC;IAC9C,SAAS,CAAC;QACR,IAAI,CAAC;YACH,MAAM,EAAE,GAAG,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;YAC9B,IAAI,CAAC;gBACH,aAAa,CAAC,EAAE,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;YACtC,CAAC;YAAC,MAAM,CAAC;gBACP,oEAAoE;YACtE,CAAC;YACD,SAAS,CAAC,EAAE,CAAC,CAAC;YACd,MAAM;QACR,CAAC;QAAC,OAAO,GAAY,EAAE,CAAC;YACtB,IAAK,GAA6B,EAAE,IAAI,KAAK,QAAQ;gBAAE,MAAM,GAAG,CAAC;YACjE,IAAI,CAAC;gBACH,MAAM,EAAE,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;gBACxB,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,OAAO,GAAG,aAAa,EAAE,CAAC;oBAC5C,IAAI,CAAC;wBACH,UAAU,CAAC,EAAE,CAAC,CAAC;oBACjB,CAAC;oBAAC,MAAM,CAAC;wBACP,qDAAqD;oBACvD,CAAC;oBACD,SAAS;gBACX,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,4DAA4D;gBAC5D,SAAS;YACX,CAAC;YACD,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,EAAE,CAAC;gBAC1B,MAAM,IAAI,KAAK,CAAC,+CAA+C,IAAI,EAAE,CAAC,CAAC;YACzE,CAAC;YACD,OAAO,CAAC,YAAY,CAAC,CAAC;QACxB,CAAC;IACH,CAAC;IACD,IAAI,CAAC;QACH,OAAO,EAAE,EAAE,CAAC;IACd,CAAC;YAAS,CAAC;QACT,IAAI,CAAC;YACH,UAAU,CAAC,EAAE,CAAC,CAAC;QACjB,CAAC;QAAC,MAAM,CAAC;YACP,gEAAgE;QAClE,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,WAAW,CAAC,IAAY,EAAE,MAAqB;IACtD,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACjD,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AACvD,CAAC;AAED,MAAM,UAAU,iBAAiB,CAC/B,KAAiF,EACjF,OAAe,iBAAiB,EAAE;IAElC,MAAM,IAAI,GAAuB;QAC/B,EAAE,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QAC5B,KAAK,EAAE,OAAO,EAAE;QAChB,GAAG,KAAK;KACT,CAAC;IACF,IAAI,CAAC;QACH,cAAc,CAAC,IAAI,EAAE,GAAG,EAAE;YACxB,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;YAChC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC1B,WAAW,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAC5B,CAAC,CAAC,CAAC;IACL,CAAC;IAAC,MAAM,CAAC;QACP,4EAA4E;QAC5E,8DAA8D;IAChE,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAiBD,MAAM,UAAU,WAAW,CACzB,IAAY,EACZ,KAGC,EACD,MAAoB,EACpB,KAAa,EACb,OAA4B,EAAE;IAE9B,OAAO,cAAc,CAAC,IAAI,EAAE,GAAG,EAAE;QAC/B,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;QAChC,MAAM,QAAQ,GAAG,WAAW,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;QACpD,IAAI,CAAC,QAAQ,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;YACrC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;QAC5E,CAAC;QACD,MAAM,IAAI,GAAuB;YAC/B,EAAE,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE;YACjC,KAAK,EAAE,OAAO,EAAE;YAChB,OAAO,EAAE,aAAa;YACtB,GAAG,KAAK;YACR,iEAAiE;YACjE,mEAAmE;YACnE,8BAA8B;YAC9B,EAAE,EAAE,UAAU,EAAE;SACjB,CAAC;QACF,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1B,WAAW,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAC1B,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;IAChE,CAAC,CAAC,CAAC;AACL,CAAC;AAED,oFAAoF;AACpF,MAAM,UAAU,UAAU,CACxB,IAAY,EACZ,KAAyB,EACzB,OAAuB,EACvB,IAAa;IAEb,IAAI,CAAC;QACH,cAAc,CAAC,IAAI,EAAE,GAAG,EAAE;YACxB,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;YAChC,iEAAiE;YACjE,iEAAiE;YACjE,2CAA2C;YAC3C,MAAM,MAAM,GAAG,KAAK,CAAC,EAAE;gBACrB,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,KAAK,CAAC,EAAE,CAAC;gBAC/C,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CACjB,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,KAAK,CAAC,EAAE,IAAI,CAAC,CAAC,SAAS,KAAK,KAAK,CAAC,SAAS,CAC5D,CAAC;YACN,IAAI,MAAM,EAAE,CAAC;gBACX,MAAM,CAAC,OAAO,GAAG,OAAO,CAAC;gBACzB,IAAI,IAAI,KAAK,SAAS;oBAAE,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC;gBAC3C,WAAW,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YAC5B,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAAC,MAAM,CAAC;QACP,qCAAqC;IACvC,CAAC;AACH,CAAC;AAED,0EAA0E;AAC1E,MAAM,CAAC,MAAM,aAAa,GAAkB,CAAC,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC;AAWzF,MAAM,UAAU,mBAAmB,CAAC,MAAyB,OAAO,CAAC,GAAG;IACtE,MAAM,GAAG,GAAG,CAAC,GAAuB,EAAE,QAAgB,EAAU,EAAE;QAChE,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;QACtB,OAAO,GAAG,KAAK,SAAS,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;IAC1E,CAAC,CAAC;IACF,MAAM,YAAY,GAAG,GAAG,CAAC,GAAG,CAAC,+BAA+B,EAAE,EAAE,CAAC,CAAC;IAClE,OAAO;QACL,YAAY;QACZ,OAAO,EAAE,YAAY,GAAG,IAAI;QAC5B,QAAQ,EAAE,GAAG,CAAC,GAAG,CAAC,0BAA0B,EAAE,EAAE,CAAC;KAClD,CAAC;AACJ,CAAC;AAiBD,MAAM,MAAM,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AAEnC,MAAM,UAAU,WAAW,CACzB,MAAqB,EACrB,KAAa,EACb,MAAoB;IAEpB,MAAM,MAAM,GAAG,KAAK,GAAG,MAAM,CAAC;IAC9B,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CACtC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,MAAM,CACxD,CAAC,MAAM,CAAC;IACT,MAAM,aAAa,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CACzC,CAAC,CAAC,EAAE,EAAE,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,MAAM,CACpE,CAAC,MAAM,CAAC;IACT,MAAM,gBAAgB,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,aAAa,CAAC,CAAC,MAAM,CAAC;IAE1F,MAAM,WAAW,GAAG,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC;SACpC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;SAC7C,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAE1D,IAAI,aAAa,GAAkB,IAAI,CAAC;IACxC,IAAI,MAAM,GAAkB,IAAI,CAAC;IAEjC,IAAI,MAAM,CAAC,QAAQ,GAAG,CAAC,IAAI,UAAU,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;QACzD,MAAM;YACJ,4BAA4B,UAAU,qCAAqC,MAAM,CAAC,QAAQ,KAAK;gBAC/F,qGAAqG,CAAC;IAC1G,CAAC;SAAM,IAAI,WAAW,EAAE,CAAC;QACvB,MAAM,MAAM,GAAG,CAAC,MAAM,CAAC,YAAY,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;QAC7D,MAAM,OAAO,GAAG,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;QACnD,IAAI,OAAO,GAAG,MAAM,EAAE,CAAC;YACrB,aAAa,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC;YAC5E,MAAM;gBACJ,gBAAgB,WAAW,CAAC,IAAI,aAAa,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,SAAS;oBAChF,oBAAoB,aAAa,uDAAuD,CAAC;QAC7F,CAAC;IACH,CAAC;IAED,OAAO;QACL,OAAO,EAAE,MAAM,KAAK,IAAI;QACxB,UAAU;QACV,aAAa;QACb,gBAAgB;QAChB,aAAa;QACb,MAAM;QACN,MAAM;KACP,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,eAAe,CAC7B,MAAqB,EACrB,SAAiB;IAEjB,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAChC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,SAAS,IAAI,CAAC,CAAC,OAAO,KAAK,aAAa,CAChE,CAAC;IACF,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACnC,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACrE,CAAC;AAID;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,IAAY,EACZ,KAAyB,EACzB,OAAwD;IAExD,IAAI,MAAe,CAAC;IACpB,IAAI,CAAC;QACH,MAAM,GAAG,MAAM,OAAO,CAAC,KAAK,CAAC,CAAC;IAChC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;IAChC,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAChC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,KAAK,CAAC,EAAE,IAAI,CAAC,CAAC,SAAS,KAAK,KAAK,CAAC,SAAS,CAC5D,CAAC;IACF,IAAI,MAAM,EAAE,CAAC;QACX,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,YAAY,CAAC;QACrD,IAAI,CAAC;YACH,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QACvD,CAAC;QAAC,MAAM,CAAC;YACP,gBAAgB;QAClB,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,YAAY,CAAC;AAC7C,CAAC;AAED,oEAAoE;AACpE,MAAM,UAAU,eAAe,CAAC,GAAY;IAC1C,MAAM,GAAG,GAAG,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;IAC7E,sEAAsE;IACtE,uEAAuE;IACvE,IAAI,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC;QAAE,OAAO,SAAS,CAAC;IACpE,OAAO,aAAa,CAAC;AACvB,CAAC;AAED,uDAAuD;AACvD,MAAM,UAAU,aAAa,CAAC,QAAwB;IACpD,MAAM,KAAK,GAAG;QACZ,WAAW,QAAQ,CAAC,UAAU,qCAAqC,QAAQ,CAAC,MAAM,CAAC,QAAQ,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,MAAM,QAAQ,CAAC,aAAa,sBAAsB;QAC3L,QAAQ,CAAC,aAAa;YACpB,CAAC,CAAC,gCAAgC,QAAQ,CAAC,aAAa,EAAE;YAC1D,CAAC,CAAC,gCAAgC;KACrC,CAAC;IACF,IAAI,QAAQ,CAAC,gBAAgB,GAAG,CAAC,EAAE,CAAC;QAClC,KAAK,CAAC,IAAI,CACR,KAAK,QAAQ,CAAC,gBAAgB,oBAAoB,QAAQ,CAAC,gBAAgB,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,0BAA0B,CACvH,CAAC;IACJ,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
|
package/dist/scout.d.ts
CHANGED
|
@@ -111,4 +111,9 @@ export interface ScoutResult {
|
|
|
111
111
|
export declare const SCOUT_DEFAULT_BUDGET = 300;
|
|
112
112
|
export declare const SCOUT_DEFAULT_SCAN_LIMIT = 10;
|
|
113
113
|
export declare const SCOUT_DEFAULT_KEEP_PER_REPO = 5;
|
|
114
|
+
/**
|
|
115
|
+
* The scout report footer. Derived from the package version so a version
|
|
116
|
+
* bump can never leave a stale "Scout vX" behind (v0.10.0 regression fix).
|
|
117
|
+
*/
|
|
118
|
+
export declare function scoutFooter(callsUsed: number, budget: number): string;
|
|
114
119
|
export declare function scoutCampaign(opts: ScoutOptions): Promise<ScoutResult>;
|
package/dist/scout.js
CHANGED
|
@@ -30,6 +30,7 @@ import { fetchFrictionSummary } from "./friction.js";
|
|
|
30
30
|
import { fetchMergeVelocity } from "./merge-velocity.js";
|
|
31
31
|
import { existsSync, readFileSync, writeFileSync, mkdirSync } from "node:fs";
|
|
32
32
|
import { dirname } from "node:path";
|
|
33
|
+
import { defaultPackageVersion } from "./doctor.js";
|
|
33
34
|
export function loadCampaignFile(path) {
|
|
34
35
|
try {
|
|
35
36
|
const parsed = JSON.parse(readFileSync(path, "utf8"));
|
|
@@ -118,6 +119,13 @@ function parseRepoRef(ref) {
|
|
|
118
119
|
export const SCOUT_DEFAULT_BUDGET = 300;
|
|
119
120
|
export const SCOUT_DEFAULT_SCAN_LIMIT = 10;
|
|
120
121
|
export const SCOUT_DEFAULT_KEEP_PER_REPO = 5;
|
|
122
|
+
/**
|
|
123
|
+
* The scout report footer. Derived from the package version so a version
|
|
124
|
+
* bump can never leave a stale "Scout vX" behind (v0.10.0 regression fix).
|
|
125
|
+
*/
|
|
126
|
+
export function scoutFooter(callsUsed, budget) {
|
|
127
|
+
return `_Scout v${defaultPackageVersion()}; budget ${callsUsed} calls used of ${budget}._`;
|
|
128
|
+
}
|
|
121
129
|
export async function scoutCampaign(opts) {
|
|
122
130
|
const deps = opts.deps ?? {};
|
|
123
131
|
const now = opts.now ?? new Date();
|
|
@@ -230,7 +238,7 @@ export async function scoutCampaign(opts) {
|
|
|
230
238
|
if (candidates.length === 0)
|
|
231
239
|
lines.push("_None._");
|
|
232
240
|
lines.push("");
|
|
233
|
-
lines.push(
|
|
241
|
+
lines.push(scoutFooter(budgetUsed(), opts.budget));
|
|
234
242
|
return {
|
|
235
243
|
candidates,
|
|
236
244
|
appended,
|
package/dist/scout.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scout.js","sourceRoot":"","sources":["../src/scout.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"scout.js","sourceRoot":"","sources":["../src/scout.ts"],"names":[],"mappings":"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"}
|
package/dist/sync.d.ts
ADDED
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import { type ClaimsRegistryFile } from "./claims-registry.js";
|
|
2
|
+
export interface CensusPr {
|
|
3
|
+
owner: string;
|
|
4
|
+
repo: string;
|
|
5
|
+
number: number;
|
|
6
|
+
url: string;
|
|
7
|
+
title: string;
|
|
8
|
+
state: "open" | "closed";
|
|
9
|
+
merged: boolean;
|
|
10
|
+
author: string;
|
|
11
|
+
createdAt: string;
|
|
12
|
+
updatedAt: string;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* The authoritative PR census for one author. Paginated; the search API
|
|
16
|
+
* caps at 1000 results, so maxPages bounds the walk (default 10).
|
|
17
|
+
*/
|
|
18
|
+
export declare function fetchAuthorCensus(author: string, perPage?: number, maxPages?: number): Promise<CensusPr[]>;
|
|
19
|
+
/**
|
|
20
|
+
* Upsert the census into the registry's known-PRs section. New PRs are
|
|
21
|
+
* added; known ones get fresh state/title/lastSeen. Returns add/update
|
|
22
|
+
* counts so callers can report what moved.
|
|
23
|
+
*/
|
|
24
|
+
export declare function upsertKnownPrs(path: string, prs: CensusPr[], nowIso: string): {
|
|
25
|
+
added: number;
|
|
26
|
+
updated: number;
|
|
27
|
+
};
|
|
28
|
+
/** One row of an optional tracker file (repo, issue, pr_url, status columns). */
|
|
29
|
+
export interface TrackerRow {
|
|
30
|
+
repo: string;
|
|
31
|
+
issue: string;
|
|
32
|
+
prUrl: string;
|
|
33
|
+
status: string;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Parse a tracker file by extension: CSV with a header row, or a JSON
|
|
37
|
+
* array of objects. Columns/keys: repo, issue, pr_url, status (tolerant
|
|
38
|
+
* aliases accepted). Throws on an unreadable or unparseable file.
|
|
39
|
+
*/
|
|
40
|
+
export declare function parseTracker(text: string, format: "csv" | "json"): TrackerRow[];
|
|
41
|
+
export declare function loadTrackerFile(path: string): TrackerRow[];
|
|
42
|
+
export interface DriftItem {
|
|
43
|
+
kind: "unknown-pr" | "state-mismatch" | "stale-claim";
|
|
44
|
+
repo: string;
|
|
45
|
+
number: number;
|
|
46
|
+
url: string;
|
|
47
|
+
detail: string;
|
|
48
|
+
}
|
|
49
|
+
export interface SyncDrift {
|
|
50
|
+
unknownPrs: DriftItem[];
|
|
51
|
+
stateMismatches: DriftItem[];
|
|
52
|
+
staleClaims: DriftItem[];
|
|
53
|
+
counts: {
|
|
54
|
+
census: number;
|
|
55
|
+
open: number;
|
|
56
|
+
merged: number;
|
|
57
|
+
closedUnmerged: number;
|
|
58
|
+
registryClaims: number;
|
|
59
|
+
knownPrs: number;
|
|
60
|
+
trackerRows: number | null;
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Pure drift computation: census (API truth) vs the local registry and
|
|
65
|
+
* an optional tracker. A claim counts as linked when its prUrl appears in
|
|
66
|
+
* the census; a registry PR counts as known when the census confirms it.
|
|
67
|
+
*/
|
|
68
|
+
export declare function computeDrift(census: CensusPr[], registry: ClaimsRegistryFile, tracker: TrackerRow[] | null, staleDays: number, nowMs: number): SyncDrift;
|
|
69
|
+
/** Human drift report: deltas first, counts after. */
|
|
70
|
+
export declare function formatSyncHuman(drift: SyncDrift, author: string): string;
|
|
71
|
+
export declare function syncJson(drift: SyncDrift, author: string): Record<string, unknown>;
|
|
72
|
+
export interface SyncRunOptions {
|
|
73
|
+
author: string;
|
|
74
|
+
trackerPath?: string;
|
|
75
|
+
staleDays?: number;
|
|
76
|
+
write?: boolean;
|
|
77
|
+
registryPath?: string;
|
|
78
|
+
nowMs?: number;
|
|
79
|
+
}
|
|
80
|
+
/** Full sync run: census, drift, optional tracker diff, optional registry write. */
|
|
81
|
+
export declare function runSync(opts: SyncRunOptions): Promise<{
|
|
82
|
+
drift: SyncDrift;
|
|
83
|
+
wrote: {
|
|
84
|
+
added: number;
|
|
85
|
+
updated: number;
|
|
86
|
+
} | null;
|
|
87
|
+
author: string;
|
|
88
|
+
}>;
|