@oktis-works/core 0.6.1 → 0.8.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.
Files changed (55) hide show
  1. package/dist/cache/tags.d.ts +12 -0
  2. package/dist/cache/tags.d.ts.map +1 -0
  3. package/dist/cache/tags.js +55 -0
  4. package/dist/cache/tags.js.map +1 -0
  5. package/dist/comments/service.d.ts +54 -0
  6. package/dist/comments/service.d.ts.map +1 -0
  7. package/dist/comments/service.js +166 -0
  8. package/dist/comments/service.js.map +1 -0
  9. package/dist/content/service.d.ts.map +1 -1
  10. package/dist/content/service.js +24 -14
  11. package/dist/content/service.js.map +1 -1
  12. package/dist/fields/location-rules.d.ts +3 -1
  13. package/dist/fields/location-rules.d.ts.map +1 -1
  14. package/dist/fields/location-rules.js +1 -0
  15. package/dist/fields/location-rules.js.map +1 -1
  16. package/dist/fields/service.d.ts +5 -1
  17. package/dist/fields/service.d.ts.map +1 -1
  18. package/dist/fields/service.js +10 -3
  19. package/dist/fields/service.js.map +1 -1
  20. package/dist/fields/types/registry.d.ts +2 -0
  21. package/dist/fields/types/registry.d.ts.map +1 -1
  22. package/dist/fields/types/registry.js.map +1 -1
  23. package/dist/hooks/points.d.ts +6 -0
  24. package/dist/hooks/points.d.ts.map +1 -1
  25. package/dist/hooks/points.js +7 -0
  26. package/dist/hooks/points.js.map +1 -1
  27. package/dist/index.d.ts +5 -1
  28. package/dist/index.d.ts.map +1 -1
  29. package/dist/index.js +5 -1
  30. package/dist/index.js.map +1 -1
  31. package/dist/mail/service.d.ts +26 -0
  32. package/dist/mail/service.d.ts.map +1 -0
  33. package/dist/mail/service.js +117 -0
  34. package/dist/mail/service.js.map +1 -0
  35. package/dist/plugin/load.d.ts +78 -10
  36. package/dist/plugin/load.d.ts.map +1 -1
  37. package/dist/plugin/load.js +277 -58
  38. package/dist/plugin/load.js.map +1 -1
  39. package/dist/queue/producer.d.ts +12 -1
  40. package/dist/queue/producer.d.ts.map +1 -1
  41. package/dist/queue/producer.js +92 -0
  42. package/dist/queue/producer.js.map +1 -1
  43. package/dist/role/plugin-roles.d.ts +39 -0
  44. package/dist/role/plugin-roles.d.ts.map +1 -0
  45. package/dist/role/plugin-roles.js +161 -0
  46. package/dist/role/plugin-roles.js.map +1 -0
  47. package/dist/theme/service.d.ts +5 -0
  48. package/dist/theme/service.d.ts.map +1 -1
  49. package/dist/theme/service.js +10 -0
  50. package/dist/theme/service.js.map +1 -1
  51. package/dist/webhooks/service.d.ts +33 -0
  52. package/dist/webhooks/service.d.ts.map +1 -0
  53. package/dist/webhooks/service.js +57 -0
  54. package/dist/webhooks/service.js.map +1 -0
  55. package/package.json +6 -6
@@ -1,35 +1,20 @@
1
- // @oktis-works/core - Sincronização de plugins habilitados em runtime
1
+ // @oktis-works/core - Enabled plugins runtime sync
2
2
  //
3
- // O PLUGIN.md promete que `register(registry)` é chamado quando o plugin é
4
- // carregado — aqui o core cumpre isso para todos os processos (API, web,
5
- // worker, dev). Dois escopos:
3
+ // PLUGIN.md promises that `register(registry)` is called when the plugin is
4
+ // loaded — the core honors it for every process (API, web, worker, dev). Two
5
+ // scopes:
6
6
  //
7
- // - **platform** (`syncEnabledPlugins`): plugins `tenant_id IS NULL`,
8
- // habilitados globalmente → registry platform, carregado no boot;
9
- // - **tenant** (`ensureTenantPluginsLoaded`): plugins vinculados em
10
- // `plugin_tenants` (status ENABLED) → registry do tenant, carregado sob
11
- // demanda na primeira requisição daquele tenant (cache com TTL + LRU).
7
+ // - **platform** (`syncEnabledPlugins`): plugins with `tenant_id IS NULL`,
8
+ // enabled globally → platform registry, loaded at boot;
9
+ // - **tenant** (`ensureTenantPluginsLoaded`): plugins linked in
10
+ // `plugin_tenants` (ENABLED status) → tenant registry, loaded on demand
11
+ // at that tenant's first request (TTL + LRU cache).
12
12
  //
