chatroom-cli 1.137.2 → 1.137.3
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.js +60 -54
- package/dist/index.js.map +21 -21
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -2140,7 +2140,7 @@ var require_commander = __commonJS((exports) => {
|
|
|
2140
2140
|
exports.InvalidOptionArgumentError = InvalidArgumentError;
|
|
2141
2141
|
});
|
|
2142
2142
|
|
|
2143
|
-
// src/commands/
|
|
2143
|
+
// src/commands/image-shared/image-preflight.ts
|
|
2144
2144
|
import { createHash } from "node:crypto";
|
|
2145
2145
|
function isRecord(value) {
|
|
2146
2146
|
return typeof value === "object" && value !== null;
|
|
@@ -2212,14 +2212,14 @@ async function findOutputConflicts(deps, paths, sourcePaths, sourceIdentities, f
|
|
|
2212
2212
|
return conflicts;
|
|
2213
2213
|
}
|
|
2214
2214
|
var SAFE_NAME, MAX_SOURCE_PIXELS = 1e8, MAX_SOURCE_BYTES, MAX_SIDECAR_BYTES, PNG_MAGIC;
|
|
2215
|
-
var
|
|
2215
|
+
var init_image_preflight = __esm(() => {
|
|
2216
2216
|
SAFE_NAME = /^[A-Za-z0-9_][A-Za-z0-9_-]{0,63}$/;
|
|
2217
2217
|
MAX_SOURCE_BYTES = 64 * 1024 * 1024;
|
|
2218
2218
|
MAX_SIDECAR_BYTES = 1024 * 1024;
|
|
2219
2219
|
PNG_MAGIC = new Uint8Array([137, 80, 78, 71, 13, 10, 26, 10]);
|
|
2220
2220
|
});
|
|
2221
2221
|
|
|
2222
|
-
// src/commands/generate/fal-pricing.ts
|
|
2222
|
+
// src/commands/generate-image/fal-pricing.ts
|
|
2223
2223
|
function listUnitPrices(endpointIds) {
|
|
2224
2224
|
const prices = new Map;
|
|
2225
2225
|
for (const endpointId of endpointIds) {
|
|
@@ -2351,7 +2351,7 @@ function createDefaultFalPricingDeps(env = process.env) {
|
|
|
2351
2351
|
}
|
|
2352
2352
|
var LIST_PRICES_AS_OF = "2026-10-25", LIST_PRICES, IMAGE_SIZE_PRESETS, PRICING_TIMEOUT_MS = 3000, PRICING_URL = "https://api.fal.ai/v1/models/pricing", DISPLAY_UNITS;
|
|
2353
2353
|
var init_fal_pricing = __esm(() => {
|
|
2354
|
-
|
|
2354
|
+
init_image_preflight();
|
|
2355
2355
|
LIST_PRICES = {
|
|
2356
2356
|
"fal-ai/flux-2/flash": { unitPrice: 0.005, unit: "megapixels" },
|
|
2357
2357
|
"fal-ai/flux-2/flash/edit": { unitPrice: 0.005, unit: "processed megapixels" },
|
|
@@ -2374,7 +2374,7 @@ var init_fal_pricing = __esm(() => {
|
|
|
2374
2374
|
};
|
|
2375
2375
|
});
|
|
2376
2376
|
|
|
2377
|
-
// src/commands/generate/model-capabilities.ts
|
|
2377
|
+
// src/commands/generate-image/model-capabilities.ts
|
|
2378
2378
|
function getModelCapability(id) {
|
|
2379
2379
|
return Object.prototype.hasOwnProperty.call(MODEL_CAPABILITIES, id) ? MODEL_CAPABILITIES[id] : undefined;
|
|
2380
2380
|
}
|
|
@@ -2512,7 +2512,7 @@ var init_model_capabilities = __esm(() => {
|
|
|
2512
2512
|
};
|
|
2513
2513
|
});
|
|
2514
2514
|
|
|
2515
|
-
// src/commands/generate/image.ts
|
|
2515
|
+
// src/commands/generate-image/image.ts
|
|
2516
2516
|
var exports_image = {};
|
|
2517
2517
|
__export(exports_image, {
|
|
2518
2518
|
planGenerateImage: () => planGenerateImage,
|
|
@@ -2995,8 +2995,8 @@ async function generateImage(opts, deps) {
|
|
|
2995
2995
|
var GENERATE_IMAGE_PLATFORMS, DEFAULT_GENERATE_IMAGE_PLATFORM = "fal", GenerateImageError, LICENSING = "unverified", FAL_API_KEY_MISSING_MESSAGE = "FAL_API_KEY is not set. Set FAL_API_KEY in your environment to generate images with fal. (FAL_KEY_ID/FAL_KEY_SECRET are not supported by this command.)", EXTENSION_FORMATS, UNSUPPORTED_OUTPUT_EXTENSIONS, INPUT_DEDICATED_FLAGS, INPUT_IMAGE_CONTENT_TYPES, HTTP_URL_PATTERN, PLANNED_COST_NOTE = "fal returns no billed cost; this is computed from the planned image size.", ACTUAL_COST_NOTE = "fal returns no billed cost; check the fal dashboard for the actual bill.", EDIT_INPUT_MEGAPIXELS = 1, EDIT_INPUT_NOTE = "fal resizes the input image to 1 MP; the estimate counts 1 MP of input regardless of its dimensions.";
|
|
2996
2996
|
var init_image = __esm(() => {
|
|
2997
2997
|
init_fal_pricing();
|
|
2998
|
-
init_local_image_common();
|
|
2999
2998
|
init_model_capabilities();
|
|
2999
|
+
init_image_preflight();
|
|
3000
3000
|
GENERATE_IMAGE_PLATFORMS = ["fal"];
|
|
3001
3001
|
GenerateImageError = class GenerateImageError extends Error {
|
|
3002
3002
|
constructor(message) {
|
|
@@ -7054,7 +7054,7 @@ var require_src = __commonJS((exports) => {
|
|
|
7054
7054
|
}();
|
|
7055
7055
|
});
|
|
7056
7056
|
|
|
7057
|
-
// src/commands/
|
|
7057
|
+
// src/commands/image-shared/output-files.ts
|
|
7058
7058
|
import { stat, writeFile } from "node:fs/promises";
|
|
7059
7059
|
async function pathStatus(path) {
|
|
7060
7060
|
try {
|
|
@@ -7083,9 +7083,9 @@ async function writeJsonFile(path, value, options = {}) {
|
|
|
7083
7083
|
}
|
|
7084
7084
|
await writeFile(path, text, "utf8");
|
|
7085
7085
|
}
|
|
7086
|
-
var
|
|
7086
|
+
var init_output_files = () => {};
|
|
7087
7087
|
|
|
7088
|
-
// src/commands/
|
|
7088
|
+
// src/commands/image-shared/package-version.ts
|
|
7089
7089
|
import { readFileSync } from "node:fs";
|
|
7090
7090
|
import { createRequire as createRequire2 } from "node:module";
|
|
7091
7091
|
import { dirname, join } from "node:path";
|
|
@@ -7103,7 +7103,7 @@ function readInstalledPackageVersion(specifier) {
|
|
|
7103
7103
|
var UNKNOWN_VERSION = "unknown";
|
|
7104
7104
|
var init_package_version = () => {};
|
|
7105
7105
|
|
|
7106
|
-
// src/commands/generate/deps.ts
|
|
7106
|
+
// src/commands/generate-image/deps.ts
|
|
7107
7107
|
var exports_deps = {};
|
|
7108
7108
|
__export(exports_deps, {
|
|
7109
7109
|
createFalRawSubscribe: () => createFalRawSubscribe,
|
|
@@ -7296,8 +7296,8 @@ function createDefaultGenerateImageDeps() {
|
|
|
7296
7296
|
var import_client, SUBSCRIBE_TIMEOUT_SECONDS = 300;
|
|
7297
7297
|
var init_deps = __esm(() => {
|
|
7298
7298
|
init_fal_pricing();
|
|
7299
|
-
init_fs_helpers();
|
|
7300
7299
|
init_image();
|
|
7300
|
+
init_output_files();
|
|
7301
7301
|
init_package_version();
|
|
7302
7302
|
import_client = __toESM(require_src(), 1);
|
|
7303
7303
|
});
|
|
@@ -9189,7 +9189,7 @@ var require_png = __commonJS((exports) => {
|
|
|
9189
9189
|
};
|
|
9190
9190
|
});
|
|
9191
9191
|
|
|
9192
|
-
// src/commands/
|
|
9192
|
+
// src/commands/slice-image/slice-deps.ts
|
|
9193
9193
|
var exports_slice_deps = {};
|
|
9194
9194
|
__export(exports_slice_deps, {
|
|
9195
9195
|
createDefaultSliceImageDeps: () => createDefaultSliceImageDeps
|
|
@@ -9276,15 +9276,15 @@ function createDefaultSliceImageDeps() {
|
|
|
9276
9276
|
}
|
|
9277
9277
|
var import_pngjs, PNG;
|
|
9278
9278
|
var init_slice_deps = __esm(() => {
|
|
9279
|
-
|
|
9279
|
+
init_output_files();
|
|
9280
9280
|
init_package_version();
|
|
9281
9281
|
import_pngjs = __toESM(require_png(), 1);
|
|
9282
9282
|
({ PNG } = import_pngjs.default);
|
|
9283
9283
|
});
|
|
9284
9284
|
|
|
9285
|
-
// src/commands/
|
|
9286
|
-
var
|
|
9287
|
-
__export(
|
|
9285
|
+
// src/commands/remove-image-background/remove-image-background-deps.ts
|
|
9286
|
+
var exports_remove_image_background_deps = {};
|
|
9287
|
+
__export(exports_remove_image_background_deps, {
|
|
9288
9288
|
createDefaultRemoveImageBackgroundDeps: () => createDefaultRemoveImageBackgroundDeps
|
|
9289
9289
|
});
|
|
9290
9290
|
import { readdir } from "node:fs/promises";
|
|
@@ -9294,11 +9294,11 @@ function createDefaultRemoveImageBackgroundDeps() {
|
|
|
9294
9294
|
listDir: (dir) => readdir(dir)
|
|
9295
9295
|
};
|
|
9296
9296
|
}
|
|
9297
|
-
var
|
|
9297
|
+
var init_remove_image_background_deps = __esm(() => {
|
|
9298
9298
|
init_slice_deps();
|
|
9299
9299
|
});
|
|
9300
9300
|
|
|
9301
|
-
// src/commands/
|
|
9301
|
+
// src/commands/remove-image-background/remove-image-background-fal.ts
|
|
9302
9302
|
import { basename as basename2, resolve as resolve3 } from "node:path";
|
|
9303
9303
|
function validateBackgroundResult(raw, model) {
|
|
9304
9304
|
const unexpected = new RemoveBackgroundFalError(`fal returned no image for ${model}`);
|
|
@@ -9494,10 +9494,10 @@ async function removeBackgroundFal(options, deps) {
|
|
|
9494
9494
|
};
|
|
9495
9495
|
}
|
|
9496
9496
|
var DEFAULT_BACKGROUND_ENGINE = "bria", BACKGROUND_ENGINES, MAX_FAL_INPUT_BYTES, MAX_FAL_RESULT_BYTES, TOOL2 = "chatroom remove-image-background-fal", LICENSING2 = "unverified", RemoveBackgroundFalError, FAL_BILL_NOTE = "fal returns no billed cost; check the fal dashboard for the actual bill.", BIREFNET_RATE_REASON = "Total depends on runtime; not estimated.";
|
|
9497
|
-
var
|
|
9497
|
+
var init_remove_image_background_fal = __esm(() => {
|
|
9498
9498
|
init_fal_pricing();
|
|
9499
9499
|
init_image();
|
|
9500
|
-
|
|
9500
|
+
init_image_preflight();
|
|
9501
9501
|
BACKGROUND_ENGINES = {
|
|
9502
9502
|
bria: {
|
|
9503
9503
|
model: "fal-ai/bria/background/remove",
|
|
@@ -9518,9 +9518,9 @@ var init_remove_background_fal = __esm(() => {
|
|
|
9518
9518
|
};
|
|
9519
9519
|
});
|
|
9520
9520
|
|
|
9521
|
-
// src/commands/
|
|
9522
|
-
var
|
|
9523
|
-
__export(
|
|
9521
|
+
// src/commands/remove-image-background/remove-image-background-fal-deps.ts
|
|
9522
|
+
var exports_remove_image_background_fal_deps = {};
|
|
9523
|
+
__export(exports_remove_image_background_fal_deps, {
|
|
9524
9524
|
createDefaultRemoveBackgroundFalDeps: () => createDefaultRemoveBackgroundFalDeps
|
|
9525
9525
|
});
|
|
9526
9526
|
import { dirname as dirname4 } from "node:path";
|
|
@@ -9569,11 +9569,11 @@ function createDefaultRemoveBackgroundFalDeps() {
|
|
|
9569
9569
|
log: (message) => console.log(message)
|
|
9570
9570
|
};
|
|
9571
9571
|
}
|
|
9572
|
-
var
|
|
9572
|
+
var init_remove_image_background_fal_deps = __esm(() => {
|
|
9573
|
+
init_remove_image_background_fal();
|
|
9573
9574
|
init_deps();
|
|
9574
9575
|
init_fal_pricing();
|
|
9575
9576
|
init_package_version();
|
|
9576
|
-
init_remove_background_fal();
|
|
9577
9577
|
init_slice_deps();
|
|
9578
9578
|
});
|
|
9579
9579
|
|
|
@@ -108620,7 +108620,7 @@ var init_game_asset_designer_workflow = __esm(() => {
|
|
|
108620
108620
|
// ../../services/backend/prompts/teams/game-asset-designer-handoff-templates.ts
|
|
108621
108621
|
function getEntryPointToGameAssetDesignerHandoffTemplate(query) {
|
|
108622
108622
|
const entryPoint = query.fromRole;
|
|
108623
|
-
return `Instructions (not part of the message): Pass the asset request as a brief the designer can act on without guessing. Provide every field below; write \`Not specified.\` for a field you cannot fill and the designer will ask or apply a stated default. Give each asset a stable ID (\`A01\`, \`A02\`…). Use \`spec only\` only when you want a specification with no files; the default is \`spec and generate\`. The \`## Allowed tools\` value is fixed: \`chatroom generate-image --platform=fal --model <Model> (dry run first), chatroom slice-image, chatroom remove-image-background\`. Do not name any other generator.
|
|
108623
|
+
return `Instructions (not part of the message): Pass the asset request as a brief the designer can act on without guessing. Provide every field below; write \`Not specified.\` for a field you cannot fill and the designer will ask or apply a stated default. Give each asset a stable ID (\`A01\`, \`A02\`…). Use \`spec only\` only when you want a specification with no files; the default is \`spec and generate\`. The \`## Allowed tools\` value is fixed: \`chatroom generate-image --platform=fal --model <Model> (dry run first), chatroom slice-image, chatroom remove-image-background\`. Do not name any other generator. Before generating anything, the designer evaluates each \`## Free asset candidates\` entry and records a \`use\`, \`adapt\`, or \`reject\` decision; it generates only the assets that no candidate covers.
|
|
108624
108624
|
|
|
108625
108625
|
## Asset request
|
|
108626
108626
|
<one to three sentences: what the assets are for and the user-visible goal>
|
|
@@ -108652,6 +108652,9 @@ function getEntryPointToGameAssetDesignerHandoffTemplate(query) {
|
|
|
108652
108652
|
## Existing assets
|
|
108653
108653
|
<repository paths the designer must reuse or must not overwrite; or \`Not specified.\`>
|
|
108654
108654
|
|
|
108655
|
+
## Free asset candidates
|
|
108656
|
+
<one entry per third-party pack to evaluate before generating: pack name, source URL, expected licence (for example CC0), formats, and the asset IDs it could cover; or \`None.\`. The designer checks each pack's own licence file and file sizes and gives each candidate a \`use\`, \`adapt\`, or \`reject\` decision. It fetches only the URLs named here, inspects the pack as static files, and never runs its code.>
|
|
108657
|
+
|
|
108655
108658
|
## Deliverable mode
|
|
108656
108659
|
<\`spec and generate\` (default when you name an output location and allowed tools) or \`spec only\`>
|
|
108657
108660
|
|
|
@@ -108711,10 +108714,14 @@ ${PROOF_OF_PRINCIPLES_REPORT}
|
|
|
108711
108714
|
- [ ] Every asset ID has a file or \`Specified only.\`
|
|
108712
108715
|
- [ ] Every sliced asset was isolated with \`remove-image-background\` and \`inspected\`.
|
|
108713
108716
|
- [ ] Manifests are listed in the asset manifest.
|
|
108717
|
+
- [ ] Every candidate in the brief has a decision with its licence and file sizes labelled \`inspected\`.
|
|
108714
108718
|
|
|
108715
108719
|
## Target and assumptions
|
|
108716
108720
|
<each assumption you made and why; each deviation from the planner's target or budgets; or \`None.\`>
|
|
108717
108721
|
|
|
108722
|
+
## Free asset decisions
|
|
108723
|
+
<one entry per candidate in the brief: pack name, licence quoted from the pack's own licence file, file sizes checked, decision (\`use\`, \`adapt\`, or \`reject\`), asset IDs covered, and the reason; for \`adapt\`, the edits made; write exactly \`None.\` if the brief named no candidates>
|
|
108724
|
+
|
|
108718
108725
|
## Asset manifest
|
|
108719
108726
|
<one entry per asset, keyed by the planner's stable ID (\`A01\`…): name, category, file format, path (or \`Specified only.\`), dimensions/units/scale, pivot, naming, LOD list with triangle budgets, texture set with resolution, color space and channel packing, atlas/pixel grid/frame data, audio format and loudness target, import settings, dependencies and variants; for each budget, the acceptance check (exact command and expected value); for each generated file, the generator command line (\`chatroom generate-image\` with its \`--platform\`, \`--model\`, \`--seed\`, \`--input\`, and \`--input-image\` values), the sheet and tile manifests, and the isolated asset manifest path>
|
|
108720
108727
|
|
|
@@ -146804,11 +146811,11 @@ var {
|
|
|
146804
146811
|
Help
|
|
146805
146812
|
} = import__.default;
|
|
146806
146813
|
|
|
146807
|
-
// src/commands/generate/index.ts
|
|
146814
|
+
// src/commands/generate-image/index.ts
|
|
146808
146815
|
import { readFile as readFile2, stat as stat2 } from "node:fs/promises";
|
|
146809
146816
|
init_image();
|
|
146810
|
-
init_local_image_common();
|
|
146811
146817
|
init_model_capabilities();
|
|
146818
|
+
init_image_preflight();
|
|
146812
146819
|
var OUTPUT_FORMATS = ["png", "webp"];
|
|
146813
146820
|
function parsePlatform(value) {
|
|
146814
146821
|
if (!GENERATE_IMAGE_PLATFORMS.includes(value)) {
|
|
@@ -146888,11 +146895,19 @@ function registerGenerateImageCommand(program2) {
|
|
|
146888
146895
|
program2.command("generate-image").description("Generate one image with a fal model and write a JSON manifest next to it").requiredOption("--prompt <text>", "Text prompt describing the image").requiredOption("--out <path>", "Output image path (manifest is written to <path>.json)").option("--platform <name>", "Generation platform: fal", parsePlatform, DEFAULT_GENERATE_IMAGE_PLATFORM).requiredOption("--model <id>", `fal model id (required), for example ${FLUX_2_FLASH_MODEL}, or ${FLUX_2_FLASH_EDIT_MODEL} with --input-image`).option("--aspect-ratio <ratio>", "Aspect ratio for models that take one, e.g. 1:1, 16:9 (omitted = model default). Rejected for models the CLI knows do not support it").option("--output-format <format>", "Output format: png or webp (omitted = model default)", parseOutputFormat).option("--seed <n>", "Seed for the random number generator", parseSeed).option("--input <json|@file>", "Model-specific JSON input object merged into the fal request; @file reads JSON from a file").option("--input-image <path-or-url>", `Image to edit: a local .png, .jpg, .jpeg, .webp, or .gif (uploaded to fal) or an http(s) URL. Requires an edit model such as ${FLUX_2_FLASH_EDIT_MODEL}`).option("--force", "Overwrite existing output and manifest files").option("--dry-run", "Validate and print the request, the model constraints the CLI knows, and the estimated fal cost. No upload or fal generation call is made; one read-only pricing request may be made when FAL_API_KEY is set (the key is not required)").addHelpText("after", HELP_AFTER).action(runGenerateImage);
|
|
146889
146896
|
}
|
|
146890
146897
|
|
|
146891
|
-
// src/commands/
|
|
146898
|
+
// src/commands/register-chatroom-role-command.ts
|
|
146899
|
+
function registerChatroomRoleCommand(program2, config) {
|
|
146900
|
+
program2.command(config.name).description(config.description).requiredOption("--chatroom-id <id>", "Chatroom identifier").requiredOption("--role <role>", "Your role (e.g., planner, builder)").action(async (options) => {
|
|
146901
|
+
await config.maybeRequireAuth();
|
|
146902
|
+
await config.run(options.chatroomId, { role: options.role });
|
|
146903
|
+
});
|
|
146904
|
+
}
|
|
146905
|
+
|
|
146906
|
+
// src/commands/remove-image-background/remove-image-background.ts
|
|
146892
146907
|
import { basename, dirname as dirname3, extname as extname2, join as join2, resolve as resolve2 } from "node:path";
|
|
146893
146908
|
|
|
146894
|
-
// src/commands/
|
|
146895
|
-
|
|
146909
|
+
// src/commands/remove-image-background/background-key.ts
|
|
146910
|
+
init_image_preflight();
|
|
146896
146911
|
var DEFAULT_TOLERANCE = 24;
|
|
146897
146912
|
var DEFAULT_MIN_AREA_PERCENT = 0.5;
|
|
146898
146913
|
var BORDER_NOISE_REFUSAL_RATIO = 0.02;
|
|
@@ -147207,10 +147222,7 @@ function keyBackground(image, opts) {
|
|
|
147207
147222
|
});
|
|
147208
147223
|
}
|
|
147209
147224
|
|
|
147210
|
-
// src/commands/
|
|
147211
|
-
init_local_image_common();
|
|
147212
|
-
|
|
147213
|
-
// src/commands/generate/trim-crop.ts
|
|
147225
|
+
// src/commands/remove-image-background/trim-crop.ts
|
|
147214
147226
|
var MAX_TRIM_PADDING = 64;
|
|
147215
147227
|
function trimRect(contentBox, canvasWidth, canvasHeight, padding) {
|
|
147216
147228
|
const x = Math.max(0, contentBox.x - padding);
|
|
@@ -147229,7 +147241,9 @@ function cropRgba(data, canvasWidth, rect) {
|
|
|
147229
147241
|
return cropped;
|
|
147230
147242
|
}
|
|
147231
147243
|
|
|
147232
|
-
// src/commands/
|
|
147244
|
+
// src/commands/remove-image-background/remove-image-background.ts
|
|
147245
|
+
init_image_preflight();
|
|
147246
|
+
|
|
147233
147247
|
class RemoveBackgroundError extends Error {
|
|
147234
147248
|
constructor(message) {
|
|
147235
147249
|
super(message);
|
|
@@ -147667,7 +147681,7 @@ async function removeImageBackground(opts, deps) {
|
|
|
147667
147681
|
return result;
|
|
147668
147682
|
}
|
|
147669
147683
|
|
|
147670
|
-
// src/commands/
|
|
147684
|
+
// src/commands/remove-image-background/remove-image-background-command.ts
|
|
147671
147685
|
var DECIMAL_INTEGER = /^\d+$/;
|
|
147672
147686
|
var DECIMAL_PERCENT = /^\d+(?:\.\d+)?$/;
|
|
147673
147687
|
function parseTolerance(value) {
|
|
@@ -147769,7 +147783,7 @@ function printResult(result) {
|
|
|
147769
147783
|
function registerRemoveImageBackgroundCommand(program2) {
|
|
147770
147784
|
program2.command("remove-image-background").description("Key a tile background to transparency and write an isolated PNG asset").option("--in <png>", "Single input tile PNG").option("--out <png>", "Single output PNG path (must end in .png)").option("--in-dir <dir>", "Directory of input tile PNGs").option("--out-dir <dir>", "Directory for output PNGs and manifests").option("--map <tile=name,...>", "Directory-mode tile stem to output name mapping", parseMap).option("--tolerance <1-128>", "Background colour tolerance", parseTolerance, 24).option("--min-area <percent>", "Smallest kept region as a percent of the tile", parseMinArea, 0.5).option("--allow-edge-content", "Keep artwork that touches the tile border").option("--trim", "Crop each asset to its opaque content").option("--trim-padding <px>", "Pixels kept around trimmed content (0-64, requires --trim)", parseTrimPadding).option("--force", "Overwrite existing outputs").option("--dry-run", "Report the assets without writing anything").addHelpText("after", HELP_AFTER2).action(async (options) => {
|
|
147771
147785
|
try {
|
|
147772
|
-
const { createDefaultRemoveImageBackgroundDeps: createDefaultRemoveImageBackgroundDeps2 } = await Promise.resolve().then(() => (
|
|
147786
|
+
const { createDefaultRemoveImageBackgroundDeps: createDefaultRemoveImageBackgroundDeps2 } = await Promise.resolve().then(() => (init_remove_image_background_deps(), exports_remove_image_background_deps));
|
|
147773
147787
|
const removeOptions = {
|
|
147774
147788
|
in: options.in,
|
|
147775
147789
|
out: options.out,
|
|
@@ -147793,8 +147807,8 @@ function registerRemoveImageBackgroundCommand(program2) {
|
|
|
147793
147807
|
});
|
|
147794
147808
|
}
|
|
147795
147809
|
|
|
147796
|
-
// src/commands/
|
|
147797
|
-
|
|
147810
|
+
// src/commands/remove-image-background/remove-image-background-fal-command.ts
|
|
147811
|
+
init_remove_image_background_fal();
|
|
147798
147812
|
var ENGINES = ["bria", "birefnet"];
|
|
147799
147813
|
function parseEngine(value) {
|
|
147800
147814
|
if (!ENGINES.includes(value)) {
|
|
@@ -147841,7 +147855,7 @@ Examples:
|
|
|
147841
147855
|
function registerRemoveImageBackgroundFalCommand(program2) {
|
|
147842
147856
|
program2.command("remove-image-background-fal").description("Remove an image background with fal.ai and write a transparent PNG").requiredOption("--in <png>", "Input PNG to cut out").requiredOption("--out <png>", "Output PNG path for the image with alpha").option("--engine <engine>", "Background model: bria (default, fal-ai/bria/background/remove) or birefnet (previous BiRefNet Matting backend, fal-ai/birefnet/v2)", parseEngine, DEFAULT_BACKGROUND_ENGINE).option("--force", "Overwrite an existing output and manifest").addHelpText("after", HELP_AFTER3).action(async (options) => {
|
|
147843
147857
|
try {
|
|
147844
|
-
const { createDefaultRemoveBackgroundFalDeps: createDefaultRemoveBackgroundFalDeps2 } = await Promise.resolve().then(() => (
|
|
147858
|
+
const { createDefaultRemoveBackgroundFalDeps: createDefaultRemoveBackgroundFalDeps2 } = await Promise.resolve().then(() => (init_remove_image_background_fal_deps(), exports_remove_image_background_fal_deps));
|
|
147845
147859
|
const result = await removeBackgroundFal({ in: options.in, out: options.out, engine: options.engine, force: options.force }, createDefaultRemoveBackgroundFalDeps2());
|
|
147846
147860
|
console.log(`Removed background ${result.outPath} (${result.bytes} bytes)`);
|
|
147847
147861
|
console.log(`Manifest ${result.manifestPath}`);
|
|
@@ -147853,8 +147867,8 @@ function registerRemoveImageBackgroundFalCommand(program2) {
|
|
|
147853
147867
|
});
|
|
147854
147868
|
}
|
|
147855
147869
|
|
|
147856
|
-
// src/commands/
|
|
147857
|
-
|
|
147870
|
+
// src/commands/slice-image/slice.ts
|
|
147871
|
+
init_image_preflight();
|
|
147858
147872
|
import { basename as basename3, extname as extname3, join as join3, resolve as resolve4 } from "node:path";
|
|
147859
147873
|
var SLICE_TOOL = "chatroom slice-image";
|
|
147860
147874
|
var MAX_TILES = 256;
|
|
@@ -148350,7 +148364,7 @@ async function sliceImage(opts, deps) {
|
|
|
148350
148364
|
return result;
|
|
148351
148365
|
}
|
|
148352
148366
|
|
|
148353
|
-
// src/commands/
|
|
148367
|
+
// src/commands/slice-image/slice-command.ts
|
|
148354
148368
|
var DECIMAL_INTEGER2 = /^\d+$/;
|
|
148355
148369
|
var HELP_AFTER4 = `
|
|
148356
148370
|
Usage:
|
|
@@ -148450,14 +148464,6 @@ function registerSliceImageCommand(program2) {
|
|
|
148450
148464
|
});
|
|
148451
148465
|
}
|
|
148452
148466
|
|
|
148453
|
-
// src/commands/register-chatroom-role-command.ts
|
|
148454
|
-
function registerChatroomRoleCommand(program2, config) {
|
|
148455
|
-
program2.command(config.name).description(config.description).requiredOption("--chatroom-id <id>", "Chatroom identifier").requiredOption("--role <role>", "Your role (e.g., planner, builder)").action(async (options) => {
|
|
148456
|
-
await config.maybeRequireAuth();
|
|
148457
|
-
await config.run(options.chatroomId, { role: options.role });
|
|
148458
|
-
});
|
|
148459
|
-
}
|
|
148460
|
-
|
|
148461
148467
|
// src/utils/multi-value-option.ts
|
|
148462
148468
|
function collectMultiValueOption(value, previous) {
|
|
148463
148469
|
return previous ? [...previous, value] : [value];
|
|
@@ -149093,4 +149099,4 @@ program2.hook("preAction", async (_thisCommand, actionCommand) => {
|
|
|
149093
149099
|
});
|
|
149094
149100
|
program2.parse();
|
|
149095
149101
|
|
|
149096
|
-
//# debugId=
|
|
149102
|
+
//# debugId=DB5E1205262551F864756E2164756E21
|