@tolinax/ayoune-interfaces 2026.61.0 → 2026.62.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.
@@ -7933,56 +7933,21 @@ const modelsAndRights = [
7933
7933
  updateBy: "_id",
7934
7934
  availableInSDK: false,
7935
7935
  },
7936
- // ─── Desktop Client — client-side feature gating ─────────────────────
7937
- // Pseudo-entity holding the full catalogue of feature rights for the
7938
- // aYOUne Desktop Client. No DB model`readOnly: true` so
7939
- // registerModuleRights only registers the base right + childRights (no
7940
- // .new/.edit/.delete variants). Admins toggle individual features per
7941
- // role; the desktop-client renderer reads user.rights from the startup
7942
- // response and filters its nav accordingly.
7936
+ // ─── Desktop Client module states + rights per view ──────────────
7937
+ // desktopclient is a module in its own right (module: "desktopclient").
7938
+ // Each nav entry in the desktop client IS a state registered via
7939
+ // registerModuleStates at config-api boot, same pattern as every other
7940
+ // module. The right string mirrors the state title, e.g. `desktopclient.sync`
7941
+ // ayounestates has the main state at that title, ayounepackages.modules
7942
+ // carries it as a grantable right, and ayouneroles auto-sync via
7943
+ // registerModuleRights('desktopclient', ..., additionalRights).
7943
7944
  //
7944
- // Cross-linked API rights per feature are documented alongside each
7945
- // child. The `.view` rights grant access to the renderer surface;
7946
- // actions within each feature still check the underlying API's rights
7947
- // (e.g. `desktopclient.machines` gates the /machines page, but the RDP
7948
- // launch still requires `config.computingentities`).
7949
- {
7950
- plural: "DesktopClient",
7951
- singular: "DesktopClient",
7952
- module: "desktopclient",
7953
- right: "desktopclient",
7954
- readOnly: true,
7955
- importable: false,
7956
- allowDuplicate: false,
7957
- updateBy: "_id",
7958
- availableInSDK: false,
7959
- labelKey: "desktopclient.label",
7960
- descriptionKey: "desktopclient.description",
7961
- childRights: [
7962
- // Shell
7963
- "desktopclient.view", // base — required to launch the app at all
7964
- "desktopclient.home", // dashboard tiles
7965
- "desktopclient.settings", // settings page
7966
- "desktopclient.machine-mode", // headless agent mode (unattended VM)
7967
- // Feature modules (each gates a top-level nav entry)
7968
- "desktopclient.sync", // paired: sync-api.* rights
7969
- "desktopclient.machines", // paired: config.computingentities
7970
- "desktopclient.nfc", // paired: config.nfcactions, config.nfcprofiles
7971
- "desktopclient.barcode", // renderer-only, no API right
7972
- "desktopclient.iot", // paired: config.iotdevices
7973
- "desktopclient.communication", // paired: chat.*, communication.*
7974
- "desktopclient.printers", // paired: config.printers
7975
- "desktopclient.process-agent", // paired: config.computingentities
7976
- "desktopclient.devops", // paired: devops.*
7977
- "desktopclient.terminal", // CLI runner — paired: whatever `ay` hits
7978
- // Cross-app integrations
7979
- "desktopclient.copilot", // AI copilot sidebar panel
7980
- "desktopclient.notifications", // native toast / notification-bell
7981
- "desktopclient.quick-actions", // tray quick-action shortcuts
7982
- "desktopclient.yubikey", // YubiKey approval dialog
7983
- "desktopclient.clipboard-sync", // cross-device clipboard
7984
- ],
7985
- },
7945
+ // No pseudo-entities desktopclient has no DB-backed entities. The
7946
+ // state catalogue lives in
7947
+ // domains/config/api/src/lib/registerDesktopClientStates.ts
7948
+ // and the right catalogue is the `desktopClientRights` export there
7949
+ // (single source of truth, passed to registerModuleRights as
7950
+ // additionalRights).
7986
7951
  ];
7987
7952
  exports.modelsAndRights = modelsAndRights;
7988
7953
  exports.default = modelsAndRights;
@@ -38,6 +38,10 @@ interface INotificationAttachmentBase {
38
38
  * cover, customer branding. Absolute URL (served from media CDN or
39
39
  * customer-meta). */
40
40
  image?: string;
41
+ /** Per-attachment action buttons. Worker fills from
42
+ * `defaultActionsByAttachmentType` when producer didn't set any — see
43
+ * INotificationAction for the discriminated-union shape. */
44
+ actions?: import("./INotificationAction").INotificationAction[];
41
45
  }
42
46
  export interface ICalendarEntryPreview extends INotificationAttachmentBase {
43
47
  summary?: string;
@@ -1,4 +1,21 @@
1
1
  import { IDefaultFields } from "./IDefaultFields";
2
+ /**
3
+ * Per-policy control for the core's `autoEnrichAttachments()` helper.
4
+ * Defaults to `{ consumer: true, self: true }` — opt-out rather than opt-in
5
+ * so every policy that's ever rendered gets rich notifications by default.
6
+ * Set `consumer: false` for policies where the consumer card would leak
7
+ * privacy-sensitive data to recipients who shouldn't see it. Set `self: false`
8
+ * for event types where the entity itself is context, not the main card
9
+ * (e.g. MailLogs, FormSubmissions, Leads — already excluded by SELF_ATTACH_TYPES
10
+ * in core, but an extra per-policy kill-switch for edge cases).
11
+ */
12
+ export interface INotificationAutoEnrichConfig {
13
+ /** Auto-attach consumer card when entity/data has _consumerID. Default true. */
14
+ consumer?: boolean;
15
+ /** Auto-attach entity itself as main card for SELF_ATTACH_TYPES (Task,
16
+ * Invoice, Offer, Contract, SupplierOrder, CalendarEntry). Default true. */
17
+ self?: boolean;
18
+ }
2
19
  export interface INotificationPolicy extends IDefaultFields {
3
20
  _customerID: ObjectId;
4
21
  name: string;
@@ -14,4 +31,7 @@ export interface INotificationPolicy extends IDefaultFields {
14
31
  };
15
32
  active?: boolean;
16
33
  order?: number;
34
+ /** Opt-out toggles for auto-attach-on-enqueue. See
35
+ * INotificationAutoEnrichConfig. Omit to accept defaults (both true). */
36
+ autoEnrich?: INotificationAutoEnrichConfig;
17
37
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tolinax/ayoune-interfaces",
3
- "version": "2026.61.0",
3
+ "version": "2026.62.0",
4
4
  "description": "Houses TypeScript interfaces for aYOUne",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",