flockbay 0.10.35 → 0.10.38

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.
@@ -2,7 +2,7 @@ import{createRequire as _pkgrollCR}from"node:module";const require=_pkgrollCR(im
2
2
  import * as os from 'node:os';
3
3
  import os__default, { homedir } from 'node:os';
4
4
  import { randomUUID, createCipheriv, randomBytes, createHash as createHash$1 } from 'node:crypto';
5
- import { l as logger, b as projectPath, d as backoff, e as delay, R as RawJSONLinesSchema, c as configuration, f as readDaemonState, g as clearDaemonState, p as packageJson, r as readSettings, h as readCredentials, u as updateSettings, w as writeCredentials, j as unrealMcpPythonDir, k as acquireDaemonLock, m as writeDaemonState, n as ApiMachineClient, o as releaseDaemonLock, s as sendUnrealMcpTcpCommand, A as ApiClient, v as validatePath, q as run, t as run$1, x as buildShellInvocation, y as clearCredentials, z as clearMachineId, i as installUnrealMcpPluginToEngine, B as buildAndInstallUnrealMcpPlugin, C as getLatestDaemonLog, D as normalizeServerUrlForNode } from './types-CA4DI_7D.mjs';
5
+ import { l as logger, b as projectPath, d as backoff, e as delay, R as RawJSONLinesSchema, c as configuration, f as readDaemonState, g as clearDaemonState, p as packageJson, r as readSettings, h as readCredentials, u as updateSettings, w as writeCredentials, j as unrealMcpPythonDir, k as acquireDaemonLock, m as writeDaemonState, n as ApiMachineClient, o as releaseDaemonLock, s as sendUnrealMcpTcpCommand, A as ApiClient, v as validatePath, q as run, t as run$1, x as buildShellInvocation, y as clearCredentials, z as clearMachineId, i as installUnrealMcpPluginToEngine, B as buildAndInstallUnrealMcpPlugin, C as getLatestDaemonLog, D as normalizeServerUrlForNode } from './types-BM8taUEY.mjs';
6
6
  import { spawn, execFileSync, execSync } from 'node:child_process';
7
7
  import * as path from 'node:path';
8
8
  import path__default, { resolve, join, dirname } from 'node:path';
@@ -14334,14 +14334,21 @@ async function handleConnectCommand(args) {
14334
14334
  process.exit(1);
14335
14335
  }
14336
14336
  }
14337
+ function parseConnectFlags(flags) {
14338
+ const normalized = flags.map((flag) => String(flag || "").trim()).filter(Boolean);
14339
+ return {
14340
+ noLocal: normalized.includes("--no-local"),
14341
+ forceBrowser: normalized.includes("--force-browser")
14342
+ };
14343
+ }
14337
14344
  function showConnectHelp() {
14338
14345
  console.log(`
14339
14346
  ${chalk.bold("flockbay connect")} - Connect AI vendor API keys to Flockbay
14340
14347
 
14341
14348
  ${chalk.bold("Usage:")}
14342
- flockbay connect codex [--no-local] Store your OpenAI tokens in Flockbay (and sync Codex CLI login)
14343
- flockbay connect claude Store your Anthropic tokens in Flockbay
14344
- flockbay connect gemini Store your Gemini tokens in Flockbay
14349
+ flockbay connect codex [--no-local] [--force-browser] Store your OpenAI tokens in Flockbay (and sync Codex CLI login)
14350
+ flockbay connect claude [--force-browser] Store your Anthropic tokens in Flockbay
14351
+ flockbay connect gemini [--force-browser] Store your Gemini tokens in Flockbay
14345
14352
  flockbay connect help Show this help message
14346
14353
 
14347
14354
  ${chalk.bold("Description:")}
@@ -14351,12 +14358,14 @@ ${chalk.bold("Description:")}
14351
14358
  ${chalk.bold("Examples:")}
14352
14359
  flockbay connect codex
14353
14360
  flockbay connect codex --no-local
14361
+ flockbay connect codex --force-browser
14354
14362
  flockbay connect claude
14355
14363
  flockbay connect gemini
14356
14364
 
14357
14365
  ${chalk.bold("Notes:")}
14358
14366
  \u2022 You must be authenticated first (run 'flockbay auth login')
14359
14367
  \u2022 Tokens are encrypted and stored securely
14368
+ \u2022 Use --force-browser when running connect from a non-interactive shell (e.g. from the Flockbay app) to always open a browser
14360
14369
  \u2022 By default, 'connect codex' also updates ${chalk.bold("~/.codex/auth.json")} so ${chalk.bold("codex")} uses the same account
14361
14370
  `);
14362
14371
  }
