2026-02-15 17:03:31 +00:00
|
|
|
[package]
|
|
|
|
|
name = "xtask"
|
|
|
|
|
version = "0.1.0"
|
|
|
|
|
edition = "2024"
|
feat: proper `README`, `LICENSE`, and our first quick example
Add project licensing and a full README, plus a minimal WebAssembly ping-pong example that exercises the actor runtime.
- `LICENSE`: add the full GNU AGPL-3.0 text and set `license = "AGPL-3.0-only"` on every package (`swactor`, each crate, `apps/myelin`, `tools/vastai`, `xtask`)
- `README.md`: rewrite from a stub into a full project overview, covering features (actor_id routing, WASM, iroh QUIC/SWIM, OTP-style std, process manager, zero-copy objects, datastream metrics, dashboard), architecture, examples, developing, status, and license
- `examples/ping-pong`: new standalone workspace (`pingpong` cdylib) where two actors volley on a single-threaded `wasm` runtime driven by a Node host via `tick()`, demonstrating spawning, message passing, and death monitoring (`watching`)
- `examples/ping-pong`: add a host/run harness -- `run.sh` (wasm-pack build + `run.mjs`), `serve.sh` (dashboard + static demo), `index.html`, and a pinned `Cargo.lock`
- `.gitignore`: stop ignoring `.loop/`, `.deployment-notes/`, and `.omp/`
Signed-off-by: Zachery Aaron Shores-Chmielewski <zacheryasc@gmail.com>
2026-08-05 20:29:27 +00:00
|
|
|
license = "AGPL-3.0-only"
|
2026-02-16 15:39:27 +00:00
|
|
|
|
|
|
|
|
[dependencies]
|
2026-07-22 07:50:53 +00:00
|
|
|
serde_json = "1"
|
2026-08-15 14:10:52 +00:00
|
|
|
swactor = { path = "..", features = ["serde"] }
|
|
|
|
|
swactor-engine = { path = "../crates/engine" }
|
|
|
|
|
swactor-transport = { path = "../crates/transport" }
|
|
|
|
|
swactor-process = { path = "../crates/process" }
|
|
|
|
|
provisioning = { path = "../crates/provisioning" }
|
|
|
|
|
telemetry = { path = "../crates/telemetry" }
|
|
|
|
|
dashboard = { path = "../crates/dashboard", features = ["demo-control"] }
|
demo: rename xtask demo command; dashboard-established data-plane edges
Rename `cargo xtask provisioning-reconciler-demo` to `cargo xtask demo`
(CLI dispatch, help, child re-exec argv, launch spec strings, module dir
xtask/src/provisioning_demo -> xtask/src/demo).
Add iteration-1 data-plane edges, established from Fleet Control:
- Fleet Control "edge" button -> POST /control/edge (new
ControlCommand::EstablishEdge) -> supervisor actor resolves the node's
advertised EndpointAddr (stashed in NodeRuntime by AnnounceActor) and
provisions a real outbound EdgeRuntime (arena ring lease, recorder
WorkerPort, EDGE_ALPN send pump) in a new edge pump thread.
- Node gains EDGE_ALPN, an actor bridge decoding EdgeProvision gossip,
and a NodeEdgeAgent that provisions its (single) inbound edge, polls
it, mirrors observations onto the node.edge telemetry channel
(render-only), and answers EdgeAck gossip which terminates the
supervisor's provision retries. Node teardown replaces its inbound on
re-provision; supervisor replaces sessions per node and tears them
down on node exit/replacement/shutdown.
- The edge pump runs on the engine's blocking pool with sole session
ownership (commands in, state mirror + feed lines out): the connect
handshake blocks its thread and must not run on a Tokio worker or
share a lock with the actor. Connects are bounded (10s) so a dead
node faults its session instead of wedging edge polling.
- iroh-driver: retain_telemetry_connections() opts an application out
of the driver-owned TELEMETRY_ALPN ingress so the node's pull server
can drain those connections itself (the actor-bridge pump would
otherwise claim them).
- Dashboard: edges array in the reconciler snapshot, per-node edge
badges and edge button in Fleet Control, node_edges render mirror.
2026-08-16 20:11:20 +00:00
|
|
|
data-plane = { path = "../crates/data-plane" }
|
2026-08-15 14:10:52 +00:00
|
|
|
iroh-driver = { path = "../crates/iroh-driver" }
|
|
|
|
|
distribution = { path = "../crates/distribution" }
|
|
|
|
|
iroh = "0.98"
|
|
|
|
|
serde = { version = "1", features = ["derive"] }
|
|
|
|
|
parking_lot = "0.12"
|
2026-07-22 07:50:53 +00:00
|
|
|
|
|
|
|
|
[target.'cfg(target_os = "linux")'.dependencies]
|
|
|
|
|
libc = "0.2"
|