@memberjunction/server 6.1.0-edge.0 → 6.1.0-edge.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/auth/exampleNewUserSubClass.js +1 -1
- package/dist/auth/exampleNewUserSubClass.js.map +1 -1
- package/dist/auth/index.d.ts.map +1 -1
- package/dist/auth/index.js +9 -5
- package/dist/auth/index.js.map +1 -1
- package/dist/auth/magicLink/MagicLinkService.js +1 -1
- package/dist/auth/magicLink/MagicLinkService.js.map +1 -1
- package/dist/auth/newUsers.js +1 -1
- package/dist/auth/newUsers.js.map +1 -1
- package/dist/context.js +2 -2
- package/dist/context.js.map +1 -1
- package/dist/generated/generated.d.ts +208 -646
- package/dist/generated/generated.d.ts.map +1 -1
- package/dist/generated/generated.js +1123 -3773
- package/dist/generated/generated.js.map +1 -1
- package/dist/generic/ResolverBase.d.ts +19 -3
- package/dist/generic/ResolverBase.d.ts.map +1 -1
- package/dist/generic/ResolverBase.js +51 -17
- package/dist/generic/ResolverBase.js.map +1 -1
- package/dist/index.d.ts +6 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +100 -42
- package/dist/index.js.map +1 -1
- package/dist/logging/secretRedactor.d.ts +9 -0
- package/dist/logging/secretRedactor.d.ts.map +1 -1
- package/dist/logging/secretRedactor.js +39 -0
- package/dist/logging/secretRedactor.js.map +1 -1
- package/dist/middleware/BaseServerMiddleware.d.ts +5 -0
- package/dist/middleware/BaseServerMiddleware.d.ts.map +1 -1
- package/dist/middleware/BaseServerMiddleware.js +5 -0
- package/dist/middleware/BaseServerMiddleware.js.map +1 -1
- package/dist/realtimeWidget/WidgetSessionService.js +1 -1
- package/dist/realtimeWidget/WidgetSessionService.js.map +1 -1
- package/dist/realtimeWidget/widgetGuestElevation.js +1 -1
- package/dist/realtimeWidget/widgetGuestElevation.js.map +1 -1
- package/dist/resolvers/ActionResolver.d.ts.map +1 -1
- package/dist/resolvers/ActionResolver.js +12 -0
- package/dist/resolvers/ActionResolver.js.map +1 -1
- package/dist/resolvers/ComponentRegistryResolver.js +1 -1
- package/dist/resolvers/ComponentRegistryResolver.js.map +1 -1
- package/dist/resolvers/EntityPermissionResolver.js +1 -1
- package/dist/resolvers/EntityPermissionResolver.js.map +1 -1
- package/dist/resolvers/IntegrationDiscoveryResolver.d.ts +9 -0
- package/dist/resolvers/IntegrationDiscoveryResolver.d.ts.map +1 -1
- package/dist/resolvers/IntegrationDiscoveryResolver.js +3 -1
- package/dist/resolvers/IntegrationDiscoveryResolver.js.map +1 -1
- package/dist/resolvers/PotentialDuplicateRecordResolver.js +1 -1
- package/dist/resolvers/PotentialDuplicateRecordResolver.js.map +1 -1
- package/dist/resolvers/RealtimeClientSessionResolver.d.ts +10 -0
- package/dist/resolvers/RealtimeClientSessionResolver.d.ts.map +1 -1
- package/dist/resolvers/RealtimeClientSessionResolver.js +5 -0
- package/dist/resolvers/RealtimeClientSessionResolver.js.map +1 -1
- package/dist/resolvers/SearchEntitiesResolver.js +1 -1
- package/dist/resolvers/SearchEntitiesResolver.js.map +1 -1
- package/dist/resolvers/SqlLoggingConfigResolver.d.ts.map +1 -1
- package/dist/resolvers/SqlLoggingConfigResolver.js +1 -1
- package/dist/resolvers/SqlLoggingConfigResolver.js.map +1 -1
- package/dist/resolvers/SyncRolesUsersResolver.js +2 -2
- package/dist/resolvers/SyncRolesUsersResolver.js.map +1 -1
- package/dist/resolvers/TaskGraphFrameResolver.d.ts +85 -0
- package/dist/resolvers/TaskGraphFrameResolver.d.ts.map +1 -0
- package/dist/resolvers/TaskGraphFrameResolver.js +163 -0
- package/dist/resolvers/TaskGraphFrameResolver.js.map +1 -0
- package/dist/resolvers/UserFavoriteResolver.js +1 -1
- package/dist/resolvers/UserFavoriteResolver.js.map +1 -1
- package/dist/rest/OAuthCallbackHandler.js +1 -1
- package/dist/rest/OAuthCallbackHandler.js.map +1 -1
- package/dist/rest/RESTEndpointHandler.d.ts +0 -4
- package/dist/rest/RESTEndpointHandler.d.ts.map +1 -1
- package/dist/rest/RESTEndpointHandler.js +1 -15
- package/dist/rest/RESTEndpointHandler.js.map +1 -1
- package/dist/rest/SignatureWebhookHandler.js +1 -1
- package/dist/rest/SignatureWebhookHandler.js.map +1 -1
- package/dist/services/DurableEntityActionTaskSubmitter.d.ts +26 -0
- package/dist/services/DurableEntityActionTaskSubmitter.d.ts.map +1 -0
- package/dist/services/DurableEntityActionTaskSubmitter.js +55 -0
- package/dist/services/DurableEntityActionTaskSubmitter.js.map +1 -0
- package/dist/services/ScheduledJobsService.js +1 -1
- package/dist/services/ScheduledJobsService.js.map +1 -1
- package/dist/services/StartTaskGraphDispatcher.d.ts +33 -0
- package/dist/services/StartTaskGraphDispatcher.d.ts.map +1 -0
- package/dist/services/StartTaskGraphDispatcher.js +46 -0
- package/dist/services/StartTaskGraphDispatcher.js.map +1 -0
- package/dist/services/TaskGraphActionRunner.d.ts +34 -0
- package/dist/services/TaskGraphActionRunner.d.ts.map +1 -0
- package/dist/services/TaskGraphActionRunner.js +95 -0
- package/dist/services/TaskGraphActionRunner.js.map +1 -0
- package/dist/services/TaskGraphAgentRunner.d.ts +28 -0
- package/dist/services/TaskGraphAgentRunner.d.ts.map +1 -0
- package/dist/services/TaskGraphAgentRunner.js +104 -0
- package/dist/services/TaskGraphAgentRunner.js.map +1 -0
- package/dist/services/TaskGraphContinuationDeliverer.d.ts +70 -0
- package/dist/services/TaskGraphContinuationDeliverer.d.ts.map +1 -0
- package/dist/services/TaskGraphContinuationDeliverer.js +162 -0
- package/dist/services/TaskGraphContinuationDeliverer.js.map +1 -0
- package/dist/services/TaskGraphPromptRunner.d.ts +31 -0
- package/dist/services/TaskGraphPromptRunner.d.ts.map +1 -0
- package/dist/services/TaskGraphPromptRunner.js +134 -0
- package/dist/services/TaskGraphPromptRunner.js.map +1 -0
- package/dist/services/TaskGraphProviderFactory.d.ts +39 -0
- package/dist/services/TaskGraphProviderFactory.d.ts.map +1 -0
- package/dist/services/TaskGraphProviderFactory.js +28 -0
- package/dist/services/TaskGraphProviderFactory.js.map +1 -0
- package/dist/telephony/RingCentralTelephonyService.js +1 -1
- package/dist/telephony/RingCentralTelephonyService.js.map +1 -1
- package/dist/telephony/TwilioTelephonyRouter.js +1 -1
- package/dist/telephony/TwilioTelephonyRouter.js.map +1 -1
- package/dist/telephony/VonageTelephonyRouter.js +1 -1
- package/dist/telephony/VonageTelephonyRouter.js.map +1 -1
- package/package.json +92 -89
- package/src/__tests__/RealtimeClientSessionResolver.test.ts +1 -1
- package/src/__tests__/ResolverBase.frozenRecordMapping.test.ts +133 -0
- package/src/__tests__/ResolverBase.transportMapping.test.ts +289 -0
- package/src/__tests__/SessionManager.test.ts +1 -1
- package/src/__tests__/TaskGraphContinuationDeliverer.test.ts +249 -0
- package/src/__tests__/TaskGraphFrameResolver.test.ts +136 -0
- package/src/__tests__/WidgetSessionService.test.ts +1 -1
- package/src/__tests__/databaseAbstraction.test.ts +1 -1
- package/src/__tests__/magicLinkService.provisionLog.test.ts +1 -1
- package/src/__tests__/resolverBase.rls.test.ts +3 -0
- package/src/__tests__/secretRedactor.failOpen.test.ts +135 -0
- package/src/__tests__/widgetGuestElevation.test.ts +1 -1
- package/src/auth/exampleNewUserSubClass.ts +1 -1
- package/src/auth/index.ts +10 -6
- package/src/auth/magicLink/MagicLinkService.ts +1 -1
- package/src/auth/newUsers.ts +1 -1
- package/src/context.ts +2 -2
- package/src/generated/generated.ts +955 -2735
- package/src/generic/ResolverBase.ts +52 -17
- package/src/index.ts +108 -43
- package/src/logging/secretRedactor.ts +43 -0
- package/src/middleware/BaseServerMiddleware.ts +5 -0
- package/src/realtimeWidget/WidgetSessionService.ts +1 -1
- package/src/realtimeWidget/widgetGuestElevation.ts +1 -1
- package/src/resolvers/ActionResolver.ts +13 -0
- package/src/resolvers/ComponentRegistryResolver.ts +1 -1
- package/src/resolvers/EntityPermissionResolver.ts +1 -1
- package/src/resolvers/IntegrationDiscoveryResolver.ts +12 -2
- package/src/resolvers/PotentialDuplicateRecordResolver.ts +1 -1
- package/src/resolvers/RealtimeClientSessionResolver.ts +13 -0
- package/src/resolvers/SearchEntitiesResolver.ts +1 -1
- package/src/resolvers/SqlLoggingConfigResolver.ts +1 -2
- package/src/resolvers/SyncRolesUsersResolver.ts +2 -2
- package/src/resolvers/TaskGraphFrameResolver.ts +160 -0
- package/src/resolvers/UserFavoriteResolver.ts +1 -1
- package/src/rest/OAuthCallbackHandler.ts +1 -1
- package/src/rest/RESTEndpointHandler.ts +1 -15
- package/src/rest/SignatureWebhookHandler.ts +1 -1
- package/src/services/DurableEntityActionTaskSubmitter.ts +78 -0
- package/src/services/ScheduledJobsService.ts +1 -1
- package/src/services/StartTaskGraphDispatcher.ts +78 -0
- package/src/services/TaskGraphActionRunner.ts +99 -0
- package/src/services/TaskGraphAgentRunner.ts +115 -0
- package/src/services/TaskGraphContinuationDeliverer.ts +181 -0
- package/src/services/TaskGraphPromptRunner.ts +144 -0
- package/src/services/TaskGraphProviderFactory.ts +53 -0
- package/src/telephony/RingCentralTelephonyService.ts +1 -1
- package/src/telephony/TwilioTelephonyRouter.ts +1 -1
- package/src/telephony/VonageTelephonyRouter.ts +1 -1
- package/dist/resolvers/ReportResolver.d.ts +0 -24
- package/dist/resolvers/ReportResolver.d.ts.map +0 -1
- package/dist/resolvers/ReportResolver.js +0 -198
- package/dist/resolvers/ReportResolver.js.map +0 -1
- package/dist/resolvers/TaskResolver.d.ts +0 -31
- package/dist/resolvers/TaskResolver.d.ts.map +0 -1
- package/dist/resolvers/TaskResolver.js +0 -157
- package/dist/resolvers/TaskResolver.js.map +0 -1
- package/dist/services/TaskOrchestrator.d.ts +0 -130
- package/dist/services/TaskOrchestrator.d.ts.map +0 -1
- package/dist/services/TaskOrchestrator.js +0 -692
- package/dist/services/TaskOrchestrator.js.map +0 -1
- package/src/resolvers/ReportResolver.ts +0 -165
- package/src/resolvers/TaskResolver.ts +0 -148
- package/src/resolvers/__tests__/ReportResolver.test.ts +0 -279
- package/src/services/TaskOrchestrator.ts +0 -873
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview MJServer's implementation of the task-graph `TaskContinuationDeliverer` seam.
|
|
3
|
+
*
|
|
4
|
+
* **The dispatcher shipped with nowhere to deliver.** `StartTaskGraphDispatcher` constructed it
|
|
5
|
+
* without a deliverer at all, so a graph that finished logged its outcome, marked itself delivered,
|
|
6
|
+
* and said nothing to the conversation that asked for it. Durable execution nobody hears about is
|
|
7
|
+
* half a promise — the same shape as Phase 2's dispatcher that ran nothing.
|
|
8
|
+
*
|
|
9
|
+
* Posting into a conversation is a host concern by design: the task-graph package must not depend on
|
|
10
|
+
* the conversation layer, and cannot depend on the agent framework at all without a cycle (agents
|
|
11
|
+
* submit graphs). This adapter is where those dependencies are allowed to live.
|
|
12
|
+
*
|
|
13
|
+
* @module @memberjunction/server
|
|
14
|
+
*/
|
|
15
|
+
import { LogError, LogStatus } from '@memberjunction/core';
|
|
16
|
+
import { AgentRunner } from '@memberjunction/ai-agents';
|
|
17
|
+
import { ChatMessageRole } from '@memberjunction/ai';
|
|
18
|
+
/** How many per-task lines a posted summary shows before collapsing the rest into a count. */
|
|
19
|
+
const MAX_LISTED_TASKS = 20;
|
|
20
|
+
/**
|
|
21
|
+
* Delivers a finished graph's outcome — as a conversation message, or by starting the submitting
|
|
22
|
+
* agent a fresh turn.
|
|
23
|
+
*
|
|
24
|
+
* **The chain is bounded, and that is what took a schema change to make true.** A graph may declare
|
|
25
|
+
* `continuation: 'reinvoke'`, and the agent it restarts can emit another graph, which can reinvoke
|
|
26
|
+
* again. The guard for that (`MAX_REINVOKE_DEPTH`) shipped in Phase 3, but the number it compared
|
|
27
|
+
* was permanently zero: `TaskGraphService.Submit` reads `ReinvokeDepth` from its caller, and a
|
|
28
|
+
* reinvoked agent had no way to know it *was* a continuation. `AIAgentRun.ContinuationDepth` closes
|
|
29
|
+
* that loop — this stamps depth + 1 on the run it starts, `BaseAgent` passes it into any graph that
|
|
30
|
+
* run submits, and the cap finally compares against something real.
|
|
31
|
+
*/
|
|
32
|
+
export class TaskGraphContinuationDeliverer {
|
|
33
|
+
/**
|
|
34
|
+
* @param providerFactory mints a fresh provider per delivery, for the same reason the dispatcher
|
|
35
|
+
* does: deliveries run outside any request and concurrently with task execution, so
|
|
36
|
+
* sharing one provider would share one transaction scope across unrelated work.
|
|
37
|
+
*/
|
|
38
|
+
constructor(providerFactory, contextUser) {
|
|
39
|
+
this.providerFactory = providerFactory;
|
|
40
|
+
this.contextUser = contextUser;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Posts the roll-up as an AI-role message in the graph's conversation.
|
|
44
|
+
*
|
|
45
|
+
* Never throws. The dispatcher calls this inside the compare-and-swap that marks a completion
|
|
46
|
+
* delivered; an error escaping would either abort that guard or leave the graph looking
|
|
47
|
+
* undelivered and re-notifying on every later sweep.
|
|
48
|
+
*/
|
|
49
|
+
async PostMessage(params) {
|
|
50
|
+
try {
|
|
51
|
+
if (!params.ConversationDetailID) {
|
|
52
|
+
// A graph submitted headlessly — a schedule, an entity-change trigger, an API call —
|
|
53
|
+
// has no conversation to answer. Not an error; most workflows are in this shape.
|
|
54
|
+
LogStatus(`[TaskGraphContinuationDeliverer] "${params.WorkflowName}" finished with no conversation to post to.`);
|
|
55
|
+
return;
|
|
56
|
+
}
|
|
57
|
+
const provider = await this.providerFactory.CreateProvider();
|
|
58
|
+
const conversationID = await this.resolveConversationID(params.ConversationDetailID, provider);
|
|
59
|
+
if (!conversationID) {
|
|
60
|
+
LogError(`[TaskGraphContinuationDeliverer] Conversation detail ${params.ConversationDetailID} could not be loaded — ` +
|
|
61
|
+
`"${params.WorkflowName}" has nowhere to post its outcome.`);
|
|
62
|
+
return;
|
|
63
|
+
}
|
|
64
|
+
const detail = await provider.GetEntityObject('MJ: Conversation Details', this.contextUser);
|
|
65
|
+
detail.NewRecord();
|
|
66
|
+
detail.ConversationID = conversationID;
|
|
67
|
+
detail.Role = 'AI';
|
|
68
|
+
detail.Status = 'Complete';
|
|
69
|
+
detail.HiddenToUser = false;
|
|
70
|
+
detail.Message = this.renderMessage(params);
|
|
71
|
+
if (!(await detail.Save())) {
|
|
72
|
+
LogError(`[TaskGraphContinuationDeliverer] Could not post the outcome of "${params.WorkflowName}": ` +
|
|
73
|
+
`${detail.LatestResult?.CompleteMessage ?? 'unknown error'}`);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
catch (e) {
|
|
77
|
+
LogError(`[TaskGraphContinuationDeliverer] Posting the outcome of "${params.WorkflowName}" threw`, undefined, e);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Starts the submitting agent a fresh turn carrying the graph's outcome.
|
|
82
|
+
*
|
|
83
|
+
* Never throws, for the same reason `PostMessage` does not: the dispatcher calls this inside the
|
|
84
|
+
* compare-and-swap that marks a completion delivered.
|
|
85
|
+
*
|
|
86
|
+
* The new run records `ReinvokeDepth + 1` so the chain is bounded. The dispatcher has already
|
|
87
|
+
* refused to call this when the cap is reached — it degrades to `PostMessage` — so arriving here
|
|
88
|
+
* means there is budget left, and stamping the depth is what keeps that true for the next hop.
|
|
89
|
+
*/
|
|
90
|
+
async Reinvoke(params) {
|
|
91
|
+
try {
|
|
92
|
+
if (!params.SubmittedByAgentRunID) {
|
|
93
|
+
// Nothing to restart. A graph with no submitting run came from a schedule or a
|
|
94
|
+
// trigger, where "continue the conversation" has no meaning.
|
|
95
|
+
LogStatus(`[TaskGraphContinuationDeliverer] "${params.WorkflowName}" asked to reinvoke but records no submitting agent run — posting instead.`);
|
|
96
|
+
await this.PostMessage(params);
|
|
97
|
+
return;
|
|
98
|
+
}
|
|
99
|
+
const provider = await this.providerFactory.CreateProvider();
|
|
100
|
+
const priorRun = await provider.GetEntityObject('MJ: AI Agent Runs', this.contextUser);
|
|
101
|
+
if (!(await priorRun.Load(params.SubmittedByAgentRunID))) {
|
|
102
|
+
LogError(`[TaskGraphContinuationDeliverer] Submitting run ${params.SubmittedByAgentRunID} could not be loaded — posting "${params.WorkflowName}" instead.`);
|
|
103
|
+
await this.PostMessage(params);
|
|
104
|
+
return;
|
|
105
|
+
}
|
|
106
|
+
const agent = await provider.GetEntityObject('MJ: AI Agents', this.contextUser);
|
|
107
|
+
if (!(await agent.Load(priorRun.AgentID))) {
|
|
108
|
+
LogError(`[TaskGraphContinuationDeliverer] Agent ${priorRun.AgentID} could not be loaded — posting "${params.WorkflowName}" instead.`);
|
|
109
|
+
await this.PostMessage(params);
|
|
110
|
+
return;
|
|
111
|
+
}
|
|
112
|
+
await new AgentRunner().RunAgent({
|
|
113
|
+
agent,
|
|
114
|
+
conversationMessages: [{ role: ChatMessageRole.user, content: this.renderMessage(params) }],
|
|
115
|
+
contextUser: this.contextUser,
|
|
116
|
+
conversationDetailId: params.ConversationDetailID ?? undefined,
|
|
117
|
+
// The load-bearing value: without it the next graph this run submits restarts the
|
|
118
|
+
// chain at zero and the cap never fires.
|
|
119
|
+
continuationDepth: params.ReinvokeDepth + 1,
|
|
120
|
+
});
|
|
121
|
+
}
|
|
122
|
+
catch (e) {
|
|
123
|
+
LogError(`[TaskGraphContinuationDeliverer] Reinvoking for "${params.WorkflowName}" threw`, undefined, e);
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
/** The conversation a detail belongs to. */
|
|
127
|
+
async resolveConversationID(conversationDetailID, provider) {
|
|
128
|
+
const detail = await provider.GetEntityObject('MJ: Conversation Details', this.contextUser);
|
|
129
|
+
return (await detail.Load(conversationDetailID)) ? detail.ConversationID : null;
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* Renders the outcome as Markdown.
|
|
133
|
+
*
|
|
134
|
+
* Per-task lines rather than one aggregate status: a graph where nine of ten steps succeeded is a
|
|
135
|
+
* materially different message from one that failed outright, and the roll-up alone cannot say
|
|
136
|
+
* which step went wrong. Long graphs truncate so a fifty-step workflow does not bury the
|
|
137
|
+
* conversation — the task rows remain the complete record.
|
|
138
|
+
*/
|
|
139
|
+
renderMessage(params) {
|
|
140
|
+
const lines = [`**${params.WorkflowName}** finished.`, '', params.Summary];
|
|
141
|
+
if (params.Tasks.length > 0) {
|
|
142
|
+
lines.push('');
|
|
143
|
+
for (const task of params.Tasks.slice(0, MAX_LISTED_TASKS)) {
|
|
144
|
+
const detail = task.ErrorMessage ?? task.Summary;
|
|
145
|
+
lines.push(`- ${this.statusIcon(task.Status)} **${task.Name}** — ${task.Status}${detail ? `: ${detail}` : ''}`);
|
|
146
|
+
}
|
|
147
|
+
if (params.Tasks.length > MAX_LISTED_TASKS) {
|
|
148
|
+
lines.push(`- …and ${params.Tasks.length - MAX_LISTED_TASKS} more`);
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
return lines.join('\n');
|
|
152
|
+
}
|
|
153
|
+
statusIcon(status) {
|
|
154
|
+
switch (status) {
|
|
155
|
+
case 'Complete': return '✅';
|
|
156
|
+
case 'Failed': return '❌';
|
|
157
|
+
case 'Cancelled': return '⊘';
|
|
158
|
+
default: return '•';
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
//# sourceMappingURL=TaskGraphContinuationDeliverer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TaskGraphContinuationDeliverer.js","sourceRoot":"","sources":["../../src/services/TaskGraphContinuationDeliverer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import type { TaskPromptRunner, TaskPromptRunParams, TaskPromptRunResult } from '@memberjunction/task-graph';
|
|
2
|
+
export declare class TaskGraphPromptRunner implements TaskPromptRunner {
|
|
3
|
+
RunPromptForTask(params: TaskPromptRunParams): Promise<TaskPromptRunResult>;
|
|
4
|
+
/**
|
|
5
|
+
* What the prompt's template can see.
|
|
6
|
+
*
|
|
7
|
+
* The payload arrives under a **placeholder name** rather than being spread across the top level,
|
|
8
|
+
* so a workflow author writes `{{ _CURRENT_PAYLOAD }}` and gets the whole thing — and a payload
|
|
9
|
+
* key can never collide with a template parameter and silently win.
|
|
10
|
+
*
|
|
11
|
+
* `flowContext` carries what the step knows about its own position: what its prerequisites
|
|
12
|
+
* produced. Without it a prompt is reasoning about the payload alone and cannot refer to the step
|
|
13
|
+
* immediately before it.
|
|
14
|
+
*/
|
|
15
|
+
private buildData;
|
|
16
|
+
/**
|
|
17
|
+
* Reads the model's response as a payload update, and notices when it wants to stop.
|
|
18
|
+
*
|
|
19
|
+
* **A prompt is the only node kind that can end the workflow early**, because it is the only one
|
|
20
|
+
* doing open-ended reasoning: it can conclude the remaining steps are unnecessary. That is
|
|
21
|
+
* expressed as a Chat-shaped response, and the dispatcher honours it by skipping what remains and
|
|
22
|
+
* settling the parent Complete — rather than treating an early finish as an abandoned graph.
|
|
23
|
+
*
|
|
24
|
+
* Non-JSON is not an error. A prompt that answers in prose has still answered; it simply carries
|
|
25
|
+
* no structured update, so it becomes a message rather than a payload merge.
|
|
26
|
+
*/
|
|
27
|
+
private parseResponse;
|
|
28
|
+
/** Separates "here is an update" from "we are done, tell them this". */
|
|
29
|
+
private interpret;
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=TaskGraphPromptRunner.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TaskGraphPromptRunner.d.ts","sourceRoot":"","sources":["../../src/services/TaskGraphPromptRunner.ts"],"names":[],"mappings":"AAqBA,OAAO,KAAK,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAK7G,qBAAa,qBAAsB,YAAW,gBAAgB;IAC7C,gBAAgB,CAAC,MAAM,EAAE,mBAAmB,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAoCxF;;;;;;;;;;OAUG;IACH,OAAO,CAAC,SAAS;IAqBjB;;;;;;;;;;OAUG;IACH,OAAO,CAAC,aAAa;IAwBrB,wEAAwE;IACxE,OAAO,CAAC,SAAS;CAYpB"}
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview MJServer's implementation of the task-graph `TaskPromptRunner` seam.
|
|
3
|
+
*
|
|
4
|
+
* The third sibling of {@link TaskGraphAgentRunner} and {@link TaskGraphActionRunner}, and here for
|
|
5
|
+
* the same reason: the dispatcher knows *when* a prompt-assigned node should run and nothing about
|
|
6
|
+
* how a prompt executes. The AI engine depends on the entity layer the dispatcher also builds on, so
|
|
7
|
+
* importing it into `@memberjunction/task-graph` would make every consumer of durable execution load
|
|
8
|
+
* the prompt engine too.
|
|
9
|
+
*
|
|
10
|
+
* **Why prompt nodes matter enough to have their own runner.** The `User Onboarding Flow Agent`
|
|
11
|
+
* ships with six of them. Until this existed, every one of its steps was refused at submission and
|
|
12
|
+
* the agent could not run at all — the refusal was correct (a persisted step nothing can execute
|
|
13
|
+
* waits forever) but it made a shipped workflow unusable rather than merely unfinished.
|
|
14
|
+
*
|
|
15
|
+
* @module @memberjunction/server
|
|
16
|
+
*/
|
|
17
|
+
import { AIPromptRunner } from '@memberjunction/ai-prompts';
|
|
18
|
+
import { AIEngine } from '@memberjunction/aiengine';
|
|
19
|
+
import { AIPromptParams } from '@memberjunction/ai-core-plus';
|
|
20
|
+
import { LogError } from '@memberjunction/core';
|
|
21
|
+
import { UUIDsEqual } from '@memberjunction/global';
|
|
22
|
+
/** The placeholder a workflow prompt uses to receive the payload (plan §5.7). */
|
|
23
|
+
const CURRENT_PAYLOAD_PLACEHOLDER = '_CURRENT_PAYLOAD';
|
|
24
|
+
export class TaskGraphPromptRunner {
|
|
25
|
+
async RunPromptForTask(params) {
|
|
26
|
+
try {
|
|
27
|
+
await AIEngine.Instance.Config(false, params.ContextUser);
|
|
28
|
+
const prompt = AIEngine.Instance.Prompts.find((p) => UUIDsEqual(p.ID, params.PromptID));
|
|
29
|
+
if (!prompt) {
|
|
30
|
+
return { Success: false, ErrorMessage: `Prompt ${params.PromptID} is not in the engine's metadata.` };
|
|
31
|
+
}
|
|
32
|
+
const promptParams = new AIPromptParams();
|
|
33
|
+
promptParams.prompt = prompt;
|
|
34
|
+
promptParams.contextUser = params.ContextUser;
|
|
35
|
+
promptParams.data = this.buildData(params);
|
|
36
|
+
const result = await new AIPromptRunner().ExecutePrompt(promptParams);
|
|
37
|
+
if (!result?.success) {
|
|
38
|
+
return {
|
|
39
|
+
Success: false,
|
|
40
|
+
ErrorMessage: result?.errorMessage ?? 'The prompt did not return a result.',
|
|
41
|
+
PromptRunID: result?.promptRun?.ID,
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
const parsed = this.parseResponse(result.result);
|
|
45
|
+
return {
|
|
46
|
+
Success: true,
|
|
47
|
+
Output: parsed.payload,
|
|
48
|
+
PromptRunID: result.promptRun?.ID,
|
|
49
|
+
ChatMessage: parsed.chatMessage,
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
catch (e) {
|
|
53
|
+
const message = e instanceof Error ? e.message : String(e);
|
|
54
|
+
LogError(`[TaskGraphPromptRunner] Task ${params.TaskID} failed: ${message}`);
|
|
55
|
+
return { Success: false, ErrorMessage: message };
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* What the prompt's template can see.
|
|
60
|
+
*
|
|
61
|
+
* The payload arrives under a **placeholder name** rather than being spread across the top level,
|
|
62
|
+
* so a workflow author writes `{{ _CURRENT_PAYLOAD }}` and gets the whole thing — and a payload
|
|
63
|
+
* key can never collide with a template parameter and silently win.
|
|
64
|
+
*
|
|
65
|
+
* `flowContext` carries what the step knows about its own position: what its prerequisites
|
|
66
|
+
* produced. Without it a prompt is reasoning about the payload alone and cannot refer to the step
|
|
67
|
+
* immediately before it.
|
|
68
|
+
*/
|
|
69
|
+
buildData(params) {
|
|
70
|
+
const payload = params.InputPayload && typeof params.InputPayload === 'object'
|
|
71
|
+
? params.InputPayload
|
|
72
|
+
: {};
|
|
73
|
+
const dependencyOutputs = {};
|
|
74
|
+
for (const [taskID, output] of params.DependencyOutputs)
|
|
75
|
+
dependencyOutputs[taskID] = output;
|
|
76
|
+
return {
|
|
77
|
+
...(params.TemplateParameters ?? {}),
|
|
78
|
+
// JSON, not the object. A template writes `{{ _CURRENT_PAYLOAD }}` and expects to SEE
|
|
79
|
+
// the payload; handing the renderer an object yields "[object Object]", and the model
|
|
80
|
+
// then answers about a value it was never shown. That failure is invisible from the
|
|
81
|
+
// outside — the prompt run succeeds, the response is well-formed, and it is about
|
|
82
|
+
// nothing. It is what kept the Content Pipeline reviewer rejecting a draft it could not
|
|
83
|
+
// read, on every iteration, forever.
|
|
84
|
+
[CURRENT_PAYLOAD_PLACEHOLDER]: JSON.stringify(payload, null, 2),
|
|
85
|
+
flowContext: JSON.stringify({ dependencyOutputs }, null, 2),
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Reads the model's response as a payload update, and notices when it wants to stop.
|
|
90
|
+
*
|
|
91
|
+
* **A prompt is the only node kind that can end the workflow early**, because it is the only one
|
|
92
|
+
* doing open-ended reasoning: it can conclude the remaining steps are unnecessary. That is
|
|
93
|
+
* expressed as a Chat-shaped response, and the dispatcher honours it by skipping what remains and
|
|
94
|
+
* settling the parent Complete — rather than treating an early finish as an abandoned graph.
|
|
95
|
+
*
|
|
96
|
+
* Non-JSON is not an error. A prompt that answers in prose has still answered; it simply carries
|
|
97
|
+
* no structured update, so it becomes a message rather than a payload merge.
|
|
98
|
+
*/
|
|
99
|
+
parseResponse(raw) {
|
|
100
|
+
if (raw == null)
|
|
101
|
+
return {};
|
|
102
|
+
if (typeof raw === 'object') {
|
|
103
|
+
return this.interpret(raw);
|
|
104
|
+
}
|
|
105
|
+
if (typeof raw === 'string') {
|
|
106
|
+
const text = raw.trim();
|
|
107
|
+
const fenced = text.replace(/^```(?:json)?\s*/i, '').replace(/\s*```$/, '');
|
|
108
|
+
try {
|
|
109
|
+
const parsed = JSON.parse(fenced);
|
|
110
|
+
if (parsed && typeof parsed === 'object' && !Array.isArray(parsed)) {
|
|
111
|
+
return this.interpret(parsed);
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
catch {
|
|
115
|
+
// Prose, not JSON — see above.
|
|
116
|
+
}
|
|
117
|
+
return { chatMessage: text };
|
|
118
|
+
}
|
|
119
|
+
return {};
|
|
120
|
+
}
|
|
121
|
+
/** Separates "here is an update" from "we are done, tell them this". */
|
|
122
|
+
interpret(obj) {
|
|
123
|
+
const nextStep = obj['nextStep'];
|
|
124
|
+
const wantsChat = nextStep?.type === 'Chat' || obj['taskComplete'] === true;
|
|
125
|
+
const message = typeof obj['message'] === 'string' ? obj['message'] : undefined;
|
|
126
|
+
if (wantsChat && message) {
|
|
127
|
+
// The payload still merges: a prompt that both concluded and produced data should not
|
|
128
|
+
// lose the data because it also had something to say.
|
|
129
|
+
return { payload: obj, chatMessage: message };
|
|
130
|
+
}
|
|
131
|
+
return { payload: obj };
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
//# sourceMappingURL=TaskGraphPromptRunner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TaskGraphPromptRunner.js","sourceRoot":"","sources":["../../src/services/TaskGraphPromptRunner.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview MJServer's implementation of the task-graph `ProviderFactory` seam.
|
|
3
|
+
*
|
|
4
|
+
* The durable dispatcher runs outside any HTTP request and executes tasks concurrently, so it must
|
|
5
|
+
* never share one provider — and therefore one transaction scope and one set of entity instances —
|
|
6
|
+
* across parallel work. It needs a way to mint providers on demand.
|
|
7
|
+
*
|
|
8
|
+
* Rather than have `@memberjunction/task-graph` import MJServer to get at that machinery (which
|
|
9
|
+
* would invert the dependency: MJServer depends on task-graph, not the reverse), the package
|
|
10
|
+
* declares a `ProviderFactory` interface and the host supplies an implementation. This is that
|
|
11
|
+
* implementation.
|
|
12
|
+
*
|
|
13
|
+
* It mints exactly what the per-request path already mints — a fresh provider over the **shared
|
|
14
|
+
* connection pool**, with metadata reuse — which is proven cheap at request scale and is why the
|
|
15
|
+
* plan chose this mechanism rather than inventing a dispatcher-specific one. The pool remains the
|
|
16
|
+
* real concurrency governor; the dispatcher's own `MaxConcurrentTasks` sits below it.
|
|
17
|
+
*
|
|
18
|
+
* @module @memberjunction/server
|
|
19
|
+
*/
|
|
20
|
+
import { DatabaseProviderBase, IMetadataProvider } from '@memberjunction/core';
|
|
21
|
+
import type { ProviderFactory } from '@memberjunction/task-graph';
|
|
22
|
+
import sql from 'mssql';
|
|
23
|
+
/**
|
|
24
|
+
* Creates providers for the dispatcher, one per task execution.
|
|
25
|
+
*
|
|
26
|
+
* SQL Server path only for now, matching where the dispatcher is hosted. The PostgreSQL branch of
|
|
27
|
+
* `createPerRequestProviders` is deliberately not duplicated here — when PG hosting is needed, the
|
|
28
|
+
* right move is to lift the shared branch out of `context.ts` rather than fork it a second time.
|
|
29
|
+
*/
|
|
30
|
+
export declare class TaskGraphProviderFactory implements ProviderFactory {
|
|
31
|
+
private readonly pool;
|
|
32
|
+
constructor(pool: sql.ConnectionPool);
|
|
33
|
+
CreateProvider(): Promise<IMetadataProvider>;
|
|
34
|
+
}
|
|
35
|
+
/** Convenience for hosts that already hold a pool. */
|
|
36
|
+
export declare function CreateTaskGraphProviderFactory(pool: sql.ConnectionPool): ProviderFactory;
|
|
37
|
+
/** Re-exported for hosts that need the concrete type. */
|
|
38
|
+
export type { DatabaseProviderBase };
|
|
39
|
+
//# sourceMappingURL=TaskGraphProviderFactory.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TaskGraphProviderFactory.d.ts","sourceRoot":"","sources":["../../src/services/TaskGraphProviderFactory.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,OAAO,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAC/E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAElE,OAAO,GAAG,MAAM,OAAO,CAAC;AAGxB;;;;;;GAMG;AACH,qBAAa,wBAAyB,YAAW,eAAe;IAChD,OAAO,CAAC,QAAQ,CAAC,IAAI;gBAAJ,IAAI,EAAE,GAAG,CAAC,cAAc;IAExC,cAAc,IAAI,OAAO,CAAC,iBAAiB,CAAC;CAS5D;AAED,sDAAsD;AACtD,wBAAgB,8BAA8B,CAAC,IAAI,EAAE,GAAG,CAAC,cAAc,GAAG,eAAe,CAExF;AAED,yDAAyD;AACzD,YAAY,EAAE,oBAAoB,EAAE,CAAC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { SQLServerDataProvider, SQLServerProviderConfigData } from '@memberjunction/sqlserver-dataprovider';
|
|
2
|
+
import { mj_core_schema } from '../config.js';
|
|
3
|
+
/**
|
|
4
|
+
* Creates providers for the dispatcher, one per task execution.
|
|
5
|
+
*
|
|
6
|
+
* SQL Server path only for now, matching where the dispatcher is hosted. The PostgreSQL branch of
|
|
7
|
+
* `createPerRequestProviders` is deliberately not duplicated here — when PG hosting is needed, the
|
|
8
|
+
* right move is to lift the shared branch out of `context.ts` rather than fork it a second time.
|
|
9
|
+
*/
|
|
10
|
+
export class TaskGraphProviderFactory {
|
|
11
|
+
constructor(pool) {
|
|
12
|
+
this.pool = pool;
|
|
13
|
+
}
|
|
14
|
+
async CreateProvider() {
|
|
15
|
+
// `loadIfNeeded = false` (the trailing false) reuses already-loaded metadata rather than
|
|
16
|
+
// re-reading it per provider — the difference between "cheap enough to do per task" and
|
|
17
|
+
// "prohibitively expensive".
|
|
18
|
+
const config = new SQLServerProviderConfigData(this.pool, mj_core_schema, 0, undefined, undefined, false);
|
|
19
|
+
const provider = new SQLServerDataProvider();
|
|
20
|
+
await provider.Config(config);
|
|
21
|
+
return provider;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
/** Convenience for hosts that already hold a pool. */
|
|
25
|
+
export function CreateTaskGraphProviderFactory(pool) {
|
|
26
|
+
return new TaskGraphProviderFactory(pool);
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=TaskGraphProviderFactory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TaskGraphProviderFactory.js","sourceRoot":"","sources":["../../src/services/TaskGraphProviderFactory.ts"],"names":[],"mappings":"AAqBA,OAAO,EAAE,qBAAqB,EAAE,2BAA2B,EAAE,MAAM,wCAAwC,CAAC;AAE5G,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAE9C;;;;;;GAMG;AACH,MAAM,OAAO,wBAAwB;IACjC,YAA6B,IAAwB;QAAxB,SAAI,GAAJ,IAAI,CAAoB;IAAG,CAAC;IAElD,KAAK,CAAC,cAAc;QACvB,yFAAyF;QACzF,wFAAwF;QACxF,6BAA6B;QAC7B,MAAM,MAAM,GAAG,IAAI,2BAA2B,CAAC,IAAI,CAAC,IAAI,EAAE,cAAc,EAAE,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;QAC1G,MAAM,QAAQ,GAAG,IAAI,qBAAqB,EAAE,CAAC;QAC7C,MAAM,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC9B,OAAO,QAAwC,CAAC;IACpD,CAAC;CACJ;AAED,sDAAsD;AACtD,MAAM,UAAU,8BAA8B,CAAC,IAAwB;IACnE,OAAO,IAAI,wBAAwB,CAAC,IAAI,CAAC,CAAC;AAC9C,CAAC"}
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
* @module @memberjunction/server/telephony
|
|
18
18
|
*/
|
|
19
19
|
import { RunView, Metadata, LogError, LogStatus } from '@memberjunction/core';
|
|
20
|
-
import { UserCache } from '@memberjunction/
|
|
20
|
+
import { UserCache } from '@memberjunction/generic-database-provider';
|
|
21
21
|
import { AIBridgeEngine } from '@memberjunction/ai-bridge-server';
|
|
22
22
|
import { CreateBridgeRealtimeSession } from '@memberjunction/ai-agents';
|
|
23
23
|
import { CARRIER_SAMPLE_RATE_CONFIG_KEY, DIRECTION_CONFIG_KEY, FROM_NUMBER_CONFIG_KEY, INBOUND_CALL_ID_CONFIG_KEY, } from '@memberjunction/ai-bridge-base';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RingCentralTelephonyService.js","sourceRoot":"","sources":["../../src/telephony/RingCentralTelephonyService.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAE,OAAO,EAA+B,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAE3G,OAAO,EAAE,SAAS,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"RingCentralTelephonyService.js","sourceRoot":"","sources":["../../src/telephony/RingCentralTelephonyService.ts"],"names":[],"mappings":"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"}
|
|
@@ -19,7 +19,7 @@ import { Router, urlencoded } from 'express';
|
|
|
19
19
|
import { WebSocketServer } from 'ws';
|
|
20
20
|
import { RegisterMediaUpgradeRoute } from './media-upgrade-router.js';
|
|
21
21
|
import { LogError, LogStatus, Metadata } from '@memberjunction/core';
|
|
22
|
-
import { UserCache } from '@memberjunction/
|
|
22
|
+
import { UserCache } from '@memberjunction/generic-database-provider';
|
|
23
23
|
import { verifyTwilioSignature, resolveInboundCall, buildInboundVoiceTwiML, } from '@memberjunction/ai-bridge-twilio';
|
|
24
24
|
import { TwilioCallMediaRegistry } from './twilioMediaRegistry.js';
|
|
25
25
|
import { TwilioTelephonyService } from './TwilioTelephonyService.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TwilioTelephonyRouter.js","sourceRoot":"","sources":["../../src/telephony/TwilioTelephonyRouter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAE,MAAM,EAAE,UAAU,EAA+B,MAAM,SAAS,CAAC;AAC1E,OAAO,EAAE,eAAe,EAAkB,MAAM,IAAI,CAAC;AACrD,OAAO,EAAE,yBAAyB,EAAE,MAAM,2BAA2B,CAAC;AACtE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAA+B,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAClG,OAAO,EAAE,SAAS,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"TwilioTelephonyRouter.js","sourceRoot":"","sources":["../../src/telephony/TwilioTelephonyRouter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAE,MAAM,EAAE,UAAU,EAA+B,MAAM,SAAS,CAAC;AAC1E,OAAO,EAAE,eAAe,EAAkB,MAAM,IAAI,CAAC;AACrD,OAAO,EAAE,yBAAyB,EAAE,MAAM,2BAA2B,CAAC;AACtE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAA+B,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAClG,OAAO,EAAE,SAAS,EAAE,MAAM,2CAA2C,CAAC;AACtE,OAAO,EACH,qBAAqB,EACrB,kBAAkB,EAClB,sBAAsB,GAEzB,MAAM,kCAAkC,CAAC;AAE1C,OAAO,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AACnE,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AAErE,6DAA6D;AAC7D,MAAM,CAAC,MAAM,2BAA2B,GAAG,mBAAmB,CAAC;AAE/D,iFAAiF;AACjF,MAAM,CAAC,MAAM,qBAAqB,GAAG,yBAAyB,CAAC;AAE/D,uFAAuF;AACvF,MAAM,cAAc,GAChB,gIAAgI,CAAC;AAQrI;;;GAGG;AACH,MAAM,UAAU,4BAA4B,CACxC,SAAiB,EACjB,MAA6B;IAO7B,MAAM,QAAQ,GAAG,IAAI,uBAAuB,EAAE,CAAC;IAC/C,MAAM,OAAO,GAAG,IAAI,sBAAsB,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAC7D,MAAM,YAAY,GAAG,MAAM,EAAE,CAAC;IAE9B,2FAA2F;IAC3F,YAAY,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,GAAY,EAAE,GAAa,EAAE,EAAE;QAC/F,MAAM,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;IACnE,CAAC,CAAC,CAAC;IAEH,OAAO;QACH,YAAY;QACZ,uBAAuB,EAAE,GAAG,EAAE,CAAC,uBAAuB,CAAC,QAAQ,CAAC;QAChE,QAAQ;QACR,OAAO;KACV,CAAC;AACN,CAAC;AAED,+GAA+G;AAC/G,KAAK,UAAU,kBAAkB,CAC7B,OAA+B,EAC/B,MAA6B,EAC7B,SAAiB,EACjB,GAAY,EACZ,GAAa;IAEb,MAAM,MAAM,GAAG,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACtC,MAAM,OAAO,GAAG,GAAG,SAAS,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC;IACrE,IAAI,CAAC,MAAM,CAAC,SAAS,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC,SAAS,EAAE,GAAG,CAAC,GAAG,CAAC,oBAAoB,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,CAAC;QAChH,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;QACrE,OAAO;IACX,CAAC;IAED,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC;IACzD,MAAM,OAAO,GAAG,oBAAoB,EAAE,CAAC;IACvC,IAAI,CAAC,OAAO,EAAE,CAAC;QACX,QAAQ,CAAC,kFAAkF,CAAC,CAAC;QAC7F,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QACtD,OAAO;IACX,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,iBAAiB,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;IACtG,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;QACnB,SAAS,CAAC,+BAA+B,OAAO,kBAAkB,MAAM,CAAC,MAAM,IAAI,SAAS,EAAE,CAAC,CAAC;QAChG,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QACtD,OAAO;IACX,CAAC;IACD,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC;AAC1F,CAAC;AAED;;;;GAIG;AACH,SAAS,uBAAuB,CAAC,QAAiC;IAC9D,4FAA4F;IAC5F,+FAA+F;IAC/F,wFAAwF;IACxF,MAAM,GAAG,GAAG,IAAI,eAAe,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;IACpD,GAAG,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC,MAAiB,EAAE,EAAE,CAAC,eAAe,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC;IAC/E,yBAAyB,CAAC,qBAAqB,EAAE,GAAG,CAAC,CAAC;IACtD,SAAS,CAAC,6DAA6D,qBAAqB,EAAE,CAAC,CAAC;AACpG,CAAC;AAED,oGAAoG;AACpG,SAAS,eAAe,CAAC,MAAiB,EAAE,QAAiC;IACzE,IAAI,OAAO,GAAkB,IAAI,CAAC;IAClC,MAAM,OAAO,GAAG,EAAE,IAAI,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,CAAC;IAE3F,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,GAAY,EAAE,EAAE;QAClC,MAAM,OAAO,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC;QACpC,IAAI,CAAC,OAAO,EAAE,CAAC;YACX,OAAO;QACX,CAAC;QACD,IAAI,OAAO,CAAC,KAAK,KAAK,OAAO,IAAI,OAAO,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC;YACtD,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC;YAChC,QAAQ,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC;YACvE,OAAO;QACX,CAAC;QACD,IAAI,OAAO,EAAE,CAAC;YACV,QAAQ,CAAC,eAAe,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAC/C,CAAC;IACL,CAAC,CAAC,CAAC;IACH,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;QACpB,IAAI,OAAO,EAAE,CAAC;YACV,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAC9B,CAAC;IACL,CAAC,CAAC,CAAC;AACP,CAAC;AAED,+FAA+F;AAC/F,SAAS,cAAc,CAAC,GAAY;IAChC,IAAI,CAAC;QACD,MAAM,IAAI,GAAG,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,YAAY,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACxG,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAoB,CAAC;IAC/C,CAAC;IAAC,MAAM,CAAC;QACL,OAAO,IAAI,CAAC;IAChB,CAAC;AACL,CAAC;AAED,wGAAwG;AACxG,SAAS,YAAY,CAAC,IAAa;IAC/B,MAAM,GAAG,GAA2B,EAAE,CAAC;IACvC,IAAI,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;QACnC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAA+B,CAAC,EAAE,CAAC;YACzE,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;gBAC5B,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;YACrB,CAAC;QACL,CAAC;IACL,CAAC;IACD,OAAO,GAAG,CAAC;AACf,CAAC;AAED,6GAA6G;AAC7G,SAAS,oBAAoB;IACzB,MAAM,IAAI,GAAG,SAAS,CAAC,QAAQ,CAAC,aAAa,EAAE,IAAI,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,WAAW,EAAE,KAAK,OAAO,CAAC,IAAI,IAAI,CAAC;IAC/I,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAoD,CAAC,CAAC,mIAAmI;IACnN,IAAI,CAAC,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QACrB,OAAO,IAAI,CAAC;IAChB,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;AAC9B,CAAC"}
|
|
@@ -24,7 +24,7 @@ import { Router, urlencoded, json } from 'express';
|
|
|
24
24
|
import { WebSocketServer } from 'ws';
|
|
25
25
|
import { RegisterMediaUpgradeRoute } from './media-upgrade-router.js';
|
|
26
26
|
import { LogError, LogStatus, Metadata } from '@memberjunction/core';
|
|
27
|
-
import { UserCache } from '@memberjunction/
|
|
27
|
+
import { UserCache } from '@memberjunction/generic-database-provider';
|
|
28
28
|
import { verifyVonageSignature, verifyVonageJwt, resolveInboundCall, buildInboundAnswerNcco, parseVonageControlEvent, } from '@memberjunction/ai-bridge-vonage';
|
|
29
29
|
import { VonageCallMediaRegistry } from './vonageMediaRegistry.js';
|
|
30
30
|
import { VonageTelephonyService } from './VonageTelephonyService.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VonageTelephonyRouter.js","sourceRoot":"","sources":["../../src/telephony/VonageTelephonyRouter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,EAA+B,MAAM,SAAS,CAAC;AAChF,OAAO,EAAE,eAAe,EAAkB,MAAM,IAAI,CAAC;AAErD,OAAO,EAAE,yBAAyB,EAAE,MAAM,2BAA2B,CAAC;AACtE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAA+B,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAClG,OAAO,EAAE,SAAS,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"VonageTelephonyRouter.js","sourceRoot":"","sources":["../../src/telephony/VonageTelephonyRouter.ts"],"names":[],"mappings":"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"}
|