feat: initial text-translate v0.1.0 (text.translate@0.1.0)
All checks were successful
CI / Linux x86_64 (Forgejo) (push) Successful in 1m34s
All checks were successful
CI / Linux x86_64 (Forgejo) (push) Successful in 1m34s
Ollama-backed translation module — third real F∆I capability,
following text.extract and llm.chat. Used for the second leg of
a regulated document workflow (extract -> translate -> review
-> summarise).
Capability:
Inputs:
text : text (source text)
target_language : text (e.g. "German", "French")
source_language : text (optional hint; empty = auto)
endpoint : text (Ollama /api/chat URL)
model : text
api_key : text (optional)
Outputs:
translation : text
source_language : text (echo for audit)
target_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.
The translation prompt is conservative: a fixed system prompt
demands faithful translation with structure preservation and
emits no metadata, no quoting. The user prompt names the target
language and (when supplied) the source language. The LLM
client + digest-probe pattern is reused verbatim from llm-chat;
when a third module joins, the shared client moves into a small
crate.
14 host-side tests cover prompt-building, Ollama-shaped response
parsing, URL transform, digest extraction (top-level + nested),
end-to-end success, end-to-end probe-failure swallow, and
end-to-end skip-for-non-Ollama.
Wasm artifact verified to build with v1.0 fai:platform imports
baked in. Bootstrapped via 'fai new module text.translate'.
Signed-off-by: flemming-it <sf@flemming.it>
This commit is contained in:
commit
a4c2c0e14e
11 changed files with 1440 additions and 0 deletions
85
.forgejo/workflows/ci.yml
Normal file
85
.forgejo/workflows/ci.yml
Normal file
|
|
@ -0,0 +1,85 @@
|
|||
name: CI
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [main]
|
||||
pull_request:
|
||||
branches: [main]
|
||||
|
||||
env:
|
||||
CARGO_TERM_COLOR: always
|
||||
RUSTFLAGS: "-D warnings"
|
||||
RUST_TOOLCHAIN: "1.86"
|
||||
CARGO_NET_GIT_FETCH_WITH_CLI: "true"
|
||||
|
||||
jobs:
|
||||
ci:
|
||||
name: Linux x86_64 (Forgejo)
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
# Manual external-URL checkout — see fai/platform CI for
|
||||
# background. Lays this repo at $GITHUB_WORKSPACE.
|
||||
- name: Checkout text-extract via external URL
|
||||
run: |
|
||||
set -eu
|
||||
mkdir -p "$GITHUB_WORKSPACE"
|
||||
cd "$GITHUB_WORKSPACE"
|
||||
git init -q
|
||||
git remote add origin \
|
||||
"https://x-access-token:${GITHUB_TOKEN}@git.flemming.ws/${GITHUB_REPOSITORY}.git"
|
||||
git fetch --depth=1 origin "$GITHUB_SHA"
|
||||
git checkout -q FETCH_HEAD
|
||||
|
||||
# The fai-module-sdk dependency is a git dep against a repo
|
||||
# that lives in another Forgejo org. The repo-scoped
|
||||
# GITHUB_TOKEN cannot read it, and the Forgejo instance has
|
||||
# REQUIRE_SIGNIN_VIEW=true so anonymous read is also denied.
|
||||
# MODULE_SDK_PAT is a stored secret with read access to
|
||||
# fai/module-sdk; we inject it into any outgoing
|
||||
# https://git.flemming.ws/ URL via insteadOf so cargo's git
|
||||
# fetch (driven by CARGO_NET_GIT_FETCH_WITH_CLI) authenticates
|
||||
# transparently.
|
||||
- name: Configure git URL rewrite for SDK fetch
|
||||
env:
|
||||
SDK_PAT: ${{ secrets.MODULE_SDK_PAT }}
|
||||
run: |
|
||||
git config --global \
|
||||
"url.https://x-access-token:${SDK_PAT}@git.flemming.ws/.insteadOf" \
|
||||
"https://git.flemming.ws/"
|
||||
|
||||
- name: Install system dependencies
|
||||
run: |
|
||||
apt-get update -qq
|
||||
apt-get install -y --no-install-recommends \
|
||||
curl \
|
||||
ca-certificates \
|
||||
build-essential \
|
||||
pkg-config \
|
||||
libssl-dev \
|
||||
git
|
||||
|
||||
- name: Install Rust toolchain
|
||||
run: |
|
||||
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs \
|
||||
| sh -s -- -y \
|
||||
--profile minimal \
|
||||
--default-toolchain "$RUST_TOOLCHAIN" \
|
||||
--target wasm32-wasip2 \
|
||||
--component rustfmt \
|
||||
--component clippy
|
||||
echo "$HOME/.cargo/bin" >> "$GITHUB_PATH"
|
||||
|
||||
- name: Cargo fmt --check
|
||||
run: cargo fmt --all -- --check
|
||||
|
||||
- name: Cargo clippy
|
||||
run: cargo clippy --all-targets -- -D warnings
|
||||
|
||||
- name: Cargo build (host)
|
||||
run: cargo build --all-targets
|
||||
|
||||
- name: Cargo test (host)
|
||||
run: cargo test --all-targets
|
||||
|
||||
- name: Cargo build (wasm32-wasip2)
|
||||
run: cargo build --release --target wasm32-wasip2
|
||||
Loading…
Add table
Add a link
Reference in a new issue