Cleaned dead code and updated documents
This commit is contained in:
@@ -9,18 +9,31 @@ Tree organized by role.
|
||||
|
||||
```
|
||||
backends/ server protocol adapters
|
||||
mizan-django/ Django adapter
|
||||
mizan-fastapi/ FastAPI adapter (AFI-common scope)
|
||||
mizan-ts/ TypeScript adapter (proves the protocol is language-agnostic)
|
||||
frontends/ client kernel + per-framework adapters
|
||||
mizan-base/ framework-agnostic kernel; owns data, status, error; adapters subscribe
|
||||
mizan-react/ React contexts + hooks over the kernel
|
||||
mizan-vue/ Vue composables over the kernel
|
||||
mizan-svelte/ Svelte stores/runes over the kernel
|
||||
mizan-django/ Django adapter
|
||||
mizan-fastapi/ FastAPI adapter (AFI-common scope)
|
||||
mizan-rust-axum/ Rust/Axum adapter (handlers, errors, IR export)
|
||||
mizan-tauri/ Tauri adapter — Mizan calls served in-process
|
||||
mizan-ts/ TypeScript adapter (proves the protocol is language-agnostic)
|
||||
frontends/ client kernel + per-framework adapters + transports
|
||||
mizan-base/ framework-agnostic kernel (@mizan/base); owns data, status,
|
||||
error; adapters subscribe through the MizanTransport interface
|
||||
mizan-react/ React contexts + hooks over the kernel
|
||||
mizan-vue/ Vue composables over the kernel
|
||||
mizan-svelte/ Svelte stores/runes over the kernel
|
||||
mizan-rust/ Rust client kernel
|
||||
mizan-tauri-transport/ MizanTransport over Tauri IPC
|
||||
mizan-webview-transport/ MizanTransport over a webview message channel
|
||||
mizan-webview-channels/ channel transport over a webview bridge
|
||||
cores/ shared language-level primitives
|
||||
mizan-python/ @client decorator, registry, MWT, HMAC cache keys
|
||||
mizan-python/ @client decorator, registry, MWT, HMAC cache keys
|
||||
mizan-rust/ Rust core — IR build (build_ir()), registry
|
||||
mizan-rust-macros/ #[derive(Mizan)] / #[mizan::client] proc-macros
|
||||
protocol/ protocol-level tooling
|
||||
mizan-generate/ codegen — schema in, typed client out
|
||||
mizan-codegen/ codegen — Rust binary (crate `mizan-codegen`); reads KDL IR,
|
||||
emits typed clients. Targets: stage1, react, vue, svelte,
|
||||
channels, python, rust. Askama templates under templates/.
|
||||
mizan-generate/ thin npm-package launcher (bin/launcher.mjs) dispatching to
|
||||
the compiled mizan-codegen binary per platform
|
||||
workers/ runtime workers / bridges
|
||||
mizan-ssr/ Bun subprocess used by the Django template backend
|
||||
```
|
||||
@@ -35,11 +48,16 @@ compose.
|
||||
|
||||
## Kernel model
|
||||
|
||||
The client kernel (`mizan-base`) is the one hard thing. Per-
|
||||
framework adapters are thin idiomatic wrappers around it. Codegen
|
||||
emits typed bindings against the framework adapter's surface, not
|
||||
against the raw kernel — so a React developer gets `useEcho()` and
|
||||
`<MizanContext>`, a Vue developer gets `useEcho()` composables, a
|
||||
The client kernel (`@mizan/base`) is the one hard thing. It owns
|
||||
`ContextState<T> = {data, status, error}`, the context registry
|
||||
(`registerContext`), `mizanCall` / `mizanFetch`, server-driven `merge`
|
||||
and `invalidate`, and `initSession`. It reaches the backend through a
|
||||
pluggable `MizanTransport` (`call` / `fetch`); the default is the
|
||||
HTTP `httpTransport()`, swapped via `configure({ transport })` for
|
||||
Tauri / webview hosts. Per-framework adapters are thin idiomatic
|
||||
wrappers that subscribe to the kernel. Codegen emits typed bindings
|
||||
against the framework adapter's surface — a React developer gets
|
||||
`useEcho()` hooks, a Vue developer gets `useEcho()` composables, a
|
||||
Svelte developer gets readable stores. Same kernel underneath.
|
||||
|
||||
## KDL is the IR
|
||||
@@ -56,20 +74,23 @@ divergence between adapters is what the IR exists to prevent.
|
||||
|
||||
Forward-direction primitives:
|
||||
|
||||
- `cores/mizan-python` builds the IR from registered functions
|
||||
(`build_ir()` walks `mizan_core.registry`, emits KDL)
|
||||
- A `mizan-schema` package (forthcoming) holds the canonical KDL
|
||||
grammar / type system definition that every adapter targets
|
||||
- Each backend adapter emits KDL on stdout from an IR-export command:
|
||||
FastAPI `python -m mizan_fastapi.ir <module>`, Django
|
||||
`python manage.py export_mizan_ir`, Rust a consumer-side cargo bin
|
||||
that calls `mizan_core::build_ir()`. Python's `build_ir()` walks
|
||||
`mizan_core.registry`. The IR grammar (`type` / `function` /
|
||||
`context` / `channel` nodes) is parsed by `mizan-codegen`'s
|
||||
`src/ir.rs`; fixtures live at
|
||||
`protocol/mizan-codegen/tests/fixtures/*.kdl`.
|
||||
- `protocol/mizan-codegen/src/fetch.rs` spawns the configured source
|
||||
command and parses the KDL it writes.
|
||||
- Codegen reads KDL directly — no OpenAPI envelope, no
|
||||
`openapi-typescript`, no per-backend converter divergence
|
||||
- Edge manifest, MWT claims, and other protocol artifacts all derive
|
||||
from the same KDL
|
||||
|
||||
**Current implementation is transitional.** Today the codegen consumes
|
||||
OpenAPI 3.0 (`x-mizan-functions` + `x-mizan-contexts` extensions over
|
||||
Pydantic→JSON-Schema), produced via Django Ninja or FastAPI's native
|
||||
generator. That layered indirection is what introduces adapter
|
||||
divergence (see the AFI conformance suite). KDL-as-IR collapses it.
|
||||
`openapi-typescript`, no per-backend converter divergence. The
|
||||
former JavaScript/Node two-stage codegen (`openapi-typescript` plus
|
||||
`.mjs` adapters) has been deleted; codegen is now the single Rust
|
||||
binary.
|
||||
- Edge manifest, MWT claims, and other protocol artifacts derive from
|
||||
the same registry/IR.
|
||||
|
||||
## Launch surface
|
||||
|
||||
|
||||
Reference in New Issue
Block a user