@melius-ai/cli 0.8.0 → 0.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -1
- package/dist/bin/mel.js +1 -1
- package/dist/{chunk-3PBGQVUH.js → chunk-24FW76XZ.js} +118 -28
- package/dist/src/index.js +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -265,7 +265,7 @@ Requires the Pro or Enterprise plan.
|
|
|
265
265
|
| `mel asset folders` | List the library's folders (`id`, `name`, `path`, `fileCount`) so you can resolve a folder name to an id for `--folder-id` |
|
|
266
266
|
| `mel asset place <canvasId> <assetIds...>` | Place existing library assets onto a canvas by id — references the **original** asset (no duplicate) |
|
|
267
267
|
|
|
268
|
-
`mel asset search` searches by meaning (semantic), with exact filename/title matches ranked first, so query with a filename or a description of the content. It returns `{ query, total, results: [{ assetId, filename, fileType, previewUrl, ... }] }`. Filter with `--file-type <image|video|audio|pdf|text
|
|
268
|
+
`mel asset search` searches by meaning (semantic), with exact filename/title matches ranked first, so query with a filename or a description of the content. Pass an exact filename verbatim, including its extension. It returns `{ query, total, results: [{ assetId, filename, fileType, previewUrl, ... }] }`. Filter by origin with `--source <upload|generated>`, by media type with `--file-type <image|video|audio|pdf|text>`, and by page size with `--limit <1-20>`; page deeper with `--offset <n>` (skip the first N matches — page until the running count reaches `total`); scope to one canvas with `--canvas-id` (omit to search the whole team library).
|
|
269
269
|
|
|
270
270
|
Scope to a **folder** with `--folder-id` (from `mel asset folders`): with a query it filters within that folder and its subfolders; **omit the query** to bring in the _whole_ folder (every asset in it). `mel asset folders` returns each folder's root-relative `path` (e.g. `Brand / Logos`) to disambiguate same-named folders.
|
|
271
271
|
|
|
@@ -276,6 +276,8 @@ Filter by **tag** with `--tags <names>` (comma-separated, case-insensitive): ass
|
|
|
276
276
|
```bash
|
|
277
277
|
# Find an asset, then bring it onto a canvas and wire it
|
|
278
278
|
mel asset search "black jacket shot" --file-type image
|
|
279
|
+
mel asset search "Product_Shot_05.PNG" --source upload
|
|
280
|
+
mel asset search "shark close-up" --source generated
|
|
279
281
|
mel asset place <canvasId> <assetId1> <assetId2>
|
|
280
282
|
|
|
281
283
|
# Bring in a whole folder: resolve the folder, then search it with no query
|
package/dist/bin/mel.js
CHANGED
|
@@ -7736,6 +7736,7 @@ var MAX_INPUT_VIDEOS = 3;
|
|
|
7736
7736
|
var MAX_INPUT_DOCUMENTS = 5;
|
|
7737
7737
|
var MAX_AGENT_MESSAGE_CONTENT_LENGTH = 5e4;
|
|
7738
7738
|
var MAX_SEED = 2147483647;
|
|
7739
|
+
var MAX_VARIATIONS = 10;
|
|
7739
7740
|
|
|
7740
7741
|
// ../api-contract/src/common.ts
|
|
7741
7742
|
var MessageResponseSchema = external_exports.object({ message: external_exports.string() });
|
|
@@ -8041,6 +8042,9 @@ var BulkDownloadFilesResponseSchema = external_exports.object({
|
|
|
8041
8042
|
var BulkHideFilesBodySchema = external_exports.object({
|
|
8042
8043
|
assetIds: BulkFileAssetIdsSchema
|
|
8043
8044
|
});
|
|
8045
|
+
var BulkDeleteFilesBodySchema = external_exports.object({
|
|
8046
|
+
assetIds: BulkFileAssetIdsSchema
|
|
8047
|
+
});
|
|
8044
8048
|
var BulkUnhideFilesBodySchema = external_exports.object({
|
|
8045
8049
|
assetIds: BulkFileAssetIdsSchema
|
|
8046
8050
|
});
|
|
@@ -8125,16 +8129,18 @@ var FileTabCountsResponseSchema = external_exports.object({
|
|
|
8125
8129
|
var AGENT_ASSET_SEARCH_PAGE_SIZE = 20;
|
|
8126
8130
|
var AgentAssetSearchQuerySchema = external_exports.object({
|
|
8127
8131
|
query: external_exports.string().trim().min(1).max(500).optional().describe(
|
|
8128
|
-
'The semantic search query \u2014
|
|
8132
|
+
'The semantic search query \u2014 an exact filename or a description of the asset (e.g. "Product_Shot_05.png", "red logo", "the shark photo"). When the member gives an exact filename, pass it verbatim, including its extension; exact matches rank first. Provide a query to FIND specific assets. OMIT it entirely to bring in EVERY asset from a folder: when the member says "bring in all my assets from the X folder" / "add everything in X to the canvas", resolve the folder with list_asset_folders and call asset_search with just that `folderId` and NO query. Never invent a query when the member asked for everything in a folder \u2014 a query filters and will drop assets they wanted. Omitting the query requires a `folderId`.'
|
|
8129
8133
|
),
|
|
8130
8134
|
limit: external_exports.coerce.number().int().min(1).max(AGENT_ASSET_SEARCH_PAGE_SIZE).default(AGENT_ASSET_SEARCH_PAGE_SIZE),
|
|
8131
|
-
source: FileSourceSchema.optional()
|
|
8135
|
+
source: FileSourceSchema.optional().describe(
|
|
8136
|
+
"Optional. Filter by where the asset came from: `upload` for files uploaded by a member, or `generated` for media created in Melius. Set this only when the member explicitly asks for uploads or generations; omit it to search both."
|
|
8137
|
+
),
|
|
8132
8138
|
fileType: FileTypeSchema.optional(),
|
|
8133
8139
|
canvasId: external_exports.string().uuid().optional().describe(
|
|
8134
8140
|
'Optional. Omit to search the whole team library \u2014 this is the default and what nearly every request wants (e.g. "use the asset I have"). Only set this to scope to a DIFFERENT canvas the member explicitly names ("search my other canvas"), resolving the id from canvas_list. Do NOT pass the canvas the chat is currently on (its assets are already visible via canvas_content, and scoping there hides whole-library matches), and never guess an id.'
|
|
8135
8141
|
),
|
|
8136
8142
|
folderId: external_exports.string().uuid().optional().describe(
|
|
8137
|
-
'Optional. Scope to one Files folder AND its subfolders. Omit to search the whole team library \u2014 the default, and what nearly every request wants. Set it when the member names a specific folder \u2014 either to FILTER within it (pass `folderId` + `query`, e.g. "find the shark shot in my ocean folder") or to bring in EVERYTHING in it (pass `folderId` and OMIT `query`, e.g. "add all my assets from the ocean folder"). Resolve the id with list_asset_folders
|
|
8143
|
+
'Optional. Scope to one Files folder AND its subfolders. Omit to search the whole team library \u2014 the default, and what nearly every request wants. Set it when the member names a specific folder \u2014 either to FILTER within it (pass `folderId` + `query`, e.g. "find the shark shot in my ocean folder") or to bring in EVERYTHING in it (pass `folderId` and OMIT `query`, e.g. "add all my assets from the ocean folder"). Resolve the id with list_asset_folders: prefer a case-insensitive exact name or path before considering partial matches; if several exact or partial matches remain, ask which one. Never guess a folder id.'
|
|
8138
8144
|
),
|
|
8139
8145
|
tags: external_exports.string().trim().optional().describe(
|
|
8140
8146
|
'Optional. Filter to assets carrying ALL of these tags (AND). Pass a tag name ONLY when the member explicitly asks to filter by a tag (e.g. "find my assets tagged brand", "my hero tag") \u2014 never infer one from ordinary words in their request. Comma-separated (e.g. "brand" or "brand,hero"), case-insensitive. Combine with `query` to search within tagged assets, or omit `query` (with tags and/or a folderId) to bring in every asset carrying them. An unknown or misspelled tag name matches nothing, so pass only tags the member actually named.'
|
|
@@ -8436,6 +8442,17 @@ var filesContract = c2.router({
|
|
|
8436
8442
|
},
|
|
8437
8443
|
summary: "Hide files from Files"
|
|
8438
8444
|
},
|
|
8445
|
+
bulkDeleteFiles: {
|
|
8446
|
+
method: "POST",
|
|
8447
|
+
path: "/files/bulk/delete",
|
|
8448
|
+
body: BulkDeleteFilesBodySchema,
|
|
8449
|
+
responses: {
|
|
8450
|
+
200: BulkFileActionResponseSchema,
|
|
8451
|
+
403: ErrorBodySchema,
|
|
8452
|
+
404: ErrorBodySchema
|
|
8453
|
+
},
|
|
8454
|
+
summary: "Delete files from Files"
|
|
8455
|
+
},
|
|
8439
8456
|
hideFile: {
|
|
8440
8457
|
method: "POST",
|
|
8441
8458
|
path: "/files/:assetId/hide",
|
|
@@ -8448,6 +8465,18 @@ var filesContract = c2.router({
|
|
|
8448
8465
|
},
|
|
8449
8466
|
summary: "Hide a file from Files"
|
|
8450
8467
|
},
|
|
8468
|
+
deleteFile: {
|
|
8469
|
+
method: "DELETE",
|
|
8470
|
+
path: "/files/:assetId",
|
|
8471
|
+
pathParams: FileAssetIdParamsSchema,
|
|
8472
|
+
body: null,
|
|
8473
|
+
responses: {
|
|
8474
|
+
204: c2.noBody(),
|
|
8475
|
+
403: ErrorBodySchema,
|
|
8476
|
+
404: ErrorBodySchema
|
|
8477
|
+
},
|
|
8478
|
+
summary: "Delete a file from Files"
|
|
8479
|
+
},
|
|
8451
8480
|
bulkUnhideFiles: {
|
|
8452
8481
|
method: "POST",
|
|
8453
8482
|
path: "/files/bulk/unhide",
|
|
@@ -9390,10 +9419,7 @@ var AutoModelProxy = class {
|
|
|
9390
9419
|
resolve(input) {
|
|
9391
9420
|
switch (input.nodeType) {
|
|
9392
9421
|
case "video":
|
|
9393
|
-
return this.resolveVideo(
|
|
9394
|
-
input.connectedInputs,
|
|
9395
|
-
input.canvasVideoInputRoutingEnabled === true
|
|
9396
|
-
);
|
|
9422
|
+
return this.resolveVideo(input.connectedInputs);
|
|
9397
9423
|
case "image":
|
|
9398
9424
|
return this.resolveImage(input.connectedInputs);
|
|
9399
9425
|
case "text":
|
|
@@ -9412,7 +9438,7 @@ var AutoModelProxy = class {
|
|
|
9412
9438
|
return this.registry;
|
|
9413
9439
|
}
|
|
9414
9440
|
// ── Private resolvers ───────────────────────────────────────────────
|
|
9415
|
-
resolveVideo(ci
|
|
9441
|
+
resolveVideo(ci) {
|
|
9416
9442
|
const hasAnyImage = ci.hasImage || ci.hasStartingImage || ci.hasEndImage || ci.hasReferenceImage;
|
|
9417
9443
|
if (ci.hasVideo && hasAnyImage) {
|
|
9418
9444
|
if (ci.hasEndImage) {
|
|
@@ -9445,11 +9471,7 @@ var AutoModelProxy = class {
|
|
|
9445
9471
|
return this.lookupRoute("video", "video-with-audio");
|
|
9446
9472
|
}
|
|
9447
9473
|
if (ci.hasAudio && (ci.hasStartingImage || ci.hasImage) && ci.hasEndImage) {
|
|
9448
|
-
return
|
|
9449
|
-
valid: true,
|
|
9450
|
-
model: "ltx-2.3-audio",
|
|
9451
|
-
variant: "image-to-video"
|
|
9452
|
-
};
|
|
9474
|
+
return this.lookupRoute("video", "frames-with-audio");
|
|
9453
9475
|
}
|
|
9454
9476
|
if (ci.hasAudio && hasAnyImage) {
|
|
9455
9477
|
return this.lookupRoute("video", "image-with-audio");
|
|
@@ -10502,6 +10524,16 @@ var NodeVersionResponseSchema = external_exports.object({
|
|
|
10502
10524
|
*/
|
|
10503
10525
|
modelDisplayName: external_exports.string().nullable().optional(),
|
|
10504
10526
|
asset: AssetResponseSchema.nullable(),
|
|
10527
|
+
/**
|
|
10528
|
+
* For a version produced by a node tool (background removal, subtitles,
|
|
10529
|
+
* GIF, upscale — i.e. `sourceToolName` is set), the source asset the tool
|
|
10530
|
+
* transformed. A tool runs in place on a file node, so the input lives on
|
|
10531
|
+
* an earlier version that the bulk content response does not ship; this
|
|
10532
|
+
* surfaces it so consumers (e.g. Playground history) can show what the tool
|
|
10533
|
+
* ran on without re-fetching the node's full version list. Populated only
|
|
10534
|
+
* when the caller opts in via `includeToolInputReferences`.
|
|
10535
|
+
*/
|
|
10536
|
+
toolInputAsset: AssetResponseSchema.nullable().optional(),
|
|
10505
10537
|
pdfExtraction: PdfExtractionSchema.nullable().optional(),
|
|
10506
10538
|
/** Present when an active node run exists for this version (e.g. PDF extraction in progress). */
|
|
10507
10539
|
nodeRunId: external_exports.string().uuid().nullable().optional(),
|
|
@@ -10524,7 +10556,12 @@ var MagicResizeOutputSchema = external_exports.object({
|
|
|
10524
10556
|
assetId: external_exports.string().nullable(),
|
|
10525
10557
|
assetUrl: external_exports.string().nullable(),
|
|
10526
10558
|
previewUrl: external_exports.string().nullable(),
|
|
10527
|
-
failed: external_exports.boolean().optional()
|
|
10559
|
+
failed: external_exports.boolean().optional(),
|
|
10560
|
+
// User-facing failure reason for a `failed` layer, mirroring the error
|
|
10561
|
+
// message + severity a regular media node shows (e.g. a provider error vs.
|
|
10562
|
+
// a content-moderation warning). Absent on successful layers.
|
|
10563
|
+
errorMessage: external_exports.string().nullish(),
|
|
10564
|
+
errorSeverity: external_exports.enum(["error", "warning"]).nullish()
|
|
10528
10565
|
});
|
|
10529
10566
|
var NodeResponseSchema = external_exports.object({
|
|
10530
10567
|
id: external_exports.string().uuid(),
|
|
@@ -10586,6 +10623,8 @@ var NodeResponseSchema = external_exports.object({
|
|
|
10586
10623
|
childNodeIds: external_exports.array(external_exports.string().uuid()).optional(),
|
|
10587
10624
|
/** Per-ratio outputs for magic-resize nodes (from CRDT); one per variant. */
|
|
10588
10625
|
magicResizeOutputs: external_exports.array(MagicResizeOutputSchema).nullable().optional(),
|
|
10626
|
+
/** User id of the team member who created the node, or null when unknown. */
|
|
10627
|
+
createdByUserId: external_exports.string().uuid().nullable().optional(),
|
|
10589
10628
|
versions: external_exports.array(NodeVersionResponseSchema),
|
|
10590
10629
|
createdAt: external_exports.string().datetime(),
|
|
10591
10630
|
updatedAt: external_exports.string().datetime()
|
|
@@ -10606,7 +10645,7 @@ var CanvasMediaPresetSchema = external_exports.object({
|
|
|
10606
10645
|
aspectRatio: OutputAspectRatioSchema.optional(),
|
|
10607
10646
|
resolution: OutputResolutionSchema.optional(),
|
|
10608
10647
|
fast: external_exports.boolean().optional(),
|
|
10609
|
-
numVariations: external_exports.number().int().min(1).max(
|
|
10648
|
+
numVariations: external_exports.number().int().min(1).max(MAX_VARIATIONS).optional()
|
|
10610
10649
|
}).optional(),
|
|
10611
10650
|
video: external_exports.object({
|
|
10612
10651
|
model: external_exports.string().optional(),
|
|
@@ -10615,13 +10654,13 @@ var CanvasMediaPresetSchema = external_exports.object({
|
|
|
10615
10654
|
resolution: OutputResolutionSchema.optional(),
|
|
10616
10655
|
duration: external_exports.number().int().positive().optional(),
|
|
10617
10656
|
fast: external_exports.boolean().optional(),
|
|
10618
|
-
numVariations: external_exports.number().int().min(1).max(
|
|
10657
|
+
numVariations: external_exports.number().int().min(1).max(MAX_VARIATIONS).optional()
|
|
10619
10658
|
}).optional(),
|
|
10620
10659
|
text: external_exports.object({
|
|
10621
10660
|
model: external_exports.string().optional(),
|
|
10622
10661
|
mode: external_exports.string().optional(),
|
|
10623
10662
|
fast: external_exports.boolean().optional(),
|
|
10624
|
-
numVariations: external_exports.number().int().min(1).max(
|
|
10663
|
+
numVariations: external_exports.number().int().min(1).max(MAX_VARIATIONS).optional()
|
|
10625
10664
|
}).optional(),
|
|
10626
10665
|
audio: external_exports.object({
|
|
10627
10666
|
model: external_exports.string().optional(),
|
|
@@ -10663,7 +10702,24 @@ var CanvasContentQuerySchema = external_exports.object({
|
|
|
10663
10702
|
* so the model reads the summary instead of a URL. The web app does
|
|
10664
10703
|
* not set this, so it always receives URLs.
|
|
10665
10704
|
*/
|
|
10666
|
-
mediaSummaries: QueryBooleanSchema.optional()
|
|
10705
|
+
mediaSummaries: QueryBooleanSchema.optional(),
|
|
10706
|
+
/**
|
|
10707
|
+
* Opt-in: resolve the source asset each node-tool version transformed
|
|
10708
|
+
* onto `version.toolInputAsset` (see that field). Off by default so the
|
|
10709
|
+
* common canvas/agent/MCP reads never pay the extra version lookup; the
|
|
10710
|
+
* Playground history loader sets it to restore tool-run input previews.
|
|
10711
|
+
*/
|
|
10712
|
+
includeToolInputReferences: QueryBooleanSchema.optional(),
|
|
10713
|
+
/**
|
|
10714
|
+
* Opt-in: ship EVERY asset-bearing version for generation nodes
|
|
10715
|
+
* (image/video/audio) with more than one output, so a
|
|
10716
|
+
* native-variations node (one node, N output versions) can rebuild
|
|
10717
|
+
* its full output set from a bulk read. Resolved in a bounded batched
|
|
10718
|
+
* pass like `includeToolInputReferences`; off by default so common
|
|
10719
|
+
* reads pay nothing. Unlike `includeAllVersions` it needs no nodeId
|
|
10720
|
+
* scoping.
|
|
10721
|
+
*/
|
|
10722
|
+
includeVariationVersions: QueryBooleanSchema.optional()
|
|
10667
10723
|
}).refine(
|
|
10668
10724
|
(query) => query.includeAllVersions !== true || query.nodeId !== void 0,
|
|
10669
10725
|
{
|
|
@@ -10698,7 +10754,7 @@ var RunNodeBodySchema = external_exports.object({
|
|
|
10698
10754
|
outputDuration: external_exports.number().int().positive().optional(),
|
|
10699
10755
|
outputResolution: OutputResolutionSchema.optional(),
|
|
10700
10756
|
seed: external_exports.number().int().nonnegative().max(MAX_SEED).optional(),
|
|
10701
|
-
numVariations: external_exports.number().int().min(1).max(
|
|
10757
|
+
numVariations: external_exports.number().int().min(1).max(MAX_VARIATIONS).optional(),
|
|
10702
10758
|
/**
|
|
10703
10759
|
* Dev-only: force a specific generation provider for the run. When set,
|
|
10704
10760
|
* `prepareGenerationRequest` restricts variant selection to the named
|
|
@@ -10772,7 +10828,7 @@ var RunImageToolBodySchema = external_exports.object({
|
|
|
10772
10828
|
canvasId: external_exports.string().uuid().optional(),
|
|
10773
10829
|
toolName: external_exports.string().trim().min(1),
|
|
10774
10830
|
toolConfig: external_exports.record(external_exports.unknown()).optional(),
|
|
10775
|
-
numVariations: external_exports.number().int().min(1).max(
|
|
10831
|
+
numVariations: external_exports.number().int().min(1).max(MAX_VARIATIONS).optional(),
|
|
10776
10832
|
/** Base64-encoded PNG mask image for inpainting (white = areas to regenerate). */
|
|
10777
10833
|
maskImageBase64: external_exports.string().optional()
|
|
10778
10834
|
});
|
|
@@ -11446,7 +11502,12 @@ var canvasContract = c7.router({
|
|
|
11446
11502
|
failedLayers: external_exports.array(
|
|
11447
11503
|
external_exports.object({
|
|
11448
11504
|
layerIndex: external_exports.number().int(),
|
|
11449
|
-
ratio: external_exports.string()
|
|
11505
|
+
ratio: external_exports.string(),
|
|
11506
|
+
// User-facing failure reason + severity (mirrors a
|
|
11507
|
+
// regular media node's error/warning). Optional so
|
|
11508
|
+
// a new client tolerates an older backend.
|
|
11509
|
+
errorMessage: external_exports.string().nullish(),
|
|
11510
|
+
errorSeverity: external_exports.enum(["error", "warning"]).nullish()
|
|
11450
11511
|
})
|
|
11451
11512
|
).nullish()
|
|
11452
11513
|
}),
|
|
@@ -11775,7 +11836,7 @@ var canvasContract = c7.router({
|
|
|
11775
11836
|
* every intermediate node — see `BulkNodeRunService`. Used by the
|
|
11776
11837
|
* template box's variation stepper. Defaults to 1 when omitted.
|
|
11777
11838
|
*/
|
|
11778
|
-
numVariations: external_exports.number().int().min(1).max(
|
|
11839
|
+
numVariations: external_exports.number().int().min(1).max(MAX_VARIATIONS).optional(),
|
|
11779
11840
|
/**
|
|
11780
11841
|
* Node ids whose audio-to-video duration should be matched to
|
|
11781
11842
|
* connected generated audio after upstream audio nodes finish.
|
|
@@ -12306,7 +12367,7 @@ var GenerationRunBodySchema = external_exports.object({
|
|
|
12306
12367
|
duration: external_exports.number().int().positive().optional(),
|
|
12307
12368
|
resolution: OutputResolutionSchema.optional(),
|
|
12308
12369
|
seed: external_exports.number().int().nonnegative().max(MAX_SEED).optional(),
|
|
12309
|
-
numVariations: external_exports.number().int().min(1).max(
|
|
12370
|
+
numVariations: external_exports.number().int().min(1).max(MAX_VARIATIONS).optional(),
|
|
12310
12371
|
/**
|
|
12311
12372
|
* Whether the variant should generate audio. Only honored on variants
|
|
12312
12373
|
* whose registry entry declares `falAudioField`. Defaults to `true`.
|
|
@@ -12573,6 +12634,10 @@ var GenerationHistoryItemSchema = external_exports.object({
|
|
|
12573
12634
|
id: external_exports.string(),
|
|
12574
12635
|
type: external_exports.enum(["media", "text"]),
|
|
12575
12636
|
model: external_exports.string(),
|
|
12637
|
+
// Speed tier (e.g. "fast") the job ran at, when it ran at a non-standard
|
|
12638
|
+
// one. Optional so older clients ignore it and the field is absent for
|
|
12639
|
+
// standard-tier and text generations.
|
|
12640
|
+
tier: external_exports.string().nullable().optional(),
|
|
12576
12641
|
status: GenerationJobStatusSchema,
|
|
12577
12642
|
creditCost: external_exports.number().nullable(),
|
|
12578
12643
|
createdAt: external_exports.string(),
|
|
@@ -12631,6 +12696,15 @@ var generationContract = c9.router({
|
|
|
12631
12696
|
200: ListGenerativeModelsResponseSchema
|
|
12632
12697
|
}
|
|
12633
12698
|
},
|
|
12699
|
+
listPublicGenerativeModels: {
|
|
12700
|
+
method: "GET",
|
|
12701
|
+
path: "/generation/models/public",
|
|
12702
|
+
query: external_exports.object({ category: ModelCategorySchema }),
|
|
12703
|
+
responses: {
|
|
12704
|
+
200: ListGenerativeModelsResponseSchema
|
|
12705
|
+
},
|
|
12706
|
+
summary: "List generally-available models without authentication (logged-out home)"
|
|
12707
|
+
},
|
|
12634
12708
|
listHeygenAvatarVAvatars: {
|
|
12635
12709
|
method: "GET",
|
|
12636
12710
|
path: "/generation/heygen-avatar-v-avatars",
|
|
@@ -12645,6 +12719,14 @@ var generationContract = c9.router({
|
|
|
12645
12719
|
200: AutoModelDefaultsResponseSchema
|
|
12646
12720
|
}
|
|
12647
12721
|
},
|
|
12722
|
+
getPublicAutoModelDefaults: {
|
|
12723
|
+
method: "GET",
|
|
12724
|
+
path: "/generation/auto-model-defaults/public",
|
|
12725
|
+
responses: {
|
|
12726
|
+
200: AutoModelDefaultsResponseSchema
|
|
12727
|
+
},
|
|
12728
|
+
summary: "Auto-model defaults without authentication (logged-out home)"
|
|
12729
|
+
},
|
|
12648
12730
|
listGenerationHistory: {
|
|
12649
12731
|
method: "GET",
|
|
12650
12732
|
path: "/generation/history",
|
|
@@ -14138,7 +14220,7 @@ function isMajorUpgrade(current, latest) {
|
|
|
14138
14220
|
return l[0] > c17[0];
|
|
14139
14221
|
}
|
|
14140
14222
|
function shouldShowUpgradeNotice(ctx = {}) {
|
|
14141
|
-
const current = ctx.current ?? "0.
|
|
14223
|
+
const current = ctx.current ?? "0.9.0";
|
|
14142
14224
|
const latest = ctx.latest ?? serverLatestVersion;
|
|
14143
14225
|
const env = ctx.env ?? process.env;
|
|
14144
14226
|
const isTty = ctx.isTty ?? Boolean(process.stderr.isTTY);
|
|
@@ -14159,7 +14241,7 @@ Upgrade: npm install -g @melius-ai/cli@latest (or: brew update && brew upgrade
|
|
|
14159
14241
|
function printUpgradeNoticeIfNeeded(ctx = {}) {
|
|
14160
14242
|
try {
|
|
14161
14243
|
if (!shouldShowUpgradeNotice(ctx)) return;
|
|
14162
|
-
const current = ctx.current ?? "0.
|
|
14244
|
+
const current = ctx.current ?? "0.9.0";
|
|
14163
14245
|
const latest = ctx.latest ?? serverLatestVersion;
|
|
14164
14246
|
process.stderr.write(formatUpgradeNotice(current, latest));
|
|
14165
14247
|
} catch {
|
|
@@ -18843,10 +18925,10 @@ function registerAssetCommands(program2, getOutputOpts) {
|
|
|
18843
18925
|
"Search and place the team's Files (DAM) library assets. Requires a Pro or Enterprise plan"
|
|
18844
18926
|
);
|
|
18845
18927
|
asset.command("search").description(
|
|
18846
|
-
"Search the team's Files/DAM library (uploads + past generations) by meaning (semantic), with exact filename/title matches ranked first. Returns up to 20 relevant matches per page.
|
|
18928
|
+
"Search the team's Files/DAM library (uploads + past generations) by meaning (semantic), with exact filename/title matches ranked first. Returns up to 20 relevant matches per page. Filter by asset source with --source, scope to a folder with --folder-id, or filter by tag with --tags; omit the query and pass --folder-id or --tags to bring in the whole folder / all tagged assets"
|
|
18847
18929
|
).argument(
|
|
18848
18930
|
"[query]",
|
|
18849
|
-
'Search terms \u2014
|
|
18931
|
+
'Search terms \u2014 an exact filename (including its extension) or a description of the content, e.g. "Product_Shot_05.png" or "black jacket shot". Optional: OMIT it and pass --folder-id to list EVERY asset in that folder'
|
|
18850
18932
|
).option("--limit <n>", "Max results per page (1-20, default 20)", "20").option(
|
|
18851
18933
|
"--offset <n>",
|
|
18852
18934
|
"Skip the first N matches to page deeper (default 0). Page with --limit until the running count reaches the response's total",
|
|
@@ -18854,6 +18936,9 @@ function registerAssetCommands(program2, getOutputOpts) {
|
|
|
18854
18936
|
).option(
|
|
18855
18937
|
"--file-type <type>",
|
|
18856
18938
|
"Filter by media type: image, video, audio, pdf, or text"
|
|
18939
|
+
).option(
|
|
18940
|
+
"--source <source>",
|
|
18941
|
+
"Filter by asset source: upload (member-uploaded files) or generated (media created in Melius)"
|
|
18857
18942
|
).option(
|
|
18858
18943
|
"--canvas-id <canvasId>",
|
|
18859
18944
|
"Scope to one canvas's assets (a filename match within that canvas). Omit to search the whole team library by meaning, exact matches first (the default)"
|
|
@@ -18873,6 +18958,8 @@ Resolve a folder name to an id with mel asset folders first.
|
|
|
18873
18958
|
|
|
18874
18959
|
Examples:
|
|
18875
18960
|
$ mel asset search "black jacket shot"
|
|
18961
|
+
$ mel asset search "Product_Shot_05.PNG" --source upload
|
|
18962
|
+
$ mel asset search "shark close-up" --source generated
|
|
18876
18963
|
$ mel asset search "logo" --file-type image --limit 10
|
|
18877
18964
|
$ mel asset search "logo" --limit 20 --offset 20
|
|
18878
18965
|
$ mel asset search "shark" --folder-id <folderId> # find within a folder
|
|
@@ -18902,6 +18989,9 @@ Examples:
|
|
|
18902
18989
|
...opts.fileType !== void 0 && {
|
|
18903
18990
|
fileType: opts.fileType
|
|
18904
18991
|
},
|
|
18992
|
+
...opts.source !== void 0 && {
|
|
18993
|
+
source: opts.source
|
|
18994
|
+
},
|
|
18905
18995
|
...opts.canvasId !== void 0 && {
|
|
18906
18996
|
canvasId: opts.canvasId
|
|
18907
18997
|
},
|
|
@@ -19115,7 +19205,7 @@ function withDefaultHelp(args) {
|
|
|
19115
19205
|
}
|
|
19116
19206
|
function createProgram() {
|
|
19117
19207
|
const program2 = new Command();
|
|
19118
|
-
program2.name("mel").description("Mel \u2014 Melius agent CLI").version("0.
|
|
19208
|
+
program2.name("mel").description("Mel \u2014 Melius agent CLI").version("0.9.0").showSuggestionAfterError(true).option("--json", "Force JSON output (default)").option("--text", "Human-readable output").option(
|
|
19119
19209
|
"--fields <fields>",
|
|
19120
19210
|
"Select specific output fields (comma-separated)"
|
|
19121
19211
|
).option("--quiet", "Suppress output, exit code only").option("--verbose", "Log request/response metadata to stderr").addHelpText(
|
package/dist/src/index.js
CHANGED