@zhigang1992/happy-cli 0.13.2 → 0.13.3
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/{index-Uj38Af20.mjs → index-CK4J-T-v.mjs} +29 -5
- package/dist/{index-DgAw_5N1.cjs → index-DSexnLgz.cjs} +30 -6
- package/dist/index.cjs +2 -2
- package/dist/index.mjs +2 -2
- package/dist/lib.cjs +1 -1
- package/dist/lib.mjs +1 -1
- package/dist/{list-DTZJgObu.cjs → list-BPpLshMx.cjs} +1 -1
- package/dist/{list-CrgHUL0f.mjs → list-D6wuSw1y.mjs} +1 -1
- package/dist/{prompt-DQg5bz0P.mjs → prompt-BooOOWHe.mjs} +1 -1
- package/dist/{prompt-DA5MCiiO.cjs → prompt-CaJKwSsH.cjs} +1 -1
- package/dist/{runCodex-C6yOfirQ.mjs → runCodex-BoWqgEZr.mjs} +2 -2
- package/dist/{runCodex-wtcLFv8_.cjs → runCodex-_wtZQXU0.cjs} +2 -2
- package/dist/{types-Cd6JAaoe.cjs → types--5a-fy9g.cjs} +2 -2
- package/dist/{types-DTrmDfm5.mjs → types-DZXtUKJF.mjs} +1 -1
- package/package.json +1 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import chalk from 'chalk';
|
|
2
2
|
import os$1, { homedir } from 'node:os';
|
|
3
3
|
import { randomUUID, randomBytes, createHmac } from 'node:crypto';
|
|
4
|
-
import { l as logger, p as projectPath, j as backoff, k as delay, R as RawJSONLinesSchema, m as AsyncLock, c as configuration, n as readDaemonState, o as clearDaemonState, i as packageJson, r as readSettings, q as readCredentials, g as encodeBase64, u as updateSettings, s as encodeBase64Url, d as decodeBase64, w as writeCredentialsLegacy, t as writeCredentialsDataKey, v as acquireDaemonLock, x as writeDaemonState, A as ApiClient, y as releaseDaemonLock, z as authChallenge, B as clearCredentials, C as clearMachineId, D as getLatestDaemonLog } from './types-
|
|
4
|
+
import { l as logger, p as projectPath, j as backoff, k as delay, R as RawJSONLinesSchema, m as AsyncLock, c as configuration, n as readDaemonState, o as clearDaemonState, i as packageJson, r as readSettings, q as readCredentials, g as encodeBase64, u as updateSettings, s as encodeBase64Url, d as decodeBase64, w as writeCredentialsLegacy, t as writeCredentialsDataKey, v as acquireDaemonLock, x as writeDaemonState, A as ApiClient, y as releaseDaemonLock, z as authChallenge, B as clearCredentials, C as clearMachineId, D as getLatestDaemonLog } from './types-DZXtUKJF.mjs';
|
|
5
5
|
import { spawn, execSync, exec as exec$1, execFileSync } from 'node:child_process';
|
|
6
6
|
import { resolve, join, extname, basename as basename$1 } from 'node:path';
|
|
7
7
|
import { createInterface } from 'node:readline';
|
|
@@ -2076,6 +2076,9 @@ Echo message: ${echoMessage}` : "");
|
|
|
2076
2076
|
});
|
|
2077
2077
|
let waitingForNextMessage = false;
|
|
2078
2078
|
let messagePusherStopped = false;
|
|
2079
|
+
if (opts.onQueryCreated) {
|
|
2080
|
+
opts.onQueryCreated(response, () => waitingForNextMessage);
|
|
2081
|
+
}
|
|
2079
2082
|
const messagePusherTask = (async () => {
|
|
2080
2083
|
try {
|
|
2081
2084
|
while (!messagePusherStopped) {
|
|
@@ -3058,6 +3061,8 @@ async function claudeRemoteLauncher(session) {
|
|
|
3058
3061
|
let abortController = null;
|
|
3059
3062
|
let abortFuture = null;
|
|
3060
3063
|
let abortRequested = false;
|
|
3064
|
+
let currentQuery = null;
|
|
3065
|
+
let isSessionIdle = null;
|
|
3061
3066
|
async function abort() {
|
|
3062
3067
|
if (abortController && !abortController.signal.aborted) {
|
|
3063
3068
|
abortController.abort();
|
|
@@ -3066,6 +3071,18 @@ async function claudeRemoteLauncher(session) {
|
|
|
3066
3071
|
}
|
|
3067
3072
|
async function doAbort() {
|
|
3068
3073
|
logger.debug("[remote]: doAbort");
|
|
3074
|
+
const idle = isSessionIdle?.() ?? true;
|
|
3075
|
+
if (!idle && currentQuery) {
|
|
3076
|
+
logger.debug("[remote]: Session is busy, attempting interrupt first");
|
|
3077
|
+
try {
|
|
3078
|
+
await currentQuery.interrupt();
|
|
3079
|
+
logger.debug("[remote]: Interrupt sent successfully");
|
|
3080
|
+
return;
|
|
3081
|
+
} catch (e) {
|
|
3082
|
+
logger.debug("[remote]: Interrupt failed, falling back to full abort", e);
|
|
3083
|
+
}
|
|
3084
|
+
}
|
|
3085
|
+
logger.debug("[remote]: Session is idle or interrupt failed, performing full abort");
|
|
3069
3086
|
abortRequested = true;
|
|
3070
3087
|
await abort();
|
|
3071
3088
|
}
|
|
@@ -3288,7 +3305,12 @@ async function claudeRemoteLauncher(session) {
|
|
|
3288
3305
|
session.client.sendSessionEvent({ type: "message", message: trimmed });
|
|
3289
3306
|
}
|
|
3290
3307
|
},
|
|
3291
|
-
signal: abortController.signal
|
|
3308
|
+
signal: abortController.signal,
|
|
3309
|
+
onQueryCreated: (query, isIdle) => {
|
|
3310
|
+
currentQuery = query;
|
|
3311
|
+
isSessionIdle = isIdle;
|
|
3312
|
+
logger.debug("[remote]: Query created, interrupt support enabled");
|
|
3313
|
+
}
|
|
3292
3314
|
});
|
|
3293
3315
|
session.consumeOneTimeFlags();
|
|
3294
3316
|
if (abortRequested && abortController.signal.aborted) {
|
|
@@ -3336,6 +3358,8 @@ async function claudeRemoteLauncher(session) {
|
|
|
3336
3358
|
abortController = null;
|
|
3337
3359
|
abortFuture?.resolve(void 0);
|
|
3338
3360
|
abortFuture = null;
|
|
3361
|
+
currentQuery = null;
|
|
3362
|
+
isSessionIdle = null;
|
|
3339
3363
|
logger.debug("[remote]: launch done");
|
|
3340
3364
|
permissionHandler.reset();
|
|
3341
3365
|
modeHash = null;
|
|
@@ -6995,7 +7019,7 @@ async function handleConnectVendor(vendor, displayName) {
|
|
|
6995
7019
|
return;
|
|
6996
7020
|
} else if (subcommand === "codex") {
|
|
6997
7021
|
try {
|
|
6998
|
-
const { runCodex } = await import('./runCodex-
|
|
7022
|
+
const { runCodex } = await import('./runCodex-BoWqgEZr.mjs');
|
|
6999
7023
|
let startedBy = void 0;
|
|
7000
7024
|
for (let i = 1; i < args.length; i++) {
|
|
7001
7025
|
if (args[i] === "--started-by") {
|
|
@@ -7040,7 +7064,7 @@ async function handleConnectVendor(vendor, displayName) {
|
|
|
7040
7064
|
} else if (subcommand === "list") {
|
|
7041
7065
|
try {
|
|
7042
7066
|
const { credentials } = await authAndSetupMachineIfNeeded();
|
|
7043
|
-
const { listSessions } = await import('./list-
|
|
7067
|
+
const { listSessions } = await import('./list-D6wuSw1y.mjs');
|
|
7044
7068
|
let sessionId;
|
|
7045
7069
|
let titleFilter;
|
|
7046
7070
|
let recentMsgs;
|
|
@@ -7142,7 +7166,7 @@ Examples:
|
|
|
7142
7166
|
process.exit(1);
|
|
7143
7167
|
}
|
|
7144
7168
|
const { credentials } = await authAndSetupMachineIfNeeded();
|
|
7145
|
-
const { promptSession } = await import('./prompt-
|
|
7169
|
+
const { promptSession } = await import('./prompt-BooOOWHe.mjs');
|
|
7146
7170
|
await promptSession(credentials, sessionId, promptText, timeoutMinutes ?? void 0);
|
|
7147
7171
|
} catch (error) {
|
|
7148
7172
|
console.error(chalk.red("Error:"), error instanceof Error ? error.message : "Unknown error");
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
var chalk = require('chalk');
|
|
4
4
|
var os = require('node:os');
|
|
5
5
|
var node_crypto = require('node:crypto');
|
|
6
|
-
var types = require('./types-
|
|
6
|
+
var types = require('./types--5a-fy9g.cjs');
|
|
7
7
|
var node_child_process = require('node:child_process');
|
|
8
8
|
var node_path = require('node:path');
|
|
9
9
|
var node_readline = require('node:readline');
|
|
@@ -1184,7 +1184,7 @@ class AbortError extends Error {
|
|
|
1184
1184
|
}
|
|
1185
1185
|
}
|
|
1186
1186
|
|
|
1187
|
-
const __filename$1 = node_url.fileURLToPath((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('index-
|
|
1187
|
+
const __filename$1 = node_url.fileURLToPath((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('index-DSexnLgz.cjs', document.baseURI).href)));
|
|
1188
1188
|
const __dirname$1 = node_path.join(__filename$1, "..");
|
|
1189
1189
|
function getGlobalClaudeVersion() {
|
|
1190
1190
|
try {
|
|
@@ -2099,6 +2099,9 @@ Echo message: ${echoMessage}` : "");
|
|
|
2099
2099
|
});
|
|
2100
2100
|
let waitingForNextMessage = false;
|
|
2101
2101
|
let messagePusherStopped = false;
|
|
2102
|
+
if (opts.onQueryCreated) {
|
|
2103
|
+
opts.onQueryCreated(response, () => waitingForNextMessage);
|
|
2104
|
+
}
|
|
2102
2105
|
const messagePusherTask = (async () => {
|
|
2103
2106
|
try {
|
|
2104
2107
|
while (!messagePusherStopped) {
|
|
@@ -3081,6 +3084,8 @@ async function claudeRemoteLauncher(session) {
|
|
|
3081
3084
|
let abortController = null;
|
|
3082
3085
|
let abortFuture = null;
|
|
3083
3086
|
let abortRequested = false;
|
|
3087
|
+
let currentQuery = null;
|
|
3088
|
+
let isSessionIdle = null;
|
|
3084
3089
|
async function abort() {
|
|
3085
3090
|
if (abortController && !abortController.signal.aborted) {
|
|
3086
3091
|
abortController.abort();
|
|
@@ -3089,6 +3094,18 @@ async function claudeRemoteLauncher(session) {
|
|
|
3089
3094
|
}
|
|
3090
3095
|
async function doAbort() {
|
|
3091
3096
|
types.logger.debug("[remote]: doAbort");
|
|
3097
|
+
const idle = isSessionIdle?.() ?? true;
|
|
3098
|
+
if (!idle && currentQuery) {
|
|
3099
|
+
types.logger.debug("[remote]: Session is busy, attempting interrupt first");
|
|
3100
|
+
try {
|
|
3101
|
+
await currentQuery.interrupt();
|
|
3102
|
+
types.logger.debug("[remote]: Interrupt sent successfully");
|
|
3103
|
+
return;
|
|
3104
|
+
} catch (e) {
|
|
3105
|
+
types.logger.debug("[remote]: Interrupt failed, falling back to full abort", e);
|
|
3106
|
+
}
|
|
3107
|
+
}
|
|
3108
|
+
types.logger.debug("[remote]: Session is idle or interrupt failed, performing full abort");
|
|
3092
3109
|
abortRequested = true;
|
|
3093
3110
|
await abort();
|
|
3094
3111
|
}
|
|
@@ -3311,7 +3328,12 @@ async function claudeRemoteLauncher(session) {
|
|
|
3311
3328
|
session.client.sendSessionEvent({ type: "message", message: trimmed });
|
|
3312
3329
|
}
|
|
3313
3330
|
},
|
|
3314
|
-
signal: abortController.signal
|
|
3331
|
+
signal: abortController.signal,
|
|
3332
|
+
onQueryCreated: (query, isIdle) => {
|
|
3333
|
+
currentQuery = query;
|
|
3334
|
+
isSessionIdle = isIdle;
|
|
3335
|
+
types.logger.debug("[remote]: Query created, interrupt support enabled");
|
|
3336
|
+
}
|
|
3315
3337
|
});
|
|
3316
3338
|
session.consumeOneTimeFlags();
|
|
3317
3339
|
if (abortRequested && abortController.signal.aborted) {
|
|
@@ -3359,6 +3381,8 @@ async function claudeRemoteLauncher(session) {
|
|
|
3359
3381
|
abortController = null;
|
|
3360
3382
|
abortFuture?.resolve(void 0);
|
|
3361
3383
|
abortFuture = null;
|
|
3384
|
+
currentQuery = null;
|
|
3385
|
+
isSessionIdle = null;
|
|
3362
3386
|
types.logger.debug("[remote]: launch done");
|
|
3363
3387
|
permissionHandler.reset();
|
|
3364
3388
|
modeHash = null;
|
|
@@ -7018,7 +7042,7 @@ async function handleConnectVendor(vendor, displayName) {
|
|
|
7018
7042
|
return;
|
|
7019
7043
|
} else if (subcommand === "codex") {
|
|
7020
7044
|
try {
|
|
7021
|
-
const { runCodex } = await Promise.resolve().then(function () { return require('./runCodex-
|
|
7045
|
+
const { runCodex } = await Promise.resolve().then(function () { return require('./runCodex-_wtZQXU0.cjs'); });
|
|
7022
7046
|
let startedBy = void 0;
|
|
7023
7047
|
for (let i = 1; i < args.length; i++) {
|
|
7024
7048
|
if (args[i] === "--started-by") {
|
|
@@ -7063,7 +7087,7 @@ async function handleConnectVendor(vendor, displayName) {
|
|
|
7063
7087
|
} else if (subcommand === "list") {
|
|
7064
7088
|
try {
|
|
7065
7089
|
const { credentials } = await authAndSetupMachineIfNeeded();
|
|
7066
|
-
const { listSessions } = await Promise.resolve().then(function () { return require('./list-
|
|
7090
|
+
const { listSessions } = await Promise.resolve().then(function () { return require('./list-BPpLshMx.cjs'); });
|
|
7067
7091
|
let sessionId;
|
|
7068
7092
|
let titleFilter;
|
|
7069
7093
|
let recentMsgs;
|
|
@@ -7165,7 +7189,7 @@ Examples:
|
|
|
7165
7189
|
process.exit(1);
|
|
7166
7190
|
}
|
|
7167
7191
|
const { credentials } = await authAndSetupMachineIfNeeded();
|
|
7168
|
-
const { promptSession } = await Promise.resolve().then(function () { return require('./prompt-
|
|
7192
|
+
const { promptSession } = await Promise.resolve().then(function () { return require('./prompt-CaJKwSsH.cjs'); });
|
|
7169
7193
|
await promptSession(credentials, sessionId, promptText, timeoutMinutes ?? void 0);
|
|
7170
7194
|
} catch (error) {
|
|
7171
7195
|
console.error(chalk.red("Error:"), error instanceof Error ? error.message : "Unknown error");
|
package/dist/index.cjs
CHANGED
package/dist/index.mjs
CHANGED
package/dist/lib.cjs
CHANGED
package/dist/lib.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { A as ApiClient, a as ApiSessionClient, R as RawJSONLinesSchema, c as configuration, l as logger } from './types-
|
|
1
|
+
export { A as ApiClient, a as ApiSessionClient, R as RawJSONLinesSchema, c as configuration, l as logger } from './types-DZXtUKJF.mjs';
|
|
2
2
|
import 'axios';
|
|
3
3
|
import 'chalk';
|
|
4
4
|
import 'fs';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { c as configuration, l as logger, d as decodeBase64, b as decrypt, f as formatTimeAgo, e as libsodiumDecryptFromPublicKey } from './types-
|
|
1
|
+
import { c as configuration, l as logger, d as decodeBase64, b as decrypt, f as formatTimeAgo, e as libsodiumDecryptFromPublicKey } from './types-DZXtUKJF.mjs';
|
|
2
2
|
import axios from 'axios';
|
|
3
3
|
import { existsSync, readdirSync, statSync, readFileSync } from 'fs';
|
|
4
4
|
import { join } from 'path';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { c as configuration, b as decrypt, d as decodeBase64, l as logger, g as encodeBase64, h as encrypt } from './types-
|
|
1
|
+
import { c as configuration, b as decrypt, d as decodeBase64, l as logger, g as encodeBase64, h as encrypt } from './types-DZXtUKJF.mjs';
|
|
2
2
|
import axios from 'axios';
|
|
3
3
|
import { io } from 'socket.io-client';
|
|
4
4
|
import 'chalk';
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { useStdout, useInput, Box, Text, render } from 'ink';
|
|
2
2
|
import React, { useState, useRef, useEffect, useCallback } from 'react';
|
|
3
|
-
import { l as logger, A as ApiClient, r as readSettings, p as projectPath, c as configuration, i as packageJson } from './types-
|
|
3
|
+
import { l as logger, A as ApiClient, r as readSettings, p as projectPath, c as configuration, i as packageJson } from './types-DZXtUKJF.mjs';
|
|
4
4
|
import { Client } from '@modelcontextprotocol/sdk/client/index.js';
|
|
5
5
|
import { StdioClientTransport } from '@modelcontextprotocol/sdk/client/stdio.js';
|
|
6
6
|
import { z } from 'zod';
|
|
7
7
|
import { ElicitRequestSchema } from '@modelcontextprotocol/sdk/types.js';
|
|
8
8
|
import { execSync } from 'child_process';
|
|
9
9
|
import { randomUUID } from 'node:crypto';
|
|
10
|
-
import { i as initialMachineMetadata, n as notifyDaemonSessionStarted, M as MessageQueue2, h as hashObject, r as registerKillSessionHandler, a as MessageBuffer, s as startHappyServer, t as trimIdent, b as stopCaffeinate } from './index-
|
|
10
|
+
import { i as initialMachineMetadata, n as notifyDaemonSessionStarted, M as MessageQueue2, h as hashObject, r as registerKillSessionHandler, a as MessageBuffer, s as startHappyServer, t as trimIdent, b as stopCaffeinate } from './index-CK4J-T-v.mjs';
|
|
11
11
|
import os from 'node:os';
|
|
12
12
|
import { resolve, join } from 'node:path';
|
|
13
13
|
import fs from 'node:fs';
|
|
@@ -2,14 +2,14 @@
|
|
|
2
2
|
|
|
3
3
|
var ink = require('ink');
|
|
4
4
|
var React = require('react');
|
|
5
|
-
var types = require('./types-
|
|
5
|
+
var types = require('./types--5a-fy9g.cjs');
|
|
6
6
|
var index_js = require('@modelcontextprotocol/sdk/client/index.js');
|
|
7
7
|
var stdio_js = require('@modelcontextprotocol/sdk/client/stdio.js');
|
|
8
8
|
var z = require('zod');
|
|
9
9
|
var types_js = require('@modelcontextprotocol/sdk/types.js');
|
|
10
10
|
var child_process = require('child_process');
|
|
11
11
|
var node_crypto = require('node:crypto');
|
|
12
|
-
var index = require('./index-
|
|
12
|
+
var index = require('./index-DSexnLgz.cjs');
|
|
13
13
|
var os = require('node:os');
|
|
14
14
|
var node_path = require('node:path');
|
|
15
15
|
var fs = require('node:fs');
|
|
@@ -41,7 +41,7 @@ function _interopNamespaceDefault(e) {
|
|
|
41
41
|
var z__namespace = /*#__PURE__*/_interopNamespaceDefault(z);
|
|
42
42
|
|
|
43
43
|
var name = "@zhigang1992/happy-cli";
|
|
44
|
-
var version = "0.13.
|
|
44
|
+
var version = "0.13.3";
|
|
45
45
|
var description = "Mobile and Web client for Claude Code and Codex";
|
|
46
46
|
var author = "Kirill Dubovitskiy";
|
|
47
47
|
var license = "MIT";
|
|
@@ -1150,7 +1150,7 @@ class RpcHandlerManager {
|
|
|
1150
1150
|
}
|
|
1151
1151
|
}
|
|
1152
1152
|
|
|
1153
|
-
const __dirname$1 = path.dirname(url.fileURLToPath((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('types-
|
|
1153
|
+
const __dirname$1 = path.dirname(url.fileURLToPath((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('types--5a-fy9g.cjs', document.baseURI).href))));
|
|
1154
1154
|
function projectPath() {
|
|
1155
1155
|
const path$1 = path.resolve(__dirname$1, "..");
|
|
1156
1156
|
return path$1;
|
|
@@ -20,7 +20,7 @@ import { fileURLToPath } from 'url';
|
|
|
20
20
|
import { Expo } from 'expo-server-sdk';
|
|
21
21
|
|
|
22
22
|
var name = "@zhigang1992/happy-cli";
|
|
23
|
-
var version = "0.13.
|
|
23
|
+
var version = "0.13.3";
|
|
24
24
|
var description = "Mobile and Web client for Claude Code and Codex";
|
|
25
25
|
var author = "Kirill Dubovitskiy";
|
|
26
26
|
var license = "MIT";
|