claude-overnight 1.23.3 → 1.24.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/_version.d.ts +1 -1
- package/dist/_version.js +1 -1
- package/dist/index.js +2 -2
- package/dist/providers.d.ts +5 -5
- package/dist/providers.js +20 -20
- package/dist/swarm.d.ts +1 -1
- package/package.json +2 -2
- package/plugins/claude-overnight/.claude-plugin/plugin.json +1 -1
package/dist/_version.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const VERSION = "1.
|
|
1
|
+
export declare const VERSION = "1.24.1";
|
package/dist/_version.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
// Auto-generated by build — do not edit manually.
|
|
2
|
-
export const VERSION = "1.
|
|
2
|
+
export const VERSION = "1.24.1";
|
package/dist/index.js
CHANGED
|
@@ -223,7 +223,7 @@ async function main() {
|
|
|
223
223
|
const proxyUp = await healthCheckCursorProxy();
|
|
224
224
|
if (!proxyUp) {
|
|
225
225
|
console.warn(chalk.yellow(`\n ⚠ ${savedCursorProviders.length} Cursor provider(s) saved but proxy is not running at ${PROXY_DEFAULT_URL}`));
|
|
226
|
-
console.warn(chalk.yellow(` Start it: npx
|
|
226
|
+
console.warn(chalk.yellow(` Start it: npx cursor-composer-in-claude`));
|
|
227
227
|
console.warn(chalk.dim(` (Continuing — you can still use Anthropic models)\n`));
|
|
228
228
|
}
|
|
229
229
|
}
|
|
@@ -770,7 +770,7 @@ async function main() {
|
|
|
770
770
|
if (!result.ok) {
|
|
771
771
|
console.error(chalk.red(` ✗ ${role} preflight failed: ${chalk.dim(result.error)}`));
|
|
772
772
|
if (isCursorProxyProvider(provider)) {
|
|
773
|
-
console.error(chalk.yellow(` The proxy at ${PROXY_DEFAULT_URL} may have crashed. Start it: npx
|
|
773
|
+
console.error(chalk.yellow(` The proxy at ${PROXY_DEFAULT_URL} may have crashed. Start it: npx cursor-composer-in-claude`));
|
|
774
774
|
}
|
|
775
775
|
else {
|
|
776
776
|
console.error(chalk.red(` Fix the provider at ~/.claude/claude-overnight/providers.json and retry.`));
|
package/dist/providers.d.ts
CHANGED
|
@@ -15,9 +15,9 @@ export interface ProviderConfig {
|
|
|
15
15
|
key?: string;
|
|
16
16
|
/** When true, use JWT token auth instead of raw API keys. The bearer token is embedded in a short-lived JWT. */
|
|
17
17
|
useJWT?: boolean;
|
|
18
|
-
/** When true, this provider routes through cursor-
|
|
18
|
+
/** When true, this provider routes through cursor-composer-in-claude (special env/health-check handling). */
|
|
19
19
|
cursorProxy?: boolean;
|
|
20
|
-
/** API key for cursor-
|
|
20
|
+
/** API key for cursor-composer-in-claude. Stored in providers.json (0600), used as fallback when CURSOR_BRIDGE_API_KEY env is not set. */
|
|
21
21
|
cursorApiKey?: string;
|
|
22
22
|
}
|
|
23
23
|
export declare function getStorePath(): string;
|
|
@@ -54,7 +54,7 @@ export declare function preflightProvider(p: ProviderConfig, cwd: string, timeou
|
|
|
54
54
|
error: string;
|
|
55
55
|
}>;
|
|
56
56
|
export declare const PROXY_DEFAULT_URL = "http://127.0.0.1:8765";
|
|
57
|
-
/** Check if a provider routes through cursor-
|
|
57
|
+
/** Check if a provider routes through cursor-composer-in-claude. */
|
|
58
58
|
export declare function isCursorProxyProvider(p: ProviderConfig): boolean;
|
|
59
59
|
/**
|
|
60
60
|
* Health check: GET /health on the proxy. Returns true if proxy is reachable.
|
|
@@ -67,7 +67,7 @@ export declare function healthCheckCursorProxy(baseUrl?: string): Promise<boolea
|
|
|
67
67
|
*/
|
|
68
68
|
export declare function fetchCursorModels(baseUrl?: string): Promise<string[]>;
|
|
69
69
|
/**
|
|
70
|
-
* Auto-start the cursor-
|
|
70
|
+
* Auto-start the cursor-composer-in-claude as a detached background process.
|
|
71
71
|
*
|
|
72
72
|
* Passes CURSOR_AGENT_NODE/SCRIPT so the fork uses system Node.js for the
|
|
73
73
|
* agent subprocess (avoids segfaults with --list-models on macOS).
|
|
@@ -85,7 +85,7 @@ export declare function fetchCursorModels(baseUrl?: string): Promise<string[]>;
|
|
|
85
85
|
*/
|
|
86
86
|
export declare function ensureCursorProxyRunning(baseUrl?: string, forceRestart?: boolean): Promise<boolean>;
|
|
87
87
|
/**
|
|
88
|
-
* Full install + configure flow for cursor-
|
|
88
|
+
* Full install + configure flow for cursor-composer-in-claude.
|
|
89
89
|
* Walks through CLI install, API key config, and proxy start.
|
|
90
90
|
* Only needed when the quick auto-start (`ensureCursorProxyRunning`) fails —
|
|
91
91
|
* e.g. npx can't find the package or the user has no API key yet.
|
package/dist/providers.js
CHANGED
|
@@ -258,11 +258,11 @@ export async function preflightProvider(p, cwd, timeoutMs = 20_000) {
|
|
|
258
258
|
}
|
|
259
259
|
// ── Cursor API Proxy ──
|
|
260
260
|
export const PROXY_DEFAULT_URL = "http://127.0.0.1:8765";
|
|
261
|
-
/** Check if a provider routes through cursor-
|
|
261
|
+
/** Check if a provider routes through cursor-composer-in-claude. */
|
|
262
262
|
export function isCursorProxyProvider(p) {
|
|
263
263
|
return p.cursorProxy === true || p.baseURL === PROXY_DEFAULT_URL;
|
|
264
264
|
}
|
|
265
|
-
/** Resolve the cursor-
|
|
265
|
+
/** Resolve the cursor-composer-in-claude API key from env or providers.json. */
|
|
266
266
|
function resolveCursorProxyKey() {
|
|
267
267
|
if (process.env.CURSOR_BRIDGE_API_KEY?.trim())
|
|
268
268
|
return process.env.CURSOR_BRIDGE_API_KEY.trim();
|
|
@@ -350,7 +350,7 @@ async function fetchLiveCursorModels() {
|
|
|
350
350
|
return [];
|
|
351
351
|
}
|
|
352
352
|
/**
|
|
353
|
-
* Verify something is actually cursor-
|
|
353
|
+
* Verify something is actually cursor-composer-in-claude (not just any HTTP service on the port).
|
|
354
354
|
* Tries /health first (proxy identity), then falls back to /v1/models shape check.
|
|
355
355
|
* Returns true if it looks like the proxy.
|
|
356
356
|
*/
|
|
@@ -414,7 +414,7 @@ async function isPortInUse(port, host = "127.0.0.1") {
|
|
|
414
414
|
}
|
|
415
415
|
}
|
|
416
416
|
/**
|
|
417
|
-
* Auto-start the cursor-
|
|
417
|
+
* Auto-start the cursor-composer-in-claude as a detached background process.
|
|
418
418
|
*
|
|
419
419
|
* Passes CURSOR_AGENT_NODE/SCRIPT so the fork uses system Node.js for the
|
|
420
420
|
* agent subprocess (avoids segfaults with --list-models on macOS).
|
|
@@ -446,7 +446,7 @@ export async function ensureCursorProxyRunning(baseUrl = PROXY_DEFAULT_URL, forc
|
|
|
446
446
|
}
|
|
447
447
|
// Stale process on the port — kill it if forceRestart, or try automatically
|
|
448
448
|
if (!forceRestart) {
|
|
449
|
-
console.log(chalk.yellow(` ⚠ Something is on port ${port} but it's not cursor-
|
|
449
|
+
console.log(chalk.yellow(` ⚠ Something is on port ${port} but it's not cursor-composer-in-claude — killing stale process…`));
|
|
450
450
|
}
|
|
451
451
|
const killedPid = killProcessOnPort(port, url.hostname);
|
|
452
452
|
if (killedPid) {
|
|
@@ -494,7 +494,7 @@ async function startProxyProcess(baseUrl, url, port) {
|
|
|
494
494
|
console.log(chalk.dim(` Using system node for agent subprocess: ${sysNode}`));
|
|
495
495
|
}
|
|
496
496
|
try {
|
|
497
|
-
const child = spawn("npx", ["
|
|
497
|
+
const child = spawn("npx", ["cursor-composer-in-claude"], {
|
|
498
498
|
detached: true,
|
|
499
499
|
stdio: "ignore",
|
|
500
500
|
env: proxyEnv,
|
|
@@ -545,19 +545,19 @@ function setupSteps() {
|
|
|
545
545
|
successMsg: "Cursor API key configured",
|
|
546
546
|
},
|
|
547
547
|
{
|
|
548
|
-
label: "cursor-
|
|
548
|
+
label: "cursor-composer-in-claude server",
|
|
549
549
|
check: () => {
|
|
550
550
|
try {
|
|
551
|
-
execSync("npx
|
|
551
|
+
execSync("npx cursor-composer-in-claude --help", { stdio: "pipe", timeout: 10_000 });
|
|
552
552
|
return true;
|
|
553
553
|
}
|
|
554
554
|
catch {
|
|
555
555
|
return false;
|
|
556
556
|
}
|
|
557
557
|
},
|
|
558
|
-
autoCmd: "npx
|
|
559
|
-
manualCmd: "npx
|
|
560
|
-
successMsg: "cursor-
|
|
558
|
+
autoCmd: "npx cursor-composer-in-claude",
|
|
559
|
+
manualCmd: "npx cursor-composer-in-claude",
|
|
560
|
+
successMsg: "cursor-composer-in-claude available",
|
|
561
561
|
},
|
|
562
562
|
];
|
|
563
563
|
}
|
|
@@ -598,14 +598,14 @@ async function promptAndSaveCursorKey() {
|
|
|
598
598
|
return false;
|
|
599
599
|
}
|
|
600
600
|
/**
|
|
601
|
-
* Full install + configure flow for cursor-
|
|
601
|
+
* Full install + configure flow for cursor-composer-in-claude.
|
|
602
602
|
* Walks through CLI install, API key config, and proxy start.
|
|
603
603
|
* Only needed when the quick auto-start (`ensureCursorProxyRunning`) fails —
|
|
604
604
|
* e.g. npx can't find the package or the user has no API key yet.
|
|
605
605
|
* Returns true when proxy is running and healthy.
|
|
606
606
|
*/
|
|
607
607
|
export async function setupCursorProxy() {
|
|
608
|
-
console.log(chalk.dim("\n Configure cursor-
|
|
608
|
+
console.log(chalk.dim("\n Configure cursor-composer-in-claude"));
|
|
609
609
|
console.log(chalk.dim(" " + "─".repeat(40)));
|
|
610
610
|
console.log(chalk.dim(" We need three things: Cursor CLI, an API key, and the proxy server.\n"));
|
|
611
611
|
const steps = setupSteps();
|
|
@@ -671,24 +671,24 @@ export async function setupCursorProxy() {
|
|
|
671
671
|
if (choice === "a") {
|
|
672
672
|
console.log(chalk.dim(` Checking install…`));
|
|
673
673
|
try {
|
|
674
|
-
execSync("npx
|
|
675
|
-
console.log(chalk.green(` ✓ cursor-
|
|
674
|
+
execSync("npx cursor-composer-in-claude --help", { stdio: "pipe", timeout: 15_000 });
|
|
675
|
+
console.log(chalk.green(` ✓ cursor-composer-in-claude is installed`));
|
|
676
676
|
}
|
|
677
677
|
catch {
|
|
678
678
|
console.log(chalk.dim(` Installing…`));
|
|
679
679
|
try {
|
|
680
|
-
execSync("npm install -g
|
|
680
|
+
execSync("npm install -g cursor-composer-in-claude", { stdio: "inherit", timeout: 120_000 });
|
|
681
681
|
console.log(chalk.green(` ✓ Installed`));
|
|
682
682
|
}
|
|
683
683
|
catch {
|
|
684
|
-
console.log(chalk.yellow(" Install failed — try manual: npm install -g
|
|
684
|
+
console.log(chalk.yellow(" Install failed — try manual: npm install -g cursor-composer-in-claude"));
|
|
685
685
|
return false;
|
|
686
686
|
}
|
|
687
687
|
}
|
|
688
688
|
}
|
|
689
689
|
else if (choice === "m") {
|
|
690
|
-
console.log(chalk.cyan(`\n Install: ${chalk.bold("npm install -g
|
|
691
|
-
console.log(chalk.cyan(` Start: ${chalk.bold("npx
|
|
690
|
+
console.log(chalk.cyan(`\n Install: ${chalk.bold("npm install -g cursor-composer-in-claude")}`));
|
|
691
|
+
console.log(chalk.cyan(` Start: ${chalk.bold("npx cursor-composer-in-claude")}\n`));
|
|
692
692
|
const ok = await selectKey(` Started it?`, [
|
|
693
693
|
{ key: "r", desc: "eady" },
|
|
694
694
|
{ key: "c", desc: "ancel" },
|
|
@@ -706,7 +706,7 @@ export async function setupCursorProxy() {
|
|
|
706
706
|
return true;
|
|
707
707
|
// Auto-start failed or not responding — offer manual fallback
|
|
708
708
|
console.log(chalk.yellow(`\n Couldn't start the proxy automatically. Start it manually:`));
|
|
709
|
-
console.log(chalk.white(` ${chalk.bold("npx
|
|
709
|
+
console.log(chalk.white(` ${chalk.bold("npx cursor-composer-in-claude")}`));
|
|
710
710
|
for (;;) {
|
|
711
711
|
const choice = await selectKey(` Proxy started?`, [
|
|
712
712
|
{ key: "r", desc: "etry (re-attempt auto-start + kill stale)" },
|
package/dist/swarm.d.ts
CHANGED
|
@@ -17,7 +17,7 @@ export interface SwarmConfig {
|
|
|
17
17
|
baseCostUsd?: number;
|
|
18
18
|
/** Per-task env overrides: given a model id, return the env to pass to `query()` (or undefined for Anthropic default). */
|
|
19
19
|
envForModel?: (model?: string) => Record<string, string> | undefined;
|
|
20
|
-
/** When true, the run uses cursor-
|
|
20
|
+
/** When true, the run uses cursor-composer-in-claude. The swarm will attempt to restart it if it crashes mid-run. */
|
|
21
21
|
cursorProxy?: boolean;
|
|
22
22
|
}
|
|
23
23
|
export declare class Swarm {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "claude-overnight",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.24.1",
|
|
4
4
|
"description": "Background lane for your Claude Max plan. Parallel Claude Agent SDK sessions in git worktrees with a usage cap that reserves headroom for your interactive Claude Code. Crash-safe resume. Provider-agnostic model catalog with capability-based planning.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
},
|
|
16
16
|
"dependencies": {
|
|
17
17
|
"@anthropic-ai/claude-agent-sdk": "^0.2.92",
|
|
18
|
-
"
|
|
18
|
+
"cursor-composer-in-claude": "^0.7.3",
|
|
19
19
|
"chalk": "^5.4.1",
|
|
20
20
|
"jsonwebtoken": "^9.0.2"
|
|
21
21
|
},
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "claude-overnight",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.24.1",
|
|
4
4
|
"description": "Claude Code skill for understanding, installing, and inspecting claude-overnight runs -- parallel Claude agents in git worktrees with thinking waves, multi-wave steering, and crash-safe resume. Supports Cursor API Proxy, Qwen, OpenRouter.",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Francesco Fornace"
|