13
- // Nunca lança: falha de banco, diretório ausente ou plugin quebrado são
14
- // reportadas no resultado (e persistidas em `plugins.error`), sem derrubar o
15
- // boot. Falhas ficam visíveis em `getPluginsRuntimeState()` (rota
16
- // `/api/v1/plugins/runtime` + badge no admin) — não são silenciadas.
17
- // @oktis-works/core - Sincronização de plugins habilitados em runtime
18
- //
19
- // O PLUGIN.md promete que `register(registry)` é chamado quando o plugin é
20
- // carregado — aqui o core cumpre isso para todos os processos (API, web,
21
- // worker, dev). Dois escopos:
22
- //
23
- // - **platform** (`syncEnabledPlugins`): plugins `tenant_id IS NULL`,
24
- // habilitados globalmente → registry platform, carregado no boot;
25
- // - **tenant** (`ensureTenantPluginsLoaded`): plugins vinculados em
26
- // `plugin_tenants` (status ENABLED) → registry do tenant, carregado sob
27
- // demanda na primeira requisição daquele tenant (cache com TTL + LRU).
28
- //
29
- // Nunca lança: falha de banco, diretório ausente ou plugin quebrado são
30
- // reportadas no resultado (e persistidas em `plugins.error`), sem derrubar o
31
- // boot. Falhas ficam visíveis em `getPluginsRuntimeState()` (rota
32
- // `/api/v1/plugins/runtime` + badge no admin) — não são silenciadas.
13
+ // Never throws: database failure, missing directory or a broken plugin are
14
+ // reported in the result (and persisted in `plugins.error`) without breaking
15
+ // the boot. Failures are visible in `getPluginsRuntimeState()` (the
16
+ // `/api/v1/plugins/runtime` route + admin badge) — never silenced.
17
+ import { createHash } from 'node:crypto';
33
18
  import { getConnection } from '@oktis-works/database';
34
19
  import { loadConfig } from '@oktis-works/config';
35
20
  import { resolvePluginPermissionPolicy } from '@oktis-works/validation';
@@ -39,9 +24,16 @@ import { getEventBus } from '../events/bus.js';
39
24
  import { tenantService } from '../tenant/service.js';
40
25
  import { userService } from '../user/service.js';
41
26
  import { fieldGroupService } from '../fields/service.js';
27
+ import { postTypeRegistry } from '../content/post-types.js';
28
+ import { taxonomyService } from '../taxonomies/service.js';
29
+ import { pluginRolesService } from '../role/plugin-roles.js';
30
+ import { mailService } from '../mail/service.js';
31
+ import { auditService } from '../observability/audit.js';
32
+ import { getCache } from '../cache/index.js';
33
+ import { queueProducer } from '../queue/producer.js';
42
34
  import { getCurrentTenantIdSync, getCurrentUserIdSync, getCurrentRequestIdSync } from '../tenant/context.js';
43
- // Dynamic imports for circular dependency with plugin-runtime
44
- // Using require with computed string to avoid TypeScript compile-time checking
35
+ // Dynamic imports for the circular dependency with plugin-runtime
36
+ // (non-literal require so TypeScript cannot resolve it at build time)
45
37
  const getPluginRuntime = async () => {
46
38
  return require('@oktis-works/plugin-runtime');
47
39
  };
@@ -56,22 +48,119 @@ const getBootstrapPlugins = async () => (await getPluginRuntimeCached()).bootstr
56
48
  const getHookRegistryStore = async () => (await getPluginRuntimeCached()).getHookRegistryStore;
57
49
  const unloadTenant = async () => (await getPluginRuntimeCached()).unloadTenant;
58
50
  const getLoadedPluginRoutes = async () => (await getPluginRuntimeCached()).getLoadedPluginRoutes;
