flockbay 0.10.48 → 0.10.49
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{index-BLsRYyPq.mjs → index-D8AeVbvv.mjs} +34 -17
- package/dist/{index-jd6DaTy_.cjs → index-r3VTdgFI.cjs} +35 -18
- package/dist/index.cjs +2 -2
- package/dist/index.mjs +2 -2
- package/dist/lib.cjs +1 -1
- package/dist/lib.mjs +1 -1
- package/dist/{migratePlugin-BPUAeqI_.mjs → migratePlugin-CEvGPul8.mjs} +18 -1
- package/dist/{migratePlugin-CyWWA8GW.cjs → migratePlugin-wFK-k3Wk.cjs} +18 -1
- package/dist/{runCodex-D8On-xj7.cjs → runCodex-DuyuYqoB.cjs} +2 -2
- package/dist/{runCodex-BkdEucuI.mjs → runCodex-ZfUyhHF6.mjs} +2 -2
- package/dist/{runGemini-BPLO-OFS.cjs → runGemini-D7j5Y5TF.cjs} +2 -2
- package/dist/{runGemini-p_aKQRTi.mjs → runGemini-DBU1mMdp.mjs} +2 -2
- package/dist/{types-KJ7kAYwk.mjs → types-BRJuZQj_.mjs} +57 -5
- package/dist/{types-DbQtXaZC.cjs → types-DNr0xwSy.cjs} +58 -5
- package/package.json +1 -1
|
@@ -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,
|
|
5
|
+
import { l as logger, e as projectPath, f as backoff, g as delay, R as RawJSONLinesSchema, c as configuration, h as readDaemonState, j as clearDaemonState, p as packageJson, r as readSettings, k as readCredentials, u as updateSettings, o as openBrowser, w as writeCredentials, m as unrealMcpPythonDir, n as acquireDaemonLock, q as writeDaemonState, s as ApiMachineClient, t as releaseDaemonLock, v as sendUnrealMcpTcpCommand, A as ApiClient, x as validatePath, y as run, z as run$1, B as buildShellInvocation, C as clearCredentials, D as clearMachineId, E as authenticateCodex, F as syncCodexCliAuth, G as authenticateClaude, H as authenticateGemini, d as installUnrealMcpPluginToEngine, I as buildAndInstallUnrealMcpPlugin, i as installUnrealMcpPluginToProject, b as isInstalledEngineRoot, J as getLatestDaemonLog, K as normalizeServerUrlForNode } from './types-BRJuZQj_.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';
|
|
@@ -15190,7 +15190,7 @@ async function authAndSetupMachineIfNeeded() {
|
|
|
15190
15190
|
process.exit(1);
|
|
15191
15191
|
}
|
|
15192
15192
|
try {
|
|
15193
|
-
const { migrateUnrealMcpToFlockbayMcp } = await import('./migratePlugin-
|
|
15193
|
+
const { migrateUnrealMcpToFlockbayMcp } = await import('./migratePlugin-CEvGPul8.mjs');
|
|
15194
15194
|
const result = migrateUnrealMcpToFlockbayMcp({
|
|
15195
15195
|
engineRoot,
|
|
15196
15196
|
projectUprojectPath: project || void 0,
|
|
@@ -15300,19 +15300,36 @@ async function authAndSetupMachineIfNeeded() {
|
|
|
15300
15300
|
if (!parsed.skipUnreal) {
|
|
15301
15301
|
const engineRoot = readArgValue(startArgs, "--engine-root") || (process.env.UE_ENGINE_ROOT || "").trim() || (process.env.ENGINE_ROOT || "").trim() || null;
|
|
15302
15302
|
if (engineRoot) {
|
|
15303
|
-
const
|
|
15304
|
-
|
|
15305
|
-
|
|
15306
|
-
|
|
15307
|
-
|
|
15308
|
-
|
|
15309
|
-
|
|
15310
|
-
|
|
15311
|
-
|
|
15312
|
-
|
|
15313
|
-
|
|
15314
|
-
|
|
15315
|
-
|
|
15303
|
+
const installedEngine = isInstalledEngineRoot(engineRoot);
|
|
15304
|
+
const detection = await detectUnrealProject(process.cwd());
|
|
15305
|
+
const uproject = detection.ok ? detection.uprojectFile : null;
|
|
15306
|
+
const promptTarget = installedEngine ? uproject ? `Install Flockbay MCP plugin into this Unreal project?
|
|
15307
|
+
${uproject}` : null : `Install Flockbay MCP plugin into this Unreal Engine folder?
|
|
15308
|
+
${engineRoot}`;
|
|
15309
|
+
if (installedEngine && !uproject) {
|
|
15310
|
+
console.error(chalk.yellow("Unreal MCP plugin install skipped:"));
|
|
15311
|
+
console.error(
|
|
15312
|
+
chalk.gray(
|
|
15313
|
+
[
|
|
15314
|
+
"This engine appears to be an Installed Build (Epic Launcher).",
|
|
15315
|
+
"Engine-scope install can break builds. Run `flockbay start` from a project folder, or pass --project <path> to install as a project plugin."
|
|
15316
|
+
].join("\n")
|
|
15317
|
+
)
|
|
15318
|
+
);
|
|
15319
|
+
} else {
|
|
15320
|
+
const shouldInstall = await promptYesNo(promptTarget, {
|
|
15321
|
+
defaultYes: true
|
|
15322
|
+
});
|
|
15323
|
+
if (shouldInstall) {
|
|
15324
|
+
const result = installedEngine && uproject ? installUnrealMcpPluginToProject(uproject) : installUnrealMcpPluginToEngine(engineRoot);
|
|
15325
|
+
if (result.ok) {
|
|
15326
|
+
console.log(`Flockbay MCP plugin installed: ${result.destDir}`);
|
|
15327
|
+
process.env.FLOCKBAY_UNREAL_MCP_ENABLED = "1";
|
|
15328
|
+
process.env.ENGINE_ROOT = engineRoot;
|
|
15329
|
+
} else {
|
|
15330
|
+
console.error(chalk.yellow("Flockbay MCP plugin install skipped:"));
|
|
15331
|
+
console.error(chalk.gray(result.errorMessage));
|
|
15332
|
+
}
|
|
15316
15333
|
}
|
|
15317
15334
|
}
|
|
15318
15335
|
}
|
|
@@ -15329,7 +15346,7 @@ ${engineRoot}`, {
|
|
|
15329
15346
|
} else if (subcommand === "codex") {
|
|
15330
15347
|
try {
|
|
15331
15348
|
await chdirToNearestUprojectRootIfPresent();
|
|
15332
|
-
const { runCodex } = await import('./runCodex-
|
|
15349
|
+
const { runCodex } = await import('./runCodex-ZfUyhHF6.mjs');
|
|
15333
15350
|
let startedBy = void 0;
|
|
15334
15351
|
let sessionId = void 0;
|
|
15335
15352
|
for (let i = 1; i < args.length; i++) {
|
|
@@ -15431,7 +15448,7 @@ ${engineRoot}`, {
|
|
|
15431
15448
|
}
|
|
15432
15449
|
try {
|
|
15433
15450
|
await chdirToNearestUprojectRootIfPresent();
|
|
15434
|
-
const { runGemini } = await import('./runGemini-
|
|
15451
|
+
const { runGemini } = await import('./runGemini-DBU1mMdp.mjs');
|
|
15435
15452
|
let startedBy = void 0;
|
|
15436
15453
|
let sessionId = void 0;
|
|
15437
15454
|
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-
|
|
6
|
+
var types = require('./types-DNr0xwSy.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');
|
|
@@ -1319,7 +1319,7 @@ function buildDaemonSafeEnv(baseEnv, binPath) {
|
|
|
1319
1319
|
env[pathKey] = [...prepend, ...existingParts].join(pathSep);
|
|
1320
1320
|
return env;
|
|
1321
1321
|
}
|
|
1322
|
-
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-
|
|
1322
|
+
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-r3VTdgFI.cjs', document.baseURI).href)));
|
|
1323
1323
|
const __dirname$1 = path.join(__filename$1, "..");
|
|
1324
1324
|
function getGlobalClaudeVersion(claudeExecutable) {
|
|
1325
1325
|
try {
|
|
@@ -15212,7 +15212,7 @@ async function authAndSetupMachineIfNeeded() {
|
|
|
15212
15212
|
process.exit(1);
|
|
15213
15213
|
}
|
|
15214
15214
|
try {
|
|
15215
|
-
const { migrateUnrealMcpToFlockbayMcp } = await Promise.resolve().then(function () { return require('./migratePlugin-
|
|
15215
|
+
const { migrateUnrealMcpToFlockbayMcp } = await Promise.resolve().then(function () { return require('./migratePlugin-wFK-k3Wk.cjs'); });
|
|
15216
15216
|
const result = migrateUnrealMcpToFlockbayMcp({
|
|
15217
15217
|
engineRoot,
|
|
15218
15218
|
projectUprojectPath: project || void 0,
|
|
@@ -15322,19 +15322,36 @@ async function authAndSetupMachineIfNeeded() {
|
|
|
15322
15322
|
if (!parsed.skipUnreal) {
|
|
15323
15323
|
const engineRoot = readArgValue(startArgs, "--engine-root") || (process.env.UE_ENGINE_ROOT || "").trim() || (process.env.ENGINE_ROOT || "").trim() || null;
|
|
15324
15324
|
if (engineRoot) {
|
|
15325
|
-
const
|
|
15326
|
-
|
|
15327
|
-
|
|
15328
|
-
|
|
15329
|
-
|
|
15330
|
-
|
|
15331
|
-
|
|
15332
|
-
|
|
15333
|
-
|
|
15334
|
-
|
|
15335
|
-
|
|
15336
|
-
|
|
15337
|
-
|
|
15325
|
+
const installedEngine = types.isInstalledEngineRoot(engineRoot);
|
|
15326
|
+
const detection = await detectUnrealProject(process.cwd());
|
|
15327
|
+
const uproject = detection.ok ? detection.uprojectFile : null;
|
|
15328
|
+
const promptTarget = installedEngine ? uproject ? `Install Flockbay MCP plugin into this Unreal project?
|
|
15329
|
+
${uproject}` : null : `Install Flockbay MCP plugin into this Unreal Engine folder?
|
|
15330
|
+
${engineRoot}`;
|
|
15331
|
+
if (installedEngine && !uproject) {
|
|
15332
|
+
console.error(chalk.yellow("Unreal MCP plugin install skipped:"));
|
|
15333
|
+
console.error(
|
|
15334
|
+
chalk.gray(
|
|
15335
|
+
[
|
|
15336
|
+
"This engine appears to be an Installed Build (Epic Launcher).",
|
|
15337
|
+
"Engine-scope install can break builds. Run `flockbay start` from a project folder, or pass --project <path> to install as a project plugin."
|
|
15338
|
+
].join("\n")
|
|
15339
|
+
)
|
|
15340
|
+
);
|
|
15341
|
+
} else {
|
|
15342
|
+
const shouldInstall = await promptYesNo(promptTarget, {
|
|
15343
|
+
defaultYes: true
|
|
15344
|
+
});
|
|
15345
|
+
if (shouldInstall) {
|
|
15346
|
+
const result = installedEngine && uproject ? types.installUnrealMcpPluginToProject(uproject) : types.installUnrealMcpPluginToEngine(engineRoot);
|
|
15347
|
+
if (result.ok) {
|
|
15348
|
+
console.log(`Flockbay MCP plugin installed: ${result.destDir}`);
|
|
15349
|
+
process.env.FLOCKBAY_UNREAL_MCP_ENABLED = "1";
|
|
15350
|
+
process.env.ENGINE_ROOT = engineRoot;
|
|
15351
|
+
} else {
|
|
15352
|
+
console.error(chalk.yellow("Flockbay MCP plugin install skipped:"));
|
|
15353
|
+
console.error(chalk.gray(result.errorMessage));
|
|
15354
|
+
}
|
|
15338
15355
|
}
|
|
15339
15356
|
}
|
|
15340
15357
|
}
|
|
@@ -15351,7 +15368,7 @@ ${engineRoot}`, {
|
|
|
15351
15368
|
} else if (subcommand === "codex") {
|
|
15352
15369
|
try {
|
|
15353
15370
|
await chdirToNearestUprojectRootIfPresent();
|
|
15354
|
-
const { runCodex } = await Promise.resolve().then(function () { return require('./runCodex-
|
|
15371
|
+
const { runCodex } = await Promise.resolve().then(function () { return require('./runCodex-DuyuYqoB.cjs'); });
|
|
15355
15372
|
let startedBy = void 0;
|
|
15356
15373
|
let sessionId = void 0;
|
|
15357
15374
|
for (let i = 1; i < args.length; i++) {
|
|
@@ -15453,7 +15470,7 @@ ${engineRoot}`, {
|
|
|
15453
15470
|
}
|
|
15454
15471
|
try {
|
|
15455
15472
|
await chdirToNearestUprojectRootIfPresent();
|
|
15456
|
-
const { runGemini } = await Promise.resolve().then(function () { return require('./runGemini-
|
|
15473
|
+
const { runGemini } = await Promise.resolve().then(function () { return require('./runGemini-D7j5Y5TF.cjs'); });
|
|
15457
15474
|
let startedBy = void 0;
|
|
15458
15475
|
let sessionId = void 0;
|
|
15459
15476
|
for (let i = 1; i < args.length; i++) {
|
package/dist/index.cjs
CHANGED
package/dist/index.mjs
CHANGED
package/dist/lib.cjs
CHANGED
package/dist/lib.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { A as ApiClient, a as ApiSessionClient, R as RawJSONLinesSchema, c as configuration, l as logger } from './types-
|
|
1
|
+
export { A as ApiClient, a as ApiSessionClient, R as RawJSONLinesSchema, c as configuration, l as logger } from './types-BRJuZQj_.mjs';
|
|
2
2
|
import 'axios';
|
|
3
3
|
import 'node:fs';
|
|
4
4
|
import 'node:os';
|
|
@@ -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-
|
|
3
|
+
import { i as installUnrealMcpPluginToProject, b as isInstalledEngineRoot, d as installUnrealMcpPluginToEngine } from './types-BRJuZQj_.mjs';
|
|
4
4
|
import 'axios';
|
|
5
5
|
import 'node:os';
|
|
6
6
|
import 'node:events';
|
|
@@ -138,6 +138,23 @@ Error: ${message}` };
|
|
|
138
138
|
}
|
|
139
139
|
}
|
|
140
140
|
}
|
|
141
|
+
if (projectUprojectPath) {
|
|
142
|
+
const installedProject = installUnrealMcpPluginToProject(projectUprojectPath);
|
|
143
|
+
if (!installedProject.ok) return { ok: false, errorMessage: installedProject.errorMessage };
|
|
144
|
+
return { ok: true, installedDestDir: installedProject.destDir, changedProjectPath, removedLegacyPluginDirs };
|
|
145
|
+
}
|
|
146
|
+
if (isInstalledEngineRoot(engineRoot)) {
|
|
147
|
+
return {
|
|
148
|
+
ok: false,
|
|
149
|
+
errorMessage: [
|
|
150
|
+
"This Unreal Engine install appears to be an Installed Build (Epic Launcher / precompiled engine).",
|
|
151
|
+
"Engine-scope install of a source-only plugin can break builds.",
|
|
152
|
+
"",
|
|
153
|
+
"Fix: re-run migration with a project path to install as a project plugin:",
|
|
154
|
+
" flockbay unreal-mcp migrate --engine-root <ENGINE_ROOT> --project <PATH_TO_.UPROJECT> --remove-legacy"
|
|
155
|
+
].join("\n")
|
|
156
|
+
};
|
|
157
|
+
}
|
|
141
158
|
const installed = installUnrealMcpPluginToEngine(engineRoot);
|
|
142
159
|
if (!installed.ok) return installed;
|
|
143
160
|
return { ok: true, installedDestDir: installed.destDir, changedProjectPath, removedLegacyPluginDirs };
|
|
@@ -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-
|
|
5
|
+
var types = require('./types-DNr0xwSy.cjs');
|
|
6
6
|
require('axios');
|
|
7
7
|
require('node:os');
|
|
8
8
|
require('node:events');
|
|
@@ -140,6 +140,23 @@ Error: ${message}` };
|
|
|
140
140
|
}
|
|
141
141
|
}
|
|
142
142
|
}
|
|
143
|
+
if (projectUprojectPath) {
|
|
144
|
+
const installedProject = types.installUnrealMcpPluginToProject(projectUprojectPath);
|
|
145
|
+
if (!installedProject.ok) return { ok: false, errorMessage: installedProject.errorMessage };
|
|
146
|
+
return { ok: true, installedDestDir: installedProject.destDir, changedProjectPath, removedLegacyPluginDirs };
|
|
147
|
+
}
|
|
148
|
+
if (types.isInstalledEngineRoot(engineRoot)) {
|
|
149
|
+
return {
|
|
150
|
+
ok: false,
|
|
151
|
+
errorMessage: [
|
|
152
|
+
"This Unreal Engine install appears to be an Installed Build (Epic Launcher / precompiled engine).",
|
|
153
|
+
"Engine-scope install of a source-only plugin can break builds.",
|
|
154
|
+
"",
|
|
155
|
+
"Fix: re-run migration with a project path to install as a project plugin:",
|
|
156
|
+
" flockbay unreal-mcp migrate --engine-root <ENGINE_ROOT> --project <PATH_TO_.UPROJECT> --remove-legacy"
|
|
157
|
+
].join("\n")
|
|
158
|
+
};
|
|
159
|
+
}
|
|
143
160
|
const installed = types.installUnrealMcpPluginToEngine(engineRoot);
|
|
144
161
|
if (!installed.ok) return installed;
|
|
145
162
|
return { ok: true, installedDestDir: installed.destDir, changedProjectPath, removedLegacyPluginDirs };
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
var ink = require('ink');
|
|
4
4
|
var React = require('react');
|
|
5
|
-
var types = require('./types-
|
|
5
|
+
var types = require('./types-DNr0xwSy.cjs');
|
|
6
6
|
var index_js = require('@modelcontextprotocol/sdk/client/index.js');
|
|
7
7
|
var z = require('zod');
|
|
8
8
|
var types_js = require('@modelcontextprotocol/sdk/types.js');
|
|
@@ -16,7 +16,7 @@ var process$1 = require('node:process');
|
|
|
16
16
|
var node_stream = require('node:stream');
|
|
17
17
|
var stdio_js$1 = require('@modelcontextprotocol/sdk/client/stdio.js');
|
|
18
18
|
var stdio_js = require('@modelcontextprotocol/sdk/shared/stdio.js');
|
|
19
|
-
var index = require('./index-
|
|
19
|
+
var index = require('./index-r3VTdgFI.cjs');
|
|
20
20
|
require('axios');
|
|
21
21
|
require('node:events');
|
|
22
22
|
require('socket.io-client');
|
|
@@ -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,
|
|
3
|
+
import { l as logger, A as ApiClient, p as packageJson, c as configuration, r as readSettings, e as projectPath } from './types-BRJuZQj_.mjs';
|
|
4
4
|
import { Client } from '@modelcontextprotocol/sdk/client/index.js';
|
|
5
5
|
import { z } from 'zod';
|
|
6
6
|
import { ElicitRequestSchema } from '@modelcontextprotocol/sdk/types.js';
|
|
@@ -14,7 +14,7 @@ import process$1 from 'node:process';
|
|
|
14
14
|
import { PassThrough } from 'node:stream';
|
|
15
15
|
import { getDefaultEnvironment } from '@modelcontextprotocol/sdk/client/stdio.js';
|
|
16
16
|
import { ReadBuffer, serializeMessage } from '@modelcontextprotocol/sdk/shared/stdio.js';
|
|
17
|
-
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-
|
|
17
|
+
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-D8AeVbvv.mjs';
|
|
18
18
|
import 'axios';
|
|
19
19
|
import 'node:events';
|
|
20
20
|
import '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-
|
|
10
|
-
var index = require('./index-
|
|
9
|
+
var types = require('./types-DNr0xwSy.cjs');
|
|
10
|
+
var index = require('./index-r3VTdgFI.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,
|
|
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-
|
|
7
|
+
import { l as logger, p as packageJson, A as ApiClient, c as configuration, r as readSettings, e as projectPath } from './types-BRJuZQj_.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-D8AeVbvv.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';
|
|
@@ -23,7 +23,7 @@ import { createServer } from 'http';
|
|
|
23
23
|
import open$2 from 'open';
|
|
24
24
|
|
|
25
25
|
var name = "flockbay";
|
|
26
|
-
var version = "0.10.
|
|
26
|
+
var version = "0.10.49";
|
|
27
27
|
var description = "Flockbay CLI (local agent + daemon)";
|
|
28
28
|
var author = "Eduardo Orellana";
|
|
29
29
|
var license = "UNLICENSED";
|
|
@@ -3455,6 +3455,14 @@ function createBackoff(opts) {
|
|
|
3455
3455
|
}
|
|
3456
3456
|
let backoff = createBackoff();
|
|
3457
3457
|
|
|
3458
|
+
function isInstalledEngineRoot(engineRootRaw) {
|
|
3459
|
+
const engineRoot = String(engineRootRaw || "").trim();
|
|
3460
|
+
if (!engineRoot) return false;
|
|
3461
|
+
if (fs__default.existsSync(path__default.join(engineRoot, "Engine", "Build", "InstalledBuild.txt"))) return true;
|
|
3462
|
+
if (fs__default.existsSync(path__default.join(engineRoot, "Engine", "Build", "InstalledBuild.xml"))) return true;
|
|
3463
|
+
return false;
|
|
3464
|
+
}
|
|
3465
|
+
|
|
3458
3466
|
function looksLikeEngineRoot$1(engineRoot) {
|
|
3459
3467
|
if (!engineRoot) return false;
|
|
3460
3468
|
return fs__default.existsSync(path__default.join(engineRoot, "Engine")) && fs__default.existsSync(path__default.join(engineRoot, "Engine", "Plugins"));
|
|
@@ -3493,6 +3501,24 @@ function installUnrealMcpPluginToEngine(engineRootRaw) {
|
|
|
3493
3501
|
errorMessage: `Invalid engine root (expected an Unreal Engine install folder containing Engine/\u2026): ${engineRoot || "(empty)"}`
|
|
3494
3502
|
};
|
|
3495
3503
|
}
|
|
3504
|
+
if (isInstalledEngineRoot(engineRoot)) {
|
|
3505
|
+
return {
|
|
3506
|
+
ok: false,
|
|
3507
|
+
errorMessage: [
|
|
3508
|
+
"This Unreal Engine install appears to be an Installed Build (Epic Launcher / precompiled engine).",
|
|
3509
|
+
"",
|
|
3510
|
+
"Installing a source-only plugin into Engine/Plugins can break builds with errors like:",
|
|
3511
|
+
` Expecting to find a type to be declared in a module rules named 'FlockbayMCP' in 'UE5Rules'`,
|
|
3512
|
+
"",
|
|
3513
|
+
"Fix: install the Flockbay MCP plugin into your project instead:",
|
|
3514
|
+
" <YourProject>/Plugins/FlockbayMCP",
|
|
3515
|
+
"",
|
|
3516
|
+
"If you are using the Flockbay UI/CLI, choose a project-scope install or pass a project path.",
|
|
3517
|
+
"Example:",
|
|
3518
|
+
" flockbay unreal-mcp migrate --engine-root <ENGINE_ROOT> --project <PATH_TO_.UPROJECT> --remove-legacy"
|
|
3519
|
+
].join("\n")
|
|
3520
|
+
};
|
|
3521
|
+
}
|
|
3496
3522
|
const srcDir = unrealMcpPluginSourceDir();
|
|
3497
3523
|
if (!fs__default.existsSync(srcDir)) {
|
|
3498
3524
|
return { ok: false, errorMessage: `Missing Flockbay MCP plugin source folder: ${srcDir}` };
|
|
@@ -4725,9 +4751,35 @@ class ApiMachineClient {
|
|
|
4725
4751
|
const enginePluginDir = path__default.join(enginePluginsDir, "FlockbayMCP");
|
|
4726
4752
|
const enginePluginUplugin = path__default.join(enginePluginDir, "FlockbayMCP.uplugin");
|
|
4727
4753
|
const enginePluginHasBinaries = fs__default.existsSync(path__default.join(enginePluginDir, "Binaries"));
|
|
4728
|
-
const
|
|
4729
|
-
|
|
4730
|
-
|
|
4754
|
+
const installedEngine = isInstalledEngineRoot(engineRoot);
|
|
4755
|
+
if (scope === "engine" && installedEngine) {
|
|
4756
|
+
return {
|
|
4757
|
+
success: false,
|
|
4758
|
+
error: [
|
|
4759
|
+
"Refusing engine-scope install: this engine is an Installed Build (Epic Launcher / precompiled rules).",
|
|
4760
|
+
"Install the Flockbay MCP plugin into your project instead (recommended).",
|
|
4761
|
+
"Provide projectUprojectPath and use installScope=project, or installScope=auto."
|
|
4762
|
+
].join("\n")
|
|
4763
|
+
};
|
|
4764
|
+
}
|
|
4765
|
+
if (scope === "auto" && installedEngine && !projectUprojectPath) {
|
|
4766
|
+
return {
|
|
4767
|
+
success: false,
|
|
4768
|
+
error: [
|
|
4769
|
+
"This engine is an Installed Build (Epic Launcher / precompiled rules).",
|
|
4770
|
+
"To avoid breaking Unreal builds, Flockbay must install the plugin into a project.",
|
|
4771
|
+
"Missing required param: projectUprojectPath"
|
|
4772
|
+
].join("\n")
|
|
4773
|
+
};
|
|
4774
|
+
}
|
|
4775
|
+
const shouldUseProject = scope === "project" || scope === "auto" && (installedEngine ? (
|
|
4776
|
+
// Installed engines: always use project plugin install (even if an engine copy already exists).
|
|
4777
|
+
Boolean(projectUprojectPath)
|
|
4778
|
+
) : (
|
|
4779
|
+
// Non-installed engines: if the engine plugin is already installed+built, keep using it (no project mutation).
|
|
4780
|
+
!(fs__default.existsSync(enginePluginUplugin) && enginePluginHasBinaries) && // Otherwise, use a project-scope install when the engine folder isn't writable.
|
|
4781
|
+
!canWriteDir(enginePluginsDir) && Boolean(projectUprojectPath)
|
|
4782
|
+
));
|
|
4731
4783
|
if (shouldUseProject) {
|
|
4732
4784
|
if (!projectUprojectPath) return { success: false, error: "Missing projectUprojectPath (required for project-scope install)." };
|
|
4733
4785
|
const installedProject = installUnrealMcpPluginToProject(projectUprojectPath);
|
|
@@ -5293,4 +5345,4 @@ const RawJSONLinesSchema = z$1.discriminatedUnion("type", [
|
|
|
5293
5345
|
}).passthrough()
|
|
5294
5346
|
]);
|
|
5295
5347
|
|
|
5296
|
-
export { ApiClient as A,
|
|
5348
|
+
export { ApiClient as A, buildShellInvocation as B, clearCredentials as C, clearMachineId as D, authenticateCodex as E, syncCodexCliAuth as F, authenticateClaude as G, authenticateGemini as H, buildAndInstallUnrealMcpPlugin as I, getLatestDaemonLog as J, normalizeServerUrlForNode as K, RawJSONLinesSchema as R, ApiSessionClient as a, isInstalledEngineRoot as b, configuration as c, installUnrealMcpPluginToEngine as d, projectPath as e, backoff as f, delay as g, readDaemonState as h, installUnrealMcpPluginToProject as i, clearDaemonState as j, readCredentials as k, logger as l, unrealMcpPythonDir as m, acquireDaemonLock as n, openBrowser as o, packageJson as p, writeDaemonState as q, readSettings as r, ApiMachineClient as s, releaseDaemonLock as t, updateSettings as u, sendUnrealMcpTcpCommand as v, writeCredentials as w, validatePath as x, run$1 as y, run as z };
|
|
@@ -44,7 +44,7 @@ function _interopNamespaceDefault(e) {
|
|
|
44
44
|
var z__namespace = /*#__PURE__*/_interopNamespaceDefault(z);
|
|
45
45
|
|
|
46
46
|
var name = "flockbay";
|
|
47
|
-
var version = "0.10.
|
|
47
|
+
var version = "0.10.49";
|
|
48
48
|
var description = "Flockbay CLI (local agent + daemon)";
|
|
49
49
|
var author = "Eduardo Orellana";
|
|
50
50
|
var license = "UNLICENSED";
|
|
@@ -832,7 +832,7 @@ class RpcHandlerManager {
|
|
|
832
832
|
}
|
|
833
833
|
}
|
|
834
834
|
|
|
835
|
-
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-
|
|
835
|
+
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-DNr0xwSy.cjs', document.baseURI).href))));
|
|
836
836
|
function projectPath() {
|
|
837
837
|
const path = path$1.resolve(__dirname$1, "..");
|
|
838
838
|
return path;
|
|
@@ -3476,6 +3476,14 @@ function createBackoff(opts) {
|
|
|
3476
3476
|
}
|
|
3477
3477
|
let backoff = createBackoff();
|
|
3478
3478
|
|
|
3479
|
+
function isInstalledEngineRoot(engineRootRaw) {
|
|
3480
|
+
const engineRoot = String(engineRootRaw || "").trim();
|
|
3481
|
+
if (!engineRoot) return false;
|
|
3482
|
+
if (fs.existsSync(path.join(engineRoot, "Engine", "Build", "InstalledBuild.txt"))) return true;
|
|
3483
|
+
if (fs.existsSync(path.join(engineRoot, "Engine", "Build", "InstalledBuild.xml"))) return true;
|
|
3484
|
+
return false;
|
|
3485
|
+
}
|
|
3486
|
+
|
|
3479
3487
|
function looksLikeEngineRoot$1(engineRoot) {
|
|
3480
3488
|
if (!engineRoot) return false;
|
|
3481
3489
|
return fs.existsSync(path.join(engineRoot, "Engine")) && fs.existsSync(path.join(engineRoot, "Engine", "Plugins"));
|
|
@@ -3514,6 +3522,24 @@ function installUnrealMcpPluginToEngine(engineRootRaw) {
|
|
|
3514
3522
|
errorMessage: `Invalid engine root (expected an Unreal Engine install folder containing Engine/\u2026): ${engineRoot || "(empty)"}`
|
|
3515
3523
|
};
|
|
3516
3524
|
}
|
|
3525
|
+
if (isInstalledEngineRoot(engineRoot)) {
|
|
3526
|
+
return {
|
|
3527
|
+
ok: false,
|
|
3528
|
+
errorMessage: [
|
|
3529
|
+
"This Unreal Engine install appears to be an Installed Build (Epic Launcher / precompiled engine).",
|
|
3530
|
+
"",
|
|
3531
|
+
"Installing a source-only plugin into Engine/Plugins can break builds with errors like:",
|
|
3532
|
+
` Expecting to find a type to be declared in a module rules named 'FlockbayMCP' in 'UE5Rules'`,
|
|
3533
|
+
"",
|
|
3534
|
+
"Fix: install the Flockbay MCP plugin into your project instead:",
|
|
3535
|
+
" <YourProject>/Plugins/FlockbayMCP",
|
|
3536
|
+
"",
|
|
3537
|
+
"If you are using the Flockbay UI/CLI, choose a project-scope install or pass a project path.",
|
|
3538
|
+
"Example:",
|
|
3539
|
+
" flockbay unreal-mcp migrate --engine-root <ENGINE_ROOT> --project <PATH_TO_.UPROJECT> --remove-legacy"
|
|
3540
|
+
].join("\n")
|
|
3541
|
+
};
|
|
3542
|
+
}
|
|
3517
3543
|
const srcDir = unrealMcpPluginSourceDir();
|
|
3518
3544
|
if (!fs.existsSync(srcDir)) {
|
|
3519
3545
|
return { ok: false, errorMessage: `Missing Flockbay MCP plugin source folder: ${srcDir}` };
|
|
@@ -4746,9 +4772,35 @@ class ApiMachineClient {
|
|
|
4746
4772
|
const enginePluginDir = path.join(enginePluginsDir, "FlockbayMCP");
|
|
4747
4773
|
const enginePluginUplugin = path.join(enginePluginDir, "FlockbayMCP.uplugin");
|
|
4748
4774
|
const enginePluginHasBinaries = fs.existsSync(path.join(enginePluginDir, "Binaries"));
|
|
4749
|
-
const
|
|
4750
|
-
|
|
4751
|
-
|
|
4775
|
+
const installedEngine = isInstalledEngineRoot(engineRoot);
|
|
4776
|
+
if (scope === "engine" && installedEngine) {
|
|
4777
|
+
return {
|
|
4778
|
+
success: false,
|
|
4779
|
+
error: [
|
|
4780
|
+
"Refusing engine-scope install: this engine is an Installed Build (Epic Launcher / precompiled rules).",
|
|
4781
|
+
"Install the Flockbay MCP plugin into your project instead (recommended).",
|
|
4782
|
+
"Provide projectUprojectPath and use installScope=project, or installScope=auto."
|
|
4783
|
+
].join("\n")
|
|
4784
|
+
};
|
|
4785
|
+
}
|
|
4786
|
+
if (scope === "auto" && installedEngine && !projectUprojectPath) {
|
|
4787
|
+
return {
|
|
4788
|
+
success: false,
|
|
4789
|
+
error: [
|
|
4790
|
+
"This engine is an Installed Build (Epic Launcher / precompiled rules).",
|
|
4791
|
+
"To avoid breaking Unreal builds, Flockbay must install the plugin into a project.",
|
|
4792
|
+
"Missing required param: projectUprojectPath"
|
|
4793
|
+
].join("\n")
|
|
4794
|
+
};
|
|
4795
|
+
}
|
|
4796
|
+
const shouldUseProject = scope === "project" || scope === "auto" && (installedEngine ? (
|
|
4797
|
+
// Installed engines: always use project plugin install (even if an engine copy already exists).
|
|
4798
|
+
Boolean(projectUprojectPath)
|
|
4799
|
+
) : (
|
|
4800
|
+
// Non-installed engines: if the engine plugin is already installed+built, keep using it (no project mutation).
|
|
4801
|
+
!(fs.existsSync(enginePluginUplugin) && enginePluginHasBinaries) && // Otherwise, use a project-scope install when the engine folder isn't writable.
|
|
4802
|
+
!canWriteDir(enginePluginsDir) && Boolean(projectUprojectPath)
|
|
4803
|
+
));
|
|
4752
4804
|
if (shouldUseProject) {
|
|
4753
4805
|
if (!projectUprojectPath) return { success: false, error: "Missing projectUprojectPath (required for project-scope install)." };
|
|
4754
4806
|
const installedProject = installUnrealMcpPluginToProject(projectUprojectPath);
|
|
@@ -5333,6 +5385,7 @@ exports.delay = delay;
|
|
|
5333
5385
|
exports.getLatestDaemonLog = getLatestDaemonLog;
|
|
5334
5386
|
exports.installUnrealMcpPluginToEngine = installUnrealMcpPluginToEngine;
|
|
5335
5387
|
exports.installUnrealMcpPluginToProject = installUnrealMcpPluginToProject;
|
|
5388
|
+
exports.isInstalledEngineRoot = isInstalledEngineRoot;
|
|
5336
5389
|
exports.logger = logger;
|
|
5337
5390
|
exports.normalizeServerUrlForNode = normalizeServerUrlForNode;
|
|
5338
5391
|
exports.openBrowser = openBrowser;
|