@memberjunction/ng-conversations 2.104.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/README.md +197 -0
- package/dist/lib/components/active-tasks/active-tasks-panel.component.d.ts +20 -0
- package/dist/lib/components/active-tasks/active-tasks-panel.component.d.ts.map +1 -0
- package/dist/lib/components/active-tasks/active-tasks-panel.component.js +125 -0
- package/dist/lib/components/active-tasks/active-tasks-panel.component.js.map +1 -0
- package/dist/lib/components/agent/active-agent-indicator.component.d.ts +48 -0
- package/dist/lib/components/agent/active-agent-indicator.component.d.ts.map +1 -0
- package/dist/lib/components/agent/active-agent-indicator.component.js +199 -0
- package/dist/lib/components/agent/active-agent-indicator.component.js.map +1 -0
- package/dist/lib/components/agent/agent-process-panel.component.d.ts +30 -0
- package/dist/lib/components/agent/agent-process-panel.component.d.ts.map +1 -0
- package/dist/lib/components/agent/agent-process-panel.component.js +333 -0
- package/dist/lib/components/agent/agent-process-panel.component.js.map +1 -0
- package/dist/lib/components/artifact/artifact-panel.component.d.ts +22 -0
- package/dist/lib/components/artifact/artifact-panel.component.d.ts.map +1 -0
- package/dist/lib/components/artifact/artifact-panel.component.js +237 -0
- package/dist/lib/components/artifact/artifact-panel.component.js.map +1 -0
- package/dist/lib/components/artifact/artifact-upload-modal.component.d.ts +39 -0
- package/dist/lib/components/artifact/artifact-upload-modal.component.d.ts.map +1 -0
- package/dist/lib/components/artifact/artifact-upload-modal.component.js +384 -0
- package/dist/lib/components/artifact/artifact-upload-modal.component.js.map +1 -0
- package/dist/lib/components/artifact/artifact-version-history.component.d.ts +28 -0
- package/dist/lib/components/artifact/artifact-version-history.component.d.ts.map +1 -0
- package/dist/lib/components/artifact/artifact-version-history.component.js +280 -0
- package/dist/lib/components/artifact/artifact-version-history.component.js.map +1 -0
- package/dist/lib/components/artifact/artifact-viewer-panel.component.d.ts +22 -0
- package/dist/lib/components/artifact/artifact-viewer-panel.component.d.ts.map +1 -0
- package/dist/lib/components/artifact/artifact-viewer-panel.component.js +182 -0
- package/dist/lib/components/artifact/artifact-viewer-panel.component.js.map +1 -0
- package/dist/lib/components/artifact/artifact-viewer.component.d.ts +27 -0
- package/dist/lib/components/artifact/artifact-viewer.component.d.ts.map +1 -0
- package/dist/lib/components/artifact/artifact-viewer.component.js +266 -0
- package/dist/lib/components/artifact/artifact-viewer.component.js.map +1 -0
- package/dist/lib/components/artifact/inline-artifact.component.d.ts +46 -0
- package/dist/lib/components/artifact/inline-artifact.component.d.ts.map +1 -0
- package/dist/lib/components/artifact/inline-artifact.component.js +447 -0
- package/dist/lib/components/artifact/inline-artifact.component.js.map +1 -0
- package/dist/lib/components/collection/collection-artifact-card.component.d.ts +18 -0
- package/dist/lib/components/collection/collection-artifact-card.component.d.ts.map +1 -0
- package/dist/lib/components/collection/collection-artifact-card.component.js +147 -0
- package/dist/lib/components/collection/collection-artifact-card.component.js.map +1 -0
- package/dist/lib/components/collection/collection-form-modal.component.d.ts +33 -0
- package/dist/lib/components/collection/collection-form-modal.component.d.ts.map +1 -0
- package/dist/lib/components/collection/collection-form-modal.component.js +245 -0
- package/dist/lib/components/collection/collection-form-modal.component.js.map +1 -0
- package/dist/lib/components/collection/collection-tree.component.d.ts +42 -0
- package/dist/lib/components/collection/collection-tree.component.d.ts.map +1 -0
- package/dist/lib/components/collection/collection-tree.component.js +482 -0
- package/dist/lib/components/collection/collection-tree.component.js.map +1 -0
- package/dist/lib/components/collection/collection-view.component.d.ts +31 -0
- package/dist/lib/components/collection/collection-view.component.d.ts.map +1 -0
- package/dist/lib/components/collection/collection-view.component.js +254 -0
- package/dist/lib/components/collection/collection-view.component.js.map +1 -0
- package/dist/lib/components/collection/collections-full-view.component.d.ts +55 -0
- package/dist/lib/components/collection/collections-full-view.component.d.ts.map +1 -0
- package/dist/lib/components/collection/collections-full-view.component.js +578 -0
- package/dist/lib/components/collection/collections-full-view.component.js.map +1 -0
- package/dist/lib/components/conversation/conversation-chat-area.component.d.ts +160 -0
- package/dist/lib/components/conversation/conversation-chat-area.component.d.ts.map +1 -0
- package/dist/lib/components/conversation/conversation-chat-area.component.js +891 -0
- package/dist/lib/components/conversation/conversation-chat-area.component.js.map +1 -0
- package/dist/lib/components/conversation/conversation-list.component.d.ts +29 -0
- package/dist/lib/components/conversation/conversation-list.component.d.ts.map +1 -0
- package/dist/lib/components/conversation/conversation-list.component.js +255 -0
- package/dist/lib/components/conversation/conversation-list.component.js.map +1 -0
- package/dist/lib/components/dialogs/input-dialog.component.d.ts +17 -0
- package/dist/lib/components/dialogs/input-dialog.component.d.ts.map +1 -0
- package/dist/lib/components/dialogs/input-dialog.component.js +122 -0
- package/dist/lib/components/dialogs/input-dialog.component.js.map +1 -0
- package/dist/lib/components/export/export-modal.component.d.ts +37 -0
- package/dist/lib/components/export/export-modal.component.d.ts.map +1 -0
- package/dist/lib/components/export/export-modal.component.js +414 -0
- package/dist/lib/components/export/export-modal.component.js.map +1 -0
- package/dist/lib/components/library/library-full-view.component.d.ts +36 -0
- package/dist/lib/components/library/library-full-view.component.d.ts.map +1 -0
- package/dist/lib/components/library/library-full-view.component.js +270 -0
- package/dist/lib/components/library/library-full-view.component.js.map +1 -0
- package/dist/lib/components/members/members-modal.component.d.ts +42 -0
- package/dist/lib/components/members/members-modal.component.d.ts.map +1 -0
- package/dist/lib/components/members/members-modal.component.js +352 -0
- package/dist/lib/components/members/members-modal.component.js.map +1 -0
- package/dist/lib/components/mention/mention-dropdown.component.d.ts +44 -0
- package/dist/lib/components/mention/mention-dropdown.component.d.ts.map +1 -0
- package/dist/lib/components/mention/mention-dropdown.component.js +194 -0
- package/dist/lib/components/mention/mention-dropdown.component.js.map +1 -0
- package/dist/lib/components/message/message-input.component.d.ts +137 -0
- package/dist/lib/components/message/message-input.component.d.ts.map +1 -0
- package/dist/lib/components/message/message-input.component.js +1159 -0
- package/dist/lib/components/message/message-input.component.js.map +1 -0
- package/dist/lib/components/message/message-item.component.d.ts +140 -0
- package/dist/lib/components/message/message-item.component.d.ts.map +1 -0
- package/dist/lib/components/message/message-item.component.js +817 -0
- package/dist/lib/components/message/message-item.component.js.map +1 -0
- package/dist/lib/components/message/message-list.component.d.ts +77 -0
- package/dist/lib/components/message/message-list.component.d.ts.map +1 -0
- package/dist/lib/components/message/message-list.component.js +316 -0
- package/dist/lib/components/message/message-list.component.js.map +1 -0
- package/dist/lib/components/navigation/conversation-navigation.component.d.ts +13 -0
- package/dist/lib/components/navigation/conversation-navigation.component.d.ts.map +1 -0
- package/dist/lib/components/navigation/conversation-navigation.component.js +88 -0
- package/dist/lib/components/navigation/conversation-navigation.component.js.map +1 -0
- package/dist/lib/components/notification/activity-indicator.component.d.ts +11 -0
- package/dist/lib/components/notification/activity-indicator.component.d.ts.map +1 -0
- package/dist/lib/components/notification/activity-indicator.component.js +56 -0
- package/dist/lib/components/notification/activity-indicator.component.js.map +1 -0
- package/dist/lib/components/notification/notification-badge.component.d.ts +27 -0
- package/dist/lib/components/notification/notification-badge.component.d.ts.map +1 -0
- package/dist/lib/components/notification/notification-badge.component.js +160 -0
- package/dist/lib/components/notification/notification-badge.component.js.map +1 -0
- package/dist/lib/components/project/project-form-modal.component.d.ts +34 -0
- package/dist/lib/components/project/project-form-modal.component.d.ts.map +1 -0
- package/dist/lib/components/project/project-form-modal.component.js +357 -0
- package/dist/lib/components/project/project-form-modal.component.js.map +1 -0
- package/dist/lib/components/project/project-selector.component.d.ts +36 -0
- package/dist/lib/components/project/project-selector.component.d.ts.map +1 -0
- package/dist/lib/components/project/project-selector.component.js +317 -0
- package/dist/lib/components/project/project-selector.component.js.map +1 -0
- package/dist/lib/components/search/search-panel.component.d.ts +120 -0
- package/dist/lib/components/search/search-panel.component.d.ts.map +1 -0
- package/dist/lib/components/search/search-panel.component.js +714 -0
- package/dist/lib/components/search/search-panel.component.js.map +1 -0
- package/dist/lib/components/share/share-modal.component.d.ts +46 -0
- package/dist/lib/components/share/share-modal.component.d.ts.map +1 -0
- package/dist/lib/components/share/share-modal.component.js +431 -0
- package/dist/lib/components/share/share-modal.component.js.map +1 -0
- package/dist/lib/components/sidebar/conversation-sidebar.component.d.ts +18 -0
- package/dist/lib/components/sidebar/conversation-sidebar.component.d.ts.map +1 -0
- package/dist/lib/components/sidebar/conversation-sidebar.component.js +81 -0
- package/dist/lib/components/sidebar/conversation-sidebar.component.js.map +1 -0
- package/dist/lib/components/task/task-form-modal.component.d.ts +42 -0
- package/dist/lib/components/task/task-form-modal.component.d.ts.map +1 -0
- package/dist/lib/components/task/task-form-modal.component.js +329 -0
- package/dist/lib/components/task/task-form-modal.component.js.map +1 -0
- package/dist/lib/components/task/task-item.component.d.ts +22 -0
- package/dist/lib/components/task/task-item.component.d.ts.map +1 -0
- package/dist/lib/components/task/task-item.component.js +234 -0
- package/dist/lib/components/task/task-item.component.js.map +1 -0
- package/dist/lib/components/task/task-list.component.d.ts +32 -0
- package/dist/lib/components/task/task-list.component.d.ts.map +1 -0
- package/dist/lib/components/task/task-list.component.js +290 -0
- package/dist/lib/components/task/task-list.component.js.map +1 -0
- package/dist/lib/components/tasks/tasks-dropdown.component.d.ts +27 -0
- package/dist/lib/components/tasks/tasks-dropdown.component.d.ts.map +1 -0
- package/dist/lib/components/tasks/tasks-dropdown.component.js +254 -0
- package/dist/lib/components/tasks/tasks-dropdown.component.js.map +1 -0
- package/dist/lib/components/thread/thread-panel.component.d.ts +65 -0
- package/dist/lib/components/thread/thread-panel.component.d.ts.map +1 -0
- package/dist/lib/components/thread/thread-panel.component.js +325 -0
- package/dist/lib/components/thread/thread-panel.component.js.map +1 -0
- package/dist/lib/components/toast/toast.component.d.ts +26 -0
- package/dist/lib/components/toast/toast.component.d.ts.map +1 -0
- package/dist/lib/components/toast/toast.component.js +108 -0
- package/dist/lib/components/toast/toast.component.js.map +1 -0
- package/dist/lib/components/workspace/conversation-workspace.component.d.ts +75 -0
- package/dist/lib/components/workspace/conversation-workspace.component.d.ts.map +1 -0
- package/dist/lib/components/workspace/conversation-workspace.component.js +299 -0
- package/dist/lib/components/workspace/conversation-workspace.component.js.map +1 -0
- package/dist/lib/conversations.module.d.ts +62 -0
- package/dist/lib/conversations.module.d.ts.map +1 -0
- package/dist/lib/conversations.module.js +248 -0
- package/dist/lib/conversations.module.js.map +1 -0
- package/dist/lib/directives/search-shortcut.directive.d.ts +17 -0
- package/dist/lib/directives/search-shortcut.directive.d.ts.map +1 -0
- package/dist/lib/directives/search-shortcut.directive.js +39 -0
- package/dist/lib/directives/search-shortcut.directive.js.map +1 -0
- package/dist/lib/models/conversation-state.model.d.ts +72 -0
- package/dist/lib/models/conversation-state.model.d.ts.map +1 -0
- package/dist/lib/models/conversation-state.model.js +2 -0
- package/dist/lib/models/conversation-state.model.js.map +1 -0
- package/dist/lib/models/notification.model.d.ts +89 -0
- package/dist/lib/models/notification.model.d.ts.map +1 -0
- package/dist/lib/models/notification.model.js +11 -0
- package/dist/lib/models/notification.model.js.map +1 -0
- package/dist/lib/services/active-tasks.service.d.ts +65 -0
- package/dist/lib/services/active-tasks.service.d.ts.map +1 -0
- package/dist/lib/services/active-tasks.service.js +95 -0
- package/dist/lib/services/active-tasks.service.js.map +1 -0
- package/dist/lib/services/agent-state.service.d.ts +78 -0
- package/dist/lib/services/agent-state.service.d.ts.map +1 -0
- package/dist/lib/services/agent-state.service.js +213 -0
- package/dist/lib/services/agent-state.service.js.map +1 -0
- package/dist/lib/services/artifact-state.service.d.ts +114 -0
- package/dist/lib/services/artifact-state.service.d.ts.map +1 -0
- package/dist/lib/services/artifact-state.service.js +288 -0
- package/dist/lib/services/artifact-state.service.js.map +1 -0
- package/dist/lib/services/conversation-agent.service.d.ts +79 -0
- package/dist/lib/services/conversation-agent.service.d.ts.map +1 -0
- package/dist/lib/services/conversation-agent.service.js +259 -0
- package/dist/lib/services/conversation-agent.service.js.map +1 -0
- package/dist/lib/services/conversation-state.service.d.ts +122 -0
- package/dist/lib/services/conversation-state.service.d.ts.map +1 -0
- package/dist/lib/services/conversation-state.service.js +255 -0
- package/dist/lib/services/conversation-state.service.js.map +1 -0
- package/dist/lib/services/dialog.service.d.ts +54 -0
- package/dist/lib/services/dialog.service.d.ts.map +1 -0
- package/dist/lib/services/dialog.service.js +157 -0
- package/dist/lib/services/dialog.service.js.map +1 -0
- package/dist/lib/services/export.service.d.ts +25 -0
- package/dist/lib/services/export.service.d.ts.map +1 -0
- package/dist/lib/services/export.service.js +237 -0
- package/dist/lib/services/export.service.js.map +1 -0
- package/dist/lib/services/mention-autocomplete.service.d.ts +59 -0
- package/dist/lib/services/mention-autocomplete.service.d.ts.map +1 -0
- package/dist/lib/services/mention-autocomplete.service.js +160 -0
- package/dist/lib/services/mention-autocomplete.service.js.map +1 -0
- package/dist/lib/services/mention-parser.service.d.ts +46 -0
- package/dist/lib/services/mention-parser.service.d.ts.map +1 -0
- package/dist/lib/services/mention-parser.service.js +156 -0
- package/dist/lib/services/mention-parser.service.js.map +1 -0
- package/dist/lib/services/notification.service.d.ts +108 -0
- package/dist/lib/services/notification.service.d.ts.map +1 -0
- package/dist/lib/services/notification.service.js +431 -0
- package/dist/lib/services/notification.service.js.map +1 -0
- package/dist/lib/services/search.service.d.ts +144 -0
- package/dist/lib/services/search.service.d.ts.map +1 -0
- package/dist/lib/services/search.service.js +370 -0
- package/dist/lib/services/search.service.js.map +1 -0
- package/dist/lib/services/toast.service.d.ts +46 -0
- package/dist/lib/services/toast.service.d.ts.map +1 -0
- package/dist/lib/services/toast.service.js +76 -0
- package/dist/lib/services/toast.service.js.map +1 -0
- package/dist/public-api.d.ts +42 -0
- package/dist/public-api.d.ts.map +1 -0
- package/dist/public-api.js +49 -0
- package/dist/public-api.js.map +1 -0
- package/package.json +54 -0
|
@@ -0,0 +1,213 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import { BehaviorSubject, interval } from 'rxjs';
|
|
3
|
+
import { map, shareReplay, switchMap } from 'rxjs/operators';
|
|
4
|
+
import { RunView } from '@memberjunction/core';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
/**
|
|
7
|
+
* Manages agent state and provides real-time updates for active agents
|
|
8
|
+
* Polls for agent status changes and provides reactive streams
|
|
9
|
+
*/
|
|
10
|
+
export class AgentStateService {
|
|
11
|
+
_activeAgents$ = new BehaviorSubject([]);
|
|
12
|
+
pollSubscription;
|
|
13
|
+
currentUser;
|
|
14
|
+
pollInterval = 30000; // Poll every 30 seconds (reduced from 3s to minimize DB load)
|
|
15
|
+
// Public observable streams
|
|
16
|
+
activeAgents$ = this._activeAgents$.asObservable();
|
|
17
|
+
constructor() { }
|
|
18
|
+
ngOnDestroy() {
|
|
19
|
+
this.stopPolling();
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Starts polling for active agents
|
|
23
|
+
* @param currentUser The current user context
|
|
24
|
+
* @param conversationId Optional conversation ID to filter by
|
|
25
|
+
*/
|
|
26
|
+
startPolling(currentUser, conversationId) {
|
|
27
|
+
this.currentUser = currentUser;
|
|
28
|
+
this.stopPolling();
|
|
29
|
+
// Initial load
|
|
30
|
+
this.loadActiveAgents(conversationId);
|
|
31
|
+
// Start polling
|
|
32
|
+
this.pollSubscription = interval(this.pollInterval)
|
|
33
|
+
.pipe(switchMap(() => this.loadActiveAgents(conversationId)))
|
|
34
|
+
.subscribe();
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Stops polling for active agents
|
|
38
|
+
*/
|
|
39
|
+
stopPolling() {
|
|
40
|
+
if (this.pollSubscription) {
|
|
41
|
+
this.pollSubscription.unsubscribe();
|
|
42
|
+
this.pollSubscription = undefined;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Gets active agents as an observable
|
|
47
|
+
* @param conversationId Optional conversation ID to filter by
|
|
48
|
+
*/
|
|
49
|
+
getActiveAgents(conversationId) {
|
|
50
|
+
if (conversationId) {
|
|
51
|
+
return this.activeAgents$.pipe(map(agents => agents.filter(a => a.run.ConversationID === conversationId)), shareReplay(1));
|
|
52
|
+
}
|
|
53
|
+
return this.activeAgents$;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Gets a specific agent by ID
|
|
57
|
+
* @param agentRunId The agent run ID
|
|
58
|
+
*/
|
|
59
|
+
getAgent(agentRunId) {
|
|
60
|
+
return this._activeAgents$.value.find(a => a.run.ID === agentRunId);
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Manually refreshes active agents
|
|
64
|
+
* @param conversationId Optional conversation ID to filter by
|
|
65
|
+
*/
|
|
66
|
+
async refresh(conversationId) {
|
|
67
|
+
await this.loadActiveAgents(conversationId);
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Loads active agents from the database
|
|
71
|
+
*/
|
|
72
|
+
async loadActiveAgents(conversationId) {
|
|
73
|
+
if (!this.currentUser) {
|
|
74
|
+
return;
|
|
75
|
+
}
|
|
76
|
+
try {
|
|
77
|
+
const rv = new RunView();
|
|
78
|
+
// Valid statuses: Running, Completed, Paused, Failed, Cancelled
|
|
79
|
+
let filter = `Status IN ('Running', 'Paused')`;
|
|
80
|
+
if (conversationId) {
|
|
81
|
+
filter += ` AND ConversationID='${conversationId}'`;
|
|
82
|
+
}
|
|
83
|
+
const result = await rv.RunView({
|
|
84
|
+
EntityName: 'MJ: AI Agent Runs',
|
|
85
|
+
ExtraFilter: filter,
|
|
86
|
+
OrderBy: 'StartedAt DESC',
|
|
87
|
+
MaxRows: 50,
|
|
88
|
+
ResultType: 'entity_object'
|
|
89
|
+
}, this.currentUser);
|
|
90
|
+
if (result.Success) {
|
|
91
|
+
const runs = result.Results || [];
|
|
92
|
+
const agentsWithStatus = runs.map(run => this.mapRunToAgentWithStatus(run));
|
|
93
|
+
this._activeAgents$.next(agentsWithStatus);
|
|
94
|
+
// Stop polling if no active agents (optimization to reduce DB load)
|
|
95
|
+
if (runs.length === 0 && this.pollSubscription) {
|
|
96
|
+
this.stopPolling();
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
catch (error) {
|
|
101
|
+
console.error('Failed to load active agents:', error);
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Maps an agent run to include status and confidence information
|
|
106
|
+
*/
|
|
107
|
+
mapRunToAgentWithStatus(run) {
|
|
108
|
+
const status = this.determineAgentStatus(run);
|
|
109
|
+
const confidence = this.extractConfidence(run);
|
|
110
|
+
return {
|
|
111
|
+
run,
|
|
112
|
+
status,
|
|
113
|
+
confidence
|
|
114
|
+
};
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Determines the agent status based on the run entity
|
|
118
|
+
*/
|
|
119
|
+
determineAgentStatus(run) {
|
|
120
|
+
const status = run.Status?.toLowerCase() || 'running';
|
|
121
|
+
// Check for errors
|
|
122
|
+
if (status === 'error' || status === 'failed') {
|
|
123
|
+
return 'error';
|
|
124
|
+
}
|
|
125
|
+
// Check for completion
|
|
126
|
+
if (status === 'completed' || status === 'complete' || status === 'success') {
|
|
127
|
+
return 'completed';
|
|
128
|
+
}
|
|
129
|
+
// Determine stage based on progress or elapsed time
|
|
130
|
+
if (run.StartedAt) {
|
|
131
|
+
const elapsed = Date.now() - new Date(run.StartedAt).getTime();
|
|
132
|
+
const seconds = elapsed / 1000;
|
|
133
|
+
// First 5 seconds: acknowledging
|
|
134
|
+
if (seconds < 5) {
|
|
135
|
+
return 'acknowledging';
|
|
136
|
+
}
|
|
137
|
+
// Check if nearing completion (has results or output)
|
|
138
|
+
if (run.Result || run.Status === 'Completed') {
|
|
139
|
+
// If there's output, likely completing
|
|
140
|
+
return 'completing';
|
|
141
|
+
}
|
|
142
|
+
// Otherwise, working
|
|
143
|
+
return 'working';
|
|
144
|
+
}
|
|
145
|
+
// Default to acknowledging if just started
|
|
146
|
+
return 'acknowledging';
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* Extracts confidence score from agent run if available
|
|
150
|
+
*/
|
|
151
|
+
extractConfidence(run) {
|
|
152
|
+
// Try to parse confidence from Result or other fields
|
|
153
|
+
// This is a placeholder - adjust based on actual data structure
|
|
154
|
+
try {
|
|
155
|
+
if (run.Result) {
|
|
156
|
+
const result = typeof run.Result === 'string' ? JSON.parse(run.Result) : run.Result;
|
|
157
|
+
if (result.confidence != null) {
|
|
158
|
+
return parseFloat(result.confidence);
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
catch {
|
|
163
|
+
// Ignore parse errors
|
|
164
|
+
}
|
|
165
|
+
return null;
|
|
166
|
+
}
|
|
167
|
+
/**
|
|
168
|
+
* Cancels an agent run
|
|
169
|
+
* @param agentRunId The agent run ID to cancel
|
|
170
|
+
*/
|
|
171
|
+
async cancelAgent(agentRunId) {
|
|
172
|
+
if (!this.currentUser) {
|
|
173
|
+
return false;
|
|
174
|
+
}
|
|
175
|
+
try {
|
|
176
|
+
const agent = this.getAgent(agentRunId);
|
|
177
|
+
if (!agent) {
|
|
178
|
+
return false;
|
|
179
|
+
}
|
|
180
|
+
agent.run.Status = 'Cancelled';
|
|
181
|
+
const saved = await agent.run.Save();
|
|
182
|
+
if (saved) {
|
|
183
|
+
// Refresh the active agents list
|
|
184
|
+
await this.refresh();
|
|
185
|
+
return true;
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
catch (error) {
|
|
189
|
+
console.error('Failed to cancel agent:', error);
|
|
190
|
+
}
|
|
191
|
+
return false;
|
|
192
|
+
}
|
|
193
|
+
/**
|
|
194
|
+
* Updates the poll interval
|
|
195
|
+
* @param milliseconds The new poll interval in milliseconds
|
|
196
|
+
*/
|
|
197
|
+
setPollInterval(milliseconds) {
|
|
198
|
+
this.pollInterval = milliseconds;
|
|
199
|
+
// Restart polling if currently active
|
|
200
|
+
if (this.pollSubscription && this.currentUser) {
|
|
201
|
+
this.startPolling(this.currentUser);
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
static ɵfac = function AgentStateService_Factory(t) { return new (t || AgentStateService)(); };
|
|
205
|
+
static ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: AgentStateService, factory: AgentStateService.ɵfac, providedIn: 'root' });
|
|
206
|
+
}
|
|
207
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(AgentStateService, [{
|
|
208
|
+
type: Injectable,
|
|
209
|
+
args: [{
|
|
210
|
+
providedIn: 'root'
|
|
211
|
+
}]
|
|
212
|
+
}], () => [], null); })();
|
|
213
|
+
//# sourceMappingURL=agent-state.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-state.service.js","sourceRoot":"","sources":["../../../src/lib/services/agent-state.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
import { Observable } from 'rxjs';
|
|
2
|
+
import { ArtifactEntity } from '@memberjunction/core-entities';
|
|
3
|
+
import { UserInfo } from '@memberjunction/core';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
/**
|
|
6
|
+
* State management for artifacts and the artifact panel
|
|
7
|
+
* Handles artifact CRUD operations and caching
|
|
8
|
+
*/
|
|
9
|
+
export declare class ArtifactStateService {
|
|
10
|
+
private _activeArtifactId$;
|
|
11
|
+
private _activeVersionNumber$;
|
|
12
|
+
private _artifacts$;
|
|
13
|
+
private _isPanelOpen$;
|
|
14
|
+
private _panelMode$;
|
|
15
|
+
readonly activeArtifactId$: Observable<string | null>;
|
|
16
|
+
readonly activeVersionNumber$: Observable<number | null>;
|
|
17
|
+
readonly isPanelOpen$: Observable<boolean>;
|
|
18
|
+
readonly panelMode$: Observable<"view" | "edit">;
|
|
19
|
+
readonly activeArtifact$: Observable<ArtifactEntity | null>;
|
|
20
|
+
constructor();
|
|
21
|
+
/**
|
|
22
|
+
* Opens an artifact in the panel
|
|
23
|
+
* @param id The artifact ID
|
|
24
|
+
* @param versionNumber Optional specific version number
|
|
25
|
+
*/
|
|
26
|
+
openArtifact(id: string, versionNumber?: number): void;
|
|
27
|
+
/**
|
|
28
|
+
* Closes the artifact panel
|
|
29
|
+
*/
|
|
30
|
+
closeArtifact(): void;
|
|
31
|
+
/**
|
|
32
|
+
* Toggles the panel open/closed state
|
|
33
|
+
*/
|
|
34
|
+
togglePanel(): void;
|
|
35
|
+
/**
|
|
36
|
+
* Sets the panel mode
|
|
37
|
+
* @param mode The mode ('view' or 'edit')
|
|
38
|
+
*/
|
|
39
|
+
setPanelMode(mode: 'view' | 'edit'): void;
|
|
40
|
+
/**
|
|
41
|
+
* Caches an artifact in memory
|
|
42
|
+
* @param artifact The artifact to cache
|
|
43
|
+
*/
|
|
44
|
+
cacheArtifact(artifact: ArtifactEntity): void;
|
|
45
|
+
/**
|
|
46
|
+
* Removes an artifact from cache
|
|
47
|
+
* @param id The artifact ID
|
|
48
|
+
*/
|
|
49
|
+
removeCachedArtifact(id: string): void;
|
|
50
|
+
/**
|
|
51
|
+
* Clears all cached artifacts
|
|
52
|
+
*/
|
|
53
|
+
clearCache(): void;
|
|
54
|
+
/**
|
|
55
|
+
* Loads artifacts for a conversation
|
|
56
|
+
* @param conversationId The conversation ID
|
|
57
|
+
* @param currentUser The current user context
|
|
58
|
+
* @returns Array of artifacts
|
|
59
|
+
*/
|
|
60
|
+
loadArtifactsForConversation(conversationId: string, currentUser: UserInfo): Promise<ArtifactEntity[]>;
|
|
61
|
+
/**
|
|
62
|
+
* Loads artifacts for a collection
|
|
63
|
+
* @param collectionId The collection ID
|
|
64
|
+
* @param currentUser The current user context
|
|
65
|
+
* @returns Array of artifacts
|
|
66
|
+
*/
|
|
67
|
+
loadArtifactsForCollection(collectionId: string, currentUser: UserInfo): Promise<ArtifactEntity[]>;
|
|
68
|
+
/**
|
|
69
|
+
* Loads a single artifact by ID
|
|
70
|
+
* @param id The artifact ID
|
|
71
|
+
* @param currentUser The current user context
|
|
72
|
+
* @returns The artifact entity or null
|
|
73
|
+
*/
|
|
74
|
+
loadArtifact(id: string, currentUser: UserInfo): Promise<ArtifactEntity | null>;
|
|
75
|
+
/**
|
|
76
|
+
* Creates a new artifact
|
|
77
|
+
* @param data Artifact data
|
|
78
|
+
* @param currentUser The current user context
|
|
79
|
+
* @returns The created artifact
|
|
80
|
+
*/
|
|
81
|
+
createArtifact(data: Partial<ArtifactEntity>, currentUser: UserInfo): Promise<ArtifactEntity>;
|
|
82
|
+
/**
|
|
83
|
+
* Updates an artifact
|
|
84
|
+
* @param id The artifact ID
|
|
85
|
+
* @param updates The fields to update
|
|
86
|
+
* @param currentUser The current user context
|
|
87
|
+
* @returns True if successful
|
|
88
|
+
*/
|
|
89
|
+
updateArtifact(id: string, updates: Partial<ArtifactEntity>, currentUser: UserInfo): Promise<boolean>;
|
|
90
|
+
/**
|
|
91
|
+
* Deletes an artifact
|
|
92
|
+
* @param id The artifact ID
|
|
93
|
+
* @param currentUser The current user context
|
|
94
|
+
* @returns True if successful
|
|
95
|
+
*/
|
|
96
|
+
deleteArtifact(id: string, currentUser: UserInfo): Promise<boolean>;
|
|
97
|
+
/**
|
|
98
|
+
* Adds an artifact to a collection
|
|
99
|
+
* @param artifactId The artifact ID
|
|
100
|
+
* @param collectionId The collection ID
|
|
101
|
+
* @param currentUser The current user context
|
|
102
|
+
*/
|
|
103
|
+
addToCollection(artifactId: string, collectionId: string, currentUser: UserInfo): Promise<void>;
|
|
104
|
+
/**
|
|
105
|
+
* Removes an artifact from a collection
|
|
106
|
+
* @param artifactId The artifact ID
|
|
107
|
+
* @param collectionId The collection ID
|
|
108
|
+
* @param currentUser The current user context
|
|
109
|
+
*/
|
|
110
|
+
removeFromCollection(artifactId: string, collectionId: string, currentUser: UserInfo): Promise<void>;
|
|
111
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<ArtifactStateService, never>;
|
|
112
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<ArtifactStateService>;
|
|
113
|
+
}
|
|
114
|
+
//# sourceMappingURL=artifact-state.service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"artifact-state.service.d.ts","sourceRoot":"","sources":["../../../src/lib/services/artifact-state.service.ts"],"names":[],"mappings":"AACA,OAAO,EAAmB,UAAU,EAAiB,MAAM,MAAM,CAAC;AAElE,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EAAqB,QAAQ,EAAE,MAAM,sBAAsB,CAAC;;AAEnE;;;GAGG;AACH,qBAGa,oBAAoB;IAC/B,OAAO,CAAC,kBAAkB,CAA4C;IACtE,OAAO,CAAC,qBAAqB,CAA4C;IACzE,OAAO,CAAC,WAAW,CAA+D;IAClF,OAAO,CAAC,aAAa,CAAuC;IAC5D,OAAO,CAAC,WAAW,CAAgD;IAGnE,SAAgB,iBAAiB,4BAA0C;IAC3E,SAAgB,oBAAoB,4BAA6C;IACjF,SAAgB,YAAY,sBAAqC;IACjE,SAAgB,UAAU,8BAAmC;IAG7D,SAAgB,eAAe,EAAE,UAAU,CAAC,cAAc,GAAG,IAAI,CAAC,CAMhE;;IAIF;;;;OAIG;IACH,YAAY,CAAC,EAAE,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI;IAMtD;;OAEG;IACH,aAAa,IAAI,IAAI;IAOrB;;OAEG;IACH,WAAW,IAAI,IAAI;IAInB;;;OAGG;IACH,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAIzC;;;OAGG;IACH,aAAa,CAAC,QAAQ,EAAE,cAAc,GAAG,IAAI;IAM7C;;;OAGG;IACH,oBAAoB,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAMtC;;OAEG;IACH,UAAU,IAAI,IAAI;IAIlB;;;;;OAKG;IACG,4BAA4B,CAAC,cAAc,EAAE,MAAM,EAAE,WAAW,EAAE,QAAQ,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IA0B5G;;;;;OAKG;IACG,0BAA0B,CAAC,YAAY,EAAE,MAAM,EAAE,WAAW,EAAE,QAAQ,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IA0CxG;;;;;OAKG;IACG,YAAY,CAAC,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,QAAQ,GAAG,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;IAiBrF;;;;;OAKG;IACG,cAAc,CAAC,IAAI,EAAE,OAAO,CAAC,cAAc,CAAC,EAAE,WAAW,EAAE,QAAQ,GAAG,OAAO,CAAC,cAAc,CAAC;IAenG;;;;;;OAMG;IACG,cAAc,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,cAAc,CAAC,EAAE,WAAW,EAAE,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC;IAoB3G;;;;;OAKG;IACG,cAAc,CAAC,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC;IAqBzE;;;;;OAKG;IACG,eAAe,CAAC,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,WAAW,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAarG;;;;;OAKG;IACG,oBAAoB,CAAC,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,WAAW,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;yCAlS/F,oBAAoB;6CAApB,oBAAoB;CAsThC"}
|
|
@@ -0,0 +1,288 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import { BehaviorSubject, combineLatest } from 'rxjs';
|
|
3
|
+
import { map, shareReplay } from 'rxjs/operators';
|
|
4
|
+
import { Metadata, RunView } from '@memberjunction/core';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
/**
|
|
7
|
+
* State management for artifacts and the artifact panel
|
|
8
|
+
* Handles artifact CRUD operations and caching
|
|
9
|
+
*/
|
|
10
|
+
export class ArtifactStateService {
|
|
11
|
+
_activeArtifactId$ = new BehaviorSubject(null);
|
|
12
|
+
_activeVersionNumber$ = new BehaviorSubject(null);
|
|
13
|
+
_artifacts$ = new BehaviorSubject(new Map());
|
|
14
|
+
_isPanelOpen$ = new BehaviorSubject(false);
|
|
15
|
+
_panelMode$ = new BehaviorSubject('view');
|
|
16
|
+
// Public observable streams
|
|
17
|
+
activeArtifactId$ = this._activeArtifactId$.asObservable();
|
|
18
|
+
activeVersionNumber$ = this._activeVersionNumber$.asObservable();
|
|
19
|
+
isPanelOpen$ = this._isPanelOpen$.asObservable();
|
|
20
|
+
panelMode$ = this._panelMode$.asObservable();
|
|
21
|
+
// Derived observable for active artifact
|
|
22
|
+
activeArtifact$ = combineLatest([
|
|
23
|
+
this.activeArtifactId$,
|
|
24
|
+
this._artifacts$
|
|
25
|
+
]).pipe(map(([id, artifacts]) => id ? artifacts.get(id) || null : null), shareReplay(1));
|
|
26
|
+
constructor() { }
|
|
27
|
+
/**
|
|
28
|
+
* Opens an artifact in the panel
|
|
29
|
+
* @param id The artifact ID
|
|
30
|
+
* @param versionNumber Optional specific version number
|
|
31
|
+
*/
|
|
32
|
+
openArtifact(id, versionNumber) {
|
|
33
|
+
this._activeArtifactId$.next(id);
|
|
34
|
+
this._activeVersionNumber$.next(versionNumber || null);
|
|
35
|
+
this._isPanelOpen$.next(true);
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Closes the artifact panel
|
|
39
|
+
*/
|
|
40
|
+
closeArtifact() {
|
|
41
|
+
this._activeArtifactId$.next(null);
|
|
42
|
+
this._activeVersionNumber$.next(null);
|
|
43
|
+
this._isPanelOpen$.next(false);
|
|
44
|
+
this._panelMode$.next('view');
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Toggles the panel open/closed state
|
|
48
|
+
*/
|
|
49
|
+
togglePanel() {
|
|
50
|
+
this._isPanelOpen$.next(!this._isPanelOpen$.value);
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Sets the panel mode
|
|
54
|
+
* @param mode The mode ('view' or 'edit')
|
|
55
|
+
*/
|
|
56
|
+
setPanelMode(mode) {
|
|
57
|
+
this._panelMode$.next(mode);
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Caches an artifact in memory
|
|
61
|
+
* @param artifact The artifact to cache
|
|
62
|
+
*/
|
|
63
|
+
cacheArtifact(artifact) {
|
|
64
|
+
const current = this._artifacts$.value;
|
|
65
|
+
current.set(artifact.ID, artifact);
|
|
66
|
+
this._artifacts$.next(new Map(current));
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Removes an artifact from cache
|
|
70
|
+
* @param id The artifact ID
|
|
71
|
+
*/
|
|
72
|
+
removeCachedArtifact(id) {
|
|
73
|
+
const current = this._artifacts$.value;
|
|
74
|
+
current.delete(id);
|
|
75
|
+
this._artifacts$.next(new Map(current));
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Clears all cached artifacts
|
|
79
|
+
*/
|
|
80
|
+
clearCache() {
|
|
81
|
+
this._artifacts$.next(new Map());
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Loads artifacts for a conversation
|
|
85
|
+
* @param conversationId The conversation ID
|
|
86
|
+
* @param currentUser The current user context
|
|
87
|
+
* @returns Array of artifacts
|
|
88
|
+
*/
|
|
89
|
+
async loadArtifactsForConversation(conversationId, currentUser) {
|
|
90
|
+
try {
|
|
91
|
+
const rv = new RunView();
|
|
92
|
+
const result = await rv.RunView({
|
|
93
|
+
EntityName: 'MJ: Artifacts',
|
|
94
|
+
ExtraFilter: `ConversationID='${conversationId}'`,
|
|
95
|
+
OrderBy: '__mj_CreatedAt DESC',
|
|
96
|
+
MaxRows: 1000,
|
|
97
|
+
ResultType: 'entity_object'
|
|
98
|
+
}, currentUser);
|
|
99
|
+
if (result.Success && result.Results) {
|
|
100
|
+
// Cache all artifacts
|
|
101
|
+
result.Results.forEach(artifact => this.cacheArtifact(artifact));
|
|
102
|
+
return result.Results;
|
|
103
|
+
}
|
|
104
|
+
return [];
|
|
105
|
+
}
|
|
106
|
+
catch (error) {
|
|
107
|
+
console.error('Error loading artifacts:', error);
|
|
108
|
+
return [];
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Loads artifacts for a collection
|
|
113
|
+
* @param collectionId The collection ID
|
|
114
|
+
* @param currentUser The current user context
|
|
115
|
+
* @returns Array of artifacts
|
|
116
|
+
*/
|
|
117
|
+
async loadArtifactsForCollection(collectionId, currentUser) {
|
|
118
|
+
try {
|
|
119
|
+
const rv = new RunView();
|
|
120
|
+
// Need to load through Collection Artifacts junction table
|
|
121
|
+
const result = await rv.RunView({
|
|
122
|
+
EntityName: 'MJ: Collection Artifacts',
|
|
123
|
+
ExtraFilter: `CollectionID='${collectionId}'`,
|
|
124
|
+
OrderBy: '__mj_CreatedAt DESC',
|
|
125
|
+
MaxRows: 1000,
|
|
126
|
+
ResultType: 'entity_object'
|
|
127
|
+
}, currentUser);
|
|
128
|
+
if (result.Success && result.Results) {
|
|
129
|
+
// Load full artifact entities
|
|
130
|
+
const artifactIds = result.Results.map((ca) => ca.ArtifactID);
|
|
131
|
+
if (artifactIds.length === 0)
|
|
132
|
+
return [];
|
|
133
|
+
const artifactsResult = await rv.RunView({
|
|
134
|
+
EntityName: 'MJ: Artifacts',
|
|
135
|
+
ExtraFilter: `ID IN ('${artifactIds.join("','")}')`,
|
|
136
|
+
OrderBy: '__mj_CreatedAt DESC',
|
|
137
|
+
ResultType: 'entity_object'
|
|
138
|
+
}, currentUser);
|
|
139
|
+
if (artifactsResult.Success && artifactsResult.Results) {
|
|
140
|
+
artifactsResult.Results.forEach(artifact => this.cacheArtifact(artifact));
|
|
141
|
+
return artifactsResult.Results;
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
return [];
|
|
145
|
+
}
|
|
146
|
+
catch (error) {
|
|
147
|
+
console.error('Error loading collection artifacts:', error);
|
|
148
|
+
return [];
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* Loads a single artifact by ID
|
|
153
|
+
* @param id The artifact ID
|
|
154
|
+
* @param currentUser The current user context
|
|
155
|
+
* @returns The artifact entity or null
|
|
156
|
+
*/
|
|
157
|
+
async loadArtifact(id, currentUser) {
|
|
158
|
+
try {
|
|
159
|
+
const md = new Metadata();
|
|
160
|
+
const artifact = await md.GetEntityObject('MJ: Artifacts', currentUser);
|
|
161
|
+
const loaded = await artifact.Load(id);
|
|
162
|
+
if (loaded) {
|
|
163
|
+
this.cacheArtifact(artifact);
|
|
164
|
+
return artifact;
|
|
165
|
+
}
|
|
166
|
+
return null;
|
|
167
|
+
}
|
|
168
|
+
catch (error) {
|
|
169
|
+
console.error('Error loading artifact:', error);
|
|
170
|
+
return null;
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
/**
|
|
174
|
+
* Creates a new artifact
|
|
175
|
+
* @param data Artifact data
|
|
176
|
+
* @param currentUser The current user context
|
|
177
|
+
* @returns The created artifact
|
|
178
|
+
*/
|
|
179
|
+
async createArtifact(data, currentUser) {
|
|
180
|
+
const md = new Metadata();
|
|
181
|
+
const artifact = await md.GetEntityObject('Artifacts', currentUser);
|
|
182
|
+
Object.assign(artifact, data);
|
|
183
|
+
const saved = await artifact.Save();
|
|
184
|
+
if (saved) {
|
|
185
|
+
this.cacheArtifact(artifact);
|
|
186
|
+
return artifact;
|
|
187
|
+
}
|
|
188
|
+
else {
|
|
189
|
+
throw new Error(artifact.LatestResult?.Message || 'Failed to create artifact');
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
/**
|
|
193
|
+
* Updates an artifact
|
|
194
|
+
* @param id The artifact ID
|
|
195
|
+
* @param updates The fields to update
|
|
196
|
+
* @param currentUser The current user context
|
|
197
|
+
* @returns True if successful
|
|
198
|
+
*/
|
|
199
|
+
async updateArtifact(id, updates, currentUser) {
|
|
200
|
+
const md = new Metadata();
|
|
201
|
+
const artifact = await md.GetEntityObject('Artifacts', currentUser);
|
|
202
|
+
const loaded = await artifact.Load(id);
|
|
203
|
+
if (!loaded) {
|
|
204
|
+
throw new Error('Artifact not found');
|
|
205
|
+
}
|
|
206
|
+
Object.assign(artifact, updates);
|
|
207
|
+
const saved = await artifact.Save();
|
|
208
|
+
if (saved) {
|
|
209
|
+
this.cacheArtifact(artifact);
|
|
210
|
+
return true;
|
|
211
|
+
}
|
|
212
|
+
else {
|
|
213
|
+
throw new Error(artifact.LatestResult?.Message || 'Failed to update artifact');
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
/**
|
|
217
|
+
* Deletes an artifact
|
|
218
|
+
* @param id The artifact ID
|
|
219
|
+
* @param currentUser The current user context
|
|
220
|
+
* @returns True if successful
|
|
221
|
+
*/
|
|
222
|
+
async deleteArtifact(id, currentUser) {
|
|
223
|
+
const md = new Metadata();
|
|
224
|
+
const artifact = await md.GetEntityObject('Artifacts', currentUser);
|
|
225
|
+
const loaded = await artifact.Load(id);
|
|
226
|
+
if (!loaded) {
|
|
227
|
+
throw new Error('Artifact not found');
|
|
228
|
+
}
|
|
229
|
+
const deleted = await artifact.Delete();
|
|
230
|
+
if (deleted) {
|
|
231
|
+
this.removeCachedArtifact(id);
|
|
232
|
+
if (this._activeArtifactId$.value === id) {
|
|
233
|
+
this.closeArtifact();
|
|
234
|
+
}
|
|
235
|
+
return true;
|
|
236
|
+
}
|
|
237
|
+
else {
|
|
238
|
+
throw new Error(artifact.LatestResult?.Message || 'Failed to delete artifact');
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
/**
|
|
242
|
+
* Adds an artifact to a collection
|
|
243
|
+
* @param artifactId The artifact ID
|
|
244
|
+
* @param collectionId The collection ID
|
|
245
|
+
* @param currentUser The current user context
|
|
246
|
+
*/
|
|
247
|
+
async addToCollection(artifactId, collectionId, currentUser) {
|
|
248
|
+
const md = new Metadata();
|
|
249
|
+
const collectionArtifact = await md.GetEntityObject('MJ: Collection Artifacts', currentUser);
|
|
250
|
+
collectionArtifact.CollectionID = collectionId;
|
|
251
|
+
collectionArtifact.ArtifactID = artifactId;
|
|
252
|
+
const saved = await collectionArtifact.Save();
|
|
253
|
+
if (!saved) {
|
|
254
|
+
throw new Error('Failed to add artifact to collection');
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
/**
|
|
258
|
+
* Removes an artifact from a collection
|
|
259
|
+
* @param artifactId The artifact ID
|
|
260
|
+
* @param collectionId The collection ID
|
|
261
|
+
* @param currentUser The current user context
|
|
262
|
+
*/
|
|
263
|
+
async removeFromCollection(artifactId, collectionId, currentUser) {
|
|
264
|
+
const rv = new RunView();
|
|
265
|
+
const result = await rv.RunView({
|
|
266
|
+
EntityName: 'MJ: Collection Artifacts',
|
|
267
|
+
ExtraFilter: `CollectionID='${collectionId}' AND ArtifactID='${artifactId}'`,
|
|
268
|
+
MaxRows: 1,
|
|
269
|
+
ResultType: 'entity_object'
|
|
270
|
+
}, currentUser);
|
|
271
|
+
if (result.Success && result.Results && result.Results.length > 0) {
|
|
272
|
+
const collectionArtifact = result.Results[0];
|
|
273
|
+
const deleted = await collectionArtifact.Delete();
|
|
274
|
+
if (!deleted) {
|
|
275
|
+
throw new Error('Failed to remove artifact from collection');
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
static ɵfac = function ArtifactStateService_Factory(t) { return new (t || ArtifactStateService)(); };
|
|
280
|
+
static ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: ArtifactStateService, factory: ArtifactStateService.ɵfac, providedIn: 'root' });
|
|
281
|
+
}
|
|
282
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ArtifactStateService, [{
|
|
283
|
+
type: Injectable,
|
|
284
|
+
args: [{
|
|
285
|
+
providedIn: 'root'
|
|
286
|
+
}]
|
|
287
|
+
}], () => [], null); })();
|
|
288
|
+
//# sourceMappingURL=artifact-state.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"artifact-state.service.js","sourceRoot":"","sources":["../../../src/lib/services/artifact-state.service.ts"],"names":[],"mappings":"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"}
|