Way more than that if you count all the unpublished homebrew balls of glue.
I've been playing with writing my own lately. I just wrote a cool (IMHO) macro for defining tools, a defun-like form that at once generates both a callable Elisp function, and all the RPC pageantry needed for AI to call that function. From the same syntactic form.
The first tool I wrote was a function for retrieving source definitions of Elisp functions. Just enough to bootstrap the LLM harness into studying its own source code, reading one function's source and requesting new functions in turn, following the callgraph. It's neat to watch. It can dive into Emacs' internals too, since those are Elisp also.
Comments
Way more than that if you count all the unpublished homebrew balls of glue.
I've been playing with writing my own lately. I just wrote a cool (IMHO) macro for defining tools, a defun-like form that at once generates both a callable Elisp function, and all the RPC pageantry needed for AI to call that function. From the same syntactic form.
The first tool I wrote was a function for retrieving source definitions of Elisp functions. Just enough to bootstrap the LLM harness into studying its own source code, reading one function's source and requesting new functions in turn, following the callgraph. It's neat to watch. It can dive into Emacs' internals too, since those are Elisp also.
It's a fun project.