@plurnk/plurnk-execs 0.4.15 β†’ 0.4.17

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.
package/SPEC.md CHANGED
@@ -103,7 +103,7 @@ The envelope is mirrored locally (`TelemetryEvent`, `ContentOffset`, `LogCoordin
103
103
  "plurnk": {
104
104
  "kind": "exec",
105
105
  "runtimes": [
106
- { "name": "search", "glyph": "πŸ”Ž", "example": "EXEC[search]:france population:EXEC", "documentation": "# search\n\n`!bang` / `:lang` ride the query…" },
106
+ { "name": "search", "glyph": "πŸ”Ž", "example": "<<EXEC[search]:france population:EXEC", "documentation": "# search\n\n`!bang` / `:lang` ride the query…" },
107
107
  { "name": "news", "glyph": "πŸ“°" }
108
108
  ]
109
109
  }
@@ -114,14 +114,64 @@ A package may claim multiple tags backed by one handler. Tags form a **flat glob
114
114
 
115
115
  Each entry's optional **`attribution`** is the package's raw `plurnk.attribution` (`string | string[]`) β€” credit a consumer unions onto the model call when the package's tags are active (plurnk-service#249). It's **package-level** (every tag of a package carries the same value) and surfaced **raw**: the consumer owns the reservation policy (e.g. `@plurnk/`-scoped attribution only from `@plurnk/`-scoped packages). `undefined` when the package omits it.
116
116
 
117
- Each entry's optional **`example`** is a one-line, self-documenting usage example (`EXEC[tag]:body:EXEC`), surfaced verbatim by the consumer in its `# Plurnk System Tools` capability sheet so the model learns the tag's syntax + purpose in one line instead of a separate prose description (plurnk-execs#7). Defaults to `""` when omitted. Kept to a single line on purpose β€” the sheet is hot-path and token-sensitive; the generic `(target)` slot is documented once at the op level, not repeated per tag.
117
+ Each entry's optional **`example`** is a one-line, self-documenting usage example surfaced **verbatim** by the consumer in its `# Plurnk System Tools` capability sheet so the model learns the tag's syntax + purpose in one line instead of a separate prose description (plurnk-execs#7). It MUST be the **complete canonical op, `<<`-delimited** β€” `<<EXEC[tag]:body:EXEC` (or `<<EXEC[tag](target):body:EXEC`) β€” because the consumer renders it verbatim into the sheet; an example missing the `<<` opener teaches the model a malformed op. Defaults to `""` when omitted. Kept to a single line on purpose β€” the sheet is hot-path and token-sensitive; the generic `(target)` slot is documented once at the op level, not repeated per tag.
118
118
 
119
119
  Each entry's optional **`documentation`** is full markdown β€” the flags, modes, and gotchas the one-liner can't carry. It is the depth a consumer can serve on demand, separate from the always-on `example` (progressive disclosure). The **source of truth is a `docs/<tag>.md` file** in the package (the docs convention; ship it via `files`), which `discover()` reads into `documentation`; the inline `documentation` manifest field is the fallback when no file ships. Defaults to `""`. The execs contract is the two fields; **how** the consumer surfaces them to the model β€” an in-context one-liner, the full doc fetched when the model wants it β€” is the consumer's (plurnk-service's) concern, not specified here.
120
120
 
121
+ ### Β§3.1 Dynamic runtimes (per-deployment tags)
122
+
123
+ A package whose tags are not known at publish time β€” the MCP bridge is the motivating case, where each tag is a per-deployment MCP **server** an operator configures in the environment (plurnk-execs#10) β€” declares **`plurnk.runtimesModule`** (a path, relative to the package dir) **instead of** a static `plurnk.runtimes[]`:
124
+
125
+ ```json
126
+ {
127
+ "name": "@plurnk/plurnk-execs-mcp",
128
+ "plurnk": { "kind": "exec", "runtimesModule": "./dist/runtimes.js" }
129
+ }
130
+ ```
131
+
132
+ The module's **`runtimes`** export (or its default export) is a hook `() => RuntimeDecl[] | Promise<RuntimeDecl[]>` returning the same decls a static manifest would (`{ name, glyph?, example?, documentation? }`). `discover()` imports and calls it at scan time and registers the result exactly as if the decls were static (a `docs/<tag>.md` file still wins over an inline `documentation`, though dynamic tags rarely ship one). The hook reads its own config from the environment β€” it must be cheap and **must not** depend on network reachability (that is `probe()`'s job, per server, at boot).
133
+
134
+ Two guarantees frame the hook:
135
+
136
+ - **Trust-gated execution.** The hook is imported **only for trusted packages** β€” the `PLURNK_PLUGINS_TRUSTED_ONLY` gate (below) runs *before* the import, so an untrusted package's code is never executed. This is the same in-process-trust posture executors already carry (their `run()` is trusted host code); dynamic discovery just extends it to scan time.
137
+ - **Fail-hard on a broken hook.** An unloadable module, a missing/non-function export, or a non-array return is a **contract violation by a trusted package** (its own packaging or config) and throws with the cause attached β€” surfaced, not swallowed. This is deliberately stricter than a malformed third-party `package.json`, which `discover()` silently skips: a package that *declares* a hook owns making it work.
138
+
139
+ `runtimes[]` and `runtimesModule` are mutually exclusive; if both are present the **static array wins** and the hook is never loaded.
140
+
121
141
  **Trust gate.** `discover()` honors the host's **`PLURNK_PLUGINS_TRUSTED_ONLY`** env var (plurnk-service#229) β€” the one posture decided once and enforced across every scope-agnostic discovery surface (schemes/mimetypes/providers/execs). Unset/`""`/`0` β†’ off: every installed package registers (no regression). Any value β†’ on: `@plurnk/*` is always trusted, plus a comma-separated allowlist of additionally-trusted package names (`1` = on with zero third-party). An untrusted package is **discovered but not registered** β€” never a crash β€” and returned in **`Discovery.skipped`** (package names) so the consumer can emit a telemetry note (`discover()` has no sink of its own). The policy mirrors plurnk-service's `PluginTrust.isTrusted`; it's duplicated, not shared, since it can't cross the package boundary.
122
142
 
123
143
  Each runtime package's **default export** is its `BaseExecutor` subclass (also a named export β€” `export { default as Sh }` / `export { default }`); the consumer instantiates it per matched tag with the tag + glyph from the registry.
124
144
 
145
+ ### Β§3.2 Activation (Active / Available)
146
+
147
+ Discovery answers *what is installed/configured*; **activation** answers *what is offered to the model right now*. They are distinct axes and must not be conflated β€” `discover()` stays static truth, activation is a runtime overlay the consumer owns on top of it (plurnk-execs#10). This generalizes across the **shared exec/scheme namespace**: a registered capability is a tag claimed once that is both `EXEC[tag]` and `tag://`, and activation operates on it whichever family it came from. MCP is not a category here β€” it is one *route* for registering a capability (alongside package discovery and env), so its tags activate by the same rules as any other.
148
+
149
+ **Two states, no third.** A registered capability is **Active** (in the `# Plurnk System Tools` sheet, dispatchable) or **Available** (registered, inert). "Disabled" is the *verb* (Active→Available), not a state. The consumer's capability sheet surfaces two buckets:
150
+
151
+ - **Tools Active** β€” the full one-line `example` each (the hot-path teaching cost).
152
+ - **Tools Available** β€” name + glyph + `attribution` each (a word, not a line).
153
+
154
+ This split *is* the progressive disclosure that bounds the sheet: N available servers cost N words, not N lines.
155
+
156
+ **Default-activation rule** (the consumer applies it; execs supplies the signals β€” `packageName` scope, source route, `attribution`):
157
+
158
+ | Source route | Trust | Default |
159
+ |---|---|---|
160
+ | Installed package (boot discovery) | first-party (`@plurnk/*`) | **Active** |
161
+ | Installed package (boot discovery) | third-party | **Available** |
162
+ | Env-declared (e.g. `PLURNK_MCP_<server>`, model-alias style) | β€” | **Available** |
163
+ | Runtime hotload (`/mcp`, gated β€” below) | β€” | **Active** on add |
164
+
165
+ The principle: *Active = the operator unambiguously committed this capability ON* (installed a first-party package; explicitly hotloaded). Configuring connection details (env) or installing a third-party package is the lighter act β†’ Available, opt-in. Mirrors `PLURNK_MODEL_*` β€” declare many aliases, activate a subset.
166
+
167
+ **Reachability is orthogonal.** Whether a capability is Active/Available (activation) is independent of whether it is reachable/unreachable (the Β§2.2 `probe()` health flag). A configured MCP server that is down is *Available but unreachable*. Do not overload "available" across the two axes.
168
+
169
+ **Capability vs substrate.** enable/disable targets **capability** tags only (execs and executor-backed schemes). Core **substrate** schemes (`file://`, the addressing/ops ground) are always-active and never toggleable β€” `/disable file` must not be able to brick the address space. For an executor-backed scheme, `disable` gates *new production*; existing `tag://` entries stay READable (reads are pure).
170
+
171
+ **Security β€” one gate, on introduction not activation.** `enable` / `disable` are **not** trust-gated: a client (and the model itself) may freely activate any *registered* capability. This is safe because the registered set is operator-bounded β€” only env-declared or package-installed capabilities exist β€” *unless* the single daemon gate **`PLURNK_MCP_INSTALL`** (default off) opens the runtime-hotload route, permitting *arbitrary* tooling to be **added**. Gate the introduction of capabilities, never their activation. The trust gate (Β§3) still bounds *registration*; activation rides on top of an already-trusted set.
172
+
173
+ Execs owns none of the overlay machinery β€” the live Active/Available state, the `/enable` `/disable` `/mcp` commands, and the gate enforcement are the consumer's (plurnk-service#240). Execs' contribution is the static signals above and (for the hotload route) an MCP executor that accepts a runtime-injected server config and re-checks `PLURNK_MCP_INSTALL` at its connect path (defense in depth).
174
+
125
175
  ## Β§4 Subprocess helper (legacy path)
126
176
 
127
177
  `resolveRuntime(runtime, command) β†’ SpawnArgs` and `isKnownRuntime(runtime)` / `KNOWN_RUNTIMES` translate a subprocess runtime tag into `node:child_process.spawn` arguments:
@@ -1 +1 @@
1
- {"version":3,"file":"discover.d.ts","sourceRoot":"","sources":["../src/discover.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,eAAe,EAAY,MAAM,YAAY,CAAC;AAgCvE,wBAAsB,QAAQ,CAAC,OAAO,GAAE,eAAoB,GAAG,OAAO,CAAC,SAAS,CAAC,CA0BhF"}
1
+ {"version":3,"file":"discover.d.ts","sourceRoot":"","sources":["../src/discover.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,eAAe,EAAyB,MAAM,YAAY,CAAC;AAwCpF,wBAAsB,QAAQ,CAAC,OAAO,GAAE,eAAoB,GAAG,OAAO,CAAC,SAAS,CAAC,CA8BhF"}
package/dist/discover.js CHANGED
@@ -1,5 +1,14 @@
1
+ var __rewriteRelativeImportExtension = (this && this.__rewriteRelativeImportExtension) || function (path, preserveJsx) {
2
+ if (typeof path === "string" && /^\.\.?\//.test(path)) {
3
+ return path.replace(/\.(tsx)$|((?:\.d)?)((?:\.[^./]+?)?)\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {
4
+ return tsx ? preserveJsx ? ".jsx" : ".js" : d && (!ext || !cm) ? m : (d + ext + "." + cm.toLowerCase() + "js");
5
+ });
6
+ }
7
+ return path;
8
+ };
1
9
  import fs from "node:fs/promises";
2
10
  import path from "node:path";
11
+ import { pathToFileURL } from "node:url";
3
12
  // Scan installed executor packages and build the runtime-tag registry the
4
13
  // consuming scheme dispatches on. Parallel to plurnk-mimetypes' discover().
5
14
  //
@@ -14,9 +23,17 @@ import path from "node:path";
14
23
  // consumer to note. Off by default β€” no regression.
15
24
  //
16
25
  // A package is recognized as an executor when its `package.json` declares
17
- // `plurnk.kind === "exec"` and exposes one or more runtime tags via
18
- // `plurnk.runtimes: { name, glyph?, example?, documentation? }[]` (SPEC Β§3).
19
- // Each entry registers its tag separately; one package can claim many tags
26
+ // `plurnk.kind === "exec"` and exposes one or more runtime tags. Tags come from
27
+ // one of two sources (SPEC Β§3):
28
+ // - STATIC: `plurnk.runtimes: { name, glyph?, example?, documentation? }[]` β€”
29
+ // the tags are known at publish time (sh, search, sqlite, …).
30
+ // - DYNAMIC: `plurnk.runtimesModule: "<rel-path>"` β€” for a package whose tags
31
+ // are per-deployment (the MCP bridge: one tag per configured server). The
32
+ // module's `runtimes` (or default) export is a hook discover() imports and
33
+ // calls at scan time to materialize the decls. Executed only for TRUSTED
34
+ // packages β€” the trust gate runs first, so an untrusted package's hook is
35
+ // never imported (plurnk-execs#10). A declared-but-broken hook is fail-hard.
36
+ // Each decl registers its tag separately; one package can claim many tags
20
37
  // backed by the same handler (e.g. the search sibling claims `search`, `news`,
21
38
  // `images`, …). `example` is a one-line self-documenting usage example
22
39
  // (plurnk-execs#7); `documentation` is the fuller markdown a consumer can serve
@@ -35,14 +52,19 @@ export async function discover(options = {}) {
35
52
  const registry = new Map();
36
53
  const skipped = new Set();
37
54
  for (const dir of dirs) {
38
- for (const info of await readExecInfos(dir)) {
39
- // Host plugin-trust gate (plurnk-service#229): an untrusted
40
- // third-party package is discovered but not registered β€” recorded
41
- // for the consumer's telemetry note, never crashed on.
42
- if (!isTrusted(info.packageName)) {
43
- skipped.add(info.packageName);
44
- continue;
45
- }
55
+ const manifest = await readExecManifest(dir);
56
+ if (manifest === null)
57
+ continue; // not an exec package
58
+ // Host plugin-trust gate (plurnk-service#229), enforced BEFORE any tag
59
+ // is read or β€” critically β€” any dynamic runtimes hook is imported: an
60
+ // untrusted third-party package is discovered but not registered, and
61
+ // its code is never executed. Recorded for the consumer's telemetry
62
+ // note, never crashed on.
63
+ if (!isTrusted(manifest.packageName)) {
64
+ skipped.add(manifest.packageName);
65
+ continue;
66
+ }
67
+ for (const info of await readExecInfos(dir, manifest)) {
46
68
  const existing = registry.get(info.runtime);
47
69
  if (existing !== undefined) {
48
70
  throw new Error(`exec runtime collision: '${info.runtime}' claimed by both `
@@ -104,45 +126,48 @@ async function defaultPackageDirs(cwd) {
104
126
  }
105
127
  return dirs;
106
128
  }
107
- // Produce one ExecInfo per declared runtime tag. Returns [] for non-executor
108
- // packages or invalid declarations.
109
- async function readExecInfos(dir) {
110
- const pkgPath = path.join(dir, "package.json");
129
+ // Read a package's `package.json` and return its manifest iff it declares
130
+ // `plurnk.kind === "exec"`. Returns null for non-executor packages, a missing
131
+ // or malformed `package.json` β€” discover() silently skips those (they are not
132
+ // "skipped by trust", just not exec packages).
133
+ async function readExecManifest(dir) {
111
134
  let raw;
112
135
  try {
113
- raw = await fs.readFile(pkgPath, "utf-8");
136
+ raw = await fs.readFile(path.join(dir, "package.json"), "utf-8");
114
137
  }
115
138
  catch {
116
- return [];
139
+ return null;
117
140
  }
118
141
  let pkg;
119
142
  try {
120
143
  pkg = JSON.parse(raw);
121
144
  }
122
145
  catch {
123
- return [];
146
+ return null;
124
147
  }
125
148
  if (typeof pkg !== "object" || pkg === null)
126
- return [];
149
+ return null;
127
150
  const record = pkg;
128
151
  const plurnk = record.plurnk;
129
152
  if (typeof plurnk !== "object" || plurnk === null)
130
- return [];
153
+ return null;
131
154
  const plurnkRec = plurnk;
132
155
  if (plurnkRec.kind !== "exec")
133
- return [];
134
- if (!Array.isArray(plurnkRec.runtimes))
135
- return [];
136
- const packageName = typeof record.name === "string" ? record.name : "";
156
+ return null;
157
+ return { packageName: typeof record.name === "string" ? record.name : "", plurnk: plurnkRec };
158
+ }
159
+ // Produce one ExecInfo per declared runtime tag β€” static `plurnk.runtimes[]` or
160
+ // a dynamic `plurnk.runtimesModule` hook. Returns [] when neither is declared.
161
+ async function readExecInfos(dir, { packageName, plurnk }) {
137
162
  // Package-level attribution, surfaced raw (plurnk-service#249); every tag of
138
163
  // the package carries the same value. The consumer owns the policy.
139
- const rawAttr = plurnkRec.attribution;
164
+ const rawAttr = plurnk.attribution;
140
165
  const attribution = typeof rawAttr === "string" || Array.isArray(rawAttr) ? rawAttr : undefined;
141
166
  const infos = [];
142
- for (const entry of plurnkRec.runtimes) {
143
- if (typeof entry !== "object" || entry === null)
167
+ for (const decl of await runtimeDecls(dir, packageName, plurnk)) {
168
+ if (typeof decl !== "object" || decl === null)
144
169
  continue;
145
- const e = entry;
170
+ const e = decl;
146
171
  if (typeof e.name !== "string" || e.name === "")
147
172
  continue;
148
173
  // `docs/<tag>.md` is the documentation source of truth (the docs
@@ -160,6 +185,48 @@ async function readExecInfos(dir) {
160
185
  }
161
186
  return infos;
162
187
  }
188
+ // Resolve a package's runtime decls. Static `plurnk.runtimes[]` is the common
189
+ // case; `plurnk.runtimesModule` (a relative path) is the dynamic hook for
190
+ // per-deployment tags. Static wins if both are declared. Returns [] when
191
+ // neither is present.
192
+ async function runtimeDecls(dir, packageName, plurnk) {
193
+ if (Array.isArray(plurnk.runtimes))
194
+ return plurnk.runtimes;
195
+ const mod = plurnk.runtimesModule;
196
+ if (typeof mod === "string" && mod !== "")
197
+ return loadDynamicRuntimes(dir, packageName, mod);
198
+ return [];
199
+ }
200
+ // Import a trusted package's runtimes hook and call it. Fail-hard on every
201
+ // failure β€” an unloadable module, a missing/non-function export, or a
202
+ // non-array return is a contract violation by a trusted package (its own
203
+ // packaging or config), surfaced with the cause, never swallowed. The trust
204
+ // gate in discover() guarantees this only runs for trusted packages.
205
+ async function loadDynamicRuntimes(dir, packageName, rel) {
206
+ const href = pathToFileURL(path.join(dir, rel)).href;
207
+ let mod;
208
+ try {
209
+ mod = await import(__rewriteRelativeImportExtension(href));
210
+ }
211
+ catch (cause) {
212
+ throw new Error(`exec runtimes hook unloadable: ${packageName} -> ${rel}`, { cause });
213
+ }
214
+ const hook = mod.runtimes ?? mod.default;
215
+ if (typeof hook !== "function") {
216
+ throw new Error(`exec runtimes hook invalid: ${packageName} -> ${rel} must export 'runtimes' (or default) as a function`);
217
+ }
218
+ let decls;
219
+ try {
220
+ decls = await hook();
221
+ }
222
+ catch (cause) {
223
+ throw new Error(`exec runtimes hook threw: ${packageName} -> ${rel}`, { cause });
224
+ }
225
+ if (!Array.isArray(decls)) {
226
+ throw new Error(`exec runtimes hook returned a non-array: ${packageName} -> ${rel}`);
227
+ }
228
+ return decls;
229
+ }
163
230
  // A tag's documentation file under the package's `docs/` folder β€” the docs
164
231
  // convention's source of truth. Returns null when the package ships none.
165
232
  async function readDocFile(dir, tag) {
@@ -1 +1 @@
1
- {"version":3,"file":"discover.js","sourceRoot":"","sources":["../src/discover.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"discover.js","sourceRoot":"","sources":["../src/discover.ts"],"names":[],"mappings":";;;;;;;;AAAA,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAGzC,0EAA0E;AAC1E,4EAA4E;AAC5E,EAAE;AACF,4EAA4E;AAC5E,6EAA6E;AAC7E,yEAAyE;AACzE,+BAA+B;AAC/B,EAAE;AACF,6EAA6E;AAC7E,gFAAgF;AAChF,yEAAyE;AACzE,oDAAoD;AACpD,EAAE;AACF,0EAA0E;AAC1E,gFAAgF;AAChF,gCAAgC;AAChC,gFAAgF;AAChF,kEAAkE;AAClE,gFAAgF;AAChF,8EAA8E;AAC9E,+EAA+E;AAC/E,6EAA6E;AAC7E,8EAA8E;AAC9E,iFAAiF;AACjF,0EAA0E;AAC1E,+EAA+E;AAC/E,uEAAuE;AACvE,gFAAgF;AAChF,2EAA2E;AAC3E,0EAA0E;AAC1E,gFAAgF;AAChF,2EAA2E;AAC3E,wBAAwB;AACxB,EAAE;AACF,yEAAyE;AACzE,yEAAyE;AACzE,2EAA2E;AAC3E,iCAAiC;AACjC,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,UAA2B,EAAE;IACxD,MAAM,IAAI,GAAG,OAAO,CAAC,WAAW,IAAI,MAAM,kBAAkB,CAAC,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IAE3F,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAoB,CAAC;IAC7C,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;IAClC,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACrB,MAAM,QAAQ,GAAG,MAAM,gBAAgB,CAAC,GAAG,CAAC,CAAC;QAC7C,IAAI,QAAQ,KAAK,IAAI;YAAE,SAAS,CAAC,sBAAsB;QACvD,uEAAuE;QACvE,sEAAsE;QACtE,sEAAsE;QACtE,oEAAoE;QACpE,0BAA0B;QAC1B,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;YACnC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;YAClC,SAAS;QACb,CAAC;QACD,KAAK,MAAM,IAAI,IAAI,MAAM,aAAa,CAAC,GAAG,EAAE,QAAQ,CAAC,EAAE,CAAC;YACpD,MAAM,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAC5C,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;gBACzB,MAAM,IAAI,KAAK,CACX,4BAA4B,IAAI,CAAC,OAAO,oBAAoB;sBAC1D,GAAG,QAAQ,CAAC,WAAW,QAAQ,IAAI,CAAC,WAAW,EAAE,CACtD,CAAC;YACN,CAAC;YACD,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QACrC,CAAC;IACL,CAAC;IAED,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;AACtD,CAAC;AAED,+EAA+E;AAC/E,6EAA6E;AAC7E,gFAAgF;AAChF,yEAAyE;AACzE,2BAA2B;AAC3B,6EAA6E;AAC7E,+EAA+E;AAC/E,6EAA6E;AAC7E,iFAAiF;AACjF,SAAS,SAAS,CAAC,WAAmB;IAClC,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC;IACrD,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,EAAE,IAAI,IAAI,KAAK,GAAG;QAAE,OAAO,IAAI,CAAC;IACnE,IAAI,WAAW,CAAC,UAAU,CAAC,UAAU,CAAC;QAAE,OAAO,IAAI,CAAC;IACpD,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;AACtE,CAAC;AAED,2EAA2E;AAC3E,gFAAgF;AAChF,gFAAgF;AAChF,iFAAiF;AACjF,kDAAkD;AAClD,KAAK,UAAU,kBAAkB,CAAC,GAAW;IACzC,MAAM,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;IAC1C,IAAI,OAAmD,CAAC;IACxD,IAAI,CAAC;QACD,OAAO,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;IAC5D,CAAC;IAAC,MAAM,CAAC;QACL,OAAO,EAAE,CAAC;IACd,CAAC;IACD,MAAM,IAAI,GAAa,EAAE,CAAC;IAC1B,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC1B,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ;YAAE,SAAS;QACvF,IAAI,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YAC7B,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;YAC3C,IAAI,CAAC;gBACD,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;gBACnE,KAAK,MAAM,CAAC,IAAI,MAAM;oBAAE,IAAI,CAAC,CAAC,WAAW,EAAE;wBAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;YACxF,CAAC;YAAC,MAAM,CAAC,CAAC,iCAAiC,CAAC,CAAC;QACjD,CAAC;aAAM,CAAC;YACJ,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;QACzC,CAAC;IACL,CAAC;IACD,OAAO,IAAI,CAAC;AAChB,CAAC;AASD,0EAA0E;AAC1E,8EAA8E;AAC9E,8EAA8E;AAC9E,+CAA+C;AAC/C,KAAK,UAAU,gBAAgB,CAAC,GAAW;IACvC,IAAI,GAAW,CAAC;IAChB,IAAI,CAAC;QACD,GAAG,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,cAAc,CAAC,EAAE,OAAO,CAAC,CAAC;IACrE,CAAC;IAAC,MAAM,CAAC;QACL,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,IAAI,GAAY,CAAC;IACjB,IAAI,CAAC;QACD,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC1B,CAAC;IAAC,MAAM,CAAC;QACL,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IACzD,MAAM,MAAM,GAAG,GAA8B,CAAC;IAC9C,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;IAC7B,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAC/D,MAAM,SAAS,GAAG,MAAiC,CAAC;IACpD,IAAI,SAAS,CAAC,IAAI,KAAK,MAAM;QAAE,OAAO,IAAI,CAAC;IAE3C,OAAO,EAAE,WAAW,EAAE,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;AAClG,CAAC;AAED,gFAAgF;AAChF,+EAA+E;AAC/E,KAAK,UAAU,aAAa,CAAC,GAAW,EAAE,EAAE,WAAW,EAAE,MAAM,EAAgB;IAC3E,6EAA6E;IAC7E,oEAAoE;IACpE,MAAM,OAAO,GAAG,MAAM,CAAC,WAAW,CAAC;IACnC,MAAM,WAAW,GAAG,OAAO,OAAO,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAA4B,CAAC,CAAC,CAAC,SAAS,CAAC;IAErH,MAAM,KAAK,GAAe,EAAE,CAAC;IAC7B,KAAK,MAAM,IAAI,IAAI,MAAM,YAAY,CAAC,GAAG,EAAE,WAAW,EAAE,MAAM,CAAC,EAAE,CAAC;QAC9D,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI;YAAE,SAAS;QACxD,MAAM,CAAC,GAAG,IAA+B,CAAC;QAC1C,IAAI,OAAO,CAAC,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,CAAC,IAAI,KAAK,EAAE;YAAE,SAAS;QAC1D,iEAAiE;QACjE,iEAAiE;QACjE,MAAM,SAAS,GAAG,OAAO,CAAC,CAAC,aAAa,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7E,MAAM,aAAa,GAAG,MAAM,WAAW,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,SAAS,CAAC;QAClE,KAAK,CAAC,IAAI,CAAC;YACP,OAAO,EAAE,CAAC,CAAC,IAAI;YACf,KAAK,EAAE,OAAO,CAAC,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;YACjD,OAAO,EAAE,OAAO,CAAC,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;YACvD,aAAa;YACb,WAAW;YACX,GAAG,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACxD,CAAC,CAAC;IACP,CAAC;IAED,OAAO,KAAK,CAAC;AACjB,CAAC;AAED,8EAA8E;AAC9E,0EAA0E;AAC1E,yEAAyE;AACzE,sBAAsB;AACtB,KAAK,UAAU,YAAY,CAAC,GAAW,EAAE,WAAmB,EAAE,MAA+B;IACzF,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC;QAAE,OAAO,MAAM,CAAC,QAAQ,CAAC;IAC3D,MAAM,GAAG,GAAG,MAAM,CAAC,cAAc,CAAC;IAClC,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,EAAE;QAAE,OAAO,mBAAmB,CAAC,GAAG,EAAE,WAAW,EAAE,GAAG,CAAC,CAAC;IAC7F,OAAO,EAAE,CAAC;AACd,CAAC;AAED,2EAA2E;AAC3E,sEAAsE;AACtE,yEAAyE;AACzE,4EAA4E;AAC5E,qEAAqE;AACrE,KAAK,UAAU,mBAAmB,CAAC,GAAW,EAAE,WAAmB,EAAE,GAAW;IAC5E,MAAM,IAAI,GAAG,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;IACrD,IAAI,GAA4B,CAAC;IACjC,IAAI,CAAC;QACD,GAAG,GAAG,MAAM,MAAM,kCAAC,IAAI,EAAC,CAAC;IAC7B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,kCAAkC,WAAW,OAAO,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;IAC1F,CAAC;IACD,MAAM,IAAI,GAAG,GAAG,CAAC,QAAQ,IAAI,GAAG,CAAC,OAAO,CAAC;IACzC,IAAI,OAAO,IAAI,KAAK,UAAU,EAAE,CAAC;QAC7B,MAAM,IAAI,KAAK,CAAC,+BAA+B,WAAW,OAAO,GAAG,oDAAoD,CAAC,CAAC;IAC9H,CAAC;IACD,IAAI,KAAc,CAAC;IACnB,IAAI,CAAC;QACD,KAAK,GAAG,MAAO,IAAsB,EAAE,CAAC;IAC5C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,6BAA6B,WAAW,OAAO,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;IACrF,CAAC;IACD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACxB,MAAM,IAAI,KAAK,CAAC,4CAA4C,WAAW,OAAO,GAAG,EAAE,CAAC,CAAC;IACzF,CAAC;IACD,OAAO,KAAsB,CAAC;AAClC,CAAC;AAED,2EAA2E;AAC3E,0EAA0E;AAC1E,KAAK,UAAU,WAAW,CAAC,GAAW,EAAE,GAAW;IAC/C,IAAI,CAAC;QACD,OAAO,MAAM,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,GAAG,KAAK,CAAC,EAAE,OAAO,CAAC,CAAC;IAC3E,CAAC;IAAC,MAAM,CAAC;QACL,OAAO,IAAI,CAAC;IAChB,CAAC;AACL,CAAC"}
package/dist/index.d.ts CHANGED
@@ -2,6 +2,6 @@ export { default as BaseExecutor } from "./BaseExecutor.ts";
2
2
  export { default as SubprocessExecutor } from "./SubprocessExecutor.ts";
3
3
  export { discover } from "./discover.ts";
4
4
  export { KNOWN_RUNTIMES, isKnownRuntime, resolveRuntime } from "./runtime.ts";
5
- export type { ChannelState, ChannelDecl, ExecutorMetadata, ExecArgs, ExecResult, Effect, RuntimeAvailability, ExecInfo, ExecRegistry, Discovery, DiscoverOptions, SpawnArgs, RuntimeResolver, } from "./types.ts";
5
+ export type { ChannelState, ChannelDecl, ExecutorMetadata, ExecArgs, ExecResult, Effect, RuntimeAvailability, RuntimeDecl, RuntimesHook, ExecInfo, ExecRegistry, Discovery, DiscoverOptions, SpawnArgs, RuntimeResolver, } from "./types.ts";
6
6
  export type { TelemetryEvent, ContentOffset, LogCoordinate } from "./TelemetryEvent.ts";
7
7
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AACxE,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAGzC,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAG9E,YAAY,EACR,YAAY,EACZ,WAAW,EACX,gBAAgB,EAChB,QAAQ,EACR,UAAU,EACV,MAAM,EACN,mBAAmB,EACnB,QAAQ,EACR,YAAY,EACZ,SAAS,EACT,eAAe,EACf,SAAS,EACT,eAAe,GAClB,MAAM,YAAY,CAAC;AAGpB,YAAY,EAAE,cAAc,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AACxE,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAGzC,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAG9E,YAAY,EACR,YAAY,EACZ,WAAW,EACX,gBAAgB,EAChB,QAAQ,EACR,UAAU,EACV,MAAM,EACN,mBAAmB,EACnB,WAAW,EACX,YAAY,EACZ,QAAQ,EACR,YAAY,EACZ,SAAS,EACT,eAAe,EACf,SAAS,EACT,eAAe,GAClB,MAAM,YAAY,CAAC;AAGpB,YAAY,EAAE,cAAc,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC"}
package/dist/types.d.ts CHANGED
@@ -35,6 +35,13 @@ export interface ExecInfo {
35
35
  packageName: string;
36
36
  attribution?: string | string[];
37
37
  }
38
+ export interface RuntimeDecl {
39
+ name: string;
40
+ glyph?: string;
41
+ example?: string;
42
+ documentation?: string;
43
+ }
44
+ export type RuntimesHook = () => RuntimeDecl[] | Promise<RuntimeDecl[]>;
38
45
  export type ExecRegistry = ReadonlyMap<string, ExecInfo>;
39
46
  export interface Discovery {
40
47
  registry: ExecRegistry;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAI1D,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAAC;AAM3D,MAAM,WAAW,WAAW;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,YAAY,CAAC;CAC/B;AAKD,MAAM,WAAW,gBAAgB;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;CACjB;AAOD,MAAM,WAAW,QAAQ;IAGrB,OAAO,EAAE,MAAM,CAAC;IAEhB,OAAO,EAAE,MAAM,CAAC;IAGhB,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IAMnB,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IAExB,MAAM,EAAE,WAAW,CAAC;IASpB,KAAK,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAEnE,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,KAAK,IAAI,CAAC;IAGzD,IAAI,EAAE,CAAC,KAAK,EAAE,cAAc,KAAK,IAAI,CAAC;CACzC;AAKD,MAAM,WAAW,UAAU;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;CACrB;AAQD,MAAM,MAAM,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;AAO9C,MAAM,WAAW,mBAAmB;IAChC,SAAS,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;CACnB;AAGD,MAAM,WAAW,QAAQ;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IAOd,OAAO,EAAE,MAAM,CAAC;IAMhB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IAOpB,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;CACnC;AAID,MAAM,MAAM,YAAY,GAAG,WAAW,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;AAEzD,MAAM,WAAW,SAAS;IACtB,QAAQ,EAAE,YAAY,CAAC;IAKvB,OAAO,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,MAAM,WAAW,eAAe;IAG5B,GAAG,CAAC,EAAE,MAAM,CAAC;IAGb,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;CAC1B;AAID,MAAM,WAAW,SAAS;IACtB,wFAAwF;IACxF,GAAG,EAAE,MAAM,CAAC;IACZ,kCAAkC;IAClC,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,mGAAmG;IACnG,QAAQ,EAAE,OAAO,CAAC;IAClB;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,eAAe,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,SAAS,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAI1D,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAAC;AAM3D,MAAM,WAAW,WAAW;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,YAAY,CAAC;CAC/B;AAKD,MAAM,WAAW,gBAAgB;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;CACjB;AAOD,MAAM,WAAW,QAAQ;IAGrB,OAAO,EAAE,MAAM,CAAC;IAEhB,OAAO,EAAE,MAAM,CAAC;IAGhB,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IAMnB,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IAExB,MAAM,EAAE,WAAW,CAAC;IASpB,KAAK,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAEnE,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,KAAK,IAAI,CAAC;IAGzD,IAAI,EAAE,CAAC,KAAK,EAAE,cAAc,KAAK,IAAI,CAAC;CACzC;AAKD,MAAM,WAAW,UAAU;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;CACrB;AAQD,MAAM,MAAM,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;AAO9C,MAAM,WAAW,mBAAmB;IAChC,SAAS,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;CACnB;AAGD,MAAM,WAAW,QAAQ;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IAOd,OAAO,EAAE,MAAM,CAAC;IAMhB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IAOpB,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;CACnC;AAOD,MAAM,WAAW,WAAW;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;CAC1B;AAaD,MAAM,MAAM,YAAY,GAAG,MAAM,WAAW,EAAE,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;AAIxE,MAAM,MAAM,YAAY,GAAG,WAAW,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;AAEzD,MAAM,WAAW,SAAS;IACtB,QAAQ,EAAE,YAAY,CAAC;IAKvB,OAAO,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,MAAM,WAAW,eAAe;IAG5B,GAAG,CAAC,EAAE,MAAM,CAAC;IAGb,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;CAC1B;AAID,MAAM,WAAW,SAAS;IACtB,wFAAwF;IACxF,GAAG,EAAE,MAAM,CAAC;IACZ,kCAAkC;IAClC,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,mGAAmG;IACnG,QAAQ,EAAE,OAAO,CAAC;IAClB;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,eAAe,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,SAAS,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@plurnk/plurnk-execs",
3
- "version": "0.4.15",
3
+ "version": "0.4.17",
4
4
  "description": "Framework + contract for the @plurnk/plurnk-execs-* runtime executor family.",
5
5
  "keywords": [
6
6
  "plurnk",
@@ -46,11 +46,8 @@
46
46
  "prepare": "npm run build"
47
47
  },
48
48
  "devDependencies": {
49
+ "@plurnk/plurnk-schemes": "^0.29.14",
49
50
  "@types/node": "^25.8.0",
50
- "typescript": "^6.0.3",
51
- "@plurnk/plurnk-schemes": "^0.21.0"
52
- },
53
- "dependencies": {
54
- "@plurnk/plurnk-schemes": "^0.21.0"
51
+ "typescript": "^6.0.3"
55
52
  }
56
53
  }