# orchestrator-llm F∆I orchestrator module — turns natural-language goals into structured execution plans (`fai_hub::plan::Plan` JSON). ## Status `v0.1.0` — **deterministic stub**. Always returns a structurally valid plan that creates a single `debug.echo` flow regardless of the goal. Useful as a smoke test for the full module → plan → `fai plan apply` path. `v0.2.0` (next) — replaces the stub with an actual LLM call to a configured endpoint (Ollama or OpenAI-compatible) once the F∆I platform exposes outbound HTTP to permitted modules via wasi-http. ## Capability - `orchestrator.plan@0.1.0` ## Inputs | Name | Type | Description | |------|------|-------------| | `goal` | text | Natural-language goal | | `available_capabilities` | text (JSON list) | Optional. Capabilities currently installed in the hub. | | `store_capabilities` | text (JSON list) | Optional. All capabilities the hub knows about. | ## Outputs | Name | Type | Description | |------|------|-------------| | `plan` | json | Plan JSON deserializable by `fai_hub::plan::Plan` | ## Permissions None. The deterministic stub does not call out. v0.2.0 will declare `net: ` once the platform supports it. ## Build ```bash cargo build --release --target wasm32-wasip2 ``` The built WASM lands at `target/wasm32-wasip2/release/orchestrator_llm.wasm`. ## Test Host-side unit and integration tests exercise the pure plan-building logic (no WASM build required for tests): ```bash cargo test ``` ## Use from a flow ```yaml schema_version: 1 name: plan-from-goal inputs: goal: text steps: - id: orchestrate use: orchestrator.plan@^0 with: goal: $inputs.goal outputs: plan: $orchestrate.plan ``` The `plan` output is JSON — pipe it through `fai plan apply -` to execute it. ## License Apache-2.0. See `LICENSE`.