@melius-ai/cli 0.10.1 → 0.11.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 +15 -0
- package/THIRD-PARTY-NOTICES.md +93 -0
- package/dist/bin/mel.js +1 -1
- package/dist/{chunk-NNJE574V.js → chunk-CHRQZMYE.js} +205 -31
- package/dist/src/index.js +1 -1
- package/package.json +3 -2
package/README.md
CHANGED
|
@@ -228,6 +228,21 @@ mel template apply <canvasId> <templateId> \
|
|
|
228
228
|
mel bulk-run start <canvasId> --node-ids <groupId> --wait
|
|
229
229
|
```
|
|
230
230
|
|
|
231
|
+
Each `--inputs` entry targets an input `portId` from `mel template list`. Three kinds are supported (`mediaType` is `image`, `video`, `audio`, or `pdf`):
|
|
232
|
+
|
|
233
|
+
| Kind | Shape | Use for |
|
|
234
|
+
| ---------- | --------------------------------- | ------------------------------------------------------------ |
|
|
235
|
+
| `text` | `{kind,portId,text}` | A text prompt/value |
|
|
236
|
+
| `asset` | `{kind,portId,assetId,mediaType}` | A stored library asset (from `mel asset search`) |
|
|
237
|
+
| `assetUrl` | `{kind,portId,url,mediaType}` | A remote media URL — fetched and stored server-side on apply |
|
|
238
|
+
|
|
239
|
+
`assetUrl` lets you wire an image already hosted on your own site (e.g. a product image) without a separate upload round-trip:
|
|
240
|
+
|
|
241
|
+
```bash
|
|
242
|
+
mel template apply <canvasId> <templateId> \
|
|
243
|
+
--inputs '[{"kind":"assetUrl","portId":"<portId>","url":"https://example.com/image.jpg","mediaType":"image"}]'
|
|
244
|
+
```
|
|
245
|
+
|
|
231
246
|
### Models
|
|
232
247
|
|
|
233
248
|
| Command | Description |
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
# Third-party notices
|
|
2
|
+
|
|
3
|
+
`@melius-ai/cli` is distributed as a bundle: the source of the packages below
|
|
4
|
+
is compiled into `dist` and redistributed inside the npm tarball. Their
|
|
5
|
+
licenses and copyright notices are reproduced here as those licenses require.
|
|
6
|
+
|
|
7
|
+
Generated by `pnpm --filter @melius-ai/cli run notices` from the build output —
|
|
8
|
+
do not edit by hand. `test/bundle-licenses.test.ts` fails when it drifts.
|
|
9
|
+
|
|
10
|
+
## @ts-rest/core@3.52.1
|
|
11
|
+
|
|
12
|
+
License: MIT
|
|
13
|
+
|
|
14
|
+
```
|
|
15
|
+
MIT License
|
|
16
|
+
|
|
17
|
+
Copyright (c) 2022 Oliver Butler
|
|
18
|
+
|
|
19
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
20
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
21
|
+
in the Software without restriction, including without limitation the rights
|
|
22
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
23
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
24
|
+
furnished to do so, subject to the following conditions:
|
|
25
|
+
|
|
26
|
+
The above copyright notice and this permission notice shall be included in all
|
|
27
|
+
copies or substantial portions of the Software.
|
|
28
|
+
|
|
29
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
30
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
31
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
32
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
33
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
34
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
35
|
+
SOFTWARE.
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
## commander@13.1.0
|
|
39
|
+
|
|
40
|
+
License: MIT
|
|
41
|
+
|
|
42
|
+
```
|
|
43
|
+
(The MIT License)
|
|
44
|
+
|
|
45
|
+
Copyright (c) 2011 TJ Holowaychuk <tj@vision-media.ca>
|
|
46
|
+
|
|
47
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
|
48
|
+
a copy of this software and associated documentation files (the
|
|
49
|
+
'Software'), to deal in the Software without restriction, including
|
|
50
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
|
51
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
|
52
|
+
permit persons to whom the Software is furnished to do so, subject to
|
|
53
|
+
the following conditions:
|
|
54
|
+
|
|
55
|
+
The above copyright notice and this permission notice shall be
|
|
56
|
+
included in all copies or substantial portions of the Software.
|
|
57
|
+
|
|
58
|
+
THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
|
|
59
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
|
60
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
|
61
|
+
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
|
62
|
+
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
|
63
|
+
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
|
64
|
+
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
## zod@3.25.76
|
|
68
|
+
|
|
69
|
+
License: MIT
|
|
70
|
+
|
|
71
|
+
```
|
|
72
|
+
MIT License
|
|
73
|
+
|
|
74
|
+
Copyright (c) 2025 Colin McDonnell
|
|
75
|
+
|
|
76
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
77
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
78
|
+
in the Software without restriction, including without limitation the rights
|
|
79
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
80
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
81
|
+
furnished to do so, subject to the following conditions:
|
|
82
|
+
|
|
83
|
+
The above copyright notice and this permission notice shall be included in all
|
|
84
|
+
copies or substantial portions of the Software.
|
|
85
|
+
|
|
86
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
87
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
88
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
89
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
90
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
91
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
92
|
+
SOFTWARE.
|
|
93
|
+
```
|
package/dist/bin/mel.js
CHANGED
|
@@ -7740,6 +7740,7 @@ var MAX_VARIATIONS = 10;
|
|
|
7740
7740
|
|
|
7741
7741
|
// ../api-contract/src/common.ts
|
|
7742
7742
|
var MessageResponseSchema = external_exports.object({ message: external_exports.string() });
|
|
7743
|
+
var ShareVisibilitySchema = external_exports.enum(["team", "anyone"]);
|
|
7743
7744
|
var CompletedPartSchema = external_exports.object({
|
|
7744
7745
|
partNumber: external_exports.number().int().positive(),
|
|
7745
7746
|
etag: external_exports.string()
|
|
@@ -7912,7 +7913,7 @@ var FileTypeSchema = external_exports.enum([
|
|
|
7912
7913
|
"pdf",
|
|
7913
7914
|
"text"
|
|
7914
7915
|
]);
|
|
7915
|
-
var AssetShareModeSchema =
|
|
7916
|
+
var AssetShareModeSchema = ShareVisibilitySchema;
|
|
7916
7917
|
var TAG_COLOR_PALETTE = [
|
|
7917
7918
|
"hsl(189deg, 72%, 46%)",
|
|
7918
7919
|
"hsl(280deg, 60%, 50%)",
|
|
@@ -7979,7 +7980,14 @@ var FileCardSchema = external_exports.object({
|
|
|
7979
7980
|
var FileGenerationSchema = external_exports.object({
|
|
7980
7981
|
prompt: external_exports.string().nullable(),
|
|
7981
7982
|
modelDisplayName: external_exports.string().nullable(),
|
|
7982
|
-
aspectRatio: external_exports.string().nullable()
|
|
7983
|
+
aspectRatio: external_exports.string().nullable(),
|
|
7984
|
+
/** The node tool that produced the asset (e.g. `video-background-removal`),
|
|
7985
|
+
* when it came from a tool run rather than a plain model generation. The
|
|
7986
|
+
* viewer labels the row "Tool used" instead of "Model" when set.
|
|
7987
|
+
*
|
|
7988
|
+
* Optional so a client that ships ahead of the server keeps validating —
|
|
7989
|
+
* absent reads the same as "not a tool run". */
|
|
7990
|
+
sourceToolName: external_exports.string().nullable().optional()
|
|
7983
7991
|
});
|
|
7984
7992
|
var FileDetailSchema = FileCardSchema.extend({
|
|
7985
7993
|
width: external_exports.number().int().nullable(),
|
|
@@ -8613,7 +8621,12 @@ var AgentMessageFeedbackTypeSchema = external_exports.enum(["positive", "negativ
|
|
|
8613
8621
|
var AgentClarificationQuestionSchema = external_exports.object({
|
|
8614
8622
|
id: external_exports.string().min(1),
|
|
8615
8623
|
prompt: external_exports.string().min(1),
|
|
8616
|
-
|
|
8624
|
+
// Tolerates an explicit null and normalizes it to absent: models write
|
|
8625
|
+
// `"suggestedAnswers": null` for no-suggestion questions, and a
|
|
8626
|
+
// present-but-undefined key survives some JSON serializers as null in
|
|
8627
|
+
// persisted metadata. Rejecting it here silently dropped the whole
|
|
8628
|
+
// clarification form for the turn.
|
|
8629
|
+
suggestedAnswers: external_exports.array(external_exports.string().min(1)).min(1).max(3).nullish().transform((value) => value ?? void 0),
|
|
8617
8630
|
/**
|
|
8618
8631
|
* Marks the Slack project/canvas routing question so the Slack renderer
|
|
8619
8632
|
* can offer a "Last used canvas" shortcut + "Select other" instead of a
|
|
@@ -8873,7 +8886,22 @@ var agentContract = c3.router({
|
|
|
8873
8886
|
enabledSources: external_exports.array(AgentMessageSourceSchema).optional(),
|
|
8874
8887
|
// Per-turn override for the persisted profile setting.
|
|
8875
8888
|
// Omitted = use the user's saved preference.
|
|
8876
|
-
agentAutoRunOverride: external_exports.boolean().optional()
|
|
8889
|
+
agentAutoRunOverride: external_exports.boolean().optional(),
|
|
8890
|
+
// Plan mode (flag `agent-plan-mode`): run this turn on the
|
|
8891
|
+
// execution model with high reasoning and a read-only toolset
|
|
8892
|
+
// so the agent drafts or refines a plan instead of executing.
|
|
8893
|
+
// Ignored (normal turn) when the flag is off for the caller.
|
|
8894
|
+
planMode: external_exports.boolean().optional(),
|
|
8895
|
+
// First planning send after the member scrapped a plan: the
|
|
8896
|
+
// server skips the current-plan injection so the planning
|
|
8897
|
+
// model drafts fresh instead of reviving the dead plan.
|
|
8898
|
+
// Ignored when `planMode` is not set.
|
|
8899
|
+
discardPlan: external_exports.boolean().optional(),
|
|
8900
|
+
// Execution handoff from plan mode: the server injects the
|
|
8901
|
+
// session's latest agreed plan into this (normal-mode) turn
|
|
8902
|
+
// so the execution model implements exactly what was
|
|
8903
|
+
// approved. Ignored when the flag is off or no plan exists.
|
|
8904
|
+
implementPlan: external_exports.boolean().optional()
|
|
8877
8905
|
}).refine(
|
|
8878
8906
|
(b) => b.content.trim().length > 0 || (b.imageUrls?.length ?? 0) > 0 || (b.images?.length ?? 0) > 0 || (b.videoUrls?.length ?? 0) > 0 || (b.videos?.length ?? 0) > 0 || (b.documents?.length ?? 0) > 0,
|
|
8879
8907
|
{
|
|
@@ -10595,8 +10623,8 @@ var NodeVersionResponseSchema = external_exports.object({
|
|
|
10595
10623
|
* back to a kebab/snake → title-case rendering of the key when the
|
|
10596
10624
|
* model isn't in the registry (newly added or since-removed).
|
|
10597
10625
|
*
|
|
10598
|
-
* Optional + nullable so historical
|
|
10599
|
-
*
|
|
10626
|
+
* Optional + nullable so historical snapshots that pre-date this
|
|
10627
|
+
* field keep validating; the snapshot viewer falls back to the
|
|
10600
10628
|
* client-side `formatModelLabel` helper when this is missing.
|
|
10601
10629
|
*/
|
|
10602
10630
|
modelDisplayName: external_exports.string().nullable().optional(),
|
|
@@ -11460,8 +11488,8 @@ var canvasContract = c7.router({
|
|
|
11460
11488
|
}
|
|
11461
11489
|
},
|
|
11462
11490
|
// Returns canvases across every team the authenticated user is a
|
|
11463
|
-
// member of
|
|
11464
|
-
//
|
|
11491
|
+
// member of, for pickers where the active team header should not
|
|
11492
|
+
// constrain the results.
|
|
11465
11493
|
listUserCanvases: {
|
|
11466
11494
|
method: "GET",
|
|
11467
11495
|
path: "/users/me/canvases",
|
|
@@ -11591,6 +11619,30 @@ var canvasContract = c7.router({
|
|
|
11591
11619
|
404: MessageResponseSchema
|
|
11592
11620
|
}
|
|
11593
11621
|
},
|
|
11622
|
+
// Who can view this node as a shared playground generation. `anyone`
|
|
11623
|
+
// publishes it behind the public `/g/:nodeId` link; `team` (default)
|
|
11624
|
+
// revokes it. Team-scoped like the asset share toggle.
|
|
11625
|
+
getNodeShareMode: {
|
|
11626
|
+
method: "GET",
|
|
11627
|
+
path: "/nodes/:nodeId/share-mode",
|
|
11628
|
+
pathParams: external_exports.object({ nodeId: external_exports.string().uuid() }),
|
|
11629
|
+
responses: {
|
|
11630
|
+
200: external_exports.object({ shareMode: ShareVisibilitySchema }),
|
|
11631
|
+
403: MessageResponseSchema,
|
|
11632
|
+
404: MessageResponseSchema
|
|
11633
|
+
}
|
|
11634
|
+
},
|
|
11635
|
+
setNodeShareMode: {
|
|
11636
|
+
method: "PATCH",
|
|
11637
|
+
path: "/nodes/:nodeId/share-mode",
|
|
11638
|
+
pathParams: external_exports.object({ nodeId: external_exports.string().uuid() }),
|
|
11639
|
+
body: external_exports.object({ shareMode: ShareVisibilitySchema }),
|
|
11640
|
+
responses: {
|
|
11641
|
+
200: external_exports.object({ shareMode: ShareVisibilitySchema }),
|
|
11642
|
+
403: MessageResponseSchema,
|
|
11643
|
+
404: MessageResponseSchema
|
|
11644
|
+
}
|
|
11645
|
+
},
|
|
11594
11646
|
listNodeVersionAssets: {
|
|
11595
11647
|
method: "GET",
|
|
11596
11648
|
path: "/node-versions/:versionId/assets",
|
|
@@ -13125,6 +13177,90 @@ var SharedAssetResponseSchema = external_exports.object({
|
|
|
13125
13177
|
height: external_exports.number().int().nullable(),
|
|
13126
13178
|
durationInMs: external_exports.number().int().nullable()
|
|
13127
13179
|
});
|
|
13180
|
+
var SharedGenerationMediaTypeSchema = external_exports.enum(["image", "video", "audio"]);
|
|
13181
|
+
var SharedGenerationTypeSchema = external_exports.enum(["text", "image", "video", "audio"]);
|
|
13182
|
+
var SharedGenerationReferenceSchema = external_exports.object({
|
|
13183
|
+
mediaType: SharedGenerationMediaTypeSchema,
|
|
13184
|
+
url: external_exports.string().nullable(),
|
|
13185
|
+
previewUrl: external_exports.string().nullable(),
|
|
13186
|
+
// The input handle the reference was wired to (e.g. starting_image), so the
|
|
13187
|
+
// viewer can render the role. Null when the source used the default slot.
|
|
13188
|
+
targetHandle: external_exports.string().nullable()
|
|
13189
|
+
});
|
|
13190
|
+
var SharedGenerationOutputSchema = external_exports.object({
|
|
13191
|
+
mediaUrl: external_exports.string().nullable(),
|
|
13192
|
+
mediaType: SharedGenerationMediaTypeSchema.nullable(),
|
|
13193
|
+
width: external_exports.number().int().nullable(),
|
|
13194
|
+
height: external_exports.number().int().nullable(),
|
|
13195
|
+
durationInMs: external_exports.number().int().nullable(),
|
|
13196
|
+
// Optional for independent web/core deployments.
|
|
13197
|
+
text: external_exports.string().nullable().optional()
|
|
13198
|
+
});
|
|
13199
|
+
var SharedCreatorSchema = external_exports.object({
|
|
13200
|
+
id: external_exports.string().uuid(),
|
|
13201
|
+
name: external_exports.string(),
|
|
13202
|
+
email: external_exports.string(),
|
|
13203
|
+
avatarUrl: external_exports.string().nullable()
|
|
13204
|
+
});
|
|
13205
|
+
var SharedGenerationResponseSchema = external_exports.object({
|
|
13206
|
+
id: external_exports.string().uuid(),
|
|
13207
|
+
type: SharedGenerationTypeSchema,
|
|
13208
|
+
prompt: external_exports.string(),
|
|
13209
|
+
modelName: external_exports.string().nullable(),
|
|
13210
|
+
modelLabel: external_exports.string().nullable(),
|
|
13211
|
+
tier: external_exports.string().nullable(),
|
|
13212
|
+
aspectRatio: OutputAspectRatioSchema.nullable(),
|
|
13213
|
+
output: SharedGenerationOutputSchema.nullable(),
|
|
13214
|
+
references: external_exports.array(SharedGenerationReferenceSchema),
|
|
13215
|
+
// Display name of the member who created the generation, for the
|
|
13216
|
+
// "Created by …" tag. Null when the creator is unknown/deleted.
|
|
13217
|
+
createdByName: external_exports.string().nullable(),
|
|
13218
|
+
// Optional to support version-skew between web and core deployments.
|
|
13219
|
+
createdByUser: SharedCreatorSchema.nullable().optional(),
|
|
13220
|
+
// Set when the generation was produced by a template — the viewer's "Create
|
|
13221
|
+
// in my playground" then opens that template to try, instead of staging a
|
|
13222
|
+
// plain playground run. Null for playground generations.
|
|
13223
|
+
templateId: external_exports.string().uuid().nullable(),
|
|
13224
|
+
createdAt: external_exports.string().nullable()
|
|
13225
|
+
});
|
|
13226
|
+
var RecreateGenerationReferenceSchema = external_exports.object({
|
|
13227
|
+
assetId: external_exports.string().uuid(),
|
|
13228
|
+
displayName: external_exports.string(),
|
|
13229
|
+
mediaType: SharedGenerationMediaTypeSchema,
|
|
13230
|
+
url: external_exports.string().nullable(),
|
|
13231
|
+
previewUrl: external_exports.string().nullable(),
|
|
13232
|
+
targetHandle: external_exports.string().nullable()
|
|
13233
|
+
});
|
|
13234
|
+
var RecreateGenerationResponseSchema = external_exports.object({
|
|
13235
|
+
type: SharedGenerationTypeSchema,
|
|
13236
|
+
prompt: external_exports.string(),
|
|
13237
|
+
modelName: external_exports.string(),
|
|
13238
|
+
// The model variant the source ran (e.g. image-to-video), so the viewer's
|
|
13239
|
+
// composer can pre-select the matching recipe and wire the references into
|
|
13240
|
+
// its input slots. Null when the source recorded no variant.
|
|
13241
|
+
variant: external_exports.string().nullable(),
|
|
13242
|
+
tier: external_exports.string().nullable(),
|
|
13243
|
+
aspectRatio: OutputAspectRatioSchema.nullable(),
|
|
13244
|
+
resolution: external_exports.string().nullable(),
|
|
13245
|
+
duration: external_exports.number().int().positive().nullable(),
|
|
13246
|
+
references: external_exports.array(RecreateGenerationReferenceSchema),
|
|
13247
|
+
// Display name of the member who created the source generation, for the
|
|
13248
|
+
// "Created by …" tag shown on the recreated example in the viewer's
|
|
13249
|
+
// playground. Null when the creator is unknown/deleted.
|
|
13250
|
+
createdByName: external_exports.string().nullable(),
|
|
13251
|
+
// The owned copy of the shared generation. Optional so a newer web client
|
|
13252
|
+
// continues to accept a response from an already-deployed backend while it
|
|
13253
|
+
// rolls out.
|
|
13254
|
+
recreatedGeneration: external_exports.object({
|
|
13255
|
+
nodeId: external_exports.string().uuid(),
|
|
13256
|
+
projectId: external_exports.string().uuid(),
|
|
13257
|
+
canvasId: external_exports.string().uuid()
|
|
13258
|
+
}).optional()
|
|
13259
|
+
});
|
|
13260
|
+
var SharedGenerationHandoffSchema = RecreateGenerationResponseSchema.extend({
|
|
13261
|
+
modelLabel: external_exports.string().nullable(),
|
|
13262
|
+
output: SharedGenerationOutputSchema.nullable()
|
|
13263
|
+
});
|
|
13128
13264
|
var ShareCanvasResponseSchema = external_exports.object({
|
|
13129
13265
|
id: external_exports.string().uuid(),
|
|
13130
13266
|
projectId: external_exports.string().uuid(),
|
|
@@ -13152,12 +13288,7 @@ var ShareProjectInfoResponseSchema = external_exports.object({
|
|
|
13152
13288
|
// The user who created the project — used to render "X shared Y" copy in
|
|
13153
13289
|
// link previews and the owner card on the shared canvas view. Null for
|
|
13154
13290
|
// legacy projects with no recorded creator.
|
|
13155
|
-
createdByUser:
|
|
13156
|
-
id: external_exports.string().uuid(),
|
|
13157
|
-
name: external_exports.string(),
|
|
13158
|
-
email: external_exports.string(),
|
|
13159
|
-
avatarUrl: external_exports.string().nullable()
|
|
13160
|
-
}).nullable()
|
|
13291
|
+
createdByUser: SharedCreatorSchema.nullable()
|
|
13161
13292
|
});
|
|
13162
13293
|
var shareContract = c12.router({
|
|
13163
13294
|
// Public endpoint — no auth required
|
|
@@ -13193,6 +13324,18 @@ var shareContract = c12.router({
|
|
|
13193
13324
|
404: MessageResponseSchema
|
|
13194
13325
|
}
|
|
13195
13326
|
},
|
|
13327
|
+
// Public endpoint — no auth required. Resolves one playground generation
|
|
13328
|
+
// (a node) for an anonymous viewer; 404s unless the node's shareMode is
|
|
13329
|
+
// `anyone`.
|
|
13330
|
+
getSharedGeneration: {
|
|
13331
|
+
method: "GET",
|
|
13332
|
+
path: "/share/generations/:nodeId",
|
|
13333
|
+
pathParams: external_exports.object({ nodeId: external_exports.string().uuid() }),
|
|
13334
|
+
responses: {
|
|
13335
|
+
200: SharedGenerationResponseSchema,
|
|
13336
|
+
404: MessageResponseSchema
|
|
13337
|
+
}
|
|
13338
|
+
},
|
|
13196
13339
|
// Public endpoint — no auth required
|
|
13197
13340
|
getSharedCanvas: {
|
|
13198
13341
|
method: "GET",
|
|
@@ -13225,6 +13368,20 @@ var shareContract = c12.router({
|
|
|
13225
13368
|
200: external_exports.object({ shareMode: ShareModeSchema })
|
|
13226
13369
|
}
|
|
13227
13370
|
},
|
|
13371
|
+
// Authenticated. Clone a shared generation's referenced assets into the
|
|
13372
|
+
// caller's team + files and return a run-ready payload the client feeds into
|
|
13373
|
+
// the Playground run path. 404s unless the node's shareMode is `anyone`.
|
|
13374
|
+
recreateSharedGeneration: {
|
|
13375
|
+
method: "POST",
|
|
13376
|
+
path: "/share/generations/:nodeId/recreate",
|
|
13377
|
+
pathParams: external_exports.object({ nodeId: external_exports.string().uuid() }),
|
|
13378
|
+
body: external_exports.object({}),
|
|
13379
|
+
responses: {
|
|
13380
|
+
200: RecreateGenerationResponseSchema,
|
|
13381
|
+
403: MessageResponseSchema,
|
|
13382
|
+
404: MessageResponseSchema
|
|
13383
|
+
}
|
|
13384
|
+
},
|
|
13228
13385
|
copySharedCanvas: {
|
|
13229
13386
|
method: "POST",
|
|
13230
13387
|
path: "/share/projects/:projectId/canvases/:canvasId/copy",
|
|
@@ -13897,18 +14054,31 @@ var projectContract = c14.router({
|
|
|
13897
14054
|
});
|
|
13898
14055
|
|
|
13899
14056
|
// ../api-contract/src/template-apply-input.ts
|
|
14057
|
+
var templateApplyTextInput = external_exports.object({
|
|
14058
|
+
kind: external_exports.literal("text"),
|
|
14059
|
+
portId: external_exports.string(),
|
|
14060
|
+
text: external_exports.string().min(1)
|
|
14061
|
+
});
|
|
14062
|
+
var templateApplyAssetInput = external_exports.object({
|
|
14063
|
+
kind: external_exports.literal("asset"),
|
|
14064
|
+
portId: external_exports.string(),
|
|
14065
|
+
assetId: external_exports.string().uuid(),
|
|
14066
|
+
mediaType: external_exports.enum(["image", "video", "audio", "pdf"])
|
|
14067
|
+
});
|
|
14068
|
+
var templateApplyAssetUrlInput = external_exports.object({
|
|
14069
|
+
kind: external_exports.literal("assetUrl"),
|
|
14070
|
+
portId: external_exports.string(),
|
|
14071
|
+
url: external_exports.string().url(),
|
|
14072
|
+
mediaType: external_exports.enum(["image", "video", "audio", "pdf"])
|
|
14073
|
+
});
|
|
14074
|
+
var TemplateApplyLibraryInputSchema = external_exports.discriminatedUnion("kind", [
|
|
14075
|
+
templateApplyTextInput,
|
|
14076
|
+
templateApplyAssetInput
|
|
14077
|
+
]);
|
|
13900
14078
|
var TemplateApplyInputSchema = external_exports.discriminatedUnion("kind", [
|
|
13901
|
-
|
|
13902
|
-
|
|
13903
|
-
|
|
13904
|
-
assetId: external_exports.string().uuid(),
|
|
13905
|
-
mediaType: external_exports.enum(["image", "video", "audio", "pdf"])
|
|
13906
|
-
}),
|
|
13907
|
-
external_exports.object({
|
|
13908
|
-
kind: external_exports.literal("text"),
|
|
13909
|
-
portId: external_exports.string(),
|
|
13910
|
-
text: external_exports.string().min(1)
|
|
13911
|
-
})
|
|
14079
|
+
templateApplyTextInput,
|
|
14080
|
+
templateApplyAssetInput,
|
|
14081
|
+
templateApplyAssetUrlInput
|
|
13912
14082
|
]);
|
|
13913
14083
|
|
|
13914
14084
|
// ../api-contract/src/template-public-api.ts
|
|
@@ -14409,7 +14579,7 @@ function isMajorUpgrade(current, latest) {
|
|
|
14409
14579
|
return l[0] > c17[0];
|
|
14410
14580
|
}
|
|
14411
14581
|
function shouldShowUpgradeNotice(ctx = {}) {
|
|
14412
|
-
const current = ctx.current ?? "0.
|
|
14582
|
+
const current = ctx.current ?? "0.11.0";
|
|
14413
14583
|
const latest = ctx.latest ?? serverLatestVersion;
|
|
14414
14584
|
const env = ctx.env ?? process.env;
|
|
14415
14585
|
const isTty = ctx.isTty ?? Boolean(process.stderr.isTTY);
|
|
@@ -14430,7 +14600,7 @@ Upgrade: npm install -g @melius-ai/cli@latest (or: brew update && brew upgrade
|
|
|
14430
14600
|
function printUpgradeNoticeIfNeeded(ctx = {}) {
|
|
14431
14601
|
try {
|
|
14432
14602
|
if (!shouldShowUpgradeNotice(ctx)) return;
|
|
14433
|
-
const current = ctx.current ?? "0.
|
|
14603
|
+
const current = ctx.current ?? "0.11.0";
|
|
14434
14604
|
const latest = ctx.latest ?? serverLatestVersion;
|
|
14435
14605
|
process.stderr.write(formatUpgradeNotice(current, latest));
|
|
14436
14606
|
} catch {
|
|
@@ -19026,7 +19196,7 @@ function parseInputs(value) {
|
|
|
19026
19196
|
"USAGE_ERROR",
|
|
19027
19197
|
result.error.issues.map((issue) => issue.message).join("; "),
|
|
19028
19198
|
{
|
|
19029
|
-
suggestion: 'Use text inputs {"kind":"text","portId":"<portId>","text":"<text>"}
|
|
19199
|
+
suggestion: 'Use text inputs {"kind":"text","portId":"<portId>","text":"<text>"}, library-asset inputs {"kind":"asset","portId":"<portId>","assetId":"<assetId>","mediaType":"image|video|audio|pdf"}, or image-URL inputs {"kind":"assetUrl","portId":"<portId>","url":"https://...","mediaType":"image|video|audio|pdf"}'
|
|
19030
19200
|
}
|
|
19031
19201
|
),
|
|
19032
19202
|
EXIT_USAGE_ERROR
|
|
@@ -19067,18 +19237,22 @@ Examples:
|
|
|
19067
19237
|
"Y center for the template box. Omit for automatic non-overlapping placement"
|
|
19068
19238
|
).option(
|
|
19069
19239
|
"--inputs <json>",
|
|
19070
|
-
"JSON array of text
|
|
19240
|
+
"JSON array of text, library-asset, or image-URL inputs targeting port IDs from mel template list"
|
|
19071
19241
|
).addHelpText(
|
|
19072
19242
|
"after",
|
|
19073
19243
|
`
|
|
19074
19244
|
Returns: { instanceId, groupId }. Internal workflow node IDs are never returned.
|
|
19075
|
-
Input kinds
|
|
19245
|
+
Input kinds (mediaType is image, video, audio, or pdf):
|
|
19246
|
+
text {kind,portId,text}
|
|
19247
|
+
asset {kind,portId,assetId,mediaType} \u2014 a stored library asset (from mel asset search)
|
|
19248
|
+
assetUrl {kind,portId,url,mediaType} \u2014 a remote media URL fetched and stored server-side (e.g. a product image already hosted on your site)
|
|
19076
19249
|
Omit --center-x/--center-y to place the box automatically. Use mel canvas content <canvasId> afterward to inspect its public ports.
|
|
19077
19250
|
Run the applied template with mel bulk-run start <canvasId> --node-ids <groupId> --wait.
|
|
19078
19251
|
|
|
19079
19252
|
Examples:
|
|
19080
19253
|
$ mel template apply <canvasId> <templateId>
|
|
19081
19254
|
$ mel template apply <canvasId> <templateId> --inputs '[{"kind":"text","portId":"<portId>","text":"A red shoe"}]'
|
|
19255
|
+
$ mel template apply <canvasId> <templateId> --inputs '[{"kind":"assetUrl","portId":"<portId>","url":"https://example.com/image.jpg","mediaType":"image"}]'
|
|
19082
19256
|
$ mel bulk-run start <canvasId> --node-ids <groupId> --wait`
|
|
19083
19257
|
).action(
|
|
19084
19258
|
async (canvasId, templateId, opts) => {
|
|
@@ -19563,7 +19737,7 @@ function withDefaultHelp(args) {
|
|
|
19563
19737
|
}
|
|
19564
19738
|
function createProgram() {
|
|
19565
19739
|
const program2 = new Command();
|
|
19566
|
-
program2.name("mel").description("Mel \u2014 Melius agent CLI").version("0.
|
|
19740
|
+
program2.name("mel").description("Mel \u2014 Melius agent CLI").version("0.11.0").showSuggestionAfterError(true).option("--json", "Force JSON output (default)").option("--text", "Human-readable output").option(
|
|
19567
19741
|
"--fields <fields>",
|
|
19568
19742
|
"Select specific output fields (comma-separated)"
|
|
19569
19743
|
).option("--quiet", "Suppress output, exit code only").option("--verbose", "Log request/response metadata to stderr").addHelpText(
|
package/dist/src/index.js
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@melius-ai/cli",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.11.0",
|
|
4
4
|
"description": "The Melius command-line interface — create canvases and run AI image/video generations from your terminal",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"ai",
|
|
@@ -21,7 +21,8 @@
|
|
|
21
21
|
"mel": "./dist/bin/mel.js"
|
|
22
22
|
},
|
|
23
23
|
"files": [
|
|
24
|
-
"dist"
|
|
24
|
+
"dist",
|
|
25
|
+
"THIRD-PARTY-NOTICES.md"
|
|
25
26
|
],
|
|
26
27
|
"type": "module",
|
|
27
28
|
"exports": {
|