@executioncontrolprotocol/fal 0.13.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 +38 -0
- package/dist/index.d.ts +10 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +52 -0
- package/dist/index.js.map +1 -0
- package/dist/resolve-api-key.d.ts +3 -0
- package/dist/resolve-api-key.d.ts.map +1 -0
- package/dist/resolve-api-key.js +11 -0
- package/dist/resolve-api-key.js.map +1 -0
- package/dist/run-inference.d.ts +28 -0
- package/dist/run-inference.d.ts.map +1 -0
- package/dist/run-inference.js +33 -0
- package/dist/run-inference.js.map +1 -0
- package/dist/schemas.d.ts +43 -0
- package/dist/schemas.d.ts.map +1 -0
- package/dist/schemas.js +25 -0
- package/dist/schemas.js.map +1 -0
- package/package.json +34 -0
package/README.md
ADDED
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
# @executioncontrolprotocol/fal
|
|
2
|
+
|
|
3
|
+
FAL model provider extension for ECP. Invokes any FAL endpoint from workflows with env/secrets auth and standard `$ref` chaining.
|
|
4
|
+
|
|
5
|
+
## Binding
|
|
6
|
+
|
|
7
|
+
```ts
|
|
8
|
+
import "@executioncontrolprotocol/fal"
|
|
9
|
+
import { environment, extension, env, secrets } from "@executioncontrolprotocol/node"
|
|
10
|
+
|
|
11
|
+
export default environment("fal-demo")
|
|
12
|
+
.withExtensions([
|
|
13
|
+
extension("@executioncontrolprotocol/secrets").with({}),
|
|
14
|
+
extension("@executioncontrolprotocol/fal").with({
|
|
15
|
+
apiKey: secrets("fal/api-key"), // or env("FAL_KEY")
|
|
16
|
+
defaultMode: "subscribe",
|
|
17
|
+
}),
|
|
18
|
+
])
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
## Capability: `@executioncontrolprotocol/fal.generate`
|
|
22
|
+
|
|
23
|
+
**Input:** `{ endpoint?, input, mode?, logs? }` — `endpoint` can default from extension config.
|
|
24
|
+
|
|
25
|
+
**Output:** `{ data, requestId? }` — `data` holds the FAL model response (images, video URLs, etc.).
|
|
26
|
+
|
|
27
|
+
## Chaining
|
|
28
|
+
|
|
29
|
+
Reference prior step output fields with `ref()`:
|
|
30
|
+
|
|
31
|
+
```ts
|
|
32
|
+
step("@executioncontrolprotocol/fal.generate", "Upscale")
|
|
33
|
+
.with({
|
|
34
|
+
endpoint: "fal-ai/clarity-upscaler",
|
|
35
|
+
input: { image_url: ref("base.data.images.0.url") },
|
|
36
|
+
})
|
|
37
|
+
.as("upscaled")
|
|
38
|
+
```
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { type Registry } from "@executioncontrolprotocol/core";
|
|
2
|
+
/** @executioncontrolprotocol/fal extension. @category Extensions */
|
|
3
|
+
export declare const falExtension: import("@executioncontrolprotocol/core").ExtensionDefinition;
|
|
4
|
+
/** Register @executioncontrolprotocol/fal. */
|
|
5
|
+
export declare function registerFalExtension(registry?: Registry): Promise<void>;
|
|
6
|
+
export { falGenerateInputSchema, falGenerateOutputSchema, FAL_INFERENCE_MODES } from "./schemas.js";
|
|
7
|
+
export { resolveFalApiKey } from "./resolve-api-key.js";
|
|
8
|
+
export { runFalInference } from "./run-inference.js";
|
|
9
|
+
export default falExtension;
|
|
10
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAKL,KAAK,QAAQ,EAEd,MAAM,gCAAgC,CAAA;AAOvC,oEAAoE;AACpE,eAAO,MAAM,YAAY,8DAoCf,CAAA;AAIV,8CAA8C;AAC9C,wBAAsB,oBAAoB,CAAC,QAAQ,GAAE,QAAyB,GAAG,OAAO,CAAC,IAAI,CAAC,CAI7F;AAED,OAAO,EAAE,sBAAsB,EAAE,uBAAuB,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAA;AACnG,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AAEpD,eAAe,YAAY,CAAA"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { defineExtension, capabilityFor, globalRegistry, catalogExtension, NODE_RUNTIME_ID, } from "@executioncontrolprotocol/core";
|
|
2
|
+
import { z } from "zod";
|
|
3
|
+
import { falGenerateInputSchema, falGenerateOutputSchema, FAL_INFERENCE_MODES } from "./schemas.js";
|
|
4
|
+
import { resolveFalApiKey } from "./resolve-api-key.js";
|
|
5
|
+
import { runFalInference } from "./run-inference.js";
|
|
6
|
+
/** @executioncontrolprotocol/fal extension. @category Extensions */
|
|
7
|
+
export const falExtension = defineExtension("@executioncontrolprotocol", "fal")
|
|
8
|
+
.withSupportedRuntimes([NODE_RUNTIME_ID])
|
|
9
|
+
.withConfig({
|
|
10
|
+
apiKey: z.string().optional(),
|
|
11
|
+
defaultEndpoint: z.string().optional(),
|
|
12
|
+
defaultMode: z.enum([FAL_INFERENCE_MODES.RUN, FAL_INFERENCE_MODES.SUBSCRIBE]).optional(),
|
|
13
|
+
})
|
|
14
|
+
.withCapabilities([
|
|
15
|
+
capabilityFor("@executioncontrolprotocol/fal", "generate")
|
|
16
|
+
.withInput(falGenerateInputSchema)
|
|
17
|
+
.withOutput(falGenerateOutputSchema)
|
|
18
|
+
.withHandler(async (input, ctx) => {
|
|
19
|
+
const parsed = input;
|
|
20
|
+
const cfg = ctx.extensionConfig ?? {};
|
|
21
|
+
const apiKey = resolveFalApiKey(cfg);
|
|
22
|
+
if (!apiKey)
|
|
23
|
+
throw new Error("FAL API key required");
|
|
24
|
+
const endpoint = parsed.endpoint ?? cfg.defaultEndpoint;
|
|
25
|
+
if (!endpoint)
|
|
26
|
+
throw new Error("FAL endpoint required");
|
|
27
|
+
const mode = parsed.mode ??
|
|
28
|
+
cfg.defaultMode ??
|
|
29
|
+
FAL_INFERENCE_MODES.SUBSCRIBE;
|
|
30
|
+
ctx.usage.increment({ modelCalls: 1 });
|
|
31
|
+
return runFalInference({
|
|
32
|
+
apiKey,
|
|
33
|
+
endpoint,
|
|
34
|
+
input: parsed.input,
|
|
35
|
+
mode,
|
|
36
|
+
logs: parsed.logs,
|
|
37
|
+
});
|
|
38
|
+
}),
|
|
39
|
+
])
|
|
40
|
+
.build();
|
|
41
|
+
catalogExtension(falExtension);
|
|
42
|
+
/** Register @executioncontrolprotocol/fal. */
|
|
43
|
+
export async function registerFalExtension(registry = globalRegistry) {
|
|
44
|
+
if (!registry.getExtension("@executioncontrolprotocol/fal")) {
|
|
45
|
+
await registry.registerExtension(falExtension);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
export { falGenerateInputSchema, falGenerateOutputSchema, FAL_INFERENCE_MODES } from "./schemas.js";
|
|
49
|
+
export { resolveFalApiKey } from "./resolve-api-key.js";
|
|
50
|
+
export { runFalInference } from "./run-inference.js";
|
|
51
|
+
export default falExtension;
|
|
52
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EACf,aAAa,EACb,cAAc,EACd,gBAAgB,EAEhB,eAAe,GAChB,MAAM,gCAAgC,CAAA;AACvC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,EAAE,sBAAsB,EAAE,uBAAuB,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAA;AACnG,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AAGpD,oEAAoE;AACpE,MAAM,CAAC,MAAM,YAAY,GAAG,eAAe,CAAC,2BAA2B,EAAE,KAAK,CAAC;KAC5E,qBAAqB,CAAC,CAAC,eAAe,CAAC,CAAC;KACxC,UAAU,CAAC;IACV,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC7B,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACtC,WAAW,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,mBAAmB,CAAC,GAAG,EAAE,mBAAmB,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,EAAE;CACzF,CAAC;KACD,gBAAgB,CAAC;IAChB,aAAa,CAAC,+BAA+B,EAAE,UAAU,CAAC;SACvD,SAAS,CAAC,sBAAsB,CAAC;SACjC,UAAU,CAAC,uBAAuB,CAAC;SACnC,WAAW,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;QAChC,MAAM,MAAM,GAAG,KAA+C,CAAA;QAC9D,MAAM,GAAG,GAAI,GAAqD,CAAC,eAAe,IAAI,EAAE,CAAA;QACxF,MAAM,MAAM,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAA;QACpC,IAAI,CAAC,MAAM;YAAE,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAA;QAEpD,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,IAAK,GAAG,CAAC,eAAsC,CAAA;QAC/E,IAAI,CAAC,QAAQ;YAAE,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAA;QAEvD,MAAM,IAAI,GACR,MAAM,CAAC,IAAI;YACV,GAAG,CAAC,WAA4C;YACjD,mBAAmB,CAAC,SAAS,CAAA;QAE/B,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC,CAAA;QAEtC,OAAO,eAAe,CAAC;YACrB,MAAM;YACN,QAAQ;YACR,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,IAAI;YACJ,IAAI,EAAE,MAAM,CAAC,IAAI;SAClB,CAAC,CAAA;IACJ,CAAC,CAAC;CACL,CAAC;KACD,KAAK,EAAE,CAAA;AAEV,gBAAgB,CAAC,YAAY,CAAC,CAAA;AAE9B,8CAA8C;AAC9C,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,WAAqB,cAAc;IAC5E,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,+BAA+B,CAAC,EAAE,CAAC;QAC5D,MAAM,QAAQ,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAA;IAChD,CAAC;AACH,CAAC;AAED,OAAO,EAAE,sBAAsB,EAAE,uBAAuB,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAA;AACnG,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AAEpD,eAAe,YAAY,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolve-api-key.d.ts","sourceRoot":"","sources":["../src/resolve-api-key.ts"],"names":[],"mappings":"AAAA,iFAAiF;AACjF,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAOrE"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/** Resolve FAL API key from extension config, optionally process.env on Node. */
|
|
2
|
+
export function resolveFalApiKey(cfg) {
|
|
3
|
+
const fromConfig = cfg.apiKey;
|
|
4
|
+
if (fromConfig)
|
|
5
|
+
return fromConfig;
|
|
6
|
+
if (typeof process !== "undefined" && process.env?.FAL_KEY) {
|
|
7
|
+
return process.env.FAL_KEY;
|
|
8
|
+
}
|
|
9
|
+
return "";
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=resolve-api-key.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolve-api-key.js","sourceRoot":"","sources":["../src/resolve-api-key.ts"],"names":[],"mappings":"AAAA,iFAAiF;AACjF,MAAM,UAAU,gBAAgB,CAAC,GAA4B;IAC3D,MAAM,UAAU,GAAG,GAAG,CAAC,MAA4B,CAAA;IACnD,IAAI,UAAU;QAAE,OAAO,UAAU,CAAA;IACjC,IAAI,OAAO,OAAO,KAAK,WAAW,IAAI,OAAO,CAAC,GAAG,EAAE,OAAO,EAAE,CAAC;QAC3D,OAAO,OAAO,CAAC,GAAG,CAAC,OAAO,CAAA;IAC5B,CAAC;IACD,OAAO,EAAE,CAAA;AACX,CAAC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import type { FalInferenceMode } from "./schemas.js";
|
|
2
|
+
/** Result from a FAL inference call. @category Extensions */
|
|
3
|
+
export interface FalInferenceResult {
|
|
4
|
+
/** Primary result payload from FAL. */
|
|
5
|
+
data: unknown;
|
|
6
|
+
/** FAL request id when available. */
|
|
7
|
+
requestId?: string;
|
|
8
|
+
}
|
|
9
|
+
/** Options for {@link runFalInference}. @category Extensions */
|
|
10
|
+
export interface RunFalInferenceOptions {
|
|
11
|
+
/** FAL API key. */
|
|
12
|
+
apiKey: string;
|
|
13
|
+
/** FAL model endpoint id. */
|
|
14
|
+
endpoint: string;
|
|
15
|
+
/** Model-specific request payload. */
|
|
16
|
+
input: Record<string, unknown>;
|
|
17
|
+
/** Inference mode. */
|
|
18
|
+
mode: FalInferenceMode;
|
|
19
|
+
/** Include queue logs when using subscribe mode. */
|
|
20
|
+
logs?: boolean;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Run inference against a FAL endpoint using the official client.
|
|
24
|
+
*
|
|
25
|
+
* @category Extensions
|
|
26
|
+
*/
|
|
27
|
+
export declare function runFalInference(options: RunFalInferenceOptions): Promise<FalInferenceResult>;
|
|
28
|
+
//# sourceMappingURL=run-inference.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run-inference.d.ts","sourceRoot":"","sources":["../src/run-inference.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAA;AAGpD,6DAA6D;AAC7D,MAAM,WAAW,kBAAkB;IACjC,uCAAuC;IACvC,IAAI,EAAE,OAAO,CAAA;IACb,qCAAqC;IACrC,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,gEAAgE;AAChE,MAAM,WAAW,sBAAsB;IACrC,mBAAmB;IACnB,MAAM,EAAE,MAAM,CAAA;IACd,6BAA6B;IAC7B,QAAQ,EAAE,MAAM,CAAA;IAChB,sCAAsC;IACtC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC9B,sBAAsB;IACtB,IAAI,EAAE,gBAAgB,CAAA;IACtB,oDAAoD;IACpD,IAAI,CAAC,EAAE,OAAO,CAAA;CACf;AAED;;;;GAIG;AACH,wBAAsB,eAAe,CAAC,OAAO,EAAE,sBAAsB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAyBlG"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { fal } from "@fal-ai/client";
|
|
2
|
+
import { FAL_INFERENCE_MODES } from "./schemas.js";
|
|
3
|
+
/**
|
|
4
|
+
* Run inference against a FAL endpoint using the official client.
|
|
5
|
+
*
|
|
6
|
+
* @category Extensions
|
|
7
|
+
*/
|
|
8
|
+
export async function runFalInference(options) {
|
|
9
|
+
const { apiKey, endpoint, input, mode, logs } = options;
|
|
10
|
+
fal.config({ credentials: apiKey });
|
|
11
|
+
try {
|
|
12
|
+
if (mode === FAL_INFERENCE_MODES.RUN) {
|
|
13
|
+
const result = await fal.run(endpoint, { input });
|
|
14
|
+
return {
|
|
15
|
+
data: result.data,
|
|
16
|
+
requestId: result.requestId,
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
const result = await fal.subscribe(endpoint, {
|
|
20
|
+
input,
|
|
21
|
+
logs: logs ?? false,
|
|
22
|
+
});
|
|
23
|
+
return {
|
|
24
|
+
data: result.data,
|
|
25
|
+
requestId: result.requestId,
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
catch (err) {
|
|
29
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
30
|
+
throw new Error(`FAL API error (${endpoint}): ${message}`);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=run-inference.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run-inference.js","sourceRoot":"","sources":["../src/run-inference.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAA;AAEpC,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAA;AAwBlD;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,OAA+B;IACnE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,OAAO,CAAA;IACvD,GAAG,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC,CAAA;IAEnC,IAAI,CAAC;QACH,IAAI,IAAI,KAAK,mBAAmB,CAAC,GAAG,EAAE,CAAC;YACrC,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,CAAC,CAAA;YACjD,OAAO;gBACL,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,SAAS,EAAE,MAAM,CAAC,SAAS;aAC5B,CAAA;QACH,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,SAAS,CAAC,QAAQ,EAAE;YAC3C,KAAK;YACL,IAAI,EAAE,IAAI,IAAI,KAAK;SACpB,CAAC,CAAA;QACF,OAAO;YACL,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,SAAS,EAAE,MAAM,CAAC,SAAS;SAC5B,CAAA;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;QAChE,MAAM,IAAI,KAAK,CAAC,kBAAkB,QAAQ,MAAM,OAAO,EAAE,CAAC,CAAA;IAC5D,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
/** FAL inference mode: direct HTTP or queue-backed polling. @category Extensions */
|
|
3
|
+
export declare const FAL_INFERENCE_MODES: {
|
|
4
|
+
readonly RUN: "run";
|
|
5
|
+
readonly SUBSCRIBE: "subscribe";
|
|
6
|
+
};
|
|
7
|
+
/** FAL inference mode union. @category Extensions */
|
|
8
|
+
export type FalInferenceMode = (typeof FAL_INFERENCE_MODES)[keyof typeof FAL_INFERENCE_MODES];
|
|
9
|
+
/** Input for {@link "@executioncontrolprotocol/fal.generate"}. @category Extensions */
|
|
10
|
+
export declare const falGenerateInputSchema: z.ZodObject<{
|
|
11
|
+
/** FAL model endpoint id (e.g. `fal-ai/flux/schnell`). */
|
|
12
|
+
endpoint: z.ZodOptional<z.ZodString>;
|
|
13
|
+
/** Model-specific request payload per FAL API docs. */
|
|
14
|
+
input: z.ZodRecord<z.ZodString, z.ZodUnknown>;
|
|
15
|
+
/** Inference mode override. */
|
|
16
|
+
mode: z.ZodOptional<z.ZodEnum<["run", "subscribe"]>>;
|
|
17
|
+
/** Include queue logs when using subscribe mode. */
|
|
18
|
+
logs: z.ZodOptional<z.ZodBoolean>;
|
|
19
|
+
}, "strip", z.ZodTypeAny, {
|
|
20
|
+
input: Record<string, unknown>;
|
|
21
|
+
endpoint?: string | undefined;
|
|
22
|
+
mode?: "run" | "subscribe" | undefined;
|
|
23
|
+
logs?: boolean | undefined;
|
|
24
|
+
}, {
|
|
25
|
+
input: Record<string, unknown>;
|
|
26
|
+
endpoint?: string | undefined;
|
|
27
|
+
mode?: "run" | "subscribe" | undefined;
|
|
28
|
+
logs?: boolean | undefined;
|
|
29
|
+
}>;
|
|
30
|
+
/** Output from {@link "@executioncontrolprotocol/fal.generate"}. @category Extensions */
|
|
31
|
+
export declare const falGenerateOutputSchema: z.ZodObject<{
|
|
32
|
+
/** Primary result payload from FAL (images, video urls, metadata, etc.). */
|
|
33
|
+
data: z.ZodUnknown;
|
|
34
|
+
/** FAL request id when available. */
|
|
35
|
+
requestId: z.ZodOptional<z.ZodString>;
|
|
36
|
+
}, "strip", z.ZodTypeAny, {
|
|
37
|
+
data?: unknown;
|
|
38
|
+
requestId?: string | undefined;
|
|
39
|
+
}, {
|
|
40
|
+
data?: unknown;
|
|
41
|
+
requestId?: string | undefined;
|
|
42
|
+
}>;
|
|
43
|
+
//# sourceMappingURL=schemas.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../src/schemas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,oFAAoF;AACpF,eAAO,MAAM,mBAAmB;;;CAGtB,CAAA;AAEV,qDAAqD;AACrD,MAAM,MAAM,gBAAgB,GAAG,CAAC,OAAO,mBAAmB,CAAC,CAAC,MAAM,OAAO,mBAAmB,CAAC,CAAA;AAE7F,uFAAuF;AACvF,eAAO,MAAM,sBAAsB;IACjC,0DAA0D;;IAE1D,uDAAuD;;IAEvD,+BAA+B;;IAE/B,oDAAoD;;;;;;;;;;;;EAEpD,CAAA;AAEF,yFAAyF;AACzF,eAAO,MAAM,uBAAuB;IAClC,4EAA4E;;IAE5E,qCAAqC;;;;;;;;EAErC,CAAA"}
|
package/dist/schemas.js
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
/** FAL inference mode: direct HTTP or queue-backed polling. @category Extensions */
|
|
3
|
+
export const FAL_INFERENCE_MODES = {
|
|
4
|
+
RUN: "run",
|
|
5
|
+
SUBSCRIBE: "subscribe",
|
|
6
|
+
};
|
|
7
|
+
/** Input for {@link "@executioncontrolprotocol/fal.generate"}. @category Extensions */
|
|
8
|
+
export const falGenerateInputSchema = z.object({
|
|
9
|
+
/** FAL model endpoint id (e.g. `fal-ai/flux/schnell`). */
|
|
10
|
+
endpoint: z.string().optional(),
|
|
11
|
+
/** Model-specific request payload per FAL API docs. */
|
|
12
|
+
input: z.record(z.string(), z.unknown()),
|
|
13
|
+
/** Inference mode override. */
|
|
14
|
+
mode: z.enum([FAL_INFERENCE_MODES.RUN, FAL_INFERENCE_MODES.SUBSCRIBE]).optional(),
|
|
15
|
+
/** Include queue logs when using subscribe mode. */
|
|
16
|
+
logs: z.boolean().optional(),
|
|
17
|
+
});
|
|
18
|
+
/** Output from {@link "@executioncontrolprotocol/fal.generate"}. @category Extensions */
|
|
19
|
+
export const falGenerateOutputSchema = z.object({
|
|
20
|
+
/** Primary result payload from FAL (images, video urls, metadata, etc.). */
|
|
21
|
+
data: z.unknown(),
|
|
22
|
+
/** FAL request id when available. */
|
|
23
|
+
requestId: z.string().optional(),
|
|
24
|
+
});
|
|
25
|
+
//# sourceMappingURL=schemas.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schemas.js","sourceRoot":"","sources":["../src/schemas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,oFAAoF;AACpF,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,GAAG,EAAE,KAAK;IACV,SAAS,EAAE,WAAW;CACd,CAAA;AAKV,uFAAuF;AACvF,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC7C,0DAA0D;IAC1D,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC/B,uDAAuD;IACvD,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC;IACxC,+BAA+B;IAC/B,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,mBAAmB,CAAC,GAAG,EAAE,mBAAmB,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,EAAE;IACjF,oDAAoD;IACpD,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;CAC7B,CAAC,CAAA;AAEF,yFAAyF;AACzF,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC9C,4EAA4E;IAC5E,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE;IACjB,qCAAqC;IACrC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CACjC,CAAC,CAAA"}
|
package/package.json
ADDED
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@executioncontrolprotocol/fal",
|
|
3
|
+
"version": "0.13.0",
|
|
4
|
+
"description": "FAL model provider extension for ECP",
|
|
5
|
+
"license": "Apache-2.0",
|
|
6
|
+
"type": "module",
|
|
7
|
+
"main": "./dist/index.js",
|
|
8
|
+
"types": "./dist/index.d.ts",
|
|
9
|
+
"exports": {
|
|
10
|
+
".": {
|
|
11
|
+
"types": "./dist/index.d.ts",
|
|
12
|
+
"import": "./dist/index.js"
|
|
13
|
+
}
|
|
14
|
+
},
|
|
15
|
+
"files": [
|
|
16
|
+
"dist",
|
|
17
|
+
"README.md"
|
|
18
|
+
],
|
|
19
|
+
"scripts": {
|
|
20
|
+
"build": "tsc -b"
|
|
21
|
+
},
|
|
22
|
+
"dependencies": {
|
|
23
|
+
"@fal-ai/client": "^1.10.1"
|
|
24
|
+
},
|
|
25
|
+
"peerDependencies": {
|
|
26
|
+
"@executioncontrolprotocol/core": "^0.13.0",
|
|
27
|
+
"@executioncontrolprotocol/types": "^0.13.0",
|
|
28
|
+
"zod": "^3.24.0"
|
|
29
|
+
},
|
|
30
|
+
"devDependencies": {
|
|
31
|
+
"typescript": "^5.7.0",
|
|
32
|
+
"zod": "^3.24.0"
|
|
33
|
+
}
|
|
34
|
+
}
|