#+TITLE: System Interface (package.lisp) #+AUTHOR: Amr #+FILETAGS: :kernel:interface: #+STARTUP: content * System Interface (package.lisp) The `package.lisp` file defines the public API of the `org-agent` kernel. It exports all necessary symbols for skills and actuators to interact with the core. #+begin_src lisp :tangle ../src/package.lisp (defpackage :org-agent (:use :cl) (:export ;; --- OACP Protocol --- #:frame-message #:parse-message #:make-hello-message ;; --- Daemon Lifecycle --- #:start-daemon #:stop-daemon #:kernel-log #:main ;; --- Object Store (CLOSOS) --- #:ingest-ast #:lookup-object #:list-objects-by-type #:*object-store* #: *history-store* #:org-object #:org-object-id #:org-object-type #:org-object-attributes #:org-object-parent-id #:org-object-children #:org-object-version #:org-object-last-sync #:org-object-vector #:org-object-content #:org-object-hash #:snapshot-object-store #:rollback-object-store #:send-swarm-packet ;; --- Context API (Peripheral Vision) --- #:context-query-store #:context-get-active-projects #:context-get-recent-completed-tasks #:context-list-all-skills #:context-get-skill-source #:context-get-system-logs #:context-filter-sparse-tree #:context-resolve-path #:context-get-skill-telemetry #:context-assemble-global-awareness ;; --- Reactive Signal Pipeline --- #:process-signal #:perceive-gate #:neuro-gate #:consensus-gate #:decide-gate #:dispatch-gate #:inject-stimulus #:dispatch-action #:register-actuator #:spawn-task ;; --- Skill Engine --- #:load-skill-from-org #:initialize-all-skills #:load-skill-with-timeout #:topological-sort-skills #:validate-lisp-syntax #:safety-harness-validate #:find-triggered-skill #:defskill #:*skills-registry* #:skill #:skill-name #:skill-priority #:skill-trigger-fn #:skill-neuro-prompt #:skill-symbolic-fn ;; --- Tool Registry --- #:def-cognitive-tool #:*cognitive-tools* #:cognitive-tool #:cognitive-tool-name #:cognitive-tool-description #:cognitive-tool-parameters #:cognitive-tool-guard #:cognitive-tool-body ;; --- Emacs Client Registry --- #:*emacs-clients* #:*clients-lock* #:register-emacs-client #:unregister-emacs-client ;; --- Neuro (System 1) --- #:ask-neuro #:register-neuro-backend #:register-auth-provider #:get-provider-auth #:distill-prompt #:get-embedding #:cosine-similarity #:find-most-similar #:openrouter-get-available-models #:*provider-cascade* #:token-accountant-route-task ;; --- Symbolic Logic --- #:list-objects-with-attribute #:org-id-new ;; --- AST Helpers --- #:find-headline-missing-id ;; --- Environment Config --- #:set-llm-model #:get-llm-model)) #+end_src ** Package Implementation #+begin_src lisp :tangle ../src/package.lisp (in-package :org-agent) #+end_src ** Kernel Logging State #+begin_src lisp :tangle ../src/package.lisp (defvar *system-logs* nil) (defvar *logs-lock* (bt:make-lock "kernel-logs-lock")) (defvar *max-log-history* 100) #+end_src ** Skills Registry #+begin_src lisp :tangle ../src/package.lisp (defvar *skills-registry* (make-hash-table :test 'equal) "Global registry of all loaded skills.") #+end_src ** Skill Telemetry State #+begin_src lisp :tangle ../src/package.lisp (defvar *skill-telemetry* (make-hash-table :test 'equal)) (defvar *telemetry-lock* (bt:make-lock "kernel-telemetry-lock")) #+end_src ** Cognitive Tool Registry #+begin_src lisp :tangle ../src/package.lisp (defvar *cognitive-tools* (make-hash-table :test 'equal)) (defstruct cognitive-tool name description parameters guard body) (defmacro def-cognitive-tool (name description parameters &key guard body) `(setf (gethash (string-downcase (string ',name)) *cognitive-tools*) (make-cognitive-tool :name (string-downcase (string ',name)) :description ,description :parameters ',parameters :guard ,guard :body ,body))) #+end_src ** Kernel Logging Implementation #+begin_src lisp :tangle ../src/package.lisp (defun kernel-log (msg &rest args) "Centralized logging for the kernel." (let ((formatted-msg (apply #'format nil msg args))) (bt:with-lock-held (*logs-lock*) (push formatted-msg *system-logs*) (when (> (length *system-logs*) *max-log-history*) (setq *system-logs* (subseq *system-logs* 0 *max-log-history*)))) (format t "~a~%" formatted-msg) (finish-output))) #+end_src