51
+ const getLoadedPluginJobHandlers = async () => (await getPluginRuntimeCached()).getLoadedPluginJobHandlers;
52
+ const getLoadedPluginAdminExtensions = async () => (await getPluginRuntimeCached()).getLoadedPluginAdminExtensions;
53
+ const getLoadedPluginBlocks = async () => (await getPluginRuntimeCached()).getLoadedPluginBlocks;
54
+ const getLoadedPluginPatterns = async () => (await getPluginRuntimeCached()).getLoadedPluginPatterns;
55
+ const getLoadedPluginAssets = async () => (await getPluginRuntimeCached()).getLoadedPluginAssets;
56
+ const getLoadedPluginHealthChecks = async () => (await getPluginRuntimeCached()).getLoadedPluginHealthChecks;
57
+ /** Deterministic plugin job id (schedules are idempotent by it). */
58
+ function pluginJobId(tenantId, pluginName, jobName) {
59
+ return `plugin:${tenantId ?? 'platform'}:${pluginName}:${jobName}`;
60
+ }
61
+ /**
62
+ * Resolves the handler registered by a plugin for a job (via api.jobs.on).
63
+ * Scope: platform (`tenantId` null) or tenant (loaded on demand).
64
+ * Never throws — null when the plugin is disabled or the handler is absent.
65
+ */
66
+ export async function getPluginJobHandler(tenantId, pluginName, jobName) {
67
+ try {
68
+ const entries = await (await getLoadedPluginJobHandlers())(scopeKey(tenantId));
69
+ for (const entry of entries) {
70
+ if (entry.pluginName === pluginName) {
71
+ return entry.handlers.get(jobName) ?? null;
72
+ }
73
+ }
74
+ return null;
75
+ }
76
+ catch {
77
+ return null;
78
+ }
79
+ }
80
+ /**
81
+ * `api.admin` slots loaded in a scope (platform `null` or `tenant:<id>`) —
82
+ * feeds GET /api/v1/plugins/extensions together with `manifest.admin`.
83
+ * Never throws: runtime unavailability becomes an empty list.
84
+ */
85
+ export async function getPluginAdminExtensions(tenantId) {
86
+ try {
87
+ return await (await getLoadedPluginAdminExtensions())(scopeKey(tenantId));
88
+ }
89
+ catch {
90
+ return [];
91
+ }
92
+ }
93
+ /**
94
+ * Blocks registered at runtime by the loaded plugins of a scope — feeds
95
+ * GET /api/v1/blocks together with `manifest.blocks`. Never throws: runtime
96
+ * unavailability becomes an empty list.
97
+ */
98
+ export async function getPluginBlocks(tenantId) {
99
+ try {
100
+ return await (await getLoadedPluginBlocks())(scopeKey(tenantId));
101
+ }
102
+ catch {
103
+ return [];
104
+ }
105
+ }
106
+ /**
107
+ * Patterns registered at runtime by the loaded plugins of a scope — feeds
108
+ * GET /api/v1/patterns together with `manifest.patterns`. Never throws:
109
+ * runtime unavailability becomes an empty list.
110
+ */
111
+ export async function getPluginPatterns(tenantId) {
112
+ try {
113
+ return await (await getLoadedPluginPatterns())(scopeKey(tenantId));
114
+ }
115
+ catch {
116
+ return [];
117
+ }
118
+ }
119
+ /**
120
+ * Assets enqueued by the loaded plugins of a scope — feeds the public
121
+ * renderer's theme:head pipeline (Item 8). Never throws: runtime
122
+ * unavailability becomes an empty list.
123
+ */
124
+ export async function getPluginAssets(tenantId) {
125
+ try {
126
+ return await (await getLoadedPluginAssets())(scopeKey(tenantId));
127
+ }
128
+ catch {
129
+ return [];
130
+ }
131
+ }
132
+ /**
133
+ * Health checks registered by the loaded plugins of a scope — aggregated by
134
+ * GET /api/v1/health (Item 14). Never throws: runtime unavailability becomes
135
+ * an empty list.
136
+ */
137
+ export async function getPluginHealthChecks(tenantId) {
138
+ try {
139
+ return await (await getLoadedPluginHealthChecks())(scopeKey(tenantId));
140
+ }
141
+ catch {
142
+ return [];
143
+ }
144
+ }
59
145
  const pluginRoutesRegistry = new Map();
60
146
  /** Registra rotas de um plugin (chamado durante bootstrap). */
