Files
memex/projects/org-skill-chat/src/chat-logic.lisp
Amr Gharbeia fdb55c616d feat: stabilized org-agent two-way communication and UX
- Fixed kernel-to-Emacs communication bridge.
- Resolved boot-time crashes in multiple skeletal skills.
- Refined Chat skill prompt to eliminate conversational filler.
- Updated Emacs UI to automatically clean up status markers.
- Synchronized all fixes via Literate Org-mode documents.
- Verified physical two-way interaction via simulation.
2026-04-03 17:25:01 -04:00

28 lines
1.4 KiB
Common Lisp

(defun trigger-skill-chat (context)
(let* ((payload (getf context :payload))
(sensor (getf payload :sensor)))
(eq sensor :chat-message)))
(defun verify-skill-chat (proposed-action context)
(if (and (eq (getf proposed-action :target) :emacs)
(eq (getf (getf proposed-action :payload) :action) :insert-at-end))
proposed-action
'(:target :emacs :action :message :text "Chat failed to format response.")))
(defun neuro-skill-chat (context)
"Generates a conversational response using the PSF Identity persona,
mandating an s-expression return format."
(let* ((payload (getf context :payload))
(text (getf payload :text))
(user (or (uiop:getenv "MEMEX_USER") "User"))
(assistant (or (uiop:getenv "MEMEX_ASSISTANT") "Passepartout")))
(ask-neuro text :system-prompt (format nil "You are ~a, the sovereign assistant to ~a.
Follow the PSF Org Mandate: speak in Org-mode subtrees.
Never use double asterisks for bold; use single asterisks.
CRITICAL INSTRUCTION:
You are communicating directly with a Common Lisp microkernel. You MUST return your response as a single, valid Common Lisp property list (plist). Do NOT return any markdown formatting, backticks, or plain text outside the plist.
Your response MUST exactly match this structure:
(:target :emacs :payload (:action :insert-at-end :buffer \"*org-agent-chat*\" :text \"<your org-mode response here>\"))" assistant user))))