@plurnk/plurnk-execs 0.4.1 → 0.4.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/SPEC.md +1 -1
  2. package/package.json +9 -1
package/SPEC.md CHANGED
@@ -131,7 +131,7 @@ interface SpawnArgs { cmd: string; args: string[]; useShell: boolean; }
131
131
 
132
132
  `resolveRuntime` never throws; consumers gate unknown runtimes with `isKnownRuntime` and return 501 before invoking.
133
133
 
134
- The framework wraps this in **`SubprocessExecutor extends BaseExecutor`** — declares `{ stdout, stderr }` channels and implements `run()` (spawn via `resolveRuntime`, stream into the channels, honor `signal`, `emit` `spawn_failed` on a failed start, return `{ status, exitCode }`). Subclasses with their own interpreter table override the **`protected spawnArgs(runtime, command) → SpawnArgs`** hook (default delegates to `resolveRuntime`) — and so inherit run()'s streaming + process-group abort handling. `SpawnArgs.stdin?` lets filter-style runtimes feed their program/input via stdin (`bc`, `tclsh`; or `""` for an `awk` BEGIN with EOF). On abort it kills the whole **process group** (`detached` spawn + `process.kill(-pid, …)`, SIGTERM→SIGKILL grace) so shell grandchildren can't leak (plurnk-execs#4). The `plurnk-execs-sh` / `-node` / `-python` siblings subclass it and differ only in their claimed `runtimes[]` tags and their `binary` getter (for `probe()`). `isKnownRuntime` / `KNOWN_RUNTIMES` are the legacy 501 gate; the discovery registry + `probe()` supersede them once a consumer wires the registry.
134
+ The framework wraps this in **`SubprocessExecutor extends BaseExecutor`** — declares `{ stdout, stderr }` channels and implements `run()` (spawn via `resolveRuntime`, stream into the channels, honor `signal`, `emit` `spawn_failed` on a failed start, return `{ status, exitCode }`). Subclasses with their own interpreter table override the **`protected spawnArgs(runtime, command) → SpawnArgs`** hook (default delegates to `resolveRuntime`) — and so inherit run()'s streaming + process-group abort handling. `SpawnArgs.stdin?` lets filter-style runtimes feed their program/input via stdin (`bc`, `tclsh`; or `""` for an `awk` BEGIN with EOF). On abort it kills the whole **process group** (`detached` spawn + `process.kill(-pid, …)`, SIGTERM→SIGKILL grace) so shell grandchildren can't leak (plurnk-execs#4). The `plurnk-execs-common` sibling subclasses it claiming the whole subprocess set (sh/bash/node/python plus detected host interpreters) via a recipe table behind a `spawnArgs()` / `probe()` override. `isKnownRuntime` / `KNOWN_RUNTIMES` are the legacy 501 gate; the discovery registry + `probe()` supersede them once a consumer wires the registry.
135
135
 
136
136
  ## §5 Consumer surface (plurnk-service)
137
137
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@plurnk/plurnk-execs",
3
- "version": "0.4.1",
3
+ "version": "0.4.2",
4
4
  "description": "Framework + contract for the @plurnk/plurnk-execs-* runtime executor family.",
5
5
  "keywords": ["plurnk", "exec", "runtime", "executor"],
6
6
  "homepage": "https://github.com/plurnk/plurnk-execs#readme",
@@ -40,6 +40,14 @@
40
40
  "build": "npm run build:dist",
41
41
  "prepare": "npm run build"
42
42
  },
43
+ "dependencies": {
44
+ "@plurnk/plurnk-execs-common": "0.2.1",
45
+ "@plurnk/plurnk-execs-search": "0.2.3",
46
+ "@plurnk/plurnk-execs-sqlite": "0.1.3",
47
+ "@plurnk/plurnk-execs-wasm": "0.1.2",
48
+ "@plurnk/plurnk-execs-git": "0.1.1",
49
+ "@plurnk/plurnk-execs-jq": "0.1.1"
50
+ },
43
51
  "devDependencies": {
44
52
  "@types/node": "^25.8.0",
45
53
  "typescript": "^6.0.3"