zenflo 0.11.17 → 0.12.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -2
- package/bin/zenflo-mcp.mjs +2 -2
- package/dist/{index-Cq3BnI2T.mjs → index-BmkLkj0P.mjs} +65 -66
- package/dist/{index-DorsFBUD.cjs → index-LeMT1COL.cjs} +67 -68
- package/dist/index.cjs +2 -2
- package/dist/index.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/{runCCR-CGH5HTKg.cjs → runCCR-CokU0NUY.cjs} +2 -2
- package/dist/{runCCR-Dlh0bRKi.mjs → runCCR-DHyrfvNo.mjs} +2 -2
- package/dist/{runCodex-iG8dNNS8.cjs → runCodex-BED95lb3.cjs} +3 -3
- package/dist/{runCodex-8gWeehcl.mjs → runCodex-DU0XMdXX.mjs} +3 -3
- package/dist/{status-CmPaH0SP.cjs → status-6nX5obxE.cjs} +1 -1
- package/dist/{status-0SavEMdm.cjs → status-CES2ft-F.cjs} +1 -1
- package/dist/{status-BXVKEnXX.cjs → status-DUnHkBDq.cjs} +1 -1
- package/dist/{status-Df-Nf8Eh.mjs → status-DcMExT1x.mjs} +1 -1
- package/dist/{status-CImKlTHF.mjs → status-DgMMF-7E.mjs} +1 -1
- package/dist/{status-DZYEDjQb.mjs → status-VT6VbsEc.mjs} +1 -1
- package/dist/{types-BZBppaDC.mjs → types-Bm-nJvHk.mjs} +2 -2
- package/dist/{types-DlbOjNGw.cjs → types-C0K47bQB.cjs} +3 -3
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -429,8 +429,7 @@ MIT License - See [LICENSE](../LICENSE) for details.
|
|
|
429
429
|
|
|
430
430
|
## 🙏 Acknowledgments
|
|
431
431
|
|
|
432
|
-
-
|
|
433
|
-
- Inspired by [Happy](https://github.com/slopus/happy) by slopus
|
|
432
|
+
- Powered by [Anthropic Claude](https://www.anthropic.com/)
|
|
434
433
|
- Icons from [Claude Code](https://claude.ai/code)
|
|
435
434
|
|
|
436
435
|
---
|
package/bin/zenflo-mcp.mjs
CHANGED
|
@@ -10,7 +10,7 @@ const hasNoDeprecation = process.execArgv.includes('--no-deprecation');
|
|
|
10
10
|
|
|
11
11
|
if (!hasNoWarnings || !hasNoDeprecation) {
|
|
12
12
|
const projectRoot = dirname(dirname(fileURLToPath(import.meta.url)));
|
|
13
|
-
const entrypoint = join(projectRoot, 'dist', 'codex', '
|
|
13
|
+
const entrypoint = join(projectRoot, 'dist', 'codex', 'zenfloMcpStdioBridge.mjs');
|
|
14
14
|
|
|
15
15
|
try {
|
|
16
16
|
execFileSync(process.execPath, [
|
|
@@ -27,6 +27,6 @@ if (!hasNoWarnings || !hasNoDeprecation) {
|
|
|
27
27
|
}
|
|
28
28
|
} else {
|
|
29
29
|
// Already have desired flags; import module directly
|
|
30
|
-
import('../dist/codex/
|
|
30
|
+
import('../dist/codex/zenfloMcpStdioBridge.mjs');
|
|
31
31
|
}
|
|
32
32
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import chalk from 'chalk';
|
|
2
2
|
import os$1, { homedir } from 'node:os';
|
|
3
3
|
import { randomUUID, randomBytes } from 'node:crypto';
|
|
4
|
-
import { l as logger, p as projectPath, e as backoff, f as delay, R as RawJSONLinesSchema, g as AsyncLock, c as configuration, r as readDaemonState, h as clearDaemonState, d as packageJson, b as readSettings, i as readCredentials, j as encodeBase64, u as updateSettings, k as encodeBase64Url, m as decodeBase64, w as writeCredentialsLegacy, n as writeCredentialsDataKey, o as acquireDaemonLock, q as writeDaemonState, A as ApiClient, s as releaseDaemonLock, t as clearCredentials, v as clearMachineId, x as getLatestDaemonLog } from './types-
|
|
4
|
+
import { l as logger, p as projectPath, e as backoff, f as delay, R as RawJSONLinesSchema, g as AsyncLock, c as configuration, r as readDaemonState, h as clearDaemonState, d as packageJson, b as readSettings, i as readCredentials, j as encodeBase64, u as updateSettings, k as encodeBase64Url, m as decodeBase64, w as writeCredentialsLegacy, n as writeCredentialsDataKey, o as acquireDaemonLock, q as writeDaemonState, A as ApiClient, s as releaseDaemonLock, t as clearCredentials, v as clearMachineId, x as getLatestDaemonLog } from './types-Bm-nJvHk.mjs';
|
|
5
5
|
import { spawn, execSync, execFileSync } from 'node:child_process';
|
|
6
6
|
import { resolve, join } from 'node:path';
|
|
7
7
|
import { createInterface } from 'node:readline';
|
|
@@ -3452,7 +3452,7 @@ async function checkIfDaemonRunningAndCleanupStaleState() {
|
|
|
3452
3452
|
return false;
|
|
3453
3453
|
}
|
|
3454
3454
|
}
|
|
3455
|
-
async function
|
|
3455
|
+
async function isDaemonRunningCurrentlyInstalledZenfloVersion() {
|
|
3456
3456
|
logger.debug("[DAEMON CONTROL] Checking if daemon is running same version");
|
|
3457
3457
|
const runningDaemon = await checkIfDaemonRunningAndCleanupStaleState();
|
|
3458
3458
|
if (!runningDaemon) {
|
|
@@ -3529,8 +3529,8 @@ async function findAllHappyProcesses() {
|
|
|
3529
3529
|
for (const proc of processes) {
|
|
3530
3530
|
const cmd = proc.cmd || "";
|
|
3531
3531
|
const name = proc.name || "";
|
|
3532
|
-
const
|
|
3533
|
-
if (!
|
|
3532
|
+
const isZenflo = name.includes("zenflo") || name === "node" && (cmd.includes("zenflo") || cmd.includes("dist/index.mjs")) || cmd.includes("zenflo.mjs") || cmd.includes("tsx") && cmd.includes("src/index.ts");
|
|
3533
|
+
if (!isZenflo) continue;
|
|
3534
3534
|
let type = "unknown";
|
|
3535
3535
|
if (proc.pid === process.pid) {
|
|
3536
3536
|
type = "current";
|
|
@@ -3560,7 +3560,7 @@ async function findRunawayHappyProcesses() {
|
|
|
3560
3560
|
(p) => p.pid !== process.pid && (p.type === "daemon" || p.type === "dev-daemon" || p.type === "daemon-spawned-session" || p.type === "dev-daemon-spawned" || p.type === "daemon-version-check" || p.type === "dev-daemon-version-check")
|
|
3561
3561
|
).map((p) => ({ pid: p.pid, command: p.command }));
|
|
3562
3562
|
}
|
|
3563
|
-
async function
|
|
3563
|
+
async function killRunawayZenfloProcesses() {
|
|
3564
3564
|
const runawayProcesses = await findRunawayHappyProcesses();
|
|
3565
3565
|
const errors = [];
|
|
3566
3566
|
let killed = 0;
|
|
@@ -3778,8 +3778,8 @@ ${typeLabels[type] || type}:`));
|
|
|
3778
3778
|
console.log(chalk.yellow("No log files found"));
|
|
3779
3779
|
}
|
|
3780
3780
|
console.log(chalk.bold("\n\u{1F41B} Support & Bug Reports"));
|
|
3781
|
-
console.log(`Report issues: ${chalk.blue("https://github.com/
|
|
3782
|
-
console.log(`Documentation: ${chalk.blue("https://
|
|
3781
|
+
console.log(`Report issues: ${chalk.blue("https://github.com/zenflo/zenflo/issues")}`);
|
|
3782
|
+
console.log(`Documentation: ${chalk.blue("https://zenflo.dev/docs")}`);
|
|
3783
3783
|
}
|
|
3784
3784
|
console.log(chalk.green("\n\u2705 Doctor diagnosis complete!\n"));
|
|
3785
3785
|
}
|
|
@@ -4286,7 +4286,7 @@ async function startDaemon() {
|
|
|
4286
4286
|
});
|
|
4287
4287
|
logger.debug("[DAEMON RUN] Starting daemon process...");
|
|
4288
4288
|
logger.debugLargeJson("[DAEMON RUN] Environment", getEnvironmentInfo());
|
|
4289
|
-
const runningDaemonVersionMatches = await
|
|
4289
|
+
const runningDaemonVersionMatches = await isDaemonRunningCurrentlyInstalledZenfloVersion();
|
|
4290
4290
|
if (!runningDaemonVersionMatches) {
|
|
4291
4291
|
logger.debug("[DAEMON RUN] Daemon version mismatch detected, restarting daemon with current CLI version");
|
|
4292
4292
|
await stopDaemon();
|
|
@@ -4782,7 +4782,7 @@ async function runClaude(credentials, options = {}) {
|
|
|
4782
4782
|
const settings = await readSettings();
|
|
4783
4783
|
let machineId = settings?.machineId;
|
|
4784
4784
|
if (!machineId) {
|
|
4785
|
-
console.error(`[START] No machine ID found in settings, which is
|
|
4785
|
+
console.error(`[START] No machine ID found in settings, which is unexpected since authAndSetupMachineIfNeeded should have created it. Please report this issue on https://github.com/zenflo/zenflo/issues`);
|
|
4786
4786
|
process.exit(1);
|
|
4787
4787
|
}
|
|
4788
4788
|
logger.debug(`Using machineId: ${machineId}`);
|
|
@@ -5598,14 +5598,14 @@ async function handleAuthCommand(args) {
|
|
|
5598
5598
|
}
|
|
5599
5599
|
function showAuthHelp() {
|
|
5600
5600
|
console.log(`
|
|
5601
|
-
${chalk.bold("
|
|
5601
|
+
${chalk.bold("zenflo auth")} - Authentication management
|
|
5602
5602
|
|
|
5603
5603
|
${chalk.bold("Usage:")}
|
|
5604
|
-
|
|
5605
|
-
|
|
5606
|
-
|
|
5607
|
-
|
|
5608
|
-
|
|
5604
|
+
zenflo auth login [--force] Authenticate with ZenFlo
|
|
5605
|
+
zenflo auth logout Remove authentication and machine data
|
|
5606
|
+
zenflo auth status Show authentication status
|
|
5607
|
+
zenflo auth show-backup Display backup key for mobile/web clients
|
|
5608
|
+
zenflo auth help Show this help message
|
|
5609
5609
|
|
|
5610
5610
|
${chalk.bold("Options:")}
|
|
5611
5611
|
--force Clear credentials, machine ID, and stop daemon before re-auth
|
|
@@ -5640,7 +5640,7 @@ async function handleAuthLogin(args) {
|
|
|
5640
5640
|
console.log(chalk.green("\u2713 Already authenticated"));
|
|
5641
5641
|
console.log(chalk.gray(` Machine ID: ${settings.machineId}`));
|
|
5642
5642
|
console.log(chalk.gray(` Host: ${os$1.hostname()}`));
|
|
5643
|
-
console.log(chalk.gray(` Use '
|
|
5643
|
+
console.log(chalk.gray(` Use 'zenflo auth login --force' to re-authenticate`));
|
|
5644
5644
|
return;
|
|
5645
5645
|
} else if (existingCreds && !settings?.machineId) {
|
|
5646
5646
|
console.log(chalk.yellow("\u26A0\uFE0F Credentials exist but machine ID is missing"));
|
|
@@ -5658,14 +5658,14 @@ async function handleAuthLogin(args) {
|
|
|
5658
5658
|
}
|
|
5659
5659
|
}
|
|
5660
5660
|
async function handleAuthLogout() {
|
|
5661
|
-
const
|
|
5661
|
+
const zenfloDir = configuration.zenfloHomeDir;
|
|
5662
5662
|
const credentials = await readCredentials();
|
|
5663
5663
|
if (!credentials) {
|
|
5664
5664
|
console.log(chalk.yellow("Not currently authenticated"));
|
|
5665
5665
|
return;
|
|
5666
5666
|
}
|
|
5667
|
-
console.log(chalk.blue("This will log you out of
|
|
5668
|
-
console.log(chalk.yellow("\u26A0\uFE0F You will need to re-authenticate to use
|
|
5667
|
+
console.log(chalk.blue("This will log you out of ZenFlo"));
|
|
5668
|
+
console.log(chalk.yellow("\u26A0\uFE0F You will need to re-authenticate to use ZenFlo again"));
|
|
5669
5669
|
const rl = createInterface({
|
|
5670
5670
|
input: process.stdin,
|
|
5671
5671
|
output: process.stdout
|
|
@@ -5681,11 +5681,11 @@ async function handleAuthLogout() {
|
|
|
5681
5681
|
console.log(chalk.gray("Stopped daemon"));
|
|
5682
5682
|
} catch {
|
|
5683
5683
|
}
|
|
5684
|
-
if (existsSync(
|
|
5685
|
-
rmSync(
|
|
5684
|
+
if (existsSync(zenfloDir)) {
|
|
5685
|
+
rmSync(zenfloDir, { recursive: true, force: true });
|
|
5686
5686
|
}
|
|
5687
5687
|
console.log(chalk.green("\u2713 Successfully logged out"));
|
|
5688
|
-
console.log(chalk.gray(' Run "
|
|
5688
|
+
console.log(chalk.gray(' Run "zenflo auth login" to authenticate again'));
|
|
5689
5689
|
} catch (error) {
|
|
5690
5690
|
throw new Error(`Failed to logout: ${error instanceof Error ? error.message : "Unknown error"}`);
|
|
5691
5691
|
}
|
|
@@ -5699,7 +5699,7 @@ async function handleAuthStatus() {
|
|
|
5699
5699
|
console.log(chalk.bold("\nAuthentication Status\n"));
|
|
5700
5700
|
if (!credentials) {
|
|
5701
5701
|
console.log(chalk.red("\u2717 Not authenticated"));
|
|
5702
|
-
console.log(chalk.gray(' Run "
|
|
5702
|
+
console.log(chalk.gray(' Run "zenflo auth login" to authenticate'));
|
|
5703
5703
|
return;
|
|
5704
5704
|
}
|
|
5705
5705
|
console.log(chalk.green("\u2713 Authenticated"));
|
|
@@ -5711,7 +5711,7 @@ async function handleAuthStatus() {
|
|
|
5711
5711
|
console.log(chalk.gray(` Host: ${os$1.hostname()}`));
|
|
5712
5712
|
} else {
|
|
5713
5713
|
console.log(chalk.yellow("\u26A0\uFE0F Machine not registered"));
|
|
5714
|
-
console.log(chalk.gray(' Run "
|
|
5714
|
+
console.log(chalk.gray(' Run "zenflo auth login --force" to fix this'));
|
|
5715
5715
|
}
|
|
5716
5716
|
console.log(chalk.gray(`
|
|
5717
5717
|
Data directory: ${configuration.zenfloHomeDir}`));
|
|
@@ -6291,7 +6291,7 @@ async function handleConnectVendor(vendor, displayName) {
|
|
|
6291
6291
|
const subcommand = args[0];
|
|
6292
6292
|
if (subcommand === "doctor") {
|
|
6293
6293
|
if (args[1] === "clean") {
|
|
6294
|
-
const result = await
|
|
6294
|
+
const result = await killRunawayZenfloProcesses();
|
|
6295
6295
|
console.log(`Cleaned up ${result.killed} runaway processes`);
|
|
6296
6296
|
if (result.errors.length > 0) {
|
|
6297
6297
|
console.log("Errors:", result.errors);
|
|
@@ -6324,7 +6324,7 @@ async function handleConnectVendor(vendor, displayName) {
|
|
|
6324
6324
|
return;
|
|
6325
6325
|
} else if (subcommand === "codex") {
|
|
6326
6326
|
try {
|
|
6327
|
-
const { runCodex } = await import('./runCodex-
|
|
6327
|
+
const { runCodex } = await import('./runCodex-DU0XMdXX.mjs');
|
|
6328
6328
|
let startedBy = void 0;
|
|
6329
6329
|
for (let i = 1; i < args.length; i++) {
|
|
6330
6330
|
if (args[i] === "--started-by") {
|
|
@@ -6345,7 +6345,7 @@ async function handleConnectVendor(vendor, displayName) {
|
|
|
6345
6345
|
return;
|
|
6346
6346
|
} else if (subcommand === "ccr" || subcommand === "glm") {
|
|
6347
6347
|
try {
|
|
6348
|
-
const { runCCR } = await import('./runCCR-
|
|
6348
|
+
const { runCCR } = await import('./runCCR-DHyrfvNo.mjs');
|
|
6349
6349
|
let startedBy = void 0;
|
|
6350
6350
|
for (let i = 1; i < args.length; i++) {
|
|
6351
6351
|
if (args[i] === "--started-by") {
|
|
@@ -6365,7 +6365,7 @@ async function handleConnectVendor(vendor, displayName) {
|
|
|
6365
6365
|
}
|
|
6366
6366
|
return;
|
|
6367
6367
|
} else if (subcommand === "logout") {
|
|
6368
|
-
console.log(chalk.yellow('Note: "
|
|
6368
|
+
console.log(chalk.yellow('Note: "zenflo logout" is deprecated. Use "zenflo auth logout" instead.\n'));
|
|
6369
6369
|
try {
|
|
6370
6370
|
await handleAuthCommand(["logout"]);
|
|
6371
6371
|
} catch (error) {
|
|
@@ -6448,13 +6448,13 @@ async function handleConnectVendor(vendor, displayName) {
|
|
|
6448
6448
|
let statusModule;
|
|
6449
6449
|
switch (process.platform) {
|
|
6450
6450
|
case "darwin":
|
|
6451
|
-
statusModule = await import('./status-
|
|
6451
|
+
statusModule = await import('./status-VT6VbsEc.mjs');
|
|
6452
6452
|
break;
|
|
6453
6453
|
case "win32":
|
|
6454
|
-
statusModule = await import('./status-
|
|
6454
|
+
statusModule = await import('./status-DcMExT1x.mjs');
|
|
6455
6455
|
break;
|
|
6456
6456
|
case "linux":
|
|
6457
|
-
statusModule = await import('./status-
|
|
6457
|
+
statusModule = await import('./status-DgMMF-7E.mjs');
|
|
6458
6458
|
break;
|
|
6459
6459
|
default:
|
|
6460
6460
|
console.error(chalk.red(`Status command not supported on platform: ${process.platform}`));
|
|
@@ -6490,20 +6490,20 @@ async function handleConnectVendor(vendor, displayName) {
|
|
|
6490
6490
|
}
|
|
6491
6491
|
} else {
|
|
6492
6492
|
console.log(`
|
|
6493
|
-
${chalk.bold("
|
|
6493
|
+
${chalk.bold("zenflo daemon")} - Daemon management
|
|
6494
6494
|
|
|
6495
6495
|
${chalk.bold("Usage:")}
|
|
6496
|
-
|
|
6497
|
-
|
|
6498
|
-
|
|
6499
|
-
|
|
6496
|
+
zenflo daemon start Start the daemon (detached)
|
|
6497
|
+
zenflo daemon stop Stop the daemon (sessions stay alive)
|
|
6498
|
+
zenflo daemon status Show daemon status
|
|
6499
|
+
zenflo daemon list List active sessions
|
|
6500
6500
|
|
|
6501
|
-
If you want to kill all
|
|
6502
|
-
${chalk.cyan("
|
|
6501
|
+
If you want to kill all zenflo related processes run
|
|
6502
|
+
${chalk.cyan("zenflo doctor clean")}
|
|
6503
6503
|
|
|
6504
6504
|
${chalk.bold("Note:")} The daemon runs in the background and manages Claude sessions.
|
|
6505
6505
|
|
|
6506
|
-
${chalk.bold("To clean up runaway processes:")} Use ${chalk.cyan("
|
|
6506
|
+
${chalk.bold("To clean up runaway processes:")} Use ${chalk.cyan("zenflo doctor clean")}
|
|
6507
6507
|
`);
|
|
6508
6508
|
}
|
|
6509
6509
|
return;
|
|
@@ -6541,29 +6541,28 @@ ${chalk.bold("To clean up runaway processes:")} Use ${chalk.cyan("happy doctor c
|
|
|
6541
6541
|
}
|
|
6542
6542
|
if (showHelp) {
|
|
6543
6543
|
console.log(`
|
|
6544
|
-
${chalk.bold("
|
|
6544
|
+
${chalk.bold("zenflo")} - Claude Code On the Go
|
|
6545
6545
|
|
|
6546
6546
|
${chalk.bold("Usage:")}
|
|
6547
|
-
|
|
6548
|
-
|
|
6549
|
-
|
|
6550
|
-
|
|
6551
|
-
|
|
6552
|
-
|
|
6547
|
+
zenflo [options] Start Claude with mobile control
|
|
6548
|
+
zenflo auth Manage authentication
|
|
6549
|
+
zenflo codex Start Codex mode
|
|
6550
|
+
zenflo connect Connect AI vendor API keys
|
|
6551
|
+
zenflo notify Send push notification
|
|
6552
|
+
zenflo daemon Manage background service that allows
|
|
6553
6553
|
to spawn new sessions away from your computer
|
|
6554
|
-
|
|
6554
|
+
zenflo doctor System diagnostics & troubleshooting
|
|
6555
6555
|
|
|
6556
6556
|
${chalk.bold("Examples:")}
|
|
6557
|
-
|
|
6558
|
-
|
|
6559
|
-
|
|
6560
|
-
|
|
6561
|
-
happy doctor Run diagnostics
|
|
6557
|
+
zenflo Start session
|
|
6558
|
+
zenflo --yolo Start with bypassing permissions
|
|
6559
|
+
zenflo auth login --force Authenticate
|
|
6560
|
+
zenflo doctor Run diagnostics
|
|
6562
6561
|
|
|
6563
|
-
${chalk.bold("
|
|
6564
|
-
Use any claude flag with
|
|
6562
|
+
${chalk.bold("ZenFlo supports ALL Claude options!")}
|
|
6563
|
+
Use any claude flag with zenflo as you would with claude. Our favorite:
|
|
6565
6564
|
|
|
6566
|
-
|
|
6565
|
+
zenflo --resume
|
|
6567
6566
|
|
|
6568
6567
|
${chalk.gray("\u2500".repeat(60))}
|
|
6569
6568
|
${chalk.bold.cyan("Claude Code Options (from `claude --help`):")}
|
|
@@ -6583,7 +6582,7 @@ ${chalk.bold.cyan("Claude Code Options (from `claude --help`):")}
|
|
|
6583
6582
|
credentials
|
|
6584
6583
|
} = await authAndSetupMachineIfNeeded();
|
|
6585
6584
|
logger.debug("Ensuring ZenFlo background service is running & matches our version...");
|
|
6586
|
-
if (!await
|
|
6585
|
+
if (!await isDaemonRunningCurrentlyInstalledZenfloVersion()) {
|
|
6587
6586
|
logger.debug("Starting ZenFlo background service...");
|
|
6588
6587
|
const daemonProcess = spawnZenfloCLI(["daemon", "start-sync"], {
|
|
6589
6588
|
detached: true,
|
|
@@ -6623,37 +6622,37 @@ async function handleNotifyCommand(args) {
|
|
|
6623
6622
|
}
|
|
6624
6623
|
if (showHelp) {
|
|
6625
6624
|
console.log(`
|
|
6626
|
-
${chalk.bold("
|
|
6625
|
+
${chalk.bold("zenflo notify")} - Send notification
|
|
6627
6626
|
|
|
6628
6627
|
${chalk.bold("Usage:")}
|
|
6629
|
-
|
|
6630
|
-
|
|
6628
|
+
zenflo notify -p <message> [-t <title>] Send notification with custom message and optional title
|
|
6629
|
+
zenflo notify -h, --help Show this help
|
|
6631
6630
|
|
|
6632
6631
|
${chalk.bold("Options:")}
|
|
6633
6632
|
-p <message> Notification message (required)
|
|
6634
|
-
-t <title> Notification title (optional, defaults to "
|
|
6633
|
+
-t <title> Notification title (optional, defaults to "ZenFlo")
|
|
6635
6634
|
|
|
6636
6635
|
${chalk.bold("Examples:")}
|
|
6637
|
-
|
|
6638
|
-
|
|
6639
|
-
|
|
6636
|
+
zenflo notify -p "Deployment complete!"
|
|
6637
|
+
zenflo notify -p "System update complete" -t "Server Status"
|
|
6638
|
+
zenflo notify -t "Alert" -p "Database connection restored"
|
|
6640
6639
|
`);
|
|
6641
6640
|
return;
|
|
6642
6641
|
}
|
|
6643
6642
|
if (!message) {
|
|
6644
6643
|
console.error(chalk.red('Error: Message is required. Use -p "your message" to specify the notification text.'));
|
|
6645
|
-
console.log(chalk.gray('Run "
|
|
6644
|
+
console.log(chalk.gray('Run "zenflo notify --help" for usage information.'));
|
|
6646
6645
|
process.exit(1);
|
|
6647
6646
|
}
|
|
6648
6647
|
let credentials = await readCredentials();
|
|
6649
6648
|
if (!credentials) {
|
|
6650
|
-
console.error(chalk.red('Error: Not authenticated. Please run "
|
|
6649
|
+
console.error(chalk.red('Error: Not authenticated. Please run "zenflo auth login" first.'));
|
|
6651
6650
|
process.exit(1);
|
|
6652
6651
|
}
|
|
6653
6652
|
console.log(chalk.blue("\u{1F4F1} Sending push notification..."));
|
|
6654
6653
|
try {
|
|
6655
6654
|
const api = await ApiClient.create(credentials);
|
|
6656
|
-
const notificationTitle = title || "
|
|
6655
|
+
const notificationTitle = title || "ZenFlo";
|
|
6657
6656
|
api.push().sendToAllDevices(
|
|
6658
6657
|
notificationTitle,
|
|
6659
6658
|
message,
|
|
@@ -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-C0K47bQB.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');
|
|
@@ -1046,7 +1046,7 @@ class AbortError extends Error {
|
|
|
1046
1046
|
}
|
|
1047
1047
|
}
|
|
1048
1048
|
|
|
1049
|
-
const __filename$2 = node_url.fileURLToPath((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('index-
|
|
1049
|
+
const __filename$2 = node_url.fileURLToPath((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('index-LeMT1COL.cjs', document.baseURI).href)));
|
|
1050
1050
|
const __dirname$2 = node_path.join(__filename$2, "..");
|
|
1051
1051
|
function getDefaultClaudeCodePath() {
|
|
1052
1052
|
return node_path.join(__dirname$2, "..", "..", "..", "node_modules", "@anthropic-ai", "claude-code", "cli.js");
|
|
@@ -3474,7 +3474,7 @@ async function checkIfDaemonRunningAndCleanupStaleState() {
|
|
|
3474
3474
|
return false;
|
|
3475
3475
|
}
|
|
3476
3476
|
}
|
|
3477
|
-
async function
|
|
3477
|
+
async function isDaemonRunningCurrentlyInstalledZenfloVersion() {
|
|
3478
3478
|
types.logger.debug("[DAEMON CONTROL] Checking if daemon is running same version");
|
|
3479
3479
|
const runningDaemon = await checkIfDaemonRunningAndCleanupStaleState();
|
|
3480
3480
|
if (!runningDaemon) {
|
|
@@ -3551,8 +3551,8 @@ async function findAllHappyProcesses() {
|
|
|
3551
3551
|
for (const proc of processes) {
|
|
3552
3552
|
const cmd = proc.cmd || "";
|
|
3553
3553
|
const name = proc.name || "";
|
|
3554
|
-
const
|
|
3555
|
-
if (!
|
|
3554
|
+
const isZenflo = name.includes("zenflo") || name === "node" && (cmd.includes("zenflo") || cmd.includes("dist/index.mjs")) || cmd.includes("zenflo.mjs") || cmd.includes("tsx") && cmd.includes("src/index.ts");
|
|
3555
|
+
if (!isZenflo) continue;
|
|
3556
3556
|
let type = "unknown";
|
|
3557
3557
|
if (proc.pid === process.pid) {
|
|
3558
3558
|
type = "current";
|
|
@@ -3582,7 +3582,7 @@ async function findRunawayHappyProcesses() {
|
|
|
3582
3582
|
(p) => p.pid !== process.pid && (p.type === "daemon" || p.type === "dev-daemon" || p.type === "daemon-spawned-session" || p.type === "dev-daemon-spawned" || p.type === "daemon-version-check" || p.type === "dev-daemon-version-check")
|
|
3583
3583
|
).map((p) => ({ pid: p.pid, command: p.command }));
|
|
3584
3584
|
}
|
|
3585
|
-
async function
|
|
3585
|
+
async function killRunawayZenfloProcesses() {
|
|
3586
3586
|
const runawayProcesses = await findRunawayHappyProcesses();
|
|
3587
3587
|
const errors = [];
|
|
3588
3588
|
let killed = 0;
|
|
@@ -3800,8 +3800,8 @@ ${typeLabels[type] || type}:`));
|
|
|
3800
3800
|
console.log(chalk.yellow("No log files found"));
|
|
3801
3801
|
}
|
|
3802
3802
|
console.log(chalk.bold("\n\u{1F41B} Support & Bug Reports"));
|
|
3803
|
-
console.log(`Report issues: ${chalk.blue("https://github.com/
|
|
3804
|
-
console.log(`Documentation: ${chalk.blue("https://
|
|
3803
|
+
console.log(`Report issues: ${chalk.blue("https://github.com/zenflo/zenflo/issues")}`);
|
|
3804
|
+
console.log(`Documentation: ${chalk.blue("https://zenflo.dev/docs")}`);
|
|
3805
3805
|
}
|
|
3806
3806
|
console.log(chalk.green("\n\u2705 Doctor diagnosis complete!\n"));
|
|
3807
3807
|
}
|
|
@@ -4308,7 +4308,7 @@ async function startDaemon() {
|
|
|
4308
4308
|
});
|
|
4309
4309
|
types.logger.debug("[DAEMON RUN] Starting daemon process...");
|
|
4310
4310
|
types.logger.debugLargeJson("[DAEMON RUN] Environment", getEnvironmentInfo());
|
|
4311
|
-
const runningDaemonVersionMatches = await
|
|
4311
|
+
const runningDaemonVersionMatches = await isDaemonRunningCurrentlyInstalledZenfloVersion();
|
|
4312
4312
|
if (!runningDaemonVersionMatches) {
|
|
4313
4313
|
types.logger.debug("[DAEMON RUN] Daemon version mismatch detected, restarting daemon with current CLI version");
|
|
4314
4314
|
await stopDaemon();
|
|
@@ -4804,7 +4804,7 @@ async function runClaude(credentials, options = {}) {
|
|
|
4804
4804
|
const settings = await types.readSettings();
|
|
4805
4805
|
let machineId = settings?.machineId;
|
|
4806
4806
|
if (!machineId) {
|
|
4807
|
-
console.error(`[START] No machine ID found in settings, which is
|
|
4807
|
+
console.error(`[START] No machine ID found in settings, which is unexpected since authAndSetupMachineIfNeeded should have created it. Please report this issue on https://github.com/zenflo/zenflo/issues`);
|
|
4808
4808
|
process.exit(1);
|
|
4809
4809
|
}
|
|
4810
4810
|
types.logger.debug(`Using machineId: ${machineId}`);
|
|
@@ -5065,7 +5065,7 @@ async function runClaude(credentials, options = {}) {
|
|
|
5065
5065
|
process.exit(0);
|
|
5066
5066
|
}
|
|
5067
5067
|
|
|
5068
|
-
const __filename$1 = url.fileURLToPath((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('index-
|
|
5068
|
+
const __filename$1 = url.fileURLToPath((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('index-LeMT1COL.cjs', document.baseURI).href)));
|
|
5069
5069
|
const __dirname$1 = path.dirname(__filename$1);
|
|
5070
5070
|
const PLIST_LABEL$1 = "com.zenflo.daemon";
|
|
5071
5071
|
const LAUNCH_AGENTS_DIR$1 = path.join(os$1.homedir(), "Library", "LaunchAgents");
|
|
@@ -5620,14 +5620,14 @@ async function handleAuthCommand(args) {
|
|
|
5620
5620
|
}
|
|
5621
5621
|
function showAuthHelp() {
|
|
5622
5622
|
console.log(`
|
|
5623
|
-
${chalk.bold("
|
|
5623
|
+
${chalk.bold("zenflo auth")} - Authentication management
|
|
5624
5624
|
|
|
5625
5625
|
${chalk.bold("Usage:")}
|
|
5626
|
-
|
|
5627
|
-
|
|
5628
|
-
|
|
5629
|
-
|
|
5630
|
-
|
|
5626
|
+
zenflo auth login [--force] Authenticate with ZenFlo
|
|
5627
|
+
zenflo auth logout Remove authentication and machine data
|
|
5628
|
+
zenflo auth status Show authentication status
|
|
5629
|
+
zenflo auth show-backup Display backup key for mobile/web clients
|
|
5630
|
+
zenflo auth help Show this help message
|
|
5631
5631
|
|
|
5632
5632
|
${chalk.bold("Options:")}
|
|
5633
5633
|
--force Clear credentials, machine ID, and stop daemon before re-auth
|
|
@@ -5662,7 +5662,7 @@ async function handleAuthLogin(args) {
|
|
|
5662
5662
|
console.log(chalk.green("\u2713 Already authenticated"));
|
|
5663
5663
|
console.log(chalk.gray(` Machine ID: ${settings.machineId}`));
|
|
5664
5664
|
console.log(chalk.gray(` Host: ${os.hostname()}`));
|
|
5665
|
-
console.log(chalk.gray(` Use '
|
|
5665
|
+
console.log(chalk.gray(` Use 'zenflo auth login --force' to re-authenticate`));
|
|
5666
5666
|
return;
|
|
5667
5667
|
} else if (existingCreds && !settings?.machineId) {
|
|
5668
5668
|
console.log(chalk.yellow("\u26A0\uFE0F Credentials exist but machine ID is missing"));
|
|
@@ -5680,14 +5680,14 @@ async function handleAuthLogin(args) {
|
|
|
5680
5680
|
}
|
|
5681
5681
|
}
|
|
5682
5682
|
async function handleAuthLogout() {
|
|
5683
|
-
const
|
|
5683
|
+
const zenfloDir = types.configuration.zenfloHomeDir;
|
|
5684
5684
|
const credentials = await types.readCredentials();
|
|
5685
5685
|
if (!credentials) {
|
|
5686
5686
|
console.log(chalk.yellow("Not currently authenticated"));
|
|
5687
5687
|
return;
|
|
5688
5688
|
}
|
|
5689
|
-
console.log(chalk.blue("This will log you out of
|
|
5690
|
-
console.log(chalk.yellow("\u26A0\uFE0F You will need to re-authenticate to use
|
|
5689
|
+
console.log(chalk.blue("This will log you out of ZenFlo"));
|
|
5690
|
+
console.log(chalk.yellow("\u26A0\uFE0F You will need to re-authenticate to use ZenFlo again"));
|
|
5691
5691
|
const rl = node_readline.createInterface({
|
|
5692
5692
|
input: process.stdin,
|
|
5693
5693
|
output: process.stdout
|
|
@@ -5703,11 +5703,11 @@ async function handleAuthLogout() {
|
|
|
5703
5703
|
console.log(chalk.gray("Stopped daemon"));
|
|
5704
5704
|
} catch {
|
|
5705
5705
|
}
|
|
5706
|
-
if (fs.existsSync(
|
|
5707
|
-
fs.rmSync(
|
|
5706
|
+
if (fs.existsSync(zenfloDir)) {
|
|
5707
|
+
fs.rmSync(zenfloDir, { recursive: true, force: true });
|
|
5708
5708
|
}
|
|
5709
5709
|
console.log(chalk.green("\u2713 Successfully logged out"));
|
|
5710
|
-
console.log(chalk.gray(' Run "
|
|
5710
|
+
console.log(chalk.gray(' Run "zenflo auth login" to authenticate again'));
|
|
5711
5711
|
} catch (error) {
|
|
5712
5712
|
throw new Error(`Failed to logout: ${error instanceof Error ? error.message : "Unknown error"}`);
|
|
5713
5713
|
}
|
|
@@ -5721,7 +5721,7 @@ async function handleAuthStatus() {
|
|
|
5721
5721
|
console.log(chalk.bold("\nAuthentication Status\n"));
|
|
5722
5722
|
if (!credentials) {
|
|
5723
5723
|
console.log(chalk.red("\u2717 Not authenticated"));
|
|
5724
|
-
console.log(chalk.gray(' Run "
|
|
5724
|
+
console.log(chalk.gray(' Run "zenflo auth login" to authenticate'));
|
|
5725
5725
|
return;
|
|
5726
5726
|
}
|
|
5727
5727
|
console.log(chalk.green("\u2713 Authenticated"));
|
|
@@ -5733,7 +5733,7 @@ async function handleAuthStatus() {
|
|
|
5733
5733
|
console.log(chalk.gray(` Host: ${os.hostname()}`));
|
|
5734
5734
|
} else {
|
|
5735
5735
|
console.log(chalk.yellow("\u26A0\uFE0F Machine not registered"));
|
|
5736
|
-
console.log(chalk.gray(' Run "
|
|
5736
|
+
console.log(chalk.gray(' Run "zenflo auth login --force" to fix this'));
|
|
5737
5737
|
}
|
|
5738
5738
|
console.log(chalk.gray(`
|
|
5739
5739
|
Data directory: ${types.configuration.zenfloHomeDir}`));
|
|
@@ -6313,7 +6313,7 @@ async function handleConnectVendor(vendor, displayName) {
|
|
|
6313
6313
|
const subcommand = args[0];
|
|
6314
6314
|
if (subcommand === "doctor") {
|
|
6315
6315
|
if (args[1] === "clean") {
|
|
6316
|
-
const result = await
|
|
6316
|
+
const result = await killRunawayZenfloProcesses();
|
|
6317
6317
|
console.log(`Cleaned up ${result.killed} runaway processes`);
|
|
6318
6318
|
if (result.errors.length > 0) {
|
|
6319
6319
|
console.log("Errors:", result.errors);
|
|
@@ -6346,7 +6346,7 @@ async function handleConnectVendor(vendor, displayName) {
|
|
|
6346
6346
|
return;
|
|
6347
6347
|
} else if (subcommand === "codex") {
|
|
6348
6348
|
try {
|
|
6349
|
-
const { runCodex } = await Promise.resolve().then(function () { return require('./runCodex-
|
|
6349
|
+
const { runCodex } = await Promise.resolve().then(function () { return require('./runCodex-BED95lb3.cjs'); });
|
|
6350
6350
|
let startedBy = void 0;
|
|
6351
6351
|
for (let i = 1; i < args.length; i++) {
|
|
6352
6352
|
if (args[i] === "--started-by") {
|
|
@@ -6367,7 +6367,7 @@ async function handleConnectVendor(vendor, displayName) {
|
|
|
6367
6367
|
return;
|
|
6368
6368
|
} else if (subcommand === "ccr" || subcommand === "glm") {
|
|
6369
6369
|
try {
|
|
6370
|
-
const { runCCR } = await Promise.resolve().then(function () { return require('./runCCR-
|
|
6370
|
+
const { runCCR } = await Promise.resolve().then(function () { return require('./runCCR-CokU0NUY.cjs'); });
|
|
6371
6371
|
let startedBy = void 0;
|
|
6372
6372
|
for (let i = 1; i < args.length; i++) {
|
|
6373
6373
|
if (args[i] === "--started-by") {
|
|
@@ -6387,7 +6387,7 @@ async function handleConnectVendor(vendor, displayName) {
|
|
|
6387
6387
|
}
|
|
6388
6388
|
return;
|
|
6389
6389
|
} else if (subcommand === "logout") {
|
|
6390
|
-
console.log(chalk.yellow('Note: "
|
|
6390
|
+
console.log(chalk.yellow('Note: "zenflo logout" is deprecated. Use "zenflo auth logout" instead.\n'));
|
|
6391
6391
|
try {
|
|
6392
6392
|
await handleAuthCommand(["logout"]);
|
|
6393
6393
|
} catch (error) {
|
|
@@ -6470,13 +6470,13 @@ async function handleConnectVendor(vendor, displayName) {
|
|
|
6470
6470
|
let statusModule;
|
|
6471
6471
|
switch (process.platform) {
|
|
6472
6472
|
case "darwin":
|
|
6473
|
-
statusModule = await Promise.resolve().then(function () { return require('./status-
|
|
6473
|
+
statusModule = await Promise.resolve().then(function () { return require('./status-6nX5obxE.cjs'); });
|
|
6474
6474
|
break;
|
|
6475
6475
|
case "win32":
|
|
6476
|
-
statusModule = await Promise.resolve().then(function () { return require('./status-
|
|
6476
|
+
statusModule = await Promise.resolve().then(function () { return require('./status-DUnHkBDq.cjs'); });
|
|
6477
6477
|
break;
|
|
6478
6478
|
case "linux":
|
|
6479
|
-
statusModule = await Promise.resolve().then(function () { return require('./status-
|
|
6479
|
+
statusModule = await Promise.resolve().then(function () { return require('./status-CES2ft-F.cjs'); });
|
|
6480
6480
|
break;
|
|
6481
6481
|
default:
|
|
6482
6482
|
console.error(chalk.red(`Status command not supported on platform: ${process.platform}`));
|
|
@@ -6512,20 +6512,20 @@ async function handleConnectVendor(vendor, displayName) {
|
|
|
6512
6512
|
}
|
|
6513
6513
|
} else {
|
|
6514
6514
|
console.log(`
|
|
6515
|
-
${chalk.bold("
|
|
6515
|
+
${chalk.bold("zenflo daemon")} - Daemon management
|
|
6516
6516
|
|
|
6517
6517
|
${chalk.bold("Usage:")}
|
|
6518
|
-
|
|
6519
|
-
|
|
6520
|
-
|
|
6521
|
-
|
|
6518
|
+
zenflo daemon start Start the daemon (detached)
|
|
6519
|
+
zenflo daemon stop Stop the daemon (sessions stay alive)
|
|
6520
|
+
zenflo daemon status Show daemon status
|
|
6521
|
+
zenflo daemon list List active sessions
|
|
6522
6522
|
|
|
6523
|
-
If you want to kill all
|
|
6524
|
-
${chalk.cyan("
|
|
6523
|
+
If you want to kill all zenflo related processes run
|
|
6524
|
+
${chalk.cyan("zenflo doctor clean")}
|
|
6525
6525
|
|
|
6526
6526
|
${chalk.bold("Note:")} The daemon runs in the background and manages Claude sessions.
|
|
6527
6527
|
|
|
6528
|
-
${chalk.bold("To clean up runaway processes:")} Use ${chalk.cyan("
|
|
6528
|
+
${chalk.bold("To clean up runaway processes:")} Use ${chalk.cyan("zenflo doctor clean")}
|
|
6529
6529
|
`);
|
|
6530
6530
|
}
|
|
6531
6531
|
return;
|
|
@@ -6563,29 +6563,28 @@ ${chalk.bold("To clean up runaway processes:")} Use ${chalk.cyan("happy doctor c
|
|
|
6563
6563
|
}
|
|
6564
6564
|
if (showHelp) {
|
|
6565
6565
|
console.log(`
|
|
6566
|
-
${chalk.bold("
|
|
6566
|
+
${chalk.bold("zenflo")} - Claude Code On the Go
|
|
6567
6567
|
|
|
6568
6568
|
${chalk.bold("Usage:")}
|
|
6569
|
-
|
|
6570
|
-
|
|
6571
|
-
|
|
6572
|
-
|
|
6573
|
-
|
|
6574
|
-
|
|
6569
|
+
zenflo [options] Start Claude with mobile control
|
|
6570
|
+
zenflo auth Manage authentication
|
|
6571
|
+
zenflo codex Start Codex mode
|
|
6572
|
+
zenflo connect Connect AI vendor API keys
|
|
6573
|
+
zenflo notify Send push notification
|
|
6574
|
+
zenflo daemon Manage background service that allows
|
|
6575
6575
|
to spawn new sessions away from your computer
|
|
6576
|
-
|
|
6576
|
+
zenflo doctor System diagnostics & troubleshooting
|
|
6577
6577
|
|
|
6578
6578
|
${chalk.bold("Examples:")}
|
|
6579
|
-
|
|
6580
|
-
|
|
6581
|
-
|
|
6582
|
-
|
|
6583
|
-
happy doctor Run diagnostics
|
|
6579
|
+
zenflo Start session
|
|
6580
|
+
zenflo --yolo Start with bypassing permissions
|
|
6581
|
+
zenflo auth login --force Authenticate
|
|
6582
|
+
zenflo doctor Run diagnostics
|
|
6584
6583
|
|
|
6585
|
-
${chalk.bold("
|
|
6586
|
-
Use any claude flag with
|
|
6584
|
+
${chalk.bold("ZenFlo supports ALL Claude options!")}
|
|
6585
|
+
Use any claude flag with zenflo as you would with claude. Our favorite:
|
|
6587
6586
|
|
|
6588
|
-
|
|
6587
|
+
zenflo --resume
|
|
6589
6588
|
|
|
6590
6589
|
${chalk.gray("\u2500".repeat(60))}
|
|
6591
6590
|
${chalk.bold.cyan("Claude Code Options (from `claude --help`):")}
|
|
@@ -6605,7 +6604,7 @@ ${chalk.bold.cyan("Claude Code Options (from `claude --help`):")}
|
|
|
6605
6604
|
credentials
|
|
6606
6605
|
} = await authAndSetupMachineIfNeeded();
|
|
6607
6606
|
types.logger.debug("Ensuring ZenFlo background service is running & matches our version...");
|
|
6608
|
-
if (!await
|
|
6607
|
+
if (!await isDaemonRunningCurrentlyInstalledZenfloVersion()) {
|
|
6609
6608
|
types.logger.debug("Starting ZenFlo background service...");
|
|
6610
6609
|
const daemonProcess = spawnZenfloCLI(["daemon", "start-sync"], {
|
|
6611
6610
|
detached: true,
|
|
@@ -6645,37 +6644,37 @@ async function handleNotifyCommand(args) {
|
|
|
6645
6644
|
}
|
|
6646
6645
|
if (showHelp) {
|
|
6647
6646
|
console.log(`
|
|
6648
|
-
${chalk.bold("
|
|
6647
|
+
${chalk.bold("zenflo notify")} - Send notification
|
|
6649
6648
|
|
|
6650
6649
|
${chalk.bold("Usage:")}
|
|
6651
|
-
|
|
6652
|
-
|
|
6650
|
+
zenflo notify -p <message> [-t <title>] Send notification with custom message and optional title
|
|
6651
|
+
zenflo notify -h, --help Show this help
|
|
6653
6652
|
|
|
6654
6653
|
${chalk.bold("Options:")}
|
|
6655
6654
|
-p <message> Notification message (required)
|
|
6656
|
-
-t <title> Notification title (optional, defaults to "
|
|
6655
|
+
-t <title> Notification title (optional, defaults to "ZenFlo")
|
|
6657
6656
|
|
|
6658
6657
|
${chalk.bold("Examples:")}
|
|
6659
|
-
|
|
6660
|
-
|
|
6661
|
-
|
|
6658
|
+
zenflo notify -p "Deployment complete!"
|
|
6659
|
+
zenflo notify -p "System update complete" -t "Server Status"
|
|
6660
|
+
zenflo notify -t "Alert" -p "Database connection restored"
|
|
6662
6661
|
`);
|
|
6663
6662
|
return;
|
|
6664
6663
|
}
|
|
6665
6664
|
if (!message) {
|
|
6666
6665
|
console.error(chalk.red('Error: Message is required. Use -p "your message" to specify the notification text.'));
|
|
6667
|
-
console.log(chalk.gray('Run "
|
|
6666
|
+
console.log(chalk.gray('Run "zenflo notify --help" for usage information.'));
|
|
6668
6667
|
process.exit(1);
|
|
6669
6668
|
}
|
|
6670
6669
|
let credentials = await types.readCredentials();
|
|
6671
6670
|
if (!credentials) {
|
|
6672
|
-
console.error(chalk.red('Error: Not authenticated. Please run "
|
|
6671
|
+
console.error(chalk.red('Error: Not authenticated. Please run "zenflo auth login" first.'));
|
|
6673
6672
|
process.exit(1);
|
|
6674
6673
|
}
|
|
6675
6674
|
console.log(chalk.blue("\u{1F4F1} Sending push notification..."));
|
|
6676
6675
|
try {
|
|
6677
6676
|
const api = await types.ApiClient.create(credentials);
|
|
6678
|
-
const notificationTitle = title || "
|
|
6677
|
+
const notificationTitle = title || "ZenFlo";
|
|
6679
6678
|
api.push().sendToAllDevices(
|
|
6680
6679
|
notificationTitle,
|
|
6681
6680
|
message,
|
package/dist/index.cjs
CHANGED
package/dist/index.mjs
CHANGED
package/dist/lib.cjs
CHANGED
package/dist/lib.d.cts
CHANGED
|
@@ -734,7 +734,7 @@ declare class PushNotificationClient {
|
|
|
734
734
|
/**
|
|
735
735
|
* Minimal persistence functions for ZenFlo CLI
|
|
736
736
|
*
|
|
737
|
-
* Handles settings and private key storage in ~/.
|
|
737
|
+
* Handles settings and private key storage in ~/.zenflo/ or local .zenflo/
|
|
738
738
|
*/
|
|
739
739
|
|
|
740
740
|
type Credentials = {
|
package/dist/lib.d.mts
CHANGED
|
@@ -734,7 +734,7 @@ declare class PushNotificationClient {
|
|
|
734
734
|
/**
|
|
735
735
|
* Minimal persistence functions for ZenFlo CLI
|
|
736
736
|
*
|
|
737
|
-
* Handles settings and private key storage in ~/.
|
|
737
|
+
* Handles settings and private key storage in ~/.zenflo/ or local .zenflo/
|
|
738
738
|
*/
|
|
739
739
|
|
|
740
740
|
type Credentials = {
|
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-Bm-nJvHk.mjs';
|
|
2
2
|
import 'axios';
|
|
3
3
|
import 'chalk';
|
|
4
4
|
import 'fs';
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var index = require('./index-
|
|
4
|
-
var types = require('./types-
|
|
3
|
+
var index = require('./index-LeMT1COL.cjs');
|
|
4
|
+
var types = require('./types-C0K47bQB.cjs');
|
|
5
5
|
var node_child_process = require('node:child_process');
|
|
6
6
|
require('chalk');
|
|
7
7
|
require('node:os');
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { r as runClaude } from './index-
|
|
2
|
-
import { l as logger } from './types-
|
|
1
|
+
import { r as runClaude } from './index-BmkLkj0P.mjs';
|
|
2
|
+
import { l as logger } from './types-Bm-nJvHk.mjs';
|
|
3
3
|
import { execSync } from 'node:child_process';
|
|
4
4
|
import 'chalk';
|
|
5
5
|
import 'node:os';
|
|
@@ -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-C0K47bQB.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-LeMT1COL.cjs');
|
|
13
13
|
var os = require('node:os');
|
|
14
14
|
var node_path = require('node:path');
|
|
15
15
|
var fs = require('node:fs');
|
|
@@ -774,7 +774,7 @@ async function runCodex(opts) {
|
|
|
774
774
|
const settings = await types.readSettings();
|
|
775
775
|
let machineId = settings?.machineId;
|
|
776
776
|
if (!machineId) {
|
|
777
|
-
console.error(`[START] No machine ID found in settings, which is unexpected since authAndSetupMachineIfNeeded should have created it. Please report this issue on https://github.com/
|
|
777
|
+
console.error(`[START] No machine ID found in settings, which is unexpected since authAndSetupMachineIfNeeded should have created it. Please report this issue on https://github.com/zenflo/zenflo/issues`);
|
|
778
778
|
process.exit(1);
|
|
779
779
|
}
|
|
780
780
|
types.logger.debug(`Using machineId: ${machineId}`);
|
|
@@ -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, b as readSettings, p as projectPath, c as configuration, d as packageJson } from './types-
|
|
3
|
+
import { l as logger, A as ApiClient, b as readSettings, p as projectPath, c as configuration, d as packageJson } from './types-Bm-nJvHk.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, a as registerKillSessionHandler, b as MessageBuffer, s as startZenfloServer, t as trimIdent, c as stopCaffeinate } from './index-
|
|
10
|
+
import { i as initialMachineMetadata, n as notifyDaemonSessionStarted, M as MessageQueue2, h as hashObject, a as registerKillSessionHandler, b as MessageBuffer, s as startZenfloServer, t as trimIdent, c as stopCaffeinate } from './index-BmkLkj0P.mjs';
|
|
11
11
|
import os from 'node:os';
|
|
12
12
|
import { resolve, join } from 'node:path';
|
|
13
13
|
import fs from 'node:fs';
|
|
@@ -772,7 +772,7 @@ async function runCodex(opts) {
|
|
|
772
772
|
const settings = await readSettings();
|
|
773
773
|
let machineId = settings?.machineId;
|
|
774
774
|
if (!machineId) {
|
|
775
|
-
console.error(`[START] No machine ID found in settings, which is unexpected since authAndSetupMachineIfNeeded should have created it. Please report this issue on https://github.com/
|
|
775
|
+
console.error(`[START] No machine ID found in settings, which is unexpected since authAndSetupMachineIfNeeded should have created it. Please report this issue on https://github.com/zenflo/zenflo/issues`);
|
|
776
776
|
process.exit(1);
|
|
777
777
|
}
|
|
778
778
|
logger.debug(`Using machineId: ${machineId}`);
|
|
@@ -5,7 +5,7 @@ var child_process = require('child_process');
|
|
|
5
5
|
var os = require('os');
|
|
6
6
|
var path = require('path');
|
|
7
7
|
var chalk = require('chalk');
|
|
8
|
-
var types = require('./types-
|
|
8
|
+
var types = require('./types-C0K47bQB.cjs');
|
|
9
9
|
require('axios');
|
|
10
10
|
require('node:fs');
|
|
11
11
|
require('node:os');
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { existsSync } from 'fs';
|
|
2
2
|
import { execSync } from 'child_process';
|
|
3
|
-
import { r as readDaemonState, l as logger } from './types-
|
|
3
|
+
import { r as readDaemonState, l as logger } from './types-Bm-nJvHk.mjs';
|
|
4
4
|
import os from 'os';
|
|
5
5
|
import path from 'path';
|
|
6
6
|
import chalk from 'chalk';
|
|
@@ -3,7 +3,7 @@ import { execSync } from 'child_process';
|
|
|
3
3
|
import os from 'os';
|
|
4
4
|
import path from 'path';
|
|
5
5
|
import chalk from 'chalk';
|
|
6
|
-
import { r as readDaemonState } from './types-
|
|
6
|
+
import { r as readDaemonState } from './types-Bm-nJvHk.mjs';
|
|
7
7
|
import 'axios';
|
|
8
8
|
import 'node:fs';
|
|
9
9
|
import 'node:os';
|
|
@@ -21,7 +21,7 @@ import { platform } from 'os';
|
|
|
21
21
|
import { Expo } from 'expo-server-sdk';
|
|
22
22
|
|
|
23
23
|
var name = "zenflo";
|
|
24
|
-
var version = "0.
|
|
24
|
+
var version = "0.12.0";
|
|
25
25
|
var description = "Mobile and Web client for Claude Code and Codex - ZenFlo edition";
|
|
26
26
|
var author = "Combined Memory";
|
|
27
27
|
var license = "MIT";
|
|
@@ -1641,7 +1641,7 @@ class ApiMachineClient {
|
|
|
1641
1641
|
stopSession,
|
|
1642
1642
|
requestShutdown
|
|
1643
1643
|
}) {
|
|
1644
|
-
this.rpcHandlerManager.registerHandler("spawn-
|
|
1644
|
+
this.rpcHandlerManager.registerHandler("spawn-zenflo-session", async (params) => {
|
|
1645
1645
|
const { directory, sessionId, machineId, approvedNewDirectoryCreation, agent, token } = params || {};
|
|
1646
1646
|
logger.debug(`[API MACHINE] Spawning session with params: ${JSON.stringify(params)}`);
|
|
1647
1647
|
if (!directory) {
|
|
@@ -42,7 +42,7 @@ function _interopNamespaceDefault(e) {
|
|
|
42
42
|
var z__namespace = /*#__PURE__*/_interopNamespaceDefault(z);
|
|
43
43
|
|
|
44
44
|
var name = "zenflo";
|
|
45
|
-
var version = "0.
|
|
45
|
+
var version = "0.12.0";
|
|
46
46
|
var description = "Mobile and Web client for Claude Code and Codex - ZenFlo edition";
|
|
47
47
|
var author = "Combined Memory";
|
|
48
48
|
var license = "MIT";
|
|
@@ -1028,7 +1028,7 @@ class RpcHandlerManager {
|
|
|
1028
1028
|
}
|
|
1029
1029
|
}
|
|
1030
1030
|
|
|
1031
|
-
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-
|
|
1031
|
+
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-C0K47bQB.cjs', document.baseURI).href))));
|
|
1032
1032
|
function projectPath() {
|
|
1033
1033
|
const path$1 = path.resolve(__dirname$1, "..");
|
|
1034
1034
|
return path$1;
|
|
@@ -1662,7 +1662,7 @@ class ApiMachineClient {
|
|
|
1662
1662
|
stopSession,
|
|
1663
1663
|
requestShutdown
|
|
1664
1664
|
}) {
|
|
1665
|
-
this.rpcHandlerManager.registerHandler("spawn-
|
|
1665
|
+
this.rpcHandlerManager.registerHandler("spawn-zenflo-session", async (params) => {
|
|
1666
1666
|
const { directory, sessionId, machineId, approvedNewDirectoryCreation, agent, token } = params || {};
|
|
1667
1667
|
logger.debug(`[API MACHINE] Spawning session with params: ${JSON.stringify(params)}`);
|
|
1668
1668
|
if (!directory) {
|