@lilaquadrat/interfaces 1.46.0 → 1.48.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/CHANGELOG.md CHANGED
@@ -2,6 +2,20 @@
2
2
 
3
3
  All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
4
4
 
5
+ ## [1.48.0](https://github.com/lilaquadrat/interfaces/compare/v1.47.0...v1.48.0) (2026-08-28)
6
+
7
+
8
+ ### Features
9
+
10
+ * **me:** added lastSeen & connected status ([9256d37](https://github.com/lilaquadrat/interfaces/commit/9256d3765699044a43cf36d7f271966f626d6cea))
11
+
12
+ ## [1.47.0](https://github.com/lilaquadrat/interfaces/compare/v1.46.0...v1.47.0) (2026-08-28)
13
+
14
+
15
+ ### Features
16
+
17
+ * **sla:** add configuration and conversation contracts ([2973218](https://github.com/lilaquadrat/interfaces/commit/2973218714e3fe36c404f6ac09f1679d608cafd4))
18
+
5
19
  ## [1.46.0](https://github.com/lilaquadrat/interfaces/compare/v1.45.0...v1.46.0) (2026-07-27)
6
20
 
7
21
 
@@ -1,4 +1,6 @@
1
1
  import { ObjectId } from 'mongodb';
2
+ import type { ConversationSla } from './ConversationSla';
3
+ export type SupportStatus = 'awaiting_agent' | 'awaiting_customer' | 'resolved';
2
4
  export interface Conversation {
3
5
  _id?: ObjectId;
4
6
  name?: string;
@@ -11,5 +13,10 @@ export interface Conversation {
11
13
  lastActivity?: string;
12
14
  /** how the conversation was started. 'support' = backend attaches the support team. */
13
15
  operationMode?: 'default' | 'support';
16
+ supportStatus?: SupportStatus;
17
+ supportStatusUpdatedAt?: string;
18
+ supportStatusVersion?: number;
19
+ /** Current support SLA projection, joined at read time rather than stored on the conversation. */
20
+ sla?: ConversationSla | null;
14
21
  new?: boolean;
15
22
  }
@@ -0,0 +1,9 @@
1
+ import type { SupportStatus } from './Conversation';
2
+ export interface ConversationSla {
3
+ conversation: string;
4
+ status: SupportStatus;
5
+ statusVersion: number;
6
+ startedAt: string;
7
+ endAt: string;
8
+ stoppedAt?: string;
9
+ }
package/lib/cjs/Me.d.ts CHANGED
@@ -8,4 +8,15 @@ export interface Me {
8
8
  settings?: Settings['settings'];
9
9
  termsAccepted?: boolean;
10
10
  emailConfirmed?: boolean;
11
+ /**
12
+ * presence: last moment a websocket of this user was proven alive.
13
+ * written by the chat service only, never through the /me routes.
14
+ */
15
+ lastSeen?: Date | string;
16
+ /**
17
+ * presence: raw "holds at least one live socket" flag. The `online` state exposed to
18
+ * clients is derived from this AND lastSeen freshness, so a crashed process that never
19
+ * cleared the flag still reads as offline.
20
+ */
21
+ connected?: boolean;
11
22
  }
@@ -0,0 +1,8 @@
1
+ import { SupportDay } from './SupportDay';
2
+ export interface Sla {
3
+ company: string;
4
+ providesSupport: boolean;
5
+ responseTimeHours: number;
6
+ timeZone: string;
7
+ supportDays: SupportDay[];
8
+ }
@@ -0,0 +1,5 @@
1
+ export interface SupportDay {
2
+ day: 'monday' | 'tuesday' | 'wednesday' | 'thursday' | 'friday' | 'saturday' | 'sunday';
3
+ startTime: string;
4
+ endTime: string;
5
+ }
@@ -48,6 +48,7 @@ export * from './ContentOptions';
48
48
  export * from './ContentWithPositions';
49
49
  export * from './Contract';
50
50
  export * from './Conversation';
51
+ export * from './ConversationSla';
51
52
  export * from './CookiesModule';
52
53
  export * from './CreateResult';
53
54
  export * from './CustomerAccounts';
@@ -211,6 +212,7 @@ export * from './ShareClientOptions';
211
212
  export * from './ShopifyProjectSettings';
212
213
  export * from './ShoppingCartModule';
213
214
  export * from './SkipLimitSort';
215
+ export * from './Sla';
214
216
  export * from './Storage';
215
217
  export * from './StorageCopyAction';
216
218
  export * from './StorageFilePaths';
@@ -219,6 +221,7 @@ export * from './Stored';
219
221
  export * from './StoryModule';
220
222
  export * from './Structure';
221
223
  export * from './StudioIframeMessage';
224
+ export * from './SupportDay';
222
225
  export * from './SystemDomain';
223
226
  export * from './TextModule';
224
227
  export * from './Textblock';
@@ -1,4 +1,6 @@
1
1
  import { ObjectId } from 'mongodb';
2
+ import type { ConversationSla } from './ConversationSla';
3
+ export type SupportStatus = 'awaiting_agent' | 'awaiting_customer' | 'resolved';
2
4
  export interface Conversation {
3
5
  _id?: ObjectId;
4
6
  name?: string;
@@ -11,5 +13,10 @@ export interface Conversation {
11
13
  lastActivity?: string;
12
14
  /** how the conversation was started. 'support' = backend attaches the support team. */
13
15
  operationMode?: 'default' | 'support';
16
+ supportStatus?: SupportStatus;
17
+ supportStatusUpdatedAt?: string;
18
+ supportStatusVersion?: number;
19
+ /** Current support SLA projection, joined at read time rather than stored on the conversation. */
20
+ sla?: ConversationSla | null;
14
21
  new?: boolean;
15
22
  }
@@ -0,0 +1,9 @@
1
+ import type { SupportStatus } from './Conversation';
2
+ export interface ConversationSla {
3
+ conversation: string;
4
+ status: SupportStatus;
5
+ statusVersion: number;
6
+ startedAt: string;
7
+ endAt: string;
8
+ stoppedAt?: string;
9
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=ConversationSla.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConversationSla.js","sourceRoot":"","sources":["../../src/ConversationSla.ts"],"names":[],"mappings":""}
package/lib/esm/Me.d.ts CHANGED
@@ -8,4 +8,15 @@ export interface Me {
8
8
  settings?: Settings['settings'];
9
9
  termsAccepted?: boolean;
10
10
  emailConfirmed?: boolean;
11
+ /**
12
+ * presence: last moment a websocket of this user was proven alive.
13
+ * written by the chat service only, never through the /me routes.
14
+ */
15
+ lastSeen?: Date | string;
16
+ /**
17
+ * presence: raw "holds at least one live socket" flag. The `online` state exposed to
18
+ * clients is derived from this AND lastSeen freshness, so a crashed process that never
19
+ * cleared the flag still reads as offline.
20
+ */
21
+ connected?: boolean;
11
22
  }
@@ -0,0 +1,8 @@
1
+ import { SupportDay } from './SupportDay';
2
+ export interface Sla {
3
+ company: string;
4
+ providesSupport: boolean;
5
+ responseTimeHours: number;
6
+ timeZone: string;
7
+ supportDays: SupportDay[];
8
+ }
package/lib/esm/Sla.js ADDED
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=Sla.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Sla.js","sourceRoot":"","sources":["../../src/Sla.ts"],"names":[],"mappings":""}
@@ -0,0 +1,5 @@
1
+ export interface SupportDay {
2
+ day: 'monday' | 'tuesday' | 'wednesday' | 'thursday' | 'friday' | 'saturday' | 'sunday';
3
+ startTime: string;
4
+ endTime: string;
5
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=SupportDay.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SupportDay.js","sourceRoot":"","sources":["../../src/SupportDay.ts"],"names":[],"mappings":""}
@@ -48,6 +48,7 @@ export * from './ContentOptions';
48
48
  export * from './ContentWithPositions';
49
49
  export * from './Contract';
50
50
  export * from './Conversation';
51
+ export * from './ConversationSla';
51
52
  export * from './CookiesModule';
52
53
  export * from './CreateResult';
53
54
  export * from './CustomerAccounts';
@@ -211,6 +212,7 @@ export * from './ShareClientOptions';
211
212
  export * from './ShopifyProjectSettings';
212
213
  export * from './ShoppingCartModule';
213
214
  export * from './SkipLimitSort';
215
+ export * from './Sla';
214
216
  export * from './Storage';
215
217
  export * from './StorageCopyAction';
216
218
  export * from './StorageFilePaths';
@@ -219,6 +221,7 @@ export * from './Stored';
219
221
  export * from './StoryModule';
220
222
  export * from './Structure';
221
223
  export * from './StudioIframeMessage';
224
+ export * from './SupportDay';
222
225
  export * from './SystemDomain';
223
226
  export * from './TextModule';
224
227
  export * from './Textblock';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lilaquadrat/interfaces",
3
- "version": "1.46.0",
3
+ "version": "1.48.0",
4
4
  "description": "interfaces in context of lilaquadrat STUDIO",
5
5
  "author": {
6
6
  "email": "m.schuebel@lila2.de",
@@ -1,4 +1,7 @@
1
1
  import { ObjectId } from 'mongodb';
2
+ import type { ConversationSla } from './ConversationSla';
3
+
4
+ export type SupportStatus = 'awaiting_agent' | 'awaiting_customer' | 'resolved';
2
5
 
3
6
  export interface Conversation {
4
7
  _id?: ObjectId;
@@ -12,5 +15,10 @@ export interface Conversation {
12
15
  lastActivity?: string;
13
16
  /** how the conversation was started. 'support' = backend attaches the support team. */
14
17
  operationMode?: 'default' | 'support';
18
+ supportStatus?: SupportStatus;
19
+ supportStatusUpdatedAt?: string;
20
+ supportStatusVersion?: number;
21
+ /** Current support SLA projection, joined at read time rather than stored on the conversation. */
22
+ sla?: ConversationSla | null;
15
23
  new?: boolean;
16
24
  }
@@ -0,0 +1,10 @@
1
+ import type { SupportStatus } from './Conversation';
2
+
3
+ export interface ConversationSla {
4
+ conversation: string;
5
+ status: SupportStatus;
6
+ statusVersion: number;
7
+ startedAt: string;
8
+ endAt: string;
9
+ stoppedAt?: string;
10
+ }
package/src/Me.ts CHANGED
@@ -11,4 +11,17 @@ export interface Me {
11
11
  termsAccepted?: boolean
12
12
  emailConfirmed?: boolean
13
13
 
14
+ /**
15
+ * presence: last moment a websocket of this user was proven alive.
16
+ * written by the chat service only, never through the /me routes.
17
+ */
18
+ lastSeen?: Date | string
19
+
20
+ /**
21
+ * presence: raw "holds at least one live socket" flag. The `online` state exposed to
22
+ * clients is derived from this AND lastSeen freshness, so a crashed process that never
23
+ * cleared the flag still reads as offline.
24
+ */
25
+ connected?: boolean
26
+
14
27
  }
package/src/Sla.ts ADDED
@@ -0,0 +1,9 @@
1
+ import { SupportDay } from './SupportDay';
2
+
3
+ export interface Sla {
4
+ company: string;
5
+ providesSupport: boolean;
6
+ responseTimeHours: number;
7
+ timeZone: string;
8
+ supportDays: SupportDay[];
9
+ }
@@ -0,0 +1,5 @@
1
+ export interface SupportDay {
2
+ day: 'monday' | 'tuesday' | 'wednesday' | 'thursday' | 'friday' | 'saturday' | 'sunday';
3
+ startTime: string;
4
+ endTime: string;
5
+ }