@zonease/happy 0.6.42 → 0.6.43
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/{api-CIE4_cWd.cjs → api-B-PlVQY6.cjs} +49 -3
- package/dist/{api-Ew6xr81i.mjs → api-BUCtd3cB.mjs} +49 -3
- package/dist/{auth-G9fZpVJ2.cjs → auth-BqGkUXvq.cjs} +2 -2
- package/dist/{auth-BzYevJo2.mjs → auth-DQH6q_q-.mjs} +4 -4
- package/dist/{auth-Dor79zTL.cjs → auth-OL3nNcDX.cjs} +4 -4
- package/dist/{auth-Q2STUNI-.mjs → auth-qM2eojWx.mjs} +2 -2
- package/dist/{browser-qDIIAL7S.cjs → browser-CY7VNU0C.cjs} +1 -1
- package/dist/{browser-BI7s-V8E.mjs → browser-D5RN_Axa.mjs} +1 -1
- package/dist/{claudeLocal-Db2tDC4X.mjs → claudeLocal-BXK_vQXS.mjs} +1 -1
- package/dist/{claudeLocal-f4uBLJaM.cjs → claudeLocal-HAXk0deK.cjs} +1 -1
- package/dist/{config-CHjDs8AS.mjs → config-2wMjzcHl.mjs} +1 -1
- package/dist/{config-CSBlEik9.cjs → config-CaKxWGVe.cjs} +1 -1
- package/dist/{connect-O_nA5BOC.mjs → connect-BAunPyp_.mjs} +4 -4
- package/dist/{connect-CJoTliii.cjs → connect-Dt1vY1BC.cjs} +4 -4
- package/dist/{controlClient-DoS9JqQC.mjs → controlClient-BzzTNSfl.mjs} +1 -1
- package/dist/{controlClient-CEz_p1zc.cjs → controlClient-yTkpwcOq.cjs} +1 -1
- package/dist/{cursorApprovalHook-DRAHfTXU.cjs → cursorApprovalHook-B2chnVni.cjs} +29 -11
- package/dist/{cursorApprovalHook-B0v1kGa7.mjs → cursorApprovalHook-BDLPzI5l.mjs} +29 -11
- package/dist/{cursorApprovalServer-JjPkdjGR.mjs → cursorApprovalServer-Ba1yOUCA.mjs} +109 -10
- package/dist/{cursorApprovalServer-DzY8yJlI.cjs → cursorApprovalServer-xwxVGL3u.cjs} +109 -8
- package/dist/{deviceKeys-B4aqjnE6.mjs → deviceKeys-CQyFFPtt.mjs} +2 -2
- package/dist/{deviceKeys-DyUn0bEx.cjs → deviceKeys-CdW-HPnz.cjs} +2 -2
- package/dist/{doctor-BJSuVRUZ.cjs → doctor-D4xWXiE7.cjs} +2 -2
- package/dist/{doctor-DRnft_5-.mjs → doctor-DDT2TXHH.mjs} +2 -2
- package/dist/{downloadImage-Cijmufpr.cjs → downloadImage-3A6zY5AX.cjs} +1 -372
- package/dist/downloadImage-BqNp0l7y.mjs +485 -0
- package/dist/{enroll-CysDL6ee.mjs → enroll-BlZ0giJI.mjs} +3 -3
- package/dist/{enroll-C2gunHdt.cjs → enroll-DeYs89Ic.cjs} +3 -3
- package/dist/{evidence-DsQ-h-_W.cjs → evidence-Bn1JXtdz.cjs} +1 -1
- package/dist/{evidence-DPutCuUr.mjs → evidence-PUnN9yPK.mjs} +1 -1
- package/dist/{formatImageMessage-6aV9YFWr.mjs → formatImageMessage-BRHeLf0-.mjs} +1 -1
- package/dist/{formatImageMessage-BPK_Ivfe.cjs → formatImageMessage-bVFGFDJl.cjs} +1 -1
- package/dist/index.cjs +50 -46
- package/dist/index.mjs +50 -46
- package/dist/{install-BsTA2tZn.mjs → install-BLPNuSeM.mjs} +2 -2
- package/dist/{install-DBg0xQ3g.mjs → install-BOIcR_Wr.mjs} +1 -1
- package/dist/{install-Tyhs6rUp.cjs → install-Jrs6YUu8.cjs} +1 -1
- package/dist/{install-DlOppA-e.cjs → install-Q-YMwwwg.cjs} +2 -2
- package/dist/lib.cjs +3 -3
- package/dist/lib.d.cts +1 -0
- package/dist/lib.d.mts +1 -0
- package/dist/lib.mjs +3 -3
- package/dist/{loadableToolOutput-DPGTtKJM.cjs → loadableToolOutput-B3qpMqXT.cjs} +2 -2
- package/dist/{loadableToolOutput-2dMPAp4N.mjs → loadableToolOutput-DzReWITb.mjs} +2 -2
- package/dist/{persistence-BcQmjobZ.cjs → persistence-D7zNFI-d.cjs} +1 -1
- package/dist/{persistence-D9tMm6bj.mjs → persistence-DbLMvLvk.mjs} +1 -1
- package/dist/{push-Cnm6JQMD.cjs → push-RT6Y0Hr3.cjs} +6 -6
- package/dist/{push-Dxsugkes.mjs → push-z5wQ4Ki_.mjs} +6 -6
- package/dist/registerKillSessionHandler-DmfnJ0zq.mjs +407 -0
- package/dist/registerKillSessionHandler-MoLdSQxM.cjs +411 -0
- package/dist/{run-BEflQaQ2.mjs → run-BFnSUK1o.mjs} +10 -8
- package/dist/{run-CiPWWhXt.cjs → run-C5StYRIB.cjs} +10 -8
- package/dist/{runClaude-BVXsyCHb.cjs → runClaude-ChRp6f5G.cjs} +26 -26
- package/dist/{runClaude-sPkSqHWY.mjs → runClaude-CjENBdrX.mjs} +21 -21
- package/dist/{runCodex-C4rHkIyw.mjs → runCodex-BzQWlRoj.mjs} +26 -26
- package/dist/{runCodex-BAwhdmSA.cjs → runCodex-DcQGyotH.cjs} +28 -28
- package/dist/{runCursor-DiHLWMs8.mjs → runCursor-B73z6MCN.mjs} +210 -34
- package/dist/{runCursor-CD5wC3gA.cjs → runCursor-BlPAxaTy.cjs} +210 -34
- package/dist/{runGemini-B-93gOqB.mjs → runGemini-BPv4UzuF.mjs} +17 -17
- package/dist/{runGemini-Cto-adir.cjs → runGemini-JFqaIC3u.cjs} +19 -19
- package/dist/{runOneShot-BfIzE9W4.cjs → runOneShot-2iV11e9L.cjs} +2 -2
- package/dist/{runOneShot-DGjlYVhR.mjs → runOneShot-DTukim2A.mjs} +2 -2
- package/dist/{serve-CqL6NWDr.cjs → serve-BDwuAIK4.cjs} +6 -6
- package/dist/{serve-ttlqF5jn.mjs → serve-BnlYj5ek.mjs} +6 -6
- package/dist/{session-BZhGpQUJ.cjs → session-Cp9LEESM.cjs} +5 -5
- package/dist/{session-Co0REU9e.mjs → session-gfeFU8CA.mjs} +5 -5
- package/dist/{sessionKeyCache-BwFUGgMs.cjs → sessionKeyCache-3Pme04yL.cjs} +1 -1
- package/dist/{sessionKeyCache-pXTjpETo.mjs → sessionKeyCache-DtBS_Sb3.mjs} +1 -1
- package/dist/{sessionList-DaufR-sA.mjs → sessionList-B1w4BUdv.mjs} +2 -2
- package/dist/{sessionList-fG5uAPzU.cjs → sessionList-BR_5UDZJ.cjs} +2 -2
- package/dist/{sessionSummary-CjZPt6nr.cjs → sessionSummary-DLweYgHO.cjs} +3 -3
- package/dist/{sessionSummary-Dv6dPABg.mjs → sessionSummary-E-a2bg8W.mjs} +3 -3
- package/dist/{setupOfflineReconnection-DW5il97B.mjs → setupOfflineReconnection-DHwthFtd.mjs} +5 -3
- package/dist/{setupOfflineReconnection-B6coH9QN.cjs → setupOfflineReconnection-Dkp00dC9.cjs} +7 -5
- package/dist/{spawnHappyCLI-Cfu7C1uM.cjs → spawnHappyCLI-C2uY9WV-.cjs} +1 -1
- package/dist/{spawnHappyCLI-DhUeycct.mjs → spawnHappyCLI-Dt7fbmbk.mjs} +1 -1
- package/dist/{ssh-8tPIKk-i.mjs → ssh-C-nEZiGP.mjs} +5 -5
- package/dist/{ssh-C4YTSHXL.cjs → ssh-CsnS89Lr.cjs} +5 -5
- package/dist/{task-CH-oidFy.mjs → task-B-8_QGGX.mjs} +6 -6
- package/dist/{task-DFW-PecP.cjs → task-lrLb4FCL.cjs} +6 -6
- package/dist/{uninstall-CeioRZNI.mjs → uninstall-CirMt_WC.mjs} +2 -2
- package/dist/{uninstall-yTSL3X6Y.cjs → uninstall-DMjUlEXT.cjs} +2 -2
- package/dist/{update-Derd2hoX.mjs → update-CfXbYshs.mjs} +3 -3
- package/dist/{update-Bju28vNP.cjs → update-mx2p28IP.cjs} +3 -3
- package/package.json +1 -1
- package/dist/downloadImage-BpVF7A79.mjs +0 -854
- package/dist/gitWorktree-C6jLoaMw.cjs +0 -39
- package/dist/gitWorktree-CzJDU2BV.mjs +0 -37
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
var axios = require('axios');
|
|
4
|
-
var logger = require('./persistence-
|
|
4
|
+
var logger = require('./persistence-D7zNFI-d.cjs');
|
|
5
5
|
var node_events = require('node:events');
|
|
6
6
|
var socket_ioClient = require('socket.io-client');
|
|
7
7
|
var z = require('zod');
|
|
@@ -26,7 +26,7 @@ var tweetnacl = require('tweetnacl');
|
|
|
26
26
|
var base64 = require('@stablelib/base64');
|
|
27
27
|
var node_readline = require('node:readline');
|
|
28
28
|
var expoServerSdk = require('expo-server-sdk');
|
|
29
|
-
var sessionKeyCache = require('./sessionKeyCache-
|
|
29
|
+
var sessionKeyCache = require('./sessionKeyCache-3Pme04yL.cjs');
|
|
30
30
|
var chalk = require('chalk');
|
|
31
31
|
|
|
32
32
|
var _documentCurrentScript = typeof document !== 'undefined' ? document.currentScript : null;
|
|
@@ -1395,7 +1395,7 @@ function resolveToolsDir() {
|
|
|
1395
1395
|
}
|
|
1396
1396
|
function findToolsDir() {
|
|
1397
1397
|
try {
|
|
1398
|
-
const manifest = node_module.createRequire((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('api-
|
|
1398
|
+
const manifest = node_module.createRequire((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('api-B-PlVQY6.cjs', document.baseURI).href))).resolve(`${toolsPackageName()}/package.json`);
|
|
1399
1399
|
return path.dirname(manifest);
|
|
1400
1400
|
} catch {
|
|
1401
1401
|
}
|
|
@@ -6036,6 +6036,45 @@ async function forkAndTruncateCodexSession(codexSessionId, truncateBeforeUuid) {
|
|
|
6036
6036
|
}
|
|
6037
6037
|
}
|
|
6038
6038
|
|
|
6039
|
+
function chatsRoot() {
|
|
6040
|
+
return path.join(os.homedir(), ".cursor", "chats");
|
|
6041
|
+
}
|
|
6042
|
+
async function findChatDirectory(chatId) {
|
|
6043
|
+
const root = chatsRoot();
|
|
6044
|
+
if (!fs.existsSync(root)) return null;
|
|
6045
|
+
let workspaces;
|
|
6046
|
+
try {
|
|
6047
|
+
workspaces = await promises.readdir(root);
|
|
6048
|
+
} catch {
|
|
6049
|
+
return null;
|
|
6050
|
+
}
|
|
6051
|
+
for (const workspace of workspaces) {
|
|
6052
|
+
const candidate = path.join(root, workspace, chatId);
|
|
6053
|
+
try {
|
|
6054
|
+
if ((await promises.stat(candidate)).isDirectory()) return candidate;
|
|
6055
|
+
} catch {
|
|
6056
|
+
}
|
|
6057
|
+
}
|
|
6058
|
+
return null;
|
|
6059
|
+
}
|
|
6060
|
+
async function forkCursorSession(chatId) {
|
|
6061
|
+
const source = await findChatDirectory(chatId);
|
|
6062
|
+
if (!source) {
|
|
6063
|
+
return { success: false, errorMessage: `Cursor chat not found: ${chatId}` };
|
|
6064
|
+
}
|
|
6065
|
+
const newChatId = node_crypto.randomUUID();
|
|
6066
|
+
const destination = path.join(source, "..", newChatId);
|
|
6067
|
+
try {
|
|
6068
|
+
await promises.cp(source, destination, { recursive: true });
|
|
6069
|
+
logger.logger.debug(`[cursor] forked chat ${chatId} \u2192 ${newChatId}`);
|
|
6070
|
+
return { success: true, newChatId };
|
|
6071
|
+
} catch (error) {
|
|
6072
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
6073
|
+
logger.logger.debug(`[cursor] fork failed for ${chatId}: ${message}`);
|
|
6074
|
+
return { success: false, errorMessage: message };
|
|
6075
|
+
}
|
|
6076
|
+
}
|
|
6077
|
+
|
|
6039
6078
|
class SessionCache {
|
|
6040
6079
|
data = null;
|
|
6041
6080
|
loadingPromise = null;
|
|
@@ -6606,6 +6645,13 @@ class ApiMachineClient {
|
|
|
6606
6645
|
}
|
|
6607
6646
|
return await forkCodexSession(codexSessionId);
|
|
6608
6647
|
});
|
|
6648
|
+
this.rpcHandlerManager.registerHandler("cursor-fork-session", async (params) => {
|
|
6649
|
+
const { cursorSessionId } = params || {};
|
|
6650
|
+
if (!cursorSessionId || typeof cursorSessionId !== "string") {
|
|
6651
|
+
throw new Error("cursorSessionId is required");
|
|
6652
|
+
}
|
|
6653
|
+
return await forkCursorSession(cursorSessionId);
|
|
6654
|
+
});
|
|
6609
6655
|
this.rpcHandlerManager.registerHandler("gemini-list-sessions", async (params) => {
|
|
6610
6656
|
const offset = typeof params?.offset === "number" && params.offset >= 0 ? Math.floor(params.offset) : 0;
|
|
6611
6657
|
const limit = typeof params?.limit === "number" && params.limit > 0 ? Math.floor(params.limit) : 50;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import{createRequire as _pkgrollCR}from"node:module";const require=_pkgrollCR(import.meta.url);import axios from 'axios';
|
|
2
|
-
import { l as logger, c as configuration, e as encodeBase64, f as encrypt, g as decrypt, h as decodeBase64, i as isDebug, B as encryptLegacy, a as readSettings, C as getRandomBytes, D as libsodiumEncryptForPublicKey } from './persistence-
|
|
2
|
+
import { l as logger, c as configuration, e as encodeBase64, f as encrypt, g as decrypt, h as decodeBase64, i as isDebug, B as encryptLegacy, a as readSettings, C as getRandomBytes, D as libsodiumEncryptForPublicKey } from './persistence-DbLMvLvk.mjs';
|
|
3
3
|
import { EventEmitter } from 'node:events';
|
|
4
4
|
import { io } from 'socket.io-client';
|
|
5
5
|
import { z } from 'zod';
|
|
@@ -9,7 +9,7 @@ import { randomUUID, createHash } from 'node:crypto';
|
|
|
9
9
|
import fs, { existsSync, readFileSync, writeFileSync, mkdirSync, statSync, readdirSync, mkdtempSync, chmodSync, createReadStream, createWriteStream, unlink as unlink$2, rmdirSync } from 'node:fs';
|
|
10
10
|
import path, { join, dirname, resolve as resolve$1, basename } from 'node:path';
|
|
11
11
|
import { spawn, execFile, execSync, execFileSync } from 'node:child_process';
|
|
12
|
-
import { readFile, rm, open, writeFile as writeFile$1, rename as rename$1, unlink as unlink$1, stat as stat$1, readdir as readdir$1, copyFile, mkdir as mkdir$1, appendFile as appendFile$1 } from 'node:fs/promises';
|
|
12
|
+
import { readFile, rm, open, writeFile as writeFile$1, rename as rename$1, unlink as unlink$1, stat as stat$1, readdir as readdir$1, copyFile, mkdir as mkdir$1, appendFile as appendFile$1, cp } from 'node:fs/promises';
|
|
13
13
|
import os, { tmpdir, homedir } from 'node:os';
|
|
14
14
|
import { promisify } from 'node:util';
|
|
15
15
|
import { spawn as spawn$1, exec } from 'child_process';
|
|
@@ -24,7 +24,7 @@ import tweetnacl from 'tweetnacl';
|
|
|
24
24
|
import { encode, decode } from '@stablelib/base64';
|
|
25
25
|
import { createInterface } from 'node:readline';
|
|
26
26
|
import { Expo } from 'expo-server-sdk';
|
|
27
|
-
import { c as cacheSessionKey } from './sessionKeyCache-
|
|
27
|
+
import { c as cacheSessionKey } from './sessionKeyCache-DtBS_Sb3.mjs';
|
|
28
28
|
import chalk from 'chalk';
|
|
29
29
|
|
|
30
30
|
z.object({
|
|
@@ -6033,6 +6033,45 @@ async function forkAndTruncateCodexSession(codexSessionId, truncateBeforeUuid) {
|
|
|
6033
6033
|
}
|
|
6034
6034
|
}
|
|
6035
6035
|
|
|
6036
|
+
function chatsRoot() {
|
|
6037
|
+
return join(homedir(), ".cursor", "chats");
|
|
6038
|
+
}
|
|
6039
|
+
async function findChatDirectory(chatId) {
|
|
6040
|
+
const root = chatsRoot();
|
|
6041
|
+
if (!existsSync(root)) return null;
|
|
6042
|
+
let workspaces;
|
|
6043
|
+
try {
|
|
6044
|
+
workspaces = await readdir$1(root);
|
|
6045
|
+
} catch {
|
|
6046
|
+
return null;
|
|
6047
|
+
}
|
|
6048
|
+
for (const workspace of workspaces) {
|
|
6049
|
+
const candidate = join(root, workspace, chatId);
|
|
6050
|
+
try {
|
|
6051
|
+
if ((await stat$1(candidate)).isDirectory()) return candidate;
|
|
6052
|
+
} catch {
|
|
6053
|
+
}
|
|
6054
|
+
}
|
|
6055
|
+
return null;
|
|
6056
|
+
}
|
|
6057
|
+
async function forkCursorSession(chatId) {
|
|
6058
|
+
const source = await findChatDirectory(chatId);
|
|
6059
|
+
if (!source) {
|
|
6060
|
+
return { success: false, errorMessage: `Cursor chat not found: ${chatId}` };
|
|
6061
|
+
}
|
|
6062
|
+
const newChatId = randomUUID();
|
|
6063
|
+
const destination = join(source, "..", newChatId);
|
|
6064
|
+
try {
|
|
6065
|
+
await cp(source, destination, { recursive: true });
|
|
6066
|
+
logger.debug(`[cursor] forked chat ${chatId} \u2192 ${newChatId}`);
|
|
6067
|
+
return { success: true, newChatId };
|
|
6068
|
+
} catch (error) {
|
|
6069
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
6070
|
+
logger.debug(`[cursor] fork failed for ${chatId}: ${message}`);
|
|
6071
|
+
return { success: false, errorMessage: message };
|
|
6072
|
+
}
|
|
6073
|
+
}
|
|
6074
|
+
|
|
6036
6075
|
class SessionCache {
|
|
6037
6076
|
data = null;
|
|
6038
6077
|
loadingPromise = null;
|
|
@@ -6603,6 +6642,13 @@ class ApiMachineClient {
|
|
|
6603
6642
|
}
|
|
6604
6643
|
return await forkCodexSession(codexSessionId);
|
|
6605
6644
|
});
|
|
6645
|
+
this.rpcHandlerManager.registerHandler("cursor-fork-session", async (params) => {
|
|
6646
|
+
const { cursorSessionId } = params || {};
|
|
6647
|
+
if (!cursorSessionId || typeof cursorSessionId !== "string") {
|
|
6648
|
+
throw new Error("cursorSessionId is required");
|
|
6649
|
+
}
|
|
6650
|
+
return await forkCursorSession(cursorSessionId);
|
|
6651
|
+
});
|
|
6606
6652
|
this.rpcHandlerManager.registerHandler("gemini-list-sessions", async (params) => {
|
|
6607
6653
|
const offset = typeof params?.offset === "number" && params.offset >= 0 ? Math.floor(params.offset) : 0;
|
|
6608
6654
|
const limit = typeof params?.limit === "number" && params.limit > 0 ? Math.floor(params.limit) : 50;
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var logger = require('./persistence-
|
|
3
|
+
var logger = require('./persistence-D7zNFI-d.cjs');
|
|
4
4
|
var node_crypto = require('node:crypto');
|
|
5
5
|
var tweetnacl = require('tweetnacl');
|
|
6
6
|
var axios = require('axios');
|
|
7
7
|
var qrcode = require('qrcode-terminal');
|
|
8
8
|
var time = require('./time-Bj2HRkKH.cjs');
|
|
9
|
-
var browser = require('./browser-
|
|
9
|
+
var browser = require('./browser-CY7VNU0C.cjs');
|
|
10
10
|
var React = require('react');
|
|
11
11
|
var ink = require('ink');
|
|
12
12
|
require('node:fs/promises');
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import chalk from 'chalk';
|
|
2
|
-
import { r as readCredentials, a as readSettings, c as configuration, l as logger, b as clearCredentials, d as clearMachineId } from './persistence-
|
|
3
|
-
import { authAndSetupMachineIfNeeded } from './auth-
|
|
2
|
+
import { r as readCredentials, a as readSettings, c as configuration, l as logger, b as clearCredentials, d as clearMachineId } from './persistence-DbLMvLvk.mjs';
|
|
3
|
+
import { authAndSetupMachineIfNeeded } from './auth-qM2eojWx.mjs';
|
|
4
4
|
import { existsSync, rmSync } from 'node:fs';
|
|
5
5
|
import { createInterface } from 'node:readline';
|
|
6
|
-
import { checkIfDaemonRunningAndCleanupStaleState, stopDaemon } from './controlClient-
|
|
6
|
+
import { checkIfDaemonRunningAndCleanupStaleState, stopDaemon } from './controlClient-BzzTNSfl.mjs';
|
|
7
7
|
import os from 'node:os';
|
|
8
8
|
import 'node:fs/promises';
|
|
9
9
|
import 'node:path';
|
|
@@ -14,7 +14,7 @@ import 'fs';
|
|
|
14
14
|
import 'axios';
|
|
15
15
|
import 'qrcode-terminal';
|
|
16
16
|
import './time-DgsBLJA_.mjs';
|
|
17
|
-
import './browser-
|
|
17
|
+
import './browser-D5RN_Axa.mjs';
|
|
18
18
|
import 'open';
|
|
19
19
|
import 'react';
|
|
20
20
|
import 'ink';
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
var chalk = require('chalk');
|
|
4
|
-
var logger = require('./persistence-
|
|
5
|
-
var auth = require('./auth-
|
|
4
|
+
var logger = require('./persistence-D7zNFI-d.cjs');
|
|
5
|
+
var auth = require('./auth-BqGkUXvq.cjs');
|
|
6
6
|
var fs = require('node:fs');
|
|
7
7
|
var node_readline = require('node:readline');
|
|
8
|
-
var controlClient = require('./controlClient-
|
|
8
|
+
var controlClient = require('./controlClient-yTkpwcOq.cjs');
|
|
9
9
|
var os = require('node:os');
|
|
10
10
|
require('node:fs/promises');
|
|
11
11
|
require('node:path');
|
|
@@ -16,7 +16,7 @@ require('fs');
|
|
|
16
16
|
require('axios');
|
|
17
17
|
require('qrcode-terminal');
|
|
18
18
|
require('./time-Bj2HRkKH.cjs');
|
|
19
|
-
require('./browser-
|
|
19
|
+
require('./browser-CY7VNU0C.cjs');
|
|
20
20
|
require('open');
|
|
21
21
|
require('react');
|
|
22
22
|
require('ink');
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { e as encodeBase64, c as configuration, l as logger, r as readCredentials, u as updateSettings, i as isDebug, s as encodeBase64Url, h as decodeBase64, t as writeCredentialsLegacy, w as writeCredentialsDataKey } from './persistence-
|
|
1
|
+
import { e as encodeBase64, c as configuration, l as logger, r as readCredentials, u as updateSettings, i as isDebug, s as encodeBase64Url, h as decodeBase64, t as writeCredentialsLegacy, w as writeCredentialsDataKey } from './persistence-DbLMvLvk.mjs';
|
|
2
2
|
import { randomBytes, randomUUID } from 'node:crypto';
|
|
3
3
|
import tweetnacl from 'tweetnacl';
|
|
4
4
|
import axios from 'axios';
|
|
5
5
|
import qrcode from 'qrcode-terminal';
|
|
6
6
|
import { d as delay } from './time-DgsBLJA_.mjs';
|
|
7
|
-
import { o as openBrowser } from './browser-
|
|
7
|
+
import { o as openBrowser } from './browser-D5RN_Axa.mjs';
|
|
8
8
|
import React, { useState } from 'react';
|
|
9
9
|
import { useInput, Box, Text, render } from 'ink';
|
|
10
10
|
import 'node:fs/promises';
|
|
@@ -3,7 +3,7 @@ import { resolve, join } from 'node:path';
|
|
|
3
3
|
import { createInterface } from 'node:readline';
|
|
4
4
|
import { existsSync, readFileSync, readdirSync, statSync, mkdirSync } from 'node:fs';
|
|
5
5
|
import { randomUUID } from 'node:crypto';
|
|
6
|
-
import { l as logger } from './persistence-
|
|
6
|
+
import { l as logger } from './persistence-DbLMvLvk.mjs';
|
|
7
7
|
import { homedir } from 'node:os';
|
|
8
8
|
import { p as projectPath } from './projectPath-BTBIMB57.mjs';
|
|
9
9
|
import { g as getBaseSystemPrompt } from './prompt-BsAZsPbo.mjs';
|
|
@@ -5,7 +5,7 @@ var path = require('node:path');
|
|
|
5
5
|
var node_readline = require('node:readline');
|
|
6
6
|
var fs = require('node:fs');
|
|
7
7
|
var node_crypto = require('node:crypto');
|
|
8
|
-
var logger = require('./persistence-
|
|
8
|
+
var logger = require('./persistence-D7zNFI-d.cjs');
|
|
9
9
|
var os = require('node:os');
|
|
10
10
|
var projectPath = require('./projectPath-ChLhdOyt.cjs');
|
|
11
11
|
var prompt = require('./prompt-BTWDZZO0.cjs');
|
|
@@ -2,7 +2,7 @@ import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'fs';
|
|
|
2
2
|
import { join } from 'path';
|
|
3
3
|
import { homedir } from 'os';
|
|
4
4
|
import { execSync } from 'child_process';
|
|
5
|
-
import { l as logger } from './persistence-
|
|
5
|
+
import { l as logger } from './persistence-DbLMvLvk.mjs';
|
|
6
6
|
import { D as DEFAULT_GEMINI_MODEL, G as GEMINI_MODEL_ENV } from './constants-pmXZGibX.mjs';
|
|
7
7
|
import 'node:fs/promises';
|
|
8
8
|
import 'node:fs';
|
|
@@ -4,7 +4,7 @@ var fs = require('fs');
|
|
|
4
4
|
var path = require('path');
|
|
5
5
|
var os = require('os');
|
|
6
6
|
var child_process = require('child_process');
|
|
7
|
-
var logger = require('./persistence-
|
|
7
|
+
var logger = require('./persistence-D7zNFI-d.cjs');
|
|
8
8
|
var constants = require('./constants-E_UWYTo3.cjs');
|
|
9
9
|
require('node:fs/promises');
|
|
10
10
|
require('node:fs');
|
|
@@ -2,11 +2,11 @@ import chalk from 'chalk';
|
|
|
2
2
|
import { existsSync, mkdirSync, writeFileSync } from 'fs';
|
|
3
3
|
import { homedir } from 'os';
|
|
4
4
|
import { join } from 'path';
|
|
5
|
-
import { r as readCredentials } from './persistence-
|
|
6
|
-
import { A as ApiClient } from './api-
|
|
5
|
+
import { r as readCredentials } from './persistence-DbLMvLvk.mjs';
|
|
6
|
+
import { A as ApiClient } from './api-BUCtd3cB.mjs';
|
|
7
7
|
import { createServer } from 'http';
|
|
8
8
|
import { randomBytes, createHash } from 'crypto';
|
|
9
|
-
import { o as openBrowser } from './browser-
|
|
9
|
+
import { o as openBrowser } from './browser-D5RN_Axa.mjs';
|
|
10
10
|
import { exec } from 'child_process';
|
|
11
11
|
import { promisify } from 'util';
|
|
12
12
|
import 'node:fs/promises';
|
|
@@ -32,7 +32,7 @@ import 'ws';
|
|
|
32
32
|
import '@stablelib/base64';
|
|
33
33
|
import 'node:readline';
|
|
34
34
|
import 'expo-server-sdk';
|
|
35
|
-
import './sessionKeyCache-
|
|
35
|
+
import './sessionKeyCache-DtBS_Sb3.mjs';
|
|
36
36
|
import 'open';
|
|
37
37
|
|
|
38
38
|
const CLIENT_ID$2 = "app_EMoamEEZ73f0CkXaXp7hrann";
|
|
@@ -4,11 +4,11 @@ var chalk = require('chalk');
|
|
|
4
4
|
var fs = require('fs');
|
|
5
5
|
var os = require('os');
|
|
6
6
|
var path = require('path');
|
|
7
|
-
var logger = require('./persistence-
|
|
8
|
-
var api = require('./api-
|
|
7
|
+
var logger = require('./persistence-D7zNFI-d.cjs');
|
|
8
|
+
var api = require('./api-B-PlVQY6.cjs');
|
|
9
9
|
var http = require('http');
|
|
10
10
|
var crypto = require('crypto');
|
|
11
|
-
var browser = require('./browser-
|
|
11
|
+
var browser = require('./browser-CY7VNU0C.cjs');
|
|
12
12
|
var child_process = require('child_process');
|
|
13
13
|
var util = require('util');
|
|
14
14
|
require('node:fs/promises');
|
|
@@ -34,7 +34,7 @@ require('ws');
|
|
|
34
34
|
require('@stablelib/base64');
|
|
35
35
|
require('node:readline');
|
|
36
36
|
require('expo-server-sdk');
|
|
37
|
-
require('./sessionKeyCache-
|
|
37
|
+
require('./sessionKeyCache-3Pme04yL.cjs');
|
|
38
38
|
require('open');
|
|
39
39
|
|
|
40
40
|
const CLIENT_ID$2 = "app_EMoamEEZ73f0CkXaXp7hrann";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { l as logger, m as readDaemonState, n as clearDaemonState } from './persistence-
|
|
1
|
+
import { l as logger, m as readDaemonState, n as clearDaemonState } from './persistence-DbLMvLvk.mjs';
|
|
2
2
|
import { p as projectPath } from './projectPath-BTBIMB57.mjs';
|
|
3
3
|
import { readFileSync } from 'fs';
|
|
4
4
|
import { join } from 'path';
|
|
@@ -2,12 +2,12 @@
|
|
|
2
2
|
|
|
3
3
|
var fs = require('node:fs');
|
|
4
4
|
var path = require('node:path');
|
|
5
|
-
var cursorApprovalServer = require('./cursorApprovalServer-
|
|
5
|
+
var cursorApprovalServer = require('./cursorApprovalServer-xwxVGL3u.cjs');
|
|
6
6
|
require('node:http');
|
|
7
7
|
require('node:crypto');
|
|
8
8
|
require('node:fs/promises');
|
|
9
|
-
require('./persistence-BcQmjobZ.cjs');
|
|
10
9
|
require('node:os');
|
|
10
|
+
require('./persistence-D7zNFI-d.cjs');
|
|
11
11
|
require('zod');
|
|
12
12
|
require('tweetnacl');
|
|
13
13
|
require('chalk');
|
|
@@ -33,7 +33,32 @@ function emit(permission, userMessage) {
|
|
|
33
33
|
process.stdout.write(`${JSON.stringify(payload)}
|
|
34
34
|
`);
|
|
35
35
|
}
|
|
36
|
+
function isStale(pid) {
|
|
37
|
+
if (typeof pid !== "number") return false;
|
|
38
|
+
try {
|
|
39
|
+
process.kill(pid, 0);
|
|
40
|
+
return false;
|
|
41
|
+
} catch {
|
|
42
|
+
return true;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
function readEndpoint(file) {
|
|
46
|
+
if (!fs.existsSync(file)) return null;
|
|
47
|
+
try {
|
|
48
|
+
const parsed = JSON.parse(fs.readFileSync(file, "utf8"));
|
|
49
|
+
if (typeof parsed?.port !== "number" || typeof parsed?.token !== "string") return null;
|
|
50
|
+
if (isStale(parsed.pid)) return null;
|
|
51
|
+
return { port: parsed.port, token: parsed.token };
|
|
52
|
+
} catch {
|
|
53
|
+
}
|
|
54
|
+
return null;
|
|
55
|
+
}
|
|
36
56
|
function findEndpoint(payload) {
|
|
57
|
+
for (const key of [payload.session_id, payload.conversation_id]) {
|
|
58
|
+
if (typeof key !== "string" || key.length === 0) continue;
|
|
59
|
+
const found = readEndpoint(path.join(cursorApprovalServer.approvalRegistryDir(), `${key}.json`));
|
|
60
|
+
if (found) return found;
|
|
61
|
+
}
|
|
37
62
|
const candidates = [];
|
|
38
63
|
if (typeof payload.cwd === "string") candidates.push(payload.cwd);
|
|
39
64
|
if (Array.isArray(payload.workspace_roots)) {
|
|
@@ -44,15 +69,8 @@ function findEndpoint(payload) {
|
|
|
44
69
|
if (process.env.CURSOR_PROJECT_DIR) candidates.push(process.env.CURSOR_PROJECT_DIR);
|
|
45
70
|
candidates.push(process.cwd());
|
|
46
71
|
for (const dir of candidates) {
|
|
47
|
-
const
|
|
48
|
-
if (
|
|
49
|
-
try {
|
|
50
|
-
const parsed = JSON.parse(fs.readFileSync(file, "utf8"));
|
|
51
|
-
if (typeof parsed?.port === "number" && typeof parsed?.token === "string") {
|
|
52
|
-
return { port: parsed.port, token: parsed.token };
|
|
53
|
-
}
|
|
54
|
-
} catch {
|
|
55
|
-
}
|
|
72
|
+
const found = readEndpoint(path.join(dir, ".cursor", cursorApprovalServer.APPROVAL_ENDPOINT_FILE));
|
|
73
|
+
if (found) return found;
|
|
56
74
|
}
|
|
57
75
|
return null;
|
|
58
76
|
}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { existsSync, readFileSync } from 'node:fs';
|
|
2
2
|
import { join } from 'node:path';
|
|
3
|
-
import { A as APPROVAL_ENDPOINT_FILE } from './cursorApprovalServer-
|
|
3
|
+
import { a as approvalRegistryDir, A as APPROVAL_ENDPOINT_FILE } from './cursorApprovalServer-Ba1yOUCA.mjs';
|
|
4
4
|
import 'node:http';
|
|
5
5
|
import 'node:crypto';
|
|
6
6
|
import 'node:fs/promises';
|
|
7
|
-
import './persistence-D9tMm6bj.mjs';
|
|
8
7
|
import 'node:os';
|
|
8
|
+
import './persistence-DbLMvLvk.mjs';
|
|
9
9
|
import 'zod';
|
|
10
10
|
import 'tweetnacl';
|
|
11
11
|
import 'chalk';
|
|
@@ -31,7 +31,32 @@ function emit(permission, userMessage) {
|
|
|
31
31
|
process.stdout.write(`${JSON.stringify(payload)}
|
|
32
32
|
`);
|
|
33
33
|
}
|
|
34
|
+
function isStale(pid) {
|
|
35
|
+
if (typeof pid !== "number") return false;
|
|
36
|
+
try {
|
|
37
|
+
process.kill(pid, 0);
|
|
38
|
+
return false;
|
|
39
|
+
} catch {
|
|
40
|
+
return true;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
function readEndpoint(file) {
|
|
44
|
+
if (!existsSync(file)) return null;
|
|
45
|
+
try {
|
|
46
|
+
const parsed = JSON.parse(readFileSync(file, "utf8"));
|
|
47
|
+
if (typeof parsed?.port !== "number" || typeof parsed?.token !== "string") return null;
|
|
48
|
+
if (isStale(parsed.pid)) return null;
|
|
49
|
+
return { port: parsed.port, token: parsed.token };
|
|
50
|
+
} catch {
|
|
51
|
+
}
|
|
52
|
+
return null;
|
|
53
|
+
}
|
|
34
54
|
function findEndpoint(payload) {
|
|
55
|
+
for (const key of [payload.session_id, payload.conversation_id]) {
|
|
56
|
+
if (typeof key !== "string" || key.length === 0) continue;
|
|
57
|
+
const found = readEndpoint(join(approvalRegistryDir(), `${key}.json`));
|
|
58
|
+
if (found) return found;
|
|
59
|
+
}
|
|
35
60
|
const candidates = [];
|
|
36
61
|
if (typeof payload.cwd === "string") candidates.push(payload.cwd);
|
|
37
62
|
if (Array.isArray(payload.workspace_roots)) {
|
|
@@ -42,15 +67,8 @@ function findEndpoint(payload) {
|
|
|
42
67
|
if (process.env.CURSOR_PROJECT_DIR) candidates.push(process.env.CURSOR_PROJECT_DIR);
|
|
43
68
|
candidates.push(process.cwd());
|
|
44
69
|
for (const dir of candidates) {
|
|
45
|
-
const
|
|
46
|
-
if (
|
|
47
|
-
try {
|
|
48
|
-
const parsed = JSON.parse(readFileSync(file, "utf8"));
|
|
49
|
-
if (typeof parsed?.port === "number" && typeof parsed?.token === "string") {
|
|
50
|
-
return { port: parsed.port, token: parsed.token };
|
|
51
|
-
}
|
|
52
|
-
} catch {
|
|
53
|
-
}
|
|
70
|
+
const found = readEndpoint(join(dir, ".cursor", APPROVAL_ENDPOINT_FILE));
|
|
71
|
+
if (found) return found;
|
|
54
72
|
}
|
|
55
73
|
return null;
|
|
56
74
|
}
|