@plurnk/plurnk-execs 0.4.44 → 1.0.1
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 +4 -2
- package/dist/discover.d.ts.map +1 -1
- package/dist/discover.js +29 -54
- package/dist/discover.js.map +1 -1
- package/package.json +13 -8
package/SPEC.md
CHANGED
|
@@ -117,6 +117,8 @@ MCP is the proof, not the exception: `plurnk-execs-mcp` is a plain producer —
|
|
|
117
117
|
|
|
118
118
|
**Entry materialization is a sink, not a substrate breach (execs#18 / service#340).** `ExecArgs.entry?(path, content, { tags, mimetype }) → Promise<void>` lets an executor *request* that the consumer materialize a substrate entry — the same shape as `write`/`emit` (consumer-implemented callbacks; the executor never touches storage, tagging, or announcement machinery). The consumer creates the entry, applies the tags, and announces it through its ambience as a **folded** row (the meta line carries path + tokens; page-scale bodies never ride a wake packet). Consumer collision semantics: upsert content, union tags, bump freshness. A rejected `entry()` means *not materialized* — the requesting executor must treat that item as failed (search prunes its digest row). The sink is optional: absent, producers degrade gracefully (search emits its digest without materializing). This closed the gap that §2.6's earlier absolutism forced on the search flow (a double-fetch dance routed around the missing sink); the principle — executors own zero substrate machinery — is unchanged.
|
|
119
119
|
|
|
120
|
+
**The search dead-row seam resolves here (execs#18 hub's "open specifics" are stale — this supersedes them).** The consumer implements `entry()` *as* the auto-prefetch: fetch, render, materialize the `https://` entry — so its resolve/reject **is** the liveness verdict, and the executor prunes the failed digest row (per the pruning rule above). The digest emitted is survivors-only in a **single pass**: no executor pre-validation (that would fetch — forbidden), no consumer post-filter of a candidate list, no double fetch. A URL prefetch carries no page body for the executor to supply, so `content` is **consumer-sourced** — the executor contributes the candidate `url` as `path` and the consumer derives the body from it; the executor learns liveness only through the verdict, never by reading.
|
|
121
|
+
|
|
120
122
|
## §3 Discovery
|
|
121
123
|
|
|
122
124
|
`discover(options?) → { registry }`. Scans **every installed package** under `<cwd>/node_modules` — scope-agnostic (scoped and unscoped) — for those declaring `plurnk.kind === "exec"`, and registers each runtime tag from `plurnk.runtimes[]`. The scan is deliberately not limited to `@plurnk/*`: a **third party** can publish an executor under their own scope (`@acme/acme-execs-foo`) and have it discovered with no involvement from this project. (For the batteries-included set, an aggregator package — `@plurnk/plurnk-execs-all` — depends on the framework's daughters flat so one install surfaces them all; the framework itself stays contract-only.)
|
|
@@ -144,12 +146,12 @@ Each entry's optional **`documentation`** is full markdown — the flags, modes,
|
|
|
144
146
|
|
|
145
147
|
### §3.1 Dynamic runtimes (per-deployment tags)
|
|
146
148
|
|
|
147
|
-
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`** (
|
|
149
|
+
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`** (an export subpath, resolved through the package's export map) **instead of** a static `plurnk.runtimes[]`:
|
|
148
150
|
|
|
149
151
|
```json
|
|
150
152
|
{
|
|
151
153
|
"name": "@plurnk/plurnk-execs-mcp",
|
|
152
|
-
"plurnk": { "kind": "exec", "runtimesModule": "./
|
|
154
|
+
"plurnk": { "kind": "exec", "runtimesModule": "./runtimes" }
|
|
153
155
|
}
|
|
154
156
|
```
|
|
155
157
|
|
package/dist/discover.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"discover.d.ts","sourceRoot":"","sources":["../src/discover.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"discover.d.ts","sourceRoot":"","sources":["../src/discover.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,SAAS,EAAE,eAAe,EAAyB,MAAM,YAAY,CAAC;AAkDpF,MAAM,CAAC,OAAO,OAAO,QAAQ;;IACzB,OAAa,IAAI,CAAC,OAAO,GAAE,eAAoB,GAAG,OAAO,CAAC,SAAS,CAAC,CA0CnE;CAuIJ"}
|
package/dist/discover.js
CHANGED
|
@@ -8,7 +8,9 @@ var __rewriteRelativeImportExtension = (this && this.__rewriteRelativeImportExte
|
|
|
8
8
|
};
|
|
9
9
|
import fs from "node:fs/promises";
|
|
10
10
|
import path from "node:path";
|
|
11
|
+
import { createRequire } from "node:module";
|
|
11
12
|
import { pathToFileURL } from "node:url";
|
|
13
|
+
import Meta from "@plurnk/plurnk-meta";
|
|
12
14
|
import Policy from "./policy.js";
|
|
13
15
|
// Scan installed executor packages and build the runtime-tag registry the
|
|
14
16
|
// consuming scheme dispatches on. Parallel to plurnk-mimetypes' discover().
|
|
@@ -66,7 +68,7 @@ export default class Discover {
|
|
|
66
68
|
// imported: an untrusted third-party package is discovered but not
|
|
67
69
|
// registered, and its code is never executed. Recorded for the
|
|
68
70
|
// consumer's telemetry note, never crashed on.
|
|
69
|
-
if (!
|
|
71
|
+
if (!Meta.isTrusted(manifest.packageName)) {
|
|
70
72
|
skipped.add(manifest.packageName);
|
|
71
73
|
continue;
|
|
72
74
|
}
|
|
@@ -92,56 +94,14 @@ export default class Discover {
|
|
|
92
94
|
}
|
|
93
95
|
return { registry, skipped: [...skipped].sort(), disabled: [...disabled].sort() };
|
|
94
96
|
}
|
|
95
|
-
// Host plugin-trust gate, read from PLURNK_PLUGINS_TRUSTED_ONLY — the SAME
|
|
96
|
-
// env var plurnk-service decides once and every scope-agnostic discovery
|
|
97
|
-
// surface enforces (plurnk-service#229). Mirrors plurnk-service's
|
|
98
|
-
// PluginTrust.isTrusted (we can't import across the package boundary, so the
|
|
99
|
-
// ~5-line policy is duplicated, not shared):
|
|
100
|
-
// unset / "" / "0" → OFF: every installed package trusted (no regression).
|
|
101
|
-
// any value → ON: `@plurnk/*` always trusted, plus a comma-separated
|
|
102
|
-
// allowlist of additionally-trusted package names;
|
|
103
|
-
// "1" (naming no real package) = on, zero third-party.
|
|
104
|
-
static #isTrusted(packageName) {
|
|
105
|
-
const gate = process.env.PLURNK_PLUGINS_TRUSTED_ONLY;
|
|
106
|
-
if (gate === undefined || gate === "" || gate === "0")
|
|
107
|
-
return true;
|
|
108
|
-
if (packageName.startsWith("@plurnk/"))
|
|
109
|
-
return true;
|
|
110
|
-
return gate.split(",").map((s) => s.trim()).includes(packageName);
|
|
111
|
-
}
|
|
112
97
|
// Enumerate every installed package directory — scoped (`@scope/name`) and
|
|
113
98
|
// unscoped (`name`) — under `<cwd>/node_modules`. The scan is scope-agnostic
|
|
114
99
|
// so a THIRD PARTY can publish an executor under their own scope (`@acme/foo`)
|
|
115
100
|
// and have it discovered with no involvement from us; `#readExecInfos` keeps
|
|
116
101
|
// only the packages that declare `plurnk.kind === "exec"`.
|
|
117
102
|
static async #defaultPackageDirs(cwd) {
|
|
118
|
-
const nm = path.join(cwd, "node_modules");
|
|
119
|
-
|
|
120
|
-
try {
|
|
121
|
-
entries = await fs.readdir(nm, { withFileTypes: true });
|
|
122
|
-
}
|
|
123
|
-
catch {
|
|
124
|
-
return [];
|
|
125
|
-
}
|
|
126
|
-
const dirs = [];
|
|
127
|
-
for (const entry of entries) {
|
|
128
|
-
if (!entry.isDirectory() || entry.name === ".bin" || entry.name === ".cache")
|
|
129
|
-
continue;
|
|
130
|
-
if (entry.name.startsWith("@")) {
|
|
131
|
-
const scopeDir = path.join(nm, entry.name);
|
|
132
|
-
try {
|
|
133
|
-
const scoped = await fs.readdir(scopeDir, { withFileTypes: true });
|
|
134
|
-
for (const s of scoped)
|
|
135
|
-
if (s.isDirectory())
|
|
136
|
-
dirs.push(path.join(scopeDir, s.name));
|
|
137
|
-
}
|
|
138
|
-
catch { /* unreadable scope dir — skip */ }
|
|
139
|
-
}
|
|
140
|
-
else {
|
|
141
|
-
dirs.push(path.join(nm, entry.name));
|
|
142
|
-
}
|
|
143
|
-
}
|
|
144
|
-
return dirs;
|
|
103
|
+
const nm = Meta.nearestNodeModules(cwd) ?? path.join(path.resolve(cwd), "node_modules");
|
|
104
|
+
return (await Meta.packageDirs(nm)).map((c) => c.dir).toSorted();
|
|
145
105
|
}
|
|
146
106
|
// Read a package's `package.json` and return its manifest iff it declares
|
|
147
107
|
// `plurnk.kind === "exec"`. Returns null for non-executor packages, a missing
|
|
@@ -204,9 +164,9 @@ export default class Discover {
|
|
|
204
164
|
return infos;
|
|
205
165
|
}
|
|
206
166
|
// Resolve a package's runtime decls. Static `plurnk.runtimes[]` is the common
|
|
207
|
-
// case; `plurnk.runtimesModule` (
|
|
208
|
-
// per-deployment tags. Static wins if both are declared.
|
|
209
|
-
// neither is present.
|
|
167
|
+
// case; `plurnk.runtimesModule` (an export subpath, e.g. "./runtimes") is the
|
|
168
|
+
// dynamic hook for per-deployment tags. Static wins if both are declared.
|
|
169
|
+
// Returns [] when neither is present.
|
|
210
170
|
static async #runtimeDecls(dir, packageName, plurnk) {
|
|
211
171
|
if (Array.isArray(plurnk.runtimes))
|
|
212
172
|
return plurnk.runtimes;
|
|
@@ -215,13 +175,28 @@ export default class Discover {
|
|
|
215
175
|
return Discover.#loadDynamicRuntimes(dir, packageName, mod);
|
|
216
176
|
return [];
|
|
217
177
|
}
|
|
218
|
-
// Import a trusted package's runtimes hook and call it.
|
|
219
|
-
//
|
|
220
|
-
//
|
|
221
|
-
//
|
|
222
|
-
//
|
|
178
|
+
// Import a trusted package's runtimes hook via its export map and call it.
|
|
179
|
+
// The manifest names an export SUBPATH ("./runtimes"), never a file path —
|
|
180
|
+
// resolution through exports keeps dev (src via conditions) and published
|
|
181
|
+
// (dist) layouts on one mechanism. Fail-hard on every failure — an
|
|
182
|
+
// unloadable module, a missing/non-function export, or a non-array return
|
|
183
|
+
// is a contract violation by a trusted package (its own packaging or
|
|
184
|
+
// config), surfaced with the cause, never swallowed. The trust gate in
|
|
185
|
+
// scan() guarantees this only runs for trusted packages.
|
|
223
186
|
static async #loadDynamicRuntimes(dir, packageName, rel) {
|
|
224
|
-
|
|
187
|
+
if (!rel.startsWith("./"))
|
|
188
|
+
throw new Error(`exec runtimes hook invalid: ${packageName} -> ${rel} must be an export subpath like "./runtimes"`);
|
|
189
|
+
// Self-reference resolution: the subpath resolves through the package's OWN export
|
|
190
|
+
// map anchored at its root — conditions apply (plurnk-dev → src in a workspace
|
|
191
|
+
// checkout; dist when published), and a package needn't be installed to resolve.
|
|
192
|
+
let href;
|
|
193
|
+
try {
|
|
194
|
+
const selfRequire = createRequire(path.join(dir, "package.json"));
|
|
195
|
+
href = pathToFileURL(selfRequire.resolve(`${packageName}${rel.slice(1)}`)).href;
|
|
196
|
+
}
|
|
197
|
+
catch (cause) {
|
|
198
|
+
throw new Error(`exec runtimes hook unloadable: ${packageName} -> ${rel}`, { cause });
|
|
199
|
+
}
|
|
225
200
|
let mod;
|
|
226
201
|
try {
|
|
227
202
|
mod = await import(__rewriteRelativeImportExtension(href));
|
package/dist/discover.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
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;AACzC,OAAO,MAAM,MAAM,aAAa,CAAC;AAUjC,0EAA0E;AAC1E,4EAA4E;AAC5E,4EAA4E;AAC5E,+EAA+E;AAC/E,qCAAqC;AACrC,EAAE;AACF,4EAA4E;AAC5E,6EAA6E;AAC7E,yEAAyE;AACzE,+BAA+B;AAC/B,EAAE;AACF,8EAA8E;AAC9E,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,OAAO,OAAO,QAAQ;IACzB,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,GAAoB,EAAE;QAC3C,MAAM,IAAI,GAAG,OAAO,CAAC,WAAW,IAAI,MAAM,QAAQ,CAAC,mBAAmB,CAAC,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;QAErG,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAoB,CAAC;QAC7C,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;QAClC,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAU,CAAC;QACnC,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACrB,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC;YACvD,IAAI,QAAQ,KAAK,IAAI;gBAAE,SAAS,CAAC,sBAAsB;YACvD,mEAAmE;YACnE,6DAA6D;YAC7D,mEAAmE;YACnE,+DAA+D;YAC/D,+CAA+C;YAC/C,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"discover.js","sourceRoot":"","sources":["../src/discover.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@plurnk/plurnk-execs",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "1.0.1",
|
|
4
4
|
"description": "Framework + contract for the @plurnk/plurnk-execs-* runtime executor family.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"plurnk",
|
|
@@ -28,6 +28,7 @@
|
|
|
28
28
|
"exports": {
|
|
29
29
|
".": {
|
|
30
30
|
"types": "./dist/index.d.ts",
|
|
31
|
+
"plurnk-dev": "./src/index.ts",
|
|
31
32
|
"default": "./dist/index.js"
|
|
32
33
|
},
|
|
33
34
|
"./package.json": "./package.json"
|
|
@@ -40,17 +41,21 @@
|
|
|
40
41
|
],
|
|
41
42
|
"scripts": {
|
|
42
43
|
"test:lint": "tsc --noEmit",
|
|
43
|
-
"test:unit": "node --test \"src/**/*.test.ts\" \"test/**/*.test.ts\"",
|
|
44
|
+
"test:unit": "node --conditions=plurnk-dev --test \"src/**/*.test.ts\" \"test/**/*.test.ts\"",
|
|
44
45
|
"test": "npm run test:lint && npm run test:unit",
|
|
45
46
|
"build:dist": "tsc -p tsconfig.build.json",
|
|
46
47
|
"build": "npm run build:dist",
|
|
47
|
-
"
|
|
48
|
+
"prepack": "npm run build"
|
|
48
49
|
},
|
|
49
50
|
"dependencies": {
|
|
50
|
-
"@plurnk/plurnk-schemes": "0.
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
"@
|
|
54
|
-
"
|
|
51
|
+
"@plurnk/plurnk-schemes": "1.0.1",
|
|
52
|
+
"@plurnk/plurnk-execs-common": "1.0.1",
|
|
53
|
+
"@plurnk/plurnk-execs-search": "1.0.1",
|
|
54
|
+
"@plurnk/plurnk-execs-mcp": "1.0.1",
|
|
55
|
+
"@plurnk/plurnk-execs-git": "1.0.1",
|
|
56
|
+
"@plurnk/plurnk-execs-jq": "1.0.1",
|
|
57
|
+
"@plurnk/plurnk-execs-sqlite": "1.0.1",
|
|
58
|
+
"@plurnk/plurnk-meta": "1.0.1",
|
|
59
|
+
"@plurnk/plurnk-execs-wasm": "1.0.1"
|
|
55
60
|
}
|
|
56
61
|
}
|