- read-raw-byte: sb-unix:unix-read instead of read-char-no-hang - raw-mode: sb-posix:tcsetattr instead of stty - read-event: no probe-file /dev/stdin guard - on-key: accepts &key ctrl alt shift code - .asd: :croatoan dropped, :cl-tty added - script: detection fix (empty lisp/ -> XDG)
56 lines
2.6 KiB
Org Mode
56 lines
2.6 KiB
Org Mode
#+TITLE: System Manifest (manifest.org)
|
|
#+AUTHOR: Agent
|
|
#+FILETAGS: :harness:manifest:
|
|
#+STARTUP: content
|
|
#+PROPERTY: header-args:lisp :tangle /home/user/.local/share/passepartout/passepartout.asd
|
|
|
|
* Overview: Architectural Intent
|
|
|
|
The Manifest is the ASDF system definition for Passepartout. It defines what files belong to the harness, which external libraries are required, and how the test infrastructure is organized.
|
|
|
|
The ~passepartout.asd~ file tangled from this manifest is what ~ql:quickload :passepartout~ reads to load the system. The files are loaded in the order listed here — dependencies first, then each pipeline stage in order.
|
|
|
|
* Implementation
|
|
|
|
** Main System
|
|
|
|
The core system. The combined ~:depends-on~ list pulls in every external library the agent needs: networking (usocket, dexador, hunchentoot), concurrency (bordeaux-threads), utilities (uiop, cl-ppcre, cl-json, str), security (ironclad), and configuration (cl-dotenv, uuid).
|
|
|
|
Components are loaded in sequence (~:serial t~): package first (defines the public API), then skills (does the defskill macro), then communication (defines the protocol), then memory (defines org-object), then context (defines peripheral vision), then each pipeline stage in order (perceive, reason, act), then doctor (diagnostics), then loop (orchestration).
|
|
|
|
#+begin_src lisp
|
|
(defsystem :passepartout
|
|
:name "Passepartout"
|
|
:author "Amr Gharbeia"
|
|
:version "0.4.3"
|
|
:license "AGPLv3"
|
|
:description "The Probabilistic-Deterministic Lisp Machine"
|
|
:depends-on (:usocket :bordeaux-threads :dexador :uiop :cl-dotenv :cl-ppcre :hunchentoot :ironclad :str :cl-json :uuid)
|
|
:serial t
|
|
:components ((:file "lisp/core-package")
|
|
(:file "lisp/core-skills")
|
|
(:file "lisp/core-transport")
|
|
(:file "lisp/core-memory")
|
|
(:file "lisp/core-perceive")
|
|
(:file "lisp/core-reason")
|
|
(:file "lisp/core-act")
|
|
(:file "lisp/core-pipeline")))
|
|
#+end_src
|
|
|
|
** Test System
|
|
|
|
Tests are embedded directly in each module's source file — see the `* Test Suite` section at the end of each `.org` file. No separate test system is needed.
|
|
|
|
** TUI System
|
|
|
|
The TUI is a standalone system that depends on cl-tty (pure CL terminal UI) in addition to the core system. It's loaded separately because it requires a terminal and is not needed for daemon-mode operation.
|
|
|
|
#+begin_src lisp
|
|
(defsystem :passepartout/tui
|
|
:depends-on (:passepartout :cl-tty :usocket :bordeaux-threads)
|
|
:serial t
|
|
:components ((:file "lisp/channel-tui-state")
|
|
(:file "lisp/channel-tui-view")
|
|
(:file "lisp/channel-tui-main")))
|
|
#+end_src
|