@generacy-ai/cockpit 0.3.0 → 0.5.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.
@@ -0,0 +1,15 @@
1
+ export interface GhCacheOptions {
2
+ ttlMs?: number;
3
+ now?: () => number;
4
+ logger?: {
5
+ debug?: (msg: string) => void;
6
+ };
7
+ }
8
+ export interface GhResponseCache {
9
+ getOrFetch<T>(key: string, fetcher: () => Promise<T>): Promise<T>;
10
+ invalidate(key: string): void;
11
+ invalidatePrefix(prefix: string): void;
12
+ size(): number;
13
+ }
14
+ export declare function createGhResponseCache(opts?: GhCacheOptions): GhResponseCache;
15
+ //# sourceMappingURL=cache.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../../src/gh/cache.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,cAAc;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAA;KAAE,CAAC;CAC5C;AAED,MAAM,WAAW,eAAe;IAC9B,UAAU,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IAClE,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACvC,IAAI,IAAI,MAAM,CAAC;CAChB;AASD,wBAAgB,qBAAqB,CAAC,IAAI,GAAE,cAAmB,GAAG,eAAe,CAkDhF"}
@@ -0,0 +1,48 @@
1
+ const DEFAULT_TTL_MS = 20_000;
2
+ export function createGhResponseCache(opts = {}) {
3
+ const ttlMs = opts.ttlMs ?? DEFAULT_TTL_MS;
4
+ if (!Number.isFinite(ttlMs) || ttlMs <= 0) {
5
+ throw new Error(`GhResponseCache: ttlMs must be positive, got ${ttlMs}`);
6
+ }
7
+ const now = opts.now ?? Date.now;
8
+ const entries = new Map();
9
+ const inflight = new Map();
10
+ function getOrFetch(key, fetcher) {
11
+ const existing = entries.get(key);
12
+ if (existing != null && existing.expiresAt > now()) {
13
+ return Promise.resolve(existing.value);
14
+ }
15
+ if (existing != null) {
16
+ entries.delete(key);
17
+ }
18
+ const pending = inflight.get(key);
19
+ if (pending != null) {
20
+ return pending;
21
+ }
22
+ const promise = fetcher()
23
+ .then((value) => {
24
+ entries.set(key, { value, expiresAt: now() + ttlMs });
25
+ return value;
26
+ })
27
+ .finally(() => {
28
+ inflight.delete(key);
29
+ });
30
+ inflight.set(key, promise);
31
+ return promise;
32
+ }
33
+ function invalidate(key) {
34
+ entries.delete(key);
35
+ }
36
+ function invalidatePrefix(prefix) {
37
+ for (const key of entries.keys()) {
38
+ if (key.startsWith(prefix)) {
39
+ entries.delete(key);
40
+ }
41
+ }
42
+ }
43
+ function size() {
44
+ return entries.size;
45
+ }
46
+ return { getOrFetch, invalidate, invalidatePrefix, size };
47
+ }
48
+ //# sourceMappingURL=cache.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cache.js","sourceRoot":"","sources":["../../src/gh/cache.ts"],"names":[],"mappings":"AAkBA,MAAM,cAAc,GAAG,MAAM,CAAC;AAE9B,MAAM,UAAU,qBAAqB,CAAC,OAAuB,EAAE;IAC7D,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,cAAc,CAAC;IAC3C,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;QAC1C,MAAM,IAAI,KAAK,CAAC,gDAAgD,KAAK,EAAE,CAAC,CAAC;IAC3E,CAAC;IACD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC;IACjC,MAAM,OAAO,GAAG,IAAI,GAAG,EAAsB,CAAC;IAC9C,MAAM,QAAQ,GAAG,IAAI,GAAG,EAA4B,CAAC;IAErD,SAAS,UAAU,CAAI,GAAW,EAAE,OAAyB;QAC3D,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAClC,IAAI,QAAQ,IAAI,IAAI,IAAI,QAAQ,CAAC,SAAS,GAAG,GAAG,EAAE,EAAE,CAAC;YACnD,OAAO,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAU,CAAC,CAAC;QAC9C,CAAC;QACD,IAAI,QAAQ,IAAI,IAAI,EAAE,CAAC;YACrB,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACtB,CAAC;QACD,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAClC,IAAI,OAAO,IAAI,IAAI,EAAE,CAAC;YACpB,OAAO,OAAqB,CAAC;QAC/B,CAAC;QACD,MAAM,OAAO,GAAG,OAAO,EAAE;aACtB,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE;YACd,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,GAAG,KAAK,EAAE,CAAC,CAAC;YACtD,OAAO,KAAK,CAAC;QACf,CAAC,CAAC;aACD,OAAO,CAAC,GAAG,EAAE;YACZ,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACvB,CAAC,CAAC,CAAC;QACL,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,OAA2B,CAAC,CAAC;QAC/C,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,SAAS,UAAU,CAAC,GAAW;QAC7B,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACtB,CAAC;IAED,SAAS,gBAAgB,CAAC,MAAc;QACtC,KAAK,MAAM,GAAG,IAAI,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;YACjC,IAAI,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC3B,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACtB,CAAC;QACH,CAAC;IACH,CAAC;IAED,SAAS,IAAI;QACX,OAAO,OAAO,CAAC,IAAI,CAAC;IACtB,CAAC;IAED,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,gBAAgB,EAAE,IAAI,EAAE,CAAC;AAC5D,CAAC"}
@@ -2,6 +2,12 @@ export interface CommandRunnerOptions {
2
2
  env?: Record<string, string>;
3
3
  cwd?: string;
4
4
  timeoutMs?: number;
5
+ /**
6
+ * Optional UTF-8 payload piped to the child's stdin. When set the runner
7
+ * uses `spawn` (execFile's callback API does not expose stdin ergonomically);
8
+ * otherwise the child inherits/ignores stdin as before.
9
+ */
10
+ stdin?: string;
5
11
  }
