@cogenta/plugins 0.1.2 → 0.2.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/dist/index.d.ts CHANGED
@@ -3,7 +3,7 @@ export { createContentReadHandler, createHttpFetchHandler, createStorageReadHand
3
3
  export type { IsolatedRunResult, PluginDisabledEvent, RunIsolatedOptions, RunPluginOptions, } from './host/worker-runner.js';
4
4
  export { runIsolated, runIsolatedOrThrow, runPlugin } from './host/worker-runner.js';
5
5
  export type { LoadPluginOptions, PluginSource, ResolvedPlugin } from './loader.js';
6
- export { loadPlugin, PLUGIN_MANIFEST_FILE_NAMES, resolveSignatureStatus } from './loader.js';
6
+ export { loadMarketplacePlugin, loadPlugin, PLUGIN_MANIFEST_FILE_NAMES, resolveSignatureStatus, } from './loader.js';
7
7
  export type { PluginBlockProvision, PluginCapabilityName, PluginManifest, PluginManifestIssue, PluginProvides, PluginRuntime, } from './manifest.js';
8
8
  export { definePlugin, PLUGIN_CAPABILITY_NAMES, PLUGIN_RUNTIMES, } from './manifest.js';
9
9
  export type { PluginCapabilityDescription, PluginCapabilityRisk, } from './permissions/describe.js';
@@ -16,6 +16,9 @@ export { detectCapabilitiesNeedingApproval, resolveGrantedCapabilities, } from '
16
16
  export type { GrantedCapabilityReview, PendingCapabilityReview, } from './permissions/review.js';
17
17
  export { describePendingApproval, listGrantedCapabilities, revokeCapability, } from './permissions/review.js';
18
18
  export { ensurePluginTables, PERMISSION_TABLES } from './permissions/tables.js';
19
+ export type { MarketplaceCatalog, MarketplaceCatalogEntry, MarketplaceCatalogFilter, MarketplaceChangelogEntry, MarketplaceInstaller, MarketplaceInstallerOptions, MarketplaceInstallRecord, MarketplaceItemKind, MarketplacePreview, MarketplaceUpdateResult, } from './registries/marketplace.js';
20
+ export { createMarketplaceCatalog, createMarketplaceInstaller } from './registries/marketplace.js';
21
+ export { ensureMarketplaceTables, MARKETPLACE_TABLES } from './registries/marketplace-tables.js';
19
22
  export type { PluginRegistry, PluginRegistryOptions, PluginReviewDecision, PluginReviewResult, PluginSubmissionEntry, PluginSubmissionInput, PluginSubmissionStatus, } from './registries/plugins.js';
20
23
  export { createPluginRegistry } from './registries/plugins.js';
21
24
  export type { SkillRegistry, SkillReviewDecision, SkillReviewResult, SkillSubmissionEntry, SkillSubmissionInput, SkillSubmissionStatus, } from './registries/skills.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  export { createContentReadHandler, createHttpFetchHandler, createStorageReadHandler, createStorageWriteHandler, } from './host/capabilities.js';
2
2
  export { runIsolated, runIsolatedOrThrow, runPlugin } from './host/worker-runner.js';
3
- export { loadPlugin, PLUGIN_MANIFEST_FILE_NAMES, resolveSignatureStatus } from './loader.js';
3
+ export { loadMarketplacePlugin, loadPlugin, PLUGIN_MANIFEST_FILE_NAMES, resolveSignatureStatus, } from './loader.js';
4
4
  export { definePlugin, PLUGIN_CAPABILITY_NAMES, PLUGIN_RUNTIMES, } from './manifest.js';
5
5
  export { DESCRIBABLE_CAPABILITY_NAMES, describeCapability } from './permissions/describe.js';
6
6
  export { createPluginDisableStore } from './permissions/disabled.js';
@@ -8,6 +8,8 @@ export { createPluginGrantStore } from './permissions/grants.js';
8
8
  export { detectCapabilitiesNeedingApproval, resolveGrantedCapabilities, } from './permissions/resolve.js';
9
9
  export { describePendingApproval, listGrantedCapabilities, revokeCapability, } from './permissions/review.js';
10
10
  export { ensurePluginTables, PERMISSION_TABLES } from './permissions/tables.js';
11
+ export { createMarketplaceCatalog, createMarketplaceInstaller } from './registries/marketplace.js';
12
+ export { ensureMarketplaceTables, MARKETPLACE_TABLES } from './registries/marketplace-tables.js';
11
13
  export { createPluginRegistry } from './registries/plugins.js';
12
14
  export { createSkillRegistry } from './registries/skills.js';
13
15
  export { createSkinGallery } from './registries/skins.js';
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,wBAAwB,EACxB,sBAAsB,EACtB,wBAAwB,EACxB,yBAAyB,GAC1B,MAAM,wBAAwB,CAAA;AAO/B,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AAEpF,OAAO,EAAE,UAAU,EAAE,0BAA0B,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAA;AAS5F,OAAO,EACL,YAAY,EACZ,uBAAuB,EACvB,eAAe,GAChB,MAAM,eAAe,CAAA;AAKtB,OAAO,EAAE,4BAA4B,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAA;AAM5F,OAAO,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAA;AAEpE,OAAO,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAA;AAChE,OAAO,EACL,iCAAiC,EACjC,0BAA0B,GAC3B,MAAM,0BAA0B,CAAA;AAKjC,OAAO,EACL,uBAAuB,EACvB,uBAAuB,EACvB,gBAAgB,GACjB,MAAM,yBAAyB,CAAA;AAChC,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAA;AAU/E,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAA;AAS9D,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAA;AAO5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAA;AACzD,OAAO,EAAE,oBAAoB,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AAQ9E,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAA;AAE5D,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAE3E,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAA;AAC7F,OAAO,EACL,mBAAmB,EACnB,oBAAoB,EACpB,WAAW,EACX,YAAY,GACb,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EACL,iBAAiB,EACjB,4BAA4B,EAC5B,+BAA+B,EAC/B,sBAAsB,EACtB,uBAAuB,EACvB,qBAAqB,GACtB,MAAM,qBAAqB,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,wBAAwB,EACxB,sBAAsB,EACtB,wBAAwB,EACxB,yBAAyB,GAC1B,MAAM,wBAAwB,CAAA;AAO/B,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AAEpF,OAAO,EACL,qBAAqB,EACrB,UAAU,EACV,0BAA0B,EAC1B,sBAAsB,GACvB,MAAM,aAAa,CAAA;AASpB,OAAO,EACL,YAAY,EACZ,uBAAuB,EACvB,eAAe,GAChB,MAAM,eAAe,CAAA;AAKtB,OAAO,EAAE,4BAA4B,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAA;AAM5F,OAAO,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAA;AAEpE,OAAO,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAA;AAChE,OAAO,EACL,iCAAiC,EACjC,0BAA0B,GAC3B,MAAM,0BAA0B,CAAA;AAKjC,OAAO,EACL,uBAAuB,EACvB,uBAAuB,EACvB,gBAAgB,GACjB,MAAM,yBAAyB,CAAA;AAChC,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAA;AAa/E,OAAO,EAAE,wBAAwB,EAAE,0BAA0B,EAAE,MAAM,6BAA6B,CAAA;AAClG,OAAO,EAAE,uBAAuB,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAA;AAUhG,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAA;AAS9D,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAA;AAO5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAA;AACzD,OAAO,EAAE,oBAAoB,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AAQ9E,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAA;AAE5D,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAE3E,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAA;AAC7F,OAAO,EACL,mBAAmB,EACnB,oBAAoB,EACpB,WAAW,EACX,YAAY,GACb,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EACL,iBAAiB,EACjB,4BAA4B,EAC5B,+BAA+B,EAC/B,sBAAsB,EACtB,uBAAuB,EACvB,qBAAqB,GACtB,MAAM,qBAAqB,CAAA"}
package/dist/loader.d.ts CHANGED
@@ -78,4 +78,24 @@ export declare function resolveSignatureStatus(source: PluginSource, manifest: P
78
78
  * the plugin's actual runtime is task 3, not this one.
79
79
  */
80
80
  export declare function loadPlugin(reference: string, options?: LoadPluginOptions): Promise<ResolvedPlugin>;
81
+ /**
82
+ * Resolves and loads a plugin the same way `loadPlugin` does, but treats it
83
+ * as `registry`-trust **unconditionally**, whatever shape `packageRoot`
84
+ * has — the marketplace's own stricter promise (L17, "jamais une confiance
85
+ * implicite parce qu'elle vient du registre officiel") is stronger than
86
+ * `loadPlugin`'s ordinary rule, which only requires a signature for a
87
+ * reference that *looks* like a registry package name and lets a local path
88
+ * run unsigned as "dev mode". A marketplace catalog entry's `reference` is
89
+ * routinely a local directory (L17's own scoped choice: an embedded/local
90
+ * catalog, not a real distant registry service, until L13 task 8's API keys
91
+ * land) — without this function, every marketplace install of a local entry
92
+ * would silently take the `local`/dev-mode branch and skip verification
93
+ * entirely, which is exactly the shortcut the lot's own "pièges connus"
94
+ * section forbids.
95
+ *
96
+ * Reuses `findManifestFile`/`importManifest`/`resolveSignatureStatus`
97
+ * as-is — no re-implementation of manifest loading or signature checking,
98
+ * only a different, stricter trust classification of the same pipeline.
99
+ */
100
+ export declare function loadMarketplacePlugin(packageRoot: string, options?: LoadPluginOptions): Promise<ResolvedPlugin>;
81
101
  //# sourceMappingURL=loader.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../src/loader.ts"],"names":[],"mappings":"AAIA,OAAO,EAAgB,KAAK,cAAc,EAAE,MAAM,eAAe,CAAA;AAQjE;;;;;GAKG;AACH,MAAM,MAAM,YAAY,GAAG,UAAU,GAAG,OAAO,GAAG,KAAK,CAAA;AAEvD;;;;;GAKG;AACH,eAAO,MAAM,0BAA0B,YACrC,oBAAoB,EACpB,qBAAqB,EACrB,oBAAoB,EACpB,qBAAqB,CACb,CAAA;AAEV,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,QAAQ,EAAE,cAAc,CAAA;IACjC,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAA;IAC7B,2DAA2D;IAC3D,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B,0DAA0D;IAC1D,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAA;IAC7B,yFAAyF;IACzF,QAAQ,CAAC,gBAAgB,EAAE,OAAO,CAAA;IAClC;;;;;OAKG;IACH,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAA;IACzB,uJAAuJ;IACvJ,QAAQ,CAAC,iBAAiB,EAAE,OAAO,CAAA;CACpC;AA4ED,MAAM,WAAW,iBAAiB;IAChC;;;;;;;;;;OAUG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAA;IAC/B;;;;;;OAMG;IACH,QAAQ,CAAC,iBAAiB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;CAC/C;AAID;;;;;;;;;;;GAWG;AACH,wBAAsB,sBAAsB,CAC1C,MAAM,EAAE,YAAY,EACpB,QAAQ,EAAE,cAAc,EACxB,YAAY,EAAE,MAAM,EACpB,iBAAiB,EAAE,SAAS,MAAM,EAAE,GACnC,OAAO,CAAC;IAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,iBAAiB,EAAE,OAAO,CAAA;CAAE,CAAC,CA0B7E;AAED;;;;;;GAMG;AACH,wBAAsB,UAAU,CAC9B,SAAS,EAAE,MAAM,EACjB,OAAO,GAAE,iBAAsB,GAC9B,OAAO,CAAC,cAAc,CAAC,CAiCzB"}
1
+ {"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../src/loader.ts"],"names":[],"mappings":"AAIA,OAAO,EAAgB,KAAK,cAAc,EAAE,MAAM,eAAe,CAAA;AAQjE;;;;;GAKG;AACH,MAAM,MAAM,YAAY,GAAG,UAAU,GAAG,OAAO,GAAG,KAAK,CAAA;AAEvD;;;;;GAKG;AACH,eAAO,MAAM,0BAA0B,YACrC,oBAAoB,EACpB,qBAAqB,EACrB,oBAAoB,EACpB,qBAAqB,CACb,CAAA;AAEV,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,QAAQ,EAAE,cAAc,CAAA;IACjC,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAA;IAC7B,2DAA2D;IAC3D,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B,0DAA0D;IAC1D,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAA;IAC7B,yFAAyF;IACzF,QAAQ,CAAC,gBAAgB,EAAE,OAAO,CAAA;IAClC;;;;;OAKG;IACH,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAA;IACzB,uJAAuJ;IACvJ,QAAQ,CAAC,iBAAiB,EAAE,OAAO,CAAA;CACpC;AA4ED,MAAM,WAAW,iBAAiB;IAChC;;;;;;;;;;OAUG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAA;IAC/B;;;;;;OAMG;IACH,QAAQ,CAAC,iBAAiB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;CAC/C;AAID;;;;;;;;;;;GAWG;AACH,wBAAsB,sBAAsB,CAC1C,MAAM,EAAE,YAAY,EACpB,QAAQ,EAAE,cAAc,EACxB,YAAY,EAAE,MAAM,EACpB,iBAAiB,EAAE,SAAS,MAAM,EAAE,GACnC,OAAO,CAAC;IAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,iBAAiB,EAAE,OAAO,CAAA;CAAE,CAAC,CA0B7E;AAED;;;;;;GAMG;AACH,wBAAsB,UAAU,CAC9B,SAAS,EAAE,MAAM,EACjB,OAAO,GAAE,iBAAsB,GAC9B,OAAO,CAAC,cAAc,CAAC,CAiCzB;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAsB,qBAAqB,CACzC,WAAW,EAAE,MAAM,EACnB,OAAO,GAAE,iBAAsB,GAC9B,OAAO,CAAC,cAAc,CAAC,CAgCzB"}
package/dist/loader.js CHANGED
@@ -155,6 +155,50 @@ export async function loadPlugin(reference, options = {}) {
155
155
  signatureVerified,
156
156
  };
157
157
  }
