OpenShellOrg modular extension host — manifests, discovery, registration, and loading (PATH / Node) for shell extensions. This repository implements the reference host in TypeScript for CI and Node-based tooling; the Open Shell runtime is D (open-shell) and will consume the same manifest contract.
OpenShellOrg splits architecture from implementation:
| Repository | Role |
|---|---|
| shell-architecture | Canon — thesis, Tool Runs, command channels, Antora docs, diagrams |
| shell-framework (this repo) | Extension host — manifest schema, core registry, discovery, load + spawn APIs |
Do not duplicate architecture docs here. See docs/architecture-crosslinks.md for paired Antora pages.
| Component | Stack | npm publish? |
|---|---|---|
| This host | Node / pnpm | No — private: true; install from git or monorepo path |
| Extensions (Prohelp, …) | D + dub | dub / git, not npm — see docs/distribution-and-runtime.md |
The host resolves cli.binary on PATH (after you dub build upstream) or import() for optional Node extensions. It does not compile D.
schemas/— JSON Schema for manifestsmanifests/core/— pointers to first-party core extensions (no vendored source)src/— discovery, registry,loadExtension/runExtensionCli- Tests + CI — schema validation and loader behavior (Prohelp optional on PATH)
| Extension | Manifest | Upstream |
|---|---|---|
| Prohelp | manifests/core/prohelp.manifest.json |
prohelp · prohelp-cli |
pnpm install
pnpm build
pnpm testProgrammatic bootstrap:
import { bootstrapExtensionHost, runExtensionCli } from "@openshellorg/shell-framework";
const { host, loaded } = await bootstrapExtensionHost();
console.log(host.listCore());
const prohelp = loaded.find((e) => e.registered.id === "openshellorg/prohelp");
if (prohelp?.state === "resolved") {
await runExtensionCli(prohelp, { args: ["?"], timeoutMs: 5000 });
}See CONTRIBUTING.md and docs/extension-manifest.md.
- shell-architecture — canon docs
- prohelp — progressive CLI help (first core extension)
- docs — SOS certification and org docs site
MIT — see LICENSE.