very-happy-cli 0.2.106 → 0.2.108
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/{AcpBackend-DMmvLNNM.cjs → AcpBackend-D4vV6SVl.cjs} +1 -1
- package/dist/{AcpBackend-Ux5FD_6F.mjs → AcpBackend-DwR8rrkS.mjs} +1 -1
- package/dist/{AcpSessionManager-C1hoU_rK.mjs → AcpSessionManager-C057dkLF.mjs} +1 -1
- package/dist/{AcpSessionManager-RYkxYWDn.cjs → AcpSessionManager-CPHDZ-nz.cjs} +1 -1
- package/dist/{config-Dkn5KcXp.cjs → config-BvVwprR0.cjs} +2 -2
- package/dist/{config-DAb5saOC.mjs → config-DKMwLc1k.mjs} +2 -2
- package/dist/{index-D2ZzPm58.mjs → index-BXnHT-Wu.mjs} +5 -5
- package/dist/{index-D48mWUTN.cjs → index-C7N-ONU_.cjs} +2 -2
- package/dist/{index-CgWdwkhB.mjs → index-CzSv4d_S.mjs} +74 -16
- package/dist/{index-BLW-smJu.cjs → index-DM0Ku1Rv.cjs} +78 -20
- package/dist/{index-DCpgRGWy.mjs → index-DYY1DUOD.mjs} +2 -2
- package/dist/{index-Do3JnAi7.cjs → index-Db5m34eh.cjs} +4 -4
- package/dist/index.cjs +2 -2
- package/dist/index.mjs +2 -2
- package/dist/{installTerminalHooks-9rn15uP8.cjs → installTerminalHooks-BpvWmkZ9.cjs} +2 -2
- package/dist/{installTerminalHooks-l1B-nbWa.mjs → installTerminalHooks-Cs49gg_E.mjs} +2 -2
- package/dist/lib.cjs +1 -1
- package/dist/lib.d.cts +1 -1
- package/dist/lib.d.mts +1 -1
- package/dist/lib.mjs +1 -1
- package/dist/{mcp-ZvHzv_lJ.mjs → mcp-DY17lhMH.mjs} +2 -2
- package/dist/{mcp-C3zpbx-m.cjs → mcp-rTSmj-tn.cjs} +2 -2
- package/dist/{runGemini-q20IdxQV.cjs → runGemini-B3Mme1zr.cjs} +4 -4
- package/dist/{runGemini-0QqaFN1l.mjs → runGemini-Bqs52hw_.mjs} +4 -4
- package/dist/{runOpenClaw-CtWkyvDJ.cjs → runOpenClaw-B2V9j9Le.cjs} +3 -3
- package/dist/{runOpenClaw-C6Z6MLHq.mjs → runOpenClaw-CpbsQ7NZ.mjs} +3 -3
- package/dist/{send-B8YQyV3D.cjs → send-CLdMBQ8e.cjs} +2 -2
- package/dist/{send-DEhUWg8v.mjs → send-uHgpvIqm.mjs} +2 -2
- package/dist/{spawn-ChmlP1Z_.cjs → spawn-BXbVzbMs.cjs} +2 -2
- package/dist/{spawn-BzbPyTHU.mjs → spawn-Dt4ujmHH.mjs} +2 -2
- package/dist/{types-lSeHEzPR.mjs → types-D0-nhvuW.mjs} +11 -8
- package/dist/{types-C8-WODFE.cjs → types-D4bwyM-D.cjs} +12 -9
- package/package.json +7 -7
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
var node_child_process = require('node:child_process');
|
|
4
4
|
var sdk = require('@agentclientprotocol/sdk');
|
|
5
5
|
var node_crypto = require('node:crypto');
|
|
6
|
-
var persistence = require('./types-
|
|
6
|
+
var persistence = require('./types-D4bwyM-D.cjs');
|
|
7
7
|
|
|
8
8
|
const DEFAULT_TIMEOUTS = {
|
|
9
9
|
/** Default initialization timeout: 60 seconds */
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { spawn } from 'node:child_process';
|
|
2
2
|
import { ndJsonStream, ClientSideConnection } from '@agentclientprotocol/sdk';
|
|
3
3
|
import { randomUUID } from 'node:crypto';
|
|
4
|
-
import { l as logger, d as contentLogMetadata, e as errorLogMetadata, f as packageJson, g as delay } from './types-
|
|
4
|
+
import { l as logger, d as contentLogMetadata, e as errorLogMetadata, f as packageJson, g as delay } from './types-D0-nhvuW.mjs';
|
|
5
5
|
|
|
6
6
|
const DEFAULT_TIMEOUTS = {
|
|
7
7
|
/** Default initialization timeout: 60 seconds */
|
|
@@ -4,8 +4,8 @@ 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 persistence = require('./types-
|
|
8
|
-
var index = require('./index-
|
|
7
|
+
var persistence = require('./types-D4bwyM-D.cjs');
|
|
8
|
+
var index = require('./index-DM0Ku1Rv.cjs');
|
|
9
9
|
require('axios');
|
|
10
10
|
require('chalk');
|
|
11
11
|
require('node:util');
|
|
@@ -2,8 +2,8 @@ import { existsSync, readFileSync, mkdirSync, 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 './types-
|
|
6
|
-
import { D as DEFAULT_GEMINI_MODEL, G as GEMINI_MODEL_ENV } from './index-
|
|
5
|
+
import { l as logger } from './types-D0-nhvuW.mjs';
|
|
6
|
+
import { D as DEFAULT_GEMINI_MODEL, G as GEMINI_MODEL_ENV } from './index-CzSv4d_S.mjs';
|
|
7
7
|
import 'axios';
|
|
8
8
|
import 'chalk';
|
|
9
9
|
import 'node:util';
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { D as DefaultTransport, A as AcpBackend } from './AcpBackend-
|
|
2
|
-
export { a as DEFAULT_IDLE_TIMEOUT_MS, b as DEFAULT_TOOL_CALL_TIMEOUT_MS, e as extractErrorDetail, f as formatDuration, c as formatDurationMinutes, h as handleAgentMessageChunk, d as handleAgentThoughtChunk, g as handleLegacyMessageChunk, i as handlePlanUpdate, j as handleThinkingUpdate, k as handleToolCall, l as handleToolCallUpdate, p as parseArgsFromContent } from './AcpBackend-
|
|
3
|
-
import { h as connectionState, A as ApiClient, i as readSettings, j as encodeBase64, l as logger, p as projectPath } from './types-
|
|
4
|
-
import { A as AcpSessionManager } from './AcpSessionManager-
|
|
1
|
+
import { D as DefaultTransport, A as AcpBackend } from './AcpBackend-DwR8rrkS.mjs';
|
|
2
|
+
export { a as DEFAULT_IDLE_TIMEOUT_MS, b as DEFAULT_TOOL_CALL_TIMEOUT_MS, e as extractErrorDetail, f as formatDuration, c as formatDurationMinutes, h as handleAgentMessageChunk, d as handleAgentThoughtChunk, g as handleLegacyMessageChunk, i as handlePlanUpdate, j as handleThinkingUpdate, k as handleToolCall, l as handleToolCallUpdate, p as parseArgsFromContent } from './AcpBackend-DwR8rrkS.mjs';
|
|
3
|
+
import { h as connectionState, A as ApiClient, i as readSettings, j as encodeBase64, l as logger, p as projectPath } from './types-D0-nhvuW.mjs';
|
|
4
|
+
import { A as AcpSessionManager } from './AcpSessionManager-C057dkLF.mjs';
|
|
5
5
|
import { randomUUID } from 'node:crypto';
|
|
6
6
|
import { join } from 'node:path';
|
|
7
|
-
import { i as initialMachineMetadata, d as createSessionMetadata, e as setupOfflineReconnection, n as notifyDaemonSessionStarted, M as MessageQueue2, h as hashObject, f as startHappyServer, r as registerKillSessionHandler, B as BasePermissionHandler } from './index-
|
|
7
|
+
import { i as initialMachineMetadata, d as createSessionMetadata, e as setupOfflineReconnection, n as notifyDaemonSessionStarted, M as MessageQueue2, h as hashObject, f as startHappyServer, r as registerKillSessionHandler, B as BasePermissionHandler } from './index-CzSv4d_S.mjs';
|
|
8
8
|
import 'node:child_process';
|
|
9
9
|
import '@agentclientprotocol/sdk';
|
|
10
10
|
import 'axios';
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var index = require('./index-
|
|
3
|
+
var index = require('./index-DM0Ku1Rv.cjs');
|
|
4
4
|
var claudeAgentSdk = require('@anthropic-ai/claude-agent-sdk');
|
|
5
5
|
require('chalk');
|
|
6
6
|
require('node:os');
|
|
7
7
|
require('node:crypto');
|
|
8
|
-
require('./types-
|
|
8
|
+
require('./types-D4bwyM-D.cjs');
|
|
9
9
|
require('axios');
|
|
10
10
|
require('node:util');
|
|
11
11
|
require('node:fs');
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import{createRequire as _pkgrollCR}from"node:module";const require=_pkgrollCR(import.meta.url);import chalk from 'chalk';
|
|
2
2
|
import os, { homedir, userInfo } from 'node:os';
|
|
3
3
|
import { randomUUID, randomBytes, createHash as createHash$1, timingSafeEqual } from 'node:crypto';
|
|
4
|
-
import { n as readDaemonState, l as logger, c as configuration, o as clearDaemonState, q as getProjectPath, p as projectPath, s as initializeSandbox, t as wrapCommand, d as contentLogMetadata, I as InvalidateSync, R as RawJSONLinesSchema, g as delay, u as AsyncLock, v as ensurePrivateDirectory, M as MAX_CHAT_ATTACHMENT_SOURCE_BYTES, x as hardenPrivateFile, f as packageJson, i as readSettings, y as readCredentials, z as credentialRelayProblem, B as deriveLocalCliUpdateSummary, j as encodeBase64, C as updateSettings, D as encodeBase64Url, E as decodeBase64, F as writeCredentialsLegacy, G as writeCredentialsDataKey, H as readCredentialsForConfiguredRelay, J as encrypt, r as readPersistedSessions, K as isClaudeSessionId, L as getLocalHappyAgentCredentialPath, N as readLocalHappyAgentCredentials, O as decryptWithDataKey, P as decryptLegacy, Q as extractCompleteLines, S as decideBackfill, T as parseTerminalHookPayload, U as tmuxArgs, V as scrubTmuxClientEnv, W as decideMirrorBinding, X as MIRROR_BACKFILL_LINES_DEFAULT, Y as persistSession, Z as mirrorLineKey, _ as mirrorLocalId, w as writePrivateFileSync, $ as detectResumeSupport, a0 as detectCLIAvailability, a1 as acquireDaemonLock, a2 as summarizeSpawnSessionForLog, a3 as deletePersistedSessions, a4 as shellescape, a5 as decrypt, a6 as writeDaemonState, A as ApiClient, a7 as writeSettings, a8 as fetchCliUpdateState, a9 as resolveCliUpdateCheckInterval, aa as DEFAULT_CLI_UPDATE_CHECK_INTERVAL_MS, ab as releaseDaemonLock, ac as isValidSessionId, ad as listVhTerminals, ae as isValidTerminalId, af as readVhTerminal, ag as sendToVhTerminal, ah as TITLE_PROMPT_PREFIX, ai as BOARD_ANALYZER_PROMPT_PREFIX, h as connectionState, aj as startOfflineReconnection, ak as clearCredentials, al as clearMachineId, k as ensurePrivateDirectorySync, am as SandboxConfigSchema, b as createEnvelope, an as CodexAppServerClient, ao as getLatestDaemonLog } from './types-
|
|
4
|
+
import { n as readDaemonState, l as logger, c as configuration, o as clearDaemonState, q as getProjectPath, p as projectPath, s as initializeSandbox, t as wrapCommand, d as contentLogMetadata, I as InvalidateSync, R as RawJSONLinesSchema, g as delay, u as AsyncLock, v as ensurePrivateDirectory, M as MAX_CHAT_ATTACHMENT_SOURCE_BYTES, x as hardenPrivateFile, f as packageJson, i as readSettings, y as readCredentials, z as credentialRelayProblem, B as deriveLocalCliUpdateSummary, j as encodeBase64, C as updateSettings, D as encodeBase64Url, E as decodeBase64, F as writeCredentialsLegacy, G as writeCredentialsDataKey, H as readCredentialsForConfiguredRelay, J as encrypt, r as readPersistedSessions, K as isClaudeSessionId, L as getLocalHappyAgentCredentialPath, N as readLocalHappyAgentCredentials, O as decryptWithDataKey, P as decryptLegacy, Q as extractCompleteLines, S as decideBackfill, T as parseTerminalHookPayload, U as tmuxArgs, V as scrubTmuxClientEnv, W as decideMirrorBinding, X as MIRROR_BACKFILL_LINES_DEFAULT, Y as persistSession, Z as mirrorLineKey, _ as mirrorLocalId, w as writePrivateFileSync, $ as detectResumeSupport, a0 as detectCLIAvailability, a1 as acquireDaemonLock, a2 as summarizeSpawnSessionForLog, a3 as deletePersistedSessions, a4 as shellescape, a5 as decrypt, a6 as writeDaemonState, A as ApiClient, a7 as writeSettings, a8 as fetchCliUpdateState, a9 as resolveCliUpdateCheckInterval, aa as DEFAULT_CLI_UPDATE_CHECK_INTERVAL_MS, ab as releaseDaemonLock, ac as isValidSessionId, ad as listVhTerminals, ae as isValidTerminalId, af as readVhTerminal, ag as sendToVhTerminal, ah as TITLE_PROMPT_PREFIX, ai as BOARD_ANALYZER_PROMPT_PREFIX, h as connectionState, aj as startOfflineReconnection, ak as clearCredentials, al as clearMachineId, k as ensurePrivateDirectorySync, am as SandboxConfigSchema, b as createEnvelope, an as CodexAppServerClient, ao as getLatestDaemonLog } from './types-D0-nhvuW.mjs';
|
|
5
5
|
import spawn$1, { spawn } from 'cross-spawn';
|
|
6
6
|
import path, { join, resolve, basename, delimiter, isAbsolute, normalize, sep, dirname } from 'node:path';
|
|
7
7
|
import { createInterface } from 'node:readline';
|
|
@@ -6828,6 +6828,29 @@ async function handleResumeCommand(args) {
|
|
|
6828
6828
|
}
|
|
6829
6829
|
}
|
|
6830
6830
|
|
|
6831
|
+
function str(value) {
|
|
6832
|
+
return typeof value === "string" && value.length > 0 ? value : void 0;
|
|
6833
|
+
}
|
|
6834
|
+
function bareHost(host) {
|
|
6835
|
+
return host.endsWith("-dev") ? host.slice(0, -"-dev".length) : host;
|
|
6836
|
+
}
|
|
6837
|
+
function detectMachineIdentityConflict(recorded, current) {
|
|
6838
|
+
if (!recorded) return null;
|
|
6839
|
+
const recordedFacts = { host: str(recorded.host), platform: str(recorded.platform), homeDir: str(recorded.homeDir) };
|
|
6840
|
+
const fields = [];
|
|
6841
|
+
if (recordedFacts.host && bareHost(recordedFacts.host) !== bareHost(current.host)) fields.push("host");
|
|
6842
|
+
if (recordedFacts.platform && recordedFacts.platform !== current.platform) fields.push("platform");
|
|
6843
|
+
if (recordedFacts.homeDir && recordedFacts.homeDir !== current.homeDir) fields.push("homeDir");
|
|
6844
|
+
if (fields.length === 0) return null;
|
|
6845
|
+
const strong = fields.some((field) => field !== "host");
|
|
6846
|
+
return { confidence: strong ? "strong" : "weak", fields, recorded: recordedFacts, current };
|
|
6847
|
+
}
|
|
6848
|
+
function describeMachineIdentityConflict(conflict) {
|
|
6849
|
+
const diffs = conflict.fields.map((field) => `${field}: recorded=${conflict.recorded[field] ?? "?"} current=${conflict.current[field]}`).join(", ");
|
|
6850
|
+
const cause = conflict.confidence === "strong" ? "This machine id is registered to a different machine \u2014 ~/.happy was almost certainly copied here." : "This machine id is registered under a different hostname. If you renamed this host, ignore this; otherwise ~/.happy was copied here.";
|
|
6851
|
+
return `${cause} Two daemons sharing one machine id fight over the same machine row, and a copied ~/.claude/.credentials.json makes them invalidate each other's Claude login. Fix: run 'very-happy auth login --force' on this machine (it mints a fresh machine id), then log in to Claude here separately with 'claude'. (${diffs})`;
|
|
6852
|
+
}
|
|
6853
|
+
|
|
6831
6854
|
const CLAUDE_KEYCHAIN_SERVICE_PREFIX = "Claude Code";
|
|
6832
6855
|
function keychainIdentity(env = process.env, deps = {}) {
|
|
6833
6856
|
const home = deps.home ?? homedir();
|
|
@@ -6934,6 +6957,7 @@ function interpretCredentialsFile(text) {
|
|
|
6934
6957
|
function tokenTail(token) {
|
|
6935
6958
|
return token ? createHash$1("sha256").update(token).digest("hex").slice(-6) : "";
|
|
6936
6959
|
}
|
|
6960
|
+
const CREDENTIALS_REJECTED_DETAIL = "Credentials exist but Claude Code rejects them in the daemon context \u2014 the refresh token has most likely been rotated away by another store or another machine using the same credentials. Log in again with `claude` on this machine.";
|
|
6937
6961
|
function diagnoseStores(input) {
|
|
6938
6962
|
const { status, keychain, file } = input;
|
|
6939
6963
|
if (keychain.kind === "present") {
|
|
@@ -6958,7 +6982,7 @@ function diagnoseStores(input) {
|
|
|
6958
6982
|
return { diagnosis: "no-credentials", detail: "No Claude Code credentials found for this daemon context; log in with `claude` on this machine." };
|
|
6959
6983
|
}
|
|
6960
6984
|
if (keychain.kind === "unreadable" && file.hasTokens && status === "not-logged-in") {
|
|
6961
|
-
return {
|
|
6985
|
+
return { diagnosis: "credentials-rejected", detail: CREDENTIALS_REJECTED_DETAIL };
|
|
6962
6986
|
}
|
|
6963
6987
|
if (keychain.kind === "error") {
|
|
6964
6988
|
return { detail: `keychain check failed: ${keychain.detail}` };
|
|
@@ -7130,9 +7154,16 @@ class ClaudeAuthService {
|
|
|
7130
7154
|
if (this.platform === "darwin" && store !== "file" && (classification.status === "not-logged-in" || withDiagnosis && classification.status !== "unknown")) {
|
|
7131
7155
|
diagnosis = await this.diagnose(classification.status);
|
|
7132
7156
|
this.lastDiagnosis = diagnosis;
|
|
7133
|
-
} else if (classification.status === "not-logged-in"
|
|
7157
|
+
} else if (classification.status === "not-logged-in") {
|
|
7134
7158
|
const file = interpretCredentialsFile(this.readCredentialsFile());
|
|
7135
|
-
if (!file.hasTokens)
|
|
7159
|
+
if (!file.hasTokens) {
|
|
7160
|
+
diagnosis = {
|
|
7161
|
+
diagnosis: "no-credentials",
|
|
7162
|
+
detail: store === "file" ? "credentialStore=file and ~/.claude/.credentials.json has no tokens; log in with `claude` from a terminal on this machine." : "No Claude Code credentials found for this daemon context; log in with `claude` on this machine."
|
|
7163
|
+
};
|
|
7164
|
+
} else {
|
|
7165
|
+
diagnosis = { diagnosis: "credentials-rejected", detail: CREDENTIALS_REJECTED_DETAIL };
|
|
7166
|
+
}
|
|
7136
7167
|
}
|
|
7137
7168
|
if (storeRequested === "file" && store === "auto") {
|
|
7138
7169
|
diagnosis = { ...diagnosis ?? {}, detail: `credentialStore=file requested but the keychain-off shim is missing under ${keychainOffShimDir(this.opts.happyLibDir)}; running in auto mode.` };
|
|
@@ -8234,6 +8265,9 @@ async function startDaemon() {
|
|
|
8234
8265
|
cwd: assistantHome(),
|
|
8235
8266
|
env: {
|
|
8236
8267
|
...process.env,
|
|
8268
|
+
// B-297: see the resume/restart paths — every spawn carries the
|
|
8269
|
+
// credentialStore=file shim, not just fresh sessions (B-276 D8).
|
|
8270
|
+
...claudeAuthServiceRef?.claudeProcessEnvOverrides() ?? {},
|
|
8237
8271
|
HAPPY_SESSION_VARIANT: "assistant",
|
|
8238
8272
|
HAPPY_RECONNECT_SESSION_ID: assistantSessionId,
|
|
8239
8273
|
HAPPY_RECONNECT_ENCRYPTION_KEY: s.encryptionKey,
|
|
@@ -8684,6 +8718,11 @@ async function startDaemon() {
|
|
|
8684
8718
|
cwd: launch.cwd,
|
|
8685
8719
|
env: {
|
|
8686
8720
|
...process.env,
|
|
8721
|
+
// B-297: the credentialStore=file shim must ride every spawn path,
|
|
8722
|
+
// not just fresh sessions — a resumed/restarted wrapper that silently
|
|
8723
|
+
// fell back to `auto` reads a different credential store than the
|
|
8724
|
+
// fresh one next to it (B-276 D8).
|
|
8725
|
+
...claudeAuthServiceRef?.claudeProcessEnvOverrides() ?? {},
|
|
8687
8726
|
HAPPY_RECONNECT_SESSION_ID: happySessionId,
|
|
8688
8727
|
HAPPY_RECONNECT_ENCRYPTION_KEY: encodeBase64(tracked.encryption.encryptionKey),
|
|
8689
8728
|
HAPPY_RECONNECT_ENCRYPTION_VARIANT: tracked.encryption.encryptionVariant,
|
|
@@ -8810,6 +8849,11 @@ async function startDaemon() {
|
|
|
8810
8849
|
cwd,
|
|
8811
8850
|
env: {
|
|
8812
8851
|
...process.env,
|
|
8852
|
+
// B-297: the credentialStore=file shim must ride every spawn path,
|
|
8853
|
+
// not just fresh sessions — a resumed/restarted wrapper that silently
|
|
8854
|
+
// fell back to `auto` reads a different credential store than the
|
|
8855
|
+
// fresh one next to it (B-276 D8).
|
|
8856
|
+
...claudeAuthServiceRef?.claudeProcessEnvOverrides() ?? {},
|
|
8813
8857
|
HAPPY_RECONNECT_SESSION_ID: happySessionId,
|
|
8814
8858
|
HAPPY_RECONNECT_ENCRYPTION_KEY: encodeBase64(tracked.encryption.encryptionKey),
|
|
8815
8859
|
HAPPY_RECONNECT_ENCRYPTION_VARIANT: tracked.encryption.encryptionVariant,
|
|
@@ -8979,6 +9023,14 @@ async function startDaemon() {
|
|
|
8979
9023
|
daemonState: initialDaemonState
|
|
8980
9024
|
});
|
|
8981
9025
|
logger.debug(`[DAEMON RUN] Machine registered: ${machine.id}`);
|
|
9026
|
+
const identityConflict = detectMachineIdentityConflict(machine.metadata, {
|
|
9027
|
+
host: initialMachineMetadata.host,
|
|
9028
|
+
platform: initialMachineMetadata.platform,
|
|
9029
|
+
homeDir: initialMachineMetadata.homeDir
|
|
9030
|
+
});
|
|
9031
|
+
if (identityConflict) {
|
|
9032
|
+
logger.warn(`[DAEMON RUN] machine identity conflict (${identityConflict.confidence}): ${describeMachineIdentityConflict(identityConflict)}`);
|
|
9033
|
+
}
|
|
8982
9034
|
const apiMachine = api.machineSyncClient(machine);
|
|
8983
9035
|
apiMachineRef = apiMachine;
|
|
8984
9036
|
const mirrorManager = createMirrorManager({
|
|
@@ -9025,6 +9077,12 @@ async function startDaemon() {
|
|
|
9025
9077
|
});
|
|
9026
9078
|
claudeAuthService.start();
|
|
9027
9079
|
apiMachine.connect();
|
|
9080
|
+
if (identityConflict?.confidence === "weak") {
|
|
9081
|
+
void apiMachine.updateMachineMetadata((current) => ({
|
|
9082
|
+
...current ?? initialMachineMetadata,
|
|
9083
|
+
host: initialMachineMetadata.host
|
|
9084
|
+
})).then(() => logger.debug(`[DAEMON RUN] claimed the machine record for host ${initialMachineMetadata.host}`)).catch((error) => logger.debug("[DAEMON RUN] could not refresh the recorded host:", error));
|
|
9085
|
+
}
|
|
9028
9086
|
let cliUpdateCheckRunning = false;
|
|
9029
9087
|
const refreshCliUpdate = async () => {
|
|
9030
9088
|
if (cliUpdateCheckRunning) return;
|
|
@@ -10180,7 +10238,7 @@ function registerSideQuestionHandler(rpc, deps) {
|
|
|
10180
10238
|
const retainMs = deps.retainMs ?? SIDE_QUESTION_RETAIN_MS;
|
|
10181
10239
|
const maxRunMs = deps.maxRunMs ?? SIDE_QUESTION_MAX_RUN_MS;
|
|
10182
10240
|
const run = deps.run ?? (async (input) => {
|
|
10183
|
-
const { query } = await import('./index-
|
|
10241
|
+
const { query } = await import('./index-DYY1DUOD.mjs');
|
|
10184
10242
|
return runSideQuestion(query, input);
|
|
10185
10243
|
});
|
|
10186
10244
|
const slots = /* @__PURE__ */ new Map();
|
|
@@ -15108,7 +15166,7 @@ Conversation history is preserved on the server, but in-flight tool calls are in
|
|
|
15108
15166
|
process.exit(0);
|
|
15109
15167
|
} else if (subcommand === "install-terminal-hooks") {
|
|
15110
15168
|
try {
|
|
15111
|
-
const { installTerminalHooks, parseTerminalHooksArgs, TERMINAL_HOOKS_HELP } = await import('./installTerminalHooks-
|
|
15169
|
+
const { installTerminalHooks, parseTerminalHooksArgs, TERMINAL_HOOKS_HELP } = await import('./installTerminalHooks-Cs49gg_E.mjs');
|
|
15112
15170
|
const command = parseTerminalHooksArgs(args.slice(1));
|
|
15113
15171
|
if (command.action === "help") {
|
|
15114
15172
|
console.log(TERMINAL_HOOKS_HELP);
|
|
@@ -15125,7 +15183,7 @@ Conversation history is preserved on the server, but in-flight tool calls are in
|
|
|
15125
15183
|
}
|
|
15126
15184
|
} else if (subcommand === "spawn") {
|
|
15127
15185
|
try {
|
|
15128
|
-
const { handleSpawnCommand } = await import('./spawn-
|
|
15186
|
+
const { handleSpawnCommand } = await import('./spawn-Dt4ujmHH.mjs');
|
|
15129
15187
|
await handleSpawnCommand(args.slice(1));
|
|
15130
15188
|
} catch (error) {
|
|
15131
15189
|
console.error(chalk.red("Error:"), error instanceof Error ? error.message : "Unknown error");
|
|
@@ -15137,7 +15195,7 @@ Conversation history is preserved on the server, but in-flight tool calls are in
|
|
|
15137
15195
|
return;
|
|
15138
15196
|
} else if (subcommand === "send") {
|
|
15139
15197
|
try {
|
|
15140
|
-
const { handleSendCommand } = await import('./send-
|
|
15198
|
+
const { handleSendCommand } = await import('./send-uHgpvIqm.mjs');
|
|
15141
15199
|
await handleSendCommand(args.slice(1));
|
|
15142
15200
|
} catch (error) {
|
|
15143
15201
|
console.error(chalk.red("Error:"), error instanceof Error ? error.message : "Unknown error");
|
|
@@ -15243,9 +15301,9 @@ Conversation history is preserved on the server, but in-flight tool calls are in
|
|
|
15243
15301
|
if (geminiSubcommand === "project" && args[2] === "set" && args[3]) {
|
|
15244
15302
|
const projectId = args[3];
|
|
15245
15303
|
try {
|
|
15246
|
-
const { saveGoogleCloudProjectToConfig } = await import('./config-
|
|
15247
|
-
const { readCredentialsForConfiguredRelay: readCredentialsForConfiguredRelay2 } = await import('./types-
|
|
15248
|
-
const { ApiClient: ApiClient2 } = await import('./types-
|
|
15304
|
+
const { saveGoogleCloudProjectToConfig } = await import('./config-DKMwLc1k.mjs');
|
|
15305
|
+
const { readCredentialsForConfiguredRelay: readCredentialsForConfiguredRelay2 } = await import('./types-D0-nhvuW.mjs').then(function (n) { return n.ap; });
|
|
15306
|
+
const { ApiClient: ApiClient2 } = await import('./types-D0-nhvuW.mjs').then(function (n) { return n.aq; });
|
|
15249
15307
|
let userEmail = void 0;
|
|
15250
15308
|
try {
|
|
15251
15309
|
const credentials = await readCredentialsForConfiguredRelay2();
|
|
@@ -15276,7 +15334,7 @@ Conversation history is preserved on the server, but in-flight tool calls are in
|
|
|
15276
15334
|
}
|
|
15277
15335
|
if (geminiSubcommand === "project" && args[2] === "get") {
|
|
15278
15336
|
try {
|
|
15279
|
-
const { readGeminiLocalConfig } = await import('./config-
|
|
15337
|
+
const { readGeminiLocalConfig } = await import('./config-DKMwLc1k.mjs');
|
|
15280
15338
|
const config = readGeminiLocalConfig();
|
|
15281
15339
|
if (config.googleCloudProject) {
|
|
15282
15340
|
console.log(`Current Google Cloud Project: ${config.googleCloudProject}`);
|
|
@@ -15316,7 +15374,7 @@ Conversation history is preserved on the server, but in-flight tool calls are in
|
|
|
15316
15374
|
process.exit(0);
|
|
15317
15375
|
}
|
|
15318
15376
|
try {
|
|
15319
|
-
const { runGemini } = await import('./runGemini-
|
|
15377
|
+
const { runGemini } = await import('./runGemini-Bqs52hw_.mjs');
|
|
15320
15378
|
let startedBy = void 0;
|
|
15321
15379
|
for (let i = 1; i < args.length; i++) {
|
|
15322
15380
|
if (args[i] === "--started-by") {
|
|
@@ -15338,7 +15396,7 @@ Conversation history is preserved on the server, but in-flight tool calls are in
|
|
|
15338
15396
|
return;
|
|
15339
15397
|
} else if (subcommand === "acp") {
|
|
15340
15398
|
try {
|
|
15341
|
-
const { runAcp, resolveAcpAgentConfig } = await import('./index-
|
|
15399
|
+
const { runAcp, resolveAcpAgentConfig } = await import('./index-BXnHT-Wu.mjs');
|
|
15342
15400
|
let startedBy = void 0;
|
|
15343
15401
|
let verbose = false;
|
|
15344
15402
|
const acpArgs = [];
|
|
@@ -15378,7 +15436,7 @@ Conversation history is preserved on the server, but in-flight tool calls are in
|
|
|
15378
15436
|
return;
|
|
15379
15437
|
} else if (subcommand === "openclaw") {
|
|
15380
15438
|
try {
|
|
15381
|
-
const { runOpenClaw } = await import('./runOpenClaw-
|
|
15439
|
+
const { runOpenClaw } = await import('./runOpenClaw-CpbsQ7NZ.mjs');
|
|
15382
15440
|
let startedBy = void 0;
|
|
15383
15441
|
let verbose = false;
|
|
15384
15442
|
let gatewayUrl;
|
|
@@ -15429,7 +15487,7 @@ Conversation history is preserved on the server, but in-flight tool calls are in
|
|
|
15429
15487
|
return;
|
|
15430
15488
|
} else if (subcommand === "mcp" && args.length === 1) {
|
|
15431
15489
|
try {
|
|
15432
|
-
const { handleMcpCommand } = await import('./mcp-
|
|
15490
|
+
const { handleMcpCommand } = await import('./mcp-DY17lhMH.mjs');
|
|
15433
15491
|
await handleMcpCommand();
|
|
15434
15492
|
} catch (error) {
|
|
15435
15493
|
process.stderr.write(`[very-happy mcp] Fatal: ${error instanceof Error ? error.message : String(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 persistence = require('./types-
|
|
6
|
+
var persistence = require('./types-D4bwyM-D.cjs');
|
|
7
7
|
var spawn = require('cross-spawn');
|
|
8
8
|
var path = require('node:path');
|
|
9
9
|
var node_readline = require('node:readline');
|
|
@@ -6850,6 +6850,29 @@ async function handleResumeCommand(args) {
|
|
|
6850
6850
|
}
|
|
6851
6851
|
}
|
|
6852
6852
|
|
|
6853
|
+
function str(value) {
|
|
6854
|
+
return typeof value === "string" && value.length > 0 ? value : void 0;
|
|
6855
|
+
}
|
|
6856
|
+
function bareHost(host) {
|
|
6857
|
+
return host.endsWith("-dev") ? host.slice(0, -"-dev".length) : host;
|
|
6858
|
+
}
|
|
6859
|
+
function detectMachineIdentityConflict(recorded, current) {
|
|
6860
|
+
if (!recorded) return null;
|
|
6861
|
+
const recordedFacts = { host: str(recorded.host), platform: str(recorded.platform), homeDir: str(recorded.homeDir) };
|
|
6862
|
+
const fields = [];
|
|
6863
|
+
if (recordedFacts.host && bareHost(recordedFacts.host) !== bareHost(current.host)) fields.push("host");
|
|
6864
|
+
if (recordedFacts.platform && recordedFacts.platform !== current.platform) fields.push("platform");
|
|
6865
|
+
if (recordedFacts.homeDir && recordedFacts.homeDir !== current.homeDir) fields.push("homeDir");
|
|
6866
|
+
if (fields.length === 0) return null;
|
|
6867
|
+
const strong = fields.some((field) => field !== "host");
|
|
6868
|
+
return { confidence: strong ? "strong" : "weak", fields, recorded: recordedFacts, current };
|
|
6869
|
+
}
|
|
6870
|
+
function describeMachineIdentityConflict(conflict) {
|
|
6871
|
+
const diffs = conflict.fields.map((field) => `${field}: recorded=${conflict.recorded[field] ?? "?"} current=${conflict.current[field]}`).join(", ");
|
|
6872
|
+
const cause = conflict.confidence === "strong" ? "This machine id is registered to a different machine \u2014 ~/.happy was almost certainly copied here." : "This machine id is registered under a different hostname. If you renamed this host, ignore this; otherwise ~/.happy was copied here.";
|
|
6873
|
+
return `${cause} Two daemons sharing one machine id fight over the same machine row, and a copied ~/.claude/.credentials.json makes them invalidate each other's Claude login. Fix: run 'very-happy auth login --force' on this machine (it mints a fresh machine id), then log in to Claude here separately with 'claude'. (${diffs})`;
|
|
6874
|
+
}
|
|
6875
|
+
|
|
6853
6876
|
const CLAUDE_KEYCHAIN_SERVICE_PREFIX = "Claude Code";
|
|
6854
6877
|
function keychainIdentity(env = process.env, deps = {}) {
|
|
6855
6878
|
const home = deps.home ?? os.homedir();
|
|
@@ -6913,7 +6936,7 @@ function parseJsonObject(text) {
|
|
|
6913
6936
|
return null;
|
|
6914
6937
|
}
|
|
6915
6938
|
}
|
|
6916
|
-
function resolveSdkClaudeBinary(platform = process.platform, arch = process.arch, resolver = (s) => node_module.createRequire((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('index-
|
|
6939
|
+
function resolveSdkClaudeBinary(platform = process.platform, arch = process.arch, resolver = (s) => node_module.createRequire((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('index-DM0Ku1Rv.cjs', document.baseURI).href))).resolve(s)) {
|
|
6917
6940
|
const platformArch = `${platform}-${arch}`;
|
|
6918
6941
|
const candidates = [
|
|
6919
6942
|
`@anthropic-ai/claude-agent-sdk-${platformArch}/claude`,
|
|
@@ -6956,6 +6979,7 @@ function interpretCredentialsFile(text) {
|
|
|
6956
6979
|
function tokenTail(token) {
|
|
6957
6980
|
return token ? node_crypto.createHash("sha256").update(token).digest("hex").slice(-6) : "";
|
|
6958
6981
|
}
|
|
6982
|
+
const CREDENTIALS_REJECTED_DETAIL = "Credentials exist but Claude Code rejects them in the daemon context \u2014 the refresh token has most likely been rotated away by another store or another machine using the same credentials. Log in again with `claude` on this machine.";
|
|
6959
6983
|
function diagnoseStores(input) {
|
|
6960
6984
|
const { status, keychain, file } = input;
|
|
6961
6985
|
if (keychain.kind === "present") {
|
|
@@ -6980,7 +7004,7 @@ function diagnoseStores(input) {
|
|
|
6980
7004
|
return { diagnosis: "no-credentials", detail: "No Claude Code credentials found for this daemon context; log in with `claude` on this machine." };
|
|
6981
7005
|
}
|
|
6982
7006
|
if (keychain.kind === "unreadable" && file.hasTokens && status === "not-logged-in") {
|
|
6983
|
-
return {
|
|
7007
|
+
return { diagnosis: "credentials-rejected", detail: CREDENTIALS_REJECTED_DETAIL };
|
|
6984
7008
|
}
|
|
6985
7009
|
if (keychain.kind === "error") {
|
|
6986
7010
|
return { detail: `keychain check failed: ${keychain.detail}` };
|
|
@@ -7152,9 +7176,16 @@ class ClaudeAuthService {
|
|
|
7152
7176
|
if (this.platform === "darwin" && store !== "file" && (classification.status === "not-logged-in" || withDiagnosis && classification.status !== "unknown")) {
|
|
7153
7177
|
diagnosis = await this.diagnose(classification.status);
|
|
7154
7178
|
this.lastDiagnosis = diagnosis;
|
|
7155
|
-
} else if (classification.status === "not-logged-in"
|
|
7179
|
+
} else if (classification.status === "not-logged-in") {
|
|
7156
7180
|
const file = interpretCredentialsFile(this.readCredentialsFile());
|
|
7157
|
-
if (!file.hasTokens)
|
|
7181
|
+
if (!file.hasTokens) {
|
|
7182
|
+
diagnosis = {
|
|
7183
|
+
diagnosis: "no-credentials",
|
|
7184
|
+
detail: store === "file" ? "credentialStore=file and ~/.claude/.credentials.json has no tokens; log in with `claude` from a terminal on this machine." : "No Claude Code credentials found for this daemon context; log in with `claude` on this machine."
|
|
7185
|
+
};
|
|
7186
|
+
} else {
|
|
7187
|
+
diagnosis = { diagnosis: "credentials-rejected", detail: CREDENTIALS_REJECTED_DETAIL };
|
|
7188
|
+
}
|
|
7158
7189
|
}
|
|
7159
7190
|
if (storeRequested === "file" && store === "auto") {
|
|
7160
7191
|
diagnosis = { ...diagnosis ?? {}, detail: `credentialStore=file requested but the keychain-off shim is missing under ${keychainOffShimDir(this.opts.happyLibDir)}; running in auto mode.` };
|
|
@@ -8256,6 +8287,9 @@ async function startDaemon() {
|
|
|
8256
8287
|
cwd: assistantHome(),
|
|
8257
8288
|
env: {
|
|
8258
8289
|
...process.env,
|
|
8290
|
+
// B-297: see the resume/restart paths — every spawn carries the
|
|
8291
|
+
// credentialStore=file shim, not just fresh sessions (B-276 D8).
|
|
8292
|
+
...claudeAuthServiceRef?.claudeProcessEnvOverrides() ?? {},
|
|
8259
8293
|
HAPPY_SESSION_VARIANT: "assistant",
|
|
8260
8294
|
HAPPY_RECONNECT_SESSION_ID: assistantSessionId,
|
|
8261
8295
|
HAPPY_RECONNECT_ENCRYPTION_KEY: s.encryptionKey,
|
|
@@ -8706,6 +8740,11 @@ async function startDaemon() {
|
|
|
8706
8740
|
cwd: launch.cwd,
|
|
8707
8741
|
env: {
|
|
8708
8742
|
...process.env,
|
|
8743
|
+
// B-297: the credentialStore=file shim must ride every spawn path,
|
|
8744
|
+
// not just fresh sessions — a resumed/restarted wrapper that silently
|
|
8745
|
+
// fell back to `auto` reads a different credential store than the
|
|
8746
|
+
// fresh one next to it (B-276 D8).
|
|
8747
|
+
...claudeAuthServiceRef?.claudeProcessEnvOverrides() ?? {},
|
|
8709
8748
|
HAPPY_RECONNECT_SESSION_ID: happySessionId,
|
|
8710
8749
|
HAPPY_RECONNECT_ENCRYPTION_KEY: persistence.encodeBase64(tracked.encryption.encryptionKey),
|
|
8711
8750
|
HAPPY_RECONNECT_ENCRYPTION_VARIANT: tracked.encryption.encryptionVariant,
|
|
@@ -8832,6 +8871,11 @@ async function startDaemon() {
|
|
|
8832
8871
|
cwd,
|
|
8833
8872
|
env: {
|
|
8834
8873
|
...process.env,
|
|
8874
|
+
// B-297: the credentialStore=file shim must ride every spawn path,
|
|
8875
|
+
// not just fresh sessions — a resumed/restarted wrapper that silently
|
|
8876
|
+
// fell back to `auto` reads a different credential store than the
|
|
8877
|
+
// fresh one next to it (B-276 D8).
|
|
8878
|
+
...claudeAuthServiceRef?.claudeProcessEnvOverrides() ?? {},
|
|
8835
8879
|
HAPPY_RECONNECT_SESSION_ID: happySessionId,
|
|
8836
8880
|
HAPPY_RECONNECT_ENCRYPTION_KEY: persistence.encodeBase64(tracked.encryption.encryptionKey),
|
|
8837
8881
|
HAPPY_RECONNECT_ENCRYPTION_VARIANT: tracked.encryption.encryptionVariant,
|
|
@@ -9001,6 +9045,14 @@ async function startDaemon() {
|
|
|
9001
9045
|
daemonState: initialDaemonState
|
|
9002
9046
|
});
|
|
9003
9047
|
persistence.logger.debug(`[DAEMON RUN] Machine registered: ${machine.id}`);
|
|
9048
|
+
const identityConflict = detectMachineIdentityConflict(machine.metadata, {
|
|
9049
|
+
host: initialMachineMetadata.host,
|
|
9050
|
+
platform: initialMachineMetadata.platform,
|
|
9051
|
+
homeDir: initialMachineMetadata.homeDir
|
|
9052
|
+
});
|
|
9053
|
+
if (identityConflict) {
|
|
9054
|
+
persistence.logger.warn(`[DAEMON RUN] machine identity conflict (${identityConflict.confidence}): ${describeMachineIdentityConflict(identityConflict)}`);
|
|
9055
|
+
}
|
|
9004
9056
|
const apiMachine = api.machineSyncClient(machine);
|
|
9005
9057
|
apiMachineRef = apiMachine;
|
|
9006
9058
|
const mirrorManager = createMirrorManager({
|
|
@@ -9047,6 +9099,12 @@ async function startDaemon() {
|
|
|
9047
9099
|
});
|
|
9048
9100
|
claudeAuthService.start();
|
|
9049
9101
|
apiMachine.connect();
|
|
9102
|
+
if (identityConflict?.confidence === "weak") {
|
|
9103
|
+
void apiMachine.updateMachineMetadata((current) => ({
|
|
9104
|
+
...current ?? initialMachineMetadata,
|
|
9105
|
+
host: initialMachineMetadata.host
|
|
9106
|
+
})).then(() => persistence.logger.debug(`[DAEMON RUN] claimed the machine record for host ${initialMachineMetadata.host}`)).catch((error) => persistence.logger.debug("[DAEMON RUN] could not refresh the recorded host:", error));
|
|
9107
|
+
}
|
|
9050
9108
|
let cliUpdateCheckRunning = false;
|
|
9051
9109
|
const refreshCliUpdate = async () => {
|
|
9052
9110
|
if (cliUpdateCheckRunning) return;
|
|
@@ -10202,7 +10260,7 @@ function registerSideQuestionHandler(rpc, deps) {
|
|
|
10202
10260
|
const retainMs = deps.retainMs ?? SIDE_QUESTION_RETAIN_MS;
|
|
10203
10261
|
const maxRunMs = deps.maxRunMs ?? SIDE_QUESTION_MAX_RUN_MS;
|
|
10204
10262
|
const run = deps.run ?? (async (input) => {
|
|
10205
|
-
const { query } = await Promise.resolve().then(function () { return require('./index-
|
|
10263
|
+
const { query } = await Promise.resolve().then(function () { return require('./index-C7N-ONU_.cjs'); });
|
|
10206
10264
|
return runSideQuestion(query, input);
|
|
10207
10265
|
});
|
|
10208
10266
|
const slots = /* @__PURE__ */ new Map();
|
|
@@ -10304,7 +10362,7 @@ const MAX_TITLE_CHARS = 60;
|
|
|
10304
10362
|
const GENERATION_TIMEOUT_MS = 3e4;
|
|
10305
10363
|
function resolveClaudeBinary() {
|
|
10306
10364
|
try {
|
|
10307
|
-
const require$1 = node_module.createRequire((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('index-
|
|
10365
|
+
const require$1 = node_module.createRequire((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('index-DM0Ku1Rv.cjs', document.baseURI).href)));
|
|
10308
10366
|
const utilsPath = path.resolve(path.join(persistence.projectPath(), "scripts", "claude_version_utils.cjs"));
|
|
10309
10367
|
const { getClaudeCliPath } = require$1(utilsPath);
|
|
10310
10368
|
const path$1 = getClaudeCliPath();
|
|
@@ -12504,9 +12562,9 @@ function resolveLocalSignupBootstrap(configuredMode, configuredInviteCodes, gene
|
|
|
12504
12562
|
};
|
|
12505
12563
|
}
|
|
12506
12564
|
|
|
12507
|
-
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-
|
|
12565
|
+
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-DM0Ku1Rv.cjs', document.baseURI).href)));
|
|
12508
12566
|
const __dirname$1 = path.dirname(__filename$1);
|
|
12509
|
-
const require_ = node_module.createRequire((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('index-
|
|
12567
|
+
const require_ = node_module.createRequire((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('index-DM0Ku1Rv.cjs', document.baseURI).href)));
|
|
12510
12568
|
const PRISMA_QUERY_ENGINE_FILES = {
|
|
12511
12569
|
"arm64-darwin": "libquery_engine-darwin-arm64.dylib.node",
|
|
12512
12570
|
"x64-darwin": "libquery_engine-darwin.dylib.node",
|
|
@@ -15130,7 +15188,7 @@ Conversation history is preserved on the server, but in-flight tool calls are in
|
|
|
15130
15188
|
process.exit(0);
|
|
15131
15189
|
} else if (subcommand === "install-terminal-hooks") {
|
|
15132
15190
|
try {
|
|
15133
|
-
const { installTerminalHooks, parseTerminalHooksArgs, TERMINAL_HOOKS_HELP } = await Promise.resolve().then(function () { return require('./installTerminalHooks-
|
|
15191
|
+
const { installTerminalHooks, parseTerminalHooksArgs, TERMINAL_HOOKS_HELP } = await Promise.resolve().then(function () { return require('./installTerminalHooks-BpvWmkZ9.cjs'); });
|
|
15134
15192
|
const command = parseTerminalHooksArgs(args.slice(1));
|
|
15135
15193
|
if (command.action === "help") {
|
|
15136
15194
|
console.log(TERMINAL_HOOKS_HELP);
|
|
@@ -15147,7 +15205,7 @@ Conversation history is preserved on the server, but in-flight tool calls are in
|
|
|
15147
15205
|
}
|
|
15148
15206
|
} else if (subcommand === "spawn") {
|
|
15149
15207
|
try {
|
|
15150
|
-
const { handleSpawnCommand } = await Promise.resolve().then(function () { return require('./spawn-
|
|
15208
|
+
const { handleSpawnCommand } = await Promise.resolve().then(function () { return require('./spawn-BXbVzbMs.cjs'); });
|
|
15151
15209
|
await handleSpawnCommand(args.slice(1));
|
|
15152
15210
|
} catch (error) {
|
|
15153
15211
|
console.error(chalk.red("Error:"), error instanceof Error ? error.message : "Unknown error");
|
|
@@ -15159,7 +15217,7 @@ Conversation history is preserved on the server, but in-flight tool calls are in
|
|
|
15159
15217
|
return;
|
|
15160
15218
|
} else if (subcommand === "send") {
|
|
15161
15219
|
try {
|
|
15162
|
-
const { handleSendCommand } = await Promise.resolve().then(function () { return require('./send-
|
|
15220
|
+
const { handleSendCommand } = await Promise.resolve().then(function () { return require('./send-CLdMBQ8e.cjs'); });
|
|
15163
15221
|
await handleSendCommand(args.slice(1));
|
|
15164
15222
|
} catch (error) {
|
|
15165
15223
|
console.error(chalk.red("Error:"), error instanceof Error ? error.message : "Unknown error");
|
|
@@ -15265,9 +15323,9 @@ Conversation history is preserved on the server, but in-flight tool calls are in
|
|
|
15265
15323
|
if (geminiSubcommand === "project" && args[2] === "set" && args[3]) {
|
|
15266
15324
|
const projectId = args[3];
|
|
15267
15325
|
try {
|
|
15268
|
-
const { saveGoogleCloudProjectToConfig } = await Promise.resolve().then(function () { return require('./config-
|
|
15269
|
-
const { readCredentialsForConfiguredRelay: readCredentialsForConfiguredRelay2 } = await Promise.resolve().then(function () { return require('./types-
|
|
15270
|
-
const { ApiClient: ApiClient2 } = await Promise.resolve().then(function () { return require('./types-
|
|
15326
|
+
const { saveGoogleCloudProjectToConfig } = await Promise.resolve().then(function () { return require('./config-BvVwprR0.cjs'); });
|
|
15327
|
+
const { readCredentialsForConfiguredRelay: readCredentialsForConfiguredRelay2 } = await Promise.resolve().then(function () { return require('./types-D4bwyM-D.cjs'); }).then(function (n) { return n.persistence; });
|
|
15328
|
+
const { ApiClient: ApiClient2 } = await Promise.resolve().then(function () { return require('./types-D4bwyM-D.cjs'); }).then(function (n) { return n.api; });
|
|
15271
15329
|
let userEmail = void 0;
|
|
15272
15330
|
try {
|
|
15273
15331
|
const credentials = await readCredentialsForConfiguredRelay2();
|
|
@@ -15298,7 +15356,7 @@ Conversation history is preserved on the server, but in-flight tool calls are in
|
|
|
15298
15356
|
}
|
|
15299
15357
|
if (geminiSubcommand === "project" && args[2] === "get") {
|
|
15300
15358
|
try {
|
|
15301
|
-
const { readGeminiLocalConfig } = await Promise.resolve().then(function () { return require('./config-
|
|
15359
|
+
const { readGeminiLocalConfig } = await Promise.resolve().then(function () { return require('./config-BvVwprR0.cjs'); });
|
|
15302
15360
|
const config = readGeminiLocalConfig();
|
|
15303
15361
|
if (config.googleCloudProject) {
|
|
15304
15362
|
console.log(`Current Google Cloud Project: ${config.googleCloudProject}`);
|
|
@@ -15338,7 +15396,7 @@ Conversation history is preserved on the server, but in-flight tool calls are in
|
|
|
15338
15396
|
process.exit(0);
|
|
15339
15397
|
}
|
|
15340
15398
|
try {
|
|
15341
|
-
const { runGemini } = await Promise.resolve().then(function () { return require('./runGemini-
|
|
15399
|
+
const { runGemini } = await Promise.resolve().then(function () { return require('./runGemini-B3Mme1zr.cjs'); });
|
|
15342
15400
|
let startedBy = void 0;
|
|
15343
15401
|
for (let i = 1; i < args.length; i++) {
|
|
15344
15402
|
if (args[i] === "--started-by") {
|
|
@@ -15360,7 +15418,7 @@ Conversation history is preserved on the server, but in-flight tool calls are in
|
|
|
15360
15418
|
return;
|
|
15361
15419
|
} else if (subcommand === "acp") {
|
|
15362
15420
|
try {
|
|
15363
|
-
const { runAcp, resolveAcpAgentConfig } = await Promise.resolve().then(function () { return require('./index-
|
|
15421
|
+
const { runAcp, resolveAcpAgentConfig } = await Promise.resolve().then(function () { return require('./index-Db5m34eh.cjs'); });
|
|
15364
15422
|
let startedBy = void 0;
|
|
15365
15423
|
let verbose = false;
|
|
15366
15424
|
const acpArgs = [];
|
|
@@ -15400,7 +15458,7 @@ Conversation history is preserved on the server, but in-flight tool calls are in
|
|
|
15400
15458
|
return;
|
|
15401
15459
|
} else if (subcommand === "openclaw") {
|
|
15402
15460
|
try {
|
|
15403
|
-
const { runOpenClaw } = await Promise.resolve().then(function () { return require('./runOpenClaw-
|
|
15461
|
+
const { runOpenClaw } = await Promise.resolve().then(function () { return require('./runOpenClaw-B2V9j9Le.cjs'); });
|
|
15404
15462
|
let startedBy = void 0;
|
|
15405
15463
|
let verbose = false;
|
|
15406
15464
|
let gatewayUrl;
|
|
@@ -15451,7 +15509,7 @@ Conversation history is preserved on the server, but in-flight tool calls are in
|
|
|
15451
15509
|
return;
|
|
15452
15510
|
} else if (subcommand === "mcp" && args.length === 1) {
|
|
15453
15511
|
try {
|
|
15454
|
-
const { handleMcpCommand } = await Promise.resolve().then(function () { return require('./mcp-
|
|
15512
|
+
const { handleMcpCommand } = await Promise.resolve().then(function () { return require('./mcp-rTSmj-tn.cjs'); });
|
|
15455
15513
|
await handleMcpCommand();
|
|
15456
15514
|
} catch (error) {
|
|
15457
15515
|
process.stderr.write(`[very-happy mcp] Fatal: ${error instanceof Error ? error.message : String(error)}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { q as query } from './index-
|
|
1
|
+
import { q as query } from './index-CzSv4d_S.mjs';
|
|
2
2
|
export { AbortError } from '@anthropic-ai/claude-agent-sdk';
|
|
3
3
|
import 'chalk';
|
|
4
4
|
import 'node:os';
|
|
5
5
|
import 'node:crypto';
|
|
6
|
-
import './types-
|
|
6
|
+
import './types-D0-nhvuW.mjs';
|
|
7
7
|
import 'axios';
|
|
8
8
|
import 'node:util';
|
|
9
9
|
import 'node:fs';
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var AcpBackend = require('./AcpBackend-
|
|
4
|
-
var persistence = require('./types-
|
|
5
|
-
var AcpSessionManager = require('./AcpSessionManager-
|
|
3
|
+
var AcpBackend = require('./AcpBackend-D4vV6SVl.cjs');
|
|
4
|
+
var persistence = require('./types-D4bwyM-D.cjs');
|
|
5
|
+
var AcpSessionManager = require('./AcpSessionManager-CPHDZ-nz.cjs');
|
|
6
6
|
var node_crypto = require('node:crypto');
|
|
7
7
|
var path = require('node:path');
|
|
8
|
-
var index = require('./index-
|
|
8
|
+
var index = require('./index-DM0Ku1Rv.cjs');
|
|
9
9
|
require('node:child_process');
|
|
10
10
|
require('@agentclientprotocol/sdk');
|
|
11
11
|
require('axios');
|
package/dist/index.cjs
CHANGED
package/dist/index.mjs
CHANGED
|
@@ -5,8 +5,8 @@ var path = require('node:path');
|
|
|
5
5
|
var os = require('node:os');
|
|
6
6
|
var node_child_process = require('node:child_process');
|
|
7
7
|
var chalk = require('chalk');
|
|
8
|
-
var persistence = require('./types-
|
|
9
|
-
var index = require('./index-
|
|
8
|
+
var persistence = require('./types-D4bwyM-D.cjs');
|
|
9
|
+
var index = require('./index-DM0Ku1Rv.cjs');
|
|
10
10
|
require('axios');
|
|
11
11
|
require('node:util');
|
|
12
12
|
require('node:fs/promises');
|
|
@@ -3,8 +3,8 @@ import { join, resolve } from 'node:path';
|
|
|
3
3
|
import { homedir } from 'node:os';
|
|
4
4
|
import { spawnSync } from 'node:child_process';
|
|
5
5
|
import chalk from 'chalk';
|
|
6
|
-
import { p as projectPath } from './types-
|
|
7
|
-
import { t as tmuxSupportsSessionEnv } from './index-
|
|
6
|
+
import { p as projectPath } from './types-D0-nhvuW.mjs';
|
|
7
|
+
import { t as tmuxSupportsSessionEnv } from './index-CzSv4d_S.mjs';
|
|
8
8
|
import 'axios';
|
|
9
9
|
import 'node:util';
|
|
10
10
|
import 'node:fs/promises';
|
package/dist/lib.cjs
CHANGED
package/dist/lib.d.cts
CHANGED
|
@@ -7,7 +7,7 @@ import { ExpoPushMessage } from 'expo-server-sdk';
|
|
|
7
7
|
|
|
8
8
|
declare const CLAUDE_AUTH_PROBE_VERSION: 1;
|
|
9
9
|
type ClaudeAuthStatus = 'ok' | 'not-logged-in' | 'unknown' | 'error' | 'claude-missing';
|
|
10
|
-
type ClaudeAuthDiagnosis = 'keychain-empty-item' | 'store-divergence' | 'no-credentials' | 'sdk-binary-missing' | 'probe-timeout' | 'probe-crash';
|
|
10
|
+
type ClaudeAuthDiagnosis = 'keychain-empty-item' | 'store-divergence' | 'no-credentials' | 'credentials-rejected' | 'sdk-binary-missing' | 'probe-timeout' | 'probe-crash';
|
|
11
11
|
type ClaudeAuthLineage = 'launchd' | 'inherited-env' | 'other';
|
|
12
12
|
type ClaudeCredentialStore = 'auto' | 'file';
|
|
13
13
|
interface ClaudeAuthState$1 {
|
package/dist/lib.d.mts
CHANGED
|
@@ -7,7 +7,7 @@ import { ExpoPushMessage } from 'expo-server-sdk';
|
|
|
7
7
|
|
|
8
8
|
declare const CLAUDE_AUTH_PROBE_VERSION: 1;
|
|
9
9
|
type ClaudeAuthStatus = 'ok' | 'not-logged-in' | 'unknown' | 'error' | 'claude-missing';
|
|
10
|
-
type ClaudeAuthDiagnosis = 'keychain-empty-item' | 'store-divergence' | 'no-credentials' | 'sdk-binary-missing' | 'probe-timeout' | 'probe-crash';
|
|
10
|
+
type ClaudeAuthDiagnosis = 'keychain-empty-item' | 'store-divergence' | 'no-credentials' | 'credentials-rejected' | 'sdk-binary-missing' | 'probe-timeout' | 'probe-crash';
|
|
11
11
|
type ClaudeAuthLineage = 'launchd' | 'inherited-env' | 'other';
|
|
12
12
|
type ClaudeCredentialStore = 'auto' | 'file';
|
|
13
13
|
interface ClaudeAuthState$1 {
|
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-D0-nhvuW.mjs';
|
|
2
2
|
import 'axios';
|
|
3
3
|
import 'chalk';
|
|
4
4
|
import 'node:util';
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
2
2
|
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
|
|
3
3
|
import { z } from 'zod';
|
|
4
|
-
import { p as pushClipboardViaDaemon } from './index-
|
|
4
|
+
import { p as pushClipboardViaDaemon } from './index-CzSv4d_S.mjs';
|
|
5
5
|
import { C as CLIPBOARD_TOOL_NAME, a as CLIPBOARD_TOOL_TITLE, b as CLIPBOARD_TOOL_DESCRIPTION, c as CLIPBOARD_MAX_BYTES } from './limits-CwFb5S2b.mjs';
|
|
6
|
-
import { l as logger } from './types-
|
|
6
|
+
import { l as logger } from './types-D0-nhvuW.mjs';
|
|
7
7
|
import 'chalk';
|
|
8
8
|
import 'node:os';
|
|
9
9
|
import 'node:crypto';
|
|
@@ -3,9 +3,9 @@
|
|
|
3
3
|
var mcp_js = require('@modelcontextprotocol/sdk/server/mcp.js');
|
|
4
4
|
var stdio_js = require('@modelcontextprotocol/sdk/server/stdio.js');
|
|
5
5
|
var z = require('zod');
|
|
6
|
-
var index = require('./index-
|
|
6
|
+
var index = require('./index-DM0Ku1Rv.cjs');
|
|
7
7
|
var limits = require('./limits-KdWKmwtH.cjs');
|
|
8
|
-
var persistence = require('./types-
|
|
8
|
+
var persistence = require('./types-D4bwyM-D.cjs');
|
|
9
9
|
require('chalk');
|
|
10
10
|
require('node:os');
|
|
11
11
|
require('node:crypto');
|
|
@@ -4,10 +4,10 @@ var ink = require('ink');
|
|
|
4
4
|
var React = require('react');
|
|
5
5
|
var node_crypto = require('node:crypto');
|
|
6
6
|
var path = require('node:path');
|
|
7
|
-
var persistence = require('./types-
|
|
8
|
-
var index = require('./index-
|
|
9
|
-
var AcpBackend = require('./AcpBackend-
|
|
10
|
-
var config = require('./config-
|
|
7
|
+
var persistence = require('./types-D4bwyM-D.cjs');
|
|
8
|
+
var index = require('./index-DM0Ku1Rv.cjs');
|
|
9
|
+
var AcpBackend = require('./AcpBackend-D4vV6SVl.cjs');
|
|
10
|
+
var config = require('./config-BvVwprR0.cjs');
|
|
11
11
|
require('axios');
|
|
12
12
|
require('chalk');
|
|
13
13
|
require('node:util');
|
|
@@ -2,10 +2,10 @@ import { useStdout, useInput, Box, Text, render } from 'ink';
|
|
|
2
2
|
import React, { useState, useRef, useEffect, useCallback } from 'react';
|
|
3
3
|
import { randomUUID } from 'node:crypto';
|
|
4
4
|
import { join } from 'node:path';
|
|
5
|
-
import { l as logger, h as connectionState, A as ApiClient, i as readSettings, e as errorLogMetadata, j as encodeBase64, p as projectPath, d as contentLogMetadata } from './types-
|
|
6
|
-
import { g as GEMINI_API_KEY_ENV, j as GOOGLE_API_KEY_ENV, G as GEMINI_MODEL_ENV, B as BasePermissionHandler, k as BaseReasoningProcessor, i as initialMachineMetadata, d as createSessionMetadata, e as setupOfflineReconnection, n as notifyDaemonSessionStarted, M as MessageQueue2, h as hashObject, l as MessageBuffer, C as CHANGE_TITLE_INSTRUCTION, r as registerKillSessionHandler, f as startHappyServer } from './index-
|
|
7
|
-
import { A as AcpBackend } from './AcpBackend-
|
|
8
|
-
import { readGeminiLocalConfig, determineGeminiModel, getGeminiModelSource, getInitialGeminiModel, saveGeminiModelToConfig } from './config-
|
|
5
|
+
import { l as logger, h as connectionState, A as ApiClient, i as readSettings, e as errorLogMetadata, j as encodeBase64, p as projectPath, d as contentLogMetadata } from './types-D0-nhvuW.mjs';
|
|
6
|
+
import { g as GEMINI_API_KEY_ENV, j as GOOGLE_API_KEY_ENV, G as GEMINI_MODEL_ENV, B as BasePermissionHandler, k as BaseReasoningProcessor, i as initialMachineMetadata, d as createSessionMetadata, e as setupOfflineReconnection, n as notifyDaemonSessionStarted, M as MessageQueue2, h as hashObject, l as MessageBuffer, C as CHANGE_TITLE_INSTRUCTION, r as registerKillSessionHandler, f as startHappyServer } from './index-CzSv4d_S.mjs';
|
|
7
|
+
import { A as AcpBackend } from './AcpBackend-DwR8rrkS.mjs';
|
|
8
|
+
import { readGeminiLocalConfig, determineGeminiModel, getGeminiModelSource, getInitialGeminiModel, saveGeminiModelToConfig } from './config-DKMwLc1k.mjs';
|
|
9
9
|
import 'axios';
|
|
10
10
|
import 'chalk';
|
|
11
11
|
import 'node:util';
|
|
@@ -5,9 +5,9 @@ var node_child_process = require('node:child_process');
|
|
|
5
5
|
var os = require('node:os');
|
|
6
6
|
var node_fs = require('node:fs');
|
|
7
7
|
var path = require('node:path');
|
|
8
|
-
var persistence = require('./types-
|
|
9
|
-
var AcpSessionManager = require('./AcpSessionManager-
|
|
10
|
-
var index = require('./index-
|
|
8
|
+
var persistence = require('./types-D4bwyM-D.cjs');
|
|
9
|
+
var AcpSessionManager = require('./AcpSessionManager-CPHDZ-nz.cjs');
|
|
10
|
+
var index = require('./index-DM0Ku1Rv.cjs');
|
|
11
11
|
var WebSocket = require('ws');
|
|
12
12
|
var ed = require('@noble/ed25519');
|
|
13
13
|
var sha2_js = require('@noble/hashes/sha2.js');
|
|
@@ -3,9 +3,9 @@ import { execFileSync } from 'node:child_process';
|
|
|
3
3
|
import os from 'node:os';
|
|
4
4
|
import { existsSync, readFileSync } from 'node:fs';
|
|
5
5
|
import { join } from 'node:path';
|
|
6
|
-
import { k as ensurePrivateDirectorySync, m as hardenPrivateFileSync, w as writePrivateFileSync, e as errorLogMetadata, d as contentLogMetadata, h as connectionState, A as ApiClient, i as readSettings, j as encodeBase64, l as logger, c as configuration } from './types-
|
|
7
|
-
import { A as AcpSessionManager } from './AcpSessionManager-
|
|
8
|
-
import { i as initialMachineMetadata, d as createSessionMetadata, e as setupOfflineReconnection, n as notifyDaemonSessionStarted, M as MessageQueue2, r as registerKillSessionHandler } from './index-
|
|
6
|
+
import { k as ensurePrivateDirectorySync, m as hardenPrivateFileSync, w as writePrivateFileSync, e as errorLogMetadata, d as contentLogMetadata, h as connectionState, A as ApiClient, i as readSettings, j as encodeBase64, l as logger, c as configuration } from './types-D0-nhvuW.mjs';
|
|
7
|
+
import { A as AcpSessionManager } from './AcpSessionManager-C057dkLF.mjs';
|
|
8
|
+
import { i as initialMachineMetadata, d as createSessionMetadata, e as setupOfflineReconnection, n as notifyDaemonSessionStarted, M as MessageQueue2, r as registerKillSessionHandler } from './index-CzSv4d_S.mjs';
|
|
9
9
|
import WebSocket from 'ws';
|
|
10
10
|
import * as ed from '@noble/ed25519';
|
|
11
11
|
import { sha512 } from '@noble/hashes/sha2.js';
|
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
var chalk = require('chalk');
|
|
4
4
|
var node_fs = require('node:fs');
|
|
5
5
|
var path = require('node:path');
|
|
6
|
-
var persistence = require('./types-
|
|
7
|
-
var index = require('./index-
|
|
6
|
+
var persistence = require('./types-D4bwyM-D.cjs');
|
|
7
|
+
var index = require('./index-DM0Ku1Rv.cjs');
|
|
8
8
|
require('axios');
|
|
9
9
|
require('node:util');
|
|
10
10
|
require('node:os');
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import chalk from 'chalk';
|
|
2
2
|
import { readFileSync } from 'node:fs';
|
|
3
3
|
import { resolve } from 'node:path';
|
|
4
|
-
import { r as readPersistedSessions, c as configuration } from './types-
|
|
5
|
-
import { b as sendUserMessage, a as sessionWebUrl } from './index-
|
|
4
|
+
import { r as readPersistedSessions, c as configuration } from './types-D0-nhvuW.mjs';
|
|
5
|
+
import { b as sendUserMessage, a as sessionWebUrl } from './index-CzSv4d_S.mjs';
|
|
6
6
|
import 'axios';
|
|
7
7
|
import 'node:util';
|
|
8
8
|
import 'node:os';
|
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
var chalk = require('chalk');
|
|
4
4
|
var node_fs = require('node:fs');
|
|
5
5
|
var path = require('node:path');
|
|
6
|
-
var index = require('./index-
|
|
7
|
-
var persistence = require('./types-
|
|
6
|
+
var index = require('./index-DM0Ku1Rv.cjs');
|
|
7
|
+
var persistence = require('./types-D4bwyM-D.cjs');
|
|
8
8
|
require('node:os');
|
|
9
9
|
require('node:crypto');
|
|
10
10
|
require('cross-spawn');
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import chalk from 'chalk';
|
|
2
2
|
import { readFileSync, statSync } from 'node:fs';
|
|
3
3
|
import { resolve } from 'node:path';
|
|
4
|
-
import { c as checkIfDaemonRunningAndCleanupStaleState, s as spawnDaemonSession, a as sessionWebUrl, w as waitForSessionKey, b as sendUserMessage } from './index-
|
|
5
|
-
import { l as logger } from './types-
|
|
4
|
+
import { c as checkIfDaemonRunningAndCleanupStaleState, s as spawnDaemonSession, a as sessionWebUrl, w as waitForSessionKey, b as sendUserMessage } from './index-CzSv4d_S.mjs';
|
|
5
|
+
import { l as logger } from './types-D0-nhvuW.mjs';
|
|
6
6
|
import 'node:os';
|
|
7
7
|
import 'node:crypto';
|
|
8
8
|
import 'cross-spawn';
|
|
@@ -29,7 +29,7 @@ import { SandboxManager } from '@anthropic-ai/sandbox-runtime';
|
|
|
29
29
|
import { Expo } from 'expo-server-sdk';
|
|
30
30
|
|
|
31
31
|
var name = "very-happy-cli";
|
|
32
|
-
var version = "0.2.
|
|
32
|
+
var version = "0.2.108";
|
|
33
33
|
var description = "Remote multi-agent workspace CLI with deep Claude integration, native terminal streaming, and self-hosting.";
|
|
34
34
|
var author = "Kirill Dubovitskiy";
|
|
35
35
|
var contributors = [
|
|
@@ -142,12 +142,12 @@ var dependencies = {
|
|
|
142
142
|
zod: "^4.0.0"
|
|
143
143
|
};
|
|
144
144
|
var optionalDependencies = {
|
|
145
|
-
"very-happy-tools-arm64-darwin": "0.2.
|
|
146
|
-
"very-happy-tools-x64-darwin": "0.2.
|
|
147
|
-
"very-happy-tools-arm64-linux": "0.2.
|
|
148
|
-
"very-happy-tools-x64-linux": "0.2.
|
|
149
|
-
"very-happy-tools-arm64-win32": "0.2.
|
|
150
|
-
"very-happy-tools-x64-win32": "0.2.
|
|
145
|
+
"very-happy-tools-arm64-darwin": "0.2.108",
|
|
146
|
+
"very-happy-tools-x64-darwin": "0.2.108",
|
|
147
|
+
"very-happy-tools-arm64-linux": "0.2.108",
|
|
148
|
+
"very-happy-tools-x64-linux": "0.2.108",
|
|
149
|
+
"very-happy-tools-arm64-win32": "0.2.108",
|
|
150
|
+
"very-happy-tools-x64-win32": "0.2.108"
|
|
151
151
|
};
|
|
152
152
|
var devDependencies = {
|
|
153
153
|
"@slopus/happy-wire": "workspace:*",
|
|
@@ -15936,7 +15936,10 @@ class ApiClient {
|
|
|
15936
15936
|
` \u2192 This usually happens after re-authenticating with a different account`
|
|
15937
15937
|
));
|
|
15938
15938
|
console.log(chalk.yellow(
|
|
15939
|
-
|
|
15939
|
+
// B-297: `doctor clean` only kills processes — it has never reset local
|
|
15940
|
+
// state or minted a machine id. `auth login --force` is the command
|
|
15941
|
+
// that does (it regenerates machineId, src/ui/auth.ts).
|
|
15942
|
+
` \u2192 Run 'very-happy auth login --force' to re-authenticate and generate a new machine ID`
|
|
15940
15943
|
));
|
|
15941
15944
|
console.log(chalk.yellow(
|
|
15942
15945
|
` \u2192 Open a GitHub issue if this problem persists`
|
|
@@ -51,7 +51,7 @@ var z__namespace = /*#__PURE__*/_interopNamespaceDefault(z);
|
|
|
51
51
|
var pty__namespace = /*#__PURE__*/_interopNamespaceDefault(pty);
|
|
52
52
|
|
|
53
53
|
var name = "very-happy-cli";
|
|
54
|
-
var version = "0.2.
|
|
54
|
+
var version = "0.2.108";
|
|
55
55
|
var description = "Remote multi-agent workspace CLI with deep Claude integration, native terminal streaming, and self-hosting.";
|
|
56
56
|
var author = "Kirill Dubovitskiy";
|
|
57
57
|
var contributors = [
|
|
@@ -164,12 +164,12 @@ var dependencies = {
|
|
|
164
164
|
zod: "^4.0.0"
|
|
165
165
|
};
|
|
166
166
|
var optionalDependencies = {
|
|
167
|
-
"very-happy-tools-arm64-darwin": "0.2.
|
|
168
|
-
"very-happy-tools-x64-darwin": "0.2.
|
|
169
|
-
"very-happy-tools-arm64-linux": "0.2.
|
|
170
|
-
"very-happy-tools-x64-linux": "0.2.
|
|
171
|
-
"very-happy-tools-arm64-win32": "0.2.
|
|
172
|
-
"very-happy-tools-x64-win32": "0.2.
|
|
167
|
+
"very-happy-tools-arm64-darwin": "0.2.108",
|
|
168
|
+
"very-happy-tools-x64-darwin": "0.2.108",
|
|
169
|
+
"very-happy-tools-arm64-linux": "0.2.108",
|
|
170
|
+
"very-happy-tools-x64-linux": "0.2.108",
|
|
171
|
+
"very-happy-tools-arm64-win32": "0.2.108",
|
|
172
|
+
"very-happy-tools-x64-win32": "0.2.108"
|
|
173
173
|
};
|
|
174
174
|
var devDependencies = {
|
|
175
175
|
"@slopus/happy-wire": "workspace:*",
|
|
@@ -1603,7 +1603,7 @@ class RpcHandlerManager {
|
|
|
1603
1603
|
}
|
|
1604
1604
|
}
|
|
1605
1605
|
|
|
1606
|
-
const __dirname$1 = path$1.dirname(url.fileURLToPath((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('types-
|
|
1606
|
+
const __dirname$1 = path$1.dirname(url.fileURLToPath((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('types-D4bwyM-D.cjs', document.baseURI).href))));
|
|
1607
1607
|
function projectPath() {
|
|
1608
1608
|
const path = path$1.resolve(__dirname$1, "..");
|
|
1609
1609
|
return path;
|
|
@@ -15958,7 +15958,10 @@ class ApiClient {
|
|
|
15958
15958
|
` \u2192 This usually happens after re-authenticating with a different account`
|
|
15959
15959
|
));
|
|
15960
15960
|
console.log(chalk.yellow(
|
|
15961
|
-
|
|
15961
|
+
// B-297: `doctor clean` only kills processes — it has never reset local
|
|
15962
|
+
// state or minted a machine id. `auth login --force` is the command
|
|
15963
|
+
// that does (it regenerates machineId, src/ui/auth.ts).
|
|
15964
|
+
` \u2192 Run 'very-happy auth login --force' to re-authenticate and generate a new machine ID`
|
|
15962
15965
|
));
|
|
15963
15966
|
console.log(chalk.yellow(
|
|
15964
15967
|
` \u2192 Open a GitHub issue if this problem persists`
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "very-happy-cli",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.108",
|
|
4
4
|
"description": "Remote multi-agent workspace CLI with deep Claude integration, native terminal streaming, and self-hosting.",
|
|
5
5
|
"author": "Kirill Dubovitskiy",
|
|
6
6
|
"contributors": [
|
|
@@ -113,12 +113,12 @@
|
|
|
113
113
|
"zod": "^4.0.0"
|
|
114
114
|
},
|
|
115
115
|
"optionalDependencies": {
|
|
116
|
-
"very-happy-tools-arm64-darwin": "0.2.
|
|
117
|
-
"very-happy-tools-x64-darwin": "0.2.
|
|
118
|
-
"very-happy-tools-arm64-linux": "0.2.
|
|
119
|
-
"very-happy-tools-x64-linux": "0.2.
|
|
120
|
-
"very-happy-tools-arm64-win32": "0.2.
|
|
121
|
-
"very-happy-tools-x64-win32": "0.2.
|
|
116
|
+
"very-happy-tools-arm64-darwin": "0.2.108",
|
|
117
|
+
"very-happy-tools-x64-darwin": "0.2.108",
|
|
118
|
+
"very-happy-tools-arm64-linux": "0.2.108",
|
|
119
|
+
"very-happy-tools-x64-linux": "0.2.108",
|
|
120
|
+
"very-happy-tools-arm64-win32": "0.2.108",
|
|
121
|
+
"very-happy-tools-x64-win32": "0.2.108"
|
|
122
122
|
},
|
|
123
123
|
"devDependencies": {
|
|
124
124
|
"@slopus/happy-wire": "workspace:*",
|