@celilo/cli 1.9.1 → 1.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@celilo/cli",
3
- "version": "1.9.1",
3
+ "version": "1.10.0",
4
4
  "description": "Celilo — home lab orchestration CLI",
5
5
  "type": "module",
6
6
  "bin": {
@@ -311,6 +311,30 @@ export const V1_HOOKS: ContractHooks = {
311
311
  inputs: {},
312
312
  outputs: {},
313
313
  },
314
+ /**
315
+ * Reclaim disk a module's own store has accumulated and has no way to
316
+ * release on its own.
317
+ *
318
+ * Distinct from `on_backup`'s retention, which prunes copies celilo itself
319
+ * made and records. This is for state the module's SERVICE owns and celilo
320
+ * never sees — a registry's package store, a cache, an artifact directory —
321
+ * where the only thing that knows what is superseded is the service.
322
+ *
323
+ * Deliberately not a converge hook: convergence re-asserts a desired state
324
+ * and is safe to run constantly, while this DELETES and its mistakes are not
325
+ * recoverable. So it declares its retention policy in config, supports a dry
326
+ * run, and is expected to be conservative — the celilo-registry sweep never
327
+ * removes the last revision of a release, which is what makes running it
328
+ * unattended defensible.
329
+ *
330
+ * Driven on demand (`celilo module run-hook <module> sweep_revisions`) and,
331
+ * where the store grows without an operator, by a `timer.tick.*`
332
+ * subscription.
333
+ */
334
+ sweep_revisions: {
335
+ inputs: {},
336
+ outputs: {},
337
+ },
314
338
  /**
315
339
  * Build-bus upstream publish hook. The executor passes the
316
340
  * PublishEvent fields as env vars (CELILO_EVENT_PAYLOAD,
@@ -366,6 +366,7 @@ const LIFECYCLE_HOOK_SCHEMAS = {
366
366
  reconcile_clients: LifecycleHookSchema.optional(),
367
367
  list_peers: LifecycleHookSchema.optional(),
368
368
  reconcile_peers: LifecycleHookSchema.optional(),
369
+ sweep_revisions: LifecycleHookSchema.optional(),
369
370
  } satisfies Record<HookName, z.ZodTypeAny>;
370
371
 
371
372
  /**