Files
deepseek-harness/vendor/loader
Yichen Jiang d5613da2cb refactor(boot): read a row failure's stage from the Loader's typed error
`stageOf` parsed the stage out of the Loader's `failed to <stage> loader
entry` message. The vendored wrapper is now an exported `EntryUpdateError`
carrying its `stage`, logged as a local modification, and the contained
group reads the field. `isJsDisabled` wrapped `isJsExpr` behind a literal
`disabled === true` comparison that already excluded expression nodes, so
it goes. The post-boot rejection guard, its documentation, and the
external-bundle module doc now say what they do: the process keeps running
with nothing stopped or attributed to a plugin, and a contained group lets
a failing row's siblings mount rather than failing the bundle as a whole.
2026-09-05 22:19:36 +08:00
..
…
…

@cordisjs/plugin-loader

Runtime plugin loader for Cordis. The loader owns an EntryTree, imports plugin modules by name, applies their config, and keeps the running plugin graph in sync with entry updates.

Usage

import { Context } from 'cordis'
import Loader from '@cordisjs/plugin-loader'

const root = new Context()
await root.plugin(Loader, { baseUrl: import.meta.url })

const id = await root.loader.create({
  name: './plugins/example',
  config: { enabled: true },
})

await root.loader.await()
root.loader.update(id, { config: { enabled: false } })

Entry Options

Field Description
id Stable id for resolving, updating, and removing the entry.
name Module specifier imported by the loader.
config Config passed to the plugin.
group Marks the entry as a group whose config is a child entry list.
disabled Stops the entry and prevents it from starting.
inject Adds required services or intercept config for this entry.

API

API Description
loader.create(options, parent?, position?) Add and start an entry.
loader.update(id, options, parent?, position?) Update, move, and restart an entry.
loader.remove(id) Stop and delete an entry.
loader.resolve(id) Resolve an entry by id, including nested a:b ids.
loader.resolveGroup(id) Resolve the root group or a nested group.
loader.await() Wait for pending entry imports and fiber reloads.
loader.locate(fiber?) Return the loader entry id that owns a fiber.

For file-backed trees, use @cordisjs/plugin-include.