@cogenta/plugins 0.2.0 → 0.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (39) hide show
  1. package/dist/host/worker-runner.d.ts +15 -0
  2. package/dist/host/worker-runner.d.ts.map +1 -1
  3. package/dist/host/worker-runner.js +10 -1
  4. package/dist/host/worker-runner.js.map +1 -1
  5. package/dist/index.d.ts +2 -0
  6. package/dist/index.d.ts.map +1 -1
  7. package/dist/index.js +1 -0
  8. package/dist/index.js.map +1 -1
  9. package/dist/permissions/disabled.d.ts +7 -0
  10. package/dist/permissions/disabled.d.ts.map +1 -1
  11. package/dist/permissions/disabled.js +9 -0
  12. package/dist/permissions/disabled.js.map +1 -1
  13. package/dist/permissions/grants.d.ts +7 -0
  14. package/dist/permissions/grants.d.ts.map +1 -1
  15. package/dist/permissions/grants.js +5 -0
  16. package/dist/permissions/grants.js.map +1 -1
  17. package/dist/permissions/tables.d.ts +1 -0
  18. package/dist/permissions/tables.d.ts.map +1 -1
  19. package/dist/permissions/tables.js +18 -0
  20. package/dist/permissions/tables.js.map +1 -1
  21. package/dist/permissions/usage.d.ts +50 -0
  22. package/dist/permissions/usage.d.ts.map +1 -0
  23. package/dist/permissions/usage.js +66 -0
  24. package/dist/permissions/usage.js.map +1 -0
  25. package/dist/registries/marketplace-tables.d.ts.map +1 -1
  26. package/dist/registries/marketplace-tables.js +14 -1
  27. package/dist/registries/marketplace-tables.js.map +1 -1
  28. package/dist/registries/marketplace.d.ts +49 -1
  29. package/dist/registries/marketplace.d.ts.map +1 -1
  30. package/dist/registries/marketplace.js +89 -8
  31. package/dist/registries/marketplace.js.map +1 -1
  32. package/dist/registries/skills.d.ts.map +1 -1
  33. package/dist/registries/skills.js +4 -1
  34. package/dist/registries/skills.js.map +1 -1
  35. package/dist/registries/skins.d.ts +10 -0
  36. package/dist/registries/skins.d.ts.map +1 -1
  37. package/dist/registries/skins.js +8 -3
  38. package/dist/registries/skins.js.map +1 -1
  39. package/package.json +6 -6
@@ -1,6 +1,7 @@
1
1
  import type { PluginManifest } from '../manifest.js';
2
2
  import type { PluginDisableStore, PluginViolationReason } from '../permissions/disabled.js';
3
3
  import type { PluginGrant } from '../permissions/grants.js';
4
+ import type { PluginUsageStore } from '../permissions/usage.js';
4
5
  import type { CapabilityHandler } from './capabilities.js';
