Language SDKs
TypeScript
Bundle familiar TypeScript builders into reusable Wasm plugin jobs.
Create a module
fluentci init --sdk typescript
# Or add to an existing workspace:
fluentci modules add ci --sdk typescript
The SDK starter creates its own source and build configuration. The following
sample belongs in entry.ts. It prints a greeting, then inspects the current Git
workspace; run it from a Git repository.
Pipeline example
import { dag } from "./.sdk/typescript/src/plugin.ts";
export function hello() {
const output = dag
.pipeline("hello")
.withExec(["echo", "Hello from FluentCI"])
.withExec(["git", "status", "--short"])
.stdout();
Host.outputString(output);
}
Chain .withExec() calls; .stdout() executes the steps in order.
Toolchain and build
Install Node/npm and extism-js. The starter bundles its SDK under
.sdk/typescript. npm run build uses esbuild to bundle entry.ts as CommonJS,
then invokes extism-js with the guest interface declaration.
The example's withExec calls use argv arrays. stdout() executes the composed
pipeline and returns its output, which is written with Host.outputString.
An SDK's process builder does not use a Node subprocess API inside the guest.
Wasm exports and legacy pipelines
Each exported job needs a matching declaration in imports.d.ts. Rebuild before
inspecting functions with fluentci modules main --json.
This SDK targets a Wasm plugin. It is different from the CLI's legacy
TypeScript/Dagger pipeline compatibility path, which uses Deno/Dagger runtimes.
An entry.ts source plugin does not imply Deno is embedded into the Wasm guest.
Run and inspect
fluentci run main hello
fluentci modules main --json
Use the configured module name instead of main if it was added as ci.
CLI invocation builds the source module before running it. The resulting artifact
is normally dist/plugin.wasm.
Continue with workspace modules for custom builds and artifact paths, or publishing to share the compiled plugin.