@memberjunction/server 5.33.0 → 5.34.1
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 +2 -1
- package/dist/agents/skip-agent.d.ts +3 -1
- package/dist/agents/skip-agent.d.ts.map +1 -1
- package/dist/agents/skip-agent.js +15 -3
- package/dist/agents/skip-agent.js.map +1 -1
- package/dist/generated/generated.d.ts +922 -376
- package/dist/generated/generated.d.ts.map +1 -1
- package/dist/generated/generated.js +5669 -2512
- package/dist/generated/generated.js.map +1 -1
- package/dist/generic/ResolverBase.d.ts +1 -1
- package/dist/generic/ResolverBase.d.ts.map +1 -1
- package/dist/generic/ResolverBase.js +9 -2
- package/dist/generic/ResolverBase.js.map +1 -1
- package/dist/generic/RunViewResolver.d.ts +5 -1
- package/dist/generic/RunViewResolver.d.ts.map +1 -1
- package/dist/generic/RunViewResolver.js +33 -2
- package/dist/generic/RunViewResolver.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +17 -2
- package/dist/index.js.map +1 -1
- package/dist/resolvers/AvailableSearchProvidersResolver.d.ts +26 -0
- package/dist/resolvers/AvailableSearchProvidersResolver.d.ts.map +1 -0
- package/dist/resolvers/AvailableSearchProvidersResolver.js +65 -0
- package/dist/resolvers/AvailableSearchProvidersResolver.js.map +1 -0
- package/dist/resolvers/ComponentRegistryResolver.d.ts +11 -25
- package/dist/resolvers/ComponentRegistryResolver.d.ts.map +1 -1
- package/dist/resolvers/ComponentRegistryResolver.js +51 -93
- package/dist/resolvers/ComponentRegistryResolver.js.map +1 -1
- package/dist/resolvers/QuerySystemUserResolver.d.ts +18 -0
- package/dist/resolvers/QuerySystemUserResolver.d.ts.map +1 -1
- package/dist/resolvers/QuerySystemUserResolver.js +68 -6
- package/dist/resolvers/QuerySystemUserResolver.js.map +1 -1
- package/dist/resolvers/SearchKnowledgeResolver.d.ts +44 -1
- package/dist/resolvers/SearchKnowledgeResolver.d.ts.map +1 -1
- package/dist/resolvers/SearchKnowledgeResolver.js +217 -7
- package/dist/resolvers/SearchKnowledgeResolver.js.map +1 -1
- package/dist/resolvers/SearchKnowledgeStreamResolver.d.ts +79 -0
- package/dist/resolvers/SearchKnowledgeStreamResolver.d.ts.map +1 -0
- package/dist/resolvers/SearchKnowledgeStreamResolver.js +342 -0
- package/dist/resolvers/SearchKnowledgeStreamResolver.js.map +1 -0
- package/dist/types.d.ts +6 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/package.json +68 -68
- package/src/agents/skip-agent.ts +18 -4
- package/src/generated/generated.ts +4376 -2227
- package/src/generic/ResolverBase.ts +11 -2
- package/src/generic/RunViewResolver.ts +29 -2
- package/src/index.ts +17 -2
- package/src/resolvers/AvailableSearchProvidersResolver.ts +43 -0
- package/src/resolvers/ComponentRegistryResolver.ts +71 -123
- package/src/resolvers/QuerySystemUserResolver.ts +68 -6
- package/src/resolvers/SearchKnowledgeResolver.ts +205 -4
- package/src/resolvers/SearchKnowledgeStreamResolver.ts +338 -0
- package/src/types.ts +6 -1
|
@@ -0,0 +1,342 @@
|
|
|
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
|
+
/**
|
|
14
|
+
* Streaming variant of the SearchKnowledge mutation. Uses GraphQL
|
|
15
|
+
* subscriptions over the existing Apollo subscription transport (see
|
|
16
|
+
* `plans/search-scopes-rag-plus/streaming-mechanism-decision.md` for the
|
|
17
|
+
* decision rationale).
|
|
18
|
+
*
|
|
19
|
+
* Two-step protocol:
|
|
20
|
+
*
|
|
21
|
+
* 1. Caller invokes the `StreamScopedSearch` mutation with the same
|
|
22
|
+
* arguments as `SearchKnowledge`. The mutation returns a streamID
|
|
23
|
+
* (uuid) immediately and starts the search in the background.
|
|
24
|
+
* 2. Caller subscribes to `SearchStreamEvents(streamID: $id)`. The
|
|
25
|
+
* server publishes events from `SearchEngine.streamSearch()` to the
|
|
26
|
+
* pubsub topic; the subscription's filter narrows to the requested
|
|
27
|
+
* streamID. The final event has `Phase = 'final'` (or 'error');
|
|
28
|
+
* consumers should unsubscribe after receiving it.
|
|
29
|
+
*
|
|
30
|
+
* Permission enforcement is identical to SearchKnowledge: each requested
|
|
31
|
+
* scopeID is run through SearchScopePermissionResolver before the engine
|
|
32
|
+
* is invoked. A denial publishes a single 'error' event and ends.
|
|
33
|
+
*/
|
|
34
|
+
import { Resolver, Mutation, Arg, Ctx, ObjectType, Field, Float, ID, Subscription, Root, PubSub, PubSubEngine } from 'type-graphql';
|
|
35
|
+
import { v4 as uuidv4 } from 'uuid';
|
|
36
|
+
import { GraphQLJSON } from 'graphql-type-json';
|
|
37
|
+
import { LogError, LogStatus, Metadata } from '@memberjunction/core';
|
|
38
|
+
import { ResolverBase } from '../generic/ResolverBase.js';
|
|
39
|
+
import { SearchEngine, SearchScopePermissionResolver, } from '@memberjunction/search-engine';
|
|
40
|
+
import { UUIDsEqual } from '@memberjunction/global';
|
|
41
|
+
import { SearchKnowledgeResultItem, SearchSourceCounts } from './SearchKnowledgeResolver.js';
|
|
42
|
+
const SEARCH_STREAM_TOPIC = 'SEARCH_STREAM';
|
|
43
|
+
/**
|
|
44
|
+
* Wire format for search stream events. We do not use a discriminated
|
|
45
|
+
* union at the GraphQL level (type-graphql doesn't have first-class
|
|
46
|
+
* support for union outputs in a clean way) — instead we use a Phase
|
|
47
|
+
* discriminator and make the data fields nullable per phase.
|
|
48
|
+
*/
|
|
49
|
+
let SearchStreamNotification = class SearchStreamNotification {
|
|
50
|
+
};
|
|
51
|
+
__decorate([
|
|
52
|
+
Field(() => ID),
|
|
53
|
+
__metadata("design:type", String)
|
|
54
|
+
], SearchStreamNotification.prototype, "StreamID", void 0);
|
|
55
|
+
__decorate([
|
|
56
|
+
Field(),
|
|
57
|
+
__metadata("design:type", String)
|
|
58
|
+
], SearchStreamNotification.prototype, "Phase", void 0);
|
|
59
|
+
__decorate([
|
|
60
|
+
Field({ nullable: true }),
|
|
61
|
+
__metadata("design:type", String)
|
|
62
|
+
], SearchStreamNotification.prototype, "ProviderName", void 0);
|
|
63
|
+
__decorate([
|
|
64
|
+
Field(() => Float, { nullable: true }),
|
|
65
|
+
__metadata("design:type", Number)
|
|
66
|
+
], SearchStreamNotification.prototype, "DurationMs", void 0);
|
|
67
|
+
__decorate([
|
|
68
|
+
Field(() => [SearchKnowledgeResultItem], { nullable: true }),
|
|
69
|
+
__metadata("design:type", Array)
|
|
70
|
+
], SearchStreamNotification.prototype, "Results", void 0);
|
|
71
|
+
__decorate([
|
|
72
|
+
Field(() => SearchSourceCounts, { nullable: true }),
|
|
73
|
+
__metadata("design:type", SearchSourceCounts)
|
|
74
|
+
], SearchStreamNotification.prototype, "SourceCounts", void 0);
|
|
75
|
+
__decorate([
|
|
76
|
+
Field(() => Float, { nullable: true }),
|
|
77
|
+
__metadata("design:type", Number)
|
|
78
|
+
], SearchStreamNotification.prototype, "ElapsedMs", void 0);
|
|
79
|
+
__decorate([
|
|
80
|
+
Field({ nullable: true }),
|
|
81
|
+
__metadata("design:type", String)
|
|
82
|
+
], SearchStreamNotification.prototype, "ErrorMessage", void 0);
|
|
83
|
+
SearchStreamNotification = __decorate([
|
|
84
|
+
ObjectType()
|
|
85
|
+
], SearchStreamNotification);
|
|
86
|
+
export { SearchStreamNotification };
|
|
87
|
+
let SearchStreamStartResult = class SearchStreamStartResult {
|
|
88
|
+
};
|
|
89
|
+
__decorate([
|
|
90
|
+
Field(),
|
|
91
|
+
__metadata("design:type", Boolean)
|
|
92
|
+
], SearchStreamStartResult.prototype, "Success", void 0);
|
|
93
|
+
__decorate([
|
|
94
|
+
Field(() => ID),
|
|
95
|
+
__metadata("design:type", String)
|
|
96
|
+
], SearchStreamStartResult.prototype, "StreamID", void 0);
|
|
97
|
+
__decorate([
|
|
98
|
+
Field({ nullable: true }),
|
|
99
|
+
__metadata("design:type", String)
|
|
100
|
+
], SearchStreamStartResult.prototype, "ErrorMessage", void 0);
|
|
101
|
+
SearchStreamStartResult = __decorate([
|
|
102
|
+
ObjectType()
|
|
103
|
+
], SearchStreamStartResult);
|
|
104
|
+
export { SearchStreamStartResult };
|
|
105
|
+
let SearchKnowledgeStreamResolver = class SearchKnowledgeStreamResolver extends ResolverBase {
|
|
106
|
+
/**
|
|
107
|
+
* Subscribe to events from a running streamScopedSearch. Filter by
|
|
108
|
+
* streamID so multiple in-flight streams don't interleave on the same
|
|
109
|
+
* client.
|
|
110
|
+
*/
|
|
111
|
+
SearchStreamEvents(notification, _streamID) {
|
|
112
|
+
return notification;
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Start a streaming search. Returns a streamID that the caller passes
|
|
116
|
+
* to the SearchStreamEvents subscription. Permission checks are
|
|
117
|
+
* performed before the stream begins; on rejection a single 'error'
|
|
118
|
+
* event is published and the stream ends.
|
|
119
|
+
*/
|
|
120
|
+
async StreamScopedSearch(query, maxResults, minScore, scopeIDs, searchContext, agentID, pubSub, { userPayload } = {}) {
|
|
121
|
+
const streamID = uuidv4();
|
|
122
|
+
const startTime = Date.now();
|
|
123
|
+
try {
|
|
124
|
+
const currentUser = this.GetUserFromPayload(userPayload);
|
|
125
|
+
if (!currentUser) {
|
|
126
|
+
return { Success: false, StreamID: streamID, ErrorMessage: 'Unable to determine current user' };
|
|
127
|
+
}
|
|
128
|
+
// Phase 2A enforcement: validate every requested scope before
|
|
129
|
+
// we kick the stream off. Same predicate / message as the
|
|
130
|
+
// synchronous resolver — single source of truth.
|
|
131
|
+
if (scopeIDs && scopeIDs.length) {
|
|
132
|
+
const denial = await this.rejectForbiddenScopes(scopeIDs, currentUser, agentID);
|
|
133
|
+
if (denial) {
|
|
134
|
+
// Mirror the synchronous resolver: surface denied attempts in
|
|
135
|
+
// the analytics dashboard so an admin tuning permissions can
|
|
136
|
+
// see them. Best-effort — failures are swallowed by the helper.
|
|
137
|
+
await SearchEngine.Instance.LogForbiddenSearch({
|
|
138
|
+
Query: query,
|
|
139
|
+
ScopeIDs: scopeIDs,
|
|
140
|
+
FailureReason: denial,
|
|
141
|
+
StartTime: startTime,
|
|
142
|
+
ContextUser: currentUser,
|
|
143
|
+
AIAgentID: agentID ?? null,
|
|
144
|
+
});
|
|
145
|
+
return { Success: false, StreamID: streamID, ErrorMessage: denial };
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
// Kick off the stream in the background and return immediately.
|
|
149
|
+
// The mutation resolves before any events are published — the
|
|
150
|
+
// client must subscribe first to avoid missing the early ones.
|
|
151
|
+
// (TODO Phase 2C v2: optionally buffer until first subscriber
|
|
152
|
+
// arrives; today's contract is "subscribe before mutation
|
|
153
|
+
// returns" which the SDK can enforce.)
|
|
154
|
+
void this.runStream(streamID, {
|
|
155
|
+
query,
|
|
156
|
+
maxResults,
|
|
157
|
+
minScore,
|
|
158
|
+
scopeIDs,
|
|
159
|
+
searchContext,
|
|
160
|
+
agentID,
|
|
161
|
+
}, currentUser, pubSub).catch(err => {
|
|
162
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
163
|
+
LogError(`StreamScopedSearch background failure: ${msg}`);
|
|
164
|
+
void pubSub.publish(SEARCH_STREAM_TOPIC, {
|
|
165
|
+
StreamID: streamID,
|
|
166
|
+
Phase: 'error',
|
|
167
|
+
ErrorMessage: msg,
|
|
168
|
+
});
|
|
169
|
+
});
|
|
170
|
+
return { Success: true, StreamID: streamID };
|
|
171
|
+
}
|
|
172
|
+
catch (err) {
|
|
173
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
174
|
+
LogError(`StreamScopedSearch start failed: ${msg}`);
|
|
175
|
+
return { Success: false, StreamID: streamID, ErrorMessage: msg };
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
/**
|
|
179
|
+
* Runs the stream and publishes events. Always publishes a terminal
|
|
180
|
+
* 'final' or 'error' so clients can confidently unsubscribe.
|
|
181
|
+
*/
|
|
182
|
+
async runStream(streamID, params, currentUser, pubSub) {
|
|
183
|
+
const mappedContext = params.searchContext
|
|
184
|
+
? params.searchContext
|
|
185
|
+
: undefined;
|
|
186
|
+
try {
|
|
187
|
+
for await (const ev of SearchEngine.Instance.streamSearch({
|
|
188
|
+
Query: params.query,
|
|
189
|
+
MaxResults: params.maxResults,
|
|
190
|
+
MinScore: params.minScore,
|
|
191
|
+
ScopeIDs: params.scopeIDs && params.scopeIDs.length ? params.scopeIDs : undefined,
|
|
192
|
+
SearchContext: mappedContext,
|
|
193
|
+
AIAgentID: params.agentID ?? null,
|
|
194
|
+
}, currentUser)) {
|
|
195
|
+
const notification = this.toNotification(streamID, ev);
|
|
196
|
+
await pubSub.publish(SEARCH_STREAM_TOPIC, notification);
|
|
197
|
+
}
|
|
198
|
+
LogStatus(`StreamScopedSearch ${streamID} completed`);
|
|
199
|
+
}
|
|
200
|
+
catch (err) {
|
|
201
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
202
|
+
LogError(`StreamScopedSearch ${streamID} failed mid-stream: ${msg}`);
|
|
203
|
+
await pubSub.publish(SEARCH_STREAM_TOPIC, {
|
|
204
|
+
StreamID: streamID,
|
|
205
|
+
Phase: 'error',
|
|
206
|
+
ErrorMessage: msg,
|
|
207
|
+
});
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
toNotification(streamID, ev) {
|
|
211
|
+
// Reuse the same item shape as the synchronous resolver.
|
|
212
|
+
const mapItem = (r) => ({
|
|
213
|
+
ID: r.ID,
|
|
214
|
+
EntityName: r.EntityName,
|
|
215
|
+
RecordID: r.RecordID,
|
|
216
|
+
SourceType: r.SourceType,
|
|
217
|
+
ResultType: r.ResultType,
|
|
218
|
+
Title: r.Title,
|
|
219
|
+
Snippet: r.Snippet,
|
|
220
|
+
Score: r.Score,
|
|
221
|
+
ScoreBreakdown: r.ScoreBreakdown,
|
|
222
|
+
Tags: r.Tags ?? [],
|
|
223
|
+
EntityIcon: r.EntityIcon,
|
|
224
|
+
RecordName: r.RecordName,
|
|
225
|
+
MatchedAt: r.MatchedAt,
|
|
226
|
+
RawMetadata: r.RawMetadata,
|
|
227
|
+
ProviderId: r.ProviderId,
|
|
228
|
+
ProviderLabel: r.ProviderLabel,
|
|
229
|
+
ProviderIcon: r.ProviderIcon,
|
|
230
|
+
});
|
|
231
|
+
switch (ev.phase) {
|
|
232
|
+
case 'provider':
|
|
233
|
+
return {
|
|
234
|
+
StreamID: streamID,
|
|
235
|
+
Phase: 'provider',
|
|
236
|
+
ProviderName: ev.providerName,
|
|
237
|
+
DurationMs: ev.durationMs,
|
|
238
|
+
Results: ev.results.map(mapItem),
|
|
239
|
+
};
|
|
240
|
+
case 'fused':
|
|
241
|
+
return {
|
|
242
|
+
StreamID: streamID,
|
|
243
|
+
Phase: 'fused',
|
|
244
|
+
Results: ev.results.map(mapItem),
|
|
245
|
+
};
|
|
246
|
+
case 'reranked':
|
|
247
|
+
return {
|
|
248
|
+
StreamID: streamID,
|
|
249
|
+
Phase: 'reranked',
|
|
250
|
+
ProviderName: ev.rerankerName,
|
|
251
|
+
Results: ev.results.map(mapItem),
|
|
252
|
+
};
|
|
253
|
+
case 'final':
|
|
254
|
+
return {
|
|
255
|
+
StreamID: streamID,
|
|
256
|
+
Phase: 'final',
|
|
257
|
+
Results: ev.results.map(mapItem),
|
|
258
|
+
SourceCounts: ev.sourceCounts,
|
|
259
|
+
ElapsedMs: ev.elapsedMs,
|
|
260
|
+
};
|
|
261
|
+
case 'error':
|
|
262
|
+
return {
|
|
263
|
+
StreamID: streamID,
|
|
264
|
+
Phase: 'error',
|
|
265
|
+
ProviderName: ev.providerName,
|
|
266
|
+
ErrorMessage: ev.error,
|
|
267
|
+
};
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
/** Mirrors the helper in SearchKnowledgeResolver — kept private to
|
|
271
|
+
* avoid an inter-resolver coupling. If a third resolver ever needs
|
|
272
|
+
* this, lift it into a shared util in `packages/SearchEngine`. */
|
|
273
|
+
async rejectForbiddenScopes(scopeIDs, user, agentID) {
|
|
274
|
+
const agent = await this.loadAgent(agentID, user);
|
|
275
|
+
const resolver = new SearchScopePermissionResolver();
|
|
276
|
+
for (const scopeID of scopeIDs) {
|
|
277
|
+
const verdict = await resolver.ResolveEffectivePermission({
|
|
278
|
+
User: user,
|
|
279
|
+
SearchScopeID: scopeID,
|
|
280
|
+
Agent: agent,
|
|
281
|
+
ContextUser: user,
|
|
282
|
+
});
|
|
283
|
+
if (!verdict.Allowed) {
|
|
284
|
+
LogStatus(`StreamScopedSearch denied: ${verdict.Reason} (scope=${scopeID}, source=${verdict.Source})`);
|
|
285
|
+
return `Forbidden: ${verdict.Reason}`;
|
|
286
|
+
}
|
|
287
|
+
// Read level grants metadata visibility but not the right to run a
|
|
288
|
+
// search. Mirror the SearchKnowledge resolver's gate so the streaming
|
|
289
|
+
// path enforces the same Read=metadata-only rule.
|
|
290
|
+
if (verdict.Level === 'Read') {
|
|
291
|
+
const reason = `User '${user.Name}' has Read-level access on this scope, which permits metadata visibility but not search execution. Search or Manage is required to run a query.`;
|
|
292
|
+
LogStatus(`StreamScopedSearch denied: ${reason} (scope=${scopeID}, source=${verdict.Source})`);
|
|
293
|
+
return `Forbidden: ${reason}`;
|
|
294
|
+
}
|
|
295
|
+
}
|
|
296
|
+
return undefined;
|
|
297
|
+
}
|
|
298
|
+
async loadAgent(agentID, contextUser) {
|
|
299
|
+
if (!agentID)
|
|
300
|
+
return null;
|
|
301
|
+
try {
|
|
302
|
+
const md = new Metadata(); // global-provider-ok: ResolverBase has no bound IMetadataProvider; contextUser is the per-request scope
|
|
303
|
+
const agent = await md.GetEntityObject('MJ: AI Agents', contextUser);
|
|
304
|
+
const loaded = await agent.Load(agentID);
|
|
305
|
+
return loaded ? agent : null;
|
|
306
|
+
}
|
|
307
|
+
catch (err) {
|
|
308
|
+
LogError(`StreamScopedSearch: failed to load agent ${agentID}: ${err instanceof Error ? err.message : String(err)}`);
|
|
309
|
+
return null;
|
|
310
|
+
}
|
|
311
|
+
}
|
|
312
|
+
};
|
|
313
|
+
__decorate([
|
|
314
|
+
Subscription(() => SearchStreamNotification, {
|
|
315
|
+
topics: SEARCH_STREAM_TOPIC,
|
|
316
|
+
filter: ({ payload, args }) => UUIDsEqual(payload.StreamID, args.streamID),
|
|
317
|
+
}),
|
|
318
|
+
__param(0, Root()),
|
|
319
|
+
__param(1, Arg('streamID', () => ID)),
|
|
320
|
+
__metadata("design:type", Function),
|
|
321
|
+
__metadata("design:paramtypes", [SearchStreamNotification, String]),
|
|
322
|
+
__metadata("design:returntype", SearchStreamNotification)
|
|
323
|
+
], SearchKnowledgeStreamResolver.prototype, "SearchStreamEvents", null);
|
|
324
|
+
__decorate([
|
|
325
|
+
Mutation(() => SearchStreamStartResult),
|
|
326
|
+
__param(0, Arg('query')),
|
|
327
|
+
__param(1, Arg('maxResults', () => Float, { nullable: true })),
|
|
328
|
+
__param(2, Arg('minScore', () => Float, { nullable: true })),
|
|
329
|
+
__param(3, Arg('scopeIDs', () => [ID], { nullable: true })),
|
|
330
|
+
__param(4, Arg('searchContext', () => GraphQLJSON, { nullable: true })),
|
|
331
|
+
__param(5, Arg('agentID', () => ID, { nullable: true })),
|
|
332
|
+
__param(6, PubSub()),
|
|
333
|
+
__param(7, Ctx()),
|
|
334
|
+
__metadata("design:type", Function),
|
|
335
|
+
__metadata("design:paramtypes", [String, Number, Number, Array, Object, String, PubSubEngine, Object]),
|
|
336
|
+
__metadata("design:returntype", Promise)
|
|
337
|
+
], SearchKnowledgeStreamResolver.prototype, "StreamScopedSearch", null);
|
|
338
|
+
SearchKnowledgeStreamResolver = __decorate([
|
|
339
|
+
Resolver()
|
|
340
|
+
], SearchKnowledgeStreamResolver);
|
|
341
|
+
export { SearchKnowledgeStreamResolver };
|
|
342
|
+
//# sourceMappingURL=SearchKnowledgeStreamResolver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SearchKnowledgeStreamResolver.js","sourceRoot":"","sources":["../../src/resolvers/SearchKnowledgeStreamResolver.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { AggregateExpression, DatabaseProviderBase, UserInfo } from '@memberjunction/core';
|
|
1
|
+
import { AggregateExpression, CompositeKey, DatabaseProviderBase, UserInfo } from '@memberjunction/core';
|
|
2
2
|
import { MJUserViewEntityExtended } from '@memberjunction/core-entities';
|
|
3
3
|
import { GraphQLSchema } from 'graphql';
|
|
4
4
|
import sql from 'mssql';
|
|
@@ -79,6 +79,11 @@ export type RunViewGenericParams = {
|
|
|
79
79
|
ignoreMaxRows?: boolean;
|
|
80
80
|
maxRows?: number;
|
|
81
81
|
startRow?: number;
|
|
82
|
+
/**
|
|
83
|
+
* Keyset (seek) pagination cursor — see {@link RunViewParams.AfterKey}.
|
|
84
|
+
* When set, the entity must have a single-column PK; throws AfterKeyNotSupportedError otherwise.
|
|
85
|
+
*/
|
|
86
|
+
afterKey?: CompositeKey;
|
|
82
87
|
excludeDataFromAllPriorViewRuns?: boolean;
|
|
83
88
|
forceAuditLog?: boolean;
|
|
84
89
|
auditLogDescription?: string;
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/dist/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AA6CxE,MAAM,OAAO,YAAY;CAGxB;AAED,MAAM,OAAO,cAAc;IASzB,YAAY,IAA4J;QACtK,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;QAClC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACtB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACtB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC9B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC9B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;IACxB,CAAC;CACF;AAAA,CAAC;
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AA6CxE,MAAM,OAAO,YAAY;CAGxB;AAED,MAAM,OAAO,cAAc;IASzB,YAAY,IAA4J;QACtK,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;QAClC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACtB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACtB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC9B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC9B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;IACxB,CAAC;CACF;AAAA,CAAC;AAkCF,MAAM,OAAO,aAAa;CAKzB;AAED,MAAM,CAAC,MAAM,oBAAoB,GAAG,iBAAiB,CAAC;AAEtD,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,IAA2B,EAAE,WAA6B,EAAE,WAAwB,EAAE,SAAe;IACpI,MAAM,KAAK,GAAG,IAAI,aAAa,EAAE,CAAC;IAClC,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC;IAClB,KAAK,CAAC,WAAW,GAAG,WAAW,CAAC;IAChC,KAAK,CAAC,WAAW,GAAG,WAAW,CAAC;IAChC,KAAK,CAAC,UAAU,GAAG,MAAM,aAAa,EAAE,CAAC;IAEzC,MAAM,GAAG,GAAG,IAAI,OAAO,EAAE,CAAC;IAC1B,GAAG,CAAC,IAAI,GAAG,KAAK,CAAC;IACjB,GAAG,CAAC,SAAS,GAAG,SAAS,CAAC;IAC1B,GAAG,CAAC,KAAK,GAAG,WAAW,CAAC,cAAc,CAAC;IACvC,GAAG,CAAC,SAAS,GAAG,oBAAoB,CAAC;IACrC,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;AACpC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@memberjunction/server",
|
|
3
|
-
"version": "5.
|
|
3
|
+
"version": "5.34.1",
|
|
4
4
|
"description": "MemberJunction: This project provides API access via GraphQL to the common data store.",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"types": "./src/index.ts",
|
|
@@ -27,73 +27,73 @@
|
|
|
27
27
|
"@as-integrations/express5": "^1.0.0",
|
|
28
28
|
"@graphql-tools/schema": "latest",
|
|
29
29
|
"@graphql-tools/utils": "^11.0.0",
|
|
30
|
-
"@memberjunction/actions": "5.
|
|
31
|
-
"@memberjunction/actions-apollo": "5.
|
|
32
|
-
"@memberjunction/actions-base": "5.
|
|
33
|
-
"@memberjunction/actions-bizapps-accounting": "5.
|
|
34
|
-
"@memberjunction/actions-bizapps-crm": "5.
|
|
35
|
-
"@memberjunction/actions-bizapps-formbuilders": "5.
|
|
36
|
-
"@memberjunction/actions-bizapps-lms": "5.
|
|
37
|
-
"@memberjunction/actions-bizapps-social": "5.
|
|
38
|
-
"@memberjunction/ai": "5.
|
|
39
|
-
"@memberjunction/ai-agent-manager": "5.
|
|
40
|
-
"@memberjunction/ai-agent-manager-actions": "5.
|
|
41
|
-
"@memberjunction/ai-agents": "5.
|
|
42
|
-
"@memberjunction/ai-core-plus": "5.
|
|
43
|
-
"@memberjunction/ai-mcp-client": "5.
|
|
44
|
-
"@memberjunction/ai-prompts": "5.
|
|
45
|
-
"@memberjunction/ai-provider-bundle": "5.
|
|
46
|
-
"@memberjunction/ai-vector-sync": "5.
|
|
47
|
-
"@memberjunction/ai-vectordb": "5.
|
|
48
|
-
"@memberjunction/ai-vectors-pinecone": "5.
|
|
49
|
-
"@memberjunction/aiengine": "5.
|
|
50
|
-
"@memberjunction/api-keys": "5.
|
|
51
|
-
"@memberjunction/auth-providers": "5.
|
|
52
|
-
"@memberjunction/codegen-lib": "5.
|
|
53
|
-
"@memberjunction/communication-ms-graph": "5.
|
|
54
|
-
"@memberjunction/communication-sendgrid": "5.
|
|
55
|
-
"@memberjunction/communication-types": "5.
|
|
56
|
-
"@memberjunction/component-registry-client-sdk": "5.
|
|
57
|
-
"@memberjunction/computer-use-engine": "5.
|
|
58
|
-
"@memberjunction/config": "5.
|
|
59
|
-
"@memberjunction/core": "5.
|
|
60
|
-
"@memberjunction/core-actions": "5.
|
|
61
|
-
"@memberjunction/core-entities": "5.
|
|
62
|
-
"@memberjunction/core-entities-server": "5.
|
|
63
|
-
"@memberjunction/data-context": "5.
|
|
64
|
-
"@memberjunction/data-context-server": "5.
|
|
65
|
-
"@memberjunction/doc-utils": "5.
|
|
66
|
-
"@memberjunction/encryption": "5.
|
|
67
|
-
"@memberjunction/entity-communications-base": "5.
|
|
68
|
-
"@memberjunction/entity-communications-server": "5.
|
|
69
|
-
"@memberjunction/external-change-detection": "5.
|
|
70
|
-
"@memberjunction/generic-database-provider": "5.
|
|
71
|
-
"@memberjunction/global": "5.
|
|
72
|
-
"@memberjunction/graphql-dataprovider": "5.
|
|
73
|
-
"@memberjunction/integration-engine": "5.
|
|
74
|
-
"@memberjunction/integration-schema-builder": "5.
|
|
75
|
-
"@memberjunction/interactive-component-types": "5.
|
|
76
|
-
"@memberjunction/notifications": "5.
|
|
77
|
-
"@memberjunction/postgresql-dataprovider": "5.
|
|
78
|
-
"@memberjunction/queue": "5.
|
|
79
|
-
"@memberjunction/redis-provider": "5.
|
|
80
|
-
"@memberjunction/scheduling-actions": "5.
|
|
81
|
-
"@memberjunction/scheduling-base-types": "5.
|
|
82
|
-
"@memberjunction/scheduling-engine": "5.
|
|
83
|
-
"@memberjunction/scheduling-engine-base": "5.
|
|
84
|
-
"@memberjunction/schema-engine": "5.
|
|
85
|
-
"@memberjunction/search-engine": "5.
|
|
86
|
-
"@memberjunction/server-extensions-core": "5.
|
|
87
|
-
"@memberjunction/skip-types": "5.
|
|
88
|
-
"@memberjunction/sql-dialect": "5.
|
|
89
|
-
"@memberjunction/sqlserver-dataprovider": "5.
|
|
90
|
-
"@memberjunction/storage": "5.
|
|
91
|
-
"@memberjunction/tag-engine": "5.
|
|
92
|
-
"@memberjunction/tag-engine-base": "5.
|
|
93
|
-
"@memberjunction/templates": "5.
|
|
94
|
-
"@memberjunction/testing-engine": "5.
|
|
95
|
-
"@memberjunction/testing-engine-base": "5.
|
|
96
|
-
"@memberjunction/version-history": "5.
|
|
30
|
+
"@memberjunction/actions": "5.34.1",
|
|
31
|
+
"@memberjunction/actions-apollo": "5.34.1",
|
|
32
|
+
"@memberjunction/actions-base": "5.34.1",
|
|
33
|
+
"@memberjunction/actions-bizapps-accounting": "5.34.1",
|
|
34
|
+
"@memberjunction/actions-bizapps-crm": "5.34.1",
|
|
35
|
+
"@memberjunction/actions-bizapps-formbuilders": "5.34.1",
|
|
36
|
+
"@memberjunction/actions-bizapps-lms": "5.34.1",
|
|
37
|
+
"@memberjunction/actions-bizapps-social": "5.34.1",
|
|
38
|
+
"@memberjunction/ai": "5.34.1",
|
|
39
|
+
"@memberjunction/ai-agent-manager": "5.34.1",
|
|
40
|
+
"@memberjunction/ai-agent-manager-actions": "5.34.1",
|
|
41
|
+
"@memberjunction/ai-agents": "5.34.1",
|
|
42
|
+
"@memberjunction/ai-core-plus": "5.34.1",
|
|
43
|
+
"@memberjunction/ai-mcp-client": "5.34.1",
|
|
44
|
+
"@memberjunction/ai-prompts": "5.34.1",
|
|
45
|
+
"@memberjunction/ai-provider-bundle": "5.34.1",
|
|
46
|
+
"@memberjunction/ai-vector-sync": "5.34.1",
|
|
47
|
+
"@memberjunction/ai-vectordb": "5.34.1",
|
|
48
|
+
"@memberjunction/ai-vectors-pinecone": "5.34.1",
|
|
49
|
+
"@memberjunction/aiengine": "5.34.1",
|
|
50
|
+
"@memberjunction/api-keys": "5.34.1",
|
|
51
|
+
"@memberjunction/auth-providers": "5.34.1",
|
|
52
|
+
"@memberjunction/codegen-lib": "5.34.1",
|
|
53
|
+
"@memberjunction/communication-ms-graph": "5.34.1",
|
|
54
|
+
"@memberjunction/communication-sendgrid": "5.34.1",
|
|
55
|
+
"@memberjunction/communication-types": "5.34.1",
|
|
56
|
+
"@memberjunction/component-registry-client-sdk": "5.34.1",
|
|
57
|
+
"@memberjunction/computer-use-engine": "5.34.1",
|
|
58
|
+
"@memberjunction/config": "5.34.1",
|
|
59
|
+
"@memberjunction/core": "5.34.1",
|
|
60
|
+
"@memberjunction/core-actions": "5.34.1",
|
|
61
|
+
"@memberjunction/core-entities": "5.34.1",
|
|
62
|
+
"@memberjunction/core-entities-server": "5.34.1",
|
|
63
|
+
"@memberjunction/data-context": "5.34.1",
|
|
64
|
+
"@memberjunction/data-context-server": "5.34.1",
|
|
65
|
+
"@memberjunction/doc-utils": "5.34.1",
|
|
66
|
+
"@memberjunction/encryption": "5.34.1",
|
|
67
|
+
"@memberjunction/entity-communications-base": "5.34.1",
|
|
68
|
+
"@memberjunction/entity-communications-server": "5.34.1",
|
|
69
|
+
"@memberjunction/external-change-detection": "5.34.1",
|
|
70
|
+
"@memberjunction/generic-database-provider": "5.34.1",
|
|
71
|
+
"@memberjunction/global": "5.34.1",
|
|
72
|
+
"@memberjunction/graphql-dataprovider": "5.34.1",
|
|
73
|
+
"@memberjunction/integration-engine": "5.34.1",
|
|
74
|
+
"@memberjunction/integration-schema-builder": "5.34.1",
|
|
75
|
+
"@memberjunction/interactive-component-types": "5.34.1",
|
|
76
|
+
"@memberjunction/notifications": "5.34.1",
|
|
77
|
+
"@memberjunction/postgresql-dataprovider": "5.34.1",
|
|
78
|
+
"@memberjunction/queue": "5.34.1",
|
|
79
|
+
"@memberjunction/redis-provider": "5.34.1",
|
|
80
|
+
"@memberjunction/scheduling-actions": "5.34.1",
|
|
81
|
+
"@memberjunction/scheduling-base-types": "5.34.1",
|
|
82
|
+
"@memberjunction/scheduling-engine": "5.34.1",
|
|
83
|
+
"@memberjunction/scheduling-engine-base": "5.34.1",
|
|
84
|
+
"@memberjunction/schema-engine": "5.34.1",
|
|
85
|
+
"@memberjunction/search-engine": "5.34.1",
|
|
86
|
+
"@memberjunction/server-extensions-core": "5.34.1",
|
|
87
|
+
"@memberjunction/skip-types": "5.34.1",
|
|
88
|
+
"@memberjunction/sql-dialect": "5.34.1",
|
|
89
|
+
"@memberjunction/sqlserver-dataprovider": "5.34.1",
|
|
90
|
+
"@memberjunction/storage": "5.34.1",
|
|
91
|
+
"@memberjunction/tag-engine": "5.34.1",
|
|
92
|
+
"@memberjunction/tag-engine-base": "5.34.1",
|
|
93
|
+
"@memberjunction/templates": "5.34.1",
|
|
94
|
+
"@memberjunction/testing-engine": "5.34.1",
|
|
95
|
+
"@memberjunction/testing-engine-base": "5.34.1",
|
|
96
|
+
"@memberjunction/version-history": "5.34.1",
|
|
97
97
|
"@types/compression": "^1.8.1",
|
|
98
98
|
"@types/cors": "^2.8.19",
|
|
99
99
|
"@types/jsonwebtoken": "9.0.10",
|
package/src/agents/skip-agent.ts
CHANGED
|
@@ -347,12 +347,27 @@ export class SkipProxyAgent extends BaseAgent {
|
|
|
347
347
|
}
|
|
348
348
|
|
|
349
349
|
/**
|
|
350
|
-
* Handle analysis_complete phase —
|
|
350
|
+
* Handle analysis_complete phase — supports both component-bearing responses
|
|
351
|
+
* (componentOptions populated) and analysis-only responses (markdown in `analysis`
|
|
352
|
+
* with no component, produced by Skip's Analysis Agent path).
|
|
351
353
|
*/
|
|
352
354
|
private handleAnalysisComplete(
|
|
353
355
|
response: SkipAPIAnalysisCompleteResponse
|
|
354
356
|
): BaseAgentNextStep<ComponentSpec> {
|
|
355
|
-
|
|
357
|
+
const hasComponentOptions = response.componentOptions && response.componentOptions.length > 0;
|
|
358
|
+
const skipMessage = response.messages?.filter(msg => msg.role === 'system').pop();
|
|
359
|
+
const analysisText = response.analysis?.trim();
|
|
360
|
+
|
|
361
|
+
if (!hasComponentOptions) {
|
|
362
|
+
if (analysisText || skipMessage?.content) {
|
|
363
|
+
return {
|
|
364
|
+
terminate: true,
|
|
365
|
+
step: 'Success',
|
|
366
|
+
message: analysisText || skipMessage!.content,
|
|
367
|
+
newPayload: undefined
|
|
368
|
+
};
|
|
369
|
+
}
|
|
370
|
+
|
|
356
371
|
const msg = 'Skip completed analysis but returned no component options. '
|
|
357
372
|
+ `Title: "${response.title || 'none'}". `
|
|
358
373
|
+ `Result type: "${response.resultType || 'none'}"`;
|
|
@@ -366,8 +381,7 @@ export class SkipProxyAgent extends BaseAgent {
|
|
|
366
381
|
};
|
|
367
382
|
}
|
|
368
383
|
|
|
369
|
-
const componentSpec = response.componentOptions[0].option;
|
|
370
|
-
const skipMessage = response.messages?.filter(msg => msg.role === 'system').pop();
|
|
384
|
+
const componentSpec = response.componentOptions![0].option;
|
|
371
385
|
|
|
372
386
|
return {
|
|
373
387
|
terminate: true,
|