5
6
  export interface RunIsolatedOptions {
6
7
  /** Killed and reported as a timeout past this — the basic kill switch this task's tests need. */
@@ -32,6 +33,12 @@ export interface IsolatedRunResult {
32
33
  readonly ok: boolean;
33
34
  readonly value?: unknown;
34
35
  readonly error?: string;
36
+ /**
37
+ * Real wall-clock milliseconds the worker spent from spawn to settling —
38
+ * the one "already measured" resource figure fiche 29 task 3 exposes.
39
+ * Always set, success or failure, so a caller can accumulate it either way.
40
+ */
41
+ readonly durationMs: number;
35
42
  /**
36
43
  * Set only when `ok` is `false` — classifies WHY the worker failed, so a
37
44
  * caller (task 6's disable policy) can tell "the plugin's own code threw a
@@ -69,6 +76,14 @@ export interface RunPluginOptions extends Omit<RunIsolatedOptions, 'grantedCapab
69
76
  readonly disableStore: PluginDisableStore;
70
77
  /** Fired synchronously right after a violation is recorded — the real "avec alerte" half of "tué et désactivé, avec alerte". */
71
78
  readonly onPluginDisabled?: (event: PluginDisabledEvent) => void;
79
+ /**
80
+ * Fiche 29 task 3 — when present, every real run (success or failure) is
81
+ * accumulated here. Optional, like `siblings` on `createContentStore`
82
+ * (ADR-0022's reasoning applies the same way): most existing callers of
83
+ * `runPlugin` have no usage screen to feed, and requiring a store they
84
+ * have no use for would be a needless breaking change.
85
+ */
86
+ readonly usageStore?: PluginUsageStore;
72
87
  }
73
88
  /**
74
89
  * The real entry point for actually running a resolved plugin — unlike
@@ -1 +1 @@
1
- {"version":3,"file":"worker-runner.d.ts","sourceRoot":"","sources":["../../src/host/worker-runner.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AACpD,OAAO,KAAK,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAA;AAC3F,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAA;AAE3D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AAyB1D,MAAM,WAAW,kBAAkB;IACjC,iGAAiG;IACjG,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;IAC3B,iEAAiE;IACjE,QAAQ,CAAC,sBAAsB,CAAC,EAAE,MAAM,CAAA;IACxC;;;;;;;;OAQG;IACH,QAAQ,CAAC,mBAAmB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IAChD;;;;;;;;OAQG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC,CAAA;CAChE;AAKD,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAA;IACpB,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAA;IACxB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;IACvB;;;;;;;;OAQG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,qBAAqB,CAAA;CACxC;AAsDD;;;;;;;;;;;;GAYG;AACH,wBAAsB,WAAW,CAC/B,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,kBAAuB,GAC/B,OAAO,CAAC,iBAAiB,CAAC,CAsE5B;AAED,0QAA0Q;AAC1Q,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,MAAM,EAAE,qBAAqB,CAAA;IACtC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAC1B;AAED,MAAM,WAAW,gBAAiB,SAAQ,IAAI,CAAC,kBAAkB,EAAE,qBAAqB,CAAC;IACvF,qMAAqM;IACrM,QAAQ,CAAC,YAAY,EAAE,kBAAkB,CAAA;IACzC,gIAAgI;IAChI,QAAQ,CAAC,gBAAgB,CAAC,EAAE,CAAC,KAAK,EAAE,mBAAmB,KAAK,IAAI,CAAA;CACjE;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,SAAS,CAC7B,QAAQ,EAAE,cAAc,EACxB,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,SAAS,WAAW,EAAE,EAC9B,OAAO,EAAE,gBAAgB,GACxB,OAAO,CAAC,iBAAiB,CAAC,CAyB5B;AAED,4HAA4H;AAC5H,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,kBAAkB,GAC3B,OAAO,CAAC,OAAO,CAAC,CAWlB"}
1
+ {"version":3,"file":"worker-runner.d.ts","sourceRoot":"","sources":["../../src/host/worker-runner.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AACpD,OAAO,KAAK,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAA;AAC3F,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAA;AAE3D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAA;AAC/D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AAyB1D,MAAM,WAAW,kBAAkB;IACjC,iGAAiG;IACjG,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;IAC3B,iEAAiE;IACjE,QAAQ,CAAC,sBAAsB,CAAC,EAAE,MAAM,CAAA;IACxC;;;;;;;;OAQG;IACH,QAAQ,CAAC,mBAAmB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IAChD;;;;;;;;OAQG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC,CAAA;CAChE;AAKD,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAA;IACpB,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAA;IACxB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;IACvB;;;;OAIG;IACH,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B;;;;;;;;OAQG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,qBAAqB,CAAA;CACxC;AAsDD;;;;;;;;;;;;GAYG;AACH,wBAAsB,WAAW,CAC/B,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,kBAAuB,GAC/B,OAAO,CAAC,iBAAiB,CAAC,CAwE5B;AAED,0QAA0Q;AAC1Q,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,MAAM,EAAE,qBAAqB,CAAA;IACtC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAC1B;AAED,MAAM,WAAW,gBAAiB,SAAQ,IAAI,CAAC,kBAAkB,EAAE,qBAAqB,CAAC;IACvF,qMAAqM;IACrM,QAAQ,CAAC,YAAY,EAAE,kBAAkB,CAAA;IACzC,gIAAgI;IAChI,QAAQ,CAAC,gBAAgB,CAAC,EAAE,CAAC,KAAK,EAAE,mBAAmB,KAAK,IAAI,CAAA;IAChE;;;;;;OAMG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,gBAAgB,CAAA;CACvC;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,SAAS,CAC7B,QAAQ,EAAE,cAAc,EACxB,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,SAAS,WAAW,EAAE,EAC9B,OAAO,EAAE,gBAAgB,GACxB,OAAO,CAAC,iBAAiB,CAAC,CAkC5B;AAED,4HAA4H;AAC5H,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,kBAAkB,GAC3B,OAAO,CAAC,OAAO,CAAC,CAWlB"}
@@ -97,6 +97,7 @@ export async function runIsolated(code, options = {}) {
97
97
  stdout: false,
98
98
  stderr: false,
99
99
  });
100
+ const startedAt = Date.now();
100
101
  return await new Promise((resolve) => {
101
102
  let settled = false;
102
103
  const finish = (result) => {
@@ -105,7 +106,7 @@ export async function runIsolated(code, options = {}) {
105
106
  settled = true;
106
107
  clearTimeout(timer);
107
108
  void worker.terminate();
108
- resolve(result);
109
+ resolve({ ...result, durationMs: Date.now() - startedAt });
109
110
  };
110
111
  const timer = setTimeout(() => {
111
112
  finish({ ok: false, error: 'plugin worker timed out', reason: 'timeout' });
@@ -178,6 +179,14 @@ export async function runPlugin(manifest, code, grants, options) {
178
179
  ...(result.error === undefined ? {} : { details: result.error }),
179
180
  });
180
181
  }
182
+ if (options.usageStore !== undefined) {
183
+ await options.usageStore.recordRun(manifest.name, {
184
+ durationMs: result.durationMs,
185
+ ok: result.ok,
186
+ ...(result.reason === undefined ? {} : { reason: result.reason }),
187
+ ...(result.error === undefined ? {} : { error: result.error }),
188
+ });
189
+ }
181
190
  return result;
182
191
  }
183
192
  /** Throws instead of returning a discriminated failure — for call sites that want a plain success value or a real error. */
@@ -1 +1 @@
1
- {"version":3,"file":"worker-runner.js","sourceRoot":"","sources":["../../src/host/worker-runner.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"worker-runner.js","sourceRoot":"","sources":["../../src/host/worker-runner.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -16,6 +16,8 @@ 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 { PluginRunObservation, PluginRunOutcome, PluginUsageRecord, PluginUsageStore, } from './permissions/usage.js';
20
+ export { createPluginUsageStore } from './permissions/usage.js';
19
21
  export type { MarketplaceCatalog, MarketplaceCatalogEntry, MarketplaceCatalogFilter, MarketplaceChangelogEntry, MarketplaceInstaller, MarketplaceInstallerOptions, MarketplaceInstallRecord, MarketplaceItemKind, MarketplacePreview, MarketplaceUpdateResult, } from './registries/marketplace.js';
20
22
  export { createMarketplaceCatalog, createMarketplaceInstaller } from './registries/marketplace.js';
21
23
  export { ensureMarketplaceTables, MARKETPLACE_TABLES } from './registries/marketplace-tables.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
@@ -8,6 +8,7 @@ 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 { createPluginUsageStore } from './permissions/usage.js';
11
12
  export { createMarketplaceCatalog, createMarketplaceInstaller } from './registries/marketplace.js';
12
13
  export { ensureMarketplaceTables, MARKETPLACE_TABLES } from './registries/marketplace-tables.js';
13
14
  export { createPluginRegistry } from './registries/plugins.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,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"}
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;AAO/E,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAA;AAa/D,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"}
@@ -20,6 +20,13 @@ export interface PluginDisableStore {
20
20
  enable(pluginName: string): Promise<void>;
21
21
  /** The real gate `runPlugin` checks before ever spawning a worker. */
22
22
  isDisabled(pluginName: string): Promise<PluginDisabledRecord | null>;
23
+ /**
24
+ * Every plugin currently disabled, newest first — what fiche 38's
25
+ * `plugin-disabled` admin notice reads. Separate from `isDisabled` (which
26
+ * answers "is this one plugin blocked") because the notice has to answer
27
+ * "is anything blocked at all" without knowing plugin names in advance.
28
+ */
29
+ listDisabled(): Promise<readonly PluginDisabledRecord[]>;
23
30
  }
24
31
  export declare function createPluginDisableStore(db: DatabaseHandle, now?: () => number): PluginDisableStore;
25
32
  //# sourceMappingURL=disabled.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"disabled.d.ts","sourceRoot":"","sources":["../../src/permissions/disabled.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,cAAc,EAAmB,MAAM,eAAe,CAAA;AAGpE,6IAA6I;AAC7I,MAAM,MAAM,qBAAqB,GAAG,SAAS,GAAG,QAAQ,GAAG,OAAO,CAAA;AAElE,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,MAAM,EAAE,qBAAqB,CAAA;IACtC,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;IAC/B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;CAC5B;AAED,MAAM,WAAW,kBAAkB;IACjC;;;;;;OAMG;IACH,OAAO,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,qBAAqB,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAE3F,uDAAuD;IACvD,MAAM,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAEzC,sEAAsE;IACtE,UAAU,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC,CAAA;CACrE;AASD,wBAAgB,wBAAwB,CACtC,EAAE,EAAE,cAAc,EAClB,GAAG,GAAE,MAAM,MAAiB,GAC3B,kBAAkB,CA6BpB"}
1
+ {"version":3,"file":"disabled.d.ts","sourceRoot":"","sources":["../../src/permissions/disabled.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,cAAc,EAAmB,MAAM,eAAe,CAAA;AAGpE,6IAA6I;AAC7I,MAAM,MAAM,qBAAqB,GAAG,SAAS,GAAG,QAAQ,GAAG,OAAO,CAAA;AAElE,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,MAAM,EAAE,qBAAqB,CAAA;IACtC,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;IAC/B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;CAC5B;AAED,MAAM,WAAW,kBAAkB;IACjC;;;;;;OAMG;IACH,OAAO,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,qBAAqB,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAE3F,uDAAuD;IACvD,MAAM,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAEzC,sEAAsE;IACtE,UAAU,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC,CAAA;IAEpE;;;;;OAKG;IACH,YAAY,IAAI,OAAO,CAAC,SAAS,oBAAoB,EAAE,CAAC,CAAA;CACzD;AASD,wBAAgB,wBAAwB,CACtC,EAAE,EAAE,cAAc,EAClB,GAAG,GAAE,MAAM,MAAiB,GAC3B,kBAAkB,CAyCpB"}
@@ -24,6 +24,15 @@ export function createPluginDisableStore(db, now = Date.now) {
24
24
  disabledAt: row.disabled_at,
25
25
  };
26
26
  },
27
+ async listDisabled() {
28
+ const result = await db.query(sql `select * from ${disabled} order by disabled_at desc`);
29
+ return result.rows.map((row) => ({
30
+ pluginName: row.plugin_name,
31
+ reason: row.reason,
32
+ details: row.details,
33
+ disabledAt: row.disabled_at,
34
+ }));
35
+ },
27
36
  };
28
37
  }
29
38
  //# sourceMappingURL=disabled.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"disabled.js","sourceRoot":"","sources":["../../src/permissions/disabled.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuB,UAAU,EAAE,GAAG,EAAE,MAAM,eAAe,CAAA;AACpE,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AAoC/C,MAAM,UAAU,wBAAwB,CACtC,EAAkB,EAClB,GAAG,GAAiB,IAAI,CAAC,GAAG;IAE5B,MAAM,QAAQ,GAAG,UAAU,CAAC,iBAAiB,CAAC,QAAQ,EAAE,EAAE,CAAC,OAAO,CAAC,CAAA;IAEnE,OAAO;QACL,KAAK,CAAC,OAAO,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO;YACvC,MAAM,EAAE,CAAC,KAAK,CAAC,GAAG,CAAA,eAAe,QAAQ,wBAAwB,UAAU,EAAE,CAAC,CAAA;YAC9E,MAAM,EAAE,CAAC,KAAK,CAAC,GAAG,CAAA;sBACF,QAAQ;kBACZ,UAAU,KAAK,MAAM,KAAK,OAAO,IAAI,IAAI,KAAK,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,WAAW,EAAE,GAAG,CAAC,CAAA;QAC7F,CAAC;QAED,KAAK,CAAC,MAAM,CAAC,UAAU;YACrB,MAAM,EAAE,CAAC,KAAK,CAAC,GAAG,CAAA,eAAe,QAAQ,wBAAwB,UAAU,EAAE,CAAC,CAAA;QAChF,CAAC;QAED,KAAK,CAAC,UAAU,CAAC,UAAU;YACzB,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,KAAK,CAC3B,GAAG,CAAA,iBAAiB,QAAQ,wBAAwB,UAAU,EAAE,CACjE,CAAA;YACD,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;YAC1B,IAAI,GAAG,KAAK,SAAS;gBAAE,OAAO,IAAI,CAAA;YAClC,OAAO;gBACL,UAAU,EAAE,GAAG,CAAC,WAAW;gBAC3B,MAAM,EAAE,GAAG,CAAC,MAA+B;gBAC3C,OAAO,EAAE,GAAG,CAAC,OAAO;gBACpB,UAAU,EAAE,GAAG,CAAC,WAAW;aAC5B,CAAA;QACH,CAAC;KACF,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"disabled.js","sourceRoot":"","sources":["../../src/permissions/disabled.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuB,UAAU,EAAE,GAAG,EAAE,MAAM,eAAe,CAAA;AACpE,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AA4C/C,MAAM,UAAU,wBAAwB,CACtC,EAAkB,EAClB,GAAG,GAAiB,IAAI,CAAC,GAAG;IAE5B,MAAM,QAAQ,GAAG,UAAU,CAAC,iBAAiB,CAAC,QAAQ,EAAE,EAAE,CAAC,OAAO,CAAC,CAAA;IAEnE,OAAO;QACL,KAAK,CAAC,OAAO,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO;YACvC,MAAM,EAAE,CAAC,KAAK,CAAC,GAAG,CAAA,eAAe,QAAQ,wBAAwB,UAAU,EAAE,CAAC,CAAA;YAC9E,MAAM,EAAE,CAAC,KAAK,CAAC,GAAG,CAAA;sBACF,QAAQ;kBACZ,UAAU,KAAK,MAAM,KAAK,OAAO,IAAI,IAAI,KAAK,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,WAAW,EAAE,GAAG,CAAC,CAAA;QAC7F,CAAC;QAED,KAAK,CAAC,MAAM,CAAC,UAAU;YACrB,MAAM,EAAE,CAAC,KAAK,CAAC,GAAG,CAAA,eAAe,QAAQ,wBAAwB,UAAU,EAAE,CAAC,CAAA;QAChF,CAAC;QAED,KAAK,CAAC,UAAU,CAAC,UAAU;YACzB,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,KAAK,CAC3B,GAAG,CAAA,iBAAiB,QAAQ,wBAAwB,UAAU,EAAE,CACjE,CAAA;YACD,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;YAC1B,IAAI,GAAG,KAAK,SAAS;gBAAE,OAAO,IAAI,CAAA;YAClC,OAAO;gBACL,UAAU,EAAE,GAAG,CAAC,WAAW;gBAC3B,MAAM,EAAE,GAAG,CAAC,MAA+B;gBAC3C,OAAO,EAAE,GAAG,CAAC,OAAO;gBACpB,UAAU,EAAE,GAAG,CAAC,WAAW;aAC5B,CAAA;QACH,CAAC;QAED,KAAK,CAAC,YAAY;YAChB,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,KAAK,CAC3B,GAAG,CAAA,iBAAiB,QAAQ,4BAA4B,CACzD,CAAA;YACD,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;gBAC/B,UAAU,EAAE,GAAG,CAAC,WAAW;gBAC3B,MAAM,EAAE,GAAG,CAAC,MAA+B;gBAC3C,OAAO,EAAE,GAAG,CAAC,OAAO;gBACpB,UAAU,EAAE,GAAG,CAAC,WAAW;aAC5B,CAAC,CAAC,CAAA;QACL,CAAC;KACF,CAAA;AACH,CAAC"}
@@ -15,6 +15,13 @@ export interface PluginGrantStore {
15
15
  grant(pluginName: string, capability: string): Promise<void>;
16
16
  /** Revoking an already-unrevoked-or-nonexistent grant is not an error — it's already in the state being asked for. */
17
17
  revoke(pluginName: string, capability: string): Promise<void>;
18
+ /**
19
+ * Revokes every currently-active grant for `pluginName` at once — fiche
20
+ * 29 task 4's "désinstallation propre", the "tout supprimer" option:
21
+ * uninstalling with data removal must leave no lingering capability a
22
+ * reinstalled-but-different plugin could inherit by name collision.
23
+ */
24
+ revokeAll(pluginName: string): Promise<void>;
18
25
  /** Every currently-active (non-revoked) grant for a plugin. */
19
26
  listGrants(pluginName: string): Promise<readonly PluginGrant[]>;
20
27
  }
@@ -1 +1 @@
1
- {"version":3,"file":"grants.d.ts","sourceRoot":"","sources":["../../src/permissions/grants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,cAAc,EAA0B,MAAM,eAAe,CAAA;AAG3E,yFAAyF;AACzF,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;CAC3B;AAED,MAAM,WAAW,gBAAgB;IAC/B;;;;;OAKG;IACH,KAAK,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAE5D,sHAAsH;IACtH,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAE7D,+DAA+D;IAC/D,UAAU,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,WAAW,EAAE,CAAC,CAAA;CAChE;AAUD,wBAAgB,sBAAsB,CACpC,EAAE,EAAE,cAAc,EAClB,GAAG,GAAE,MAAM,MAAiB,GAC3B,gBAAgB,CAgClB"}
1
+ {"version":3,"file":"grants.d.ts","sourceRoot":"","sources":["../../src/permissions/grants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,cAAc,EAA0B,MAAM,eAAe,CAAA;AAG3E,yFAAyF;AACzF,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;CAC3B;AAED,MAAM,WAAW,gBAAgB;IAC/B;;;;;OAKG;IACH,KAAK,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAE5D,sHAAsH;IACtH,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAE7D;;;;;OAKG;IACH,SAAS,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAE5C,+DAA+D;IAC/D,UAAU,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,WAAW,EAAE,CAAC,CAAA;CAChE;AAUD,wBAAgB,sBAAsB,CACpC,EAAE,EAAE,cAAc,EAClB,GAAG,GAAE,MAAM,MAAiB,GAC3B,gBAAgB,CAsClB"}
@@ -17,6 +17,11 @@ export function createPluginGrantStore(db, now = Date.now) {
17
17
  update ${grants} set revoked_at = ${new Date(now()).toISOString()}
18
18
  where plugin_name = ${pluginName} and capability = ${capability} and revoked_at is null`);
19
19
  },
20
+ async revokeAll(pluginName) {
21
+ await db.query(sql `
22
+ update ${grants} set revoked_at = ${new Date(now()).toISOString()}
23
+ where plugin_name = ${pluginName} and revoked_at is null`);
24
+ },
20
25
  async listGrants(pluginName) {
21
26
  const result = await db.query(sql `
22
27
  select * from ${grants} where plugin_name = ${pluginName} and revoked_at is null order by granted_at asc`);
@@ -1 +1 @@
1
- {"version":3,"file":"grants.js","sourceRoot":"","sources":["../../src/permissions/grants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuB,UAAU,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,eAAe,CAAA;AAC3E,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AAiC/C,MAAM,UAAU,sBAAsB,CACpC,EAAkB,EAClB,GAAG,GAAiB,IAAI,CAAC,GAAG;IAE5B,MAAM,MAAM,GAAG,UAAU,CAAC,iBAAiB,CAAC,MAAM,EAAE,EAAE,CAAC,OAAO,CAAC,CAAA;IAE/D,OAAO;QACL,KAAK,CAAC,KAAK,CAAC,UAAU,EAAE,UAAU;YAChC,gEAAgE;YAChE,qEAAqE;YACrE,yDAAyD;YACzD,MAAM,EAAE,CAAC,KAAK,CACZ,GAAG,CAAA,eAAe,MAAM,wBAAwB,UAAU,qBAAqB,UAAU,yBAAyB,CACnH,CAAA;YACD,MAAM,EAAE,CAAC,KAAK,CAAC,GAAG,CAAA;sBACF,MAAM;kBACV,KAAK,CAAC,GAAG,CAAC,KAAK,UAAU,KAAK,UAAU,KAAK,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,WAAW,EAAE,KAAK,IAAI,GAAG,CAAC,CAAA;QACrG,CAAC;QAED,KAAK,CAAC,MAAM,CAAC,UAAU,EAAE,UAAU;YACjC,MAAM,EAAE,CAAC,KAAK,CAAC,GAAG,CAAA;iBACP,MAAM,qBAAqB,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,WAAW,EAAE;8BAC3C,UAAU,qBAAqB,UAAU,yBAAyB,CAAC,CAAA;QAC7F,CAAC;QAED,KAAK,CAAC,UAAU,CAAC,UAAU;YACzB,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,KAAK,CAAW,GAAG,CAAA;wBACzB,MAAM,wBAAwB,UAAU,iDAAiD,CAAC,CAAA;YAC5G,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;gBAC/B,UAAU,EAAE,GAAG,CAAC,WAAW;gBAC3B,UAAU,EAAE,GAAG,CAAC,UAAU;gBAC1B,SAAS,EAAE,GAAG,CAAC,UAAU;aAC1B,CAAC,CAAC,CAAA;QACL,CAAC;KACF,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"grants.js","sourceRoot":"","sources":["../../src/permissions/grants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuB,UAAU,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,eAAe,CAAA;AAC3E,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AAyC/C,MAAM,UAAU,sBAAsB,CACpC,EAAkB,EAClB,GAAG,GAAiB,IAAI,CAAC,GAAG;IAE5B,MAAM,MAAM,GAAG,UAAU,CAAC,iBAAiB,CAAC,MAAM,EAAE,EAAE,CAAC,OAAO,CAAC,CAAA;IAE/D,OAAO;QACL,KAAK,CAAC,KAAK,CAAC,UAAU,EAAE,UAAU;YAChC,gEAAgE;YAChE,qEAAqE;YACrE,yDAAyD;YACzD,MAAM,EAAE,CAAC,KAAK,CACZ,GAAG,CAAA,eAAe,MAAM,wBAAwB,UAAU,qBAAqB,UAAU,yBAAyB,CACnH,CAAA;YACD,MAAM,EAAE,CAAC,KAAK,CAAC,GAAG,CAAA;sBACF,MAAM;kBACV,KAAK,CAAC,GAAG,CAAC,KAAK,UAAU,KAAK,UAAU,KAAK,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,WAAW,EAAE,KAAK,IAAI,GAAG,CAAC,CAAA;QACrG,CAAC;QAED,KAAK,CAAC,MAAM,CAAC,UAAU,EAAE,UAAU;YACjC,MAAM,EAAE,CAAC,KAAK,CAAC,GAAG,CAAA;iBACP,MAAM,qBAAqB,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,WAAW,EAAE;8BAC3C,UAAU,qBAAqB,UAAU,yBAAyB,CAAC,CAAA;QAC7F,CAAC;QAED,KAAK,CAAC,SAAS,CAAC,UAAU;YACxB,MAAM,EAAE,CAAC,KAAK,CAAC,GAAG,CAAA;iBACP,MAAM,qBAAqB,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,WAAW,EAAE;8BAC3C,UAAU,yBAAyB,CAAC,CAAA;QAC9D,CAAC;QAED,KAAK,CAAC,UAAU,CAAC,UAAU;YACzB,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,KAAK,CAAW,GAAG,CAAA;wBACzB,MAAM,wBAAwB,UAAU,iDAAiD,CAAC,CAAA;YAC5G,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;gBAC/B,UAAU,EAAE,GAAG,CAAC,WAAW;gBAC3B,UAAU,EAAE,GAAG,CAAC,UAAU;gBAC1B,SAAS,EAAE,GAAG,CAAC,UAAU;aAC1B,CAAC,CAAC,CAAA;QACL,CAAC;KACF,CAAA;AACH,CAAC"}
@@ -2,6 +2,7 @@ import { type DatabaseHandle } from '@cogenta/core';
2
2
  export declare const PERMISSION_TABLES: {
3
3
  readonly grants: 'cogenta_plugin_grants';
4
4
  readonly disabled: 'cogenta_plugin_disabled';
5
+ readonly usage: 'cogenta_plugin_usage';
5
6
  };
6
7
  /**
7
8
  * Owned by `@cogenta/plugins`, following `@cogenta/channels`'s
@@ -1 +1 @@
1
- {"version":3,"file":"tables.d.ts","sourceRoot":"","sources":["../../src/permissions/tables.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,cAAc,EAKpB,MAAM,eAAe,CAAA;AAEtB,eAAO,MAAM,iBAAiB;aAC5B,MAAM,EAAE,uBAAuB;aAC/B,QAAQ,EAAE,yBAAyB;CAC3B,CAAA;AAMV;;;;;;;;;;GAUG;AACH,wBAAsB,kBAAkB,CAAC,EAAE,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CA8B1E"}
1
+ {"version":3,"file":"tables.d.ts","sourceRoot":"","sources":["../../src/permissions/tables.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,cAAc,EAKpB,MAAM,eAAe,CAAA;AAEtB,eAAO,MAAM,iBAAiB;aAC5B,MAAM,EAAE,uBAAuB;aAC/B,QAAQ,EAAE,yBAAyB;aACnC,KAAK,EAAE,sBAAsB;CACrB,CAAA;AAMV;;;;;;;;;;GAUG;AACH,wBAAsB,kBAAkB,CAAC,EAAE,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAgD1E"}
@@ -2,6 +2,7 @@ import { identifier, sql, unsafeRaw, } from '@cogenta/core';
2
2
  export const PERMISSION_TABLES = {
3
3
  grants: 'cogenta_plugin_grants',
4
4
  disabled: 'cogenta_plugin_disabled',
5
+ usage: 'cogenta_plugin_usage',
5
6
  };
6
7
  function textColumn(dialect, length) {
7
8
  return unsafeRaw(dialect === 'sqlite' ? 'text' : `varchar(${length})`);
@@ -39,6 +40,23 @@ export async function ensurePluginTables(db) {
39
40
  details ${t512},
40
41
  disabled_at ${t255} not null
41
42
  )`);
43
+ // Fiche 29 task 3 — one accumulated row per plugin (`../permissions/usage.js`).
44
+ const usage = identifier(PERMISSION_TABLES.usage, d);
45
+ const tInt = unsafeRaw(d === 'sqlite' ? 'integer' : 'bigint');
46
+ await db.query(sql `
47
+ create table if not exists ${usage} (
48
+ plugin_name ${t255} not null primary key,
49
+ call_count ${tInt} not null,
50
+ total_duration_ms ${tInt} not null,
51
+ error_count ${tInt} not null,
52
+ timeout_count ${tInt} not null,
53
+ memory_count ${tInt} not null,
54
+ crash_count ${tInt} not null,
55
+ last_run_at ${t255} not null,
56
+ last_duration_ms ${tInt} not null,
57
+ last_outcome ${t255} not null,
58
+ last_error ${t512}
59
+ )`);
42
60
  }
43
61
  async function createIndexIfMissing(db, name, table, columns) {
44
62
  await db
@@ -1 +1 @@
1
- {"version":3,"file":"tables.js","sourceRoot":"","sources":["../../src/permissions/tables.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,UAAU,EAEV,GAAG,EACH,SAAS,GACV,MAAM,eAAe,CAAA;AAEtB,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,MAAM,EAAE,uBAAuB;IAC/B,QAAQ,EAAE,yBAAyB;CAC3B,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;;;;;;;;;;GAUG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,EAAkB;IACzD,MAAM,CAAC,GAAG,EAAE,CAAC,OAAO,CAAA;IACpB,MAAM,MAAM,GAAG,UAAU,CAAC,iBAAiB,CAAC,MAAM,EAAE,CAAC,CAAC,CAAA;IACtD,MAAM,IAAI,GAAG,UAAU,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;IAC/B,MAAM,IAAI,GAAG,UAAU,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;IAE/B,MAAM,EAAE,CAAC,KAAK,CAAC,GAAG,CAAA;iCACa,MAAM;WAC5B,IAAI;oBACK,IAAI;mBACL,IAAI;mBACJ,IAAI;mBACJ,IAAI;MACjB,CAAC,CAAA;IAEL,MAAM,oBAAoB,CACxB,EAAE,EACF,8BAA8B,EAC9B,MAAM,EACN,GAAG,CAAA,2BAA2B,CAC/B,CAAA;IAED,MAAM,QAAQ,GAAG,UAAU,CAAC,iBAAiB,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAA;IAC1D,MAAM,EAAE,CAAC,KAAK,CAAC,GAAG,CAAA;iCACa,QAAQ;oBACrB,IAAI;eACT,IAAI;gBACH,IAAI;oBACA,IAAI;MAClB,CAAC,CAAA;AACP,CAAC;AAED,KAAK,UAAU,oBAAoB,CACjC,EAAkB,EAClB,IAAY,EACZ,KAAkB,EAClB,OAAoB;IAEpB,MAAM,EAAE;SACL,KAAK,CAAC,GAAG,CAAA,gBAAgB,UAAU,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,KAAK,IAAI,OAAO,EAAE,CAAC;SAC/E,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAA,CAAC,0DAA0D;AACtF,CAAC"}
1
+ {"version":3,"file":"tables.js","sourceRoot":"","sources":["../../src/permissions/tables.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,UAAU,EAEV,GAAG,EACH,SAAS,GACV,MAAM,eAAe,CAAA;AAEtB,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,MAAM,EAAE,uBAAuB;IAC/B,QAAQ,EAAE,yBAAyB;IACnC,KAAK,EAAE,sBAAsB;CACrB,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;;;;;;;;;;GAUG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,EAAkB;IACzD,MAAM,CAAC,GAAG,EAAE,CAAC,OAAO,CAAA;IACpB,MAAM,MAAM,GAAG,UAAU,CAAC,iBAAiB,CAAC,MAAM,EAAE,CAAC,CAAC,CAAA;IACtD,MAAM,IAAI,GAAG,UAAU,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;IAC/B,MAAM,IAAI,GAAG,UAAU,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;IAE/B,MAAM,EAAE,CAAC,KAAK,CAAC,GAAG,CAAA;iCACa,MAAM;WAC5B,IAAI;oBACK,IAAI;mBACL,IAAI;mBACJ,IAAI;mBACJ,IAAI;MACjB,CAAC,CAAA;IAEL,MAAM,oBAAoB,CACxB,EAAE,EACF,8BAA8B,EAC9B,MAAM,EACN,GAAG,CAAA,2BAA2B,CAC/B,CAAA;IAED,MAAM,QAAQ,GAAG,UAAU,CAAC,iBAAiB,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAA;IAC1D,MAAM,EAAE,CAAC,KAAK,CAAC,GAAG,CAAA;iCACa,QAAQ;oBACrB,IAAI;eACT,IAAI;gBACH,IAAI;oBACA,IAAI;MAClB,CAAC,CAAA;IAEL,gFAAgF;IAChF,MAAM,KAAK,GAAG,UAAU,CAAC,iBAAiB,CAAC,KAAK,EAAE,CAAC,CAAC,CAAA;IACpD,MAAM,IAAI,GAAG,SAAS,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAA;IAC7D,MAAM,EAAE,CAAC,KAAK,CAAC,GAAG,CAAA;iCACa,KAAK;oBAClB,IAAI;mBACL,IAAI;0BACG,IAAI;oBACV,IAAI;sBACF,IAAI;qBACL,IAAI;oBACL,IAAI;oBACJ,IAAI;yBACC,IAAI;qBACR,IAAI;mBACN,IAAI;MACjB,CAAC,CAAA;AACP,CAAC;AAED,KAAK,UAAU,oBAAoB,CACjC,EAAkB,EAClB,IAAY,EACZ,KAAkB,EAClB,OAAoB;IAEpB,MAAM,EAAE;SACL,KAAK,CAAC,GAAG,CAAA,gBAAgB,UAAU,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,KAAK,IAAI,OAAO,EAAE,CAAC;SAC/E,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAA,CAAC,0DAA0D;AACtF,CAAC"}
@@ -0,0 +1,50 @@
1
+ import { type DatabaseHandle } from '@cogenta/core';
2
+ import type { PluginViolationReason } from './disabled.js';
3
+ /**
4
+ * Fiche 29 task 3 — "Consommation de ressources". `runPlugin`
5
+ * (`../host/worker-runner.js`) already measures a real wall-clock duration
6
+ * for every run (task 3's own text: "ces données sont déjà mesurées ... il
7
+ * s'agit de les exposer, pas de les créer") — what did not exist until this
8
+ * file is a place that survives past the single call to accumulate it.
9
+ *
10
+ * Deliberately does NOT claim a "peak memory observed" figure: Node's
11
+ * `worker_threads` `resourceLimits` sets a ceiling `runIsolated` enforces,
12
+ * it does not report how much of that ceiling a run actually used, and nothing
13
+ * in this codebase measures the worker's real heap usage from the host side.
14
+ * Inventing a number here would be exactly the kind of fabricated metric
15
+ * AGENTS.md's honesty rule forbids. What IS real and is tracked: how long a
16
+ * plugin ran (cumulative and last), how many times it ran, how many of
17
+ * those runs failed and why (mirroring `PluginViolationReason`), and the
18
+ * most recent error message.
19
+ */
20
+ export type PluginRunOutcome = 'ok' | 'error' | PluginViolationReason;
21
+ export interface PluginUsageRecord {
22
+ readonly pluginName: string;
23
+ readonly callCount: number;
24
+ readonly totalDurationMs: number;
25
+ readonly errorCount: number;
26
+ readonly timeoutCount: number;
27
+ readonly memoryCount: number;
28
+ readonly crashCount: number;
29
+ readonly lastRunAt: string;
30
+ readonly lastDurationMs: number;
31
+ readonly lastOutcome: PluginRunOutcome;
32
+ readonly lastError: string | null;
33
+ }
34
+ export interface PluginRunObservation {
35
+ readonly durationMs: number;
36
+ readonly ok: boolean;
37
+ /** Set only when `ok` is `false` and the failure was classified — mirrors `IsolatedRunResult.reason`. */
38
+ readonly reason?: PluginViolationReason;
39
+ readonly error?: string;
40
+ }
41
+ export interface PluginUsageStore {
42
+ /** Accumulates one real run's outcome into `pluginName`'s running totals. */
43
+ recordRun(pluginName: string, observation: PluginRunObservation): Promise<void>;
44
+ getUsage(pluginName: string): Promise<PluginUsageRecord | null>;
45
+ listUsage(): Promise<readonly PluginUsageRecord[]>;
46
+ /** Part of fiche 29 task 4's "tout supprimer" uninstall option. */
47
+ clearUsage(pluginName: string): Promise<void>;
48
+ }
49
+ export declare function createPluginUsageStore(db: DatabaseHandle, now?: () => number): PluginUsageStore;
50
+ //# sourceMappingURL=usage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"usage.d.ts","sourceRoot":"","sources":["../../src/permissions/usage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,cAAc,EAAmB,MAAM,eAAe,CAAA;AACpE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAA;AAG1D;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,MAAM,gBAAgB,GAAG,IAAI,GAAG,OAAO,GAAG,qBAAqB,CAAA;AAErE,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAA;IAChC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAA;IAC7B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAA;IAC/B,QAAQ,CAAC,WAAW,EAAE,gBAAgB,CAAA;IACtC,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;CAClC;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAA;IACpB,yGAAyG;IACzG,QAAQ,CAAC,MAAM,CAAC,EAAE,qBAAqB,CAAA;IACvC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CACxB;AAED,MAAM,WAAW,gBAAgB;IAC/B,6EAA6E;IAC7E,SAAS,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAC/E,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAAA;IAC/D,SAAS,IAAI,OAAO,CAAC,SAAS,iBAAiB,EAAE,CAAC,CAAA;IAClD,mEAAmE;IACnE,UAAU,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CAC9C;AAqCD,wBAAgB,sBAAsB,CACpC,EAAE,EAAE,cAAc,EAClB,GAAG,GAAE,MAAM,MAAiB,GAC3B,gBAAgB,CAwDlB"}
@@ -0,0 +1,66 @@
1
+ import { identifier, sql } from '@cogenta/core';
2
+ import { PERMISSION_TABLES } from './tables.js';
3
+ function toRecord(row) {
4
+ return {
5
+ pluginName: row.plugin_name,
6
+ callCount: Number(row.call_count),
7
+ totalDurationMs: Number(row.total_duration_ms),
8
+ errorCount: Number(row.error_count),
9
+ timeoutCount: Number(row.timeout_count),
10
+ memoryCount: Number(row.memory_count),
11
+ crashCount: Number(row.crash_count),
12
+ lastRunAt: row.last_run_at,
13
+ lastDurationMs: Number(row.last_duration_ms),
14
+ lastOutcome: row.last_outcome,
15
+ lastError: row.last_error,
16
+ };
17
+ }
18
+ function outcomeOf(observation) {
19
+ if (observation.ok)
20
+ return 'ok';
21
+ return observation.reason ?? 'error';
22
+ }
23
+ export function createPluginUsageStore(db, now = Date.now) {
24
+ const usage = identifier(PERMISSION_TABLES.usage, db.dialect);
25
+ async function getRow(pluginName) {
26
+ const result = await db.query(sql `select * from ${usage} where plugin_name = ${pluginName}`);
27
+ return result.rows[0];
28
+ }
29
+ return {
30
+ async recordRun(pluginName, observation) {
31
+ const existing = await getRow(pluginName);
32
+ const outcome = outcomeOf(observation);
33
+ const timestamp = new Date(now()).toISOString();
34
+ const callCount = (existing === undefined ? 0 : Number(existing.call_count)) + 1;
35
+ const totalDurationMs = (existing === undefined ? 0 : Number(existing.total_duration_ms)) + observation.durationMs;
36
+ const errorCount = (existing === undefined ? 0 : Number(existing.error_count)) + (observation.ok ? 0 : 1);
37
+ const timeoutCount = (existing === undefined ? 0 : Number(existing.timeout_count)) +
38
+ (observation.reason === 'timeout' ? 1 : 0);
39
+ const memoryCount = (existing === undefined ? 0 : Number(existing.memory_count)) +
40
+ (observation.reason === 'memory' ? 1 : 0);
41
+ const crashCount = (existing === undefined ? 0 : Number(existing.crash_count)) +
42
+ (observation.reason === 'crash' ? 1 : 0);
43
+ const lastError = observation.ok ? null : (observation.error ?? null);
44
+ await db.query(sql `delete from ${usage} where plugin_name = ${pluginName}`);
45
+ await db.query(sql `
46
+ insert into ${usage}
47
+ (plugin_name, call_count, total_duration_ms, error_count, timeout_count,
48
+ memory_count, crash_count, last_run_at, last_duration_ms, last_outcome, last_error)
49
+ values
50
+ (${pluginName}, ${callCount}, ${totalDurationMs}, ${errorCount}, ${timeoutCount},
51
+ ${memoryCount}, ${crashCount}, ${timestamp}, ${observation.durationMs}, ${outcome}, ${lastError})`);
52
+ },
53
+ async getUsage(pluginName) {
54
+ const row = await getRow(pluginName);
55
+ return row === undefined ? null : toRecord(row);
56
+ },
57
+ async listUsage() {
58
+ const result = await db.query(sql `select * from ${usage} order by plugin_name asc`);
59
+ return result.rows.map(toRecord);
60
+ },
61
+ async clearUsage(pluginName) {
62
+ await db.query(sql `delete from ${usage} where plugin_name = ${pluginName}`);
63
+ },
64
+ };
65
+ }
66
+ //# sourceMappingURL=usage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"usage.js","sourceRoot":"","sources":["../../src/permissions/usage.ts"],"names":[],"mappings":"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"}
@@ -1 +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"}
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,CAiC/E"}
@@ -31,7 +31,20 @@ export async function ensureMarketplaceTables(db) {
31
31
  signature_verified ${t255} not null,
32
32
  installed_by ${t255},
33
33
  installed_at ${t255} not null,
34
- updated_at ${t255} not null
34
+ updated_at ${t255} not null,
35
+ enabled ${t255} not null default 'true'
35
36
  )`);
37
+ // Fiche 29 task 1 — "activer/désactiver" as a real, separate column, not
38
+ // a schema migration: `create table if not exists` never re-runs on an
39
+ // existing table, so a pre-fiche-29 install row (created before this
40
+ // column existed) needs it added explicitly, `default` applying only to
41
+ // rows the `insert` itself creates. Every dialect here supports `add
42
+ // column ... default` (SQLite since 3.35 for `default`-only columns,
43
+ // Postgres and MySQL/MariaDB unconditionally) — same portable
44
+ // best-effort idiom `createIndexIfMissing` already uses for "already
45
+ // there, not an error".
46
+ await db
47
+ .query(sql `alter table ${installs} add column enabled ${t255} not null default 'true'`)
48
+ .catch(() => undefined);
36
49
  }
37
50
  //# sourceMappingURL=marketplace-tables.js.map
@@ -1 +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"}
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;gBACP,IAAI;MACd,CAAC,CAAA;IAEL,yEAAyE;IACzE,uEAAuE;IACvE,qEAAqE;IACrE,wEAAwE;IACxE,qEAAqE;IACrE,qEAAqE;IACrE,8DAA8D;IAC9D,qEAAqE;IACrE,wBAAwB;IACxB,MAAM,EAAE;SACL,KAAK,CAAC,GAAG,CAAA,eAAe,QAAQ,uBAAuB,IAAI,0BAA0B,CAAC;SACtF,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAA;AAC3B,CAAC"}
@@ -1,6 +1,8 @@
1
1
  import { type DatabaseHandle } from '@cogenta/core';
2
2
  import { type PluginCapabilityDescription } from '../permissions/describe.js';
3
+ import type { PluginDisableStore } from '../permissions/disabled.js';
3
4
  import type { PluginGrantStore } from '../permissions/grants.js';
5
+ import type { PluginUsageStore } from '../permissions/usage.js';
4
6
  /**
5
7
  * L17 task 1 — "Registre consultable (recherche, catégories)".
6
8
  *
@@ -18,6 +20,8 @@ export type MarketplaceItemKind = 'plugin' | 'theme' | 'skin' | 'skill';
18
20
  export interface MarketplaceChangelogEntry {
19
21
  readonly version: string;
20
22
  readonly notes: string;
23
+ /** Fiche 29 task 5 — "date de la dernière mise à jour", read off the newest changelog entry when present. */
24
+ readonly releasedAt?: string;
21
25
  }
22
26
  export interface MarketplaceCatalogEntry {
23
27
  readonly id: string;
@@ -31,6 +35,8 @@ export interface MarketplaceCatalogEntry {
31
35
  * directory `loadMarketplacePlugin` can resolve. Never interpreted here.
32
36
  */
33
37
  readonly reference: string;
38
+ /** Fiche 29 task 5 — "Auteur, source" shown on the compatibility/trust panel before install. Caller-supplied, deployer-authored catalog metadata; never derived from the manifest (which has no author field). */
39
+ readonly author?: string;
34
40
  readonly screenshots?: readonly string[];
35
41
  readonly changelog?: readonly MarketplaceChangelogEntry[];
36
42
  }
@@ -57,6 +63,8 @@ export interface MarketplaceInstallRecord {
57
63
  readonly installedBy: string | null;
58
64
  readonly installedAt: string;
59
65
  readonly updatedAt: string;
66
+ /** Fiche 29 task 1 — the manual activate/deactivate toggle, independent of `@cogenta/plugins`' automatic `PluginDisableStore` (a timeout/memory/crash violation, task 6 of L7). Both can make a plugin non-runnable; this is only the human-chosen half. */
67
+ readonly enabled: boolean;
60
68
  }
61
69
  /** What viewing an item's "fiche détaillée" (task 3) needs, before installing. */
62
70
  export interface MarketplacePreview {
@@ -71,6 +79,20 @@ export interface MarketplacePreview {
71
79
  readonly code: string;
72
80
  readonly message: string;
73
81
  };
82
+ /**
83
+ * Fiche 29 task 5 — "Version de Cogenta requise, vérifiée avant
84
+ * l'installation, avec un refus clair". `null` only when resolution
85
+ * itself failed (`error` is set) — there is no manifest to check
86
+ * compatibility against. Computed by `loadMarketplacePlugin` from the
87
+ * `engineVersion` this installer was constructed with; `install`/`update`
88
+ * refuse honestly (`MARKETPLACE_ENGINE_INCOMPATIBLE`) rather than let an
89
+ * incompatible plugin fail at runtime instead.
90
+ */
91
+ readonly engineCompatible: boolean | null;
92
+ /** The resolvable manifest's own version — `null` only when resolution failed. Compared against an installed item's `pluginVersion` to answer "is an update available" (task 2). */
93
+ readonly latestVersion: string | null;
94
+ /** Fiche 29 task 5 — "source". Always `'registry'` when `supported`: `install`/`update` always call `loadMarketplacePlugin`, which classifies every marketplace item as registry-trust regardless of whether its `reference` happens to be a local path (see that function's own doc comment). */
95
+ readonly source: 'registry' | null;
74
96
  }
75
97
  export interface MarketplaceUpdateResult {
76
98
  readonly record: MarketplaceInstallRecord;
@@ -111,12 +133,38 @@ export interface MarketplaceInstaller {
111
133
  }): Promise<MarketplaceUpdateResult>;
112
134
  list(): Promise<readonly MarketplaceInstallRecord[]>;
113
135
  get(itemId: string): Promise<MarketplaceInstallRecord | null>;
114
- uninstall(itemId: string): Promise<void>;
136
+ /**
137
+ * Fiche 29 task 4 — "désinstallation propre". `removeData: true` also
138
+ * revokes every active capability grant for the plugin
139
+ * (`PluginGrantStore.revokeAll`) and, when a disable/usage store was
140
+ * supplied to this installer, clears its auto-disable record and
141
+ * accumulated resource usage — irreversible, matching the router's own
142
+ * "confirmation forte" for this path. Without it (the default), only the
143
+ * install row is removed: grants, the disable record and usage history
144
+ * all survive, which is what makes a later reinstall able to pick up
145
+ * exactly where the plugin left off.
146
+ */
147
+ uninstall(itemId: string, options?: {
148
+ readonly removeData?: boolean;
149
+ }): Promise<void>;
150
+ /** Fiche 29 task 1 — the manual half of "activer/désactiver" (`MarketplaceInstallRecord.enabled`). Activating an item still auto-disabled (`PluginDisableStore`) does not by itself make it runnable again — that decision is `PluginDisableStore.enable`'s, deliberately kept a separate, explicit action (the router composes both). */
151
+ activate(itemId: string): Promise<MarketplaceInstallRecord>;
152
+ deactivate(itemId: string): Promise<MarketplaceInstallRecord>;
115
153
  }
116
154
  export interface MarketplaceInstallerOptions {
117
155
  readonly trustedPublicKeys?: readonly string[];
118
156
  readonly grantStore: PluginGrantStore;
119
157
  readonly now?: () => number;
158
+ /**
159
+ * Cogenta's own version, checked against a resolved manifest's `engine`
160
+ * range (fiche 29 task 5). Passed straight through to
161
+ * `loadMarketplacePlugin` — see `LoadPluginOptions.engineVersion` for why
162
+ * the default is an honest placeholder rather than a fabricated pass.
163
+ */
164
+ readonly engineVersion?: string;
165
+ /** Fiche 29 task 4 — only consulted by `uninstall(id, { removeData: true })`; a plain uninstall never touches either store. */
166
+ readonly disableStore?: PluginDisableStore;
167
+ readonly usageStore?: PluginUsageStore;
120
168
  }
121
169
  export declare function createMarketplaceInstaller(db: DatabaseHandle, options: MarketplaceInstallerOptions): MarketplaceInstaller;
122
170
  //# sourceMappingURL=marketplace.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"marketplace.d.ts","sourceRoot":"","sources":["../../src/registries/marketplace.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"marketplace.d.ts","sourceRoot":"","sources":["../../src/registries/marketplace.ts"],"names":[],"mappings":"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"}
@@ -37,8 +37,21 @@ function toRecord(row) {
37
37
  installedBy: row.installed_by,
38
38
  installedAt: row.installed_at,
39
39
  updatedAt: row.updated_at,
40
+ // `enabled` is nullable at the SQL level only because a row created
41
+ // before fiche 29's `alter table ... add column` ran has no explicit
42
+ // value in older engines that ignore `default` on backfill — treated as
43
+ // "still active", matching every pre-existing install's real state.
44
+ enabled: row.enabled !== 'false',
40
45
  };
41
46
  }
47
+ function engineIncompatible(entry, manifest) {
48
+ return new CogentaError({
49
+ code: 'MARKETPLACE_ENGINE_INCOMPATIBLE',
50
+ message: `"${entry.displayName}" requires Cogenta "${manifest.engine}", which this installation does not satisfy.`,
51
+ hint: 'Upgrade Cogenta, or choose a version of this item compatible with the current installation.',
52
+ details: { itemId: entry.id, engine: manifest.engine },
53
+ });
54
+ }
42
55
  function unsupportedKind(entry) {
43
56
  return new CogentaError({
44
57
  code: 'MARKETPLACE_KIND_UNSUPPORTED',
@@ -55,19 +68,39 @@ export function createMarketplaceInstaller(db, options) {
55
68
  const now = options.now ?? Date.now;
56
69
  const trustedPublicKeys = options.trustedPublicKeys ?? [];
57
70
  const grantStore = options.grantStore;
71
+ const engineVersion = options.engineVersion;
58
72
  async function getRecord(itemId) {
59
73
  const result = await db.query(sql `
60
74
  select * from ${installs} where item_id = ${itemId}`);
61
75
  const row = result.rows[0];
62
76
  return row === undefined ? null : toRecord(row);
63
77
  }
78
+ async function setEnabled(itemId, enabled) {
79
+ await db.query(sql `
80
+ update ${installs} set enabled = ${String(enabled)}, updated_at = ${new Date(now()).toISOString()}
81
+ where item_id = ${itemId}`);
82
+ const record = await getRecord(itemId);
83
+ if (record === null) {
84
+ throw new CogentaError({
85
+ code: 'MARKETPLACE_NOT_INSTALLED',
86
+ message: `"${itemId}" is not installed.`,
87
+ hint: 'Install it first.',
88
+ details: { itemId },
89
+ });
90
+ }
91
+ return record;
92
+ }
64
93
  async function resolveOrError(entry) {
65
94
  try {
66
- const resolved = await loadMarketplacePlugin(entry.reference, { trustedPublicKeys });
95
+ const resolved = await loadMarketplacePlugin(entry.reference, {
96
+ trustedPublicKeys,
97
+ ...(engineVersion === undefined ? {} : { engineVersion }),
98
+ });
67
99
  return {
68
100
  ok: true,
69
101
  manifest: resolved.manifest,
70
102
  signatureVerified: resolved.signatureVerified,
103
+ engineCompatible: engineVersion === undefined ? null : resolved.engineCompatible,
71
104
  };
72
105
  }
73
106
  catch (error) {
@@ -80,7 +113,15 @@ export function createMarketplaceInstaller(db, options) {
80
113
  return {
81
114
  async preview(entry) {
82
115
  if (entry.kind !== 'plugin') {
83
- return { entry, supported: false, signatureVerified: false, capabilities: [] };
116
+ return {
117
+ entry,
118
+ supported: false,
119
+ signatureVerified: false,
120
+ capabilities: [],
121
+ engineCompatible: null,
122
+ latestVersion: null,
123
+ source: null,
124
+ };
84
125
  }
85
126
  const resolution = await resolveOrError(entry);
86
127
  if (!resolution.ok) {
@@ -90,6 +131,9 @@ export function createMarketplaceInstaller(db, options) {
90
131
  signatureVerified: false,
91
132
  capabilities: [],
92
133
  error: resolution.error,
134
+ engineCompatible: null,
135
+ latestVersion: null,
136
+ source: null,
93
137
  };
94
138
  }
95
139
  return {
@@ -97,6 +141,9 @@ export function createMarketplaceInstaller(db, options) {
97
141
  supported: true,
98
142
  signatureVerified: resolution.signatureVerified,
99
143
  capabilities: describeAll(resolution.manifest.capabilities),
144
+ engineCompatible: resolution.engineCompatible,
145
+ latestVersion: resolution.manifest.version,
146
+ source: 'registry',
100
147
  };
101
148
  },
102
149
  async install(entry, actorId) {
@@ -104,22 +151,35 @@ export function createMarketplaceInstaller(db, options) {
104
151
  throw unsupportedKind(entry);
105
152
  // Never a soft catch here: an invalid/missing signature throws and
106
153
  // nothing below runs — this is the one line the whole task hinges on.
107
- const resolved = await loadMarketplacePlugin(entry.reference, { trustedPublicKeys });
154
+ const resolved = await loadMarketplacePlugin(entry.reference, {
155
+ trustedPublicKeys,
156
+ ...(engineVersion === undefined ? {} : { engineVersion }),
157
+ });
158
+ // Fiche 29 task 5 — refused BEFORE anything is persisted, exactly
159
+ // like the signature check above: an incompatible version never gets
160
+ // a chance to fail later at runtime instead. Only enforced once this
161
+ // installer was configured with a real `engineVersion` — see
162
+ // `resolveOrError`'s doc comment for why the default placeholder
163
+ // must never manufacture a refusal.
164
+ if (engineVersion !== undefined && !resolved.engineCompatible) {
165
+ throw engineIncompatible(entry, resolved.manifest);
166
+ }
108
167
  const timestamp = new Date(now()).toISOString();
109
168
  // Delete-then-insert rather than a dialect-specific upsert (`on
110
169
  // conflict` on Postgres/SQLite, `on duplicate key` on MySQL) — the
111
170
  // same portable idiom `PluginGrantStore.grant` already uses
112
171
  // (`../permissions/grants.js`) for the identical "re-installing is
113
- // idempotent, not a duplicate row" requirement.
172
+ // idempotent, not a duplicate row" requirement. A (re)install always
173
+ // resets `enabled` to `true` — a fresh install is never born disabled.
114
174
  await db.query(sql `delete from ${installs} where item_id = ${entry.id}`);
115
175
  await db.query(sql `
116
176
  insert into ${installs}
117
177
  (item_id, kind, display_name, reference, plugin_name, plugin_version,
118
- signature_verified, installed_by, installed_at, updated_at)
178
+ signature_verified, installed_by, installed_at, updated_at, enabled)
119
179
  values
120
180
  (${entry.id}, ${entry.kind}, ${entry.displayName}, ${entry.reference},
121
181
  ${resolved.manifest.name}, ${resolved.manifest.version},
122
- ${String(resolved.signatureVerified)}, ${actorId}, ${timestamp}, ${timestamp})`);
182
+ ${String(resolved.signatureVerified)}, ${actorId}, ${timestamp}, ${timestamp}, ${'true'})`);
123
183
  return {
124
184
  itemId: entry.id,
125
185
  kind: entry.kind,
@@ -131,6 +191,7 @@ export function createMarketplaceInstaller(db, options) {
131
191
  installedBy: actorId,
132
192
  installedAt: timestamp,
133
193
  updatedAt: timestamp,
194
+ enabled: true,
134
195
  };
135
196
  },
136
197
  async update(entry, actorId, updateOptions = {}) {
@@ -148,7 +209,13 @@ export function createMarketplaceInstaller(db, options) {
148
209
  // Signature is verified before anything else here too — an update
149
210
  // never trusts the previously-installed state as a substitute for
150
211
  // re-checking the new reference.
151
- const resolved = await loadMarketplacePlugin(entry.reference, { trustedPublicKeys });
212
+ const resolved = await loadMarketplacePlugin(entry.reference, {
213
+ trustedPublicKeys,
214
+ ...(engineVersion === undefined ? {} : { engineVersion }),
215
+ });
216
+ if (engineVersion !== undefined && !resolved.engineCompatible) {
217
+ throw engineIncompatible(entry, resolved.manifest);
218
+ }
152
219
  const previousGrants = existing.pluginName === null ? [] : await grantStore.listGrants(existing.pluginName);
153
220
  const pending = detectCapabilitiesNeedingApproval(resolved.manifest, previousGrants.map((grant) => grant.capability));
154
221
  if (pending.length > 0 && updateOptions.confirmPendingPermissions !== true) {
@@ -189,9 +256,23 @@ export function createMarketplaceInstaller(db, options) {
189
256
  async get(itemId) {
190
257
  return getRecord(itemId);
191
258
  },
192
- async uninstall(itemId) {
259
+ async uninstall(itemId, uninstallOptions = {}) {
260
+ if (uninstallOptions.removeData === true) {
261
+ const record = await getRecord(itemId);
262
+ if (record?.pluginName !== null && record?.pluginName !== undefined) {
263
+ await grantStore.revokeAll(record.pluginName);
264
+ await options.disableStore?.enable(record.pluginName);
265
+ await options.usageStore?.clearUsage(record.pluginName);
266
+ }
267
+ }
193
268
  await db.query(sql `delete from ${installs} where item_id = ${itemId}`);
194
269
  },
270
+ async activate(itemId) {
271
+ return setEnabled(itemId, true);
272
+ },
273
+ async deactivate(itemId) {
274
+ return setEnabled(itemId, false);
275
+ },
195
276
  };
196
277
  }
197
278
  //# sourceMappingURL=marketplace.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"marketplace.js","sourceRoot":"","sources":["../../src/registries/marketplace.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"marketplace.js","sourceRoot":"","sources":["../../src/registries/marketplace.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"skills.d.ts","sourceRoot":"","sources":["../../src/registries/skills.ts"],"names":[],"mappings":"AACA,OAAO,EAAgB,KAAK,cAAc,EAA0B,MAAM,eAAe,CAAA;AAGzF,MAAM,MAAM,qBAAqB,GAAG,SAAS,GAAG,UAAU,GAAG,UAAU,CAAA;AAEvE,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAA;IAC7B,6FAA6F;IAC7F,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;CAC5B;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;IACnC,QAAQ,CAAC,MAAM,EAAE,qBAAqB,CAAA;IACtC,kGAAkG;IAClG,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;IACjC,QAAQ,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAA;IACpC,sFAAsF;IACtF,QAAQ,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAA;IACrC,QAAQ,CAAC,eAAe,EAAE,MAAM,GAAG,IAAI,CAAA;IACvC,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;IAClC,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;IAClC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;CAC7B;AAED,MAAM,MAAM,mBAAmB,GAAG,QAAQ,GAAG,QAAQ,CAAA;AAErD,MAAM,MAAM,iBAAiB,GACzB;IAAE,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,oBAAoB,CAAA;CAAE,GAC3D;IAAE,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAA;CAAE,GACpD;IAAE,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,iBAAiB,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,oBAAoB,CAAA;CAAE,CAAA;AAEpG,MAAM,WAAW,aAAa;IAC5B;;;;;;;OAOG;IACH,MAAM,CAAC,KAAK,EAAE,oBAAoB,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAA;IAClE,2EAA2E;IAC3E,MAAM,CACJ,EAAE,EAAE,MAAM,EACV,QAAQ,EAAE,mBAAmB,EAC7B,cAAc,EAAE,MAAM,EACtB,KAAK,CAAC,EAAE,MAAM,GACb,OAAO,CAAC,iBAAiB,CAAC,CAAA;IAC7B,YAAY,IAAI,OAAO,CAAC,SAAS,oBAAoB,EAAE,CAAC,CAAA;IACxD,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC,CAAA;CACtD;AAoCD,wBAAgB,mBAAmB,CACjC,EAAE,EAAE,cAAc,EAClB,GAAG,GAAE,MAAM,MAAiB,GAC3B,aAAa,CAoGf"}
1
+ {"version":3,"file":"skills.d.ts","sourceRoot":"","sources":["../../src/registries/skills.ts"],"names":[],"mappings":"AACA,OAAO,EAAgB,KAAK,cAAc,EAA0B,MAAM,eAAe,CAAA;AAGzF,MAAM,MAAM,qBAAqB,GAAG,SAAS,GAAG,UAAU,GAAG,UAAU,CAAA;AAEvE,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAA;IAC7B,6FAA6F;IAC7F,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;CAC5B;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;IACnC,QAAQ,CAAC,MAAM,EAAE,qBAAqB,CAAA;IACtC,kGAAkG;IAClG,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;IACjC,QAAQ,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAA;IACpC,sFAAsF;IACtF,QAAQ,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAA;IACrC,QAAQ,CAAC,eAAe,EAAE,MAAM,GAAG,IAAI,CAAA;IACvC,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;IAClC,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;IAClC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;CAC7B;AAED,MAAM,MAAM,mBAAmB,GAAG,QAAQ,GAAG,QAAQ,CAAA;AAErD,MAAM,MAAM,iBAAiB,GACzB;IAAE,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,oBAAoB,CAAA;CAAE,GAC3D;IAAE,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAA;CAAE,GACpD;IAAE,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,iBAAiB,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,oBAAoB,CAAA;CAAE,CAAA;AAEpG,MAAM,WAAW,aAAa;IAC5B;;;;;;;OAOG;IACH,MAAM,CAAC,KAAK,EAAE,oBAAoB,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAA;IAClE,2EAA2E;IAC3E,MAAM,CACJ,EAAE,EAAE,MAAM,EACV,QAAQ,EAAE,mBAAmB,EAC7B,cAAc,EAAE,MAAM,EACtB,KAAK,CAAC,EAAE,MAAM,GACb,OAAO,CAAC,iBAAiB,CAAC,CAAA;IAC7B,YAAY,IAAI,OAAO,CAAC,SAAS,oBAAoB,EAAE,CAAC,CAAA;IACxD,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC,CAAA;CACtD;AAoCD,wBAAgB,mBAAmB,CACjC,EAAE,EAAE,cAAc,EAClB,GAAG,GAAE,MAAM,MAAiB,GAC3B,aAAa,CAuGf"}
@@ -32,7 +32,10 @@ export function createSkillRegistry(db, now = Date.now) {
32
32
  try {
33
33
  const { metadata } = parseSkillFile(input.displayName, input.rawContent);
34
34
  skillName = metadata.name;
35
- skillVersion = metadata.version;
35
+ // `version` is optional on a skill file since L24 task 4 (a real
36
+ // Claude Code/Codex `SKILL.md` never carries one) — the marketplace
37
+ // still records whatever the submitter provided, `null` if absent.
38
+ skillVersion = metadata.version ?? null;
36
39
  }
37
40
  catch (error) {
38
41
  status = 'rejected';
@@ -1 +1 @@
1
- {"version":3,"file":"skills.js","sourceRoot":"","sources":["../../src/registries/skills.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"skills.js","sourceRoot":"","sources":["../../src/registries/skills.ts"],"names":[],"mappings":"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"}
@@ -17,6 +17,16 @@ export interface SkinGalleryEntry {
17
17
  readonly rejectionCode: string | null;
18
18
  readonly rejectionReason: string | null;
19
19
  readonly submittedAt: string;
20
+ /**
21
+ * The token JSON the submitter sent, parsed back out — the caller that
22
+ * turns this into an admin-facing gallery card (fiche 14 task 1) needs
23
+ * more than a name and a verdict to actually render a swatch or apply the
24
+ * skin. `null` on a rejected entry: a rejected skin never made it past
25
+ * `validateSkin`, so nothing here can be trusted to be a well-shaped token
26
+ * tree, and offering it anyway would invite a caller to render or apply a
27
+ * skin the gate has already refused.
28
+ */
29
+ readonly tokens: Record<string, unknown> | null;
20
30
  }
21
31
  export interface SkinGallery {
22
32
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"skins.d.ts","sourceRoot":"","sources":["../../src/registries/skins.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,KAAK,cAAc,EAA0B,MAAM,eAAe,CAAA;AAIzF,MAAM,MAAM,oBAAoB,GAAG,UAAU,GAAG,UAAU,CAAA;AAE1D,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAA;IAC7B,sGAAsG;IACtG,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAA;CACzB;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;IACnC,QAAQ,CAAC,MAAM,EAAE,oBAAoB,CAAA;IACrC,qGAAqG;IACrG,QAAQ,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAA;IACrC,QAAQ,CAAC,eAAe,EAAE,MAAM,GAAG,IAAI,CAAA;IACvC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;CAC7B;AAED,MAAM,WAAW,WAAW;IAC1B;;;;;OAKG;IACH,MAAM,CAAC,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAA;IAC7D,YAAY,IAAI,OAAO,CAAC,SAAS,gBAAgB,EAAE,CAAC,CAAA;IACpD,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAAA;CAClD;AA0BD,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,cAAc,EAAE,GAAG,GAAE,MAAM,MAAiB,GAAG,WAAW,CAqD/F"}
1
+ {"version":3,"file":"skins.d.ts","sourceRoot":"","sources":["../../src/registries/skins.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,KAAK,cAAc,EAA0B,MAAM,eAAe,CAAA;AAIzF,MAAM,MAAM,oBAAoB,GAAG,UAAU,GAAG,UAAU,CAAA;AAE1D,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAA;IAC7B,sGAAsG;IACtG,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAA;CACzB;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;IACnC,QAAQ,CAAC,MAAM,EAAE,oBAAoB,CAAA;IACrC,qGAAqG;IACrG,QAAQ,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAA;IACrC,QAAQ,CAAC,eAAe,EAAE,MAAM,GAAG,IAAI,CAAA;IACvC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B;;;;;;;;OAQG;IACH,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAA;CAChD;AAED,MAAM,WAAW,WAAW;IAC1B;;;;;OAKG;IACH,MAAM,CAAC,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAA;IAC7D,YAAY,IAAI,OAAO,CAAC,SAAS,gBAAgB,EAAE,CAAC,CAAA;IACpD,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAAA;CAClD;AAgCD,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,cAAc,EAAE,GAAG,GAAE,MAAM,MAAiB,GAAG,WAAW,CAsD/F"}
@@ -2,15 +2,19 @@ import { CogentaError, identifier, newId, sql } from '@cogenta/core';
2
2
  import { validateSkin } from '@cogenta/render';
3
3
  import { REGISTRY_TABLES } from './tables.js';
4
4
  function toEntry(row) {
5
+ const status = row.status === 'accepted' ? 'accepted' : 'rejected';
5
6
  return {
6
7
  id: row.id,
7
8
  submitterId: row.submitter_id,
8
9
  displayName: row.display_name,
9
10
  description: row.description,
10
- status: row.status === 'accepted' ? 'accepted' : 'rejected',
11
+ status,
11
12
  rejectionCode: row.rejection_code,
12
13
  rejectionReason: row.rejection_reason,
13
14
  submittedAt: row.submitted_at,
15
+ tokens: status === 'accepted' && typeof row.tokens_json === 'string'
16
+ ? JSON.parse(row.tokens_json)
17
+ : null,
14
18
  };
15
19
  }
16
20
  export function createSkinGallery(db, now = Date.now) {
@@ -44,18 +48,19 @@ export function createSkinGallery(db, now = Date.now) {
44
48
  status,
45
49
  rejectionCode,
46
50
  rejectionReason,
51
+ tokens: status === 'accepted' ? input.tokens : null,
47
52
  submittedAt,
48
53
  };
49
54
  },
50
55
  async listAccepted() {
51
56
  const result = await db.query(sql `
52
- select id, submitter_id, display_name, description, status, rejection_code, rejection_reason, submitted_at
57
+ select id, submitter_id, display_name, description, tokens_json, status, rejection_code, rejection_reason, submitted_at
53
58
  from ${skins} where status = 'accepted' order by submitted_at asc`);
54
59
  return result.rows.map(toEntry);
55
60
  },
56
61
  async get(id) {
57
62
  const result = await db.query(sql `
58
- select id, submitter_id, display_name, description, status, rejection_code, rejection_reason, submitted_at
63
+ select id, submitter_id, display_name, description, tokens_json, status, rejection_code, rejection_reason, submitted_at
59
64
  from ${skins} where id = ${id}`);
60
65
  const row = result.rows[0];
61
66
  return row === undefined ? null : toEntry(row);
@@ -1 +1 @@
1
- {"version":3,"file":"skins.js","sourceRoot":"","sources":["../../src/registries/skins.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"skins.js","sourceRoot":"","sources":["../../src/registries/skins.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.2.0",
3
+ "version": "0.3.1",
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/core": "0.4.0",
32
- "@cogenta/agents": "0.2.1",
33
- "@cogenta/render": "0.1.4"
31
+ "@cogenta/agents": "0.4.0",
32
+ "@cogenta/core": "0.6.0",
33
+ "@cogenta/render": "0.2.1"
34
34
  },
35
35
  "devDependencies": {
36
36
  "typescript": "^7.0.2",
37
37
  "vitest": "^4.1.10",
38
- "@cogenta/blocks": "0.1.4",
39
- "@cogenta/schema": "0.3.0"
38
+ "@cogenta/schema": "0.4.1",
39
+ "@cogenta/blocks": "1.0.1"
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')\"",