The verify step curl-fetched the public key anonymously from the
dev repo's raw URL; since that repo went private the fetch 404s
and every signed release died at verification. Embed the PUBLIC
key verbatim (same pattern as the platform's sync-mirror.sh) so
the workflow is self-contained. Keep in lockstep with
infra/cosign/official.pub on key rotation.
Signed-off-by: flemming-it <sf@flemming.it>
'openai' reads as the cloud company — an operator running
self-hosted vLLM should be able to write what they mean. The new
value speaks the identical OpenAI wire (a guard test asserts the
emitted request stays byte-identical to api: openai, so the alias
can never drift into a dialect) but yields vLLM-specific error
hints (vllm serve, port 8000) instead of generic OpenAI prose.
Manifest + docs name the value in DE and EN.
Signed-off-by: flemming-it <sf@flemming.it>
The vendored sign.yml predated the product rename: it installed
and invoked the old CLI name, packed a .fai bundle, and verified
against the renamed fai/platform repo URL — every tag build died
on the missing binary. Align with the platform's current
sign-bundle template: chain CLI, .chain bundle extension,
fai/chain-private raw URL for official.pub.
Signed-off-by: flemming-it <sf@flemming.it>
Port the multi-API client from llm.chat (llm.rs kept in lockstep):
the optional api input selects the dialect, default stays the
unchanged v0.1.x Ollama behavior. openai covers vLLM, LM Studio,
LiteLLM and cloud OpenAI; api-specific error hints; api_key sent
as Bearer (ollama/openai) or x-api-key (anthropic). model_digest
stays an Ollama-only best-effort probe and is documented as such.
Proven end-to-end against a hermetic OpenAI-wire fake (request
shape validated, response parsed) via a hub flow run.
Signed-off-by: flemming-it <sf@flemming.it>
The pre-rename #[fai_module] attribute is gone in SDK 0.3.0; the
dependency is tag-pinned so an SDK push can no longer change what
this module builds against. Rebuilt artifact where tracked.
Signed-off-by: flemming-it <sf@flemming.it>
The product is Ch∆In; the old 'F∆I Platform' name survived in module
docs/manifests. Generic 'platform' terms left untouched.
Signed-off-by: flemming-it <sf@flemming.it>
Drop-in from fai/platform .forgejo/workflow-templates/
sign-bundle-keypair.yml. Triggers on v*.*.* tag push: builds
wasm32-wasip2, fetches the fai CLI from get.fai.flemming.ai,
packs the bundle, ECDSA P-256 signs it against the org-level
Forgejo secret FAI_SIGNING_KEY, round-trip-verifies against
infra/cosign/official.pub on fai/platform main, and attaches
bundle + .sig to the Forgejo Release via the API.
Signed-off-by: flemming-it <sf@flemming.it>
Brings module.yaml in line with F∆I 0.12.0's capability naming
convention. The legacy schema_version 1 (with implicit provider)
still loads in 0.12.0 via the grace-period default, but this
bump makes the publisher identity explicit and unblocks
storage-layout migration via 'fai migrate'.
See fai/platform docs/reference/capability-namespaces.yaml +
docs/operations/migration-to-0.12.md.
Signed-off-by: flemming-it <sf@flemming.it>
The fai-module-sdk repo was renamed from `fai/module-sdk` to
`fai/module-sdk-rust` to align with the three SDK families
convention (base + language suffix). Pin updated accordingly.
The old git.flemming.ws URL is also retired in this pass.
Signed-off-by: flemming-it <sf@flemming.it>
Documents the fidelity-over-creativity system-prompt stance
explicitly — that's the differentiator from a generic LLM
'summarize' call and worth surfacing in the module detail.
Signed-off-by: flemming-it <sf@flemming.it>
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>