Extract sigil-nrepl from sigil monorepo
Initial standalone release extracted via git filter-repo from packages/sigil-nrepl/ at monorepo master c165430d. Pure-library extraction — no CLI submodule (sigil-cli's sigil nrepl subcommand, if any, remains in sigil-cli and imports from this package).
Scaffolding: - README describing the (sigil nrepl) server + (sigil nrepl client) library surface, wire protocol, and embedding examples. - .gitignore covering build/ and .sigil/ artifacts. - manifest.scm for guix-shell dev environment. - dev-redirects.sgl pointing codeberg:sigil/sigil and codeberg:sigil/sigil-repl at local sibling checkouts.
package.sgl: - version "0.13.1" - url -> https://codeberg.org/sigil/sigil-nrepl - sigil-stdlib + sigil-socket swapped from from-workspace to from-git monorepo-resident form pinned ^0.13.1. - sigil-repl pin unchanged at ^0.13.1 (already from-git).
sigil deps install clean (6 lock entries); sigil build clean; sigil test 3/3 passed (test-client.sgl).
.gitignore | 2 ++
README.md | 78 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
dev-redirects.sgl | 13 +++++++++++++
manifest.scm | 7 +++++++
package.sgl | 7 ++++---
sigil.lock | 33 +++++++++++++++++++++++++++++++++
6 files changed, 137 insertions(+), 3 deletions(-).gitignoreadded
build/.sigil/README.mdadded
# sigil-nreplNetwork REPL server for[Sigil](https://codeberg.org/sigil/sigil) — provides a JSON-RPC-stylenREPL endpoint that editors and live-development tools connect to.Built on `(sigil repl)` for prompt rendering and command parsing, andon `(sigil socket)` for transport.Long-running Sigil apps (live-crafter, cinder-cantata, game servers,etc.) embed an nREPL server so the developer can evaluate code, switchmodules, inspect state, and iterate on running code without restartingthe process.## Modules| Module | Purpose ||------------------------|------------------------------------------------------------------------------|| `(sigil nrepl)` | nREPL server: connection handling, session state, op dispatch (eval/doc/...)|| `(sigil nrepl client)` | nREPL client: connect, send requests, named-connection registry |## Wire protocolMessages are length-prefixed S-expressions:```<length:u32-be><sexp>```Request format: `(request :id <string> :op <symbol> [:module <string>] [...params])`Response format: `(response :id <string> :status <symbol> [...results])`Ops supported: `eval`, `complete`, `doc`, `describe`, `macroexpand`,`switch-module`, `modules`.## Embedding an nREPL server```scheme(import (sigil nrepl))(define server (nrepl-start port: 7888));; In your app's main loop, drain pending requests:(nrepl-process-pending server);; On shutdown:(nrepl-stop server)```## Connecting from a client```scheme(import (sigil nrepl client))(define conn (nrepl-connect "127.0.0.1" 7888))(nrepl-eval conn "(+ 1 2)") ; => ((status . ok) (value . "3"))(nrepl-switch-module conn "(my app)")(nrepl-disconnect conn)```## Build and test```sigil deps installsigil buildsigil test --report```Local development against an unreleased sigil monorepo or against alocal sigil-repl checkout:```sigil build --redirects ./dev-redirects.sgl```## LicenseBSD-3-Clause. See `LICENSE` in the sigil monorepo for the canonical copy.dev-redirects.sgladded
;; Development redirects — point from-git deps at local sibling checkouts;; during monorepo dev. Use: sigil build --redirects ./dev-redirects.sgl;;;; sigil-socket is still inside the monorepo (not yet extracted), so it;; resolves via the sigil redirect below.(redirects repos: (list (for-repo url: "codeberg:sigil/sigil" use: (from-path dir: "../sigil")) (for-repo url: "codeberg:sigil/sigil-repl" use: (from-path dir: "../task-extract-sigil-repl/sigil-repl"))))manifest.scmadded
;; sigil-nrepl Development Environment;; Use with: guix shell -m manifest.scm(specifications->manifest '("gcc-toolchain" "make" "pkg-config"))package.sglmodified
(package name: "sigil-nrepl" version: "0.13.1" description: "Network REPL server for Sigil" url: "https://codeberg.org/sigil/sigil" url: "https://codeberg.org/sigil/sigil-nrepl" license: "BSD-3-Clause" authors: (list "David Wilson <[email protected]>") dependencies: (list (from-workspace name: "sigil-stdlib") (from-git url: "codeberg:sigil/sigil" package: "sigil-stdlib" version: "^0.13.1") (from-git url: "codeberg:sigil/sigil-repl" version: "^0.13.1") (from-workspace name: "sigil-socket")) (from-git url: "codeberg:sigil/sigil" package: "sigil-socket" version: "^0.13.1")) tasks: (listsigil.lockadded
;; Auto-generated by sigil deps install. Do not edit.(lock (package name: "sigil-stdlib" url: "codeberg:sigil/sigil" ref: "^0.13.1" sha: "1aea1cecd3487bf07d071da2c1e7eb3cf4bbdb21" package-selector: "sigil-stdlib") (package name: "sigil-repl" url: "codeberg:sigil/sigil-repl" ref: "^0.13.1" sha: "abcc915709fc3d9915d775a544bd18481e4c88ce" version: "0.13.1") (package name: "sigil-socket" url: "codeberg:sigil/sigil" ref: "^0.13.1" sha: "1aea1cecd3487bf07d071da2c1e7eb3cf4bbdb21" package-selector: "sigil-socket") (package name: "sigil-ansi" url: "codeberg:sigil/sigil" ref: "^0.13.1" sha: "1aea1cecd3487bf07d071da2c1e7eb3cf4bbdb21" package-selector: "sigil-ansi") (package name: "sigil-hooks" url: "codeberg:sigil/sigil" ref: "^0.13.1" sha: "1aea1cecd3487bf07d071da2c1e7eb3cf4bbdb21" package-selector: "sigil-hooks") (package name: "sigil-docs" url: "codeberg:sigil/sigil" ref: "^0.13.1" sha: "1aea1cecd3487bf07d071da2c1e7eb3cf4bbdb21" package-selector: "sigil-docs"))