61
- export function registerPluginRoutes(pluginName, routes) {
147
+ export function registerPluginRoutes(pluginName, routes, rpm) {
62
148
  if (routes.length === 0)
63
149
  return;
64
- pluginRoutesRegistry.set(pluginName, { pluginName, routes });
150
+ pluginRoutesRegistry.set(pluginName, { pluginName, routes, ...(rpm ? { rpm } : {}) });
65
151
  }
66
152
  /** Remove rotas de um plugin (quando desativado/desinstalado). */
67
153
  export function unregisterPluginRoutes(pluginName) {
68
154
  return pluginRoutesRegistry.delete(pluginName);
69
155
  }
70
- /** Obtém todas as rotas registradas para montagem no router da API. */
156
+ /** Gets every route registered for mounting on the API router. */
71
157
  export function getRegisteredPluginRoutes() {
72
158
  return [...pluginRoutesRegistry.values()];
73
159
  }
74
- /** Estados por escopo — ordem de iteração = LRU. */
160
+ /** Item 21: registro das consultas preparadas por hash (teto LRU). */
161
+ const PREPARED_CACHE_MAX = 200;
162
+ const preparedPluginStatements = new Map();
163
+ /** Per-scope states — iteration order = LRU. */
75
164
  const states = new Map();
76
165
  const inflight = new Map();
77
166
  const PLATFORM_KEY = 'platform';
@@ -94,9 +183,31 @@ function createApiDeps(tenantId) {
94
183
  db: {
95
184
  query: async (sql, params) => {
96
185
  const conn = getConnection();
186
+ // Item 21: registro de prepared statements por hash — dedupe + LRU +
187
+ // contagem de uso por consulta (identidade da consulta preparada em
188
+ // api.query; o driver reutiliza o plano para consultas repetidas).
189
+ const hash = createHash('sha256').update(sql).digest('hex').slice(0, 24);
190
+ let entry = preparedPluginStatements.get(hash);
191
+ if (!entry) {
192
+ entry = { sql, uses: 0 };
193
+ preparedPluginStatements.set(hash, entry);
194
+ if (preparedPluginStatements.size > PREPARED_CACHE_MAX) {
195
+ const oldest = preparedPluginStatements.keys().next().value;
196
+ if (oldest)
197
+ preparedPluginStatements.delete(oldest);
198
+ }
199
+ }
200
+ entry.uses += 1;
97
201
  return conn.unsafe(sql, params ?? []);
98
202
  },
99
203
  },
204
+ // api.cache backend (Item 2) — lazy so contexts that never use the
205
+ // plugin cache don't need it at boot.
206
+ cache: {
207
+ get: (key) => getCache().get(key),
208
+ set: (key, value, ttlSeconds) => getCache().set(key, value, ttlSeconds),
209
+ del: (key) => getCache().del(key),
210
+ },
100
211
  getTenantId: () => tenantId ?? getCurrentTenantIdSync(),
101
212
  getUserId: () => getCurrentUserIdSync(),
102
213
  getRequestId: () => getCurrentRequestIdSync(),
@@ -109,14 +220,14 @@ function createApiDeps(tenantId) {
109
220
  return user ? { id: user.id, email: user.email, name: user.name, roles: user.roles } : null;
110
221
  },
111
222
  registerRoutes: (routes) => {
112
- // As rotas registradas aqui são coletadas no bootstrap pelo próprio
113
- // PluginAPI (getLoadedPluginRoutes) — neste ponto só registramos o log.
114
- console.debug(`[PluginAPI] ${routes.length} rota(s) registrada(s) — será coletada no bootstrap`);
223
+ // Routes registered here are collected at bootstrap by the PluginAPI
224
+ // itself (getLoadedPluginRoutes) — this point only logs.
225
+ console.debug(`[PluginAPI] ${routes.length} route(s) registered — collected at bootstrap`);
115
226
  },
116
227
  registerContentFields: async (fields) => {
117
- // Guard explícito: com noUncheckedIndexedAccess, fields[0] é T | undefined
118
- // mesmo com o length check acima — o desctructuring com verificação
119
- // deixa o narrowing para o TS e mantém a mesma semântica.
228
+ // Explicit guard: with noUncheckedIndexedAccess, fields[0] is
229
+ // T | undefined even with the length check above — checked
230
+ // destructuring leaves the narrowing to TS with the same semantics.
120
231
  const firstField = fields[0];
121
232
  if (!firstField)
122
233
  return;
@@ -147,10 +258,10 @@ function createApiDeps(tenantId) {
147
258
  fields: fieldInputs,
148
259
  });
149
260
  }
150
- console.debug(`[PluginAPI] ${fields.length} campo(s) de conteúdo registrado(s) no field group "${groupKey}"`);
261
+ console.debug(`[PluginAPI] ${fields.length} content field(s) registered in field group "${groupKey}"`);
151
262
  }
