@memberjunction/ng-conversations 2.106.0 → 2.108.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/dist/lib/components/collection/artifact-collection-picker-modal.component.d.ts +67 -0
- package/dist/lib/components/collection/artifact-collection-picker-modal.component.d.ts.map +1 -0
- package/dist/lib/components/collection/artifact-collection-picker-modal.component.js +725 -0
- package/dist/lib/components/collection/artifact-collection-picker-modal.component.js.map +1 -0
- package/dist/lib/components/collection/artifact-create-modal.component.d.ts +39 -0
- package/dist/lib/components/collection/artifact-create-modal.component.d.ts.map +1 -0
- package/dist/lib/components/collection/artifact-create-modal.component.js +351 -0
- package/dist/lib/components/collection/artifact-create-modal.component.js.map +1 -0
- package/dist/lib/components/collection/collection-form-modal.component.d.ts +3 -1
- package/dist/lib/components/collection/collection-form-modal.component.d.ts.map +1 -1
- package/dist/lib/components/collection/collection-form-modal.component.js +60 -10
- package/dist/lib/components/collection/collection-form-modal.component.js.map +1 -1
- package/dist/lib/components/collection/collection-share-modal.component.d.ts +43 -0
- package/dist/lib/components/collection/collection-share-modal.component.d.ts.map +1 -0
- package/dist/lib/components/collection/collection-share-modal.component.js +728 -0
- package/dist/lib/components/collection/collection-share-modal.component.js.map +1 -0
- package/dist/lib/components/collection/collection-tree.component.d.ts +8 -1
- package/dist/lib/components/collection/collection-tree.component.d.ts.map +1 -1
- package/dist/lib/components/collection/collection-tree.component.js +217 -115
- package/dist/lib/components/collection/collection-tree.component.js.map +1 -1
- package/dist/lib/components/collection/collection-view.component.d.ts +2 -1
- package/dist/lib/components/collection/collection-view.component.d.ts.map +1 -1
- package/dist/lib/components/collection/collection-view.component.js +52 -34
- package/dist/lib/components/collection/collection-view.component.js.map +1 -1
- package/dist/lib/components/collection/collections-full-view.component.d.ts +45 -9
- package/dist/lib/components/collection/collections-full-view.component.d.ts.map +1 -1
- package/dist/lib/components/collection/collections-full-view.component.js +586 -220
- package/dist/lib/components/collection/collections-full-view.component.js.map +1 -1
- package/dist/lib/components/conversation/conversation-chat-area.component.d.ts +53 -20
- package/dist/lib/components/conversation/conversation-chat-area.component.d.ts.map +1 -1
- package/dist/lib/components/conversation/conversation-chat-area.component.js +365 -250
- package/dist/lib/components/conversation/conversation-chat-area.component.js.map +1 -1
- package/dist/lib/components/message/message-input.component.d.ts +71 -1
- package/dist/lib/components/message/message-input.component.d.ts.map +1 -1
- package/dist/lib/components/message/message-input.component.js +303 -104
- package/dist/lib/components/message/message-input.component.js.map +1 -1
- package/dist/lib/components/message/message-item.component.d.ts +39 -5
- package/dist/lib/components/message/message-item.component.d.ts.map +1 -1
- package/dist/lib/components/message/message-item.component.js +259 -137
- package/dist/lib/components/message/message-item.component.js.map +1 -1
- package/dist/lib/components/message/message-list.component.d.ts +8 -6
- package/dist/lib/components/message/message-list.component.d.ts.map +1 -1
- package/dist/lib/components/message/message-list.component.js +52 -9
- package/dist/lib/components/message/message-list.component.js.map +1 -1
- package/dist/lib/components/message/suggested-responses.component.d.ts +55 -0
- package/dist/lib/components/message/suggested-responses.component.d.ts.map +1 -0
- package/dist/lib/components/message/suggested-responses.component.js +207 -0
- package/dist/lib/components/message/suggested-responses.component.js.map +1 -0
- package/dist/lib/components/search/search-panel.component.d.ts.map +1 -1
- package/dist/lib/components/search/search-panel.component.js +245 -113
- package/dist/lib/components/search/search-panel.component.js.map +1 -1
- package/dist/lib/components/shared/user-picker.component.d.ts +29 -0
- package/dist/lib/components/shared/user-picker.component.d.ts.map +1 -0
- package/dist/lib/components/shared/user-picker.component.js +229 -0
- package/dist/lib/components/shared/user-picker.component.js.map +1 -0
- package/dist/lib/components/tasks/tasks-dropdown.component.d.ts +7 -1
- package/dist/lib/components/tasks/tasks-dropdown.component.d.ts.map +1 -1
- package/dist/lib/components/tasks/tasks-dropdown.component.js +36 -6
- package/dist/lib/components/tasks/tasks-dropdown.component.js.map +1 -1
- package/dist/lib/components/workspace/conversation-workspace.component.d.ts +19 -2
- package/dist/lib/components/workspace/conversation-workspace.component.d.ts.map +1 -1
- package/dist/lib/components/workspace/conversation-workspace.component.js +167 -58
- package/dist/lib/components/workspace/conversation-workspace.component.js.map +1 -1
- package/dist/lib/conversations.module.d.ts +52 -47
- package/dist/lib/conversations.module.d.ts.map +1 -1
- package/dist/lib/conversations.module.js +27 -4
- package/dist/lib/conversations.module.js.map +1 -1
- package/dist/lib/models/conversation-complete-query.model.d.ts +75 -0
- package/dist/lib/models/conversation-complete-query.model.d.ts.map +1 -0
- package/dist/lib/models/conversation-complete-query.model.js +19 -0
- package/dist/lib/models/conversation-complete-query.model.js.map +1 -0
- package/dist/lib/models/conversation-state.model.d.ts +27 -0
- package/dist/lib/models/conversation-state.model.d.ts.map +1 -1
- package/dist/lib/models/lazy-artifact-info.d.ts +68 -0
- package/dist/lib/models/lazy-artifact-info.d.ts.map +1 -0
- package/dist/lib/models/lazy-artifact-info.js +150 -0
- package/dist/lib/models/lazy-artifact-info.js.map +1 -0
- package/dist/lib/services/agent-state.service.d.ts.map +1 -1
- package/dist/lib/services/agent-state.service.js +5 -0
- package/dist/lib/services/agent-state.service.js.map +1 -1
- package/dist/lib/services/artifact-state.service.d.ts.map +1 -1
- package/dist/lib/services/artifact-state.service.js +14 -9
- package/dist/lib/services/artifact-state.service.js.map +1 -1
- package/dist/lib/services/collection-permission.service.d.ts +96 -0
- package/dist/lib/services/collection-permission.service.d.ts.map +1 -0
- package/dist/lib/services/collection-permission.service.js +303 -0
- package/dist/lib/services/collection-permission.service.js.map +1 -0
- package/dist/lib/services/collection-state.service.d.ts +34 -0
- package/dist/lib/services/collection-state.service.d.ts.map +1 -0
- package/dist/lib/services/collection-state.service.js +50 -0
- package/dist/lib/services/collection-state.service.js.map +1 -0
- package/dist/lib/services/conversation-agent.service.d.ts +20 -4
- package/dist/lib/services/conversation-agent.service.d.ts.map +1 -1
- package/dist/lib/services/conversation-agent.service.js +179 -17
- package/dist/lib/services/conversation-agent.service.js.map +1 -1
- package/dist/lib/services/data-cache.service.d.ts.map +1 -1
- package/dist/lib/services/data-cache.service.js +5 -0
- package/dist/lib/services/data-cache.service.js.map +1 -1
- package/dist/lib/services/mention-autocomplete.service.js +1 -1
- package/dist/lib/services/mention-autocomplete.service.js.map +1 -1
- package/dist/lib/services/mention-parser.service.d.ts.map +1 -1
- package/dist/lib/services/mention-parser.service.js +0 -5
- package/dist/lib/services/mention-parser.service.js.map +1 -1
- package/dist/lib/services/search.service.d.ts +26 -3
- package/dist/lib/services/search.service.d.ts.map +1 -1
- package/dist/lib/services/search.service.js +172 -12
- package/dist/lib/services/search.service.js.map +1 -1
- package/dist/public-api.d.ts +4 -0
- package/dist/public-api.d.ts.map +1 -1
- package/dist/public-api.js +4 -0
- package/dist/public-api.js.map +1 -1
- package/package.json +12 -12
|
@@ -0,0 +1,303 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import { RunView, Metadata } from '@memberjunction/core';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export class CollectionPermissionService {
|
|
5
|
+
/**
|
|
6
|
+
* Load all permissions for a collection
|
|
7
|
+
*/
|
|
8
|
+
async loadPermissions(collectionId, currentUser) {
|
|
9
|
+
const rv = new RunView();
|
|
10
|
+
const result = await rv.RunView({
|
|
11
|
+
EntityName: 'MJ: Collection Permissions',
|
|
12
|
+
ExtraFilter: `CollectionID='${collectionId}'`,
|
|
13
|
+
OrderBy: '__mj_CreatedAt ASC',
|
|
14
|
+
ResultType: 'entity_object'
|
|
15
|
+
}, currentUser);
|
|
16
|
+
if (result.Success && result.Results) {
|
|
17
|
+
return result.Results.map(p => this.mapToPermission(p));
|
|
18
|
+
}
|
|
19
|
+
return [];
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Check if user has permission for a collection
|
|
23
|
+
*/
|
|
24
|
+
async checkPermission(collectionId, userId, currentUser) {
|
|
25
|
+
const rv = new RunView();
|
|
26
|
+
const result = await rv.RunView({
|
|
27
|
+
EntityName: 'MJ: Collection Permissions',
|
|
28
|
+
ExtraFilter: `CollectionID='${collectionId}' AND UserID='${userId}'`,
|
|
29
|
+
MaxRows: 1,
|
|
30
|
+
ResultType: 'entity_object'
|
|
31
|
+
}, currentUser);
|
|
32
|
+
if (result.Success && result.Results && result.Results.length > 0) {
|
|
33
|
+
return this.mapToPermission(result.Results[0]);
|
|
34
|
+
}
|
|
35
|
+
return null;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Check permissions for multiple collections at once (efficient bulk loading)
|
|
39
|
+
*/
|
|
40
|
+
async checkBulkPermissions(collectionIds, userId, currentUser) {
|
|
41
|
+
const resultMap = new Map();
|
|
42
|
+
if (collectionIds.length === 0) {
|
|
43
|
+
return resultMap;
|
|
44
|
+
}
|
|
45
|
+
// Build filter for all collection IDs
|
|
46
|
+
const collectionFilter = collectionIds.map(id => `CollectionID='${id}'`).join(' OR ');
|
|
47
|
+
const rv = new RunView();
|
|
48
|
+
const result = await rv.RunView({
|
|
49
|
+
EntityName: 'MJ: Collection Permissions',
|
|
50
|
+
ExtraFilter: `(${collectionFilter}) AND UserID='${userId}'`,
|
|
51
|
+
ResultType: 'entity_object'
|
|
52
|
+
}, currentUser);
|
|
53
|
+
if (result.Success && result.Results) {
|
|
54
|
+
for (const entity of result.Results) {
|
|
55
|
+
const permission = this.mapToPermission(entity);
|
|
56
|
+
resultMap.set(entity.CollectionID, permission);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
return resultMap;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Grant permission to a user
|
|
63
|
+
*/
|
|
64
|
+
async grantPermission(collectionId, userId, permissions, sharedByUserId, currentUser) {
|
|
65
|
+
const md = new Metadata();
|
|
66
|
+
const permission = await md.GetEntityObject('MJ: Collection Permissions', currentUser);
|
|
67
|
+
permission.CollectionID = collectionId;
|
|
68
|
+
permission.UserID = userId;
|
|
69
|
+
permission.CanRead = permissions.canRead;
|
|
70
|
+
permission.CanShare = permissions.canShare;
|
|
71
|
+
permission.CanEdit = permissions.canEdit;
|
|
72
|
+
permission.CanDelete = permissions.canDelete;
|
|
73
|
+
permission.SharedByUserID = sharedByUserId;
|
|
74
|
+
const saved = await permission.Save();
|
|
75
|
+
if (!saved) {
|
|
76
|
+
throw new Error(permission.LatestResult?.Message || 'Failed to grant permission');
|
|
77
|
+
}
|
|
78
|
+
return permission;
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Grant permission and cascade to all child collections
|
|
82
|
+
*/
|
|
83
|
+
async grantPermissionCascade(collectionId, userId, permissions, sharedByUserId, currentUser) {
|
|
84
|
+
// Grant permission on current collection
|
|
85
|
+
await this.grantPermission(collectionId, userId, permissions, sharedByUserId, currentUser);
|
|
86
|
+
// Grant permissions on all child collections recursively
|
|
87
|
+
await this.grantChildPermissions(collectionId, userId, permissions, sharedByUserId, currentUser);
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Recursively grant permissions on all child collections
|
|
91
|
+
*/
|
|
92
|
+
async grantChildPermissions(parentCollectionId, userId, permissions, sharedByUserId, currentUser) {
|
|
93
|
+
const rv = new RunView();
|
|
94
|
+
const childrenResult = await rv.RunView({
|
|
95
|
+
EntityName: 'MJ: Collections',
|
|
96
|
+
ExtraFilter: `ParentID='${parentCollectionId}'`,
|
|
97
|
+
ResultType: 'entity_object'
|
|
98
|
+
}, currentUser);
|
|
99
|
+
if (childrenResult.Success && childrenResult.Results) {
|
|
100
|
+
for (const child of childrenResult.Results) {
|
|
101
|
+
// Check if permission already exists
|
|
102
|
+
const existing = await this.checkPermission(child.ID, userId, currentUser);
|
|
103
|
+
if (existing) {
|
|
104
|
+
// Permission exists, update it instead
|
|
105
|
+
await this.updatePermission(existing.id, permissions, currentUser);
|
|
106
|
+
}
|
|
107
|
+
else {
|
|
108
|
+
// Grant new permission
|
|
109
|
+
await this.grantPermission(child.ID, userId, permissions, sharedByUserId, currentUser);
|
|
110
|
+
}
|
|
111
|
+
// Recursively grant to grandchildren
|
|
112
|
+
await this.grantChildPermissions(child.ID, userId, permissions, sharedByUserId, currentUser);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Update existing permission
|
|
118
|
+
*/
|
|
119
|
+
async updatePermission(permissionId, permissions, currentUser) {
|
|
120
|
+
const md = new Metadata();
|
|
121
|
+
const permission = await md.GetEntityObject('MJ: Collection Permissions', currentUser);
|
|
122
|
+
await permission.Load(permissionId);
|
|
123
|
+
permission.CanRead = permissions.canRead;
|
|
124
|
+
permission.CanShare = permissions.canShare;
|
|
125
|
+
permission.CanEdit = permissions.canEdit;
|
|
126
|
+
permission.CanDelete = permissions.canDelete;
|
|
127
|
+
return await permission.Save();
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* Update permission and cascade to all child collections
|
|
131
|
+
*/
|
|
132
|
+
async updatePermissionCascade(collectionId, userId, permissions, currentUser) {
|
|
133
|
+
// Update permission on current collection
|
|
134
|
+
const permission = await this.checkPermission(collectionId, userId, currentUser);
|
|
135
|
+
if (permission) {
|
|
136
|
+
await this.updatePermission(permission.id, permissions, currentUser);
|
|
137
|
+
}
|
|
138
|
+
// Get all child collections and update recursively
|
|
139
|
+
await this.updateChildPermissions(collectionId, userId, permissions, currentUser);
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* Recursively update permissions on all child collections
|
|
143
|
+
*/
|
|
144
|
+
async updateChildPermissions(parentCollectionId, userId, permissions, currentUser) {
|
|
145
|
+
const rv = new RunView();
|
|
146
|
+
const childrenResult = await rv.RunView({
|
|
147
|
+
EntityName: 'MJ: Collections',
|
|
148
|
+
ExtraFilter: `ParentID='${parentCollectionId}'`,
|
|
149
|
+
ResultType: 'entity_object'
|
|
150
|
+
}, currentUser);
|
|
151
|
+
if (childrenResult.Success && childrenResult.Results) {
|
|
152
|
+
for (const child of childrenResult.Results) {
|
|
153
|
+
// Update permission if it exists for this user on the child collection
|
|
154
|
+
const childPermission = await this.checkPermission(child.ID, userId, currentUser);
|
|
155
|
+
if (childPermission) {
|
|
156
|
+
await this.updatePermission(childPermission.id, permissions, currentUser);
|
|
157
|
+
}
|
|
158
|
+
// Recursively update grandchildren
|
|
159
|
+
await this.updateChildPermissions(child.ID, userId, permissions, currentUser);
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* Revoke permission
|
|
165
|
+
*/
|
|
166
|
+
async revokePermission(permissionId, currentUser) {
|
|
167
|
+
const md = new Metadata();
|
|
168
|
+
const permission = await md.GetEntityObject('MJ: Collection Permissions', currentUser);
|
|
169
|
+
await permission.Load(permissionId);
|
|
170
|
+
return await permission.Delete();
|
|
171
|
+
}
|
|
172
|
+
/**
|
|
173
|
+
* Revoke permission and cascade to all child collections
|
|
174
|
+
*/
|
|
175
|
+
async revokePermissionCascade(collectionId, userId, currentUser) {
|
|
176
|
+
// Revoke permission on current collection
|
|
177
|
+
const permission = await this.checkPermission(collectionId, userId, currentUser);
|
|
178
|
+
if (permission) {
|
|
179
|
+
await this.revokePermission(permission.id, currentUser);
|
|
180
|
+
}
|
|
181
|
+
// Revoke permissions on all child collections recursively
|
|
182
|
+
await this.revokeChildPermissions(collectionId, userId, currentUser);
|
|
183
|
+
}
|
|
184
|
+
/**
|
|
185
|
+
* Recursively revoke permissions on all child collections
|
|
186
|
+
*/
|
|
187
|
+
async revokeChildPermissions(parentCollectionId, userId, currentUser) {
|
|
188
|
+
const rv = new RunView();
|
|
189
|
+
const childrenResult = await rv.RunView({
|
|
190
|
+
EntityName: 'MJ: Collections',
|
|
191
|
+
ExtraFilter: `ParentID='${parentCollectionId}'`,
|
|
192
|
+
ResultType: 'entity_object'
|
|
193
|
+
}, currentUser);
|
|
194
|
+
if (childrenResult.Success && childrenResult.Results) {
|
|
195
|
+
for (const child of childrenResult.Results) {
|
|
196
|
+
// Revoke permission if it exists for this user on the child collection
|
|
197
|
+
const childPermission = await this.checkPermission(child.ID, userId, currentUser);
|
|
198
|
+
if (childPermission) {
|
|
199
|
+
await this.revokePermission(childPermission.id, currentUser);
|
|
200
|
+
}
|
|
201
|
+
// Recursively revoke from grandchildren
|
|
202
|
+
await this.revokeChildPermissions(child.ID, userId, currentUser);
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
/**
|
|
207
|
+
* Validate that requested permissions don't exceed granter's permissions
|
|
208
|
+
*/
|
|
209
|
+
validatePermissions(requested, granter, isOwner) {
|
|
210
|
+
if (isOwner)
|
|
211
|
+
return true; // Owner can grant anything
|
|
212
|
+
// Can't grant permissions you don't have
|
|
213
|
+
if (requested.canShare && !granter.canShare)
|
|
214
|
+
return false;
|
|
215
|
+
if (requested.canEdit && !granter.canEdit)
|
|
216
|
+
return false;
|
|
217
|
+
if (requested.canDelete && !granter.canDelete)
|
|
218
|
+
return false;
|
|
219
|
+
return true;
|
|
220
|
+
}
|
|
221
|
+
/**
|
|
222
|
+
* Get available permissions for a user to grant based on their own permissions
|
|
223
|
+
*/
|
|
224
|
+
getAvailablePermissions(userPermissions, isOwner) {
|
|
225
|
+
if (isOwner) {
|
|
226
|
+
return ['Read', 'Share', 'Edit', 'Delete'];
|
|
227
|
+
}
|
|
228
|
+
const available = ['Read']; // Always have read
|
|
229
|
+
if (userPermissions.canShare)
|
|
230
|
+
available.push('Share');
|
|
231
|
+
if (userPermissions.canEdit)
|
|
232
|
+
available.push('Edit');
|
|
233
|
+
if (userPermissions.canDelete)
|
|
234
|
+
available.push('Delete');
|
|
235
|
+
return available;
|
|
236
|
+
}
|
|
237
|
+
/**
|
|
238
|
+
* Copy all permissions from parent collection to child collection
|
|
239
|
+
*/
|
|
240
|
+
async copyParentPermissions(parentCollectionId, childCollectionId, currentUser) {
|
|
241
|
+
const parentPermissions = await this.loadPermissions(parentCollectionId, currentUser);
|
|
242
|
+
for (const perm of parentPermissions) {
|
|
243
|
+
// Check if permission already exists for this user on the child collection
|
|
244
|
+
const existing = await this.checkPermission(childCollectionId, perm.userId, currentUser);
|
|
245
|
+
if (existing) {
|
|
246
|
+
// Permission already exists (e.g., owner permission), skip to avoid duplicate
|
|
247
|
+
console.log(`Skipping duplicate permission for user ${perm.userId} on collection ${childCollectionId}`);
|
|
248
|
+
continue;
|
|
249
|
+
}
|
|
250
|
+
await this.grantPermission(childCollectionId, perm.userId, {
|
|
251
|
+
canRead: perm.canRead,
|
|
252
|
+
canShare: perm.canShare,
|
|
253
|
+
canEdit: perm.canEdit,
|
|
254
|
+
canDelete: perm.canDelete
|
|
255
|
+
}, perm.sharedByUserId || currentUser.ID, currentUser);
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
/**
|
|
259
|
+
* Delete all permissions for a collection
|
|
260
|
+
*/
|
|
261
|
+
async deleteAllPermissions(collectionId, currentUser) {
|
|
262
|
+
const permissions = await this.loadPermissions(collectionId, currentUser);
|
|
263
|
+
for (const perm of permissions) {
|
|
264
|
+
await this.revokePermission(perm.id, currentUser);
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
/**
|
|
268
|
+
* Create owner permission record (all permissions enabled)
|
|
269
|
+
*/
|
|
270
|
+
async createOwnerPermission(collectionId, ownerId, currentUser) {
|
|
271
|
+
await this.grantPermission(collectionId, ownerId, {
|
|
272
|
+
canRead: true,
|
|
273
|
+
canShare: true,
|
|
274
|
+
canEdit: true,
|
|
275
|
+
canDelete: true
|
|
276
|
+
}, ownerId, // Owner grants to themselves
|
|
277
|
+
currentUser);
|
|
278
|
+
}
|
|
279
|
+
mapToPermission(entity) {
|
|
280
|
+
return {
|
|
281
|
+
id: entity.ID,
|
|
282
|
+
collectionId: entity.CollectionID,
|
|
283
|
+
userId: entity.UserID,
|
|
284
|
+
userName: entity.User || '',
|
|
285
|
+
canRead: entity.CanRead,
|
|
286
|
+
canShare: entity.CanShare,
|
|
287
|
+
canEdit: entity.CanEdit,
|
|
288
|
+
canDelete: entity.CanDelete,
|
|
289
|
+
sharedByUserId: entity.SharedByUserID || null,
|
|
290
|
+
sharedByUserName: entity.SharedByUser || null,
|
|
291
|
+
sharedAt: entity.__mj_CreatedAt
|
|
292
|
+
};
|
|
293
|
+
}
|
|
294
|
+
static ɵfac = function CollectionPermissionService_Factory(t) { return new (t || CollectionPermissionService)(); };
|
|
295
|
+
static ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: CollectionPermissionService, factory: CollectionPermissionService.ɵfac, providedIn: 'root' });
|
|
296
|
+
}
|
|
297
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(CollectionPermissionService, [{
|
|
298
|
+
type: Injectable,
|
|
299
|
+
args: [{
|
|
300
|
+
providedIn: 'root'
|
|
301
|
+
}]
|
|
302
|
+
}], null, null); })();
|
|
303
|
+
//# sourceMappingURL=collection-permission.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"collection-permission.service.js","sourceRoot":"","sources":["../../../src/lib/services/collection-permission.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAY,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;;AA2BnE,MAAM,OAAO,2BAA2B;IAEpC;;OAEG;IACH,KAAK,CAAC,eAAe,CAAC,YAAoB,EAAE,WAAqB;QAC7D,MAAM,EAAE,GAAG,IAAI,OAAO,EAAE,CAAC;QACzB,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,OAAO,CAA6B;YACxD,UAAU,EAAE,4BAA4B;YACxC,WAAW,EAAE,iBAAiB,YAAY,GAAG;YAC7C,OAAO,EAAE,oBAAoB;YAC7B,UAAU,EAAE,eAAe;SAC9B,EAAE,WAAW,CAAC,CAAC;QAEhB,IAAI,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACnC,OAAO,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5D,CAAC;QACD,OAAO,EAAE,CAAC;IACd,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,eAAe,CACjB,YAAoB,EACpB,MAAc,EACd,WAAqB;QAErB,MAAM,EAAE,GAAG,IAAI,OAAO,EAAE,CAAC;QACzB,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,OAAO,CAA6B;YACxD,UAAU,EAAE,4BAA4B;YACxC,WAAW,EAAE,iBAAiB,YAAY,iBAAiB,MAAM,GAAG;YACpE,OAAO,EAAE,CAAC;YACV,UAAU,EAAE,eAAe;SAC9B,EAAE,WAAW,CAAC,CAAC;QAEhB,IAAI,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAChE,OAAO,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;QACnD,CAAC;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,oBAAoB,CACtB,aAAuB,EACvB,MAAc,EACd,WAAqB;QAErB,MAAM,SAAS,GAAG,IAAI,GAAG,EAAgC,CAAC;QAE1D,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC7B,OAAO,SAAS,CAAC;QACrB,CAAC;QAED,sCAAsC;QACtC,MAAM,gBAAgB,GAAG,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,iBAAiB,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACtF,MAAM,EAAE,GAAG,IAAI,OAAO,EAAE,CAAC;QACzB,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,OAAO,CAA6B;YACxD,UAAU,EAAE,4BAA4B;YACxC,WAAW,EAAE,IAAI,gBAAgB,iBAAiB,MAAM,GAAG;YAC3D,UAAU,EAAE,eAAe;SAC9B,EAAE,WAAW,CAAC,CAAC;QAEhB,IAAI,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACnC,KAAK,MAAM,MAAM,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;gBAClC,MAAM,UAAU,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;gBAChD,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;YACnD,CAAC;QACL,CAAC;QAED,OAAO,SAAS,CAAC;IACrB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,eAAe,CACjB,YAAoB,EACpB,MAAc,EACd,WAA0B,EAC1B,cAAsB,EACtB,WAAqB;QAErB,MAAM,EAAE,GAAG,IAAI,QAAQ,EAAE,CAAC;QAC1B,MAAM,UAAU,GAAG,MAAM,EAAE,CAAC,eAAe,CACvC,4BAA4B,EAC5B,WAAW,CACd,CAAC;QAEF,UAAU,CAAC,YAAY,GAAG,YAAY,CAAC;QACvC,UAAU,CAAC,MAAM,GAAG,MAAM,CAAC;QAC3B,UAAU,CAAC,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC;QACzC,UAAU,CAAC,QAAQ,GAAG,WAAW,CAAC,QAAQ,CAAC;QAC3C,UAAU,CAAC,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC;QACzC,UAAU,CAAC,SAAS,GAAG,WAAW,CAAC,SAAS,CAAC;QAC7C,UAAU,CAAC,cAAc,GAAG,cAAc,CAAC;QAE3C,MAAM,KAAK,GAAG,MAAM,UAAU,CAAC,IAAI,EAAE,CAAC;QACtC,IAAI,CAAC,KAAK,EAAE,CAAC;YACT,MAAM,IAAI,KAAK,CAAC,UAAU,CAAC,YAAY,EAAE,OAAO,IAAI,4BAA4B,CAAC,CAAC;QACtF,CAAC;QAED,OAAO,UAAU,CAAC;IACtB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,sBAAsB,CACxB,YAAoB,EACpB,MAAc,EACd,WAA0B,EAC1B,cAAsB,EACtB,WAAqB;QAErB,yCAAyC;QACzC,MAAM,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE,MAAM,EAAE,WAAW,EAAE,cAAc,EAAE,WAAW,CAAC,CAAC;QAE3F,yDAAyD;QACzD,MAAM,IAAI,CAAC,qBAAqB,CAAC,YAAY,EAAE,MAAM,EAAE,WAAW,EAAE,cAAc,EAAE,WAAW,CAAC,CAAC;IACrG,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,qBAAqB,CAC/B,kBAA0B,EAC1B,MAAc,EACd,WAA0B,EAC1B,cAAsB,EACtB,WAAqB;QAErB,MAAM,EAAE,GAAG,IAAI,OAAO,EAAE,CAAC;QACzB,MAAM,cAAc,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC;YACpC,UAAU,EAAE,iBAAiB;YAC7B,WAAW,EAAE,aAAa,kBAAkB,GAAG;YAC/C,UAAU,EAAE,eAAe;SAC9B,EAAE,WAAW,CAAC,CAAC;QAEhB,IAAI,cAAc,CAAC,OAAO,IAAI,cAAc,CAAC,OAAO,EAAE,CAAC;YACnD,KAAK,MAAM,KAAK,IAAI,cAAc,CAAC,OAAO,EAAE,CAAC;gBACzC,qCAAqC;gBACrC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,EAAE,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;gBAE3E,IAAI,QAAQ,EAAE,CAAC;oBACX,uCAAuC;oBACvC,MAAM,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,EAAE,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC;gBACvE,CAAC;qBAAM,CAAC;oBACJ,uBAAuB;oBACvB,MAAM,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,cAAc,EAAE,WAAW,CAAC,CAAC;gBAC3F,CAAC;gBAED,qCAAqC;gBACrC,MAAM,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,cAAc,EAAE,WAAW,CAAC,CAAC;YACjG,CAAC;QACL,CAAC;IACL,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,gBAAgB,CAClB,YAAoB,EACpB,WAA0B,EAC1B,WAAqB;QAErB,MAAM,EAAE,GAAG,IAAI,QAAQ,EAAE,CAAC;QAC1B,MAAM,UAAU,GAAG,MAAM,EAAE,CAAC,eAAe,CACvC,4BAA4B,EAC5B,WAAW,CACd,CAAC;QAEF,MAAM,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACpC,UAAU,CAAC,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC;QACzC,UAAU,CAAC,QAAQ,GAAG,WAAW,CAAC,QAAQ,CAAC;QAC3C,UAAU,CAAC,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC;QACzC,UAAU,CAAC,SAAS,GAAG,WAAW,CAAC,SAAS,CAAC;QAE7C,OAAO,MAAM,UAAU,CAAC,IAAI,EAAE,CAAC;IACnC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,uBAAuB,CACzB,YAAoB,EACpB,MAAc,EACd,WAA0B,EAC1B,WAAqB;QAErB,0CAA0C;QAC1C,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;QACjF,IAAI,UAAU,EAAE,CAAC;YACb,MAAM,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,EAAE,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC;QACzE,CAAC;QAED,mDAAmD;QACnD,MAAM,IAAI,CAAC,sBAAsB,CAAC,YAAY,EAAE,MAAM,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC;IACtF,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,sBAAsB,CAChC,kBAA0B,EAC1B,MAAc,EACd,WAA0B,EAC1B,WAAqB;QAErB,MAAM,EAAE,GAAG,IAAI,OAAO,EAAE,CAAC;QACzB,MAAM,cAAc,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC;YACpC,UAAU,EAAE,iBAAiB;YAC7B,WAAW,EAAE,aAAa,kBAAkB,GAAG;YAC/C,UAAU,EAAE,eAAe;SAC9B,EAAE,WAAW,CAAC,CAAC;QAEhB,IAAI,cAAc,CAAC,OAAO,IAAI,cAAc,CAAC,OAAO,EAAE,CAAC;YACnD,KAAK,MAAM,KAAK,IAAI,cAAc,CAAC,OAAO,EAAE,CAAC;gBACzC,uEAAuE;gBACvE,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,EAAE,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;gBAClF,IAAI,eAAe,EAAE,CAAC;oBAClB,MAAM,IAAI,CAAC,gBAAgB,CAAC,eAAe,CAAC,EAAE,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC;gBAC9E,CAAC;gBAED,mCAAmC;gBACnC,MAAM,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC;YAClF,CAAC;QACL,CAAC;IACL,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,gBAAgB,CAAC,YAAoB,EAAE,WAAqB;QAC9D,MAAM,EAAE,GAAG,IAAI,QAAQ,EAAE,CAAC;QAC1B,MAAM,UAAU,GAAG,MAAM,EAAE,CAAC,eAAe,CACvC,4BAA4B,EAC5B,WAAW,CACd,CAAC;QAEF,MAAM,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACpC,OAAO,MAAM,UAAU,CAAC,MAAM,EAAE,CAAC;IACrC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,uBAAuB,CACzB,YAAoB,EACpB,MAAc,EACd,WAAqB;QAErB,0CAA0C;QAC1C,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;QACjF,IAAI,UAAU,EAAE,CAAC;YACb,MAAM,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,EAAE,EAAE,WAAW,CAAC,CAAC;QAC5D,CAAC;QAED,0DAA0D;QAC1D,MAAM,IAAI,CAAC,sBAAsB,CAAC,YAAY,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;IACzE,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,sBAAsB,CAChC,kBAA0B,EAC1B,MAAc,EACd,WAAqB;QAErB,MAAM,EAAE,GAAG,IAAI,OAAO,EAAE,CAAC;QACzB,MAAM,cAAc,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC;YACpC,UAAU,EAAE,iBAAiB;YAC7B,WAAW,EAAE,aAAa,kBAAkB,GAAG;YAC/C,UAAU,EAAE,eAAe;SAC9B,EAAE,WAAW,CAAC,CAAC;QAEhB,IAAI,cAAc,CAAC,OAAO,IAAI,cAAc,CAAC,OAAO,EAAE,CAAC;YACnD,KAAK,MAAM,KAAK,IAAI,cAAc,CAAC,OAAO,EAAE,CAAC;gBACzC,uEAAuE;gBACvE,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,EAAE,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;gBAClF,IAAI,eAAe,EAAE,CAAC;oBAClB,MAAM,IAAI,CAAC,gBAAgB,CAAC,eAAe,CAAC,EAAE,EAAE,WAAW,CAAC,CAAC;gBACjE,CAAC;gBAED,wCAAwC;gBACxC,MAAM,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,EAAE,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;YACrE,CAAC;QACL,CAAC;IACL,CAAC;IAED;;OAEG;IACH,mBAAmB,CACf,SAAwB,EACxB,OAAsB,EACtB,OAAgB;QAEhB,IAAI,OAAO;YAAE,OAAO,IAAI,CAAC,CAAC,2BAA2B;QAErD,yCAAyC;QACzC,IAAI,SAAS,CAAC,QAAQ,IAAI,CAAC,OAAO,CAAC,QAAQ;YAAE,OAAO,KAAK,CAAC;QAC1D,IAAI,SAAS,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO;YAAE,OAAO,KAAK,CAAC;QACxD,IAAI,SAAS,CAAC,SAAS,IAAI,CAAC,OAAO,CAAC,SAAS;YAAE,OAAO,KAAK,CAAC;QAE5D,OAAO,IAAI,CAAC;IAChB,CAAC;IAED;;OAEG;IACH,uBAAuB,CAAC,eAA8B,EAAE,OAAgB;QACpE,IAAI,OAAO,EAAE,CAAC;YACV,OAAO,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;QAC/C,CAAC;QAED,MAAM,SAAS,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,mBAAmB;QAC/C,IAAI,eAAe,CAAC,QAAQ;YAAE,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACtD,IAAI,eAAe,CAAC,OAAO;YAAE,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACpD,IAAI,eAAe,CAAC,SAAS;YAAE,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAExD,OAAO,SAAS,CAAC;IACrB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,qBAAqB,CACvB,kBAA0B,EAC1B,iBAAyB,EACzB,WAAqB;QAErB,MAAM,iBAAiB,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,kBAAkB,EAAE,WAAW,CAAC,CAAC;QAEtF,KAAK,MAAM,IAAI,IAAI,iBAAiB,EAAE,CAAC;YACnC,2EAA2E;YAC3E,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,iBAAiB,EAAE,IAAI,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;YAEzF,IAAI,QAAQ,EAAE,CAAC;gBACX,8EAA8E;gBAC9E,OAAO,CAAC,GAAG,CAAC,0CAA0C,IAAI,CAAC,MAAM,kBAAkB,iBAAiB,EAAE,CAAC,CAAC;gBACxG,SAAS;YACb,CAAC;YAED,MAAM,IAAI,CAAC,eAAe,CACtB,iBAAiB,EACjB,IAAI,CAAC,MAAM,EACX;gBACI,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,SAAS,EAAE,IAAI,CAAC,SAAS;aAC5B,EACD,IAAI,CAAC,cAAc,IAAI,WAAW,CAAC,EAAE,EACrC,WAAW,CACd,CAAC;QACN,CAAC;IACL,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,oBAAoB,CAAC,YAAoB,EAAE,WAAqB;QAClE,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;QAE1E,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE,CAAC;YAC7B,MAAM,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,EAAE,WAAW,CAAC,CAAC;QACtD,CAAC;IACL,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,qBAAqB,CACvB,YAAoB,EACpB,OAAe,EACf,WAAqB;QAErB,MAAM,IAAI,CAAC,eAAe,CACtB,YAAY,EACZ,OAAO,EACP;YACI,OAAO,EAAE,IAAI;YACb,QAAQ,EAAE,IAAI;YACd,OAAO,EAAE,IAAI;YACb,SAAS,EAAE,IAAI;SAClB,EACD,OAAO,EAAE,6BAA6B;QACtC,WAAW,CACd,CAAC;IACN,CAAC;IAEO,eAAe,CAAC,MAAkC;QACtD,OAAO;YACH,EAAE,EAAE,MAAM,CAAC,EAAE;YACb,YAAY,EAAE,MAAM,CAAC,YAAY;YACjC,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,QAAQ,EAAE,MAAM,CAAC,IAAI,IAAI,EAAE;YAC3B,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,cAAc,EAAE,MAAM,CAAC,cAAc,IAAI,IAAI;YAC7C,gBAAgB,EAAE,MAAM,CAAC,YAAY,IAAI,IAAI;YAC7C,QAAQ,EAAE,MAAM,CAAC,cAAc;SAClC,CAAC;IACN,CAAC;qFAzZQ,2BAA2B;gEAA3B,2BAA2B,WAA3B,2BAA2B,mBAFxB,MAAM;;iFAET,2BAA2B;cAHvC,UAAU;eAAC;gBACR,UAAU,EAAE,MAAM;aACrB"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { Observable } from 'rxjs';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
/**
|
|
4
|
+
* State management service for collections
|
|
5
|
+
* Tracks active collection for deep linking support
|
|
6
|
+
*/
|
|
7
|
+
export declare class CollectionStateService {
|
|
8
|
+
private _activeCollectionId$;
|
|
9
|
+
/**
|
|
10
|
+
* Observable of the active collection ID
|
|
11
|
+
*/
|
|
12
|
+
readonly activeCollectionId$: Observable<string | null>;
|
|
13
|
+
/**
|
|
14
|
+
* Gets the currently active collection ID (synchronous)
|
|
15
|
+
*/
|
|
16
|
+
get activeCollectionId(): string | null;
|
|
17
|
+
constructor();
|
|
18
|
+
/**
|
|
19
|
+
* Sets the active collection
|
|
20
|
+
* @param id The collection ID to activate (or null to clear)
|
|
21
|
+
*/
|
|
22
|
+
setActiveCollection(id: string | null): void;
|
|
23
|
+
/**
|
|
24
|
+
* Clears the active collection
|
|
25
|
+
*/
|
|
26
|
+
clearActiveCollection(): void;
|
|
27
|
+
/**
|
|
28
|
+
* Gets the currently active collection ID
|
|
29
|
+
*/
|
|
30
|
+
getActiveCollectionId(): string | null;
|
|
31
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<CollectionStateService, never>;
|
|
32
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<CollectionStateService>;
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=collection-state.service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"collection-state.service.d.ts","sourceRoot":"","sources":["../../../src/lib/services/collection-state.service.ts"],"names":[],"mappings":"AACA,OAAO,EAAmB,UAAU,EAAE,MAAM,MAAM,CAAC;;AAEnD;;;GAGG;AACH,qBAGa,sBAAsB;IACjC,OAAO,CAAC,oBAAoB,CAA4C;IAExE;;OAEG;IACH,SAAgB,mBAAmB,EAAE,UAAU,CAAC,MAAM,GAAG,IAAI,CAAC,CAA4C;IAE1G;;OAEG;IACH,IAAW,kBAAkB,IAAI,MAAM,GAAG,IAAI,CAE7C;;IAID;;;OAGG;IACH,mBAAmB,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IAK5C;;OAEG;IACH,qBAAqB,IAAI,IAAI;IAI7B;;OAEG;IACH,qBAAqB,IAAI,MAAM,GAAG,IAAI;yCApC3B,sBAAsB;6CAAtB,sBAAsB;CAuClC"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import { BehaviorSubject } from 'rxjs';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
/**
|
|
5
|
+
* State management service for collections
|
|
6
|
+
* Tracks active collection for deep linking support
|
|
7
|
+
*/
|
|
8
|
+
export class CollectionStateService {
|
|
9
|
+
_activeCollectionId$ = new BehaviorSubject(null);
|
|
10
|
+
/**
|
|
11
|
+
* Observable of the active collection ID
|
|
12
|
+
*/
|
|
13
|
+
activeCollectionId$ = this._activeCollectionId$.asObservable();
|
|
14
|
+
/**
|
|
15
|
+
* Gets the currently active collection ID (synchronous)
|
|
16
|
+
*/
|
|
17
|
+
get activeCollectionId() {
|
|
18
|
+
return this._activeCollectionId$.value;
|
|
19
|
+
}
|
|
20
|
+
constructor() { }
|
|
21
|
+
/**
|
|
22
|
+
* Sets the active collection
|
|
23
|
+
* @param id The collection ID to activate (or null to clear)
|
|
24
|
+
*/
|
|
25
|
+
setActiveCollection(id) {
|
|
26
|
+
console.log('📁 Setting active collection:', id);
|
|
27
|
+
this._activeCollectionId$.next(id);
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Clears the active collection
|
|
31
|
+
*/
|
|
32
|
+
clearActiveCollection() {
|
|
33
|
+
this._activeCollectionId$.next(null);
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Gets the currently active collection ID
|
|
37
|
+
*/
|
|
38
|
+
getActiveCollectionId() {
|
|
39
|
+
return this._activeCollectionId$.value;
|
|
40
|
+
}
|
|
41
|
+
static ɵfac = function CollectionStateService_Factory(t) { return new (t || CollectionStateService)(); };
|
|
42
|
+
static ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: CollectionStateService, factory: CollectionStateService.ɵfac, providedIn: 'root' });
|
|
43
|
+
}
|
|
44
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(CollectionStateService, [{
|
|
45
|
+
type: Injectable,
|
|
46
|
+
args: [{
|
|
47
|
+
providedIn: 'root'
|
|
48
|
+
}]
|
|
49
|
+
}], () => [], null); })();
|
|
50
|
+
//# sourceMappingURL=collection-state.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"collection-state.service.js","sourceRoot":"","sources":["../../../src/lib/services/collection-state.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,eAAe,EAAc,MAAM,MAAM,CAAC;;AAEnD;;;GAGG;AAIH,MAAM,OAAO,sBAAsB;IACzB,oBAAoB,GAAG,IAAI,eAAe,CAAgB,IAAI,CAAC,CAAC;IAExE;;OAEG;IACa,mBAAmB,GAA8B,IAAI,CAAC,oBAAoB,CAAC,YAAY,EAAE,CAAC;IAE1G;;OAEG;IACH,IAAW,kBAAkB;QAC3B,OAAO,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC;IACzC,CAAC;IAED,gBAAe,CAAC;IAEhB;;;OAGG;IACH,mBAAmB,CAAC,EAAiB;QACnC,OAAO,CAAC,GAAG,CAAC,+BAA+B,EAAE,EAAE,CAAC,CAAC;QACjD,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACrC,CAAC;IAED;;OAEG;IACH,qBAAqB;QACnB,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACvC,CAAC;IAED;;OAEG;IACH,qBAAqB;QACnB,OAAO,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC;IACzC,CAAC;gFAtCU,sBAAsB;gEAAtB,sBAAsB,WAAtB,sBAAsB,mBAFrB,MAAM;;iFAEP,sBAAsB;cAHlC,UAAU;eAAC;gBACV,UAAU,EAAE,MAAM;aACnB"}
|
|
@@ -24,10 +24,6 @@ export declare class ConversationAgentService {
|
|
|
24
24
|
* Get or load the Sage Agent (formerly Conversation Manager Agent)
|
|
25
25
|
*/
|
|
26
26
|
getConversationManagerAgent(): Promise<AIAgentEntityExtended | null>;
|
|
27
|
-
/**
|
|
28
|
-
* Get or create a session ID for a conversation
|
|
29
|
-
*/
|
|
30
|
-
private getSessionId;
|
|
31
27
|
/**
|
|
32
28
|
* Process a message through the ambient Sage Agent.
|
|
33
29
|
* This should be called for every message sent in a conversation.
|
|
@@ -43,6 +39,7 @@ export declare class ConversationAgentService {
|
|
|
43
39
|
/**
|
|
44
40
|
* Build the message array for the agent from conversation history
|
|
45
41
|
* Note: conversationHistory already includes the current message, so we don't add it separately
|
|
42
|
+
* IMPORTANT: This method loads artifacts for each message and appends them to the content
|
|
46
43
|
*/
|
|
47
44
|
private buildAgentMessages;
|
|
48
45
|
/**
|
|
@@ -70,10 +67,29 @@ export declare class ConversationAgentService {
|
|
|
70
67
|
* @returns The agent's execution result, or null if agent not found
|
|
71
68
|
*/
|
|
72
69
|
invokeSubAgent(agentName: string, conversationId: string, message: ConversationDetailEntity, conversationHistory: ConversationDetailEntity[], reasoning: string, conversationDetailId: string, payload?: any, onProgress?: AgentExecutionProgressCallback): Promise<ExecuteAgentResult | null>;
|
|
70
|
+
/**
|
|
71
|
+
* Check if user's latest message should continue with the previous agent or route through Sage.
|
|
72
|
+
* Uses fast inference (<500ms) to determine intent and avoid unnecessary Sage overhead.
|
|
73
|
+
*
|
|
74
|
+
* @param agentId The ID of the previous agent
|
|
75
|
+
* @param latestMessage The user's new message
|
|
76
|
+
* @param conversationHistory Recent conversation history for context (last 10 messages)
|
|
77
|
+
* @returns 'YES' if message continues with agent, 'NO' for context shift, 'UNSURE' when unclear
|
|
78
|
+
*/
|
|
79
|
+
checkAgentContinuityIntent(agentId: string, latestMessage: string, conversationHistory: ConversationDetailEntity[]): Promise<'YES' | 'NO' | 'UNSURE'>;
|
|
73
80
|
/**
|
|
74
81
|
* Clear the session for a conversation (useful when starting a new topic)
|
|
75
82
|
*/
|
|
76
83
|
clearSession(conversationId: string): void;
|
|
84
|
+
/**
|
|
85
|
+
* Filter agents based on user's 'run' permission.
|
|
86
|
+
* Only returns agents that the user has permission to run.
|
|
87
|
+
*
|
|
88
|
+
* @param agents List of candidate agents to filter
|
|
89
|
+
* @param user User to check permissions for
|
|
90
|
+
* @returns Filtered list of agents the user can run
|
|
91
|
+
*/
|
|
92
|
+
private filterAgentsByPermissions;
|
|
77
93
|
static ɵfac: i0.ɵɵFactoryDeclaration<ConversationAgentService, never>;
|
|
78
94
|
static ɵprov: i0.ɵɵInjectableDeclaration<ConversationAgentService>;
|
|
79
95
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"conversation-agent.service.d.ts","sourceRoot":"","sources":["../../../src/lib/services/conversation-agent.service.ts"],"names":[],"mappings":"AACA,OAAO,EAAmB,UAAU,EAAE,MAAM,MAAM,CAAC;AAInD,OAAO,EAAsB,kBAAkB,EAAE,8BAA8B,EAAE,MAAM,8BAA8B,CAAC;AAGtH,OAAO,EAAE,qBAAqB,EAAE,wBAAwB,
|
|
1
|
+
{"version":3,"file":"conversation-agent.service.d.ts","sourceRoot":"","sources":["../../../src/lib/services/conversation-agent.service.ts"],"names":[],"mappings":"AACA,OAAO,EAAmB,UAAU,EAAE,MAAM,MAAM,CAAC;AAInD,OAAO,EAAsB,kBAAkB,EAAE,8BAA8B,EAAE,MAAM,8BAA8B,CAAC;AAGtH,OAAO,EAAE,qBAAqB,EAAE,wBAAwB,EAA2D,MAAM,+BAA+B,CAAC;;AAGzJ;;;GAGG;AACH,qBAGa,wBAAwB;IACnC,OAAO,CAAC,SAAS,CAAgC;IACjD,OAAO,CAAC,yBAAyB,CAAsC;IACvE,OAAO,CAAC,WAAW,CAAkC;IACrD,OAAO,CAAC,cAAc,CAAuC;IAE7D;;OAEG;IACH,SAAgB,aAAa,EAAE,UAAU,CAAC,OAAO,CAAC,CAAsC;;IAMxF;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAa1B;;OAEG;IACU,2BAA2B,IAAI,OAAO,CAAC,qBAAqB,GAAG,IAAI,CAAC;IA+BjF;;;;;;;;;;OAUG;IACG,cAAc,CAClB,cAAc,EAAE,MAAM,EACtB,OAAO,EAAE,wBAAwB,EACjC,mBAAmB,EAAE,wBAAwB,EAAE,EAC/C,oBAAoB,EAAE,MAAM,EAC5B,UAAU,CAAC,EAAE,8BAA8B,GAC1C,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC;IAkFrC;;;;OAIG;YACW,kBAAkB;IAoFhC;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAO1B;;;;OAIG;IACH,OAAO,CAAC,eAAe;IAMvB;;;;;;;;;;;;;OAaG;IACG,cAAc,CAClB,SAAS,EAAE,MAAM,EACjB,cAAc,EAAE,MAAM,EACtB,OAAO,EAAE,wBAAwB,EACjC,mBAAmB,EAAE,wBAAwB,EAAE,EAC/C,SAAS,EAAE,MAAM,EACjB,oBAAoB,EAAE,MAAM,EAC5B,OAAO,CAAC,EAAE,GAAG,EACb,UAAU,CAAC,EAAE,8BAA8B,GAC1C,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC;IAsDrC;;;;;;;;OAQG;IACG,0BAA0B,CAC9B,OAAO,EAAE,MAAM,EACf,aAAa,EAAE,MAAM,EACrB,mBAAmB,EAAE,wBAAwB,EAAE,GAC9C,OAAO,CAAC,KAAK,GAAG,IAAI,GAAG,QAAQ,CAAC;IA8EnC;;OAEG;IACH,YAAY,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI;IAI1C;;;;;;;OAOG;YACW,yBAAyB;yCAzc5B,wBAAwB;6CAAxB,wBAAwB;CAiepC"}
|