158
+ /**
159
+ * Resolves and loads a plugin the same way `loadPlugin` does, but treats it
160
+ * as `registry`-trust **unconditionally**, whatever shape `packageRoot`
161
+ * has — the marketplace's own stricter promise (L17, "jamais une confiance
162
+ * implicite parce qu'elle vient du registre officiel") is stronger than
163
+ * `loadPlugin`'s ordinary rule, which only requires a signature for a
164
+ * reference that *looks* like a registry package name and lets a local path
165
+ * run unsigned as "dev mode". A marketplace catalog entry's `reference` is
166
+ * routinely a local directory (L17's own scoped choice: an embedded/local
167
+ * catalog, not a real distant registry service, until L13 task 8's API keys
168
+ * land) — without this function, every marketplace install of a local entry
169
+ * would silently take the `local`/dev-mode branch and skip verification
170
+ * entirely, which is exactly the shortcut the lot's own "pièges connus"
171
+ * section forbids.
172
+ *
173
+ * Reuses `findManifestFile`/`importManifest`/`resolveSignatureStatus`
174
+ * as-is — no re-implementation of manifest loading or signature checking,
175
+ * only a different, stricter trust classification of the same pipeline.
176
+ */
177
+ export async function loadMarketplacePlugin(packageRoot, options = {}) {
178
+ const engineVersion = options.engineVersion ?? NO_REAL_ENGINE_VERSION_YET;
179
+ const trustedPublicKeys = options.trustedPublicKeys ?? TRUSTED_REGISTRY_PUBLIC_KEYS;
180
+ const stats = await stat(packageRoot).catch(() => null);
181
+ if (stats === null || !stats.isDirectory()) {
182
+ throw new CogentaError({
183
+ code: 'PLUGIN_SOURCE_NOT_FOUND',
184
+ message: `No plugin directory at "${packageRoot}".`,
185
+ hint: 'Check the marketplace catalog entry’s reference — it must be an existing directory.',
186
+ details: { reference: packageRoot },
187
+ });
188
+ }
189
+ const manifestPath = await findManifestFile(packageRoot);
190
+ const manifest = await importManifest(manifestPath);
191
+ const { devMode, signatureVerified } = await resolveSignatureStatus('registry', manifest, manifestPath, trustedPublicKeys);
192
+ return {
193
+ manifest,
194
+ source: 'registry',
195
+ packageRoot,
196
+ manifestPath,
197
+ engineCompatible: satisfiesRange(engineVersion, manifest.engine),
198
+ devMode,
199
+ signatureVerified,
200
+ };
201
+ }
158
202
  async function resolvePackageRoot(reference, source) {
159
203
  if (source === 'local') {
160
204
  const stats = await stat(reference).catch(() => null);
@@ -1 +1 @@
1
- {"version":3,"file":"loader.js","sourceRoot":"","sources":["../src/loader.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"loader.js","sourceRoot":"","sources":["../src/loader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAA;AAC/C,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AACrD,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AAC5C,OAAO,EAAE,YAAY,EAAuB,MAAM,eAAe,CAAA;AACjE,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAC5C,OAAO,EACL,iBAAiB,EACjB,4BAA4B,EAC5B,qBAAqB,GACtB,MAAM,qBAAqB,CAAA;AAU5B;;;;;GAKG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG;IACxC,oBAAoB;IACpB,qBAAqB;IACrB,oBAAoB;IACpB,qBAAqB;CACb,CAAA;AAsBV,KAAK,UAAU,MAAM,CAAC,IAAY;IAChC,IAAI,CAAC;QACH,MAAM,MAAM,CAAC,IAAI,CAAC,CAAA;QAClB,OAAO,IAAI,CAAA;IACb,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAA;IACd,CAAC;AACH,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,cAAc,CAAC,SAAiB;IACvC,OAAO,CACL,SAAS,CAAC,UAAU,CAAC,MAAM,CAAC;QAC5B,SAAS,CAAC,UAAU,CAAC,SAAS,CAAC;QAC/B,sBAAsB,CAAC,IAAI,CAAC,SAAS,CAAC,CACvC,CAAA;AACH,CAAC;AAED,SAAS,kBAAkB,CAAC,SAAiB;IAC3C,OAAO,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,UAAU,CAAC,SAAS,CAAC,CAAA;AACxF,CAAC;AAED,KAAK,UAAU,gBAAgB,CAAC,WAAmB;IACjD,KAAK,MAAM,IAAI,IAAI,0BAA0B,EAAE,CAAC;QAC9C,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,CAAA;QACzC,IAAI,MAAM,MAAM,CAAC,SAAS,CAAC;YAAE,OAAO,SAAS,CAAA;IAC/C,CAAC;IACD,MAAM,IAAI,YAAY,CAAC;QACrB,IAAI,EAAE,gCAAgC;QACtC,OAAO,EAAE,+BAA+B,WAAW,GAAG;QACtD,IAAI,EAAE,eAAe,0BAA0B,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;QAC7D,OAAO,EAAE,EAAE,WAAW,EAAE;KACzB,CAAC,CAAA;AACJ,CAAC;AAED,KAAK,UAAU,cAAc,CAAC,YAAoB;IAChD,IAAI,MAA6B,CAAA;IACjC,IAAI,CAAC;QACH,MAAM,GAAG,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,CAA0B,CAAA;IACpF,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,YAAY,CAAC;YACrB,IAAI,EAAE,6BAA6B;YACnC,OAAO,EAAE,kBAAkB,YAAY,KAAK,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;YACpG,IAAI,EAAE,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC;gBAChC,CAAC,CAAC,sHAAsH;gBACxH,CAAC,CAAC,gFAAgF;YACpF,KAAK,EAAE,KAAK;YACZ,OAAO,EAAE,EAAE,YAAY,EAAE;SAC1B,CAAC,CAAA;IACJ,CAAC;IAED,IAAI,MAAM,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;QACjC,MAAM,IAAI,YAAY,CAAC;YACrB,IAAI,EAAE,gCAAgC;YACtC,OAAO,EAAE,GAAG,YAAY,yBAAyB;YACjD,IAAI,EAAE,2EAA2E;YACjF,OAAO,EAAE,EAAE,YAAY,EAAE;SAC1B,CAAC,CAAA;IACJ,CAAC;IAED,wEAAwE;IACxE,qEAAqE;IACrE,sEAAsE;IACtE,8CAA8C;IAC9C,OAAO,YAAY,CAAC,MAAM,CAAC,OAAyB,CAAC,CAAA;AACvD,CAAC;AAyBD,MAAM,0BAA0B,GAAG,OAAO,CAAA;AAE1C;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,MAAoB,EACpB,QAAwB,EACxB,YAAoB,EACpB,iBAAoC;IAEpC,IAAI,MAAM,KAAK,UAAU,EAAE,CAAC;QAC1B,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,iBAAiB,EAAE,KAAK,EAAE,CAAA;IACpD,CAAC;IAED,MAAM,SAAS,GAAG,MAAM,iBAAiB,CAAC,YAAY,CAAC,CAAA;IACvD,IAAI,SAAS,KAAK,IAAI,EAAE,CAAC;QACvB,MAAM,IAAI,YAAY,CAAC;YACrB,IAAI,EAAE,0BAA0B;YAChC,OAAO,EAAE,WAAW,QAAQ,CAAC,IAAI,8BAA8B,YAAY,OAAO;YAClF,IAAI,EAAE,0FAA0F;YAChG,OAAO,EAAE,EAAE,UAAU,EAAE,QAAQ,CAAC,IAAI,EAAE,YAAY,EAAE;SACrD,CAAC,CAAA;IACJ,CAAC;IAED,MAAM,QAAQ,GAAG,qBAAqB,CAAC,QAAQ,EAAE,SAAS,EAAE,iBAAiB,CAAC,CAAA;IAC9E,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,IAAI,YAAY,CAAC;YACrB,IAAI,EAAE,0BAA0B;YAChC,OAAO,EAAE,WAAW,QAAQ,CAAC,IAAI,+CAA+C;YAChF,IAAI,EAAE,iGAAiG;YACvG,OAAO,EAAE,EAAE,UAAU,EAAE,QAAQ,CAAC,IAAI,EAAE,YAAY,EAAE;SACrD,CAAC,CAAA;IACJ,CAAC;IAED,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAAA;AACpD,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,SAAiB,EACjB,OAAO,GAAsB,EAAE;IAE/B,MAAM,aAAa,GAAG,OAAO,CAAC,aAAa,IAAI,0BAA0B,CAAA;IACzE,MAAM,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,IAAI,4BAA4B,CAAA;IAEnF,IAAI,cAAc,CAAC,SAAS,CAAC,EAAE,CAAC;QAC9B,MAAM,IAAI,YAAY,CAAC;YACrB,IAAI,EAAE,yBAAyB;YAC/B,OAAO,EAAE,gDAAgD,SAAS,IAAI;YACtE,IAAI,EAAE,+DAA+D;YACrE,OAAO,EAAE,EAAE,SAAS,EAAE;SACvB,CAAC,CAAA;IACJ,CAAC;IAED,MAAM,MAAM,GAAiB,kBAAkB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,CAAA;IACjF,MAAM,WAAW,GAAG,MAAM,kBAAkB,CAAC,SAAS,EAAE,MAAM,CAAC,CAAA;IAC/D,MAAM,YAAY,GAAG,MAAM,gBAAgB,CAAC,WAAW,CAAC,CAAA;IACxD,MAAM,QAAQ,GAAG,MAAM,cAAc,CAAC,YAAY,CAAC,CAAA;IACnD,MAAM,EAAE,OAAO,EAAE,iBAAiB,EAAE,GAAG,MAAM,sBAAsB,CACjE,MAAM,EACN,QAAQ,EACR,YAAY,EACZ,iBAAiB,CAClB,CAAA;IAED,OAAO;QACL,QAAQ;QACR,MAAM;QACN,WAAW;QACX,YAAY;QACZ,gBAAgB,EAAE,cAAc,CAAC,aAAa,EAAE,QAAQ,CAAC,MAAM,CAAC;QAChE,OAAO;QACP,iBAAiB;KAClB,CAAA;AACH,CAAC;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,WAAmB,EACnB,OAAO,GAAsB,EAAE;IAE/B,MAAM,aAAa,GAAG,OAAO,CAAC,aAAa,IAAI,0BAA0B,CAAA;IACzE,MAAM,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,IAAI,4BAA4B,CAAA;IAEnF,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAA;IACvD,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;QAC3C,MAAM,IAAI,YAAY,CAAC;YACrB,IAAI,EAAE,yBAAyB;YAC/B,OAAO,EAAE,2BAA2B,WAAW,IAAI;YACnD,IAAI,EAAE,qFAAqF;YAC3F,OAAO,EAAE,EAAE,SAAS,EAAE,WAAW,EAAE;SACpC,CAAC,CAAA;IACJ,CAAC;IAED,MAAM,YAAY,GAAG,MAAM,gBAAgB,CAAC,WAAW,CAAC,CAAA;IACxD,MAAM,QAAQ,GAAG,MAAM,cAAc,CAAC,YAAY,CAAC,CAAA;IACnD,MAAM,EAAE,OAAO,EAAE,iBAAiB,EAAE,GAAG,MAAM,sBAAsB,CACjE,UAAU,EACV,QAAQ,EACR,YAAY,EACZ,iBAAiB,CAClB,CAAA;IAED,OAAO;QACL,QAAQ;QACR,MAAM,EAAE,UAAU;QAClB,WAAW;QACX,YAAY;QACZ,gBAAgB,EAAE,cAAc,CAAC,aAAa,EAAE,QAAQ,CAAC,MAAM,CAAC;QAChE,OAAO;QACP,iBAAiB;KAClB,CAAA;AACH,CAAC;AAED,KAAK,UAAU,kBAAkB,CAAC,SAAiB,EAAE,MAAoB;IACvE,IAAI,MAAM,KAAK,OAAO,EAAE,CAAC;QACvB,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAA;QACrD,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;YAC3C,MAAM,IAAI,YAAY,CAAC;gBACrB,IAAI,EAAE,yBAAyB;gBAC/B,OAAO,EAAE,2BAA2B,SAAS,IAAI;gBACjD,IAAI,EAAE,oDAAoD;gBAC1D,OAAO,EAAE,EAAE,SAAS,EAAE;aACvB,CAAC,CAAA;QACJ,CAAC;QACD,OAAO,SAAS,CAAA;IAClB,CAAC;IAED,uEAAuE;IACvE,sEAAsE;IACtE,0EAA0E;IAC1E,0EAA0E;IAC1E,mBAAmB;IACnB,IAAI,CAAC;QACH,MAAM,WAAW,GAAG,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,SAAS,eAAe,CAAC,CAAA;QACpE,OAAO,OAAO,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC,CAAA;IAC5C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,YAAY,CAAC;YACrB,IAAI,EAAE,yBAAyB;YAC/B,OAAO,EAAE,qCAAqC,SAAS,MAAM,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;YACrH,IAAI,EAAE,2DAA2D;YACjE,KAAK,EAAE,KAAK;YACZ,OAAO,EAAE,EAAE,SAAS,EAAE;SACvB,CAAC,CAAA;IACJ,CAAC;AACH,CAAC"}
@@ -0,0 +1,16 @@
1
+ import { type DatabaseHandle } from '@cogenta/core';
2
+ export declare const MARKETPLACE_TABLES: {
3
+ readonly installs: 'cogenta_marketplace_installs';
4
+ };
5
+ /**
6
+ * Owned by `@cogenta/plugins`, following `permissions/tables.ts`'s
7
+ * `ensurePluginTables` pattern exactly. One row per marketplace catalog item
8
+ * that has actually been installed — separate from the four submission
9
+ * registries (`./tables.js`), which track "may this be listed" (a review
10
+ * decision), never "is this active on this installation" (an install
11
+ * decision). `item_id` is the catalog entry's own id, not the plugin name:
12
+ * the catalog is the caller's concern (`createMarketplaceCatalog`), this
13
+ * table only remembers what was installed from it.
14
+ */
15
+ export declare function ensureMarketplaceTables(db: DatabaseHandle): Promise<void>;
16
+ //# sourceMappingURL=marketplace-tables.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"marketplace-tables.d.ts","sourceRoot":"","sources":["../../src/registries/marketplace-tables.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,cAAc,EAKpB,MAAM,eAAe,CAAA;AAEtB,eAAO,MAAM,kBAAkB;aAC7B,QAAQ,EAAE,8BAA8B;CAChC,CAAA;AAMV;;;;;;;;;GASG;AACH,wBAAsB,uBAAuB,CAAC,EAAE,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAmB/E"}
@@ -0,0 +1,37 @@
1
+ import { identifier, sql, unsafeRaw, } from '@cogenta/core';
2
+ export const MARKETPLACE_TABLES = {
3
+ installs: 'cogenta_marketplace_installs',
4
+ };
5
+ function textColumn(dialect, length) {
6
+ return unsafeRaw(dialect === 'sqlite' ? 'text' : `varchar(${length})`);
7
+ }
8
+ /**
9
+ * Owned by `@cogenta/plugins`, following `permissions/tables.ts`'s
10
+ * `ensurePluginTables` pattern exactly. One row per marketplace catalog item
11
+ * that has actually been installed — separate from the four submission
12
+ * registries (`./tables.js`), which track "may this be listed" (a review
13
+ * decision), never "is this active on this installation" (an install
14
+ * decision). `item_id` is the catalog entry's own id, not the plugin name:
15
+ * the catalog is the caller's concern (`createMarketplaceCatalog`), this
16
+ * table only remembers what was installed from it.
17
+ */
18
+ export async function ensureMarketplaceTables(db) {
19
+ const d = db.dialect;
20
+ const installs = identifier(MARKETPLACE_TABLES.installs, d);
21
+ const t255 = textColumn(d, 255);
22
+ const tLong = unsafeRaw(d === 'sqlite' ? 'text' : 'text');
23
+ await db.query(sql `
24
+ create table if not exists ${installs} (
25
+ item_id ${t255} not null primary key,
26
+ kind ${t255} not null,
27
+ display_name ${t255} not null,
28
+ reference ${tLong} not null,
29
+ plugin_name ${t255},
30
+ plugin_version ${t255},
31
+ signature_verified ${t255} not null,
32
+ installed_by ${t255},
33
+ installed_at ${t255} not null,
34
+ updated_at ${t255} not null
35
+ )`);
36
+ }
37
+ //# sourceMappingURL=marketplace-tables.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"marketplace-tables.js","sourceRoot":"","sources":["../../src/registries/marketplace-tables.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,UAAU,EAEV,GAAG,EACH,SAAS,GACV,MAAM,eAAe,CAAA;AAEtB,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,QAAQ,EAAE,8BAA8B;CAChC,CAAA;AAEV,SAAS,UAAU,CAAC,OAAwB,EAAE,MAAc;IAC1D,OAAO,SAAS,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,MAAM,GAAG,CAAC,CAAA;AACxE,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAAC,EAAkB;IAC9D,MAAM,CAAC,GAAG,EAAE,CAAC,OAAO,CAAA;IACpB,MAAM,QAAQ,GAAG,UAAU,CAAC,kBAAkB,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAA;IAC3D,MAAM,IAAI,GAAG,UAAU,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;IAC/B,MAAM,KAAK,GAAG,SAAS,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAA;IAEzD,MAAM,EAAE,CAAC,KAAK,CAAC,GAAG,CAAA;iCACa,QAAQ;gBACzB,IAAI;aACP,IAAI;qBACI,IAAI;kBACP,KAAK;oBACH,IAAI;uBACD,IAAI;2BACA,IAAI;qBACV,IAAI;qBACJ,IAAI;mBACN,IAAI;MACjB,CAAC,CAAA;AACP,CAAC"}
@@ -0,0 +1,122 @@
1
+ import { type DatabaseHandle } from '@cogenta/core';
2
+ import { type PluginCapabilityDescription } from '../permissions/describe.js';
3
+ import type { PluginGrantStore } from '../permissions/grants.js';
4
+ /**
5
+ * L17 task 1 — "Registre consultable (recherche, catégories)".
6
+ *
7
+ * Scoped, deliberately, as a **local/embedded** catalog: the lot doc names a
8
+ * dependency on L13 task 8 (API keys) "si la marketplace est un service
9
+ * distinct interrogé par API" — L13 task 8 was never built in this
10
+ * repository, so there is no real remote marketplace service to call. This
11
+ * is an in-memory, read-only directory of installable items the caller
12
+ * assembles (e.g. `@cogenta/cli` wiring already-installed local plugins
13
+ * alongside a small example catalog) — not a second submission-review
14
+ * pipeline like the four `./tables.js` registries, and not a fetch to any
15
+ * external host.
16
+ */
17
+ export type MarketplaceItemKind = 'plugin' | 'theme' | 'skin' | 'skill';
18
+ export interface MarketplaceChangelogEntry {
19
+ readonly version: string;
20
+ readonly notes: string;
21
+ }
22
+ export interface MarketplaceCatalogEntry {
23
+ readonly id: string;
24
+ readonly kind: MarketplaceItemKind;
25
+ readonly displayName: string;
26
+ readonly description: string;
27
+ /** Free-text category, used for the catalog's category filter. */
28
+ readonly category: string;
29
+ /**
30
+ * Opaque to the catalog itself — for `kind: 'plugin'`, an absolute local
31
+ * directory `loadMarketplacePlugin` can resolve. Never interpreted here.
32
+ */
33
+ readonly reference: string;
34
+ readonly screenshots?: readonly string[];
35
+ readonly changelog?: readonly MarketplaceChangelogEntry[];
36
+ }
37
+ export interface MarketplaceCatalogFilter {
38
+ readonly kind?: MarketplaceItemKind;
39
+ /** Matched, case-insensitively, against `displayName`, `description` and `category`. */
40
+ readonly query?: string;
41
+ }
42
+ export interface MarketplaceCatalog {
43
+ list(filter?: MarketplaceCatalogFilter): readonly MarketplaceCatalogEntry[];
44
+ get(id: string): MarketplaceCatalogEntry | null;
45
+ }
46
+ /** A read-only in-memory catalog over a caller-supplied entry list. */
47
+ export declare function createMarketplaceCatalog(entries: readonly MarketplaceCatalogEntry[]): MarketplaceCatalog;
48
+ /** One installed marketplace item, as persisted. */
49
+ export interface MarketplaceInstallRecord {
50
+ readonly itemId: string;
51
+ readonly kind: MarketplaceItemKind;
52
+ readonly displayName: string;
53
+ readonly reference: string;
54
+ readonly pluginName: string | null;
55
+ readonly pluginVersion: string | null;
56
+ readonly signatureVerified: boolean;
57
+ readonly installedBy: string | null;
58
+ readonly installedAt: string;
59
+ readonly updatedAt: string;
60
+ }
61
+ /** What viewing an item's "fiche détaillée" (task 3) needs, before installing. */
62
+ export interface MarketplacePreview {
63
+ readonly entry: MarketplaceCatalogEntry;
64
+ readonly supported: boolean;
65
+ readonly signatureVerified: boolean;
66
+ readonly capabilities: readonly (PluginCapabilityDescription & {
67
+ readonly capability: string;
68
+ })[];
69
+ /** Set when resolution/verification failed — the real `CogentaError` code, e.g. `PLUGIN_SIGNATURE_INVALID`. */
70
+ readonly error?: {
71
+ readonly code: string;
72
+ readonly message: string;
73
+ };
74
+ }
75
+ export interface MarketplaceUpdateResult {
76
+ readonly record: MarketplaceInstallRecord;
77
+ /** Newly-declared capabilities the previous grants don't cover — never auto-granted, ever. */
78
+ readonly pendingApproval: readonly (PluginCapabilityDescription & {
79
+ readonly capability: string;
80
+ })[];
81
+ }
82
+ export interface MarketplaceInstaller {
83
+ /** Resolves and verifies signature — never installs, never throws for a bad signature (returns it in `error`). */
84
+ preview(entry: MarketplaceCatalogEntry): Promise<MarketplacePreview>;
85
+ /**
86
+ * Installs one catalog entry. **Only `kind: 'plugin'` is supported** —
87
+ * L17's own "pièges connus" line ("une marketplace est une nouvelle
88
+ * surface de confiance") is specifically about code execution, which only
89
+ * a plugin does; theme/skin/skill installation is out of scope for this
90
+ * pass and refused honestly (`MARKETPLACE_KIND_UNSUPPORTED`) rather than
91
+ * silently accepted with no real verification behind it.
92
+ *
93
+ * Always calls `loadMarketplacePlugin`, which always requires (and
94
+ * verifies) a signature — there is no parameter here, and none upstream,
95
+ * that can skip that call. A missing or invalid signature throws the real
96
+ * `PLUGIN_SIGNATURE_MISSING`/`PLUGIN_SIGNATURE_INVALID` and nothing is
97
+ * persisted.
98
+ */
99
+ install(entry: MarketplaceCatalogEntry, actorId: string | null): Promise<MarketplaceInstallRecord>;
100
+ /**
101
+ * Re-verifies signature against a (possibly new) catalog entry for an
102
+ * already-installed item. If the resolved manifest declares a capability
103
+ * no existing grant covers, the update is refused
104
+ * (`MARKETPLACE_UPDATE_REQUIRES_APPROVAL`) unless the caller passes
105
+ * `confirmPendingPermissions: true` — and even then, no capability is
106
+ * granted here: `PluginGrantStore.grant` is a separate, explicit step, so
107
+ * "confirming" only unblocks the version bump, never auto-grants.
108
+ */
109
+ update(entry: MarketplaceCatalogEntry, actorId: string | null, options?: {
110
+ readonly confirmPendingPermissions?: boolean;
111
+ }): Promise<MarketplaceUpdateResult>;
112
+ list(): Promise<readonly MarketplaceInstallRecord[]>;
113
+ get(itemId: string): Promise<MarketplaceInstallRecord | null>;
114
+ uninstall(itemId: string): Promise<void>;
115
+ }
116
+ export interface MarketplaceInstallerOptions {
117
+ readonly trustedPublicKeys?: readonly string[];
118
+ readonly grantStore: PluginGrantStore;
119
+ readonly now?: () => number;
120
+ }
121
+ export declare function createMarketplaceInstaller(db: DatabaseHandle, options: MarketplaceInstallerOptions): MarketplaceInstaller;
122
+ //# sourceMappingURL=marketplace.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"marketplace.d.ts","sourceRoot":"","sources":["../../src/registries/marketplace.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,197 @@
1
+ import { CogentaError, identifier, sql } from '@cogenta/core';
2
+ import { loadMarketplacePlugin } from '../loader.js';
3
+ import { describeCapability } from '../permissions/describe.js';
4
+ import { detectCapabilitiesNeedingApproval } from '../permissions/resolve.js';
5
+ import { MARKETPLACE_TABLES } from './marketplace-tables.js';
6
+ function matches(entry, filter) {
7
+ if (filter.kind !== undefined && entry.kind !== filter.kind)
8
+ return false;
9
+ if (filter.query === undefined || filter.query.trim() === '')
10
+ return true;
11
+ const needle = filter.query.trim().toLowerCase();
12
+ return (entry.displayName.toLowerCase().includes(needle) ||
13
+ entry.description.toLowerCase().includes(needle) ||
14
+ entry.category.toLowerCase().includes(needle));
15
+ }
16
+ /** A read-only in-memory catalog over a caller-supplied entry list. */
17
+ export function createMarketplaceCatalog(entries) {
18
+ const byId = new Map(entries.map((entry) => [entry.id, entry]));
19
+ return {
20
+ list(filter = {}) {
21
+ return entries.filter((entry) => matches(entry, filter));
22
+ },
23
+ get(id) {
24
+ return byId.get(id) ?? null;
25
+ },
26
+ };
27
+ }
28
+ function toRecord(row) {
29
+ return {
30
+ itemId: row.item_id,
31
+ kind: row.kind,
32
+ displayName: row.display_name,
33
+ reference: row.reference,
34
+ pluginName: row.plugin_name,
35
+ pluginVersion: row.plugin_version,
36
+ signatureVerified: row.signature_verified === 'true',
37
+ installedBy: row.installed_by,
38
+ installedAt: row.installed_at,
39
+ updatedAt: row.updated_at,
40
+ };
41
+ }
42
+ function unsupportedKind(entry) {
43
+ return new CogentaError({
44
+ code: 'MARKETPLACE_KIND_UNSUPPORTED',
45
+ message: `The marketplace does not install "${entry.kind}" items yet — only "plugin".`,
46
+ hint: 'Themes, skins and skills go through their own registries (@cogenta/plugins’ createThemeRegistry/createSkinGallery/createSkillRegistry) for now.',
47
+ details: { itemId: entry.id, kind: entry.kind },
48
+ });
49
+ }
50
+ function describeAll(capabilities) {
51
+ return capabilities.map((capability) => ({ capability, ...describeCapability(capability) }));
52
+ }
53
+ export function createMarketplaceInstaller(db, options) {
54
+ const installs = identifier(MARKETPLACE_TABLES.installs, db.dialect);
55
+ const now = options.now ?? Date.now;
56
+ const trustedPublicKeys = options.trustedPublicKeys ?? [];
57
+ const grantStore = options.grantStore;
58
+ async function getRecord(itemId) {
59
+ const result = await db.query(sql `
60
+ select * from ${installs} where item_id = ${itemId}`);
61
+ const row = result.rows[0];
62
+ return row === undefined ? null : toRecord(row);
63
+ }
64
+ async function resolveOrError(entry) {
65
+ try {
66
+ const resolved = await loadMarketplacePlugin(entry.reference, { trustedPublicKeys });
67
+ return {
68
+ ok: true,
69
+ manifest: resolved.manifest,
70
+ signatureVerified: resolved.signatureVerified,
71
+ };
72
+ }
73
+ catch (error) {
74
+ if (error instanceof CogentaError) {
75
+ return { ok: false, error: { code: error.code, message: error.message } };
76
+ }
77
+ throw error;
78
+ }
79
+ }
80
+ return {
81
+ async preview(entry) {
82
+ if (entry.kind !== 'plugin') {
83
+ return { entry, supported: false, signatureVerified: false, capabilities: [] };
84
+ }
85
+ const resolution = await resolveOrError(entry);
86
+ if (!resolution.ok) {
87
+ return {
88
+ entry,
89
+ supported: true,
90
+ signatureVerified: false,
91
+ capabilities: [],
92
+ error: resolution.error,
93
+ };
94
+ }
95
+ return {
96
+ entry,
97
+ supported: true,
98
+ signatureVerified: resolution.signatureVerified,
99
+ capabilities: describeAll(resolution.manifest.capabilities),
100
+ };
101
+ },
102
+ async install(entry, actorId) {
103
+ if (entry.kind !== 'plugin')
104
+ throw unsupportedKind(entry);
105
+ // Never a soft catch here: an invalid/missing signature throws and
106
+ // nothing below runs — this is the one line the whole task hinges on.
107
+ const resolved = await loadMarketplacePlugin(entry.reference, { trustedPublicKeys });
108
+ const timestamp = new Date(now()).toISOString();
109
+ // Delete-then-insert rather than a dialect-specific upsert (`on
110
+ // conflict` on Postgres/SQLite, `on duplicate key` on MySQL) — the
111
+ // same portable idiom `PluginGrantStore.grant` already uses
112
+ // (`../permissions/grants.js`) for the identical "re-installing is
113
+ // idempotent, not a duplicate row" requirement.
114
+ await db.query(sql `delete from ${installs} where item_id = ${entry.id}`);
115
+ await db.query(sql `
116
+ insert into ${installs}
117
+ (item_id, kind, display_name, reference, plugin_name, plugin_version,
118
+ signature_verified, installed_by, installed_at, updated_at)
119
+ values
120
+ (${entry.id}, ${entry.kind}, ${entry.displayName}, ${entry.reference},
121
+ ${resolved.manifest.name}, ${resolved.manifest.version},
122
+ ${String(resolved.signatureVerified)}, ${actorId}, ${timestamp}, ${timestamp})`);
123
+ return {
124
+ itemId: entry.id,
125
+ kind: entry.kind,
126
+ displayName: entry.displayName,
127
+ reference: entry.reference,
128
+ pluginName: resolved.manifest.name,
129
+ pluginVersion: resolved.manifest.version,
130
+ signatureVerified: resolved.signatureVerified,
131
+ installedBy: actorId,
132
+ installedAt: timestamp,
133
+ updatedAt: timestamp,
134
+ };
135
+ },
136
+ async update(entry, actorId, updateOptions = {}) {
137
+ if (entry.kind !== 'plugin')
138
+ throw unsupportedKind(entry);
139
+ const existing = await getRecord(entry.id);
140
+ if (existing === null) {
141
+ throw new CogentaError({
142
+ code: 'MARKETPLACE_NOT_INSTALLED',
143
+ message: `"${entry.displayName}" is not installed, so it cannot be updated.`,
144
+ hint: 'Install it first.',
145
+ details: { itemId: entry.id },
146
+ });
147
+ }
148
+ // Signature is verified before anything else here too — an update
149
+ // never trusts the previously-installed state as a substitute for
150
+ // re-checking the new reference.
151
+ const resolved = await loadMarketplacePlugin(entry.reference, { trustedPublicKeys });
152
+ const previousGrants = existing.pluginName === null ? [] : await grantStore.listGrants(existing.pluginName);
153
+ const pending = detectCapabilitiesNeedingApproval(resolved.manifest, previousGrants.map((grant) => grant.capability));
154
+ if (pending.length > 0 && updateOptions.confirmPendingPermissions !== true) {
155
+ throw new CogentaError({
156
+ code: 'MARKETPLACE_UPDATE_REQUIRES_APPROVAL',
157
+ message: `Updating "${entry.displayName}" would request ${pending.length} new permission(s) — this never applies silently.`,
158
+ hint: 'Review the new permissions and retry with confirmPendingPermissions: true. No capability is granted automatically even then — grant it explicitly afterward.',
159
+ details: { itemId: entry.id, pending },
160
+ });
161
+ }
162
+ const timestamp = new Date(now()).toISOString();
163
+ await db.query(sql `
164
+ update ${installs} set
165
+ display_name = ${entry.displayName},
166
+ reference = ${entry.reference},
167
+ plugin_name = ${resolved.manifest.name},
168
+ plugin_version = ${resolved.manifest.version},
169
+ signature_verified = ${String(resolved.signatureVerified)},
170
+ installed_by = ${actorId},
171
+ updated_at = ${timestamp}
172
+ where item_id = ${entry.id}`);
173
+ const record = await getRecord(entry.id);
174
+ if (record === null) {
175
+ throw new CogentaError({
176
+ code: 'MARKETPLACE_NOT_INSTALLED',
177
+ message: `"${entry.displayName}" disappeared during its own update.`,
178
+ hint: 'Retry the update.',
179
+ details: { itemId: entry.id },
180
+ });
181
+ }
182
+ return { record, pendingApproval: describeAll(pending) };
183
+ },
184
+ async list() {
185
+ const result = await db.query(sql `
186
+ select * from ${installs} order by installed_at asc`);
187
+ return result.rows.map(toRecord);
188
+ },
189
+ async get(itemId) {
190
+ return getRecord(itemId);
191
+ },
192
+ async uninstall(itemId) {
193
+ await db.query(sql `delete from ${installs} where item_id = ${itemId}`);
194
+ },
195
+ };
196
+ }
197
+ //# sourceMappingURL=marketplace.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"marketplace.js","sourceRoot":"","sources":["../../src/registries/marketplace.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cogenta/plugins",
3
- "version": "0.1.2",
3
+ "version": "0.2.0",
4
4
  "description": "Plugin manifest schema, loader, worker isolation and permission model.",
5
5
  "license": "MPL-2.0",
6
6
  "type": "module",
@@ -28,15 +28,15 @@
28
28
  },
29
29
  "dependencies": {
30
30
  "zod": "^4.4.3",
31
- "@cogenta/agents": "0.1.2",
32
- "@cogenta/render": "0.1.2",
33
- "@cogenta/core": "0.2.0"
31
+ "@cogenta/core": "0.4.0",
32
+ "@cogenta/agents": "0.2.1",
33
+ "@cogenta/render": "0.1.4"
34
34
  },
35
35
  "devDependencies": {
36
36
  "typescript": "^7.0.2",
37
37
  "vitest": "^4.1.10",
38
- "@cogenta/blocks": "0.1.2",
39
- "@cogenta/schema": "0.1.2"
38
+ "@cogenta/blocks": "0.1.4",
39
+ "@cogenta/schema": "0.3.0"
40
40
  },
41
41
  "scripts": {
42
42
  "build": "tsc -p tsconfig.json && node -e \"const fs=require('node:fs');fs.mkdirSync('dist/guest',{recursive:true});fs.copyFileSync('src/guest/sandbox-entry.mjs','dist/guest/sandbox-entry.mjs')\"",