@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 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-api/src/manifest.ts),
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.
@@ -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>;
@@ -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,EAAE,KAAK,eAAe,EAAwC,MAAM,aAAa,CAAC;AAkBzF,eAAO,MAAM,aAAa,oCAAoC,CAAC;AAC/D,eAAO,MAAM,mBAAmB,2CAA2C,CAAC;AAI5E,eAAO,MAAM,qBAAqB,yCAAyC,CAAC;AAI5E,eAAO,MAAM,cAAc,uBAAuB,CAAC;AAOnD,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;AAI/D,eAAO,MAAM,4BAA4B;;;;;;;;;;;;;;iBAcvC,CAAC;AACH,MAAM,MAAM,sBAAsB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,4BAA4B,CAAC,CAAC;AAalF,eAAO,MAAM,mBAAmB;;;;EAA4C,CAAC;AAC7E,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAQhE,eAAO,MAAM,kBAAkB;;;EAA8B,CAAC;AAC9D,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAgE9D,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAiBzB,CAAC;AACP,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAW9D,QAAA,MAAM,oBAAoB;;;;;iBASxB,CAAC;AACH,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAWlE,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;iBAG9B,CAAC;AACH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAIhE,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBA2B9B,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,EAkCxH,CAAC;AASF,eAAO,MAAM,cAAc,MAAO,aAAa,KAAK,aAAa,KAAG,MAWnE,CAAC"}
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 } : {}),
@@ -1 +1 @@
1
- {"version":3,"file":"registry.js","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAwB,qBAAqB,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAkBzF,MAAM,CAAC,MAAM,aAAa,GAAG,iCAAiC,CAAC;AAC/D,MAAM,CAAC,MAAM,mBAAmB,GAAG,wCAAwC,CAAC;AAI5E,MAAM,CAAC,MAAM,qBAAqB,GAAG,sCAAsC,CAAC;AAI5E,MAAM,CAAC,MAAM,cAAc,GAAG,oBAAoB,CAAC;AAOnD,MAAM,CAAC,MAAM,+BAA+B,GAAG,gCAAgC,CAAC;AAChF,MAAM,CAAC,MAAM,0BAA0B,GAAG,qBAAqB,CAAC;AAChE,MAAM,CAAC,MAAM,kCAAkC,GAAG,qCAAqC,CAAC;AACxF,MAAM,CAAC,MAAM,8BAA8B,GAAG,OAAO,CAAC;AACtD,MAAM,CAAC,MAAM,sCAAsC,GAAG,QAAQ,CAAC;AAE/D,MAAM,QAAQ,GAAG,gBAAgB,CAAC;AAElC,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAAC,CAAC,MAAM,CAAC;IACjD,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,QAAQ,EAAE,qCAAqC,CAAC;IACtE,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACtB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IAClC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACzB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC3B,UAAU,EAAE,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE;IAC5B,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACxB,aAAa,EAAE,CAAC,CAAC,MAAM,CAAC;QACpB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;QACzB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;QAC1B,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;QAC1B,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;KAC3B,CAAC;CACL,CAAC,CAAC;AAcH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC;AAS7E,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC;AAG9D,MAAM,uBAAuB,GAAG,CAAC;KAC5B,MAAM,CAAC;IACJ,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAClC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAE9B,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC,CAAC,QAAQ,EAAE;IAChD,KAAK,EAAE,mBAAmB,CAAC,QAAQ,EAAE;IAGrC,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAIlC,cAAc,EAAE,4BAA4B,CAAC,QAAQ,EAAE;IAIvD,WAAW,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IACnC,IAAI,EAAE,kBAAkB,CAAC,QAAQ,EAAE;IACnC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAe/B,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE;IACpC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC3B,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC3B,QAAQ,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;IAC5B,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE;CACtB,CAAC;KACD,WAAW,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;IACxB,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,IAAI,QAAQ,CAAC;IACtC,IAAI,KAAK,KAAK,SAAS,IAAI,CAAC,KAAK,CAAC,WAAW,KAAK,SAAS,IAAI,KAAK,CAAC,WAAW,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;QAC9F,GAAG,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,aAAa,CAAC,EAAE,OAAO,EAAE,8BAA8B,EAAE,CAAC,CAAC;IACrG,CAAC;IACD,IAAI,KAAK,KAAK,UAAU,IAAI,KAAK,CAAC,cAAc,KAAK,SAAS,EAAE,CAAC;QAC7D,GAAG,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,gBAAgB,CAAC,EAAE,OAAO,EAAE,iDAAiD,EAAE,CAAC,CAAC;IAC3H,CAAC;IACD,IAAI,KAAK,CAAC,cAAc,KAAK,SAAS,EAAE,CAAC;QACrC,OAAO;IACX,CAAC;IACD,MAAM,OAAO,GAAG,aAAa,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,EAAE,SAAS,CAAC,CAAC;IAC3D,IAAI,OAAO,EAAE,GAAG,KAAK,KAAK,CAAC,cAAc,CAAC,GAAG,IAAI,OAAO,EAAE,GAAG,KAAK,KAAK,CAAC,cAAc,CAAC,GAAG,IAAI,OAAO,CAAC,IAAI,KAAK,KAAK,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;QACvI,GAAG,CAAC,QAAQ,CAAC;YACT,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,CAAC,gBAAgB,CAAC;YACxB,OAAO,EAAE,0EAA0E;SACtF,CAAC,CAAC;IACP,CAAC;AACL,CAAC,CAAC,CAAC;AAEP,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC;KAC9B,MAAM,CAAC;IACJ,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,QAAQ,EAAE;IACpE,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,uBAAuB,CAAC;CAC5C,CAAC;KACD,WAAW,CAAC,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE;IACvB,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC;QACjD,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC;QACpC,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YACvC,GAAG,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,SAAS,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,4BAA4B,EAAE,CAAC,CAAC;QAC3G,CAAC;QACD,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACrB,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACnB,CAAC;IACL,CAAC;AACL,CAAC,CAAC,CAAC;AAYP,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC;IAClC,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE;IAEf,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;IAEpB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;IAGlB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CACjC,CAAC,CAAC;AAGH,MAAM,wBAAwB,GAAG,CAAC,CAAC,MAAM,CAAC;IACtC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE;IAGhD,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC/B,MAAM,EAAE,oBAAoB,CAAC,QAAQ,EAAE;CAC1C,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC;IACxC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;IACrB,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,wBAAwB,CAAC;CAC7C,CAAC,CAAC;AAKH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC;IACxC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAClC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC9B,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;IACrC,KAAK,EAAE,mBAAmB;IAC1B,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAClC,cAAc,EAAE,4BAA4B,CAAC,QAAQ,EAAE;IAKvD,QAAQ,EAAE,CAAC,CAAC,OAAO,EAAE;IACrB,WAAW,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IACnC,IAAI,EAAE,kBAAkB;IACxB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAE/B,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC1B,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC3B,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC3B,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAG/B,OAAO,EAAE,qBAAqB,CAAC,QAAQ,EAAE;IACzC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE;IAChD,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC/B,MAAM,EAAE,oBAAoB,CAAC,QAAQ,EAAE;CAC1C,CAAC,CAAC;AAGH,MAAM,qBAAqB,GAAG,CAAC,KAAa,EAAsB,EAAE;IAChE,MAAM,GAAG,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,+BAA+B,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACvF,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;QACf,OAAO,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC;YACrC,EAAE,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC;aAC1B,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;aACnB,WAAW,EAAE,EAAE,CAAC;IACzB,CAAC;IACD,IAAI,CAAC;QACD,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC;QAC3B,MAAM,IAAI,GAAG,GAAG,CAAC,QAAQ;aACpB,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC;aACzB,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;aACnB,WAAW,EAAE,CAAC;QACnB,OAAO,GAAG,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,IAAI,EAAE,CAAC;IAC9C,CAAC;IAAC,MAAM,CAAC;QACL,OAAO,SAAS,CAAC;IACrB,CAAC;AACL,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,KAAa,EAAW,EAAE,CAAC,qBAAqB,CAAC,KAAK,CAAC,KAAK,qBAAqB,CAAC,qBAAqB,CAAC,CAAC;AAE/I,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,MAA0C,EAAE,OAAoC,EAAW,EAAE,CACjI,MAAM,KAAK,SAAS;IACpB,MAAM,CAAC,GAAG,KAAK,OAAO,EAAE,GAAG;IAC3B,MAAM,CAAC,GAAG,KAAK,OAAO,CAAC,GAAG;IAC1B,MAAM,CAAC,IAAI,KAAK,OAAO,CAAC,IAAI;IAC5B,MAAM,CAAC,MAAM,KAAK,+BAA+B;IACjD,MAAM,CAAC,QAAQ,KAAK,0BAA0B;IAC9C,MAAM,CAAC,aAAa,CAAC,MAAM,KAAK,kCAAkC;IAClE,MAAM,CAAC,aAAa,CAAC,OAAO,KAAK,8BAA8B;IAC/D,MAAM,CAAC,aAAa,CAAC,OAAO,KAAK,sCAAsC,CAAC;AAI5E,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,IAAkB,EAAE,KAAgC,EAAE,WAAmB,EAAmB,EAAE;IAC1H,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IACjF,MAAM,QAAQ,GAAG,qBAAqB,CAAC,WAAW,CAAC,CAAC;IACpD,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;QAC/B,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACzC,MAAM,OAAO,GAAgC,aAAa,CAAC,MAAM,CAAC,MAAM,EAAE,WAAW,EAAE,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;QAClH,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,IAAI,QAAQ,CAAC;QACrC,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,IAAI,QAAQ,CAAC;QACvC,MAAM,QAAQ,GAAG,KAAK,KAAK,SAAS,IAAI,CAAC,IAAI,KAAK,WAAW,IAAI,CAAC,QAAQ,IAAI,uBAAuB,CAAC,MAAM,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC,CAAC;QACvI,OAAO;YACH,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,IAAI;YACJ,KAAK;YACL,QAAQ;YAER,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,MAAM;YAC3B,GAAG,CAAC,MAAM,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAChF,GAAG,CAAC,MAAM,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACpE,GAAG,CAAC,MAAM,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAChF,GAAG,CAAC,MAAM,CAAC,cAAc,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,MAAM,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACzF,GAAG,CAAC,MAAM,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAChF,GAAG,CAAC,MAAM,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACvE,GAAG,CAAC,MAAM,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACxD,GAAG,CAAC,MAAM,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC3D,GAAG,CAAC,MAAM,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC3D,GAAG,CAAC,MAAM,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACvE,GAAG,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC7C,GAAG,CAAC,QAAQ,EAAE,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACnE,GAAG,CAAC,QAAQ,EAAE,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAG5E,GAAG,CAAC,QAAQ,EAAE,MAAM,KAAK,SAAS,IAAI,QAAQ,CAAC,MAAM,CAAC,GAAG,KAAK,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACjH,CAAC;IACN,CAAC,CAAC,CAAC;AACP,CAAC,CAAC;AASF,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAgB,EAAE,CAAgB,EAAU,EAAE;IACzE,IAAI,CAAC,CAAC,CAAC,KAAK,KAAK,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,KAAK,UAAU,CAAC,EAAE,CAAC;QACxD,OAAO,CAAC,CAAC,KAAK,KAAK,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3C,CAAC;IACD,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,EAAE,CAAC;QACpC,OAAO,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC;IAC3C,CAAC;IACD,IAAI,CAAC,CAAC,CAAC,QAAQ,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,IAAI,EAAE,CAAC,EAAE,CAAC;QAC5C,OAAO,CAAC,CAAC,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC;IAC9D,CAAC;IACD,OAAO,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AACxC,CAAC,CAAC"}
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
@@ -1 +1 @@
1
- {"version":3,"file":"source.d.ts","sourceRoot":"","sources":["../src/source.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAWxB,eAAO,MAAM,qBAAqB;;;;iBAIhC,CAAC;AACH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAMpE,eAAO,MAAM,aAAa,WAAY,OAAO,eAAe,MAAM,cAAc,MAAM,GAAG,SAAS,KAAG,eAAe,GAAG,SAsBtH,CAAC;AASF,eAAO,MAAM,WAAW,YAAa,eAAe,GAAG,SAAS,KAAG,OAAmE,CAAC;AAIvI,eAAO,MAAM,YAAY,YAAa,eAAe,GAAG,SAAS,KAAG,MAAM,GAAG,SAM5E,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) {
@@ -1 +1 @@
1
- {"version":3,"file":"source.js","sourceRoot":"","sources":["../src/source.ts"],"names":[],"mappings":"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"}
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.247.0",
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": "_sandbox/registry"
10
+ "directory": "_shared/registry"
11
11
  },
12
12
  "files": [
13
13
  "dist",
@@ -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, an unstated kind to plugin, and an unstated tier to free`, () => {
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`, tier: `free` });
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
- /* THE EXTENSION REGISTRY: a git repo of pointers, and the two files in it.
5
- *
6
- * intentic hosts no extension code, builds none, and signs none. A registry is a repository whose
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, and the same two strings for the daemon (which clones), the scanner (which commits) and the
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
- // The default the Extensions tab browses and the gallery is built from. A default, not a gate: the browse
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
- // The GitHub topic an author adds to be found. This is discovery only, appearing in the scan gets you a pull
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
- /* THE ADMISSION RECORD for the official registry. Full results live in Trivy and intentic; this is the small,
32
- * durable fact a registry row needs in order to bind both verdicts to what an installer will actually clone.
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
- /* WHAT A LISTING CLAIMS, and precisely what it doesn't.
62
- *
63
- * - `listed` no HUMAN source review is claimed. In the official registry the separate securityReview must
64
- * still show that both automated checks passed; third-party registries remain their own boundary.
65
- * - `verified` both automated checks passed and a human also read the source at that sha. Sorted first and badged.
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, shown verbatim wherever the badge is, because a
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, bound to the complete source identity below. It is deliberately
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
- // This listing's pinned commit fixes a security problem in earlier commits, the fast lane: an installed
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
- /* The mark the row is drawn with, copied off the extension's manifest exactly like the description and
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
- /* Facts read off the source host, keyed by the curated entry's name. Deliberately NOT the upstream head sha:
167
- * the approved sha is the one that runs, updating is a pull request, and a file that advertised "there's a
168
- * newer commit over there" would be inviting a click that skips the review the whole model rests on. */
169
- /* What the scan re-derived COLD at the listing's pinned sha, the same questions the daemon's readiness check
170
- * answers for an author before publishing, asked again by a stranger with nothing but the pointer. That
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
- // The engines range the manifest declares at that sha. A raw fact rather than a verdict on purpose: the
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, last push to the source repo's default branch, the tiebreaker that does the real work while
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: the curated decision, the resolved pointer, and the upstream facts,
203
- // already joined. This is also the daemon's browse wire shape, the app renders what the site renders.
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 only for an executable row the official registry has not put through its current checks (and for a
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 the app's browse list draw it, see the curated file's fields above.
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 the registry format can express but this daemon can't clone (npm, say). The row still
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
- /* Join the curated file to the generated facts. `facts` is undefined for any registry that runs no scanner,
268
- * which is most of them, a private registry of six internal extensions wants the pointers and nothing else. */
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 ⇒ free, so a registry that has never heard of the pool keeps meaning what it always did.
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, a repointed listing renders no checks
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
- /* THE ORDER, and why it isn't just stars.
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
- /* WHERE A REGISTRY ENTRY'S CODE LIVES, and how that resolves to something cloneable.
4
- *
5
- * A registry never hosts code, an entry is a pointer to somebody else's repository at a commit. `source` is
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
- /* A relative path means the code lives inside the registry repo itself, and metadata.pluginRoot prepends (the
20
- * Claude Code spec). Every other shape points outward at a repo of its own. Kept as `unknown` on the way in:
21
- * the format is somebody else's and gains shapes we don't know, and a source we can't read must degrade to
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
- const FULL_SHA = /^[0-9a-f]{40}$/;
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
- /* Whether this pointer names one immutable commit. An EXTENSION install requires it, extension code runs
50
- * trusted in the owner's browser, so the approved code and the running code have to be the same object, and a
51
- * branch name is a promise the upstream can break with a force-push. A registry entry that gives only a branch
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 upstream facts by, and what the gallery links to.
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;