flockbay 0.10.26 → 0.10.27
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/flockbayMcpStdioBridge.cjs +0 -2
- package/dist/codex/flockbayMcpStdioBridge.mjs +0 -2
- package/dist/{index-BneT2Zwr.mjs → index-D7iB7SzL.mjs} +8 -4
- package/dist/{index-B8IrJG_V.cjs → index-YM6v-xgK.cjs} +9 -5
- 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/{runCodex-CKnrY7mP.cjs → runCodex-DqzFigke.cjs} +7 -5
- package/dist/{runCodex-CGUKR560.mjs → runCodex-Ujz1z7Tp.mjs} +7 -5
- package/dist/{runGemini-B_PdxGx_.mjs → runGemini-BbdMLMnn.mjs} +2 -2
- package/dist/{runGemini-BOTCmjdU.cjs → runGemini-_3wOrKzX.cjs} +2 -2
- package/dist/{types-BbiNp28R.cjs → types-BVvMLtsa.cjs} +23 -16
- package/dist/{types-PaPDbOuA.mjs → types-DYcgk0yQ.mjs} +22 -15
- package/package.json +1 -2
- package/kits/kit.open_world/kit.json +0 -59
|
@@ -672,8 +672,6 @@ async function main() {
|
|
|
672
672
|
),
|
|
673
673
|
baselineAction: z.z.enum(["none", "compare", "set"]).optional().describe("compare=report differences vs baseline. set=overwrite baseline with this run. Default none."),
|
|
674
674
|
failOnBaselineDiff: z.z.boolean().optional().describe("When baselineAction=compare, fail if screenshots differ from baseline. Default false."),
|
|
675
|
-
applyAssetKits: z.z.boolean().optional().describe("Apply .flockbay asset kit adapters (TileMeshLibrary/ScatterCategoryRegistry/LayoutPropRegistry) to Config/DefaultGame.ini before preview. Default false (non-mutating)."),
|
|
676
|
-
kitIds: z.z.array(z.z.string()).optional().describe("When applyAssetKits=true, limit to these kitIds. Default: all kits in .flockbay/assets/kits.json."),
|
|
677
675
|
contentLint: z.z.boolean().optional().describe("Fail-hard if config/DefaultGame.ini reference missing /Game assets on disk. Default false."),
|
|
678
676
|
previewDurationBudgetMs: z.z.number().int().positive().optional().describe("Fail-hard if the final preview run exceeds this duration (ms). Optional."),
|
|
679
677
|
perfBudgetLint: z.z.boolean().optional().describe("Run Tools/run-perf-budget-lint.mjs (scatter budgets + perf budgets file sanity). Module-only (requires configRelPath). Default false."),
|
|
@@ -670,8 +670,6 @@ async function main() {
|
|
|
670
670
|
),
|
|
671
671
|
baselineAction: z.enum(["none", "compare", "set"]).optional().describe("compare=report differences vs baseline. set=overwrite baseline with this run. Default none."),
|
|
672
672
|
failOnBaselineDiff: z.boolean().optional().describe("When baselineAction=compare, fail if screenshots differ from baseline. Default false."),
|
|
673
|
-
applyAssetKits: z.boolean().optional().describe("Apply .flockbay asset kit adapters (TileMeshLibrary/ScatterCategoryRegistry/LayoutPropRegistry) to Config/DefaultGame.ini before preview. Default false (non-mutating)."),
|
|
674
|
-
kitIds: z.array(z.string()).optional().describe("When applyAssetKits=true, limit to these kitIds. Default: all kits in .flockbay/assets/kits.json."),
|
|
675
673
|
contentLint: z.boolean().optional().describe("Fail-hard if config/DefaultGame.ini reference missing /Game assets on disk. Default false."),
|
|
676
674
|
previewDurationBudgetMs: z.number().int().positive().optional().describe("Fail-hard if the final preview run exceeds this duration (ms). Optional."),
|
|
677
675
|
perfBudgetLint: z.boolean().optional().describe("Run Tools/run-perf-budget-lint.mjs (scatter budgets + perf budgets file sanity). Module-only (requires configRelPath). Default false."),
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import{createRequire as _pkgrollCR}from"node:module";const require=_pkgrollCR(import.meta.url);import chalk from 'chalk';
|
|
2
2
|
import os, { homedir } from 'node:os';
|
|
3
3
|
import { randomUUID, createCipheriv, randomBytes } from 'node:crypto';
|
|
4
|
-
import { l as logger, p as projectPath, d as backoff, e as delay, R as RawJSONLinesSchema, c as configuration, f as readDaemonState, g as clearDaemonState, b as packageJson, r as readSettings, h as readCredentials, u as updateSettings, w as writeCredentials, i as unrealMcpPythonDir, j as acquireDaemonLock, k as writeDaemonState, m as ApiMachineClient, n as releaseDaemonLock, s as sendUnrealMcpTcpCommand, A as ApiClient, o as clearCredentials, q as clearMachineId, t as installUnrealMcpPluginToEngine, v as buildAndInstallUnrealMcpPlugin, x as getLatestDaemonLog, y as normalizeServerUrlForNode } from './types-
|
|
4
|
+
import { l as logger, p as projectPath, d as backoff, e as delay, R as RawJSONLinesSchema, c as configuration, f as readDaemonState, g as clearDaemonState, b as packageJson, r as readSettings, h as readCredentials, u as updateSettings, w as writeCredentials, i as unrealMcpPythonDir, j as acquireDaemonLock, k as writeDaemonState, m as ApiMachineClient, n as releaseDaemonLock, s as sendUnrealMcpTcpCommand, A as ApiClient, o as clearCredentials, q as clearMachineId, t as installUnrealMcpPluginToEngine, v as buildAndInstallUnrealMcpPlugin, x as getLatestDaemonLog, y as normalizeServerUrlForNode } from './types-DYcgk0yQ.mjs';
|
|
5
5
|
import { spawn, execFileSync, execSync } from 'node:child_process';
|
|
6
6
|
import path, { resolve, join, dirname } from 'node:path';
|
|
7
7
|
import { createInterface } from 'node:readline';
|
|
@@ -3561,7 +3561,11 @@ function truncateCommitSubject(value, maxLen) {
|
|
|
3561
3561
|
return `${trimmed.slice(0, Math.max(0, maxLen - 1)).trimEnd()}\u2026`;
|
|
3562
3562
|
}
|
|
3563
3563
|
async function runGit(args, cwd, timeoutMs) {
|
|
3564
|
-
const child = spawn("git", args, {
|
|
3564
|
+
const child = spawn("git", args, {
|
|
3565
|
+
cwd,
|
|
3566
|
+
stdio: ["ignore", "pipe", "pipe"],
|
|
3567
|
+
windowsHide: process.platform === "win32"
|
|
3568
|
+
});
|
|
3565
3569
|
const stdout = [];
|
|
3566
3570
|
const stderr = [];
|
|
3567
3571
|
child.stdout?.on("data", (chunk) => stdout.push(Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk)));
|
|
@@ -12674,7 +12678,7 @@ ${engineRoot}`, {
|
|
|
12674
12678
|
} else if (subcommand === "codex") {
|
|
12675
12679
|
try {
|
|
12676
12680
|
await chdirToNearestUprojectRootIfPresent();
|
|
12677
|
-
const { runCodex } = await import('./runCodex-
|
|
12681
|
+
const { runCodex } = await import('./runCodex-Ujz1z7Tp.mjs');
|
|
12678
12682
|
let startedBy = void 0;
|
|
12679
12683
|
let sessionId = void 0;
|
|
12680
12684
|
for (let i = 1; i < args.length; i++) {
|
|
@@ -12776,7 +12780,7 @@ ${engineRoot}`, {
|
|
|
12776
12780
|
}
|
|
12777
12781
|
try {
|
|
12778
12782
|
await chdirToNearestUprojectRootIfPresent();
|
|
12779
|
-
const { runGemini } = await import('./runGemini-
|
|
12783
|
+
const { runGemini } = await import('./runGemini-BbdMLMnn.mjs');
|
|
12780
12784
|
let startedBy = void 0;
|
|
12781
12785
|
let sessionId = void 0;
|
|
12782
12786
|
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-BVvMLtsa.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');
|
|
@@ -1273,7 +1273,7 @@ function buildDaemonSafeEnv(baseEnv, binPath) {
|
|
|
1273
1273
|
env[pathKey] = [...prepend, ...existingParts].join(pathSep);
|
|
1274
1274
|
return env;
|
|
1275
1275
|
}
|
|
1276
|
-
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-
|
|
1276
|
+
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-YM6v-xgK.cjs', document.baseURI).href)));
|
|
1277
1277
|
const __dirname$1 = path.join(__filename$1, "..");
|
|
1278
1278
|
function getGlobalClaudeVersion(claudeExecutable) {
|
|
1279
1279
|
try {
|
|
@@ -3583,7 +3583,11 @@ function truncateCommitSubject(value, maxLen) {
|
|
|
3583
3583
|
return `${trimmed.slice(0, Math.max(0, maxLen - 1)).trimEnd()}\u2026`;
|
|
3584
3584
|
}
|
|
3585
3585
|
async function runGit(args, cwd, timeoutMs) {
|
|
3586
|
-
const child = node_child_process.spawn("git", args, {
|
|
3586
|
+
const child = node_child_process.spawn("git", args, {
|
|
3587
|
+
cwd,
|
|
3588
|
+
stdio: ["ignore", "pipe", "pipe"],
|
|
3589
|
+
windowsHide: process.platform === "win32"
|
|
3590
|
+
});
|
|
3587
3591
|
const stdout = [];
|
|
3588
3592
|
const stderr = [];
|
|
3589
3593
|
child.stdout?.on("data", (chunk) => stdout.push(Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk)));
|
|
@@ -12696,7 +12700,7 @@ ${engineRoot}`, {
|
|
|
12696
12700
|
} else if (subcommand === "codex") {
|
|
12697
12701
|
try {
|
|
12698
12702
|
await chdirToNearestUprojectRootIfPresent();
|
|
12699
|
-
const { runCodex } = await Promise.resolve().then(function () { return require('./runCodex-
|
|
12703
|
+
const { runCodex } = await Promise.resolve().then(function () { return require('./runCodex-DqzFigke.cjs'); });
|
|
12700
12704
|
let startedBy = void 0;
|
|
12701
12705
|
let sessionId = void 0;
|
|
12702
12706
|
for (let i = 1; i < args.length; i++) {
|
|
@@ -12798,7 +12802,7 @@ ${engineRoot}`, {
|
|
|
12798
12802
|
}
|
|
12799
12803
|
try {
|
|
12800
12804
|
await chdirToNearestUprojectRootIfPresent();
|
|
12801
|
-
const { runGemini } = await Promise.resolve().then(function () { return require('./runGemini-
|
|
12805
|
+
const { runGemini } = await Promise.resolve().then(function () { return require('./runGemini-_3wOrKzX.cjs'); });
|
|
12802
12806
|
let startedBy = void 0;
|
|
12803
12807
|
let sessionId = void 0;
|
|
12804
12808
|
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-DYcgk0yQ.mjs';
|
|
2
2
|
import 'axios';
|
|
3
3
|
import 'node:fs';
|
|
4
4
|
import 'node:os';
|
|
@@ -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-BVvMLtsa.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-
|
|
15
|
+
var index = require('./index-YM6v-xgK.cjs');
|
|
16
16
|
require('axios');
|
|
17
17
|
require('node:events');
|
|
18
18
|
require('socket.io-client');
|
|
@@ -373,8 +373,9 @@ function buildCodexSpawnEnv(codexBin) {
|
|
|
373
373
|
if (typeof value === "string") acc[key] = value;
|
|
374
374
|
return acc;
|
|
375
375
|
}, {});
|
|
376
|
-
const
|
|
377
|
-
const
|
|
376
|
+
const pathKey = Object.keys(env).find((k) => k.toLowerCase() === "path") || "PATH";
|
|
377
|
+
const existingPath = env[pathKey] || "";
|
|
378
|
+
const existingParts = existingPath.split(path.delimiter).filter(Boolean);
|
|
378
379
|
const prepend = [];
|
|
379
380
|
const add = (p) => {
|
|
380
381
|
if (!p) return;
|
|
@@ -390,7 +391,8 @@ function buildCodexSpawnEnv(codexBin) {
|
|
|
390
391
|
add("/bin");
|
|
391
392
|
add("/usr/sbin");
|
|
392
393
|
add("/sbin");
|
|
393
|
-
env
|
|
394
|
+
env[pathKey] = [...prepend, ...existingParts].join(path.delimiter);
|
|
395
|
+
if (pathKey !== "PATH") env.PATH = env[pathKey];
|
|
394
396
|
return env;
|
|
395
397
|
}
|
|
396
398
|
function resolveCodexBin() {
|
|
@@ -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, r as readSettings, p as projectPath, c as configuration, b as packageJson } from './types-
|
|
3
|
+
import { l as logger, A as ApiClient, r as readSettings, p as projectPath, c as configuration, b as packageJson } from './types-DYcgk0yQ.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 from 'node:os';
|
|
11
11
|
import path, { 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, 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, e as buildProjectCapsule, t as trimIdent, g as autoFinalizeCoordinationWorkItem, j as detectScreenshotsForGate, k as applyCoordinationSideEffectsFromMcpToolResult, l as stopCaffeinate } from './index-
|
|
13
|
+
import { s as shouldCountToolCall, c as consumeToolQuota, f as formatQuotaDeniedReason, h as hashObject, 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, e as buildProjectCapsule, t as trimIdent, g as autoFinalizeCoordinationWorkItem, j as detectScreenshotsForGate, k as applyCoordinationSideEffectsFromMcpToolResult, l as stopCaffeinate } from './index-D7iB7SzL.mjs';
|
|
14
14
|
import 'axios';
|
|
15
15
|
import 'node:events';
|
|
16
16
|
import 'socket.io-client';
|
|
@@ -371,8 +371,9 @@ function buildCodexSpawnEnv(codexBin) {
|
|
|
371
371
|
if (typeof value === "string") acc[key] = value;
|
|
372
372
|
return acc;
|
|
373
373
|
}, {});
|
|
374
|
-
const
|
|
375
|
-
const
|
|
374
|
+
const pathKey = Object.keys(env).find((k) => k.toLowerCase() === "path") || "PATH";
|
|
375
|
+
const existingPath = env[pathKey] || "";
|
|
376
|
+
const existingParts = existingPath.split(path.delimiter).filter(Boolean);
|
|
376
377
|
const prepend = [];
|
|
377
378
|
const add = (p) => {
|
|
378
379
|
if (!p) return;
|
|
@@ -388,7 +389,8 @@ function buildCodexSpawnEnv(codexBin) {
|
|
|
388
389
|
add("/bin");
|
|
389
390
|
add("/usr/sbin");
|
|
390
391
|
add("/sbin");
|
|
391
|
-
env
|
|
392
|
+
env[pathKey] = [...prepend, ...existingParts].join(path.delimiter);
|
|
393
|
+
if (pathKey !== "PATH") env.PATH = env[pathKey];
|
|
392
394
|
return env;
|
|
393
395
|
}
|
|
394
396
|
function resolveCodexBin() {
|
|
@@ -4,8 +4,8 @@ import { randomUUID, createHash } from 'node:crypto';
|
|
|
4
4
|
import os from 'node:os';
|
|
5
5
|
import path, { resolve, join as join$1, basename } from 'node:path';
|
|
6
6
|
import { mkdir, writeFile, readFile } from 'node:fs/promises';
|
|
7
|
-
import { l as logger, b as packageJson, A as ApiClient, r as readSettings, p as projectPath, c as configuration } from './types-
|
|
8
|
-
import { s as shouldCountToolCall, c as consumeToolQuota, f as formatQuotaDeniedReason, h as hashObject, i as initialMachineMetadata, n as notifyDaemonSessionStarted, M as MessageQueue2, e as buildProjectCapsule, a as setLatestUserImages, b as MessageBuffer, w as withUserImagesMarker, r as registerKillSessionHandler, d as startFlockbayServer, m as extractUserImagesMarker, o as getLatestUserImages, P as PLATFORM_SYSTEM_PROMPT, g as autoFinalizeCoordinationWorkItem, E as ElicitationHub, j as detectScreenshotsForGate, l as stopCaffeinate } from './index-
|
|
7
|
+
import { l as logger, b as packageJson, A as ApiClient, r as readSettings, p as projectPath, c as configuration } from './types-DYcgk0yQ.mjs';
|
|
8
|
+
import { s as shouldCountToolCall, c as consumeToolQuota, f as formatQuotaDeniedReason, h as hashObject, i as initialMachineMetadata, n as notifyDaemonSessionStarted, M as MessageQueue2, e as buildProjectCapsule, a as setLatestUserImages, b as MessageBuffer, w as withUserImagesMarker, r as registerKillSessionHandler, d as startFlockbayServer, m as extractUserImagesMarker, o as getLatestUserImages, P as PLATFORM_SYSTEM_PROMPT, g as autoFinalizeCoordinationWorkItem, E as ElicitationHub, j as detectScreenshotsForGate, l as stopCaffeinate } from './index-D7iB7SzL.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';
|
|
@@ -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-BVvMLtsa.cjs');
|
|
10
|
+
var index = require('./index-YM6v-xgK.cjs');
|
|
11
11
|
var node_child_process = require('node:child_process');
|
|
12
12
|
var sdk = require('@agentclientprotocol/sdk');
|
|
13
13
|
var fs = require('fs');
|
|
@@ -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.
|
|
45
|
+
var version = "0.10.27";
|
|
46
46
|
var description = "Flockbay CLI (local agent + daemon)";
|
|
47
47
|
var author = "Eduardo Orellana";
|
|
48
48
|
var license = "UNLICENSED";
|
|
@@ -95,7 +95,6 @@ var exports$1 = {
|
|
|
95
95
|
var files = [
|
|
96
96
|
"dist",
|
|
97
97
|
"bin",
|
|
98
|
-
"kits",
|
|
99
98
|
"scripts",
|
|
100
99
|
"tools/licenses",
|
|
101
100
|
"tools/unreal-mcp",
|
|
@@ -770,7 +769,7 @@ class RpcHandlerManager {
|
|
|
770
769
|
}
|
|
771
770
|
}
|
|
772
771
|
|
|
773
|
-
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-
|
|
772
|
+
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-BVvMLtsa.cjs', document.baseURI).href))));
|
|
774
773
|
function projectPath() {
|
|
775
774
|
const path = path$1.resolve(__dirname$1, "..");
|
|
776
775
|
return path;
|
|
@@ -1151,7 +1150,8 @@ async function runProcess({
|
|
|
1151
1150
|
cwd,
|
|
1152
1151
|
shell: false,
|
|
1153
1152
|
env: env ? { ...process.env, ...env } : process.env,
|
|
1154
|
-
stdio: ["ignore", "pipe", "pipe"]
|
|
1153
|
+
stdio: ["ignore", "pipe", "pipe"],
|
|
1154
|
+
windowsHide: process.platform === "win32"
|
|
1155
1155
|
});
|
|
1156
1156
|
child.stdout?.on("data", (chunk) => stdoutTail.push(Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk)));
|
|
1157
1157
|
child.stderr?.on("data", (chunk) => stderrTail.push(Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk)));
|
|
@@ -1384,7 +1384,8 @@ async function runProcessToFile({
|
|
|
1384
1384
|
const child = child_process.spawn(command, args, {
|
|
1385
1385
|
cwd,
|
|
1386
1386
|
shell: false,
|
|
1387
|
-
stdio: ["ignore", "pipe", "pipe"]
|
|
1387
|
+
stdio: ["ignore", "pipe", "pipe"],
|
|
1388
|
+
windowsHide: process.platform === "win32"
|
|
1388
1389
|
});
|
|
1389
1390
|
child.stdout?.pipe(out);
|
|
1390
1391
|
child.stderr?.on("data", (chunk) => stderrTail.push(Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk)));
|
|
@@ -1480,8 +1481,10 @@ function normalizeCoordinationFilePath(input) {
|
|
|
1480
1481
|
function registerCommonHandlers(rpcHandlerManager, workingDirectory, coordination, options) {
|
|
1481
1482
|
const bashEnabled = options?.bashEnabled !== false;
|
|
1482
1483
|
const spawnEnv = (() => {
|
|
1483
|
-
const
|
|
1484
|
-
const
|
|
1484
|
+
const pathKey = Object.keys(process.env).find((k) => k.toLowerCase() === "path") || "PATH";
|
|
1485
|
+
const basePath = process.env[pathKey] ?? "";
|
|
1486
|
+
const delimiter = path.delimiter;
|
|
1487
|
+
const existingEntries = basePath.split(delimiter).filter(Boolean);
|
|
1485
1488
|
const preferredEntries = [];
|
|
1486
1489
|
if (process.platform === "darwin") {
|
|
1487
1490
|
preferredEntries.push("/opt/homebrew/bin", "/opt/homebrew/sbin", "/usr/local/bin", "/usr/local/sbin");
|
|
@@ -1490,7 +1493,10 @@ function registerCommonHandlers(rpcHandlerManager, workingDirectory, coordinatio
|
|
|
1490
1493
|
}
|
|
1491
1494
|
const preferredSet = new Set(preferredEntries);
|
|
1492
1495
|
const merged = [...preferredEntries, ...existingEntries.filter((p) => !preferredSet.has(p))];
|
|
1493
|
-
|
|
1496
|
+
const env = { ...process.env };
|
|
1497
|
+
env[pathKey] = merged.join(delimiter);
|
|
1498
|
+
if (pathKey !== "PATH") env.PATH = env[pathKey];
|
|
1499
|
+
return env;
|
|
1494
1500
|
})();
|
|
1495
1501
|
rpcHandlerManager.registerHandler("bash", async (data) => {
|
|
1496
1502
|
if (!bashEnabled) {
|
|
@@ -1523,7 +1529,8 @@ function registerCommonHandlers(rpcHandlerManager, workingDirectory, coordinatio
|
|
|
1523
1529
|
cwd,
|
|
1524
1530
|
shell: true,
|
|
1525
1531
|
env: spawnEnv,
|
|
1526
|
-
stdio: ["ignore", "pipe", "pipe"]
|
|
1532
|
+
stdio: ["ignore", "pipe", "pipe"],
|
|
1533
|
+
windowsHide: process.platform === "win32"
|
|
1527
1534
|
});
|
|
1528
1535
|
child.stdout?.on("data", (chunk) => stdoutTail.push(Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk)));
|
|
1529
1536
|
child.stderr?.on("data", (chunk) => stderrTail.push(Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk)));
|
|
@@ -2732,26 +2739,26 @@ Fix: re-read the file and retry (the file changed since you last read it).`
|
|
|
2732
2739
|
return { success: false, error: validation.error };
|
|
2733
2740
|
}
|
|
2734
2741
|
const rootPath = validation.resolvedPath || data.path;
|
|
2735
|
-
async function buildTree(
|
|
2742
|
+
async function buildTree(path2, name, currentDepth) {
|
|
2736
2743
|
try {
|
|
2737
|
-
const stats = await fs$3.stat(
|
|
2744
|
+
const stats = await fs$3.stat(path2);
|
|
2738
2745
|
const node = {
|
|
2739
2746
|
name,
|
|
2740
|
-
path,
|
|
2747
|
+
path: path2,
|
|
2741
2748
|
type: stats.isDirectory() ? "directory" : "file",
|
|
2742
2749
|
size: stats.size,
|
|
2743
2750
|
modified: stats.mtime.getTime()
|
|
2744
2751
|
};
|
|
2745
2752
|
if (stats.isDirectory() && currentDepth < data.maxDepth) {
|
|
2746
|
-
const entries = await fs$3.readdir(
|
|
2753
|
+
const entries = await fs$3.readdir(path2, { withFileTypes: true });
|
|
2747
2754
|
const children = [];
|
|
2748
2755
|
await Promise.all(
|
|
2749
2756
|
entries.map(async (entry) => {
|
|
2750
2757
|
if (entry.isSymbolicLink()) {
|
|
2751
|
-
logger.debug(`Skipping symlink: ${path$1.join(
|
|
2758
|
+
logger.debug(`Skipping symlink: ${path$1.join(path2, entry.name)}`);
|
|
2752
2759
|
return;
|
|
2753
2760
|
}
|
|
2754
|
-
const childPath = path$1.join(
|
|
2761
|
+
const childPath = path$1.join(path2, entry.name);
|
|
2755
2762
|
const childNode = await buildTree(childPath, entry.name, currentDepth + 1);
|
|
2756
2763
|
if (childNode) {
|
|
2757
2764
|
children.push(childNode);
|
|
@@ -2767,7 +2774,7 @@ Fix: re-read the file and retry (the file changed since you last read it).`
|
|
|
2767
2774
|
}
|
|
2768
2775
|
return node;
|
|
2769
2776
|
} catch (error) {
|
|
2770
|
-
logger.debug(`Failed to process ${
|
|
2777
|
+
logger.debug(`Failed to process ${path2}:`, error instanceof Error ? error.message : String(error));
|
|
2771
2778
|
return null;
|
|
2772
2779
|
}
|
|
2773
2780
|
}
|
|
@@ -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.
|
|
24
|
+
var version = "0.10.27";
|
|
25
25
|
var description = "Flockbay CLI (local agent + daemon)";
|
|
26
26
|
var author = "Eduardo Orellana";
|
|
27
27
|
var license = "UNLICENSED";
|
|
@@ -74,7 +74,6 @@ var exports$1 = {
|
|
|
74
74
|
var files = [
|
|
75
75
|
"dist",
|
|
76
76
|
"bin",
|
|
77
|
-
"kits",
|
|
78
77
|
"scripts",
|
|
79
78
|
"tools/licenses",
|
|
80
79
|
"tools/unreal-mcp",
|
|
@@ -1130,7 +1129,8 @@ async function runProcess({
|
|
|
1130
1129
|
cwd,
|
|
1131
1130
|
shell: false,
|
|
1132
1131
|
env: env ? { ...process.env, ...env } : process.env,
|
|
1133
|
-
stdio: ["ignore", "pipe", "pipe"]
|
|
1132
|
+
stdio: ["ignore", "pipe", "pipe"],
|
|
1133
|
+
windowsHide: process.platform === "win32"
|
|
1134
1134
|
});
|
|
1135
1135
|
child.stdout?.on("data", (chunk) => stdoutTail.push(Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk)));
|
|
1136
1136
|
child.stderr?.on("data", (chunk) => stderrTail.push(Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk)));
|
|
@@ -1363,7 +1363,8 @@ async function runProcessToFile({
|
|
|
1363
1363
|
const child = spawn(command, args, {
|
|
1364
1364
|
cwd,
|
|
1365
1365
|
shell: false,
|
|
1366
|
-
stdio: ["ignore", "pipe", "pipe"]
|
|
1366
|
+
stdio: ["ignore", "pipe", "pipe"],
|
|
1367
|
+
windowsHide: process.platform === "win32"
|
|
1367
1368
|
});
|
|
1368
1369
|
child.stdout?.pipe(out);
|
|
1369
1370
|
child.stderr?.on("data", (chunk) => stderrTail.push(Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk)));
|
|
@@ -1459,8 +1460,10 @@ function normalizeCoordinationFilePath(input) {
|
|
|
1459
1460
|
function registerCommonHandlers(rpcHandlerManager, workingDirectory, coordination, options) {
|
|
1460
1461
|
const bashEnabled = options?.bashEnabled !== false;
|
|
1461
1462
|
const spawnEnv = (() => {
|
|
1462
|
-
const
|
|
1463
|
-
const
|
|
1463
|
+
const pathKey = Object.keys(process.env).find((k) => k.toLowerCase() === "path") || "PATH";
|
|
1464
|
+
const basePath = process.env[pathKey] ?? "";
|
|
1465
|
+
const delimiter = path.delimiter;
|
|
1466
|
+
const existingEntries = basePath.split(delimiter).filter(Boolean);
|
|
1464
1467
|
const preferredEntries = [];
|
|
1465
1468
|
if (process.platform === "darwin") {
|
|
1466
1469
|
preferredEntries.push("/opt/homebrew/bin", "/opt/homebrew/sbin", "/usr/local/bin", "/usr/local/sbin");
|
|
@@ -1469,7 +1472,10 @@ function registerCommonHandlers(rpcHandlerManager, workingDirectory, coordinatio
|
|
|
1469
1472
|
}
|
|
1470
1473
|
const preferredSet = new Set(preferredEntries);
|
|
1471
1474
|
const merged = [...preferredEntries, ...existingEntries.filter((p) => !preferredSet.has(p))];
|
|
1472
|
-
|
|
1475
|
+
const env = { ...process.env };
|
|
1476
|
+
env[pathKey] = merged.join(delimiter);
|
|
1477
|
+
if (pathKey !== "PATH") env.PATH = env[pathKey];
|
|
1478
|
+
return env;
|
|
1473
1479
|
})();
|
|
1474
1480
|
rpcHandlerManager.registerHandler("bash", async (data) => {
|
|
1475
1481
|
if (!bashEnabled) {
|
|
@@ -1502,7 +1508,8 @@ function registerCommonHandlers(rpcHandlerManager, workingDirectory, coordinatio
|
|
|
1502
1508
|
cwd,
|
|
1503
1509
|
shell: true,
|
|
1504
1510
|
env: spawnEnv,
|
|
1505
|
-
stdio: ["ignore", "pipe", "pipe"]
|
|
1511
|
+
stdio: ["ignore", "pipe", "pipe"],
|
|
1512
|
+
windowsHide: process.platform === "win32"
|
|
1506
1513
|
});
|
|
1507
1514
|
child.stdout?.on("data", (chunk) => stdoutTail.push(Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk)));
|
|
1508
1515
|
child.stderr?.on("data", (chunk) => stderrTail.push(Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk)));
|
|
@@ -2711,26 +2718,26 @@ Fix: re-read the file and retry (the file changed since you last read it).`
|
|
|
2711
2718
|
return { success: false, error: validation.error };
|
|
2712
2719
|
}
|
|
2713
2720
|
const rootPath = validation.resolvedPath || data.path;
|
|
2714
|
-
async function buildTree(
|
|
2721
|
+
async function buildTree(path2, name, currentDepth) {
|
|
2715
2722
|
try {
|
|
2716
|
-
const stats = await stat$1(
|
|
2723
|
+
const stats = await stat$1(path2);
|
|
2717
2724
|
const node = {
|
|
2718
2725
|
name,
|
|
2719
|
-
path,
|
|
2726
|
+
path: path2,
|
|
2720
2727
|
type: stats.isDirectory() ? "directory" : "file",
|
|
2721
2728
|
size: stats.size,
|
|
2722
2729
|
modified: stats.mtime.getTime()
|
|
2723
2730
|
};
|
|
2724
2731
|
if (stats.isDirectory() && currentDepth < data.maxDepth) {
|
|
2725
|
-
const entries = await readdir(
|
|
2732
|
+
const entries = await readdir(path2, { withFileTypes: true });
|
|
2726
2733
|
const children = [];
|
|
2727
2734
|
await Promise.all(
|
|
2728
2735
|
entries.map(async (entry) => {
|
|
2729
2736
|
if (entry.isSymbolicLink()) {
|
|
2730
|
-
logger.debug(`Skipping symlink: ${join$1(
|
|
2737
|
+
logger.debug(`Skipping symlink: ${join$1(path2, entry.name)}`);
|
|
2731
2738
|
return;
|
|
2732
2739
|
}
|
|
2733
|
-
const childPath = join$1(
|
|
2740
|
+
const childPath = join$1(path2, entry.name);
|
|
2734
2741
|
const childNode = await buildTree(childPath, entry.name, currentDepth + 1);
|
|
2735
2742
|
if (childNode) {
|
|
2736
2743
|
children.push(childNode);
|
|
@@ -2746,7 +2753,7 @@ Fix: re-read the file and retry (the file changed since you last read it).`
|
|
|
2746
2753
|
}
|
|
2747
2754
|
return node;
|
|
2748
2755
|
} catch (error) {
|
|
2749
|
-
logger.debug(`Failed to process ${
|
|
2756
|
+
logger.debug(`Failed to process ${path2}:`, error instanceof Error ? error.message : String(error));
|
|
2750
2757
|
return null;
|
|
2751
2758
|
}
|
|
2752
2759
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "flockbay",
|
|
3
|
-
"version": "0.10.
|
|
3
|
+
"version": "0.10.27",
|
|
4
4
|
"description": "Flockbay CLI (local agent + daemon)",
|
|
5
5
|
"author": "Eduardo Orellana",
|
|
6
6
|
"license": "UNLICENSED",
|
|
@@ -53,7 +53,6 @@
|
|
|
53
53
|
"files": [
|
|
54
54
|
"dist",
|
|
55
55
|
"bin",
|
|
56
|
-
"kits",
|
|
57
56
|
"scripts",
|
|
58
57
|
"tools/licenses",
|
|
59
58
|
"tools/unreal-mcp",
|
|
@@ -1,59 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"manifestVersion": 1,
|
|
3
|
-
"id": "kit.open_world",
|
|
4
|
-
"version": "0.1.0",
|
|
5
|
-
"displayName": "Open World Kit",
|
|
6
|
-
"summary": "Opinionated workflows for large worlds (World Partition + streaming), built on top of universal SDK bricks.",
|
|
7
|
-
"conflictsWith": [],
|
|
8
|
-
"docs": {
|
|
9
|
-
"path": "documentation/75-kit-open-world.md"
|
|
10
|
-
},
|
|
11
|
-
"activationModes": ["adopt", "parallel", "override"],
|
|
12
|
-
"writeSet": {
|
|
13
|
-
"defaultGameNamespace": "/Game/Flockbay/Kits/OpenWorld",
|
|
14
|
-
"defaultConfigNamespace": ".flockbay/kits/kit.open_world"
|
|
15
|
-
},
|
|
16
|
-
"preflight": {
|
|
17
|
-
"checks": [
|
|
18
|
-
{
|
|
19
|
-
"checkId": "kit.installed",
|
|
20
|
-
"required": false
|
|
21
|
-
},
|
|
22
|
-
{
|
|
23
|
-
"checkId": "kit.up_to_date",
|
|
24
|
-
"required": false
|
|
25
|
-
},
|
|
26
|
-
{
|
|
27
|
-
"checkId": "kit.conflicts",
|
|
28
|
-
"required": false
|
|
29
|
-
},
|
|
30
|
-
{
|
|
31
|
-
"checkId": "sdk.installed",
|
|
32
|
-
"required": true
|
|
33
|
-
},
|
|
34
|
-
{
|
|
35
|
-
"checkId": "ue.editor_cmd.available",
|
|
36
|
-
"required": true
|
|
37
|
-
},
|
|
38
|
-
{
|
|
39
|
-
"checkId": "project.default_map.configured",
|
|
40
|
-
"required": false
|
|
41
|
-
},
|
|
42
|
-
{
|
|
43
|
-
"checkId": "kit.open_world.default_map.wp_ready",
|
|
44
|
-
"required": false
|
|
45
|
-
},
|
|
46
|
-
{
|
|
47
|
-
"checkId": "ue.world_partition.detected",
|
|
48
|
-
"required": false
|
|
49
|
-
},
|
|
50
|
-
{
|
|
51
|
-
"checkId": "scm.git.detected",
|
|
52
|
-
"required": false
|
|
53
|
-
}
|
|
54
|
-
]
|
|
55
|
-
},
|
|
56
|
-
"evidence": {
|
|
57
|
-
"requires": ["preflight_report", "activation_report"]
|
|
58
|
-
}
|
|
59
|
-
}
|