@memberjunction/server 5.22.0 → 5.24.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 +35 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +11 -0
- package/dist/config.js.map +1 -1
- package/dist/generated/generated.d.ts +610 -4
- package/dist/generated/generated.d.ts.map +1 -1
- package/dist/generated/generated.js +17333 -13889
- package/dist/generated/generated.js.map +1 -1
- package/dist/generic/RunViewResolver.d.ts.map +1 -1
- package/dist/generic/RunViewResolver.js.map +1 -1
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -0
- package/dist/index.js.map +1 -1
- package/dist/resolvers/AutotagPipelineResolver.d.ts +30 -0
- package/dist/resolvers/AutotagPipelineResolver.d.ts.map +1 -0
- package/dist/resolvers/AutotagPipelineResolver.js +231 -0
- package/dist/resolvers/AutotagPipelineResolver.js.map +1 -0
- package/dist/resolvers/ClientToolRequestResolver.d.ts +43 -0
- package/dist/resolvers/ClientToolRequestResolver.d.ts.map +1 -0
- package/dist/resolvers/ClientToolRequestResolver.js +161 -0
- package/dist/resolvers/ClientToolRequestResolver.js.map +1 -0
- package/dist/resolvers/FetchEntityVectorsResolver.d.ts +29 -0
- package/dist/resolvers/FetchEntityVectorsResolver.d.ts.map +1 -0
- package/dist/resolvers/FetchEntityVectorsResolver.js +222 -0
- package/dist/resolvers/FetchEntityVectorsResolver.js.map +1 -0
- package/dist/resolvers/RunAIAgentResolver.d.ts +21 -0
- package/dist/resolvers/RunAIAgentResolver.d.ts.map +1 -1
- package/dist/resolvers/RunAIAgentResolver.js +75 -33
- package/dist/resolvers/RunAIAgentResolver.js.map +1 -1
- package/dist/resolvers/SearchKnowledgeResolver.d.ts +42 -1
- package/dist/resolvers/SearchKnowledgeResolver.d.ts.map +1 -1
- package/dist/resolvers/SearchKnowledgeResolver.js +239 -13
- package/dist/resolvers/SearchKnowledgeResolver.js.map +1 -1
- package/package.json +63 -63
- package/src/__tests__/search-knowledge-tags.test.ts +415 -0
- package/src/config.ts +11 -0
- package/src/generated/generated.ts +2373 -7
- package/src/generic/RunViewResolver.ts +1 -0
- package/src/index.ts +10 -0
- package/src/resolvers/AutotagPipelineResolver.ts +235 -0
- package/src/resolvers/ClientToolRequestResolver.ts +128 -0
- package/src/resolvers/FetchEntityVectorsResolver.ts +238 -0
- package/src/resolvers/RunAIAgentResolver.ts +97 -56
- package/src/resolvers/SearchKnowledgeResolver.ts +270 -13
|
@@ -0,0 +1,231 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
8
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
9
|
+
};
|
|
10
|
+
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
11
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
12
|
+
};
|
|
13
|
+
import { Resolver, Mutation, Ctx, Arg, ObjectType, Field } from 'type-graphql';
|
|
14
|
+
import { LogError, LogStatus, Metadata } from '@memberjunction/core';
|
|
15
|
+
import { ResolverBase } from '../generic/ResolverBase.js';
|
|
16
|
+
import { ActionEngineServer } from '@memberjunction/actions';
|
|
17
|
+
import { PubSubManager } from '../generic/PubSubManager.js';
|
|
18
|
+
import { v4 as uuidv4 } from 'uuid';
|
|
19
|
+
const PIPELINE_PROGRESS_TOPIC = 'PIPELINE_PROGRESS';
|
|
20
|
+
let AutotagPipelineResult = class AutotagPipelineResult {
|
|
21
|
+
};
|
|
22
|
+
__decorate([
|
|
23
|
+
Field(),
|
|
24
|
+
__metadata("design:type", Boolean)
|
|
25
|
+
], AutotagPipelineResult.prototype, "Success", void 0);
|
|
26
|
+
__decorate([
|
|
27
|
+
Field({ nullable: true }),
|
|
28
|
+
__metadata("design:type", String)
|
|
29
|
+
], AutotagPipelineResult.prototype, "Status", void 0);
|
|
30
|
+
__decorate([
|
|
31
|
+
Field({ nullable: true }),
|
|
32
|
+
__metadata("design:type", String)
|
|
33
|
+
], AutotagPipelineResult.prototype, "ErrorMessage", void 0);
|
|
34
|
+
__decorate([
|
|
35
|
+
Field({ nullable: true }),
|
|
36
|
+
__metadata("design:type", String)
|
|
37
|
+
], AutotagPipelineResult.prototype, "PipelineRunID", void 0);
|
|
38
|
+
AutotagPipelineResult = __decorate([
|
|
39
|
+
ObjectType()
|
|
40
|
+
], AutotagPipelineResult);
|
|
41
|
+
export { AutotagPipelineResult };
|
|
42
|
+
let AutotagPipelineResolver = class AutotagPipelineResolver extends ResolverBase {
|
|
43
|
+
async RunAutotagPipeline(contentSourceIDs, forceReprocess, { userPayload } = {}) {
|
|
44
|
+
try {
|
|
45
|
+
const currentUser = this.GetUserFromPayload(userPayload);
|
|
46
|
+
if (!currentUser) {
|
|
47
|
+
return { Success: false, Status: 'Error', ErrorMessage: 'Unable to determine current user' };
|
|
48
|
+
}
|
|
49
|
+
const pipelineRunID = uuidv4();
|
|
50
|
+
LogStatus(`RunAutotagPipeline: starting pipeline ${pipelineRunID}`);
|
|
51
|
+
// Fire-and-forget: start the pipeline in the background and return immediately
|
|
52
|
+
this.runPipelineInBackground(pipelineRunID, currentUser, contentSourceIDs, forceReprocess);
|
|
53
|
+
return {
|
|
54
|
+
Success: true,
|
|
55
|
+
Status: 'Started',
|
|
56
|
+
PipelineRunID: pipelineRunID,
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
catch (error) {
|
|
60
|
+
const msg = error instanceof Error ? error.message : String(error);
|
|
61
|
+
LogError(`RunAutotagPipeline mutation failed: ${msg}`);
|
|
62
|
+
return {
|
|
63
|
+
Success: false,
|
|
64
|
+
Status: 'Error',
|
|
65
|
+
ErrorMessage: msg
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Runs the autotag + vectorize pipeline in the background, publishing progress
|
|
71
|
+
* updates via PubSub so the client can subscribe via PipelineProgress.
|
|
72
|
+
*/
|
|
73
|
+
async runPipelineInBackground(pipelineRunID, currentUser, contentSourceIDs, forceReprocess) {
|
|
74
|
+
const startTime = Date.now();
|
|
75
|
+
try {
|
|
76
|
+
this.publishProgress(pipelineRunID, 'autotag', 0, 0, startTime, 'Initializing pipeline...');
|
|
77
|
+
await ActionEngineServer.Instance.Config(false, currentUser);
|
|
78
|
+
const action = ActionEngineServer.Instance.Actions.find(a => a.Name === 'Autotag and Vectorize Content');
|
|
79
|
+
if (!action) {
|
|
80
|
+
LogError(`RunAutotagPipeline: Action 'Autotag and Vectorize Content' not found`);
|
|
81
|
+
this.publishProgress(pipelineRunID, 'error', 0, 0, startTime, 'Autotag action not found');
|
|
82
|
+
return;
|
|
83
|
+
}
|
|
84
|
+
// Stage: autotagging — provide a progress callback that publishes per-item updates
|
|
85
|
+
this.publishProgress(pipelineRunID, 'autotag', 0, 0, startTime, 'Running autotaggers...');
|
|
86
|
+
const progressCallback = (processed, total, currentItem) => {
|
|
87
|
+
const pct = total > 0 ? Math.round((processed / total) * 80) : 0; // 0-80% for tagging
|
|
88
|
+
this.publishProgress(pipelineRunID, 'autotag', total, pct, startTime, currentItem || `${processed}/${total} items`);
|
|
89
|
+
};
|
|
90
|
+
// Build action params
|
|
91
|
+
const actionParams = [
|
|
92
|
+
{ Name: 'Autotag', Value: 1, Type: 'Input' },
|
|
93
|
+
{ Name: 'Vectorize', Value: 1, Type: 'Input' },
|
|
94
|
+
{ Name: '__progressCallback', Value: progressCallback, Type: 'Input' }
|
|
95
|
+
];
|
|
96
|
+
if (contentSourceIDs && contentSourceIDs.length > 0) {
|
|
97
|
+
actionParams.push({ Name: 'ContentSourceIDs', Value: contentSourceIDs, Type: 'Input' });
|
|
98
|
+
}
|
|
99
|
+
if (forceReprocess) {
|
|
100
|
+
actionParams.push({ Name: 'ForceReprocess', Value: 1, Type: 'Input' });
|
|
101
|
+
}
|
|
102
|
+
const result = await ActionEngineServer.Instance.RunAction({
|
|
103
|
+
Action: action,
|
|
104
|
+
ContextUser: currentUser,
|
|
105
|
+
Filters: [],
|
|
106
|
+
Params: actionParams
|
|
107
|
+
});
|
|
108
|
+
// Stage: vectorize complete
|
|
109
|
+
this.publishProgress(pipelineRunID, 'vectorize', 100, 90, startTime, 'Vectorizing content...');
|
|
110
|
+
if (result.Success) {
|
|
111
|
+
LogStatus(`RunAutotagPipeline: pipeline ${pipelineRunID} completed successfully`);
|
|
112
|
+
this.publishProgress(pipelineRunID, 'complete', 100, 100, startTime);
|
|
113
|
+
}
|
|
114
|
+
else {
|
|
115
|
+
LogError(`RunAutotagPipeline: pipeline ${pipelineRunID} failed: ${result.Message}`);
|
|
116
|
+
this.publishProgress(pipelineRunID, 'error', 0, 0, startTime, String(result.Message));
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
catch (error) {
|
|
120
|
+
const msg = error instanceof Error ? error.message : String(error);
|
|
121
|
+
LogError(`RunAutotagPipeline pipeline ${pipelineRunID} failed: ${msg}`);
|
|
122
|
+
this.publishProgress(pipelineRunID, 'error', 0, 0, startTime, msg);
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Pause a running classification pipeline by setting CancellationRequested on the process run.
|
|
127
|
+
* The engine checks this flag between batches and pauses gracefully.
|
|
128
|
+
*/
|
|
129
|
+
async PauseClassificationPipeline(processRunID, { userPayload } = {}) {
|
|
130
|
+
try {
|
|
131
|
+
const currentUser = this.GetUserFromPayload(userPayload);
|
|
132
|
+
if (!currentUser) {
|
|
133
|
+
return { Success: false, Status: 'Error', ErrorMessage: 'Unable to determine current user' };
|
|
134
|
+
}
|
|
135
|
+
const md = new Metadata();
|
|
136
|
+
const run = await md.GetEntityObject('MJ: Content Process Runs', currentUser);
|
|
137
|
+
const loaded = await run.Load(processRunID);
|
|
138
|
+
if (!loaded) {
|
|
139
|
+
return { Success: false, Status: 'Error', ErrorMessage: `Process run ${processRunID} not found` };
|
|
140
|
+
}
|
|
141
|
+
run.CancellationRequested = true;
|
|
142
|
+
await run.Save();
|
|
143
|
+
LogStatus(`PauseClassificationPipeline: Pause requested for run ${processRunID}`);
|
|
144
|
+
return { Success: true, Status: 'PauseRequested' };
|
|
145
|
+
}
|
|
146
|
+
catch (error) {
|
|
147
|
+
const msg = error instanceof Error ? error.message : String(error);
|
|
148
|
+
return { Success: false, Status: 'Error', ErrorMessage: msg };
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* Resume a paused classification pipeline from its last completed offset.
|
|
153
|
+
*/
|
|
154
|
+
async ResumeClassificationPipeline(processRunID, { userPayload } = {}) {
|
|
155
|
+
try {
|
|
156
|
+
const currentUser = this.GetUserFromPayload(userPayload);
|
|
157
|
+
if (!currentUser) {
|
|
158
|
+
return { Success: false, Status: 'Error', ErrorMessage: 'Unable to determine current user' };
|
|
159
|
+
}
|
|
160
|
+
const md = new Metadata();
|
|
161
|
+
const run = await md.GetEntityObject('MJ: Content Process Runs', currentUser);
|
|
162
|
+
const loaded = await run.Load(processRunID);
|
|
163
|
+
if (!loaded) {
|
|
164
|
+
return { Success: false, Status: 'Error', ErrorMessage: `Process run ${processRunID} not found` };
|
|
165
|
+
}
|
|
166
|
+
if (run.Status !== 'Paused') {
|
|
167
|
+
return { Success: false, Status: 'Error', ErrorMessage: `Run is not paused (Status: ${run.Status})` };
|
|
168
|
+
}
|
|
169
|
+
// Reset cancellation flag and set status back to Running
|
|
170
|
+
run.CancellationRequested = false;
|
|
171
|
+
run.Status = 'Running';
|
|
172
|
+
await run.Save();
|
|
173
|
+
// Fire-and-forget: resume pipeline in background from the last offset
|
|
174
|
+
const pipelineRunID = uuidv4();
|
|
175
|
+
LogStatus(`ResumeClassificationPipeline: Resuming run ${processRunID} from offset ${run.LastProcessedOffset}`);
|
|
176
|
+
this.runPipelineInBackground(pipelineRunID, currentUser, undefined, undefined);
|
|
177
|
+
return { Success: true, Status: 'Resumed', PipelineRunID: pipelineRunID };
|
|
178
|
+
}
|
|
179
|
+
catch (error) {
|
|
180
|
+
const msg = error instanceof Error ? error.message : String(error);
|
|
181
|
+
return { Success: false, Status: 'Error', ErrorMessage: msg };
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
/**
|
|
185
|
+
* Publish a progress update to the PipelineProgress subscription topic.
|
|
186
|
+
*/
|
|
187
|
+
publishProgress(pipelineRunID, stage, totalItems, processedItems, startTime, currentItem) {
|
|
188
|
+
const elapsedMs = Date.now() - startTime;
|
|
189
|
+
const percentComplete = totalItems > 0 ? Math.round((processedItems / totalItems) * 100) : 0;
|
|
190
|
+
const notification = {
|
|
191
|
+
PipelineRunID: pipelineRunID,
|
|
192
|
+
Stage: stage,
|
|
193
|
+
TotalItems: totalItems,
|
|
194
|
+
ProcessedItems: processedItems,
|
|
195
|
+
CurrentItem: currentItem,
|
|
196
|
+
ElapsedMs: elapsedMs,
|
|
197
|
+
PercentComplete: percentComplete,
|
|
198
|
+
};
|
|
199
|
+
PubSubManager.Instance.Publish(PIPELINE_PROGRESS_TOPIC, { ...notification });
|
|
200
|
+
}
|
|
201
|
+
};
|
|
202
|
+
__decorate([
|
|
203
|
+
Mutation(() => AutotagPipelineResult),
|
|
204
|
+
__param(0, Arg('contentSourceIDs', () => [String], { nullable: true })),
|
|
205
|
+
__param(1, Arg('forceReprocess', { nullable: true })),
|
|
206
|
+
__param(2, Ctx()),
|
|
207
|
+
__metadata("design:type", Function),
|
|
208
|
+
__metadata("design:paramtypes", [Array, Boolean, Object]),
|
|
209
|
+
__metadata("design:returntype", Promise)
|
|
210
|
+
], AutotagPipelineResolver.prototype, "RunAutotagPipeline", null);
|
|
211
|
+
__decorate([
|
|
212
|
+
Mutation(() => AutotagPipelineResult),
|
|
213
|
+
__param(0, Arg('processRunID')),
|
|
214
|
+
__param(1, Ctx()),
|
|
215
|
+
__metadata("design:type", Function),
|
|
216
|
+
__metadata("design:paramtypes", [String, Object]),
|
|
217
|
+
__metadata("design:returntype", Promise)
|
|
218
|
+
], AutotagPipelineResolver.prototype, "PauseClassificationPipeline", null);
|
|
219
|
+
__decorate([
|
|
220
|
+
Mutation(() => AutotagPipelineResult),
|
|
221
|
+
__param(0, Arg('processRunID')),
|
|
222
|
+
__param(1, Ctx()),
|
|
223
|
+
__metadata("design:type", Function),
|
|
224
|
+
__metadata("design:paramtypes", [String, Object]),
|
|
225
|
+
__metadata("design:returntype", Promise)
|
|
226
|
+
], AutotagPipelineResolver.prototype, "ResumeClassificationPipeline", null);
|
|
227
|
+
AutotagPipelineResolver = __decorate([
|
|
228
|
+
Resolver()
|
|
229
|
+
], AutotagPipelineResolver);
|
|
230
|
+
export { AutotagPipelineResolver };
|
|
231
|
+
//# sourceMappingURL=AutotagPipelineResolver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AutotagPipelineResolver.js","sourceRoot":"","sources":["../../src/resolvers/AutotagPipelineResolver.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview GraphQL resolver for client tool request/response communication.
|
|
3
|
+
*
|
|
4
|
+
* Provides:
|
|
5
|
+
* - Subscription: Client subscribes to receive tool requests for a session
|
|
6
|
+
* - Mutation: Client sends tool execution responses back to the server
|
|
7
|
+
* - Mutation: Client sends enriched tool definitions after decoration
|
|
8
|
+
*
|
|
9
|
+
* @module @memberjunction/server
|
|
10
|
+
*/
|
|
11
|
+
import { AppContext } from '../types.js';
|
|
12
|
+
import { ResolverBase } from '../generic/ResolverBase.js';
|
|
13
|
+
import { ClientToolRequestNotificationPayload } from '@memberjunction/ai-agents';
|
|
14
|
+
export declare class ClientToolRequestNotification {
|
|
15
|
+
AgentRunID: string;
|
|
16
|
+
SessionID: string;
|
|
17
|
+
RequestID: string;
|
|
18
|
+
ToolName: string;
|
|
19
|
+
/** JSON-encoded parameters */
|
|
20
|
+
Params: string;
|
|
21
|
+
TimeoutMs: number;
|
|
22
|
+
Description?: string;
|
|
23
|
+
}
|
|
24
|
+
export declare class ClientToolRequestResolver extends ResolverBase {
|
|
25
|
+
/**
|
|
26
|
+
* Subscribe to client tool requests for a specific session.
|
|
27
|
+
* The client listens on this subscription to know when an agent
|
|
28
|
+
* wants to invoke a browser-side tool.
|
|
29
|
+
*/
|
|
30
|
+
ClientToolRequest(notification: ClientToolRequestNotificationPayload, _sessionID: string): ClientToolRequestNotification;
|
|
31
|
+
/**
|
|
32
|
+
* Client sends the result of executing a client tool back to the server.
|
|
33
|
+
* This resolves the pending Promise in ClientToolRequestManager so the
|
|
34
|
+
* agent loop can continue.
|
|
35
|
+
*/
|
|
36
|
+
RespondToClientToolRequest(requestID: string, success: boolean, result: string | undefined, errorMessage: string | undefined, _context?: AppContext): Promise<boolean>;
|
|
37
|
+
/**
|
|
38
|
+
* Client sends enriched tool definitions after running decorators.
|
|
39
|
+
* The server stores them per session for LLM prompt injection.
|
|
40
|
+
*/
|
|
41
|
+
UpdateClientToolDefinitions(sessionID: string, toolsJson: string, _context?: AppContext): Promise<boolean>;
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=ClientToolRequestResolver.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ClientToolRequestResolver.d.ts","sourceRoot":"","sources":["../../src/resolvers/ClientToolRequestResolver.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAuD,oCAAoC,EAAE,MAAM,2BAA2B,CAAC;AAEtI,qBACa,6BAA6B;IAEtC,UAAU,EAAE,MAAM,CAAC;IAGnB,SAAS,EAAE,MAAM,CAAC;IAGlB,SAAS,EAAE,MAAM,CAAC;IAGlB,QAAQ,EAAE,MAAM,CAAC;IAEjB,8BAA8B;IAE9B,MAAM,EAAE,MAAM,CAAC;IAGf,SAAS,EAAE,MAAM,CAAC;IAGlB,WAAW,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,qBACa,yBAA0B,SAAQ,YAAY;IACvD;;;;OAIG;IAOH,iBAAiB,CACL,YAAY,EAAE,oCAAoC,EACxC,UAAU,EAAE,MAAM,GACrC,6BAA6B;IAYhC;;;;OAIG;IAEG,0BAA0B,CACV,SAAS,EAAE,MAAM,EACnB,OAAO,EAAE,OAAO,EACG,MAAM,EAAE,MAAM,GAAG,SAAS,EACpB,YAAY,EAAE,MAAM,GAAG,SAAS,EAClE,QAAQ,GAAE,UAA6B,GAC/C,OAAO,CAAC,OAAO,CAAC;IAoBnB;;;OAGG;IAEG,2BAA2B,CACX,SAAS,EAAE,MAAM,EACrB,SAAS,EAAE,MAAM,EACxB,QAAQ,GAAE,UAA6B,GAC/C,OAAO,CAAC,OAAO,CAAC;CAgBtB"}
|
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview GraphQL resolver for client tool request/response communication.
|
|
3
|
+
*
|
|
4
|
+
* Provides:
|
|
5
|
+
* - Subscription: Client subscribes to receive tool requests for a session
|
|
6
|
+
* - Mutation: Client sends tool execution responses back to the server
|
|
7
|
+
* - Mutation: Client sends enriched tool definitions after decoration
|
|
8
|
+
*
|
|
9
|
+
* @module @memberjunction/server
|
|
10
|
+
*/
|
|
11
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
12
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
13
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
14
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
15
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
16
|
+
};
|
|
17
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
18
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
19
|
+
};
|
|
20
|
+
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
21
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
22
|
+
};
|
|
23
|
+
import { Resolver, Subscription, Root, ObjectType, Field, Float, Mutation, Arg, Ctx } from 'type-graphql';
|
|
24
|
+
import { LogStatus, LogError } from '@memberjunction/core';
|
|
25
|
+
import { ResolverBase } from '../generic/ResolverBase.js';
|
|
26
|
+
import { ClientToolRequestManager, CLIENT_TOOL_REQUEST_TOPIC } from '@memberjunction/ai-agents';
|
|
27
|
+
let ClientToolRequestNotification = class ClientToolRequestNotification {
|
|
28
|
+
};
|
|
29
|
+
__decorate([
|
|
30
|
+
Field(),
|
|
31
|
+
__metadata("design:type", String)
|
|
32
|
+
], ClientToolRequestNotification.prototype, "AgentRunID", void 0);
|
|
33
|
+
__decorate([
|
|
34
|
+
Field(),
|
|
35
|
+
__metadata("design:type", String)
|
|
36
|
+
], ClientToolRequestNotification.prototype, "SessionID", void 0);
|
|
37
|
+
__decorate([
|
|
38
|
+
Field(),
|
|
39
|
+
__metadata("design:type", String)
|
|
40
|
+
], ClientToolRequestNotification.prototype, "RequestID", void 0);
|
|
41
|
+
__decorate([
|
|
42
|
+
Field(),
|
|
43
|
+
__metadata("design:type", String)
|
|
44
|
+
], ClientToolRequestNotification.prototype, "ToolName", void 0);
|
|
45
|
+
__decorate([
|
|
46
|
+
Field(),
|
|
47
|
+
__metadata("design:type", String)
|
|
48
|
+
], ClientToolRequestNotification.prototype, "Params", void 0);
|
|
49
|
+
__decorate([
|
|
50
|
+
Field(() => Float),
|
|
51
|
+
__metadata("design:type", Number)
|
|
52
|
+
], ClientToolRequestNotification.prototype, "TimeoutMs", void 0);
|
|
53
|
+
__decorate([
|
|
54
|
+
Field({ nullable: true }),
|
|
55
|
+
__metadata("design:type", String)
|
|
56
|
+
], ClientToolRequestNotification.prototype, "Description", void 0);
|
|
57
|
+
ClientToolRequestNotification = __decorate([
|
|
58
|
+
ObjectType()
|
|
59
|
+
], ClientToolRequestNotification);
|
|
60
|
+
export { ClientToolRequestNotification };
|
|
61
|
+
let ClientToolRequestResolver = class ClientToolRequestResolver extends ResolverBase {
|
|
62
|
+
/**
|
|
63
|
+
* Subscribe to client tool requests for a specific session.
|
|
64
|
+
* The client listens on this subscription to know when an agent
|
|
65
|
+
* wants to invoke a browser-side tool.
|
|
66
|
+
*/
|
|
67
|
+
ClientToolRequest(notification, _sessionID) {
|
|
68
|
+
return {
|
|
69
|
+
AgentRunID: notification.AgentRunID,
|
|
70
|
+
SessionID: notification.SessionID,
|
|
71
|
+
RequestID: notification.RequestID,
|
|
72
|
+
ToolName: notification.ToolName,
|
|
73
|
+
Params: notification.Params,
|
|
74
|
+
TimeoutMs: notification.TimeoutMs,
|
|
75
|
+
Description: notification.Description
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Client sends the result of executing a client tool back to the server.
|
|
80
|
+
* This resolves the pending Promise in ClientToolRequestManager so the
|
|
81
|
+
* agent loop can continue.
|
|
82
|
+
*/
|
|
83
|
+
async RespondToClientToolRequest(requestID, success, result, errorMessage, _context = {}) {
|
|
84
|
+
try {
|
|
85
|
+
const found = ClientToolRequestManager.Instance.ReceiveResponse({
|
|
86
|
+
RequestID: requestID,
|
|
87
|
+
Success: success,
|
|
88
|
+
Result: result ? JSON.parse(result) : undefined,
|
|
89
|
+
ErrorMessage: errorMessage
|
|
90
|
+
});
|
|
91
|
+
if (!found) {
|
|
92
|
+
LogError(`RespondToClientToolRequest: no pending request for ${requestID} (may have timed out)`);
|
|
93
|
+
}
|
|
94
|
+
return found;
|
|
95
|
+
}
|
|
96
|
+
catch (error) {
|
|
97
|
+
const msg = error instanceof Error ? error.message : String(error);
|
|
98
|
+
LogError(`RespondToClientToolRequest error: ${msg}`);
|
|
99
|
+
return false;
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Client sends enriched tool definitions after running decorators.
|
|
104
|
+
* The server stores them per session for LLM prompt injection.
|
|
105
|
+
*/
|
|
106
|
+
async UpdateClientToolDefinitions(sessionID, toolsJson, _context = {}) {
|
|
107
|
+
try {
|
|
108
|
+
const tools = JSON.parse(toolsJson);
|
|
109
|
+
if (!Array.isArray(tools)) {
|
|
110
|
+
LogError('UpdateClientToolDefinitions: tools must be a JSON array');
|
|
111
|
+
return false;
|
|
112
|
+
}
|
|
113
|
+
ClientToolRequestManager.Instance.SetSessionTools(sessionID, tools);
|
|
114
|
+
LogStatus(`UpdateClientToolDefinitions: stored ${tools.length} tools for session ${sessionID}`);
|
|
115
|
+
return true;
|
|
116
|
+
}
|
|
117
|
+
catch (error) {
|
|
118
|
+
const msg = error instanceof Error ? error.message : String(error);
|
|
119
|
+
LogError(`UpdateClientToolDefinitions error: ${msg}`);
|
|
120
|
+
return false;
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
};
|
|
124
|
+
__decorate([
|
|
125
|
+
Subscription(() => ClientToolRequestNotification, {
|
|
126
|
+
topics: CLIENT_TOOL_REQUEST_TOPIC,
|
|
127
|
+
filter: ({ payload, args }) => {
|
|
128
|
+
return payload.SessionID === args.sessionID;
|
|
129
|
+
},
|
|
130
|
+
}),
|
|
131
|
+
__param(0, Root()),
|
|
132
|
+
__param(1, Arg('sessionID')),
|
|
133
|
+
__metadata("design:type", Function),
|
|
134
|
+
__metadata("design:paramtypes", [Object, String]),
|
|
135
|
+
__metadata("design:returntype", ClientToolRequestNotification)
|
|
136
|
+
], ClientToolRequestResolver.prototype, "ClientToolRequest", null);
|
|
137
|
+
__decorate([
|
|
138
|
+
Mutation(() => Boolean),
|
|
139
|
+
__param(0, Arg('requestID')),
|
|
140
|
+
__param(1, Arg('success')),
|
|
141
|
+
__param(2, Arg('result', { nullable: true })),
|
|
142
|
+
__param(3, Arg('errorMessage', { nullable: true })),
|
|
143
|
+
__param(4, Ctx()),
|
|
144
|
+
__metadata("design:type", Function),
|
|
145
|
+
__metadata("design:paramtypes", [String, Boolean, String, String, Object]),
|
|
146
|
+
__metadata("design:returntype", Promise)
|
|
147
|
+
], ClientToolRequestResolver.prototype, "RespondToClientToolRequest", null);
|
|
148
|
+
__decorate([
|
|
149
|
+
Mutation(() => Boolean),
|
|
150
|
+
__param(0, Arg('sessionID')),
|
|
151
|
+
__param(1, Arg('tools')),
|
|
152
|
+
__param(2, Ctx()),
|
|
153
|
+
__metadata("design:type", Function),
|
|
154
|
+
__metadata("design:paramtypes", [String, String, Object]),
|
|
155
|
+
__metadata("design:returntype", Promise)
|
|
156
|
+
], ClientToolRequestResolver.prototype, "UpdateClientToolDefinitions", null);
|
|
157
|
+
ClientToolRequestResolver = __decorate([
|
|
158
|
+
Resolver()
|
|
159
|
+
], ClientToolRequestResolver);
|
|
160
|
+
export { ClientToolRequestResolver };
|
|
161
|
+
//# sourceMappingURL=ClientToolRequestResolver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ClientToolRequestResolver.js","sourceRoot":"","sources":["../../src/resolvers/ClientToolRequestResolver.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { AppContext } from '../types.js';
|
|
2
|
+
import { ResolverBase } from '../generic/ResolverBase.js';
|
|
3
|
+
export declare class EntityVectorItem {
|
|
4
|
+
ID: string;
|
|
5
|
+
Values: number[];
|
|
6
|
+
Metadata: string;
|
|
7
|
+
}
|
|
8
|
+
export declare class FetchEntityVectorsResult {
|
|
9
|
+
Success: boolean;
|
|
10
|
+
Results: EntityVectorItem[];
|
|
11
|
+
TotalCount: number;
|
|
12
|
+
ElapsedMs: number;
|
|
13
|
+
ErrorMessage?: string;
|
|
14
|
+
}
|
|
15
|
+
export declare class FetchEntityVectorsResolver extends ResolverBase {
|
|
16
|
+
FetchEntityVectors(entityDocumentID: string, maxRecords: number | undefined, filter: string | undefined, { userPayload }?: AppContext): Promise<FetchEntityVectorsResult>;
|
|
17
|
+
/** Load EntityDocument by ID */
|
|
18
|
+
private loadEntityDocument;
|
|
19
|
+
/**
|
|
20
|
+
* Resolve the VectorIndex for an EntityDocument.
|
|
21
|
+
* Prefers the explicit VectorIndexID on the EntityDocument; falls back to
|
|
22
|
+
* finding a VectorIndex by matching VectorDatabaseID + EmbeddingModelID.
|
|
23
|
+
*/
|
|
24
|
+
private resolveVectorIndex;
|
|
25
|
+
/** Create a VectorDBBase provider instance for a given VectorIndex */
|
|
26
|
+
private createVectorDBInstance;
|
|
27
|
+
private errorResult;
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=FetchEntityVectorsResolver.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FetchEntityVectorsResolver.d.ts","sourceRoot":"","sources":["../../src/resolvers/FetchEntityVectorsResolver.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAGzC,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAO1D,qBACa,gBAAgB;IAEzB,EAAE,EAAE,MAAM,CAAC;IAGX,MAAM,EAAE,MAAM,EAAE,CAAC;IAGjB,QAAQ,EAAE,MAAM,CAAC;CACpB;AAED,qBACa,wBAAwB;IAEjC,OAAO,EAAE,OAAO,CAAC;IAGjB,OAAO,EAAE,gBAAgB,EAAE,CAAC;IAG5B,UAAU,EAAE,MAAM,CAAC;IAGnB,SAAS,EAAE,MAAM,CAAC;IAGlB,YAAY,CAAC,EAAE,MAAM,CAAC;CACzB;AAID,qBACa,0BAA2B,SAAQ,YAAY;IAGlD,kBAAkB,CACK,gBAAgB,EAAE,MAAM,EACC,UAAU,EAAE,MAAM,GAAG,SAAS,EAC7C,MAAM,EAAE,MAAM,GAAG,SAAS,EACtD,EAAE,WAAW,EAAE,GAAE,UAA6B,GACtD,OAAO,CAAC,wBAAwB,CAAC;IAsFpC,gCAAgC;YAClB,kBAAkB;IAiBhC;;;;OAIG;YACW,kBAAkB;IAsChC,sEAAsE;YACxD,sBAAsB;IA4BpC,OAAO,CAAC,WAAW;CAStB"}
|