omni-dsh-plugins 1.0.0 → 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/README.md +5 -4
- package/dist/bin.js +10 -19
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -21,9 +21,10 @@ never ships here.
|
|
|
21
21
|
|
|
22
22
|
- Node.js 20 or newer.
|
|
23
23
|
- The official `dsh` executable on `PATH` for add, update and remove operations.
|
|
24
|
-
-
|
|
25
|
-
|
|
26
|
-
|
|
24
|
+
- Network access for discovery. With no `--catalog`, the CLI reads the snapshot published at
|
|
25
|
+
<https://dsh-plugins.omniroute.online/catalog.snapshot.json> and accepts the revision that
|
|
26
|
+
snapshot declares, so a plugin merged today is findable today. Passing `--revision` turns the
|
|
27
|
+
fetch into an exact-commit demand and rejects any snapshot declaring a different one.
|
|
27
28
|
|
|
28
29
|
## Discover and validate
|
|
29
30
|
|
|
@@ -72,7 +73,7 @@ npx omni-dsh-plugins remove example-plugin \
|
|
|
72
73
|
--allow-code-execution
|
|
73
74
|
```
|
|
74
75
|
|
|
75
|
-
Native Windows policy for v1.0.
|
|
76
|
+
Native Windows policy for v1.0.1: code-executing `add`, `update`, and `remove` are disabled
|
|
76
77
|
before any profile, state, cache, or subprocess access because complete descendant containment
|
|
77
78
|
cannot be proven. Use WSL for mutations. `--dry-run` and the read-only catalog, `search`, `info`,
|
|
78
79
|
`list`, and `doctor` commands remain available. A native Windows recovery marker is never
|
package/dist/bin.js
CHANGED
|
@@ -23869,7 +23869,7 @@ async function readLocalSnapshot(path) {
|
|
|
23869
23869
|
}
|
|
23870
23870
|
}
|
|
23871
23871
|
function validatePublicSnapshotUrl(rawUrl, revision) {
|
|
23872
|
-
assertRevision(revision);
|
|
23872
|
+
if (revision !== void 0) assertRevision(revision);
|
|
23873
23873
|
if (rawUrl.includes("\\") || rawUrl.includes("%")) {
|
|
23874
23874
|
throw safety("catalog snapshot URL is outside the public allowlist");
|
|
23875
23875
|
}
|
|
@@ -23879,7 +23879,7 @@ function validatePublicSnapshotUrl(rawUrl, revision) {
|
|
|
23879
23879
|
} catch {
|
|
23880
23880
|
throw safety("catalog snapshot URL is invalid");
|
|
23881
23881
|
}
|
|
23882
|
-
const expected = `${PUBLIC_CATALOG_RAW_ORIGIN}/${revision}/catalog.snapshot.json`;
|
|
23882
|
+
const expected = revision === void 0 ? PUBLIC_SNAPSHOT_SITE_URL : `${PUBLIC_CATALOG_RAW_ORIGIN}/${revision}/catalog.snapshot.json`;
|
|
23883
23883
|
if (url.protocol !== "https:" || url.username !== "" || url.password !== "" || url.port !== "" || url.search !== "" || url.hash !== "" || url.href !== expected && url.href !== PUBLIC_SNAPSHOT_SITE_URL) {
|
|
23884
23884
|
throw safety("catalog snapshot URL is outside the public allowlist");
|
|
23885
23885
|
}
|
|
@@ -24395,24 +24395,15 @@ async function materializeCatalog(selection2, dependencies = {}) {
|
|
|
24395
24395
|
}
|
|
24396
24396
|
|
|
24397
24397
|
// src/catalogSource.ts
|
|
24398
|
-
var DEFAULT_CATALOG_REVISION = "f01d1d2d22b80222c121db6dfc0fd4035c24b390";
|
|
24399
|
-
var DEFAULT_EMPTY_SNAPSHOT = {
|
|
24400
|
-
source: {
|
|
24401
|
-
kind: "snapshot",
|
|
24402
|
-
declaredRevision: DEFAULT_CATALOG_REVISION,
|
|
24403
|
-
pinStatus: "declared-local"
|
|
24404
|
-
},
|
|
24405
|
-
entries: [],
|
|
24406
|
-
diagnostics: []
|
|
24407
|
-
};
|
|
24408
24398
|
async function loadDefaultCatalog(selection2, dependencies = {}) {
|
|
24409
|
-
|
|
24410
|
-
|
|
24411
|
-
|
|
24412
|
-
|
|
24413
|
-
|
|
24414
|
-
|
|
24415
|
-
|
|
24399
|
+
const materialized = selection2?.root === void 0 ? await materializeCatalog(
|
|
24400
|
+
{
|
|
24401
|
+
kind: "snapshot-url",
|
|
24402
|
+
url: PUBLIC_SNAPSHOT_SITE_URL,
|
|
24403
|
+
...selection2?.revision === void 0 ? {} : { revision: selection2.revision }
|
|
24404
|
+
},
|
|
24405
|
+
dependencies
|
|
24406
|
+
) : await materializeSelection(selection2, dependencies);
|
|
24416
24407
|
try {
|
|
24417
24408
|
const loaded = materialized.kind === "snapshot" ? await loadCatalog({
|
|
24418
24409
|
kind: "snapshot",
|