152
263
  catch (error) {
153
- console.error('[PluginAPI] Falha ao registrar campos de conteúdo:', error);
264
+ console.error('[PluginAPI] Failed to register content fields:', error);
154
265
  }
155
266
  },
156
267
  registerFieldTypes: async (fieldTypes) => {
@@ -168,6 +279,114 @@ function createApiDeps(tenantId) {
168
279
  console.error('[PluginAPI] Falha ao registrar tipos de campo:', error);
169
280
  }
170
281
  },
282
+ registerPostTypes: async (postTypes) => {
283
+ // Idempotent persistence for plugin Custom Post Types (item 1 of the
284
+ // plugin-parity-plan): existe com mesmo sourceId → atualiza; existe com
285
+ // outra origem (CORE/ADMIN/outro plugin) → warn + skip (nunca rouba).
286
+ try {
287
+ for (const type of postTypes) {
288
+ const supports = ['title', 'editor'];
289
+ if (type.revisions)
290
+ supports.push('revisions');
291
+ const existing = await postTypeRegistry.getBySlug(type.key);
292
+ if (existing) {
293
+ if (existing.source === 'PLUGIN' && existing.sourceId === type.pluginName) {
294
+ await postTypeRegistry.update(type.key, {
295
+ singularLabel: type.label,
296
+ pluralLabel: type.plural ?? existing.pluralLabel,
297
+ menuIcon: type.icon ?? existing.menuIcon,
298
+ supports,
299
+ });
300
+ }
301
+ else {
302
+ console.warn(`[PluginAPI] Post type "${type.key}" already exists (${existing.source}) — "${type.pluginName}" cannot claim it`);
303
+ }
304
+ continue;
305
+ }
306
+ await postTypeRegistry.create({
307
+ name: type.key,
308
+ slug: type.key,
309
+ pluralLabel: type.plural ?? `${type.label}s`,
310
+ singularLabel: type.label,
311
+ source: 'PLUGIN',
312
+ sourceId: type.pluginName,
313
+ supports,
314
+ hasArchive: true,
315
+ menuIcon: type.icon ?? 'box',
316
+ singleton: false,
317
+ public: true,
318
+ });
319
+ }
320
+ console.debug(`[PluginAPI] ${postTypes.length} post type(s) de plugin persistido(s)`);
321
+ }
322
+ catch (error) {
323
+ console.error('[PluginAPI] Falha ao registrar post types:', error);
324
+ }
325
+ },
326
+ registerTaxonomies: async (taxonomies) => {
327
+ // Idempotent persistence for plugin Custom Taxonomies — ownership
328
+ // stored in meta.plugin (schema has no sourceId for taxonomies).
329
+ try {
330
+ for (const taxonomy of taxonomies) {
331
+ const existing = await taxonomyService.getBySlug(taxonomy.key);
332
+ if (existing) {
333
+ const owner = existing.meta?.['plugin'];
334
+ if (owner !== undefined && owner !== taxonomy.pluginName) {
335
+ console.warn(`[PluginAPI] Taxonomy "${taxonomy.key}" belongs to plugin "${String(owner)}" — "${taxonomy.pluginName}" cannot claim it`);
336
+ continue;
337
+ }
338
+ await taxonomyService.update(taxonomy.key, {
339
+ name: taxonomy.label,
340
+ hierarchical: taxonomy.hierarchical ?? false,
341
+ attachTo: taxonomy.postTypes,
342
+ meta: { ...(existing.meta ?? {}), plugin: taxonomy.pluginName },
343
+ });
344
+ continue;
345
+ }
346
+ await taxonomyService.create({
347
+ name: taxonomy.label,
348
+ slug: taxonomy.key,
349
+ hierarchical: taxonomy.hierarchical ?? false,
350
+ attachTo: taxonomy.postTypes,
351
+ meta: { plugin: taxonomy.pluginName },
352
+ source: 'PLUGIN',
353
+ });
354
+ }
355
+ console.debug(`[PluginAPI] ${taxonomies.length} taxonomia(s) de plugin persistida(s)`);
356
+ }
357
+ catch (error) {
358
+ console.error('[PluginAPI] Falha ao registrar taxonomias:', error);
359
+ }
360
+ },
361
+ jobs: {
362
+ schedule: async (jobName, spec, ctx) => {
363
+ // Recurrence on the `plugins` queue — deterministic idempotent jobId
364
+ return queueProducer.scheduleRepeatable('plugin.job', pluginJobId(ctx.tenantId, ctx.pluginName, jobName), { plugin: ctx.pluginName, job: jobName, scheduled: true }, spec, { tenantId: ctx.tenantId ?? 'default' });
365
+ },
366
+ cancel: async (jobName, ctx) => {
367
+ return queueProducer.cancelRepeatable('plugin.job', pluginJobId(ctx.tenantId, ctx.pluginName, jobName));
368
+ },
369
+ enqueue: async (jobName, payload, ctx) => {
370
+ return queueProducer.enqueue('plugin.job', { plugin: ctx.pluginName, job: jobName, data: payload }, { tenantId: ctx.tenantId ?? 'default' });
371
+ },
372
+ },
373
+ roles: {
374
+ add: (input) => pluginRolesService.add(input),
375
+ remove: (input) => pluginRolesService.remove(input),
376
+ addPermission: (input) => pluginRolesService.addPermission(input),
377
+ },
378
+ mail: {
379
+ send: (input) => mailService.enqueue(input),
380
+ },
381
+ audit: {
382
+ record: (entry) => auditService.record({
383
+ tenantId: entry.tenantId ?? undefined,
384
+ action: entry.action,
385
+ resourceType: entry.resourceType,
386
+ resourceId: entry.resourceId,
387
+ changes: entry.changes,
388
+ }),
389
+ },
171
390
  };