@@ -14364,6 +14373,10 @@ async function handleConnectVendor(vendor, displayName, flags) {
14364
14373
  console.log(chalk.bold(`
14365
14374
  \u{1F50C} Connecting ${displayName} to Flockbay
14366
14375
  `));
14376
+ const { noLocal, forceBrowser } = parseConnectFlags(flags);
14377
+ if (forceBrowser) {
14378
+ process.env.FLOCKBAY_FORCE_BROWSER = "1";
14379
+ }
14367
14380
  const credentials = await readCredentials();
14368
14381
  if (!credentials) {
14369
14382
  console.log(chalk.yellow("\u26A0\uFE0F Not authenticated"));
@@ -14376,7 +14389,7 @@ async function handleConnectVendor(vendor, displayName, flags) {
14376
14389
  const codexAuthTokens = await authenticateCodex();
14377
14390
  await api.registerVendorToken("openai", { oauth: codexAuthTokens });
14378
14391
  console.log("\u2705 Codex token registered with server");
14379
- const shouldSyncLocal = !flags.includes("--no-local");
14392
+ const shouldSyncLocal = !noLocal;
14380
14393
  if (shouldSyncLocal) {
14381
14394
  try {
14382
14395
  const result = await syncCodexCliAuth(codexAuthTokens);
@@ -15527,7 +15540,7 @@ async function authAndSetupMachineIfNeeded() {
15527
15540
  process.exit(1);
15528
15541
  }
15529
15542
  try {
15530
- const { migrateUnrealMcpToFlockbayMcp } = await import('./migratePlugin-D12Rm64o.mjs');
15543
+ const { migrateUnrealMcpToFlockbayMcp } = await import('./migratePlugin-Gy6yBl8r.mjs');
15531
15544
  const result = migrateUnrealMcpToFlockbayMcp({
15532
15545
  engineRoot,
15533
15546
  projectUprojectPath: project || void 0,
@@ -15666,7 +15679,7 @@ ${engineRoot}`, {
15666
15679
  } else if (subcommand === "codex") {
15667
15680
  try {
15668
15681
  await chdirToNearestUprojectRootIfPresent();
15669
- const { runCodex } = await import('./runCodex-B1GawdWh.mjs');
15682
+ const { runCodex } = await import('./runCodex-BDKTB33T.mjs');
15670
15683
  let startedBy = void 0;
15671
15684
  let sessionId = void 0;
15672
15685
  for (let i = 1; i < args.length; i++) {
@@ -15768,7 +15781,7 @@ ${engineRoot}`, {
15768
15781
  }
15769
15782
  try {
15770
15783
  await chdirToNearestUprojectRootIfPresent();
15771
- const { runGemini } = await import('./runGemini-DkRnAl3E.mjs');
15784
+ const { runGemini } = await import('./runGemini-DXBlJgfJ.mjs');
15772
15785
  let startedBy = void 0;
15773
15786
  let sessionId = void 0;
15774
15787
  for (let i = 1; i < args.length; i++) {
@@ -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-Dm3ppWLz.cjs');
6
+ var types = require('./types-uq0EvaFD.cjs');
7
7
  var node_child_process = require('node:child_process');
8
8
  var path = require('node:path');
9
9
  var node_readline = require('node:readline');
@@ -1317,7 +1317,7 @@ function buildDaemonSafeEnv(baseEnv, binPath) {
1317
1317
  env[pathKey] = [...prepend, ...existingParts].join(pathSep);
1318
1318
  return env;
1319
1319
  }
1320
- 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-DwYaKKj_.cjs', document.baseURI).href)));
1320
+ 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-DgbOZbw5.cjs', document.baseURI).href)));
1321
1321
  const __dirname$1 = path.join(__filename$1, "..");
1322
1322
  function getGlobalClaudeVersion(claudeExecutable) {
1323
1323
  try {
@@ -14356,14 +14356,21 @@ async function handleConnectCommand(args) {
14356
14356
  process.exit(1);
14357
14357
  }
14358
14358
  }
14359
+ function parseConnectFlags(flags) {
14360
+ const normalized = flags.map((flag) => String(flag || "").trim()).filter(Boolean);
14361
+ return {
14362
+ noLocal: normalized.includes("--no-local"),
14363
+ forceBrowser: normalized.includes("--force-browser")
14364
+ };
14365
+ }
14359
14366
  function showConnectHelp() {
14360
14367
  console.log(`
14361
14368
  ${chalk.bold("flockbay connect")} - Connect AI vendor API keys to Flockbay
14362
14369
 
14363
14370
  ${chalk.bold("Usage:")}
14364
- flockbay connect codex [--no-local] Store your OpenAI tokens in Flockbay (and sync Codex CLI login)
14365
- flockbay connect claude Store your Anthropic tokens in Flockbay
14366
- flockbay connect gemini Store your Gemini tokens in Flockbay
14371
+ flockbay connect codex [--no-local] [--force-browser] Store your OpenAI tokens in Flockbay (and sync Codex CLI login)
14372
+ flockbay connect claude [--force-browser] Store your Anthropic tokens in Flockbay
14373
+ flockbay connect gemini [--force-browser] Store your Gemini tokens in Flockbay
14367
14374
  flockbay connect help Show this help message
14368
14375
 
14369
14376
  ${chalk.bold("Description:")}
@@ -14373,12 +14380,14 @@ ${chalk.bold("Description:")}
14373
14380
  ${chalk.bold("Examples:")}
14374
14381
  flockbay connect codex
14375
14382
  flockbay connect codex --no-local
14383
+ flockbay connect codex --force-browser
14376
14384
  flockbay connect claude
14377
14385
  flockbay connect gemini
14378
14386
 
14379
14387
  ${chalk.bold("Notes:")}
14380
14388
  \u2022 You must be authenticated first (run 'flockbay auth login')
14381
14389
  \u2022 Tokens are encrypted and stored securely
14390
+ \u2022 Use --force-browser when running connect from a non-interactive shell (e.g. from the Flockbay app) to always open a browser
14382
14391
  \u2022 By default, 'connect codex' also updates ${chalk.bold("~/.codex/auth.json")} so ${chalk.bold("codex")} uses the same account
14383
14392
  `);
14384
14393
  }
@@ -14386,6 +14395,10 @@ async function handleConnectVendor(vendor, displayName, flags) {
14386
14395
  console.log(chalk.bold(`
14387
14396
  \u{1F50C} Connecting ${displayName} to Flockbay
14388
14397
  `));
14398
+ const { noLocal, forceBrowser } = parseConnectFlags(flags);
14399
+ if (forceBrowser) {
14400
+ process.env.FLOCKBAY_FORCE_BROWSER = "1";
14401
+ }
14389
14402
  const credentials = await types.readCredentials();
14390
14403
  if (!credentials) {
14391
14404
  console.log(chalk.yellow("\u26A0\uFE0F Not authenticated"));
@@ -14398,7 +14411,7 @@ async function handleConnectVendor(vendor, displayName, flags) {
14398
14411
  const codexAuthTokens = await authenticateCodex();
14399
14412
  await api.registerVendorToken("openai", { oauth: codexAuthTokens });
14400
14413
  console.log("\u2705 Codex token registered with server");
14401
- const shouldSyncLocal = !flags.includes("--no-local");
14414
+ const shouldSyncLocal = !noLocal;
14402
14415
  if (shouldSyncLocal) {
14403
14416
  try {
14404
14417
  const result = await syncCodexCliAuth(codexAuthTokens);
@@ -15549,7 +15562,7 @@ async function authAndSetupMachineIfNeeded() {
15549
15562
  process.exit(1);
15550
15563
  }
15551
15564
  try {
15552
- const { migrateUnrealMcpToFlockbayMcp } = await Promise.resolve().then(function () { return require('./migratePlugin-BlHy_whP.cjs'); });
15565
+ const { migrateUnrealMcpToFlockbayMcp } = await Promise.resolve().then(function () { return require('./migratePlugin-DKQws0w2.cjs'); });
15553
15566
  const result = migrateUnrealMcpToFlockbayMcp({
15554
15567
  engineRoot,
15555
15568
  projectUprojectPath: project || void 0,
@@ -15688,7 +15701,7 @@ ${engineRoot}`, {
15688
15701
  } else if (subcommand === "codex") {
15689
15702
  try {
15690
15703
  await chdirToNearestUprojectRootIfPresent();
15691
- const { runCodex } = await Promise.resolve().then(function () { return require('./runCodex-BM8Orja_.cjs'); });
15704
+ const { runCodex } = await Promise.resolve().then(function () { return require('./runCodex-DAEB7LOW.cjs'); });
15692
15705
  let startedBy = void 0;
15693
15706
  let sessionId = void 0;
15694
15707
  for (let i = 1; i < args.length; i++) {
@@ -15790,7 +15803,7 @@ ${engineRoot}`, {
15790
15803
  }
15791
15804
  try {
15792
15805
  await chdirToNearestUprojectRootIfPresent();
15793
- const { runGemini } = await Promise.resolve().then(function () { return require('./runGemini-CM66E2lV.cjs'); });
15806
+ const { runGemini } = await Promise.resolve().then(function () { return require('./runGemini-CMwSv8pG.cjs'); });
15794
15807
  let startedBy = void 0;
15795
15808
  let sessionId = void 0;
15796
15809
  for (let i = 1; i < args.length; i++) {
package/dist/index.cjs CHANGED
@@ -1,8 +1,8 @@
1
1
  'use strict';
2
2
 
3
3
  require('chalk');
4
- require('./index-DwYaKKj_.cjs');
5
- require('./types-Dm3ppWLz.cjs');
4
+ require('./index-DgbOZbw5.cjs');
5
+ require('./types-uq0EvaFD.cjs');
6
6
  require('zod');
7
7
  require('node:child_process');
8
8
  require('node:fs');
package/dist/index.mjs CHANGED
@@ -1,6 +1,6 @@
1
1
  import 'chalk';
2
- import './index-BMs-hgAn.mjs';
3
- import './types-CA4DI_7D.mjs';
2
+ import './index-Cu04EShB.mjs';
3
+ import './types-BM8taUEY.mjs';
4
4
  import 'zod';
5
5
  import 'node:child_process';
6
6
  import 'node:fs';
package/dist/lib.cjs CHANGED
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var types = require('./types-Dm3ppWLz.cjs');
3
+ var types = require('./types-uq0EvaFD.cjs');
4
4
  require('axios');
5
5
  require('node:fs');
6
6
  require('node:os');
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-CA4DI_7D.mjs';
1
+ export { A as ApiClient, a as ApiSessionClient, R as RawJSONLinesSchema, c as configuration, l as logger } from './types-BM8taUEY.mjs';
2
2
  import 'axios';
3
3
  import 'node:fs';
4
4
  import 'node:os';
@@ -2,7 +2,7 @@
2
2
 
3
3
  var fs = require('node:fs');
4
4
  var path = require('node:path');
5
- var types = require('./types-Dm3ppWLz.cjs');
5
+ var types = require('./types-uq0EvaFD.cjs');
6
6
  require('axios');
7
7
  require('node:os');
8
8
  require('node:events');
@@ -1,6 +1,6 @@
1
1
  import fs__default from 'node:fs';
2
2
  import path__default from 'node:path';
3
- import { i as installUnrealMcpPluginToEngine } from './types-CA4DI_7D.mjs';
3
+ import { i as installUnrealMcpPluginToEngine } from './types-BM8taUEY.mjs';
4
4
  import 'axios';
5
5
  import 'node:os';
6
6
  import 'node:events';
@@ -1,6 +1,6 @@
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, p as packageJson, c as configuration, r as readSettings, b as projectPath } from './types-CA4DI_7D.mjs';
3
+ import { l as logger, A as ApiClient, p as packageJson, c as configuration, r as readSettings, b as projectPath } from './types-BM8taUEY.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';
@@ -10,7 +10,7 @@ import fs__default from 'node:fs';
10
10
  import os__default from 'node:os';
11
11
  import path__default, { resolve, join } from 'node:path';
12
12
  import { spawnSync } from 'node:child_process';
13
- import { s as shouldCountToolCall, c as consumeToolQuota, f as formatQuotaDeniedReason, h as hashObject, e as enforceCliVersionPolicy, i as initialMachineMetadata, E as ElicitationHub, n as notifyDaemonSessionStarted, M as MessageQueue2, P as PLATFORM_SYSTEM_PROMPT, a as setLatestUserImages, w as withUserImagesMarker, r as registerKillSessionHandler, b as MessageBuffer, d as startFlockbayServer, g as buildProjectCapsule, t as trimIdent, j as autoFinalizeCoordinationWorkItem, k as detectScreenshotsForGate, l as applyCoordinationSideEffectsFromMcpToolResult, m as stopCaffeinate } from './index-BMs-hgAn.mjs';
13
+ import { s as shouldCountToolCall, c as consumeToolQuota, f as formatQuotaDeniedReason, h as hashObject, e as enforceCliVersionPolicy, i as initialMachineMetadata, E as ElicitationHub, n as notifyDaemonSessionStarted, M as MessageQueue2, P as PLATFORM_SYSTEM_PROMPT, a as setLatestUserImages, w as withUserImagesMarker, r as registerKillSessionHandler, b as MessageBuffer, d as startFlockbayServer, g as buildProjectCapsule, t as trimIdent, j as autoFinalizeCoordinationWorkItem, k as detectScreenshotsForGate, l as applyCoordinationSideEffectsFromMcpToolResult, m as stopCaffeinate } from './index-Cu04EShB.mjs';
14
14
  import 'axios';
15
15
  import 'node:events';
16
16
  import 'socket.io-client';
@@ -2,7 +2,7 @@
2
2
 
3
3
  var ink = require('ink');
4
4
  var React = require('react');
5
- var types = require('./types-Dm3ppWLz.cjs');
5
+ var types = require('./types-uq0EvaFD.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');
@@ -12,7 +12,7 @@ var fs = require('node:fs');
12
12
  var os = require('node:os');
13
13
  var path = require('node:path');
14
14
  var node_child_process = require('node:child_process');
15
- var index = require('./index-DwYaKKj_.cjs');
15
+ var index = require('./index-DgbOZbw5.cjs');
16
16
  require('axios');
17
17
  require('node:events');
18
18
  require('socket.io-client');
@@ -6,8 +6,8 @@ var node_crypto = require('node:crypto');
6
6
  var os = require('node:os');
7
7
  var path = require('node:path');
8
8
  var fs$2 = require('node:fs/promises');
9
- var types = require('./types-Dm3ppWLz.cjs');
10
- var index = require('./index-DwYaKKj_.cjs');
9
+ var types = require('./types-uq0EvaFD.cjs');
10
+ var index = require('./index-DgbOZbw5.cjs');
11
11
  var node_child_process = require('node:child_process');
12
12
  var sdk = require('@agentclientprotocol/sdk');
13
13
  var fs = require('fs');
@@ -4,8 +4,8 @@ import { randomUUID, createHash } from 'node:crypto';
4
4
  import os__default from 'node:os';
5
5
  import path__default, { resolve, join as join$1, basename } from 'node:path';
6
6
  import { mkdir, writeFile, readFile } from 'node:fs/promises';
7
- import { l as logger, p as packageJson, A as ApiClient, c as configuration, r as readSettings, b as projectPath } from './types-CA4DI_7D.mjs';
8
- import { s as shouldCountToolCall, c as consumeToolQuota, f as formatQuotaDeniedReason, h as hashObject, e as enforceCliVersionPolicy, i as initialMachineMetadata, n as notifyDaemonSessionStarted, M as MessageQueue2, g as buildProjectCapsule, a as setLatestUserImages, b as MessageBuffer, w as withUserImagesMarker, r as registerKillSessionHandler, d as startFlockbayServer, o as extractUserImagesMarker, p as getLatestUserImages, P as PLATFORM_SYSTEM_PROMPT, j as autoFinalizeCoordinationWorkItem, E as ElicitationHub, k as detectScreenshotsForGate, m as stopCaffeinate } from './index-BMs-hgAn.mjs';
7
+ import { l as logger, p as packageJson, A as ApiClient, c as configuration, r as readSettings, b as projectPath } from './types-BM8taUEY.mjs';
8
+ import { s as shouldCountToolCall, c as consumeToolQuota, f as formatQuotaDeniedReason, h as hashObject, e as enforceCliVersionPolicy, i as initialMachineMetadata, n as notifyDaemonSessionStarted, M as MessageQueue2, g as buildProjectCapsule, a as setLatestUserImages, b as MessageBuffer, w as withUserImagesMarker, r as registerKillSessionHandler, d as startFlockbayServer, o as extractUserImagesMarker, p as getLatestUserImages, P as PLATFORM_SYSTEM_PROMPT, j as autoFinalizeCoordinationWorkItem, E as ElicitationHub, k as detectScreenshotsForGate, m as stopCaffeinate } from './index-Cu04EShB.mjs';
9
9
  import { spawn, spawnSync } from 'node:child_process';
10
10
  import { ndJsonStream, ClientSideConnection } from '@agentclientprotocol/sdk';
11
11
  import { existsSync, readFileSync, mkdirSync, writeFileSync } from 'fs';
@@ -21,7 +21,7 @@ import net from 'node:net';
21
21
  import { spawn as spawn$1 } from 'node:child_process';
22
22
 
23
23
  var name = "flockbay";
24
- var version = "0.10.35";
24
+ var version = "0.10.38";
25
25
  var description = "Flockbay CLI (local agent + daemon)";
26
26
  var author = "Eduardo Orellana";
27
27
  var license = "UNLICENSED";
@@ -3591,7 +3591,19 @@ async function buildAndInstallUnrealMcpPlugin(options) {
3591
3591
  logStream.write(`args: ${JSON.stringify(args)}
3592
3592
 
3593
3593
  `);
3594
- const child = process.platform === "win32" ? spawn$1("cmd.exe", ["/c", uat, ...args], { stdio: ["ignore", "pipe", "pipe"] }) : spawn$1(uat, args, { stdio: ["ignore", "pipe", "pipe"] });
3594
+ const quoteCmdArg = (value) => {
3595
+ const raw = String(value ?? "");
3596
+ if (!raw) return '""';
3597
+ if (!/[\\s"]/g.test(raw)) return raw;
3598
+ return `"${raw.replace(/"/g, '""')}"`;
3599
+ };
3600
+ const child = process.platform === "win32" ? (() => {
3601
+ const cmdLine = `""${uat}" ${args.map(quoteCmdArg).join(" ")}`;
3602
+ return spawn$1("cmd.exe", ["/s", "/c", cmdLine], {
3603
+ stdio: ["ignore", "pipe", "pipe"],
3604
+ windowsVerbatimArguments: true
3605
+ });
3606
+ })() : spawn$1(uat, args, { stdio: ["ignore", "pipe", "pipe"] });
3595
3607
  child.stdout?.on("data", (chunk) => logStream.write(chunk));
3596
3608
  child.stderr?.on("data", (chunk) => logStream.write(chunk));
3597
3609
  const exitCode = await new Promise((resolve) => child.on("close", resolve));
@@ -42,7 +42,7 @@ function _interopNamespaceDefault(e) {
42
42
  var z__namespace = /*#__PURE__*/_interopNamespaceDefault(z);
43
43
 
44
44
  var name = "flockbay";
45
- var version = "0.10.35";
45
+ var version = "0.10.38";
46
46
  var description = "Flockbay CLI (local agent + daemon)";
47
47
  var author = "Eduardo Orellana";
48
48
  var license = "UNLICENSED";
@@ -772,7 +772,7 @@ class RpcHandlerManager {
772
772
  }
773
773
  }
774
774
 
775
- 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-Dm3ppWLz.cjs', document.baseURI).href))));
775
+ 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-uq0EvaFD.cjs', document.baseURI).href))));
776
776
  function projectPath() {
777
777
  const path = path$1.resolve(__dirname$1, "..");
778
778
  return path;
@@ -3612,7 +3612,19 @@ async function buildAndInstallUnrealMcpPlugin(options) {
3612
3612
  logStream.write(`args: ${JSON.stringify(args)}
3613
3613
 
3614
3614
  `);
3615
- const child = process.platform === "win32" ? node_child_process.spawn("cmd.exe", ["/c", uat, ...args], { stdio: ["ignore", "pipe", "pipe"] }) : node_child_process.spawn(uat, args, { stdio: ["ignore", "pipe", "pipe"] });
3615
+ const quoteCmdArg = (value) => {
3616
+ const raw = String(value ?? "");
3617
+ if (!raw) return '""';
3618
+ if (!/[\\s"]/g.test(raw)) return raw;
3619
+ return `"${raw.replace(/"/g, '""')}"`;
3620
+ };
3621
+ const child = process.platform === "win32" ? (() => {
3622
+ const cmdLine = `""${uat}" ${args.map(quoteCmdArg).join(" ")}`;
3623
+ return node_child_process.spawn("cmd.exe", ["/s", "/c", cmdLine], {
3624
+ stdio: ["ignore", "pipe", "pipe"],
3625
+ windowsVerbatimArguments: true
3626
+ });
3627
+ })() : node_child_process.spawn(uat, args, { stdio: ["ignore", "pipe", "pipe"] });
3616
3628
  child.stdout?.on("data", (chunk) => logStream.write(chunk));
3617
3629
  child.stderr?.on("data", (chunk) => logStream.write(chunk));
3618
3630
  const exitCode = await new Promise((resolve) => child.on("close", resolve));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "flockbay",
3
- "version": "0.10.35",
3
+ "version": "0.10.38",
4
4
  "description": "Flockbay CLI (local agent + daemon)",
5
5
  "author": "Eduardo Orellana",
6
6
  "license": "UNLICENSED",