@transloadit/node 4.7.7 → 4.8.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 +46 -19
- package/dist/cli/generateIntentDocs.d.ts +5 -1
- package/dist/cli/generateIntentDocs.d.ts.map +1 -1
- package/dist/cli/generateIntentDocs.js +25 -9
- package/dist/cli/generateIntentDocs.js.map +1 -1
- package/dist/cli/intentCommandSpecs.d.ts.map +1 -1
- package/dist/cli/intentCommandSpecs.js +4 -6
- package/dist/cli/intentCommandSpecs.js.map +1 -1
- package/dist/cli/intentRuntime.d.ts.map +1 -1
- package/dist/cli/intentRuntime.js +4 -4
- package/dist/cli/intentRuntime.js.map +1 -1
- package/dist/cli/semanticIntents/imageDescribe.d.ts +3 -1
- package/dist/cli/semanticIntents/imageDescribe.d.ts.map +1 -1
- package/dist/cli/semanticIntents/imageDescribe.js +1 -1
- package/dist/cli/semanticIntents/imageDescribe.js.map +1 -1
- package/dist/cli/semanticIntents/imageGenerate.d.ts +94 -0
- package/dist/cli/semanticIntents/imageGenerate.d.ts.map +1 -0
- package/dist/cli/semanticIntents/imageGenerate.js +215 -0
- package/dist/cli/semanticIntents/imageGenerate.js.map +1 -0
- package/dist/cli/semanticIntents/index.d.ts +3 -1
- package/dist/cli/semanticIntents/index.d.ts.map +1 -1
- package/dist/cli/semanticIntents/index.js +2 -0
- package/dist/cli/semanticIntents/index.js.map +1 -1
- package/dist/cli/semanticIntents/markdownPdf.js +1 -1
- package/dist/cli/semanticIntents/markdownPdf.js.map +1 -1
- package/package.json +1 -1
- package/src/cli/generateIntentDocs.ts +28 -9
- package/src/cli/intentCommandSpecs.ts +4 -9
- package/src/cli/intentRuntime.ts +8 -3
- package/src/cli/semanticIntents/imageDescribe.ts +4 -1
- package/src/cli/semanticIntents/imageGenerate.ts +254 -0
- package/src/cli/semanticIntents/index.ts +6 -1
- package/src/cli/semanticIntents/markdownPdf.ts +1 -1
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
import type { PreparedIntentInputs } from '../intentRuntime.ts';
|
|
2
|
+
declare function createImageGenerateStep(rawValues: Record<string, unknown>, context: {
|
|
3
|
+
hasInputs: boolean;
|
|
4
|
+
}): Record<string, unknown>;
|
|
5
|
+
export declare const imageGenerateSemanticIntentDescriptor: {
|
|
6
|
+
readonly createStep: typeof createImageGenerateStep;
|
|
7
|
+
readonly execution: {
|
|
8
|
+
readonly kind: "dynamic-step";
|
|
9
|
+
readonly handler: "image-generate";
|
|
10
|
+
readonly resultStepName: "generate";
|
|
11
|
+
readonly fields: readonly [{
|
|
12
|
+
readonly name: "prompt";
|
|
13
|
+
readonly kind: "string";
|
|
14
|
+
readonly propertyName: "prompt";
|
|
15
|
+
readonly optionFlags: "--prompt";
|
|
16
|
+
readonly description: "The prompt describing the desired image content.";
|
|
17
|
+
readonly required: true;
|
|
18
|
+
readonly exampleValue: string;
|
|
19
|
+
}, {
|
|
20
|
+
readonly name: "model";
|
|
21
|
+
readonly kind: "string";
|
|
22
|
+
readonly propertyName: "model";
|
|
23
|
+
readonly optionFlags: "--model";
|
|
24
|
+
readonly description: "The AI model to use for image generation. Defaults to google/nano-banana-2.";
|
|
25
|
+
readonly required: false;
|
|
26
|
+
readonly exampleValue: "google/nano-banana-2";
|
|
27
|
+
}, {
|
|
28
|
+
readonly name: "format";
|
|
29
|
+
readonly kind: "string";
|
|
30
|
+
readonly propertyName: "format";
|
|
31
|
+
readonly optionFlags: "--format";
|
|
32
|
+
readonly description: "Format of the generated image.";
|
|
33
|
+
readonly required: false;
|
|
34
|
+
readonly exampleValue: "jpg";
|
|
35
|
+
}, {
|
|
36
|
+
readonly name: "seed";
|
|
37
|
+
readonly kind: "number";
|
|
38
|
+
readonly propertyName: "seed";
|
|
39
|
+
readonly optionFlags: "--seed";
|
|
40
|
+
readonly description: "Seed for the random number generator.";
|
|
41
|
+
readonly required: false;
|
|
42
|
+
}, {
|
|
43
|
+
readonly name: "aspectRatio";
|
|
44
|
+
readonly kind: "string";
|
|
45
|
+
readonly propertyName: "aspectRatio";
|
|
46
|
+
readonly optionFlags: "--aspect-ratio";
|
|
47
|
+
readonly description: "Aspect ratio of the generated image.";
|
|
48
|
+
readonly required: false;
|
|
49
|
+
}, {
|
|
50
|
+
readonly name: "height";
|
|
51
|
+
readonly kind: "number";
|
|
52
|
+
readonly propertyName: "height";
|
|
53
|
+
readonly optionFlags: "--height";
|
|
54
|
+
readonly description: "Height of the generated image.";
|
|
55
|
+
readonly required: false;
|
|
56
|
+
}, {
|
|
57
|
+
readonly name: "width";
|
|
58
|
+
readonly kind: "number";
|
|
59
|
+
readonly propertyName: "width";
|
|
60
|
+
readonly optionFlags: "--width";
|
|
61
|
+
readonly description: "Width of the generated image.";
|
|
62
|
+
readonly required: false;
|
|
63
|
+
}, {
|
|
64
|
+
readonly name: "style";
|
|
65
|
+
readonly kind: "string";
|
|
66
|
+
readonly propertyName: "style";
|
|
67
|
+
readonly optionFlags: "--style";
|
|
68
|
+
readonly description: "Style of the generated image.";
|
|
69
|
+
readonly required: false;
|
|
70
|
+
}, {
|
|
71
|
+
readonly name: "numOutputs";
|
|
72
|
+
readonly kind: "number";
|
|
73
|
+
readonly propertyName: "numOutputs";
|
|
74
|
+
readonly optionFlags: "--num-outputs";
|
|
75
|
+
readonly description: "Number of image variants to generate.";
|
|
76
|
+
readonly required: false;
|
|
77
|
+
}];
|
|
78
|
+
};
|
|
79
|
+
readonly inputPolicy: {
|
|
80
|
+
readonly kind: "optional";
|
|
81
|
+
readonly field: "prompt";
|
|
82
|
+
readonly attachUseWhenInputsProvided: false;
|
|
83
|
+
};
|
|
84
|
+
readonly outputDescription: "Write the result to this path";
|
|
85
|
+
readonly prepareInputs: (preparedInputs: PreparedIntentInputs) => Promise<PreparedIntentInputs>;
|
|
86
|
+
readonly presentation: {
|
|
87
|
+
readonly description: "Generate images from text prompts";
|
|
88
|
+
readonly details: "Runs `/image/generate`. Without inputs, this is text-to-image. With one or more `--input` files, the inputs are bundled into a single assembly so the prompt can refer to them by filename.";
|
|
89
|
+
readonly examples: Array<[string, string]>;
|
|
90
|
+
};
|
|
91
|
+
readonly runnerKind: "bundled";
|
|
92
|
+
};
|
|
93
|
+
export {};
|
|
94
|
+
//# sourceMappingURL=imageGenerate.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"imageGenerate.d.ts","sourceRoot":"","sources":["../../../src/cli/semanticIntents/imageGenerate.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAA0B,oBAAoB,EAAE,MAAM,qBAAqB,CAAA;AAuJvF,iBAAS,uBAAuB,CAC9B,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAClC,OAAO,EAAE;IAAE,SAAS,EAAE,OAAO,CAAA;CAAE,GAC9B,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CA2DzB;AAoBD,eAAO,MAAM,qCAAqC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2BAnI3C,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;;;CAsJe,CAAA"}
|
|
@@ -0,0 +1,215 @@
|
|
|
1
|
+
import { basename } from 'node:path';
|
|
2
|
+
import { parseOptionalEnumValue } from "./parsing.js";
|
|
3
|
+
const defaultImageGenerateModel = 'google/nano-banana-2';
|
|
4
|
+
const imageGenerateFormats = ['jpeg', 'jpg', 'png', 'gif', 'webp', 'svg'];
|
|
5
|
+
const imageGenerateOptionDefinitions = [
|
|
6
|
+
{
|
|
7
|
+
name: 'prompt',
|
|
8
|
+
kind: 'string',
|
|
9
|
+
propertyName: 'prompt',
|
|
10
|
+
optionFlags: '--prompt',
|
|
11
|
+
description: 'The prompt describing the desired image content.',
|
|
12
|
+
required: true,
|
|
13
|
+
exampleValue: JSON.stringify('A red bicycle in a studio'),
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
name: 'model',
|
|
17
|
+
kind: 'string',
|
|
18
|
+
propertyName: 'model',
|
|
19
|
+
optionFlags: '--model',
|
|
20
|
+
description: `The AI model to use for image generation. Defaults to ${defaultImageGenerateModel}.`,
|
|
21
|
+
required: false,
|
|
22
|
+
exampleValue: defaultImageGenerateModel,
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
name: 'format',
|
|
26
|
+
kind: 'string',
|
|
27
|
+
propertyName: 'format',
|
|
28
|
+
optionFlags: '--format',
|
|
29
|
+
description: 'Format of the generated image.',
|
|
30
|
+
required: false,
|
|
31
|
+
exampleValue: 'jpg',
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
name: 'seed',
|
|
35
|
+
kind: 'number',
|
|
36
|
+
propertyName: 'seed',
|
|
37
|
+
optionFlags: '--seed',
|
|
38
|
+
description: 'Seed for the random number generator.',
|
|
39
|
+
required: false,
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
name: 'aspectRatio',
|
|
43
|
+
kind: 'string',
|
|
44
|
+
propertyName: 'aspectRatio',
|
|
45
|
+
optionFlags: '--aspect-ratio',
|
|
46
|
+
description: 'Aspect ratio of the generated image.',
|
|
47
|
+
required: false,
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
name: 'height',
|
|
51
|
+
kind: 'number',
|
|
52
|
+
propertyName: 'height',
|
|
53
|
+
optionFlags: '--height',
|
|
54
|
+
description: 'Height of the generated image.',
|
|
55
|
+
required: false,
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
name: 'width',
|
|
59
|
+
kind: 'number',
|
|
60
|
+
propertyName: 'width',
|
|
61
|
+
optionFlags: '--width',
|
|
62
|
+
description: 'Width of the generated image.',
|
|
63
|
+
required: false,
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
name: 'style',
|
|
67
|
+
kind: 'string',
|
|
68
|
+
propertyName: 'style',
|
|
69
|
+
optionFlags: '--style',
|
|
70
|
+
description: 'Style of the generated image.',
|
|
71
|
+
required: false,
|
|
72
|
+
},
|
|
73
|
+
{
|
|
74
|
+
name: 'numOutputs',
|
|
75
|
+
kind: 'number',
|
|
76
|
+
propertyName: 'numOutputs',
|
|
77
|
+
optionFlags: '--num-outputs',
|
|
78
|
+
description: 'Number of image variants to generate.',
|
|
79
|
+
required: false,
|
|
80
|
+
},
|
|
81
|
+
];
|
|
82
|
+
const imageGenerateCommandPresentation = {
|
|
83
|
+
description: 'Generate images from text prompts',
|
|
84
|
+
details: 'Runs `/image/generate`. Without inputs, this is text-to-image. With one or more `--input` files, the inputs are bundled into a single assembly so the prompt can refer to them by filename.',
|
|
85
|
+
examples: [
|
|
86
|
+
[
|
|
87
|
+
'Generate an image from text',
|
|
88
|
+
'transloadit image generate --prompt "A red bicycle in a studio" --out output.png',
|
|
89
|
+
],
|
|
90
|
+
[
|
|
91
|
+
'Guide generation with one input image',
|
|
92
|
+
'transloadit image generate --input subject.jpg --prompt "Place subject.jpg on a magazine cover" --out output.png',
|
|
93
|
+
],
|
|
94
|
+
[
|
|
95
|
+
'Guide generation with multiple input images',
|
|
96
|
+
'transloadit image generate --input person1.jpg --input person2.jpg --input background.jpg --prompt "Place person1.jpg feeding person2.jpg in front of background.jpg" --out output.png',
|
|
97
|
+
],
|
|
98
|
+
],
|
|
99
|
+
};
|
|
100
|
+
function parseOptionalFormat(value) {
|
|
101
|
+
return parseOptionalEnumValue({
|
|
102
|
+
flagName: '--format',
|
|
103
|
+
supportedValues: imageGenerateFormats,
|
|
104
|
+
value,
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
function parseRequiredPrompt(value) {
|
|
108
|
+
if (typeof value !== 'string' || value.trim() === '') {
|
|
109
|
+
throw new Error('image generate requires --prompt');
|
|
110
|
+
}
|
|
111
|
+
return value;
|
|
112
|
+
}
|
|
113
|
+
function parseOptionalNumber(flagName, value) {
|
|
114
|
+
if (value == null || value === '') {
|
|
115
|
+
return undefined;
|
|
116
|
+
}
|
|
117
|
+
const numericValue = typeof value === 'number' ? value : Number(String(value).trim());
|
|
118
|
+
if (Number.isNaN(numericValue)) {
|
|
119
|
+
throw new Error(`${flagName} must be a number`);
|
|
120
|
+
}
|
|
121
|
+
return numericValue;
|
|
122
|
+
}
|
|
123
|
+
function parseOptionalIntegerRange(flagName, value, { max, min }) {
|
|
124
|
+
const numericValue = parseOptionalNumber(flagName, value);
|
|
125
|
+
if (numericValue == null) {
|
|
126
|
+
return undefined;
|
|
127
|
+
}
|
|
128
|
+
if (!Number.isInteger(numericValue) || numericValue < min || numericValue > max) {
|
|
129
|
+
throw new Error(`${flagName} must be an integer between ${min} and ${max}`);
|
|
130
|
+
}
|
|
131
|
+
return numericValue;
|
|
132
|
+
}
|
|
133
|
+
function createImageGenerateStep(rawValues, context) {
|
|
134
|
+
const step = {
|
|
135
|
+
robot: '/image/generate',
|
|
136
|
+
result: true,
|
|
137
|
+
model: defaultImageGenerateModel,
|
|
138
|
+
prompt: parseRequiredPrompt(rawValues.prompt),
|
|
139
|
+
};
|
|
140
|
+
if (context.hasInputs) {
|
|
141
|
+
step.use = {
|
|
142
|
+
steps: [':original'],
|
|
143
|
+
bundle_steps: true,
|
|
144
|
+
};
|
|
145
|
+
}
|
|
146
|
+
const model = rawValues.model;
|
|
147
|
+
if (typeof model === 'string' && model.trim() !== '') {
|
|
148
|
+
step.model = model;
|
|
149
|
+
}
|
|
150
|
+
const format = parseOptionalFormat(rawValues.format);
|
|
151
|
+
if (format != null) {
|
|
152
|
+
step.format = format;
|
|
153
|
+
}
|
|
154
|
+
const seed = parseOptionalNumber('--seed', rawValues.seed);
|
|
155
|
+
if (seed != null) {
|
|
156
|
+
step.seed = seed;
|
|
157
|
+
}
|
|
158
|
+
const aspectRatio = rawValues.aspectRatio;
|
|
159
|
+
if (typeof aspectRatio === 'string' && aspectRatio.trim() !== '') {
|
|
160
|
+
step.aspect_ratio = aspectRatio;
|
|
161
|
+
}
|
|
162
|
+
const height = parseOptionalNumber('--height', rawValues.height);
|
|
163
|
+
if (height != null) {
|
|
164
|
+
step.height = height;
|
|
165
|
+
}
|
|
166
|
+
const width = parseOptionalNumber('--width', rawValues.width);
|
|
167
|
+
if (width != null) {
|
|
168
|
+
step.width = width;
|
|
169
|
+
}
|
|
170
|
+
const style = rawValues.style;
|
|
171
|
+
if (typeof style === 'string' && style.trim() !== '') {
|
|
172
|
+
step.style = style;
|
|
173
|
+
}
|
|
174
|
+
const numOutputs = parseOptionalIntegerRange('--num-outputs', rawValues.numOutputs, {
|
|
175
|
+
min: 1,
|
|
176
|
+
max: 10,
|
|
177
|
+
});
|
|
178
|
+
if (numOutputs != null) {
|
|
179
|
+
step.num_outputs = numOutputs;
|
|
180
|
+
}
|
|
181
|
+
return step;
|
|
182
|
+
}
|
|
183
|
+
function ensureUniqueInputBasenames(preparedInputs) {
|
|
184
|
+
const seenBasenames = new Map();
|
|
185
|
+
for (const input of preparedInputs.inputs) {
|
|
186
|
+
const inputBasename = basename(input);
|
|
187
|
+
const previousInput = seenBasenames.get(inputBasename);
|
|
188
|
+
if (previousInput != null) {
|
|
189
|
+
throw new Error(`image generate requires unique input basenames when prompts refer to files; found duplicate ${inputBasename} in ${previousInput} and ${input}`);
|
|
190
|
+
}
|
|
191
|
+
seenBasenames.set(inputBasename, input);
|
|
192
|
+
}
|
|
193
|
+
return preparedInputs;
|
|
194
|
+
}
|
|
195
|
+
export const imageGenerateSemanticIntentDescriptor = {
|
|
196
|
+
createStep: createImageGenerateStep,
|
|
197
|
+
execution: {
|
|
198
|
+
kind: 'dynamic-step',
|
|
199
|
+
handler: 'image-generate',
|
|
200
|
+
resultStepName: 'generate',
|
|
201
|
+
fields: imageGenerateOptionDefinitions,
|
|
202
|
+
},
|
|
203
|
+
inputPolicy: {
|
|
204
|
+
kind: 'optional',
|
|
205
|
+
field: 'prompt',
|
|
206
|
+
attachUseWhenInputsProvided: false,
|
|
207
|
+
},
|
|
208
|
+
outputDescription: 'Write the result to this path',
|
|
209
|
+
async prepareInputs(preparedInputs) {
|
|
210
|
+
return await Promise.resolve(ensureUniqueInputBasenames(preparedInputs));
|
|
211
|
+
},
|
|
212
|
+
presentation: imageGenerateCommandPresentation,
|
|
213
|
+
runnerKind: 'bundled',
|
|
214
|
+
};
|
|
215
|
+
//# sourceMappingURL=imageGenerate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"imageGenerate.js","sourceRoot":"","sources":["../../../src/cli/semanticIntents/imageGenerate.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,7 +6,9 @@ export interface SemanticIntentPresentation {
|
|
|
6
6
|
examples: Array<[string, string]>;
|
|
7
7
|
}
|
|
8
8
|
export interface SemanticIntentDescriptor {
|
|
9
|
-
createStep: (rawValues: Record<string, unknown
|
|
9
|
+
createStep: (rawValues: Record<string, unknown>, context: {
|
|
10
|
+
hasInputs: boolean;
|
|
11
|
+
}) => Record<string, unknown>;
|
|
10
12
|
execution: IntentDynamicStepExecutionDefinition;
|
|
11
13
|
inputPolicy: IntentInputPolicy;
|
|
12
14
|
outputDescription: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/cli/semanticIntents/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAA;AAChE,OAAO,KAAK,EACV,oCAAoC,EACpC,gBAAgB,EAChB,oBAAoB,EACrB,MAAM,qBAAqB,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/cli/semanticIntents/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAA;AAChE,OAAO,KAAK,EACV,oCAAoC,EACpC,gBAAgB,EAChB,oBAAoB,EACrB,MAAM,qBAAqB,CAAA;AAQ5B,MAAM,WAAW,0BAA0B;IACzC,WAAW,EAAE,MAAM,CAAA;IACnB,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,EAAE,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAA;CAClC;AAED,MAAM,WAAW,wBAAwB;IACvC,UAAU,EAAE,CACV,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAClC,OAAO,EAAE;QAAE,SAAS,EAAE,OAAO,CAAA;KAAE,KAC5B,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC5B,SAAS,EAAE,oCAAoC,CAAA;IAC/C,WAAW,EAAE,iBAAiB,CAAA;IAC9B,iBAAiB,EAAE,MAAM,CAAA;IACzB,aAAa,CAAC,EAAE,CACd,cAAc,EAAE,oBAAoB,EACpC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAC/B,OAAO,CAAC,oBAAoB,CAAC,CAAA;IAClC,YAAY,EAAE,0BAA0B,CAAA;IACxC,UAAU,EAAE,gBAAgB,CAAA;CAC7B;AAaD,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,MAAM,GAAG,wBAAwB,CAMlF"}
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import { imageDescribeSemanticIntentDescriptor } from "./imageDescribe.js";
|
|
2
|
+
import { imageGenerateSemanticIntentDescriptor } from "./imageGenerate.js";
|
|
2
3
|
import { markdownDocxSemanticIntentDescriptor, markdownPdfSemanticIntentDescriptor, } from "./markdownPdf.js";
|
|
3
4
|
const semanticIntentDescriptors = {
|
|
4
5
|
'image-describe': imageDescribeSemanticIntentDescriptor,
|
|
6
|
+
'image-generate': imageGenerateSemanticIntentDescriptor,
|
|
5
7
|
'markdown-pdf': {
|
|
6
8
|
...markdownPdfSemanticIntentDescriptor,
|
|
7
9
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/cli/semanticIntents/index.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,qCAAqC,EAAE,MAAM,oBAAoB,CAAA;AAC1E,OAAO,EACL,oCAAoC,EACpC,mCAAmC,GACpC,MAAM,kBAAkB,CAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/cli/semanticIntents/index.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,qCAAqC,EAAE,MAAM,oBAAoB,CAAA;AAC1E,OAAO,EAAE,qCAAqC,EAAE,MAAM,oBAAoB,CAAA;AAC1E,OAAO,EACL,oCAAoC,EACpC,mCAAmC,GACpC,MAAM,kBAAkB,CAAA;AAwBzB,MAAM,yBAAyB,GAA6C;IAC1E,gBAAgB,EAAE,qCAAqC;IACvD,gBAAgB,EAAE,qCAAqC;IACvD,cAAc,EAAE;QACd,GAAG,mCAAmC;KACvC;IACD,eAAe,EAAE;QACf,GAAG,oCAAoC;KACxC;CACF,CAAA;AAED,MAAM,UAAU,2BAA2B,CAAC,IAAY;IACtD,IAAI,CAAC,CAAC,IAAI,IAAI,yBAAyB,CAAC,EAAE,CAAC;QACzC,MAAM,IAAI,KAAK,CAAC,kDAAkD,IAAI,GAAG,CAAC,CAAA;IAC5E,CAAC;IAED,OAAO,yBAAyB,CAAC,IAAI,CAAC,CAAA;AACxC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"markdownPdf.js","sourceRoot":"","sources":["../../../src/cli/semanticIntents/markdownPdf.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAA;AAErD,MAAM,qBAAqB,GAAG,KAAK,CAAA;AACnC,MAAM,oBAAoB,GAAG,QAAQ,CAAA;AACrC,MAAM,eAAe,GAAG,CAAC,YAAY,EAAE,KAAK,CAAU,CAAA;AACtD,MAAM,cAAc,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAU,CAAA;AAElD,SAAS,qBAAqB,CAAC,KAAc;IAC3C,OAAO,CACL,sBAAsB,CAAC;QACrB,QAAQ,EAAE,mBAAmB;QAC7B,eAAe,EAAE,eAAe;QAChC,KAAK;KACN,CAAC,IAAI,qBAAqB,CAC5B,CAAA;AACH,CAAC;AAED,SAAS,oBAAoB,CAAC,KAAc;IAC1C,OAAO,CACL,sBAAsB,CAAC;QACrB,QAAQ,EAAE,kBAAkB;QAC5B,eAAe,EAAE,cAAc;QAC/B,KAAK;KACN,CAAC,IAAI,oBAAoB,CAC3B,CAAA;AACH,CAAC;AAED,MAAM,yBAAyB,GAAG;IAChC;QACE,IAAI,EAAE,gBAAgB;QACtB,IAAI,EAAE,QAAQ;QACd,YAAY,EAAE,gBAAgB;QAC9B,WAAW,EAAE,mBAAmB;QAChC,WAAW,EAAE,qDAAqD;QAClE,QAAQ,EAAE,KAAK;KAChB;IACD;QACE,IAAI,EAAE,eAAe;QACrB,IAAI,EAAE,QAAQ;QACd,YAAY,EAAE,eAAe;QAC7B,WAAW,EAAE,kBAAkB;QAC/B,WAAW,EAAE,iDAAiD;QAC9D,QAAQ,EAAE,KAAK;KAChB;CACmD,CAAA;AAEtD,SAAS,mCAAmC,CAAC,EAC3C,WAAW,EACX,OAAO,EACP,aAAa,EACb,MAAM,EACN,OAAO,GAOR;IACC,MAAM,WAAW,GAAG,MAAM,CAAC,WAAW,EAAE,CAAA;IACxC,MAAM,YAAY,GAAG;QACnB,WAAW;QACX,OAAO;QACP,QAAQ,EAAE;YACR;gBACE,+BAA+B,WAAW,OAAO;gBACjD,wBAAwB,MAAM,4BAA4B,aAAa,EAAE;aAC1E;YACD;gBACE,0DAA0D;gBAC1D,wBAAwB,MAAM,iCAAiC;aAChE;SACF;KACmC,CAAA;IAEtC,OAAO;QACL,UAAU,CAAC,SAAS;
|
|
1
|
+
{"version":3,"file":"markdownPdf.js","sourceRoot":"","sources":["../../../src/cli/semanticIntents/markdownPdf.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAA;AAErD,MAAM,qBAAqB,GAAG,KAAK,CAAA;AACnC,MAAM,oBAAoB,GAAG,QAAQ,CAAA;AACrC,MAAM,eAAe,GAAG,CAAC,YAAY,EAAE,KAAK,CAAU,CAAA;AACtD,MAAM,cAAc,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAU,CAAA;AAElD,SAAS,qBAAqB,CAAC,KAAc;IAC3C,OAAO,CACL,sBAAsB,CAAC;QACrB,QAAQ,EAAE,mBAAmB;QAC7B,eAAe,EAAE,eAAe;QAChC,KAAK;KACN,CAAC,IAAI,qBAAqB,CAC5B,CAAA;AACH,CAAC;AAED,SAAS,oBAAoB,CAAC,KAAc;IAC1C,OAAO,CACL,sBAAsB,CAAC;QACrB,QAAQ,EAAE,kBAAkB;QAC5B,eAAe,EAAE,cAAc;QAC/B,KAAK;KACN,CAAC,IAAI,oBAAoB,CAC3B,CAAA;AACH,CAAC;AAED,MAAM,yBAAyB,GAAG;IAChC;QACE,IAAI,EAAE,gBAAgB;QACtB,IAAI,EAAE,QAAQ;QACd,YAAY,EAAE,gBAAgB;QAC9B,WAAW,EAAE,mBAAmB;QAChC,WAAW,EAAE,qDAAqD;QAClE,QAAQ,EAAE,KAAK;KAChB;IACD;QACE,IAAI,EAAE,eAAe;QACrB,IAAI,EAAE,QAAQ;QACd,YAAY,EAAE,eAAe;QAC7B,WAAW,EAAE,kBAAkB;QAC/B,WAAW,EAAE,iDAAiD;QAC9D,QAAQ,EAAE,KAAK;KAChB;CACmD,CAAA;AAEtD,SAAS,mCAAmC,CAAC,EAC3C,WAAW,EACX,OAAO,EACP,aAAa,EACb,MAAM,EACN,OAAO,GAOR;IACC,MAAM,WAAW,GAAG,MAAM,CAAC,WAAW,EAAE,CAAA;IACxC,MAAM,YAAY,GAAG;QACnB,WAAW;QACX,OAAO;QACP,QAAQ,EAAE;YACR;gBACE,+BAA+B,WAAW,OAAO;gBACjD,wBAAwB,MAAM,4BAA4B,aAAa,EAAE;aAC1E;YACD;gBACE,0DAA0D;gBAC1D,wBAAwB,MAAM,iCAAiC;aAChE;SACF;KACmC,CAAA;IAEtC,OAAO;QACL,UAAU,CAAC,SAAS,EAAE,QAAQ;YAC5B,OAAO;gBACL,KAAK,EAAE,mBAAmB;gBAC1B,GAAG,EAAE,WAAW;gBAChB,MAAM,EAAE,IAAI;gBACZ,MAAM;gBACN,eAAe,EAAE,qBAAqB,CAAC,SAAS,CAAC,cAAc,CAAC;gBAChE,cAAc,EAAE,oBAAoB,CAAC,SAAS,CAAC,aAAa,CAAC;gBAC7D,8FAA8F;gBAC9F,wEAAwE;aACzE,CAAA;QACH,CAAC;QACD,SAAS,EAAE;YACT,IAAI,EAAE,cAAc;YACpB,OAAO;YACP,cAAc,EAAE,SAAS;YACzB,MAAM,EAAE,yBAAyB;SAClC;QACD,WAAW,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE;QACjC,iBAAiB,EAAE,sBAAsB,WAAW,4BAA4B;QAChF,YAAY;QACZ,UAAU,EAAE,WAAW;KACxB,CAAA;AACH,CAAC;AAED,MAAM,CAAC,MAAM,mCAAmC,GAAG,mCAAmC,CAAC;IACrF,WAAW,EAAE,+BAA+B;IAC5C,OAAO,EACL,6JAA6J;IAC/J,aAAa,EAAE,YAAY;IAC3B,MAAM,EAAE,KAAK;IACb,OAAO,EAAE,cAAc;CACxB,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,oCAAoC,GAAG,mCAAmC,CAAC;IACtF,WAAW,EAAE,yCAAyC;IACtD,OAAO,EACL,wHAAwH;IAC1H,aAAa,EAAE,aAAa;IAC5B,MAAM,EAAE,MAAM;IACd,OAAO,EAAE,eAAe;CACzB,CAAC,CAAA"}
|
package/package.json
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { mkdir, readFile, writeFile } from 'node:fs/promises'
|
|
2
2
|
import { dirname } from 'node:path'
|
|
3
|
+
import { pathToFileURL } from 'node:url'
|
|
3
4
|
import {
|
|
4
5
|
getConcurrencyOptionDocumentation,
|
|
5
6
|
getDeleteAfterProcessingOptionDocumentation,
|
|
@@ -127,7 +128,14 @@ function getBackendSummary(catalogDefinition: IntentDefinition): string {
|
|
|
127
128
|
function getUsage(definition: ResolvedIntentCommandDefinition): string {
|
|
128
129
|
const parts = ['npx transloadit', ...definition.paths]
|
|
129
130
|
if (definition.runnerKind !== 'no-input') {
|
|
130
|
-
|
|
131
|
+
if (
|
|
132
|
+
'inputPolicy' in definition.intentDefinition &&
|
|
133
|
+
definition.intentDefinition.inputPolicy.kind === 'optional'
|
|
134
|
+
) {
|
|
135
|
+
parts.push('[--input', '<path|dir|url|->]')
|
|
136
|
+
} else {
|
|
137
|
+
parts.push('--input', '<path|dir|url|->')
|
|
138
|
+
}
|
|
131
139
|
}
|
|
132
140
|
parts.push('[options]')
|
|
133
141
|
return parts.join(' ')
|
|
@@ -322,7 +330,7 @@ function renderAtAGlanceTable(definitions: ResolvedIntentCommandDefinition[]): s
|
|
|
322
330
|
)
|
|
323
331
|
}
|
|
324
332
|
|
|
325
|
-
function renderIntentDocsBody({
|
|
333
|
+
export function renderIntentDocsBody({
|
|
326
334
|
definitions,
|
|
327
335
|
headingLevel,
|
|
328
336
|
}: {
|
|
@@ -359,6 +367,15 @@ function renderIntentDocsBody({
|
|
|
359
367
|
return lines.join('\n').trim()
|
|
360
368
|
}
|
|
361
369
|
|
|
370
|
+
function isEntrypoint(): boolean {
|
|
371
|
+
const entrypoint = process.argv[1]
|
|
372
|
+
if (entrypoint == null) {
|
|
373
|
+
return false
|
|
374
|
+
}
|
|
375
|
+
|
|
376
|
+
return import.meta.url === pathToFileURL(entrypoint).href
|
|
377
|
+
}
|
|
378
|
+
|
|
362
379
|
function replaceGeneratedBlock({
|
|
363
380
|
endMarker,
|
|
364
381
|
markdown,
|
|
@@ -410,10 +427,12 @@ async function main(): Promise<void> {
|
|
|
410
427
|
await writeFile(readmeUrl, `${nextReadme}\n`)
|
|
411
428
|
}
|
|
412
429
|
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
430
|
+
if (isEntrypoint()) {
|
|
431
|
+
main().catch((error) => {
|
|
432
|
+
if (!(error instanceof Error)) {
|
|
433
|
+
throw new Error(`Was thrown a non-error: ${String(error)}`)
|
|
434
|
+
}
|
|
435
|
+
console.error(error)
|
|
436
|
+
process.exit(1)
|
|
437
|
+
})
|
|
438
|
+
}
|
|
@@ -37,10 +37,6 @@ import {
|
|
|
37
37
|
robotImageBgremoveInstructionsSchema,
|
|
38
38
|
meta as robotImageBgremoveMeta,
|
|
39
39
|
} from '../alphalib/types/robots/image-bgremove.ts'
|
|
40
|
-
import {
|
|
41
|
-
robotImageGenerateInstructionsSchema,
|
|
42
|
-
meta as robotImageGenerateMeta,
|
|
43
|
-
} from '../alphalib/types/robots/image-generate.ts'
|
|
44
40
|
import {
|
|
45
41
|
robotImageOptimizeInstructionsSchema,
|
|
46
42
|
meta as robotImageOptimizeMeta,
|
|
@@ -169,11 +165,10 @@ export function findIntentDefinitionByPaths(
|
|
|
169
165
|
}
|
|
170
166
|
|
|
171
167
|
export const intentCatalog = [
|
|
172
|
-
|
|
173
|
-
kind: '
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
schema: robotImageGenerateInstructionsSchema,
|
|
168
|
+
defineSemanticIntent({
|
|
169
|
+
kind: 'semantic',
|
|
170
|
+
paths: ['image', 'generate'],
|
|
171
|
+
semantic: 'image-generate',
|
|
177
172
|
}),
|
|
178
173
|
defineRobotIntent({
|
|
179
174
|
kind: 'robot',
|
package/src/cli/intentRuntime.ts
CHANGED
|
@@ -318,8 +318,9 @@ function createSingleStep(
|
|
|
318
318
|
function createDynamicIntentStep(
|
|
319
319
|
execution: IntentDynamicStepExecutionDefinition,
|
|
320
320
|
rawValues: Record<string, unknown>,
|
|
321
|
+
hasInputs: boolean,
|
|
321
322
|
): Record<string, unknown> {
|
|
322
|
-
return getSemanticIntentDescriptor(execution.handler).createStep(rawValues)
|
|
323
|
+
return getSemanticIntentDescriptor(execution.handler).createStep(rawValues, { hasInputs })
|
|
323
324
|
}
|
|
324
325
|
|
|
325
326
|
function requiresLocalInput(
|
|
@@ -367,7 +368,11 @@ async function executeIntentCommand({
|
|
|
367
368
|
rawValues,
|
|
368
369
|
createOptions.inputs.length > 0,
|
|
369
370
|
)
|
|
370
|
-
: createDynamicIntentStep(
|
|
371
|
+
: createDynamicIntentStep(
|
|
372
|
+
definition.execution,
|
|
373
|
+
rawValues,
|
|
374
|
+
createOptions.inputs.length > 0,
|
|
375
|
+
),
|
|
371
376
|
} as AssembliesCreateOptions['stepsData'],
|
|
372
377
|
}
|
|
373
378
|
|
|
@@ -563,7 +568,7 @@ abstract class GeneratedFileIntentCommandBase extends GeneratedIntentCommandBase
|
|
|
563
568
|
|
|
564
569
|
const execution = this.getIntentDefinition().execution
|
|
565
570
|
if (execution.kind === 'dynamic-step') {
|
|
566
|
-
createDynamicIntentStep(execution, rawValues)
|
|
571
|
+
createDynamicIntentStep(execution, rawValues, this.getProvidedInputCount() > 0)
|
|
567
572
|
}
|
|
568
573
|
|
|
569
574
|
return undefined
|
|
@@ -212,7 +212,10 @@ function buildDescribeAiChatMessages({
|
|
|
212
212
|
}
|
|
213
213
|
}
|
|
214
214
|
|
|
215
|
-
function createImageDescribeStep(
|
|
215
|
+
function createImageDescribeStep(
|
|
216
|
+
rawValues: Record<string, unknown>,
|
|
217
|
+
_context: { hasInputs: boolean },
|
|
218
|
+
): Record<string, unknown> {
|
|
216
219
|
const { fields, profile } = resolveImageDescribeRequest(rawValues)
|
|
217
220
|
if (fields.length === 1 && fields[0] === 'labels') {
|
|
218
221
|
return {
|