@plurnk/plurnk-execs 1.0.0 → 1.0.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.
- package/SPEC.md +2 -0
- package/package.json +11 -10
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.)
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@plurnk/plurnk-execs",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.2",
|
|
4
4
|
"description": "Framework + contract for the @plurnk/plurnk-execs-* runtime executor family.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"plurnk",
|
|
@@ -27,8 +27,8 @@
|
|
|
27
27
|
},
|
|
28
28
|
"exports": {
|
|
29
29
|
".": {
|
|
30
|
-
"types": "./dist/index.d.ts",
|
|
31
30
|
"plurnk-dev": "./src/index.ts",
|
|
31
|
+
"types": "./dist/index.d.ts",
|
|
32
32
|
"default": "./dist/index.js"
|
|
33
33
|
},
|
|
34
34
|
"./package.json": "./package.json"
|
|
@@ -48,13 +48,14 @@
|
|
|
48
48
|
"prepack": "npm run build"
|
|
49
49
|
},
|
|
50
50
|
"dependencies": {
|
|
51
|
-
"@plurnk/plurnk-schemes": "1.0.
|
|
52
|
-
"@plurnk/plurnk-execs-common": "1.0.
|
|
53
|
-
"@plurnk/plurnk-execs-search": "1.0.
|
|
54
|
-
"@plurnk/plurnk-execs-mcp": "1.0.
|
|
55
|
-
"@plurnk/plurnk-execs-git": "1.0.
|
|
56
|
-
"@plurnk/plurnk-execs-jq": "1.0.
|
|
57
|
-
"@plurnk/plurnk-execs-sqlite": "1.0.
|
|
58
|
-
"@plurnk/plurnk-meta": "1.0.
|
|
51
|
+
"@plurnk/plurnk-schemes": "1.0.2",
|
|
52
|
+
"@plurnk/plurnk-execs-common": "1.0.2",
|
|
53
|
+
"@plurnk/plurnk-execs-search": "1.0.2",
|
|
54
|
+
"@plurnk/plurnk-execs-mcp": "1.0.2",
|
|
55
|
+
"@plurnk/plurnk-execs-git": "1.0.2",
|
|
56
|
+
"@plurnk/plurnk-execs-jq": "1.0.2",
|
|
57
|
+
"@plurnk/plurnk-execs-sqlite": "1.0.2",
|
|
58
|
+
"@plurnk/plurnk-meta": "1.0.2",
|
|
59
|
+
"@plurnk/plurnk-execs-wasm": "1.0.2"
|
|
59
60
|
}
|
|
60
61
|
}
|