F module - Ollama-backed text summarisation.
Find a file
flemming-it 3422fe526d
All checks were successful
CI / Linux x86_64 (Forgejo) (push) Successful in 1m32s
feat: initial text-summarize v0.1.0 (text.summarize@0.1.0)
Ollama-backed summarisation module — fourth real F∆I capability,
following text.extract / llm.chat / text.translate. Completes
the text-processing trio for compose-grade workflows
(extract -> translate -> summarise, or any subset).

Capability:
  Inputs:
    text       : text   (source text)
    style      : text   (e.g. "one paragraph", "three bullets";
                          defaults to "one paragraph")
    language   : text   (output language hint; empty = source)
    endpoint   : text   (Ollama /api/chat URL)
    model      : text
    api_key    : text   (optional)

  Outputs:
    summary        : text
    style          : text   (echo for audit)
    language       : text   (echo for audit)
    model_endpoint : text
    model_name     : text
    model_digest   : text   (Ollama /api/show probe; empty for
                              non-Ollama or transient failures)

  Permissions: net to localhost / 127.0.0.1 / api.openai.com /
               api.anthropic.com.

System prompt is conservative: faithful, neutral, preserves
named entities, no editorialising, no metadata. Reuses the LLM
client + digest-probe pattern from llm-chat / text-translate;
the duplication is acceptable at four modules and will be
factored into a shared crate when a fifth lands.

15 host-side tests cover prompt-building (style + language +
empty-language), Ollama-shaped response parsing, URL transform,
digest extraction, end-to-end success / probe-failure / non-
Ollama paths.

Wasm artifact: 118 KB. Built with v1.0 fai:platform imports.
Bootstrapped via 'fai new module text.summarize'.

Signed-off-by: flemming-it <sf@flemming.it>
2026-05-04 11:18:29 +02:00
.forgejo/workflows feat: initial text-summarize v0.1.0 (text.summarize@0.1.0) 2026-05-04 11:18:29 +02:00
src feat: initial text-summarize v0.1.0 (text.summarize@0.1.0) 2026-05-04 11:18:29 +02:00
.gitignore feat: initial text-summarize v0.1.0 (text.summarize@0.1.0) 2026-05-04 11:18:29 +02:00
Cargo.lock feat: initial text-summarize v0.1.0 (text.summarize@0.1.0) 2026-05-04 11:18:29 +02:00
Cargo.toml feat: initial text-summarize v0.1.0 (text.summarize@0.1.0) 2026-05-04 11:18:29 +02:00
LICENSE feat: initial text-summarize v0.1.0 (text.summarize@0.1.0) 2026-05-04 11:18:29 +02:00
module.yaml feat: initial text-summarize v0.1.0 (text.summarize@0.1.0) 2026-05-04 11:18:29 +02:00
NOTICE feat: initial text-summarize v0.1.0 (text.summarize@0.1.0) 2026-05-04 11:18:29 +02:00
README.md feat: initial text-summarize v0.1.0 (text.summarize@0.1.0) 2026-05-04 11:18:29 +02:00
rust-toolchain.toml feat: initial text-summarize v0.1.0 (text.summarize@0.1.0) 2026-05-04 11:18:29 +02:00

text-summarize

Provides the text.summarize capability for F∆I Platform.

Build

cargo build --release --target wasm32-wasip2

Test

cargo test                 # host-side unit + integration tests
fai test .                 # load the wasm component in the runtime sandbox

Authoring with fai-module-sdk

The module body is one decorated function:

#[fai_module]
pub fn invoke(_ctx: Context, inputs: Inputs) -> Result<Outputs, ModuleError> {
    let message = inputs.require_text("message")?;
    Ok(Outputs::new().with_text("reply", format!("got: {message}")))
}

The macro hides the wit_bindgen call, the Guest impl, the Payload variant matching, and the wit_bindgen::export! invocation. See fai-module-sdk documentation for the full surface.

SDK source

The Cargo.toml git-deps fai-module-sdk from https://git.flemming.ws/fai/module-sdk.git. If your environment requires authentication for that host (e.g. Forgejo with REQUIRE_SIGNIN_VIEW=true), set up git config insteadOf with your PAT, or use cargo:net.git-fetch-with-cli=true plus a credential helper.

License

Apache-2.0