forked from unom/punktfunk
The optional supervision layer (RFC §8): one service runs everything in <config_dir>/scripts/ plus installed punktfunk-plugin-* packages (<config_dir>/plugins/node_modules/), as Effect fibers. - Plugins (a definePlugin default export, either main shape) are SUPERVISED: a failure restarts them with capped exponential backoff (jittered, 1s→60s); a clean return completes them. The Effect shape runs under the PunktfunkHost layer; the async-fn shape gets a facade client whose close is scope-guaranteed. - Bare scripts are one-shot: importing them is the run, no restart (export a plugin to be supervised). - Shutdown is STRUCTURAL: SIGINT/SIGTERM interrupt the whole fiber tree, so Effect plugins' scoped finalizers run and clients close before exit — the systemctl-stop story, and the reason the Effect plugin shape exists at all. - The sshd rule applies to unit files (world-writable → refused loudly); cache-busted imports make restarts real; --list for inventory. 6 new bun tests (17 total green): discovery + refusal, both plugin shapes against a mock host, crash→restart with backoff, one-shot semantics, and finalizer-on-interrupt. Live-verified against a real host: a supervised watcher plugin received library.changed through the pinned tunnel, and SIGTERM shut the tree down structurally (exit 0). Deferred to the packaging follow-up (release.yml is in flight in a parallel session): the vendored-Bun deb/rpm/iss packages and the host-log-ring tee (needs a host ingest endpoint); console page rides the other console surfaces. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
32 lines
712 B
JSON
32 lines
712 B
JSON
{
|
|
"name": "@punktfunk/host",
|
|
"version": "0.1.0",
|
|
"description": "TypeScript SDK for the punktfunk streaming host: typed management-API client + lifecycle event stream, built on Effect.",
|
|
"type": "module",
|
|
"private": true,
|
|
"exports": {
|
|
".": "./src/index.ts",
|
|
"./effect": "./src/effect.ts"
|
|
},
|
|
"scripts": {
|
|
"gen": "orval --config ./orval.config.ts",
|
|
"typecheck": "tsc --noEmit",
|
|
"test": "bun test",
|
|
"runner": "bun src/runner-cli.ts"
|
|
},
|
|
"dependencies": {
|
|
"effect": "^3.19.0"
|
|
},
|
|
"devDependencies": {
|
|
"orval": "^8.20.0",
|
|
"typescript": "^5.9.3",
|
|
"@types/bun": "^1.3.0"
|
|
},
|
|
"optionalDependencies": {
|
|
"undici": "^7.0.0"
|
|
},
|
|
"bin": {
|
|
"punktfunk-scripting": "./src/runner-cli.ts"
|
|
}
|
|
}
|