zenflo 0.12.1 → 0.13.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/dist/codex/zenfloMcpStdioBridge.cjs +4 -31
- package/dist/codex/zenfloMcpStdioBridge.mjs +4 -31
- package/dist/{index-BCav_-KH.cjs → index-CJ8JfQbJ.cjs} +20 -20
- package/dist/{index-D4H-IoO4.mjs → index-HyLXtYMY.mjs} +18 -18
- 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-BSTeKn4P.mjs → runCCR-BUMMywJS.mjs} +2 -2
- package/dist/{runCCR-CAUBpsGG.cjs → runCCR-CsBd9Bin.cjs} +2 -2
- package/dist/{runCodex-Bor-iohW.mjs → runCodex-CAfYUB9k.mjs} +6 -6
- package/dist/{runCodex-BhI-aMek.cjs → runCodex-gxOwFxj9.cjs} +6 -6
- package/dist/{status-Bh14_wDU.mjs → status-BPrNeVH-.mjs} +1 -1
- package/dist/{status-Dz3SVH5d.cjs → status-B_tjHFOS.cjs} +1 -1
- package/dist/{status-BpN5JCxI.mjs → status-CbsGtmMn.mjs} +1 -1
- package/dist/{status-DmbS7OtX.mjs → status-Ci3LMn8d.mjs} +1 -1
- package/dist/{status-ByHnu9oN.cjs → status-CmuBM9eE.cjs} +1 -1
- package/dist/{status-DMFI5EdW.cjs → status-wSLqL6_S.cjs} +1 -1
- package/dist/{types-DzNSylqA.cjs → types-DILJPonx.cjs} +6 -8
- package/dist/{types-BPoWNAha.mjs → types-cYVbBsSI.mjs} +5 -7
- package/package.json +3 -5
|
@@ -30,7 +30,7 @@ async function main() {
|
|
|
30
30
|
async function ensureHttpClient() {
|
|
31
31
|
if (httpClient) return httpClient;
|
|
32
32
|
const client = new index_js.Client(
|
|
33
|
-
{ name: "
|
|
33
|
+
{ name: "zenflo-stdio-bridge", version: "1.0.0" },
|
|
34
34
|
{ capabilities: { tools: {} } }
|
|
35
35
|
);
|
|
36
36
|
const transport = new streamableHttp_js.StreamableHTTPClientTransport(new URL(baseUrl));
|
|
@@ -39,9 +39,9 @@ async function main() {
|
|
|
39
39
|
return client;
|
|
40
40
|
}
|
|
41
41
|
const server = new mcp_js.McpServer({
|
|
42
|
-
name: "
|
|
42
|
+
name: "ZenFlo MCP Bridge",
|
|
43
43
|
version: "1.0.0",
|
|
44
|
-
description: "STDIO bridge forwarding to
|
|
44
|
+
description: "STDIO bridge forwarding to ZenFlo HTTP MCP"
|
|
45
45
|
});
|
|
46
46
|
server.registerTool(
|
|
47
47
|
"change_title",
|
|
@@ -67,39 +67,12 @@ async function main() {
|
|
|
67
67
|
}
|
|
68
68
|
}
|
|
69
69
|
);
|
|
70
|
-
server.registerTool(
|
|
71
|
-
"send_inbox_message",
|
|
72
|
-
{
|
|
73
|
-
description: "Send a message to Quinn's Happy app inbox for cross-session communication",
|
|
74
|
-
title: "Send Inbox Message",
|
|
75
|
-
inputSchema: {
|
|
76
|
-
title: z.z.string().describe('Message title (e.g., "Task completed", "Found a bug")'),
|
|
77
|
-
message: z.z.string().describe("Message content/details"),
|
|
78
|
-
sessionId: z.z.string().optional().describe("Optional session ID to link the message to (makes it clickable)"),
|
|
79
|
-
priority: z.z.enum(["low", "normal", "high"]).optional().describe("Message priority (affects icon and color)")
|
|
80
|
-
}
|
|
81
|
-
},
|
|
82
|
-
async (args) => {
|
|
83
|
-
try {
|
|
84
|
-
const client = await ensureHttpClient();
|
|
85
|
-
const response = await client.callTool({ name: "send_inbox_message", arguments: args });
|
|
86
|
-
return response;
|
|
87
|
-
} catch (error) {
|
|
88
|
-
return {
|
|
89
|
-
content: [
|
|
90
|
-
{ type: "text", text: `Failed to send inbox message: ${error instanceof Error ? error.message : String(error)}` }
|
|
91
|
-
],
|
|
92
|
-
isError: true
|
|
93
|
-
};
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
);
|
|
97
70
|
const stdio = new stdio_js.StdioServerTransport();
|
|
98
71
|
await server.connect(stdio);
|
|
99
72
|
}
|
|
100
73
|
main().catch((err) => {
|
|
101
74
|
try {
|
|
102
|
-
process.stderr.write(`[
|
|
75
|
+
process.stderr.write(`[zenflo-mcp] Fatal: ${err instanceof Error ? err.message : String(err)}
|
|
103
76
|
`);
|
|
104
77
|
} finally {
|
|
105
78
|
process.exit(1);
|
|
@@ -28,7 +28,7 @@ async function main() {
|
|
|
28
28
|
async function ensureHttpClient() {
|
|
29
29
|
if (httpClient) return httpClient;
|
|
30
30
|
const client = new Client(
|
|
31
|
-
{ name: "
|
|
31
|
+
{ name: "zenflo-stdio-bridge", version: "1.0.0" },
|
|
32
32
|
{ capabilities: { tools: {} } }
|
|
33
33
|
);
|
|
34
34
|
const transport = new StreamableHTTPClientTransport(new URL(baseUrl));
|
|
@@ -37,9 +37,9 @@ async function main() {
|
|
|
37
37
|
return client;
|
|
38
38
|
}
|
|
39
39
|
const server = new McpServer({
|
|
40
|
-
name: "
|
|
40
|
+
name: "ZenFlo MCP Bridge",
|
|
41
41
|
version: "1.0.0",
|
|
42
|
-
description: "STDIO bridge forwarding to
|
|
42
|
+
description: "STDIO bridge forwarding to ZenFlo HTTP MCP"
|
|
43
43
|
});
|
|
44
44
|
server.registerTool(
|
|
45
45
|
"change_title",
|
|
@@ -65,39 +65,12 @@ async function main() {
|
|
|
65
65
|
}
|
|
66
66
|
}
|
|
67
67
|
);
|
|
68
|
-
server.registerTool(
|
|
69
|
-
"send_inbox_message",
|
|
70
|
-
{
|
|
71
|
-
description: "Send a message to Quinn's Happy app inbox for cross-session communication",
|
|
72
|
-
title: "Send Inbox Message",
|
|
73
|
-
inputSchema: {
|
|
74
|
-
title: z.string().describe('Message title (e.g., "Task completed", "Found a bug")'),
|
|
75
|
-
message: z.string().describe("Message content/details"),
|
|
76
|
-
sessionId: z.string().optional().describe("Optional session ID to link the message to (makes it clickable)"),
|
|
77
|
-
priority: z.enum(["low", "normal", "high"]).optional().describe("Message priority (affects icon and color)")
|
|
78
|
-
}
|
|
79
|
-
},
|
|
80
|
-
async (args) => {
|
|
81
|
-
try {
|
|
82
|
-
const client = await ensureHttpClient();
|
|
83
|
-
const response = await client.callTool({ name: "send_inbox_message", arguments: args });
|
|
84
|
-
return response;
|
|
85
|
-
} catch (error) {
|
|
86
|
-
return {
|
|
87
|
-
content: [
|
|
88
|
-
{ type: "text", text: `Failed to send inbox message: ${error instanceof Error ? error.message : String(error)}` }
|
|
89
|
-
],
|
|
90
|
-
isError: true
|
|
91
|
-
};
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
);
|
|
95
68
|
const stdio = new StdioServerTransport();
|
|
96
69
|
await server.connect(stdio);
|
|
97
70
|
}
|
|
98
71
|
main().catch((err) => {
|
|
99
72
|
try {
|
|
100
|
-
process.stderr.write(`[
|
|
73
|
+
process.stderr.write(`[zenflo-mcp] Fatal: ${err instanceof Error ? err.message : String(err)}
|
|
101
74
|
`);
|
|
102
75
|
} finally {
|
|
103
76
|
process.exit(1);
|
|
@@ -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-DILJPonx.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');
|
|
@@ -236,10 +236,10 @@ const CO_AUTHORED_CREDITS = (() => trimIdent(`
|
|
|
236
236
|
<main commit message>
|
|
237
237
|
|
|
238
238
|
Generated with [Claude Code](https://claude.ai/code)
|
|
239
|
-
via [ZenFlo](https://zenflo.
|
|
239
|
+
via [ZenFlo](https://zenflo.dev)
|
|
240
240
|
|
|
241
241
|
Co-Authored-By: Claude <noreply@anthropic.com>
|
|
242
|
-
Co-Authored-By: ZenFlo <yesreply@zenflo.
|
|
242
|
+
Co-Authored-By: ZenFlo <yesreply@zenflo.dev>
|
|
243
243
|
`))();
|
|
244
244
|
const systemPrompt = (() => {
|
|
245
245
|
const includeCoAuthored = shouldIncludeCoAuthoredBy();
|
|
@@ -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-CJ8JfQbJ.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");
|
|
@@ -3544,7 +3544,7 @@ async function waitForProcessDeath(pid, timeout) {
|
|
|
3544
3544
|
throw new Error("Process did not die within timeout");
|
|
3545
3545
|
}
|
|
3546
3546
|
|
|
3547
|
-
async function
|
|
3547
|
+
async function findAllZenfloProcesses() {
|
|
3548
3548
|
try {
|
|
3549
3549
|
const processes = await psList();
|
|
3550
3550
|
const allProcesses = [];
|
|
@@ -3576,14 +3576,14 @@ async function findAllHappyProcesses() {
|
|
|
3576
3576
|
return [];
|
|
3577
3577
|
}
|
|
3578
3578
|
}
|
|
3579
|
-
async function
|
|
3580
|
-
const allProcesses = await
|
|
3579
|
+
async function findRunawayZenfloProcesses() {
|
|
3580
|
+
const allProcesses = await findAllZenfloProcesses();
|
|
3581
3581
|
return allProcesses.filter(
|
|
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
3585
|
async function killRunawayZenfloProcesses() {
|
|
3586
|
-
const runawayProcesses = await
|
|
3586
|
+
const runawayProcesses = await findRunawayZenfloProcesses();
|
|
3587
3587
|
const errors = [];
|
|
3588
3588
|
let killed = 0;
|
|
3589
3589
|
for (const { pid, command } of runawayProcesses) {
|
|
@@ -3665,7 +3665,7 @@ async function runDoctorCommand(filter) {
|
|
|
3665
3665
|
console.log("");
|
|
3666
3666
|
console.log(chalk.bold("\u{1F527} Daemon Spawn Diagnostics"));
|
|
3667
3667
|
const projectRoot = types.projectPath();
|
|
3668
|
-
const wrapperPath = node_path.join(projectRoot, "bin", "
|
|
3668
|
+
const wrapperPath = node_path.join(projectRoot, "bin", "zenflo.mjs");
|
|
3669
3669
|
const cliEntrypoint = node_path.join(projectRoot, "dist", "index.mjs");
|
|
3670
3670
|
console.log(`Project Root: ${chalk.blue(projectRoot)}`);
|
|
3671
3671
|
console.log(`Wrapper Script: ${chalk.blue(wrapperPath)}`);
|
|
@@ -3674,7 +3674,7 @@ async function runDoctorCommand(filter) {
|
|
|
3674
3674
|
console.log(`CLI Exists: ${fs.existsSync(cliEntrypoint) ? chalk.green("\u2713 Yes") : chalk.red("\u274C No")}`);
|
|
3675
3675
|
console.log("");
|
|
3676
3676
|
console.log(chalk.bold("\u2699\uFE0F Configuration"));
|
|
3677
|
-
console.log(`
|
|
3677
|
+
console.log(`ZenFlo Home: ${chalk.blue(types.configuration.zenfloHomeDir)}`);
|
|
3678
3678
|
console.log(`Server URL: ${chalk.blue(types.configuration.serverUrl)}`);
|
|
3679
3679
|
console.log(`Logs Dir: ${chalk.blue(types.configuration.logsDir)}`);
|
|
3680
3680
|
console.log(chalk.bold("\n\u{1F30D} Environment Variables"));
|
|
@@ -3726,7 +3726,7 @@ async function runDoctorCommand(filter) {
|
|
|
3726
3726
|
console.log(chalk.blue(`Location: ${types.configuration.daemonStateFile}`));
|
|
3727
3727
|
console.log(chalk.gray(JSON.stringify(state, null, 2)));
|
|
3728
3728
|
}
|
|
3729
|
-
const allProcesses = await
|
|
3729
|
+
const allProcesses = await findAllZenfloProcesses();
|
|
3730
3730
|
if (allProcesses.length > 0) {
|
|
3731
3731
|
console.log(chalk.bold("\n\u{1F50D} All ZenFlo CLI Processes"));
|
|
3732
3732
|
const grouped = allProcesses.reduce((groups, process2) => {
|
|
@@ -3757,11 +3757,11 @@ ${typeLabels[type] || type}:`));
|
|
|
3757
3757
|
});
|
|
3758
3758
|
});
|
|
3759
3759
|
} else {
|
|
3760
|
-
console.log(chalk.red("\u274C No
|
|
3760
|
+
console.log(chalk.red("\u274C No zenflo processes found"));
|
|
3761
3761
|
}
|
|
3762
3762
|
if (filter === "all" && allProcesses.length > 1) {
|
|
3763
3763
|
console.log(chalk.bold("\n\u{1F4A1} Process Management"));
|
|
3764
|
-
console.log(chalk.gray("To clean up runaway processes:
|
|
3764
|
+
console.log(chalk.gray("To clean up runaway processes: zenflo doctor clean"));
|
|
3765
3765
|
}
|
|
3766
3766
|
} catch (error) {
|
|
3767
3767
|
console.log(chalk.red("\u274C Error checking daemon status"));
|
|
@@ -4744,7 +4744,7 @@ function registerKillSessionHandler(rpcHandlerManager, killThisHappy) {
|
|
|
4744
4744
|
void killThisHappy();
|
|
4745
4745
|
return {
|
|
4746
4746
|
success: true,
|
|
4747
|
-
message: "Killing
|
|
4747
|
+
message: "Killing zenflo-cli process"
|
|
4748
4748
|
};
|
|
4749
4749
|
});
|
|
4750
4750
|
}
|
|
@@ -5025,7 +5025,7 @@ async function runClaude(credentials, options = {}) {
|
|
|
5025
5025
|
process.exit(0);
|
|
5026
5026
|
}
|
|
5027
5027
|
|
|
5028
|
-
const __filename$1 = url.fileURLToPath((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('index-
|
|
5028
|
+
const __filename$1 = url.fileURLToPath((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('index-CJ8JfQbJ.cjs', document.baseURI).href)));
|
|
5029
5029
|
const __dirname$1 = path.dirname(__filename$1);
|
|
5030
5030
|
const PLIST_LABEL$1 = "com.zenflo.daemon";
|
|
5031
5031
|
const LAUNCH_AGENTS_DIR$1 = path.join(os$1.homedir(), "Library", "LaunchAgents");
|
|
@@ -6306,7 +6306,7 @@ async function handleConnectVendor(vendor, displayName) {
|
|
|
6306
6306
|
return;
|
|
6307
6307
|
} else if (subcommand === "codex") {
|
|
6308
6308
|
try {
|
|
6309
|
-
const { runCodex } = await Promise.resolve().then(function () { return require('./runCodex-
|
|
6309
|
+
const { runCodex } = await Promise.resolve().then(function () { return require('./runCodex-gxOwFxj9.cjs'); });
|
|
6310
6310
|
let startedBy = void 0;
|
|
6311
6311
|
for (let i = 1; i < args.length; i++) {
|
|
6312
6312
|
if (args[i] === "--started-by") {
|
|
@@ -6327,7 +6327,7 @@ async function handleConnectVendor(vendor, displayName) {
|
|
|
6327
6327
|
return;
|
|
6328
6328
|
} else if (subcommand === "ccr" || subcommand === "glm") {
|
|
6329
6329
|
try {
|
|
6330
|
-
const { runCCR } = await Promise.resolve().then(function () { return require('./runCCR-
|
|
6330
|
+
const { runCCR } = await Promise.resolve().then(function () { return require('./runCCR-CsBd9Bin.cjs'); });
|
|
6331
6331
|
let startedBy = void 0;
|
|
6332
6332
|
for (let i = 1; i < args.length; i++) {
|
|
6333
6333
|
if (args[i] === "--started-by") {
|
|
@@ -6430,13 +6430,13 @@ async function handleConnectVendor(vendor, displayName) {
|
|
|
6430
6430
|
let statusModule;
|
|
6431
6431
|
switch (process.platform) {
|
|
6432
6432
|
case "darwin":
|
|
6433
|
-
statusModule = await Promise.resolve().then(function () { return require('./status-
|
|
6433
|
+
statusModule = await Promise.resolve().then(function () { return require('./status-wSLqL6_S.cjs'); });
|
|
6434
6434
|
break;
|
|
6435
6435
|
case "win32":
|
|
6436
|
-
statusModule = await Promise.resolve().then(function () { return require('./status-
|
|
6436
|
+
statusModule = await Promise.resolve().then(function () { return require('./status-CmuBM9eE.cjs'); });
|
|
6437
6437
|
break;
|
|
6438
6438
|
case "linux":
|
|
6439
|
-
statusModule = await Promise.resolve().then(function () { return require('./status-
|
|
6439
|
+
statusModule = await Promise.resolve().then(function () { return require('./status-B_tjHFOS.cjs'); });
|
|
6440
6440
|
break;
|
|
6441
6441
|
default:
|
|
6442
6442
|
console.error(chalk.red(`Status command not supported on platform: ${process.platform}`));
|
|
@@ -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-cYVbBsSI.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';
|
|
@@ -214,10 +214,10 @@ const CO_AUTHORED_CREDITS = (() => trimIdent(`
|
|
|
214
214
|
<main commit message>
|
|
215
215
|
|
|
216
216
|
Generated with [Claude Code](https://claude.ai/code)
|
|
217
|
-
via [ZenFlo](https://zenflo.
|
|
217
|
+
via [ZenFlo](https://zenflo.dev)
|
|
218
218
|
|
|
219
219
|
Co-Authored-By: Claude <noreply@anthropic.com>
|
|
220
|
-
Co-Authored-By: ZenFlo <yesreply@zenflo.
|
|
220
|
+
Co-Authored-By: ZenFlo <yesreply@zenflo.dev>
|
|
221
221
|
`))();
|
|
222
222
|
const systemPrompt = (() => {
|
|
223
223
|
const includeCoAuthored = shouldIncludeCoAuthoredBy();
|
|
@@ -3522,7 +3522,7 @@ async function waitForProcessDeath(pid, timeout) {
|
|
|
3522
3522
|
throw new Error("Process did not die within timeout");
|
|
3523
3523
|
}
|
|
3524
3524
|
|
|
3525
|
-
async function
|
|
3525
|
+
async function findAllZenfloProcesses() {
|
|
3526
3526
|
try {
|
|
3527
3527
|
const processes = await psList();
|
|
3528
3528
|
const allProcesses = [];
|
|
@@ -3554,14 +3554,14 @@ async function findAllHappyProcesses() {
|
|
|
3554
3554
|
return [];
|
|
3555
3555
|
}
|
|
3556
3556
|
}
|
|
3557
|
-
async function
|
|
3558
|
-
const allProcesses = await
|
|
3557
|
+
async function findRunawayZenfloProcesses() {
|
|
3558
|
+
const allProcesses = await findAllZenfloProcesses();
|
|
3559
3559
|
return allProcesses.filter(
|
|
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
3563
|
async function killRunawayZenfloProcesses() {
|
|
3564
|
-
const runawayProcesses = await
|
|
3564
|
+
const runawayProcesses = await findRunawayZenfloProcesses();
|
|
3565
3565
|
const errors = [];
|
|
3566
3566
|
let killed = 0;
|
|
3567
3567
|
for (const { pid, command } of runawayProcesses) {
|
|
@@ -3643,7 +3643,7 @@ async function runDoctorCommand(filter) {
|
|
|
3643
3643
|
console.log("");
|
|
3644
3644
|
console.log(chalk.bold("\u{1F527} Daemon Spawn Diagnostics"));
|
|
3645
3645
|
const projectRoot = projectPath();
|
|
3646
|
-
const wrapperPath = join(projectRoot, "bin", "
|
|
3646
|
+
const wrapperPath = join(projectRoot, "bin", "zenflo.mjs");
|
|
3647
3647
|
const cliEntrypoint = join(projectRoot, "dist", "index.mjs");
|
|
3648
3648
|
console.log(`Project Root: ${chalk.blue(projectRoot)}`);
|
|
3649
3649
|
console.log(`Wrapper Script: ${chalk.blue(wrapperPath)}`);
|
|
@@ -3652,7 +3652,7 @@ async function runDoctorCommand(filter) {
|
|
|
3652
3652
|
console.log(`CLI Exists: ${existsSync(cliEntrypoint) ? chalk.green("\u2713 Yes") : chalk.red("\u274C No")}`);
|
|
3653
3653
|
console.log("");
|
|
3654
3654
|
console.log(chalk.bold("\u2699\uFE0F Configuration"));
|
|
3655
|
-
console.log(`
|
|
3655
|
+
console.log(`ZenFlo Home: ${chalk.blue(configuration.zenfloHomeDir)}`);
|
|
3656
3656
|
console.log(`Server URL: ${chalk.blue(configuration.serverUrl)}`);
|
|
3657
3657
|
console.log(`Logs Dir: ${chalk.blue(configuration.logsDir)}`);
|
|
3658
3658
|
console.log(chalk.bold("\n\u{1F30D} Environment Variables"));
|
|
@@ -3704,7 +3704,7 @@ async function runDoctorCommand(filter) {
|
|
|
3704
3704
|
console.log(chalk.blue(`Location: ${configuration.daemonStateFile}`));
|
|
3705
3705
|
console.log(chalk.gray(JSON.stringify(state, null, 2)));
|
|
3706
3706
|
}
|
|
3707
|
-
const allProcesses = await
|
|
3707
|
+
const allProcesses = await findAllZenfloProcesses();
|
|
3708
3708
|
if (allProcesses.length > 0) {
|
|
3709
3709
|
console.log(chalk.bold("\n\u{1F50D} All ZenFlo CLI Processes"));
|
|
3710
3710
|
const grouped = allProcesses.reduce((groups, process2) => {
|
|
@@ -3735,11 +3735,11 @@ ${typeLabels[type] || type}:`));
|
|
|
3735
3735
|
});
|
|
3736
3736
|
});
|
|
3737
3737
|
} else {
|
|
3738
|
-
console.log(chalk.red("\u274C No
|
|
3738
|
+
console.log(chalk.red("\u274C No zenflo processes found"));
|
|
3739
3739
|
}
|
|
3740
3740
|
if (filter === "all" && allProcesses.length > 1) {
|
|
3741
3741
|
console.log(chalk.bold("\n\u{1F4A1} Process Management"));
|
|
3742
|
-
console.log(chalk.gray("To clean up runaway processes:
|
|
3742
|
+
console.log(chalk.gray("To clean up runaway processes: zenflo doctor clean"));
|
|
3743
3743
|
}
|
|
3744
3744
|
} catch (error) {
|
|
3745
3745
|
console.log(chalk.red("\u274C Error checking daemon status"));
|
|
@@ -4722,7 +4722,7 @@ function registerKillSessionHandler(rpcHandlerManager, killThisHappy) {
|
|
|
4722
4722
|
void killThisHappy();
|
|
4723
4723
|
return {
|
|
4724
4724
|
success: true,
|
|
4725
|
-
message: "Killing
|
|
4725
|
+
message: "Killing zenflo-cli process"
|
|
4726
4726
|
};
|
|
4727
4727
|
});
|
|
4728
4728
|
}
|
|
@@ -6284,7 +6284,7 @@ async function handleConnectVendor(vendor, displayName) {
|
|
|
6284
6284
|
return;
|
|
6285
6285
|
} else if (subcommand === "codex") {
|
|
6286
6286
|
try {
|
|
6287
|
-
const { runCodex } = await import('./runCodex-
|
|
6287
|
+
const { runCodex } = await import('./runCodex-CAfYUB9k.mjs');
|
|
6288
6288
|
let startedBy = void 0;
|
|
6289
6289
|
for (let i = 1; i < args.length; i++) {
|
|
6290
6290
|
if (args[i] === "--started-by") {
|
|
@@ -6305,7 +6305,7 @@ async function handleConnectVendor(vendor, displayName) {
|
|
|
6305
6305
|
return;
|
|
6306
6306
|
} else if (subcommand === "ccr" || subcommand === "glm") {
|
|
6307
6307
|
try {
|
|
6308
|
-
const { runCCR } = await import('./runCCR-
|
|
6308
|
+
const { runCCR } = await import('./runCCR-BUMMywJS.mjs');
|
|
6309
6309
|
let startedBy = void 0;
|
|
6310
6310
|
for (let i = 1; i < args.length; i++) {
|
|
6311
6311
|
if (args[i] === "--started-by") {
|
|
@@ -6408,13 +6408,13 @@ async function handleConnectVendor(vendor, displayName) {
|
|
|
6408
6408
|
let statusModule;
|
|
6409
6409
|
switch (process.platform) {
|
|
6410
6410
|
case "darwin":
|
|
6411
|
-
statusModule = await import('./status-
|
|
6411
|
+
statusModule = await import('./status-Ci3LMn8d.mjs');
|
|
6412
6412
|
break;
|
|
6413
6413
|
case "win32":
|
|
6414
|
-
statusModule = await import('./status-
|
|
6414
|
+
statusModule = await import('./status-BPrNeVH-.mjs');
|
|
6415
6415
|
break;
|
|
6416
6416
|
case "linux":
|
|
6417
|
-
statusModule = await import('./status-
|
|
6417
|
+
statusModule = await import('./status-CbsGtmMn.mjs');
|
|
6418
6418
|
break;
|
|
6419
6419
|
default:
|
|
6420
6420
|
console.error(chalk.red(`Status command not supported on platform: ${process.platform}`));
|
package/dist/index.cjs
CHANGED
package/dist/index.mjs
CHANGED
package/dist/lib.cjs
CHANGED
package/dist/lib.d.cts
CHANGED
|
@@ -668,7 +668,7 @@ type SpawnSessionResult = {
|
|
|
668
668
|
};
|
|
669
669
|
|
|
670
670
|
/**
|
|
671
|
-
* WebSocket client for machine/daemon communication with
|
|
671
|
+
* WebSocket client for machine/daemon communication with ZenFlo server
|
|
672
672
|
* Similar to ApiSessionClient but for machine-scoped connections
|
|
673
673
|
*/
|
|
674
674
|
|
package/dist/lib.d.mts
CHANGED
|
@@ -668,7 +668,7 @@ type SpawnSessionResult = {
|
|
|
668
668
|
};
|
|
669
669
|
|
|
670
670
|
/**
|
|
671
|
-
* WebSocket client for machine/daemon communication with
|
|
671
|
+
* WebSocket client for machine/daemon communication with ZenFlo server
|
|
672
672
|
* Similar to ApiSessionClient but for machine-scoped connections
|
|
673
673
|
*/
|
|
674
674
|
|
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-cYVbBsSI.mjs';
|
|
2
2
|
import 'axios';
|
|
3
3
|
import 'chalk';
|
|
4
4
|
import 'fs';
|
|
@@ -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-HyLXtYMY.mjs';
|
|
2
|
+
import { l as logger } from './types-cYVbBsSI.mjs';
|
|
3
3
|
import { execSync } from 'node:child_process';
|
|
4
4
|
import 'chalk';
|
|
5
5
|
import 'node:os';
|
|
@@ -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-CJ8JfQbJ.cjs');
|
|
4
|
+
var types = require('./types-DILJPonx.cjs');
|
|
5
5
|
var node_child_process = require('node:child_process');
|
|
6
6
|
require('chalk');
|
|
7
7
|
require('node:os');
|
|
@@ -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-cYVbBsSI.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-HyLXtYMY.mjs';
|
|
11
11
|
import os from 'node:os';
|
|
12
12
|
import { resolve, join } from 'node:path';
|
|
13
13
|
import fs from 'node:fs';
|
|
@@ -72,7 +72,7 @@ class CodexMcpClient {
|
|
|
72
72
|
permissionHandler = null;
|
|
73
73
|
constructor() {
|
|
74
74
|
this.client = new Client(
|
|
75
|
-
{ name: "
|
|
75
|
+
{ name: "zenflo-codex-client", version: "1.0.0" },
|
|
76
76
|
{ capabilities: { tools: {}, elicitation: {} } }
|
|
77
77
|
);
|
|
78
78
|
this.client.setNotificationHandler(z.object({
|
|
@@ -1126,7 +1126,7 @@ async function runCodex(opts) {
|
|
|
1126
1126
|
const bridgeCommand = join(projectPath(), "bin", "zenflo-mcp.mjs");
|
|
1127
1127
|
const zenModeConfig = {
|
|
1128
1128
|
command: "node",
|
|
1129
|
-
args: [join(projectPath(), "..", "zen-
|
|
1129
|
+
args: [join(projectPath(), "..", "integrations", "mcp", "zen-mode", "zen-mode-mcp-server", "dist", "index.js")]
|
|
1130
1130
|
};
|
|
1131
1131
|
if (process.env.ZENFLO_AUTH_TOKEN || process.env.ZENFLO_SECRET_KEY || process.env.ZENFLO_USER_ID) {
|
|
1132
1132
|
zenModeConfig.env = {};
|
|
@@ -1141,7 +1141,7 @@ async function runCodex(opts) {
|
|
|
1141
1141
|
}
|
|
1142
1142
|
}
|
|
1143
1143
|
const mcpServers = {
|
|
1144
|
-
|
|
1144
|
+
zenflo: {
|
|
1145
1145
|
command: bridgeCommand,
|
|
1146
1146
|
args: ["--url", zenfloServer.url]
|
|
1147
1147
|
},
|
|
@@ -1232,7 +1232,7 @@ async function runCodex(opts) {
|
|
|
1232
1232
|
})();
|
|
1233
1233
|
if (!wasCreated) {
|
|
1234
1234
|
const startConfig = {
|
|
1235
|
-
prompt: first ? message.message + "\n\n" + trimIdent(`Based on this message, call functions.
|
|
1235
|
+
prompt: first ? message.message + "\n\n" + trimIdent(`Based on this message, call functions.zenflo__change_title to change chat session title that would represent the current task. If chat idea would change dramatically - call this function again to update the title.`) : message.message,
|
|
1236
1236
|
sandbox,
|
|
1237
1237
|
"approval-policy": approvalPolicy,
|
|
1238
1238
|
config: { mcp_servers: mcpServers }
|
|
@@ -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-DILJPonx.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-CJ8JfQbJ.cjs');
|
|
13
13
|
var os = require('node:os');
|
|
14
14
|
var node_path = require('node:path');
|
|
15
15
|
var fs = require('node:fs');
|
|
@@ -74,7 +74,7 @@ class CodexMcpClient {
|
|
|
74
74
|
permissionHandler = null;
|
|
75
75
|
constructor() {
|
|
76
76
|
this.client = new index_js.Client(
|
|
77
|
-
{ name: "
|
|
77
|
+
{ name: "zenflo-codex-client", version: "1.0.0" },
|
|
78
78
|
{ capabilities: { tools: {}, elicitation: {} } }
|
|
79
79
|
);
|
|
80
80
|
this.client.setNotificationHandler(z.z.object({
|
|
@@ -1128,7 +1128,7 @@ async function runCodex(opts) {
|
|
|
1128
1128
|
const bridgeCommand = node_path.join(types.projectPath(), "bin", "zenflo-mcp.mjs");
|
|
1129
1129
|
const zenModeConfig = {
|
|
1130
1130
|
command: "node",
|
|
1131
|
-
args: [node_path.join(types.projectPath(), "..", "zen-
|
|
1131
|
+
args: [node_path.join(types.projectPath(), "..", "integrations", "mcp", "zen-mode", "zen-mode-mcp-server", "dist", "index.js")]
|
|
1132
1132
|
};
|
|
1133
1133
|
if (process.env.ZENFLO_AUTH_TOKEN || process.env.ZENFLO_SECRET_KEY || process.env.ZENFLO_USER_ID) {
|
|
1134
1134
|
zenModeConfig.env = {};
|
|
@@ -1143,7 +1143,7 @@ async function runCodex(opts) {
|
|
|
1143
1143
|
}
|
|
1144
1144
|
}
|
|
1145
1145
|
const mcpServers = {
|
|
1146
|
-
|
|
1146
|
+
zenflo: {
|
|
1147
1147
|
command: bridgeCommand,
|
|
1148
1148
|
args: ["--url", zenfloServer.url]
|
|
1149
1149
|
},
|
|
@@ -1234,7 +1234,7 @@ async function runCodex(opts) {
|
|
|
1234
1234
|
})();
|
|
1235
1235
|
if (!wasCreated) {
|
|
1236
1236
|
const startConfig = {
|
|
1237
|
-
prompt: first ? message.message + "\n\n" + index.trimIdent(`Based on this message, call functions.
|
|
1237
|
+
prompt: first ? message.message + "\n\n" + index.trimIdent(`Based on this message, call functions.zenflo__change_title to change chat session title that would represent the current task. If chat idea would change dramatically - call this function again to update the title.`) : message.message,
|
|
1238
1238
|
sandbox,
|
|
1239
1239
|
"approval-policy": approvalPolicy,
|
|
1240
1240
|
config: { mcp_servers: mcpServers }
|
|
@@ -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-cYVbBsSI.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-cYVbBsSI.mjs';
|
|
7
7
|
import 'axios';
|
|
8
8
|
import 'node:fs';
|
|
9
9
|
import 'node:os';
|
|
@@ -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-DILJPonx.cjs');
|
|
9
9
|
require('axios');
|
|
10
10
|
require('node:fs');
|
|
11
11
|
require('node:os');
|
|
@@ -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.13.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";
|
|
@@ -105,11 +105,9 @@ var scripts = {
|
|
|
105
105
|
"why do we need to build before running tests / dev?": "We need the binary to be built so we run daemon commands which directly run the binary - we don't want them to go out of sync or have custom spawn logic depending how we started zenflo",
|
|
106
106
|
typecheck: "tsc --noEmit",
|
|
107
107
|
build: "shx rm -rf dist && npx tsc --noEmit && pkgroll",
|
|
108
|
-
test: "yarn build &&
|
|
108
|
+
test: "yarn build && ZENFLO_HOME_DIR=~/.zenflo-test tsx node_modules/.bin/vitest run",
|
|
109
109
|
start: "yarn build && ./bin/zenflo.mjs",
|
|
110
|
-
dev: "tsx src/index.ts",
|
|
111
|
-
"dev:local-server": "yarn build && tsx --env-file .env.dev-local-server src/index.ts",
|
|
112
|
-
"dev:integration-test-env": "yarn build && tsx --env-file .env.integration-test src/index.ts",
|
|
110
|
+
dev: "DEBUG=1 tsx src/index.ts",
|
|
113
111
|
prepublishOnly: "yarn build && yarn test",
|
|
114
112
|
release: "release-it",
|
|
115
113
|
postinstall: "node scripts/unpack-tools.cjs"
|
|
@@ -1028,7 +1026,7 @@ class RpcHandlerManager {
|
|
|
1028
1026
|
}
|
|
1029
1027
|
}
|
|
1030
1028
|
|
|
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-
|
|
1029
|
+
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-DILJPonx.cjs', document.baseURI).href))));
|
|
1032
1030
|
function projectPath() {
|
|
1033
1031
|
const path$1 = path.resolve(__dirname$1, "..");
|
|
1034
1032
|
return path$1;
|
|
@@ -1847,7 +1845,7 @@ class PushNotificationClient {
|
|
|
1847
1845
|
token;
|
|
1848
1846
|
baseUrl;
|
|
1849
1847
|
expo;
|
|
1850
|
-
constructor(token, baseUrl = "https://api.
|
|
1848
|
+
constructor(token, baseUrl = "https://api.zenflo.dev") {
|
|
1851
1849
|
this.token = token;
|
|
1852
1850
|
this.baseUrl = baseUrl;
|
|
1853
1851
|
this.expo = new expoServerSdk.Expo();
|
|
@@ -2071,7 +2069,7 @@ class ApiClient {
|
|
|
2071
2069
|
);
|
|
2072
2070
|
if (response.status !== 200) {
|
|
2073
2071
|
console.error(chalk.red(`[API] Failed to create machine: ${response.statusText}`));
|
|
2074
|
-
console.log(chalk.yellow(`[API] Failed to create machine: ${response.statusText}, most likely you have re-authenticated, but you still have a machine associated with the old account. Now we are trying to re-associate the machine with the new account. That is not allowed. Please run '
|
|
2072
|
+
console.log(chalk.yellow(`[API] Failed to create machine: ${response.statusText}, most likely you have re-authenticated, but you still have a machine associated with the old account. Now we are trying to re-associate the machine with the new account. That is not allowed. Please run 'zenflo doctor clean' to clean up your state, and try your original command again. Please create an issue on github if this is causing you problems. We apologize for the inconvenience.`));
|
|
2075
2073
|
process.exit(1);
|
|
2076
2074
|
}
|
|
2077
2075
|
const raw = response.data.machine;
|
|
@@ -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.13.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";
|
|
@@ -84,11 +84,9 @@ var scripts = {
|
|
|
84
84
|
"why do we need to build before running tests / dev?": "We need the binary to be built so we run daemon commands which directly run the binary - we don't want them to go out of sync or have custom spawn logic depending how we started zenflo",
|
|
85
85
|
typecheck: "tsc --noEmit",
|
|
86
86
|
build: "shx rm -rf dist && npx tsc --noEmit && pkgroll",
|
|
87
|
-
test: "yarn build &&
|
|
87
|
+
test: "yarn build && ZENFLO_HOME_DIR=~/.zenflo-test tsx node_modules/.bin/vitest run",
|
|
88
88
|
start: "yarn build && ./bin/zenflo.mjs",
|
|
89
|
-
dev: "tsx src/index.ts",
|
|
90
|
-
"dev:local-server": "yarn build && tsx --env-file .env.dev-local-server src/index.ts",
|
|
91
|
-
"dev:integration-test-env": "yarn build && tsx --env-file .env.integration-test src/index.ts",
|
|
89
|
+
dev: "DEBUG=1 tsx src/index.ts",
|
|
92
90
|
prepublishOnly: "yarn build && yarn test",
|
|
93
91
|
release: "release-it",
|
|
94
92
|
postinstall: "node scripts/unpack-tools.cjs"
|
|
@@ -1826,7 +1824,7 @@ class PushNotificationClient {
|
|
|
1826
1824
|
token;
|
|
1827
1825
|
baseUrl;
|
|
1828
1826
|
expo;
|
|
1829
|
-
constructor(token, baseUrl = "https://api.
|
|
1827
|
+
constructor(token, baseUrl = "https://api.zenflo.dev") {
|
|
1830
1828
|
this.token = token;
|
|
1831
1829
|
this.baseUrl = baseUrl;
|
|
1832
1830
|
this.expo = new Expo();
|
|
@@ -2050,7 +2048,7 @@ class ApiClient {
|
|
|
2050
2048
|
);
|
|
2051
2049
|
if (response.status !== 200) {
|
|
2052
2050
|
console.error(chalk.red(`[API] Failed to create machine: ${response.statusText}`));
|
|
2053
|
-
console.log(chalk.yellow(`[API] Failed to create machine: ${response.statusText}, most likely you have re-authenticated, but you still have a machine associated with the old account. Now we are trying to re-associate the machine with the new account. That is not allowed. Please run '
|
|
2051
|
+
console.log(chalk.yellow(`[API] Failed to create machine: ${response.statusText}, most likely you have re-authenticated, but you still have a machine associated with the old account. Now we are trying to re-associate the machine with the new account. That is not allowed. Please run 'zenflo doctor clean' to clean up your state, and try your original command again. Please create an issue on github if this is causing you problems. We apologize for the inconvenience.`));
|
|
2054
2052
|
process.exit(1);
|
|
2055
2053
|
}
|
|
2056
2054
|
const raw = response.data.machine;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "zenflo",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.13.0",
|
|
4
4
|
"description": "Mobile and Web client for Claude Code and Codex - ZenFlo edition",
|
|
5
5
|
"author": "Combined Memory",
|
|
6
6
|
"license": "MIT",
|
|
@@ -63,11 +63,9 @@
|
|
|
63
63
|
"why do we need to build before running tests / dev?": "We need the binary to be built so we run daemon commands which directly run the binary - we don't want them to go out of sync or have custom spawn logic depending how we started zenflo",
|
|
64
64
|
"typecheck": "tsc --noEmit",
|
|
65
65
|
"build": "shx rm -rf dist && npx tsc --noEmit && pkgroll",
|
|
66
|
-
"test": "yarn build &&
|
|
66
|
+
"test": "yarn build && ZENFLO_HOME_DIR=~/.zenflo-test tsx node_modules/.bin/vitest run",
|
|
67
67
|
"start": "yarn build && ./bin/zenflo.mjs",
|
|
68
|
-
"dev": "tsx src/index.ts",
|
|
69
|
-
"dev:local-server": "yarn build && tsx --env-file .env.dev-local-server src/index.ts",
|
|
70
|
-
"dev:integration-test-env": "yarn build && tsx --env-file .env.integration-test src/index.ts",
|
|
68
|
+
"dev": "DEBUG=1 tsx src/index.ts",
|
|
71
69
|
"prepublishOnly": "yarn build && yarn test",
|
|
72
70
|
"release": "release-it",
|
|
73
71
|
"postinstall": "node scripts/unpack-tools.cjs"
|