Skip to content

Plugin System #67

Description

@lenny99

It would be nice to have an extension system where I can easly share code, tools, skills in one package that don't really belong into Autolith itself. I am thinking of search providers like https://parallel.ai/.

My thoughts are that it should look like a plugin system where you can easily share a few lines to init.lisp that points to a git repository or local directory and autolith will scan the plugin configuration on startup and start installing these in the background. This should probably also work from the repl itself to try stuff out or let the agent figure stuff out while having some safeguard i.e. permission check for installing plugins.

(plugin-define "planning"
  :source "https://github.com/foobar/autolith-addon-planning"
  :ref '(:tag "v1.2.0")
  :config (lambda (plugin) ...))   ; runs after load

More spec keys: :entry, :deps, :local (dev checkout), :enabled, :build, :init, :deactivate, :on-failure. :ref also accepts :commit, :branch, :version.

A plugin itself would ideally be a simple git repository with a manifest that tells Autolith about itself and what features it offers.

;; autolith-plugin.sexp
(:name "planning"
 :entry "init.lisp"      ; or :system "autolith-addon-planning"
 :skills "skills/"
 :description "Planning tools and commands")

;; src/init.lisp -- runs in #:autolith
(define-application-command "/plan" ...)
(define-context-contributor "planner-advice" ...)

Ideally it should be responsive in the repl so it shows when its installing and what plugins are installed.

> (plugins)
  planning  v1.2.0  loaded  3 systems already locked
  vault     main    failed: could not load entry file

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

enhancementNew feature or requesthelp wantedExtra attention is needed

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions