Effectful boundary for client runtimes: runs the plans built by hive-addon.runtime.plan and provisions an injected addon's runtimes.
Effects go through two injected ports: IRuntimeFs for files and an eval-fn
(fn [client commands]) for clients that are already running. local-fs is
the production filesystem; recording-fs records effects for tests and can
fail on demand. run-plan! never throws: it stops at the first failing
effect and reports the rest as skipped.
provisioner is the composition a host passes to hive-addon.mount/mount!
as :provision, and to teardown! as :deprovision.
Rationale lives in hive memory (KG-linked), not here.
Effectful boundary for client runtimes: runs the plans built by hive-addon.runtime.plan and provisions an injected addon's runtimes. Effects go through two injected ports: IRuntimeFs for files and an eval-fn (fn [client commands]) for clients that are already running. `local-fs` is the production filesystem; `recording-fs` records effects for tests and can fail on demand. `run-plan!` never throws: it stops at the first failing effect and reports the rest as skipped. `provisioner` is the composition a host passes to hive-addon.mount/mount! as :provision, and to teardown! as :deprovision. Rationale lives in hive memory (KG-linked), not here.
Pure planning for client runtimes: which directory a runtime installs into, the loader a client runs, and the effect plans that install it, remove it, and activate it in clients that are already running.
Every function here is pure. Paths are computed from an explicit :home, so nothing reads the environment; hive-addon.runtime.boundary runs the plans.
A client kind is data (a profile in default-profiles or one a host passes)
plus a loader kind. Rendering is open for extension through the
loader-source and live-commands multimethods, dispatched on the
profile's :profile/loader, so a new client adds methods rather than branches.
Rationale lives in hive memory (KG-linked), not here.
Pure planning for client runtimes: which directory a runtime installs into, the loader a client runs, and the effect plans that install it, remove it, and activate it in clients that are already running. Every function here is pure. Paths are computed from an explicit :home, so nothing reads the environment; hive-addon.runtime.boundary runs the plans. A client kind is data (a profile in `default-profiles` or one a host passes) plus a loader kind. Rendering is open for extension through the `loader-source` and `live-commands` multimethods, dispatched on the profile's :profile/loader, so a new client adds methods rather than branches. Rationale lives in hive memory (KG-linked), not here.
Value objects for CLIENT RUNTIMES: the editor-side code an addon ships (a Vim runtime directory, and later elisp) and what a host does to make a client load it when the addon is injected.
A RuntimeDecl is data an addon carries in its mount manifest under :addon/runtime, or that a host supplies for an addon that does not. A ClientProfile says where a client kind autoloads code from. An Effect is one step of a provisioning plan; plans are pure data run by hive-addon.runtime.boundary.
Rationale lives in hive memory (KG-linked), not here.
Value objects for CLIENT RUNTIMES: the editor-side code an addon ships (a Vim runtime directory, and later elisp) and what a host does to make a client load it when the addon is injected. A RuntimeDecl is data an addon carries in its mount manifest under :addon/runtime, or that a host supplies for an addon that does not. A ClientProfile says where a client kind autoloads code from. An Effect is one step of a provisioning plan; plans are pure data run by hive-addon.runtime.boundary. Rationale lives in hive memory (KG-linked), not here.
cljdoc builds & hosts documentation for Clojure/Script libraries
| Ctrl+k | Jump to recent docs |
| ← | Move to previous article |
| → | Move to next article |
| Ctrl+/ | Jump to the search field |