Files
memex/notes/org-skill-environment-config.org

70 lines
2.5 KiB
Org Mode

:PROPERTIES:
:ID: 20afa98c-446d-437b-b388-b2616e7b4531
:CREATED: [2026-03-30 Mon 21:16]
:EDITED: [2026-04-07 Tue 13:42]
:END:
#+TITLE: SKILL: Environment Configuration Manager (Universal Literate Note)
#+STARTUP: content
#+FILETAGS: :system:config:sovereignty:psf:
* Overview
The *Environment Configuration Manager* is the source of truth for user preferences. It persists settings (like LLM Model Fleets) into the kernel's Object Store, allowing for dynamic runtime reconfiguration without environment variable bloat.
* Phase A: Demand (PRD)
:PROPERTIES:
:STATUS: SIGNED
:END:
** 1. Purpose
Provide a programmatic and literate interface for managing system-wide settings.
** 2. User Needs
- *Fleet Management:* Define preferred models for each LLM provider.
- *Persistence:* Ensure settings survive kernel restarts via the Object Store.
- *Transparency:* Allow the user to audit current settings via the REPL or Org tables.
* Phase B: Blueprint (PROTOCOL)
:PROPERTIES:
:STATUS: SIGNED
:END:
** 1. Architectural Intent
Define a standardized `CONFIG` object type in the Object Store. Provide getter/setter functions for the "LLM Fleet."
** 2. Semantic Interfaces
*** Fleet Configuration
#+begin_src lisp :tangle ../projects/org-skill-environment-config/src/config-logic.lisp
(in-package :org-agent)
(defun set-llm-model (provider model-id)
"Registers a preferred model for a provider in the Object Store."
(let ((config-id (format nil "config-llm-~a" (string-downcase (string provider)))))
(let ((obj (make-org-object
:id config-id
:type :CONFIG
:attributes `(:provider ,provider :model-id ,model-id)
:content (format nil "Fleet preference for ~a set to ~a" provider model-id)
:version (get-universal-time))))
(setf (gethash config-id *object-store*) obj)
(kernel-log "CONFIG - Fleet updated: ~a -> ~a" provider model-id)
t)))
(defun get-llm-model (provider &optional default)
"Retrieves the preferred model for a provider from the Object Store."
(let* ((config-id (format nil "config-llm-~a" (string-downcase (string provider))))
(obj (gethash config-id *object-store*)))
(if obj
(getf (org-object-attributes obj) :model-id)
default)))
#+end_src
* Registration
#+begin_src lisp
(defskill :skill-environment-config
:priority 100
:trigger (lambda (context) nil) ; Passive utility skill
:neuro (lambda (context) nil)
:symbolic (lambda (action context) action))
#+end_src