6
12
  export interface CommandResult {
7
13
  stdout: string;
@@ -12,6 +18,7 @@ export type CommandRunner = (cmd: string, args: string[], opts?: CommandRunnerOp
12
18
  /**
13
19
  * Default runner using `node:child_process.execFile` with a 30s timeout.
14
20
  * Does not throw on non-zero exit code — the wrapper inspects `exitCode`.
21
+ * Switches to `spawn` when the caller supplies `stdin`.
15
22
  */
16
23
  export declare const nodeChildProcessRunner: CommandRunner;
17
24
  //# sourceMappingURL=command-runner.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"command-runner.d.ts","sourceRoot":"","sources":["../../src/gh/command-runner.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,oBAAoB;IACnC,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,MAAM,aAAa,GAAG,CAC1B,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,EAAE,EACd,IAAI,CAAC,EAAE,oBAAoB,KACxB,OAAO,CAAC,aAAa,CAAC,CAAC;AAE5B;;;GAGG;AACH,eAAO,MAAM,sBAAsB,EAAE,aA8BpC,CAAC"}
1
+ {"version":3,"file":"command-runner.d.ts","sourceRoot":"","sources":["../../src/gh/command-runner.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,oBAAoB;IACnC,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,MAAM,aAAa,GAAG,CAC1B,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,EAAE,EACd,IAAI,CAAC,EAAE,oBAAoB,KACxB,OAAO,CAAC,aAAa,CAAC,CAAC;AA8C5B;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,EAAE,aAiCpC,CAAC"}
@@ -1,9 +1,51 @@
1
- import { execFile } from 'node:child_process';
1
+ import { execFile, spawn } from 'node:child_process';
2
+ function runWithStdin(cmd, args, stdin, opts) {
3
+ const timeoutMs = opts?.timeoutMs ?? 30_000;
4
+ return new Promise((resolve) => {
5
+ const child = spawn(cmd, args, {
6
+ env: opts?.env != null ? { ...process.env, ...opts.env } : process.env,
7
+ cwd: opts?.cwd,
8
+ stdio: ['pipe', 'pipe', 'pipe'],
9
+ });
10
+ let stdout = '';
11
+ let stderr = '';
12
+ let killed = false;
13
+ const timer = setTimeout(() => {
14
+ killed = true;
15
+ child.kill('SIGTERM');
16
+ }, timeoutMs);
17
+ child.stdout.setEncoding('utf-8');
18
+ child.stderr.setEncoding('utf-8');
19
+ child.stdout.on('data', (chunk) => {
20
+ stdout += chunk;
21
+ });
22
+ child.stderr.on('data', (chunk) => {
23
+ stderr += chunk;
24
+ });
25
+ child.on('error', () => {
26
+ clearTimeout(timer);
27
+ resolve({ stdout, stderr, exitCode: 1 });
28
+ });
29
+ child.on('close', (code) => {
30
+ clearTimeout(timer);
31
+ const exitCode = typeof code === 'number' ? code : killed ? 124 : 1;
32
+ resolve({ stdout, stderr, exitCode });
33
+ });
34
+ child.stdin.on('error', () => {
35
+ // Ignore EPIPE: child may exit before we finish writing.
36
+ });
37
+ child.stdin.end(stdin);
38
+ });
39
+ }
2
40
  /**
3
41
  * Default runner using `node:child_process.execFile` with a 30s timeout.
4
42
  * Does not throw on non-zero exit code — the wrapper inspects `exitCode`.
43
+ * Switches to `spawn` when the caller supplies `stdin`.
5
44
  */
6
45
  export const nodeChildProcessRunner = (cmd, args, opts) => {
46
+ if (opts?.stdin != null) {
47
+ return runWithStdin(cmd, args, opts.stdin, opts);
48
+ }
7
49
  const timeoutMs = opts?.timeoutMs ?? 30_000;
8
50
  return new Promise((resolve) => {
9
51
  execFile(cmd, args, {
@@ -1 +1 @@
1
- {"version":3,"file":"command-runner.js","sourceRoot":"","sources":["../../src/gh/command-runner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAoB9C;;;GAGG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAkB,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE;IACvE,MAAM,SAAS,GAAG,IAAI,EAAE,SAAS,IAAI,MAAM,CAAC;IAC5C,OAAO,IAAI,OAAO,CAAgB,CAAC,OAAO,EAAE,EAAE;QAC5C,QAAQ,CACN,GAAG,EACH,IAAI,EACJ;YACE,GAAG,EAAE,IAAI,EAAE,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG;YACtE,GAAG,EAAE,IAAI,EAAE,GAAG;YACd,OAAO,EAAE,SAAS;YAClB,SAAS,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI;SAC5B,EACD,CAAC,KAAK,EAAE,MAAuB,EAAE,MAAuB,EAAE,EAAE;YAC1D,MAAM,SAAS,GACb,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;YAC9E,MAAM,SAAS,GACb,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;YAC9E,IAAI,QAAQ,GAAG,CAAC,CAAC;YACjB,IAAI,KAAK,EAAE,CAAC;gBACV,MAAM,WAAW,GAAG,KAA2D,CAAC;gBAChF,IAAI,OAAO,WAAW,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;oBACzC,QAAQ,GAAG,WAAW,CAAC,IAAI,CAAC;gBAC9B,CAAC;qBAAM,CAAC;oBACN,QAAQ,GAAG,CAAC,CAAC;gBACf,CAAC;YACH,CAAC;YACD,OAAO,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC9D,CAAC,CACF,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC"}
1
+ {"version":3,"file":"command-runner.js","sourceRoot":"","sources":["../../src/gh/command-runner.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ import type { CommandRunner } from './command-runner.js';
2
+ export interface RateLimitSchedulerOptions {
3
+ baseIntervalMs?: number;
4
+ ceilingMs?: number;
5
+ probeCadenceMs?: number;
6
+ fastProbeCadenceMs?: number;
7
+ lowWatermarkRatio?: number;
8
+ criticalWatermarkRatio?: number;
9
+ resetWatermarkRatio?: number;
10
+ runner?: CommandRunner;
11
+ now?: () => number;
12
+ logger?: {
13
+ warn?: (msg: string) => void;
14
+ info?: (msg: string) => void;
15
+ };
16
+ }
17
+ export interface RateLimitProbeResult {
18
+ remaining: number;
19
+ limit: number;
20
+ resetAt: number;
21
+ }
22
+ export interface RateLimitScheduler {
23
+ getCurrentIntervalMs(): number;
24
+ probeNow(): Promise<RateLimitProbeResult | null>;
25
+ noteRetryAfter(seconds: number): void;
26
+ noteResponseHeaders(headers: Record<string, string>): void;
27
+ start(): void;
28
+ stop(): void;
29
+ }
30
+ export declare function createRateLimitScheduler(opts?: RateLimitSchedulerOptions): RateLimitScheduler;
31
+ //# sourceMappingURL=rate-limit-scheduler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rate-limit-scheduler.d.ts","sourceRoot":"","sources":["../../src/gh/rate-limit-scheduler.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEzD,MAAM,WAAW,yBAAyB;IACxC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;QAAC,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAA;KAAE,CAAC;CACzE;AAED,MAAM,WAAW,oBAAoB;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,kBAAkB;IACjC,oBAAoB,IAAI,MAAM,CAAC;IAC/B,QAAQ,IAAI,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC,CAAC;IACjD,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACtC,mBAAmB,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;IAC3D,KAAK,IAAI,IAAI,CAAC;IACd,IAAI,IAAI,IAAI,CAAC;CACd;AAsBD,wBAAgB,wBAAwB,CACtC,IAAI,GAAE,yBAA8B,GACnC,kBAAkB,CAkNpB"}
@@ -0,0 +1,204 @@
1
+ import { z } from 'zod';
2
+ const DEFAULTS = {
3
+ baseIntervalMs: 30_000,
4
+ ceilingMs: 300_000,
5
+ probeCadenceMs: 300_000,
6
+ fastProbeCadenceMs: 60_000,
7
+ lowWatermarkRatio: 0.20,
8
+ criticalWatermarkRatio: 0.05,
9
+ resetWatermarkRatio: 0.30,
10
+ };
11
+ const RateLimitApiSchema = z.object({
12
+ resources: z.object({
13
+ graphql: z.object({
14
+ remaining: z.number(),
15
+ limit: z.number(),
16
+ reset: z.number(),
17
+ }),
18
+ }),
19
+ });
20
+ export function createRateLimitScheduler(opts = {}) {
21
+ const baseIntervalMs = opts.baseIntervalMs ?? DEFAULTS.baseIntervalMs;
22
+ const ceilingMs = opts.ceilingMs ?? DEFAULTS.ceilingMs;
23
+ const probeCadenceMs = opts.probeCadenceMs ?? DEFAULTS.probeCadenceMs;
24
+ const fastProbeCadenceMs = opts.fastProbeCadenceMs ?? DEFAULTS.fastProbeCadenceMs;
25
+ const lowWatermarkRatio = opts.lowWatermarkRatio ?? DEFAULTS.lowWatermarkRatio;
26
+ const criticalWatermarkRatio = opts.criticalWatermarkRatio ?? DEFAULTS.criticalWatermarkRatio;
27
+ const resetWatermarkRatio = opts.resetWatermarkRatio ?? DEFAULTS.resetWatermarkRatio;
28
+ const runner = opts.runner;
29
+ const now = opts.now ?? Date.now;
30
+ const logger = opts.logger;
31
+ if (!(resetWatermarkRatio > lowWatermarkRatio)) {
32
+ throw new Error(`RateLimitScheduler: resetWatermarkRatio (${resetWatermarkRatio}) must be > lowWatermarkRatio (${lowWatermarkRatio})`);
33
+ }
34
+ if (!(lowWatermarkRatio > criticalWatermarkRatio)) {
35
+ throw new Error(`RateLimitScheduler: lowWatermarkRatio (${lowWatermarkRatio}) must be > criticalWatermarkRatio (${criticalWatermarkRatio})`);
36
+ }
37
+ if (!(criticalWatermarkRatio > 0)) {
38
+ throw new Error(`RateLimitScheduler: criticalWatermarkRatio (${criticalWatermarkRatio}) must be > 0`);
39
+ }
40
+ if (!(ceilingMs >= baseIntervalMs)) {
41
+ throw new Error(`RateLimitScheduler: ceilingMs (${ceilingMs}) must be >= baseIntervalMs (${baseIntervalMs})`);
42
+ }
43
+ if (!(probeCadenceMs > 0) || !(fastProbeCadenceMs > 0)) {
44
+ throw new Error(`RateLimitScheduler: probeCadenceMs and fastProbeCadenceMs must be > 0`);
45
+ }
46
+ let currentIntervalMs = baseIntervalMs;
47
+ let retryAfterUntilMs = 0;
48
+ let lastRatio = null;
49
+ let currentCadenceMs = probeCadenceMs;
50
+ let probeTimer = null;
51
+ function clamp(ms) {
52
+ return Math.min(Math.max(ms, baseIntervalMs), ceilingMs);
53
+ }
54
+ function recomputeInterval() {
55
+ const nowMs = now();
56
+ if (retryAfterUntilMs > nowMs) {
57
+ currentIntervalMs = clamp(retryAfterUntilMs - nowMs);
58
+ return;
59
+ }
60
+ if (lastRatio == null) {
61
+ currentIntervalMs = baseIntervalMs;
62
+ return;
63
+ }
64
+ if (lastRatio >= resetWatermarkRatio) {
65
+ currentIntervalMs = baseIntervalMs;
66
+ return;
67
+ }
68
+ if (lastRatio < criticalWatermarkRatio) {
69
+ currentIntervalMs = clamp(4 * baseIntervalMs);
70
+ return;
71
+ }
72
+ if (lastRatio < lowWatermarkRatio) {
73
+ currentIntervalMs = clamp(2 * baseIntervalMs);
74
+ return;
75
+ }
76
+ // Hysteresis band: lowWatermarkRatio <= r < resetWatermarkRatio; retain.
77
+ }
78
+ function selectCadenceMs() {
79
+ if (lastRatio != null && lastRatio < lowWatermarkRatio)
80
+ return fastProbeCadenceMs;
81
+ return probeCadenceMs;
82
+ }
83
+ function armTimer() {
84
+ if (probeTimer != null) {
85
+ clearInterval(probeTimer);
86
+ probeTimer = null;
87
+ }
88
+ const t = setInterval(() => {
89
+ void probeNow();
90
+ }, currentCadenceMs);
91
+ if (typeof t.unref === 'function') {
92
+ t.unref();
93
+ }
94
+ probeTimer = t;
95
+ }
96
+ function maybeRescheduleCadence() {
97
+ const next = selectCadenceMs();
98
+ if (next !== currentCadenceMs) {
99
+ currentCadenceMs = next;
100
+ if (probeTimer != null) {
101
+ armTimer();
102
+ }
103
+ }
104
+ }
105
+ async function probeNow() {
106
+ if (runner == null) {
107
+ logger?.warn?.('rate-limit-scheduler: probeNow called without runner; skipping');
108
+ return null;
109
+ }
110
+ try {
111
+ const result = await runner('gh', ['api', 'rate_limit']);
112
+ if (result.exitCode !== 0) {
113
+ logger?.warn?.(`rate-limit-scheduler: probe exit ${result.exitCode}: ${result.stderr.trim()}`);
114
+ return null;
115
+ }
116
+ let parsed;
117
+ try {
118
+ parsed = JSON.parse(result.stdout);
119
+ }
120
+ catch {
121
+ logger?.warn?.('rate-limit-scheduler: probe returned malformed JSON');
122
+ return null;
123
+ }
124
+ const shape = RateLimitApiSchema.safeParse(parsed);
125
+ if (!shape.success) {
126
+ logger?.warn?.(`rate-limit-scheduler: probe shape mismatch: ${shape.error.message}`);
127
+ return null;
128
+ }
129
+ const g = shape.data.resources.graphql;
130
+ const remaining = Math.max(0, Math.min(g.remaining, g.limit));
131
+ const probeResult = {
132
+ remaining,
133
+ limit: g.limit,
134
+ resetAt: g.reset,
135
+ };
136
+ lastRatio = g.limit > 0 ? remaining / g.limit : 1;
137
+ recomputeInterval();
138
+ maybeRescheduleCadence();
139
+ logger?.info?.(`rate-limit-scheduler: probe remaining=${remaining}/${g.limit} interval=${currentIntervalMs}ms`);
140
+ return probeResult;
141
+ }
142
+ catch (err) {
143
+ logger?.warn?.(`rate-limit-scheduler: probe error: ${err instanceof Error ? err.message : String(err)}`);
144
+ return null;
145
+ }
146
+ }
147
+ function noteRetryAfter(seconds) {
148
+ if (!Number.isFinite(seconds) || seconds <= 0)
149
+ return;
150
+ retryAfterUntilMs = now() + Math.min(seconds * 1000, ceilingMs);
151
+ recomputeInterval();
152
+ currentCadenceMs = fastProbeCadenceMs;
153
+ if (probeTimer != null)
154
+ armTimer();
155
+ }
156
+ function noteResponseHeaders(headers) {
157
+ const lower = {};
158
+ for (const [k, v] of Object.entries(headers)) {
159
+ lower[k.toLowerCase()] = v;
160
+ }
161
+ const retryAfter = lower['retry-after'];
162
+ if (retryAfter != null) {
163
+ const seconds = Number.parseInt(retryAfter, 10);
164
+ if (Number.isFinite(seconds) && seconds > 0) {
165
+ noteRetryAfter(seconds);
166
+ }
167
+ }
168
+ const remainingRaw = lower['x-ratelimit-remaining'];
169
+ const limitRaw = lower['x-ratelimit-limit'];
170
+ if (remainingRaw != null && limitRaw != null) {
171
+ const remaining = Number.parseInt(remainingRaw, 10);
172
+ const limit = Number.parseInt(limitRaw, 10);
173
+ if (Number.isFinite(remaining) && Number.isFinite(limit) && limit > 0) {
174
+ lastRatio = Math.max(0, Math.min(remaining, limit)) / limit;
175
+ recomputeInterval();
176
+ maybeRescheduleCadence();
177
+ }
178
+ }
179
+ }
180
+ function start() {
181
+ if (probeTimer != null)
182
+ return;
183
+ armTimer();
184
+ }
185
+ function stop() {
186
+ if (probeTimer != null) {
187
+ clearInterval(probeTimer);
188
+ probeTimer = null;
189
+ }
190
+ }
191
+ function getCurrentIntervalMs() {
192
+ recomputeInterval();
193
+ return currentIntervalMs;
194
+ }
195
+ return {
196
+ getCurrentIntervalMs,
197
+ probeNow,
198
+ noteRetryAfter,
199
+ noteResponseHeaders,
200
+ start,
201
+ stop,
202
+ };
203
+ }
204
+ //# sourceMappingURL=rate-limit-scheduler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rate-limit-scheduler.js","sourceRoot":"","sources":["../../src/gh/rate-limit-scheduler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AA+BxB,MAAM,QAAQ,GAAG;IACf,cAAc,EAAE,MAAM;IACtB,SAAS,EAAE,OAAO;IAClB,cAAc,EAAE,OAAO;IACvB,kBAAkB,EAAE,MAAM;IAC1B,iBAAiB,EAAE,IAAI;IACvB,sBAAsB,EAAE,IAAI;IAC5B,mBAAmB,EAAE,IAAI;CACjB,CAAC;AAEX,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IAClC,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC;QAClB,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC;YAChB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;YACrB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;YACjB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;SAClB,CAAC;KACH,CAAC;CACH,CAAC,CAAC;AAEH,MAAM,UAAU,wBAAwB,CACtC,OAAkC,EAAE;IAEpC,MAAM,cAAc,GAAG,IAAI,CAAC,cAAc,IAAI,QAAQ,CAAC,cAAc,CAAC;IACtE,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,QAAQ,CAAC,SAAS,CAAC;IACvD,MAAM,cAAc,GAAG,IAAI,CAAC,cAAc,IAAI,QAAQ,CAAC,cAAc,CAAC;IACtE,MAAM,kBAAkB,GAAG,IAAI,CAAC,kBAAkB,IAAI,QAAQ,CAAC,kBAAkB,CAAC;IAClF,MAAM,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,IAAI,QAAQ,CAAC,iBAAiB,CAAC;IAC/E,MAAM,sBAAsB,GAC1B,IAAI,CAAC,sBAAsB,IAAI,QAAQ,CAAC,sBAAsB,CAAC;IACjE,MAAM,mBAAmB,GAAG,IAAI,CAAC,mBAAmB,IAAI,QAAQ,CAAC,mBAAmB,CAAC;IACrF,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;IAC3B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC;IACjC,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;IAE3B,IAAI,CAAC,CAAC,mBAAmB,GAAG,iBAAiB,CAAC,EAAE,CAAC;QAC/C,MAAM,IAAI,KAAK,CACb,4CAA4C,mBAAmB,kCAAkC,iBAAiB,GAAG,CACtH,CAAC;IACJ,CAAC;IACD,IAAI,CAAC,CAAC,iBAAiB,GAAG,sBAAsB,CAAC,EAAE,CAAC;QAClD,MAAM,IAAI,KAAK,CACb,0CAA0C,iBAAiB,uCAAuC,sBAAsB,GAAG,CAC5H,CAAC;IACJ,CAAC;IACD,IAAI,CAAC,CAAC,sBAAsB,GAAG,CAAC,CAAC,EAAE,CAAC;QAClC,MAAM,IAAI,KAAK,CACb,+CAA+C,sBAAsB,eAAe,CACrF,CAAC;IACJ,CAAC;IACD,IAAI,CAAC,CAAC,SAAS,IAAI,cAAc,CAAC,EAAE,CAAC;QACnC,MAAM,IAAI,KAAK,CACb,kCAAkC,SAAS,gCAAgC,cAAc,GAAG,CAC7F,CAAC;IACJ,CAAC;IACD,IAAI,CAAC,CAAC,cAAc,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,kBAAkB,GAAG,CAAC,CAAC,EAAE,CAAC;QACvD,MAAM,IAAI,KAAK,CACb,uEAAuE,CACxE,CAAC;IACJ,CAAC;IAED,IAAI,iBAAiB,GAAG,cAAc,CAAC;IACvC,IAAI,iBAAiB,GAAG,CAAC,CAAC;IAC1B,IAAI,SAAS,GAAkB,IAAI,CAAC;IACpC,IAAI,gBAAgB,GAAG,cAAc,CAAC;IACtC,IAAI,UAAU,GAA0C,IAAI,CAAC;IAE7D,SAAS,KAAK,CAAC,EAAU;QACvB,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,cAAc,CAAC,EAAE,SAAS,CAAC,CAAC;IAC3D,CAAC;IAED,SAAS,iBAAiB;QACxB,MAAM,KAAK,GAAG,GAAG,EAAE,CAAC;QACpB,IAAI,iBAAiB,GAAG,KAAK,EAAE,CAAC;YAC9B,iBAAiB,GAAG,KAAK,CAAC,iBAAiB,GAAG,KAAK,CAAC,CAAC;YACrD,OAAO;QACT,CAAC;QACD,IAAI,SAAS,IAAI,IAAI,EAAE,CAAC;YACtB,iBAAiB,GAAG,cAAc,CAAC;YACnC,OAAO;QACT,CAAC;QACD,IAAI,SAAS,IAAI,mBAAmB,EAAE,CAAC;YACrC,iBAAiB,GAAG,cAAc,CAAC;YACnC,OAAO;QACT,CAAC;QACD,IAAI,SAAS,GAAG,sBAAsB,EAAE,CAAC;YACvC,iBAAiB,GAAG,KAAK,CAAC,CAAC,GAAG,cAAc,CAAC,CAAC;YAC9C,OAAO;QACT,CAAC;QACD,IAAI,SAAS,GAAG,iBAAiB,EAAE,CAAC;YAClC,iBAAiB,GAAG,KAAK,CAAC,CAAC,GAAG,cAAc,CAAC,CAAC;YAC9C,OAAO;QACT,CAAC;QACD,yEAAyE;IAC3E,CAAC;IAED,SAAS,eAAe;QACtB,IAAI,SAAS,IAAI,IAAI,IAAI,SAAS,GAAG,iBAAiB;YAAE,OAAO,kBAAkB,CAAC;QAClF,OAAO,cAAc,CAAC;IACxB,CAAC;IAED,SAAS,QAAQ;QACf,IAAI,UAAU,IAAI,IAAI,EAAE,CAAC;YACvB,aAAa,CAAC,UAAU,CAAC,CAAC;YAC1B,UAAU,GAAG,IAAI,CAAC;QACpB,CAAC;QACD,MAAM,CAAC,GAAG,WAAW,CAAC,GAAG,EAAE;YACzB,KAAK,QAAQ,EAAE,CAAC;QAClB,CAAC,EAAE,gBAAgB,CAAC,CAAC;QACrB,IAAI,OAAQ,CAA4B,CAAC,KAAK,KAAK,UAAU,EAAE,CAAC;YAC7D,CAA2B,CAAC,KAAK,EAAE,CAAC;QACvC,CAAC;QACD,UAAU,GAAG,CAAC,CAAC;IACjB,CAAC;IAED,SAAS,sBAAsB;QAC7B,MAAM,IAAI,GAAG,eAAe,EAAE,CAAC;QAC/B,IAAI,IAAI,KAAK,gBAAgB,EAAE,CAAC;YAC9B,gBAAgB,GAAG,IAAI,CAAC;YACxB,IAAI,UAAU,IAAI,IAAI,EAAE,CAAC;gBACvB,QAAQ,EAAE,CAAC;YACb,CAAC;QACH,CAAC;IACH,CAAC;IAED,KAAK,UAAU,QAAQ;QACrB,IAAI,MAAM,IAAI,IAAI,EAAE,CAAC;YACnB,MAAM,EAAE,IAAI,EAAE,CAAC,gEAAgE,CAAC,CAAC;YACjF,OAAO,IAAI,CAAC;QACd,CAAC;QACD,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC;YACzD,IAAI,MAAM,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC;gBAC1B,MAAM,EAAE,IAAI,EAAE,CACZ,oCAAoC,MAAM,CAAC,QAAQ,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAC/E,CAAC;gBACF,OAAO,IAAI,CAAC;YACd,CAAC;YACD,IAAI,MAAe,CAAC;YACpB,IAAI,CAAC;gBACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YACrC,CAAC;YAAC,MAAM,CAAC;gBACP,MAAM,EAAE,IAAI,EAAE,CAAC,qDAAqD,CAAC,CAAC;gBACtE,OAAO,IAAI,CAAC;YACd,CAAC;YACD,MAAM,KAAK,GAAG,kBAAkB,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;YACnD,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;gBACnB,MAAM,EAAE,IAAI,EAAE,CACZ,+CAA+C,KAAK,CAAC,KAAK,CAAC,OAAO,EAAE,CACrE,CAAC;gBACF,OAAO,IAAI,CAAC;YACd,CAAC;YACD,MAAM,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;YACvC,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;YAC9D,MAAM,WAAW,GAAyB;gBACxC,SAAS;gBACT,KAAK,EAAE,CAAC,CAAC,KAAK;gBACd,OAAO,EAAE,CAAC,CAAC,KAAK;aACjB,CAAC;YACF,SAAS,GAAG,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YAClD,iBAAiB,EAAE,CAAC;YACpB,sBAAsB,EAAE,CAAC;YACzB,MAAM,EAAE,IAAI,EAAE,CACZ,yCAAyC,SAAS,IAAI,CAAC,CAAC,KAAK,aAAa,iBAAiB,IAAI,CAChG,CAAC;YACF,OAAO,WAAW,CAAC;QACrB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,EAAE,IAAI,EAAE,CACZ,sCAAsC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CACzF,CAAC;YACF,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED,SAAS,cAAc,CAAC,OAAe;QACrC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,OAAO,IAAI,CAAC;YAAE,OAAO;QACtD,iBAAiB,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,IAAI,EAAE,SAAS,CAAC,CAAC;QAChE,iBAAiB,EAAE,CAAC;QACpB,gBAAgB,GAAG,kBAAkB,CAAC;QACtC,IAAI,UAAU,IAAI,IAAI;YAAE,QAAQ,EAAE,CAAC;IACrC,CAAC;IAED,SAAS,mBAAmB,CAAC,OAA+B;QAC1D,MAAM,KAAK,GAA2B,EAAE,CAAC;QACzC,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;YAC7C,KAAK,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,GAAG,CAAC,CAAC;QAC7B,CAAC;QACD,MAAM,UAAU,GAAG,KAAK,CAAC,aAAa,CAAC,CAAC;QACxC,IAAI,UAAU,IAAI,IAAI,EAAE,CAAC;YACvB,MAAM,OAAO,GAAG,MAAM,CAAC,QAAQ,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;YAChD,IAAI,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,OAAO,GAAG,CAAC,EAAE,CAAC;gBAC5C,cAAc,CAAC,OAAO,CAAC,CAAC;YAC1B,CAAC;QACH,CAAC;QACD,MAAM,YAAY,GAAG,KAAK,CAAC,uBAAuB,CAAC,CAAC;QACpD,MAAM,QAAQ,GAAG,KAAK,CAAC,mBAAmB,CAAC,CAAC;QAC5C,IAAI,YAAY,IAAI,IAAI,IAAI,QAAQ,IAAI,IAAI,EAAE,CAAC;YAC7C,MAAM,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;YACpD,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;YAC5C,IAAI,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;gBACtE,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC;gBAC5D,iBAAiB,EAAE,CAAC;gBACpB,sBAAsB,EAAE,CAAC;YAC3B,CAAC;QACH,CAAC;IACH,CAAC;IAED,SAAS,KAAK;QACZ,IAAI,UAAU,IAAI,IAAI;YAAE,OAAO;QAC/B,QAAQ,EAAE,CAAC;IACb,CAAC;IAED,SAAS,IAAI;QACX,IAAI,UAAU,IAAI,IAAI,EAAE,CAAC;YACvB,aAAa,CAAC,UAAU,CAAC,CAAC;YAC1B,UAAU,GAAG,IAAI,CAAC;QACpB,CAAC;IACH,CAAC;IAED,SAAS,oBAAoB;QAC3B,iBAAiB,EAAE,CAAC;QACpB,OAAO,iBAAiB,CAAC;IAC3B,CAAC;IAED,OAAO;QACL,oBAAoB;QACpB,QAAQ;QACR,cAAc;QACd,mBAAmB;QACnB,KAAK;QACL,IAAI;KACL,CAAC;AACJ,CAAC"}
@@ -1,4 +1,6 @@
1
1
  import { type CommandRunner } from './command-runner.js';
2
+ import type { GhResponseCache } from './cache.js';
3
+ import type { RateLimitScheduler } from './rate-limit-scheduler.js';
2
4
  export interface Issue {
3
5
  number: number;
4
6
  title: string;
@@ -139,6 +141,7 @@ export interface PullRequestSummary {
139
141
  url: string;
140
142
  isDraft: boolean;
141
143
  labels: string[];
144
+ headRefOid?: string;
142
145
  }
143
146
  export interface IssueLabelsResult {
144
147
  labels: string[];
@@ -193,11 +196,22 @@ export interface GhWrapper {
193
196
  findOpenPrForBranch(repo: string, branch: string): Promise<OpenPrForBranch | null>;
194
197
  prDiffNames(repo: string, prNumber: number): Promise<string[]>;
195
198
  prDiffPatch(repo: string, prNumber: number): Promise<string>;
199
+ /**
200
+ * Overwrite the body of an issue. Not conditional — callers implement
201
+ * their own read-modify-verify loop for concurrent-safe append/remove.
202
+ */
203
+ updateIssueBody(repo: string, issue: number, body: string): Promise<void>;
204
+ }
205
+ export interface GhCliWrapperOptions {
206
+ cache?: GhResponseCache;
207
+ rateLimitScheduler?: RateLimitScheduler;
196
208
  }
197
209
  export declare class GhCliWrapper implements GhWrapper {
198
210
  private readonly runner;
199
211
  private readonly logger;
200
- constructor(runner?: CommandRunner, logger?: GhWrapperLogger);
212
+ private readonly cache;
213
+ private readonly rateLimitScheduler;
214
+ constructor(runner?: CommandRunner, logger?: GhWrapperLogger, options?: GhCliWrapperOptions);
201
215
  listIssues(query: string, options?: ListIssuesOptions): Promise<Issue[]>;
202
216
  getIssue(repo: string, number: number): Promise<Issue>;
203
217
  addLabels(repo: string, issue: number, labels: string[]): Promise<void>;
@@ -234,6 +248,7 @@ export declare class GhCliWrapper implements GhWrapper {
234
248
  findOpenPrForBranch(repo: string, branch: string): Promise<OpenPrForBranch | null>;
235
249
  prDiffNames(repo: string, prNumber: number): Promise<string[]>;
236
250
  prDiffPatch(repo: string, prNumber: number): Promise<string>;
251
+ updateIssueBody(repo: string, issue: number, body: string): Promise<void>;
237
252
  }
238
253
  export type { CommandRunner } from './command-runner.js';
239
254
  //# sourceMappingURL=wrapper.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"wrapper.d.ts","sourceRoot":"","sources":["../../src/gh/wrapper.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"wrapper.d.ts","sourceRoot":"","sources":["../../src/gh/wrapper.ts"],"names":[],"mappings":"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"}