@intentic/registry 1.247.0 → 1.249.0
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 +1 -10
- package/dist/registry.d.ts +0 -13
- package/dist/registry.d.ts.map +1 -1
- package/dist/registry.js +1 -6
- package/dist/registry.js.map +1 -1
- package/dist/source.d.ts +1 -0
- package/dist/source.d.ts.map +1 -1
- package/dist/source.js +1 -1
- package/dist/source.js.map +1 -1
- package/package.json +2 -2
- package/src/registry.test.ts +2 -10
- package/src/registry.ts +36 -106
- package/src/source.ts +12 -19
package/README.md
CHANGED
|
@@ -59,15 +59,6 @@ off), and `securityFix: true` on an entry marks its pinned commit as fixing a se
|
|
|
59
59
|
- the installed side promotes its update badge from ambient to loud, because there the OLD version is the
|
|
60
60
|
dangerous one. Both are asserted by pull request, like `trust`, and are worth exactly that review.
|
|
61
61
|
|
|
62
|
-
## Tier, and what premium buys into
|
|
63
|
-
|
|
64
|
-
`tier` is the listing's price: `free` (the default, and the whole story for most rows) or `premium`, the
|
|
65
|
-
listing opts into the **creator pool**. A premium row needs an intentic membership, both surfaces badge it
|
|
66
|
-
before the click, and installing it **donates a published number of the member's credits to the publisher**
|
|
67
|
-
(once, deduped monthly: updates donate again at most monthly). No usage is metered or reported anywhere;
|
|
68
|
-
the deliberate install is the whole signal. The economics live in
|
|
69
|
-
[The creator pool](https://intentic.dev/earn/).
|
|
70
|
-
|
|
71
62
|
## The mark
|
|
72
63
|
|
|
73
64
|
A row carries the two display tiers the manifest declares: `logo` (a simple-icons slug) and `icon` (a glyph
|
|
@@ -89,7 +80,7 @@ ranking.
|
|
|
89
80
|
|
|
90
81
|
## Identity
|
|
91
82
|
|
|
92
|
-
An entry's `name` is `publisher.name` from the manifest: [`extensionIdOf`](../extension-
|
|
83
|
+
An entry's `name` is `publisher.name` from the manifest: [`extensionIdOf`](../extension-manifest/src/manifest.ts),
|
|
93
84
|
the same identity the app installs under. It is derived, never declared by the registry, so a registry entry
|
|
94
85
|
cannot rename or spoof an extension, and a repo that copies somebody else's manifest collides with their
|
|
95
86
|
listing instead of shadowing it.
|
package/dist/registry.d.ts
CHANGED
|
@@ -31,11 +31,6 @@ export declare const RegistryTrustSchema: z.ZodEnum<{
|
|
|
31
31
|
verified: "verified";
|
|
32
32
|
}>;
|
|
33
33
|
export type RegistryTrust = z.infer<typeof RegistryTrustSchema>;
|
|
34
|
-
export declare const RegistryTierSchema: z.ZodEnum<{
|
|
35
|
-
free: "free";
|
|
36
|
-
premium: "premium";
|
|
37
|
-
}>;
|
|
38
|
-
export type RegistryTier = z.infer<typeof RegistryTierSchema>;
|
|
39
34
|
export declare const RegistryFileSchema: z.ZodObject<{
|
|
40
35
|
name: z.ZodString;
|
|
41
36
|
metadata: z.ZodOptional<z.ZodObject<{
|
|
@@ -71,10 +66,6 @@ export declare const RegistryFileSchema: z.ZodObject<{
|
|
|
71
66
|
}, z.core.$strip>;
|
|
72
67
|
}, z.core.$strip>>;
|
|
73
68
|
securityFix: z.ZodOptional<z.ZodBoolean>;
|
|
74
|
-
tier: z.ZodOptional<z.ZodEnum<{
|
|
75
|
-
free: "free";
|
|
76
|
-
premium: "premium";
|
|
77
|
-
}>>;
|
|
78
69
|
category: z.ZodOptional<z.ZodString>;
|
|
79
70
|
art: z.ZodOptional<z.ZodString>;
|
|
80
71
|
logo: z.ZodOptional<z.ZodString>;
|
|
@@ -137,10 +128,6 @@ export declare const RegistryEntrySchema: z.ZodObject<{
|
|
|
137
128
|
}, z.core.$strip>>;
|
|
138
129
|
admitted: z.ZodBoolean;
|
|
139
130
|
securityFix: z.ZodOptional<z.ZodBoolean>;
|
|
140
|
-
tier: z.ZodEnum<{
|
|
141
|
-
free: "free";
|
|
142
|
-
premium: "premium";
|
|
143
|
-
}>;
|
|
144
131
|
category: z.ZodOptional<z.ZodString>;
|
|
145
132
|
art: z.ZodOptional<z.ZodString>;
|
|
146
133
|
logo: z.ZodOptional<z.ZodString>;
|
package/dist/registry.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAY,KAAK,eAAe,EAAwC,MAAM,aAAa,CAAC;AAOnG,eAAO,MAAM,aAAa,oCAAoC,CAAC;AAC/D,eAAO,MAAM,mBAAmB,2CAA2C,CAAC;AAG5E,eAAO,MAAM,qBAAqB,yCAAyC,CAAC;AAG5E,eAAO,MAAM,cAAc,uBAAuB,CAAC;AAInD,eAAO,MAAM,+BAA+B,mCAAmC,CAAC;AAChF,eAAO,MAAM,0BAA0B,wBAAwB,CAAC;AAChE,eAAO,MAAM,kCAAkC,wCAAwC,CAAC;AACxF,eAAO,MAAM,8BAA8B,UAAU,CAAC;AACtD,eAAO,MAAM,sCAAsC,WAAW,CAAC;AAE/D,eAAO,MAAM,4BAA4B;;;;;;;;;;;;;;iBAcvC,CAAC;AACH,MAAM,MAAM,sBAAsB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,4BAA4B,CAAC,CAAC;AAOlF,eAAO,MAAM,mBAAmB;;;;EAA4C,CAAC;AAC7E,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AA6ChE,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAiBzB,CAAC;AACP,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAO9D,QAAA,MAAM,oBAAoB;;;;;iBAQxB,CAAC;AACH,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAUlE,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;iBAG9B,CAAC;AACH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAIhE,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAsB9B,CAAC;AACH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAsBhE,eAAO,MAAM,qBAAqB,UAAW,MAAM,KAAG,OAAwF,CAAC;AAE/I,eAAO,MAAM,uBAAuB,WAAY,sBAAsB,GAAG,SAAS,WAAW,eAAe,GAAG,SAAS,KAAG,OAShD,CAAC;AAI5E,eAAO,MAAM,eAAe,SAAU,YAAY,SAAS,aAAa,GAAG,SAAS,eAAe,MAAM,KAAG,aAAa,EAgCxH,CAAC;AAIF,eAAO,MAAM,cAAc,MAAO,aAAa,KAAK,aAAa,KAAG,MAWnE,CAAC"}
|
package/dist/registry.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
|
-
import { RegistryInstallSchema, resolveSource } from "./source.js";
|
|
2
|
+
import { FULL_SHA, RegistryInstallSchema, resolveSource } from "./source.js";
|
|
3
3
|
export const REGISTRY_FILE = ".claude-plugin/marketplace.json";
|
|
4
4
|
export const REGISTRY_FACTS_FILE = ".claude-plugin/registry.generated.json";
|
|
5
5
|
export const OFFICIAL_REGISTRY_URL = "https://github.com/intentic/registry";
|
|
@@ -9,7 +9,6 @@ export const OFFICIAL_SECURITY_REVIEWER = "intentic-agent-gate";
|
|
|
9
9
|
export const OFFICIAL_DETERMINISTIC_SCAN_POLICY = "intentic-extension-deterministic-v1";
|
|
10
10
|
export const OFFICIAL_DETERMINISTIC_SCANNER = "trivy";
|
|
11
11
|
export const OFFICIAL_DETERMINISTIC_SCANNER_VERSION = "0.72.0";
|
|
12
|
-
const FULL_SHA = /^[0-9a-f]{40}$/;
|
|
13
12
|
export const RegistrySecurityReviewSchema = z.object({
|
|
14
13
|
sha: z.string().regex(FULL_SHA, "must be a full lowercase commit sha"),
|
|
15
14
|
url: z.string().min(1),
|
|
@@ -26,7 +25,6 @@ export const RegistrySecurityReviewSchema = z.object({
|
|
|
26
25
|
}),
|
|
27
26
|
});
|
|
28
27
|
export const RegistryTrustSchema = z.enum(["verified", "listed", "blocked"]);
|
|
29
|
-
export const RegistryTierSchema = z.enum(["free", "premium"]);
|
|
30
28
|
const RegistryFileEntrySchema = z
|
|
31
29
|
.object({
|
|
32
30
|
name: z.string(),
|
|
@@ -37,7 +35,6 @@ const RegistryFileEntrySchema = z
|
|
|
37
35
|
trustReason: z.string().optional(),
|
|
38
36
|
securityReview: RegistrySecurityReviewSchema.optional(),
|
|
39
37
|
securityFix: z.boolean().optional(),
|
|
40
|
-
tier: RegistryTierSchema.optional(),
|
|
41
38
|
category: z.string().optional(),
|
|
42
39
|
art: z.string().max(4096).optional(),
|
|
43
40
|
logo: z.string().optional(),
|
|
@@ -109,7 +106,6 @@ export const RegistryEntrySchema = z.object({
|
|
|
109
106
|
securityReview: RegistrySecurityReviewSchema.optional(),
|
|
110
107
|
admitted: z.boolean(),
|
|
111
108
|
securityFix: z.boolean().optional(),
|
|
112
|
-
tier: RegistryTierSchema,
|
|
113
109
|
category: z.string().optional(),
|
|
114
110
|
art: z.string().optional(),
|
|
115
111
|
logo: z.string().optional(),
|
|
@@ -164,7 +160,6 @@ export const resolveRegistry = (file, facts, registryUrl) => {
|
|
|
164
160
|
kind,
|
|
165
161
|
trust,
|
|
166
162
|
admitted,
|
|
167
|
-
tier: plugin.tier ?? "free",
|
|
168
163
|
...(plugin.description !== undefined ? { description: plugin.description } : {}),
|
|
169
164
|
...(plugin.version !== undefined ? { version: plugin.version } : {}),
|
|
170
165
|
...(plugin.trustReason !== undefined ? { trustReason: plugin.trustReason } : {}),
|
package/dist/registry.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"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"}
|
package/dist/source.d.ts
CHANGED
|
@@ -6,6 +6,7 @@ export declare const RegistryInstallSchema: z.ZodObject<{
|
|
|
6
6
|
}, z.core.$strip>;
|
|
7
7
|
export type RegistryInstall = z.infer<typeof RegistryInstallSchema>;
|
|
8
8
|
export declare const resolveSource: (source: unknown, registryUrl: string, pluginRoot: string | undefined) => RegistryInstall | undefined;
|
|
9
|
+
export declare const FULL_SHA: RegExp;
|
|
9
10
|
export declare const isShaPinned: (install: RegistryInstall | undefined) => boolean;
|
|
10
11
|
export declare const githubRepoOf: (install: RegistryInstall | undefined) => string | undefined;
|
|
11
12
|
//# sourceMappingURL=source.d.ts.map
|
package/dist/source.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"source.d.ts","sourceRoot":"","sources":["../src/source.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"source.d.ts","sourceRoot":"","sources":["../src/source.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAOxB,eAAO,MAAM,qBAAqB;;;;iBAIhC,CAAC;AACH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAKpE,eAAO,MAAM,aAAa,WAAY,OAAO,eAAe,MAAM,cAAc,MAAM,GAAG,SAAS,KAAG,eAAe,GAAG,SAsBtH,CAAC;AAGF,eAAO,MAAM,QAAQ,QAAmB,CAAC;AAKzC,eAAO,MAAM,WAAW,YAAa,eAAe,GAAG,SAAS,KAAG,OAAmE,CAAC;AAGvI,eAAO,MAAM,YAAY,YAAa,eAAe,GAAG,SAAS,KAAG,MAAM,GAAG,SAM5E,CAAC"}
|
package/dist/source.js
CHANGED
|
@@ -26,7 +26,7 @@ export const resolveSource = (source, registryUrl, pluginRoot) => {
|
|
|
26
26
|
}
|
|
27
27
|
return undefined;
|
|
28
28
|
};
|
|
29
|
-
const FULL_SHA = /^[0-9a-f]{40}$/;
|
|
29
|
+
export const FULL_SHA = /^[0-9a-f]{40}$/;
|
|
30
30
|
export const isShaPinned = (install) => install?.ref !== undefined && FULL_SHA.test(install.ref);
|
|
31
31
|
export const githubRepoOf = (install) => {
|
|
32
32
|
if (install === undefined) {
|
package/dist/source.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"source.js","sourceRoot":"","sources":["../src/source.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"source.js","sourceRoot":"","sources":["../src/source.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@intentic/registry",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.249.0",
|
|
4
4
|
"description": "The extension-registry file format, a git repo of sha-pinned pointers, shared by the daemon, the site gallery and the scanner",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
7
7
|
"repository": {
|
|
8
8
|
"type": "git",
|
|
9
9
|
"url": "git+https://github.com/intentic/intentic.git",
|
|
10
|
-
"directory": "
|
|
10
|
+
"directory": "_shared/registry"
|
|
11
11
|
},
|
|
12
12
|
"files": [
|
|
13
13
|
"dist",
|
package/src/registry.test.ts
CHANGED
|
@@ -100,17 +100,9 @@ describe(`resolveRegistry`, () => {
|
|
|
100
100
|
expect(entries.find((entry) => entry.name === `linear`)?.admitted).toBe(true);
|
|
101
101
|
});
|
|
102
102
|
|
|
103
|
-
it(`defaults an unstated trust to listed
|
|
103
|
+
it(`defaults an unstated trust to listed and an unstated kind to plugin`, () => {
|
|
104
104
|
const entries = resolveRegistry(RegistryFileSchema.parse({ name: `x`, plugins: [{ name: `a`, source: `./a` }] }), undefined, REGISTRY);
|
|
105
|
-
expect(entries[0]).toMatchObject({ trust: `listed`, kind: `plugin
|
|
106
|
-
});
|
|
107
|
-
|
|
108
|
-
it(`carries a premium tier through the resolve`, () => {
|
|
109
|
-
const premium = RegistryFileSchema.parse({
|
|
110
|
-
name: `x`,
|
|
111
|
-
plugins: [{ name: `acme.research`, kind: `extension`, tier: `premium`, source: { source: `github`, repo: `acme/research`, sha: SHA } }],
|
|
112
|
-
});
|
|
113
|
-
expect(resolveRegistry(premium, undefined, REGISTRY)[0]?.tier).toBe(`premium`);
|
|
105
|
+
expect(entries[0]).toMatchObject({ trust: `listed`, kind: `plugin` });
|
|
114
106
|
});
|
|
115
107
|
|
|
116
108
|
// Blocked rows must survive the resolve: deleting them is what hides a warning from the people who
|
package/src/registry.ts
CHANGED
|
@@ -1,46 +1,28 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
|
-
import { type RegistryInstall, RegistryInstallSchema, resolveSource } from "./source.js";
|
|
2
|
+
import { FULL_SHA, type RegistryInstall, RegistryInstallSchema, resolveSource } from "./source.js";
|
|
3
3
|
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
* `.claude-plugin/marketplace.json` lists pointers to other people's repositories at a commit, so listing
|
|
8
|
-
* costs a pull request, delisting deletes nothing, and anybody can run their own registry against a private
|
|
9
|
-
* one. That file is Claude Code's plugin-marketplace format deliberately: `kind` and `trust` are intentic's
|
|
10
|
-
* own fields and Claude Code ignores what it doesn't know, so one repo serves both consumers.
|
|
11
|
-
*
|
|
12
|
-
* The split into TWO files is the part that matters. `marketplace.json` is hand-edited and is the only place a
|
|
13
|
-
* curated decision and source-bound admission are recorded; `registry.generated.json` is bot-written and holds
|
|
14
|
-
* nothing but facts read back off the source host. Keeping star counts out of the curated file is what stops every nightly refresh from
|
|
15
|
-
* being a merge conflict against an open pull request, and it keeps the review diff to the thing being
|
|
16
|
-
* decided. A registry that carries no generated file is a registry with no stars, which renders fine. */
|
|
4
|
+
// A registry is a git repo of pointers: `marketplace.json` (Claude Code's plugin-marketplace format, plus intentic's
|
|
5
|
+
// own `kind`/`trust` fields) is hand-edited and curated; `registry.generated.json` is bot-written, holding only facts
|
|
6
|
+
// read off the source host, kept separate so a nightly refresh never conflicts with a review.
|
|
17
7
|
|
|
18
|
-
// Repo-relative
|
|
19
|
-
// site build (which fetches them raw).
|
|
8
|
+
// Repo-relative; the same two strings the daemon clones, the scanner commits, and the site build fetches raw.
|
|
20
9
|
export const REGISTRY_FILE = ".claude-plugin/marketplace.json";
|
|
21
10
|
export const REGISTRY_FACTS_FILE = ".claude-plugin/registry.generated.json";
|
|
22
11
|
|
|
23
|
-
//
|
|
24
|
-
// field stays editable, so a company points it at an internal registry and never touches this one.
|
|
12
|
+
// Default the Extensions tab browses from; not a gate, the browse field stays editable to point elsewhere.
|
|
25
13
|
export const OFFICIAL_REGISTRY_URL = "https://github.com/intentic/registry";
|
|
26
14
|
|
|
27
|
-
//
|
|
28
|
-
// request against the registry, never a listing.
|
|
15
|
+
// GitHub topic for discovery only; the scan turns it into a pull request against the registry, never a listing.
|
|
29
16
|
export const REGISTRY_TOPIC = "intentic-extension";
|
|
30
17
|
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
* Policies and scanner version are explicit because changing any admission control must make yesterday's
|
|
34
|
-
* reviews visibly stale rather than silently pretending they ran under today's rules. Third-party registries
|
|
35
|
-
* may carry other records; only this exact combination admits an entry to the official registry. */
|
|
18
|
+
// Admission record for the official registry, binding both verdicts to what an installer actually clones. Bumping any
|
|
19
|
+
// policy or scanner version makes yesterday's reviews visibly stale, not silently valid under new rules.
|
|
36
20
|
export const OFFICIAL_SECURITY_REVIEW_POLICY = "intentic-extension-security-v1";
|
|
37
21
|
export const OFFICIAL_SECURITY_REVIEWER = "intentic-agent-gate";
|
|
38
22
|
export const OFFICIAL_DETERMINISTIC_SCAN_POLICY = "intentic-extension-deterministic-v1";
|
|
39
23
|
export const OFFICIAL_DETERMINISTIC_SCANNER = "trivy";
|
|
40
24
|
export const OFFICIAL_DETERMINISTIC_SCANNER_VERSION = "0.72.0";
|
|
41
25
|
|
|
42
|
-
const FULL_SHA = /^[0-9a-f]{40}$/;
|
|
43
|
-
|
|
44
26
|
export const RegistrySecurityReviewSchema = z.object({
|
|
45
27
|
sha: z.string().regex(FULL_SHA, "must be a full lowercase commit sha"),
|
|
46
28
|
url: z.string().min(1),
|
|
@@ -58,29 +40,14 @@ export const RegistrySecurityReviewSchema = z.object({
|
|
|
58
40
|
});
|
|
59
41
|
export type RegistrySecurityReview = z.infer<typeof RegistrySecurityReviewSchema>;
|
|
60
42
|
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
* - `blocked` known-malicious or known-broken. It STAYS in the file with a reason rather than being deleted:
|
|
67
|
-
* removing the row hides it from people browsing and tells the people who already installed it
|
|
68
|
-
* nothing, which is backwards, they are the ones at risk.
|
|
69
|
-
*
|
|
70
|
-
* Absent on a third-party registry ⇒ `listed`, because a registry that doesn't use the field hasn't asserted
|
|
71
|
-
* anything and shouldn't be read as if it had. */
|
|
43
|
+
// What a listing claims:
|
|
44
|
+
// - listed: no human review asserted; the official registry still requires both automated checks to pass.
|
|
45
|
+
// - verified: both automated checks passed and a human read the source at that sha.
|
|
46
|
+
// - blocked: known-malicious or known-broken; stays in the file with a reason instead of being deleted.
|
|
47
|
+
// Absent on a third-party registry reads as listed.
|
|
72
48
|
export const RegistryTrustSchema = z.enum(["verified", "listed", "blocked"]);
|
|
73
49
|
export type RegistryTrust = z.infer<typeof RegistryTrustSchema>;
|
|
74
50
|
|
|
75
|
-
/* WHAT A LISTING COSTS. `free` is the default and the whole story for most rows. `premium` opts the listing
|
|
76
|
-
* into the creator pool: installing it requires an intentic membership and donates a published number of the
|
|
77
|
-
* member's credits to the publisher (once, deduped monthly, an update in a later month donates again), and
|
|
78
|
-
* both surfaces badge it so the price is visible before the click. No usage is ever metered or reported for
|
|
79
|
-
* this; the deliberate act of installing is the whole signal. On a third-party registry the field still
|
|
80
|
-
* parses but means nothing, the pool only pays listings the platform's members actually install. */
|
|
81
|
-
export const RegistryTierSchema = z.enum(["free", "premium"]);
|
|
82
|
-
export type RegistryTier = z.infer<typeof RegistryTierSchema>;
|
|
83
|
-
|
|
84
51
|
const RegistryFileEntrySchema = z
|
|
85
52
|
.object({
|
|
86
53
|
name: z.string(),
|
|
@@ -89,33 +56,14 @@ const RegistryFileEntrySchema = z
|
|
|
89
56
|
// "extension" installs as the sha-pinned `extension` capability; absent/"plugin" is a Claude Code plugin.
|
|
90
57
|
kind: z.enum(["plugin", "extension"]).optional(),
|
|
91
58
|
trust: RegistryTrustSchema.optional(),
|
|
92
|
-
// Why it is blocked, or what was checked to verify it
|
|
93
|
-
// trust state with no stated reason is an opinion the reader can't weigh.
|
|
59
|
+
// Why it is blocked, or what was checked to verify it; shown verbatim wherever the trust badge is.
|
|
94
60
|
trustReason: z.string().optional(),
|
|
95
|
-
// Both automated checks' evidence
|
|
96
|
-
// distinct from `trust: verified`: passing admission admits code; verified additionally says a human
|
|
97
|
-
// read it. Keeping those claims apart stops automated verdicts being presented as human review.
|
|
61
|
+
// Both automated checks' evidence; distinct from `trust: verified`, which also claims a human read the code.
|
|
98
62
|
securityReview: RegistrySecurityReviewSchema.optional(),
|
|
99
|
-
//
|
|
100
|
-
// sandbox promotes its "update available" badge from ambient to attention-demanding, because there the OLD
|
|
101
|
-
// version is the dangerous one. Asserted by the pull request like trust, and worth exactly that review.
|
|
63
|
+
// The pinned commit fixes a security issue in earlier ones; an installed sandbox's badge turns urgent.
|
|
102
64
|
securityFix: z.boolean().optional(),
|
|
103
|
-
tier: RegistryTierSchema.optional(),
|
|
104
65
|
category: z.string().optional(),
|
|
105
|
-
|
|
106
|
-
* the version, the same three tiers the manifest declares (the author's own inline drawing, then a
|
|
107
|
-
* simple-icons slug, then a name from the app's icon set), and none is required.
|
|
108
|
-
*
|
|
109
|
-
* It rides the CURATED file rather than the generated one, which looks wrong for a derived value until you
|
|
110
|
-
* ask what a registry is for: a listing is what a human decided to publish, and the mark is part of how it
|
|
111
|
-
* presents itself, so it belongs in the row a reviewer reads and can strike out. The generated file holds
|
|
112
|
-
* only what a bot re-reads nightly and nobody reviews. It also has to be here to be of any use at all,
|
|
113
|
-
* this is what the gallery and the in-app browse list render, and neither of them has the manifest: the
|
|
114
|
-
* whole point of the row is that the code has NOT been cloned yet.
|
|
115
|
-
*
|
|
116
|
-
* `art` being reviewable is the reason it is capped and kept as SVG text: it is the one field here that
|
|
117
|
-
* is a picture, and a picture nobody can read in the diff is a picture nobody reviewed. Four kilobytes
|
|
118
|
-
* of readable shapes is a thing a reviewer can strike out; a base64 blob is not. */
|
|
66
|
+
// Copied off the manifest; kept as readable SVG text, not base64, so a reviewer can see it in the diff.
|
|
119
67
|
art: z.string().max(4096).optional(),
|
|
120
68
|
logo: z.string().optional(),
|
|
121
69
|
icon: z.string().optional(),
|
|
@@ -163,23 +111,18 @@ export const RegistryFileSchema = z
|
|
|
163
111
|
});
|
|
164
112
|
export type RegistryFile = z.infer<typeof RegistryFileSchema>;
|
|
165
113
|
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
* re-derivation is the whole value: an author's own checks describe the directory they ran them in, and these
|
|
172
|
-
* describe what an installer actually gets. `sha` binds the answers to the commit they were read from, so a
|
|
173
|
-
* listing repointed since the last scan renders no stale verdicts, the join drops checks whose sha no longer
|
|
174
|
-
* matches rather than letting yesterday's answer describe today's pointer. */
|
|
114
|
+
// Facts read off the source host, keyed by the curated entry's name; deliberately not the upstream head sha,
|
|
115
|
+
// since updating is itself a pull request and this must not invite skipping that review.
|
|
116
|
+
// What the scan re-derives cold at the listing's pinned sha, the same readiness checks an author already ran,
|
|
117
|
+
// done again by a stranger. `sha` binds these answers to their commit, so a repointed listing shows no stale verdicts
|
|
118
|
+
// until the next scan.
|
|
175
119
|
const RegistryChecksSchema = z.object({
|
|
176
120
|
sha: z.string(),
|
|
177
121
|
// "ok", or the reason it is not, verbatim, a verdict with no stated reason is an opinion.
|
|
178
122
|
manifest: z.string(),
|
|
179
123
|
// "ok" / "none" (no UI bundle) / the reason the bundle cannot load where it is installed.
|
|
180
124
|
bundle: z.string(),
|
|
181
|
-
//
|
|
182
|
-
// scan does not know which app version any particular reader runs, but every consumer of this file does.
|
|
125
|
+
// Engines range the manifest declares at that sha; a raw fact, since the scan can't know a reader's app version.
|
|
183
126
|
engines: z.string().optional(),
|
|
184
127
|
});
|
|
185
128
|
export type RegistryChecks = z.infer<typeof RegistryChecksSchema>;
|
|
@@ -187,8 +130,7 @@ export type RegistryChecks = z.infer<typeof RegistryChecksSchema>;
|
|
|
187
130
|
const RegistryFactsEntrySchema = z.object({
|
|
188
131
|
name: z.string(),
|
|
189
132
|
stars: z.number().int().nonnegative().optional(),
|
|
190
|
-
// ISO-8601
|
|
191
|
-
// every listing still has single-digit stars.
|
|
133
|
+
// ISO-8601 last push to the default branch; the tiebreaker that matters while stars stay single-digit.
|
|
192
134
|
pushedAt: z.string().optional(),
|
|
193
135
|
checks: RegistryChecksSchema.optional(),
|
|
194
136
|
});
|
|
@@ -199,8 +141,8 @@ export const RegistryFactsSchema = z.object({
|
|
|
199
141
|
});
|
|
200
142
|
export type RegistryFacts = z.infer<typeof RegistryFactsSchema>;
|
|
201
143
|
|
|
202
|
-
// One row as every surface consumes it:
|
|
203
|
-
//
|
|
144
|
+
// One row as every surface consumes it: curated decision, resolved pointer and upstream facts, already joined.
|
|
145
|
+
// Also the daemon's browse wire shape; the app renders what the site renders.
|
|
204
146
|
export const RegistryEntrySchema = z.object({
|
|
205
147
|
name: z.string(),
|
|
206
148
|
description: z.string().optional(),
|
|
@@ -209,21 +151,16 @@ export const RegistryEntrySchema = z.object({
|
|
|
209
151
|
trust: RegistryTrustSchema,
|
|
210
152
|
trustReason: z.string().optional(),
|
|
211
153
|
securityReview: RegistrySecurityReviewSchema.optional(),
|
|
212
|
-
// False
|
|
213
|
-
// blocked row). The row remains visible so a reader gets a reason instead of a mysteriously missing entry,
|
|
214
|
-
// but every install/update surface refuses to act on it. Third-party registries remain their own trust
|
|
215
|
-
// boundary and resolve their non-blocked rows as admitted without adopting intentic's policy.
|
|
154
|
+
// False when blocked or not current-checked; the row stays visible but install/update won't act.
|
|
216
155
|
admitted: z.boolean(),
|
|
217
156
|
securityFix: z.boolean().optional(),
|
|
218
|
-
tier: RegistryTierSchema,
|
|
219
157
|
category: z.string().optional(),
|
|
220
|
-
// The mark, as the gallery and
|
|
158
|
+
// The mark, as the gallery and browse list draw it.
|
|
221
159
|
art: z.string().optional(),
|
|
222
160
|
logo: z.string().optional(),
|
|
223
161
|
icon: z.string().optional(),
|
|
224
162
|
homepage: z.string().optional(),
|
|
225
|
-
// Absent = a source
|
|
226
|
-
// renders; the install button doesn't.
|
|
163
|
+
// Absent = a source this daemon can't clone (npm, say); the row still renders, the install button doesn't.
|
|
227
164
|
install: RegistryInstallSchema.optional(),
|
|
228
165
|
stars: z.number().int().nonnegative().optional(),
|
|
229
166
|
pushedAt: z.string().optional(),
|
|
@@ -264,8 +201,8 @@ export const isCurrentSecurityReview = (review: RegistrySecurityReview | undefin
|
|
|
264
201
|
review.deterministic.scanner === OFFICIAL_DETERMINISTIC_SCANNER &&
|
|
265
202
|
review.deterministic.version === OFFICIAL_DETERMINISTIC_SCANNER_VERSION;
|
|
266
203
|
|
|
267
|
-
|
|
268
|
-
|
|
204
|
+
// Joins the curated file to the generated facts; `facts` is undefined for a registry that runs no scanner (most private
|
|
205
|
+
// ones).
|
|
269
206
|
export const resolveRegistry = (file: RegistryFile, facts: RegistryFacts | undefined, registryUrl: string): RegistryEntry[] => {
|
|
270
207
|
const byName = new Map(facts?.entries.map((entry) => [entry.name, entry]) ?? []);
|
|
271
208
|
const official = isOfficialRegistryUrl(registryUrl);
|
|
@@ -280,8 +217,7 @@ export const resolveRegistry = (file: RegistryFile, facts: RegistryFacts | undef
|
|
|
280
217
|
kind,
|
|
281
218
|
trust,
|
|
282
219
|
admitted,
|
|
283
|
-
// Absent
|
|
284
|
-
tier: plugin.tier ?? "free",
|
|
220
|
+
// Absent stays absent, preserving what an older registry file already meant.
|
|
285
221
|
...(plugin.description !== undefined ? { description: plugin.description } : {}),
|
|
286
222
|
...(plugin.version !== undefined ? { version: plugin.version } : {}),
|
|
287
223
|
...(plugin.trustReason !== undefined ? { trustReason: plugin.trustReason } : {}),
|
|
@@ -295,20 +231,14 @@ export const resolveRegistry = (file: RegistryFile, facts: RegistryFacts | undef
|
|
|
295
231
|
...(install !== undefined ? { install } : {}),
|
|
296
232
|
...(upstream?.stars !== undefined ? { stars: upstream.stars } : {}),
|
|
297
233
|
...(upstream?.pushedAt !== undefined ? { pushedAt: upstream.pushedAt } : {}),
|
|
298
|
-
// Only when derived from the sha this row still points at
|
|
299
|
-
// until the next scan, which is the honest gap rather than yesterday's verdict on today's pointer.
|
|
234
|
+
// Only when derived from the sha this row still points at; a repoint shows no checks until the next scan.
|
|
300
235
|
...(upstream?.checks !== undefined && upstream.checks.sha === install?.ref ? { checks: upstream.checks } : {}),
|
|
301
236
|
};
|
|
302
237
|
});
|
|
303
238
|
};
|
|
304
239
|
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
* Stars are the obvious sort and the wrong one on day one: every listing will sit at nought to three of them
|
|
308
|
-
* for months, so a pure star sort is a random order wearing a merit badge, and it is the single most
|
|
309
|
-
* purchasable number on GitHub. So: the one field a human actually asserted leads, stars rank within that,
|
|
310
|
-
* and recency breaks the ties that will be the overwhelmingly common case early on. Stars stay VISIBLE
|
|
311
|
-
* either way; a reader can weigh them, they just don't get to be the whole ranking. */
|
|
240
|
+
// Sort order: verified trust leads (the one field a human actually asserted), stars rank within that, recency
|
|
241
|
+
// breaks ties. Stars are purchasable and start near zero for everyone, so they inform the order but don't define it.
|
|
312
242
|
export const compareEntries = (a: RegistryEntry, b: RegistryEntry): number => {
|
|
313
243
|
if ((a.trust === "verified") !== (b.trust === "verified")) {
|
|
314
244
|
return a.trust === "verified" ? -1 : 1;
|
package/src/source.ts
CHANGED
|
@@ -1,12 +1,8 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
* that pointer in the shapes Claude Code's plugin-marketplace format already defines, so one registry repo
|
|
7
|
-
* serves both consumers; `resolveSource` maps the shapes we can clone onto the url/ref/path a capability
|
|
8
|
-
* install takes, and returns undefined for the ones we can't (npm, say) rather than dropping the entry,
|
|
9
|
-
* an entry that exists but can't be installed in a click is information, a missing row is a bug report. */
|
|
3
|
+
// A registry entry's `source` is a pointer to somebody else's repository at a commit, in the shapes Claude Code's
|
|
4
|
+
// plugin-marketplace format defines. `resolveSource` maps the clonable shapes onto url/ref/path, returning undefined
|
|
5
|
+
// (not dropping the entry) for the ones it can't clone (npm, say).
|
|
10
6
|
|
|
11
7
|
// The resolved pointer: exactly the fields a plugin- or extension-capability install needs.
|
|
12
8
|
export const RegistryInstallSchema = z.object({
|
|
@@ -16,10 +12,9 @@ export const RegistryInstallSchema = z.object({
|
|
|
16
12
|
});
|
|
17
13
|
export type RegistryInstall = z.infer<typeof RegistryInstallSchema>;
|
|
18
14
|
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
* "not installable from here" rather than failing the whole file to parse. */
|
|
15
|
+
// A relative path means the code lives in the registry repo itself (metadata.pluginRoot prepends); every other
|
|
16
|
+
// shape points outward. Kept as `unknown` going in: an unrecognized shape degrades to "not installable" rather than
|
|
17
|
+
// failing the whole file to parse.
|
|
23
18
|
export const resolveSource = (source: unknown, registryUrl: string, pluginRoot: string | undefined): RegistryInstall | undefined => {
|
|
24
19
|
if (typeof source === "string") {
|
|
25
20
|
const relative = source.replace(/^\.\//, "");
|
|
@@ -44,17 +39,15 @@ export const resolveSource = (source: unknown, registryUrl: string, pluginRoot:
|
|
|
44
39
|
return undefined;
|
|
45
40
|
};
|
|
46
41
|
|
|
47
|
-
|
|
42
|
+
// A full lowercase commit sha, the only ref an install may be pinned to: a tag or branch can move under it.
|
|
43
|
+
export const FULL_SHA = /^[0-9a-f]{40}$/;
|
|
48
44
|
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
* is still listed and still readable; it just can't be a one-click install, which is the pressure that makes
|
|
53
|
-
* authors pin. Plugins are laxer by design: they load into the agent, not the browser. */
|
|
45
|
+
// Whether this pointer names one immutable commit. An extension install requires it, since extension code runs
|
|
46
|
+
// trusted in the owner's browser and a branch name can move under a force-push; plugins are laxer, they load into the
|
|
47
|
+
// agent, not the browser.
|
|
54
48
|
export const isShaPinned = (install: RegistryInstall | undefined): boolean => install?.ref !== undefined && FULL_SHA.test(install.ref);
|
|
55
49
|
|
|
56
|
-
// `owner/repo` for a GitHub pointer, what the scanner keys
|
|
57
|
-
// Undefined for any host that isn't GitHub, which is a listing we simply carry no stars for.
|
|
50
|
+
// `owner/repo` for a GitHub pointer, what the scanner keys facts by and the gallery links to; undefined off GitHub.
|
|
58
51
|
export const githubRepoOf = (install: RegistryInstall | undefined): string | undefined => {
|
|
59
52
|
if (install === undefined) {
|
|
60
53
|
return undefined;
|