172
391
  }
173
392
  function runtimeOptions(tenantId) {
@@ -189,7 +408,7 @@ function runtimeOptions(tenantId) {
189
408
  * Persiste o resultado da carga em `plugins.error`/`status`:
190
409
  * - falha nova → `status = LOAD_FAILED` + mensagem;
191
410
  * - sucesso depois de falha → `ACTIVATED` + `error = NULL`.
192
- * Só grava quando o estado mudou (nada de UPDATE por request). Nunca lança.
411
+ * Only writes when the state changed (no UPDATE per request). Never throws.
193
412
  */
194
413
  async function persistScopeResult(state) {
195
414
  const sql = getConnection();
@@ -211,7 +430,7 @@ async function persistScopeResult(state) {
211
430
  }
212
431
  }
213
432
  catch {
214
- // banco indisponível não pode derrubar a carga — visibilidade fica no estado em memória
433
+ // an unavailable database cannot break the load — visibility stays in the in-memory state
215
434
  }
216
435
  }
217
436
  async function syncScope(tenantId, force) {
@@ -234,8 +453,8 @@ async function syncScope(tenantId, force) {
234
453
  // Coleta rotas registradas pelos plugins neste escopo
235
454
  const scopeKey = key; // 'platform' ou 'tenant:<id>'
236
455
  const pluginRoutes = await (await getLoadedPluginRoutes())(scopeKey);
237
- for (const { pluginName, routes } of pluginRoutes) {
238
- registerPluginRoutes(pluginName, routes);
456
+ for (const { pluginName, routes, rpm } of pluginRoutes) {
457
+ registerPluginRoutes(pluginName, routes, rpm);
239
458
  }
240
459
  // Remove rotas de plugins que foram descarregados (unloaded)
241
460
  for (const pluginName of result.unloaded) {
@@ -256,7 +475,7 @@ async function syncScope(tenantId, force) {
256
475
  return result;
257
476
  }
258
477
  catch (error) {
259
- console.warn(`[plugins] sync indisponível (${key}): ${error instanceof Error ? error.message : String(error)}`);
478
+ console.warn(`[plugins] sync unavailable (${key}): ${error instanceof Error ? error.message : String(error)}`);
260
479
  const fallback = { enabled: [], loaded: [], unloaded: [], failed: [] };
261
480
  if (!states.has(key)) {
262
481
  states.set(key, { key, tenantId, loadedAt: 0, result: fallback, errors: new Map() });
@@ -286,22 +505,22 @@ async function evictOldTenants(maxTenants) {
286
505
  }
287
506
  /**
288
507
  * Sincroniza o registry **platform** com os plugins habilitados no banco.
289
- * Force implícito: é a chamada explícita de boot/ativação — reflete o banco
290
- * na hora. Idempotente e nunca lança.
508
+ * Implicit force: this is the explicit boot/activation call — reflects the
509
+ * database immediately. Idempotent and never throws.
291
510
  */
292
511
  export async function syncEnabledPlugins(options = {}) {
293
512
  try {
294
513
  return await syncScope(null, options.force ?? true);
295
514
  }
296
515
  catch (error) {
297
- console.warn(`[plugins] sync indisponível: ${error instanceof Error ? error.message : String(error)}`);
516
+ console.warn(`[plugins] sync unavailable: ${error instanceof Error ? error.message : String(error)}`);
298
517
  return { enabled: [], loaded: [], unloaded: [], failed: [] };
299
518
  }
300
519
  }
301
520
  /**
302
- * Garante que os plugins do tenant estão carregados no registry dele.
521
+ * Ensures the tenant's plugins are loaded into its own registry.
303
522
  * Chamado sob demanda (middleware/API, web, worker) — com cache de TTL para
304
- * não bater no banco a cada requisição. Nunca lança.
523
+ * avoids hitting the database on every request. Never throws.
305
524
  */
306
525
  export async function ensureTenantPluginsLoaded(tenantId, options = {}) {
307
526
  if (!tenantId)
@@ -310,13 +529,13 @@ export async function ensureTenantPluginsLoaded(tenantId, options = {}) {
310
529
  return await syncScope(tenantId, options.force ?? false);
311
530
  }
312
531
  catch (error) {
313
- console.warn(`[plugins] sync do tenant indisponível: ${error instanceof Error ? error.message : String(error)}`);
532
+ console.warn(`[plugins] tenant sync unavailable: ${error instanceof Error ? error.message : String(error)}`);
314
533
  return { enabled: [], loaded: [], unloaded: [], failed: [] };
315
534
  }
316
535
  }
317
536
  /**
318
- * Invalida o cache/registry de um tenant (após ativar/desativar vínculo,
319
- * desinstalar ou mudar permissões). A próxima requisição do tenant recarrega.
537
+ * Invalidates a tenant's cache/registry (after enabling/disabling a link,
538
+ * uninstalling or changing permissions). The tenant's next request reloads.
320
539
  */
321
540
  export async function invalidateTenantPlugins(tenantId) {
322
541
  if (!tenantId)
@@ -327,12 +546,12 @@ export async function invalidateTenantPlugins(tenantId) {
327
546
  await (await unloadTenant())(tenantId);
328
547
  (await (await getHookRegistryStore())).invalidateTenant(tenantId);
329
548
  }
330
- /** Invalida o escopo platform (após mudanças globais). */
549
+ /** Invalidates the platform scope (after global changes). */
331
550
  export function invalidatePlatformPlugins() {
332
551
  states.delete(PLATFORM_KEY);
333
552
  inflight.delete(PLATFORM_KEY);
334
553
  }
335
- /** Estado de carga por escopo — superfície de observabilidade (WP2). */
554
+ /** Per-scope load state — observability surface (WP2). */
336
555
  export function getPluginsRuntimeState() {
337
556
  return {
338
557
  generatedAt: new Date().toISOString(),
@@ -1 +1 @@
1
- {"version":3,"file":"load.js","sourceRoot":"","sources":["../../src/plugin/load.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"load.js","sourceRoot":"","sources":["../../src/plugin/load.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  /** Job types produzidos pelo núcleo (consumidos pelo worker). */
2
- export type JobType = 'content.publish' | 'content.unpublish' | 'media.process' | 'build.create' | 'deployment.create' | 'webhook.send' | 'cache.invalidate' | 'cleanup.expired_sessions' | 'cleanup.expired_audit_logs';
2
+ export type JobType = 'content.publish' | 'content.unpublish' | 'media.process' | 'build.create' | 'deployment.create' | 'webhook.send' | 'cache.invalidate' | 'cleanup.expired_sessions' | 'cleanup.expired_audit_logs' | 'plugin.job' | 'mail.deliver';
3
3
  export interface EnqueueOptions {
4
4
  tenantId?: string;
5
5
  userId?: string;
@@ -30,6 +30,17 @@ export declare class QueueProducer {
30
30
  * está desativada/indisponível — NUNCA lança (fila é opcional).
31
31
  */
32
32
  enqueue(jobType: JobType | string, payload: Record<string, unknown>, options?: EnqueueOptions): Promise<boolean>;
33
+ /**
34
+ * Agenda/recalcula um job recorrente (fila `plugins` / plugin.job).
35
+ * Idempotente: remove repeatables pré-existentes do mesmo `jobId` antes de
36
+ * re-adicionar (spec pode ter mudado de `every` para `cron`). Nunca lança.
37
+ */
38
+ scheduleRepeatable(jobType: JobType | string, jobId: string, payload: Record<string, unknown>, spec: {
39
+ every?: number;
40
+ cron?: string;
41
+ }, options?: EnqueueOptions): Promise<boolean>;
42
+ /** Cancela agendas recorrentes do `jobId`. Nunca lança. */
43
+ cancelRepeatable(jobType: JobType | string, jobId: string): Promise<boolean>;
33
44
  /** Log espaçado (1x/30s): degradação visível sem poluir o log. */
34
45
  private warnDegraded;
35
46
  close(): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"producer.d.ts","sourceRoot":"","sources":["../../src/queue/producer.ts"],"names":[],"mappings":"AAUA,iEAAiE;AACjE,MAAM,MAAM,OAAO,GACf,iBAAiB,GACjB,mBAAmB,GACnB,eAAe,GACf,cAAc,GACd,mBAAmB,GACnB,cAAc,GACd,kBAAkB,GAClB,0BAA0B,GAC1B,4BAA4B,CAAC;AAejC,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,yEAAyE;AACzE,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AASD,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAA4B;IAC1C,OAAO,CAAC,UAAU,CAAsB;IACxC,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,UAAU,CAAK;IAEvB;;;;OAIG;IACH,OAAO,CAAC,gBAAgB;IA+BxB,OAAO,CAAC,QAAQ;IAShB;;;OAGG;IACG,OAAO,CACX,OAAO,EAAE,OAAO,GAAG,MAAM,EACzB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChC,OAAO,GAAE,cAAmB,GAC3B,OAAO,CAAC,OAAO,CAAC;IAuCnB,kEAAkE;IAClE,OAAO,CAAC,YAAY;IAWd,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAU7B;AAED,eAAO,MAAM,aAAa,eAAsB,CAAC;AAEjD,gFAAgF;AAChF,wBAAgB,UAAU,CACxB,OAAO,EAAE,OAAO,GAAG,MAAM,EACzB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChC,OAAO,GAAE,cAAmB,GAC3B,OAAO,CAAC,OAAO,CAAC,CAElB"}
1
+ {"version":3,"file":"producer.d.ts","sourceRoot":"","sources":["../../src/queue/producer.ts"],"names":[],"mappings":"AAUA,iEAAiE;AACjE,MAAM,MAAM,OAAO,GACf,iBAAiB,GACjB,mBAAmB,GACnB,eAAe,GACf,cAAc,GACd,mBAAmB,GACnB,cAAc,GACd,kBAAkB,GAClB,0BAA0B,GAC1B,4BAA4B,GAC5B,YAAY,GACZ,cAAc,CAAC;AAiBnB,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,yEAAyE;AACzE,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AASD,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAA4B;IAC1C,OAAO,CAAC,UAAU,CAAsB;IACxC,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,UAAU,CAAK;IAEvB;;;;OAIG;IACH,OAAO,CAAC,gBAAgB;IA+BxB,OAAO,CAAC,QAAQ;IAShB;;;OAGG;IACG,OAAO,CACX,OAAO,EAAE,OAAO,GAAG,MAAM,EACzB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChC,OAAO,GAAE,cAAmB,GAC3B,OAAO,CAAC,OAAO,CAAC;IAuCnB;;;;OAIG;IACG,kBAAkB,CACtB,OAAO,EAAE,OAAO,GAAG,MAAM,EACzB,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChC,IAAI,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,EACvC,OAAO,GAAE,cAAmB,GAC3B,OAAO,CAAC,OAAO,CAAC;IAyDnB,2DAA2D;IACrD,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAgClF,kEAAkE;IAClE,OAAO,CAAC,YAAY;IAWd,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAU7B;AAED,eAAO,MAAM,aAAa,eAAsB,CAAC;AAEjD,gFAAgF;AAChF,wBAAgB,UAAU,CACxB,OAAO,EAAE,OAAO,GAAG,MAAM,EACzB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChC,OAAO,GAAE,cAAmB,GAC3B,OAAO,CAAC,OAAO,CAAC,CAElB"}