@memberjunction/ai-agents 6.2.0-edge.0 → 6.2.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/README.md +43 -0
- package/dist/AgentDataPreloader.d.ts +4 -0
- package/dist/AgentDataPreloader.d.ts.map +1 -1
- package/dist/AgentDataPreloader.js +10 -2
- package/dist/AgentDataPreloader.js.map +1 -1
- package/dist/AgentDecisionService.d.ts +83 -0
- package/dist/AgentDecisionService.d.ts.map +1 -0
- package/dist/AgentDecisionService.js +155 -0
- package/dist/AgentDecisionService.js.map +1 -0
- package/dist/AgentRunner.d.ts +16 -4
- package/dist/AgentRunner.d.ts.map +1 -1
- package/dist/AgentRunner.js +55 -32
- package/dist/AgentRunner.js.map +1 -1
- package/dist/ArtifactToolManager.d.ts +4 -4
- package/dist/ArtifactToolManager.js +10 -10
- package/dist/ConversationToolManager.d.ts +16 -3
- package/dist/ConversationToolManager.d.ts.map +1 -1
- package/dist/ConversationToolManager.js +28 -5
- package/dist/ConversationToolManager.js.map +1 -1
- package/dist/KnowledgeAgent.d.ts.map +1 -1
- package/dist/KnowledgeAgent.js +6 -6
- package/dist/KnowledgeAgent.js.map +1 -1
- package/dist/PayloadChangeAnalyzer.d.ts +4 -0
- package/dist/PayloadChangeAnalyzer.d.ts.map +1 -1
- package/dist/PayloadChangeAnalyzer.js +10 -2
- package/dist/PayloadChangeAnalyzer.js.map +1 -1
- package/dist/PayloadFeedbackManager.d.ts +120 -13
- package/dist/PayloadFeedbackManager.d.ts.map +1 -1
- package/dist/PayloadFeedbackManager.js +244 -88
- package/dist/PayloadFeedbackManager.js.map +1 -1
- package/dist/PayloadManager.d.ts +27 -0
- package/dist/PayloadManager.d.ts.map +1 -1
- package/dist/PayloadManager.js +47 -15
- package/dist/PayloadManager.js.map +1 -1
- package/dist/agent-context-injector.d.ts +47 -3
- package/dist/agent-context-injector.d.ts.map +1 -1
- package/dist/agent-context-injector.js +77 -10
- package/dist/agent-context-injector.js.map +1 -1
- package/dist/agent-memory-context-builder.d.ts +13 -0
- package/dist/agent-memory-context-builder.d.ts.map +1 -1
- package/dist/agent-memory-context-builder.js +24 -5
- package/dist/agent-memory-context-builder.js.map +1 -1
- package/dist/agent-types/base-agent-type.d.ts +16 -0
- package/dist/agent-types/base-agent-type.d.ts.map +1 -1
- package/dist/agent-types/base-agent-type.js +20 -1
- package/dist/agent-types/base-agent-type.js.map +1 -1
- package/dist/agent-types/flow-agent-type.d.ts +106 -0
- package/dist/agent-types/flow-agent-type.d.ts.map +1 -1
- package/dist/agent-types/flow-agent-type.js +299 -29
- package/dist/agent-types/flow-agent-type.js.map +1 -1
- package/dist/agent-types/flow-graph-executor.d.ts +12 -1
- package/dist/agent-types/flow-graph-executor.d.ts.map +1 -1
- package/dist/agent-types/flow-graph-executor.js +25 -1
- package/dist/agent-types/flow-graph-executor.js.map +1 -1
- package/dist/agent-types/loop-agent-prompt-params.d.ts +258 -11
- package/dist/agent-types/loop-agent-prompt-params.d.ts.map +1 -1
- package/dist/agent-types/loop-agent-prompt-params.js +49 -2
- package/dist/agent-types/loop-agent-prompt-params.js.map +1 -1
- package/dist/agent-types/loop-agent-response-type.d.ts +12 -1
- package/dist/agent-types/loop-agent-response-type.d.ts.map +1 -1
- package/dist/agent-types/loop-agent-response-type.js.map +1 -1
- package/dist/agent-types/loop-agent-type.d.ts +6 -0
- package/dist/agent-types/loop-agent-type.d.ts.map +1 -1
- package/dist/agent-types/loop-agent-type.js +42 -3
- package/dist/agent-types/loop-agent-type.js.map +1 -1
- package/dist/artifact-target-plan.d.ts +2 -0
- package/dist/artifact-target-plan.d.ts.map +1 -1
- package/dist/artifact-target-plan.js +5 -1
- package/dist/artifact-target-plan.js.map +1 -1
- package/dist/base-agent.d.ts +886 -5
- package/dist/base-agent.d.ts.map +1 -1
- package/dist/base-agent.js +2567 -164
- package/dist/base-agent.js.map +1 -1
- package/dist/catalog-narrowing.d.ts +136 -0
- package/dist/catalog-narrowing.d.ts.map +1 -0
- package/dist/catalog-narrowing.js +212 -0
- package/dist/catalog-narrowing.js.map +1 -0
- package/dist/constants.d.ts +57 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/constants.js +70 -0
- package/dist/constants.js.map +1 -0
- package/dist/decision-discovery.d.ts +401 -0
- package/dist/decision-discovery.d.ts.map +1 -0
- package/dist/decision-discovery.js +511 -0
- package/dist/decision-discovery.js.map +1 -0
- package/dist/finish-if-mode-warnings.d.ts +39 -0
- package/dist/finish-if-mode-warnings.d.ts.map +1 -0
- package/dist/finish-if-mode-warnings.js +78 -0
- package/dist/finish-if-mode-warnings.js.map +1 -0
- package/dist/finish-if-state.d.ts +72 -0
- package/dist/finish-if-state.d.ts.map +1 -0
- package/dist/finish-if-state.js +109 -0
- package/dist/finish-if-state.js.map +1 -0
- package/dist/index.d.ts +9 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +10 -0
- package/dist/index.js.map +1 -1
- package/dist/memory-manager-agent.d.ts +119 -13
- package/dist/memory-manager-agent.d.ts.map +1 -1
- package/dist/memory-manager-agent.js +237 -74
- package/dist/memory-manager-agent.js.map +1 -1
- package/dist/memory-note-gate.d.ts +208 -0
- package/dist/memory-note-gate.d.ts.map +1 -0
- package/dist/memory-note-gate.js +294 -0
- package/dist/memory-note-gate.js.map +1 -0
- package/dist/native-tools/action-tool-builder.d.ts +8 -0
- package/dist/native-tools/action-tool-builder.d.ts.map +1 -1
- package/dist/native-tools/action-tool-builder.js +22 -6
- package/dist/native-tools/action-tool-builder.js.map +1 -1
- package/dist/native-tools/control-tools.d.ts +8 -0
- package/dist/native-tools/control-tools.d.ts.map +1 -1
- package/dist/native-tools/control-tools.js +25 -9
- package/dist/native-tools/control-tools.js.map +1 -1
- package/dist/native-tools/dual-channel.d.ts +2 -0
- package/dist/native-tools/dual-channel.d.ts.map +1 -1
- package/dist/native-tools/dual-channel.js +5 -1
- package/dist/native-tools/dual-channel.js.map +1 -1
- package/dist/native-tools/tool-result-turns.d.ts +9 -0
- package/dist/native-tools/tool-result-turns.d.ts.map +1 -1
- package/dist/native-tools/tool-result-turns.js +15 -3
- package/dist/native-tools/tool-result-turns.js.map +1 -1
- package/dist/pipeline/coerce.d.ts +14 -0
- package/dist/pipeline/coerce.d.ts.map +1 -1
- package/dist/pipeline/coerce.js +37 -9
- package/dist/pipeline/coerce.js.map +1 -1
- package/dist/pipeline/jsonpath-eval.d.ts +4 -0
- package/dist/pipeline/jsonpath-eval.d.ts.map +1 -1
- package/dist/pipeline/jsonpath-eval.js +10 -2
- package/dist/pipeline/jsonpath-eval.js.map +1 -1
- package/dist/pipeline/operators.js +16 -16
- package/dist/pipeline/path.d.ts +6 -0
- package/dist/pipeline/path.d.ts.map +1 -1
- package/dist/pipeline/path.js +17 -5
- package/dist/pipeline/path.js.map +1 -1
- package/dist/pipeline/pipeline-executor.js +10 -10
- package/dist/pipeline/predicate.d.ts +4 -0
- package/dist/pipeline/predicate.d.ts.map +1 -1
- package/dist/pipeline/predicate.js +15 -7
- package/dist/pipeline/predicate.js.map +1 -1
- package/dist/pipeline/providers/action-provider.js +2 -2
- package/dist/pipeline/providers/artifact-tool-provider.js +2 -2
- package/dist/pipeline/providers/serialize.d.ts +4 -0
- package/dist/pipeline/providers/serialize.d.ts.map +1 -1
- package/dist/pipeline/providers/serialize.js +10 -2
- package/dist/pipeline/providers/serialize.js.map +1 -1
- package/dist/pipeline/template.d.ts +4 -0
- package/dist/pipeline/template.d.ts.map +1 -1
- package/dist/pipeline/template.js +15 -7
- package/dist/pipeline/template.js.map +1 -1
- package/dist/realtime/agent-media-library.d.ts +10 -0
- package/dist/realtime/agent-media-library.d.ts.map +1 -1
- package/dist/realtime/agent-media-library.js +29 -9
- package/dist/realtime/agent-media-library.js.map +1 -1
- package/dist/realtime/bridge-realtime-session-factory.d.ts +5 -2
- package/dist/realtime/bridge-realtime-session-factory.d.ts.map +1 -1
- package/dist/realtime/bridge-realtime-session-factory.js +7 -4
- package/dist/realtime/bridge-realtime-session-factory.js.map +1 -1
- package/dist/realtime/bridge-room-transcript-sink.d.ts.map +1 -1
- package/dist/realtime/bridge-room-transcript-sink.js +15 -9
- package/dist/realtime/bridge-room-transcript-sink.js.map +1 -1
- package/dist/realtime/media-channel-server.js +2 -2
- package/dist/realtime/meeting-controls-state.d.ts +2 -0
- package/dist/realtime/meeting-controls-state.d.ts.map +1 -1
- package/dist/realtime/meeting-controls-state.js +6 -2
- package/dist/realtime/meeting-controls-state.js.map +1 -1
- package/dist/realtime/realtime-channel-server-data-context.d.ts +2 -0
- package/dist/realtime/realtime-channel-server-data-context.d.ts.map +1 -1
- package/dist/realtime/realtime-channel-server-data-context.js +5 -1
- package/dist/realtime/realtime-channel-server-data-context.js.map +1 -1
- package/dist/realtime/realtime-channel-server-host.js +2 -2
- package/dist/realtime/realtime-client-session-service.d.ts +58 -12
- package/dist/realtime/realtime-client-session-service.d.ts.map +1 -1
- package/dist/realtime/realtime-client-session-service.js +91 -31
- package/dist/realtime/realtime-client-session-service.js.map +1 -1
- package/dist/realtime/realtime-coagent-config.d.ts +2 -0
- package/dist/realtime/realtime-coagent-config.d.ts.map +1 -1
- package/dist/realtime/realtime-coagent-config.js +6 -2
- package/dist/realtime/realtime-coagent-config.js.map +1 -1
- package/dist/realtime/realtime-recording-store.d.ts +15 -0
- package/dist/realtime/realtime-recording-store.d.ts.map +1 -1
- package/dist/realtime/realtime-recording-store.js +31 -7
- package/dist/realtime/realtime-recording-store.js.map +1 -1
- package/dist/realtime/realtime-session-runner.d.ts +4 -4
- package/dist/realtime/realtime-session-runner.js +9 -9
- package/dist/realtime/realtime-session-runner.js.map +1 -1
- package/dist/realtime/realtime-vendor-resolution.d.ts +8 -3
- package/dist/realtime/realtime-vendor-resolution.d.ts.map +1 -1
- package/dist/realtime/realtime-vendor-resolution.js +3 -3
- package/dist/realtime/realtime-vendor-resolution.js.map +1 -1
- package/dist/rubric-evaluation-agent-runner.d.ts +2 -0
- package/dist/rubric-evaluation-agent-runner.d.ts.map +1 -0
- package/dist/rubric-evaluation-agent-runner.js +38 -0
- package/dist/rubric-evaluation-agent-runner.js.map +1 -0
- package/dist/runtime-state-fragment.d.ts +101 -0
- package/dist/runtime-state-fragment.d.ts.map +1 -0
- package/dist/runtime-state-fragment.js +173 -0
- package/dist/runtime-state-fragment.js.map +1 -0
- package/dist/self-check.d.ts +98 -0
- package/dist/self-check.d.ts.map +1 -0
- package/dist/self-check.js +74 -0
- package/dist/self-check.js.map +1 -0
- package/dist/types/payload-operations.d.ts +8 -0
- package/dist/types/payload-operations.d.ts.map +1 -1
- package/dist/types/payload-operations.js +21 -5
- package/dist/types/payload-operations.js.map +1 -1
- package/dist/utils/ConversationMessageResolver.d.ts +4 -0
- package/dist/utils/ConversationMessageResolver.d.ts.map +1 -1
- package/dist/utils/ConversationMessageResolver.js +10 -2
- package/dist/utils/ConversationMessageResolver.js.map +1 -1
- package/dist/volatile-child-prompt.d.ts +33 -0
- package/dist/volatile-child-prompt.d.ts.map +1 -0
- package/dist/volatile-child-prompt.js +76 -0
- package/dist/volatile-child-prompt.js.map +1 -0
- package/package.json +21 -18
|
@@ -9,7 +9,9 @@
|
|
|
9
9
|
* @since 3.1.0
|
|
10
10
|
*/
|
|
11
11
|
import { UserInfo } from '@memberjunction/core';
|
|
12
|
+
import { AIDecisionRunResult } from '@memberjunction/ai-prompts';
|
|
12
13
|
import { PayloadWarning } from './PayloadChangeAnalyzer.js';
|
|
14
|
+
import { AgentDecisionService } from './AgentDecisionService.js';
|
|
13
15
|
/**
|
|
14
16
|
* Represents a single feedback question about a payload change
|
|
15
17
|
*/
|
|
@@ -30,6 +32,11 @@ export interface PayloadFeedbackResponse {
|
|
|
30
32
|
questionId: string;
|
|
31
33
|
intended: boolean;
|
|
32
34
|
explanation?: string;
|
|
35
|
+
/**
|
|
36
|
+
* The decision model's probability, in [0, 1], that the change was intended. Absent when the
|
|
37
|
+
* change was accepted by default because no decision answered it.
|
|
38
|
+
*/
|
|
39
|
+
probability?: number;
|
|
33
40
|
}
|
|
34
41
|
/**
|
|
35
42
|
* Result of the feedback process
|
|
@@ -51,47 +58,147 @@ export interface PayloadFeedbackConfig {
|
|
|
51
58
|
maxQuestionsPerBatch?: number;
|
|
52
59
|
/** Temperature for feedback queries (lower = more deterministic) */
|
|
53
60
|
temperature?: number;
|
|
61
|
+
/**
|
|
62
|
+
* A change is judged intended when the decision model's probability is at or above this
|
|
63
|
+
* threshold (0 to 1).
|
|
64
|
+
* @default 0.5
|
|
65
|
+
*/
|
|
66
|
+
intendedThreshold?: number;
|
|
67
|
+
/**
|
|
68
|
+
* The decision prompt that answers the questions.
|
|
69
|
+
* @default 'Default Decision' ({@link AgentDecisionService.DEFAULT_PROMPT_NAME})
|
|
70
|
+
*/
|
|
71
|
+
decisionPromptName?: string;
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* What the decision model reads about the step that changed the payload, and the options for the
|
|
75
|
+
* call. It never carries the payload itself.
|
|
76
|
+
*/
|
|
77
|
+
export interface PayloadFeedbackContext {
|
|
78
|
+
/** The agent's stated reasoning for the step. */
|
|
79
|
+
Reasoning?: string;
|
|
80
|
+
/** The reasoning the agent gave with its payload change request. */
|
|
81
|
+
ChangeReasoning?: string;
|
|
82
|
+
/** The agent's message for the step. */
|
|
83
|
+
Message?: string;
|
|
84
|
+
/** The agent asking, recorded on the decision's prompt run. */
|
|
85
|
+
AgentID?: string;
|
|
86
|
+
/**
|
|
87
|
+
* Aborts the decision call. The call is also bounded by
|
|
88
|
+
* {@link PayloadFeedbackManager.DECISION_TIMEOUT_MS}.
|
|
89
|
+
*/
|
|
90
|
+
CancellationToken?: AbortSignal;
|
|
54
91
|
}
|
|
55
92
|
/**
|
|
56
93
|
* Manages feedback collection for suspicious payload changes
|
|
57
94
|
*/
|
|
58
95
|
export declare class PayloadFeedbackManager {
|
|
96
|
+
/**
|
|
97
|
+
* The longest the decision call may take. Past it the call is aborted and every change is
|
|
98
|
+
* accepted, as on any other failure. The same bound as the catalog narrowing decision.
|
|
99
|
+
*/
|
|
100
|
+
static readonly DECISION_TIMEOUT_MS = 30000;
|
|
59
101
|
private config;
|
|
60
|
-
|
|
102
|
+
private decisionService;
|
|
103
|
+
private _lastDecisionResult;
|
|
104
|
+
/**
|
|
105
|
+
* @param config - Feedback settings. See {@link PayloadFeedbackConfig}.
|
|
106
|
+
* @param decisionService - Answers the questions in {@link QueryAgent}. Defaults to a new
|
|
107
|
+
* {@link AgentDecisionService}.
|
|
108
|
+
*/
|
|
109
|
+
constructor(config?: PayloadFeedbackConfig, decisionService?: AgentDecisionService);
|
|
110
|
+
/**
|
|
111
|
+
* The probability at or above which a change is judged intended: `intendedThreshold`, or 0.5
|
|
112
|
+
* when that is not a number from 0 to 1.
|
|
113
|
+
*/
|
|
114
|
+
get IntendedThreshold(): number;
|
|
115
|
+
/**
|
|
116
|
+
* The result of the most recent decision call {@link QueryAgent} made, so the caller can link
|
|
117
|
+
* its prompt run to a run step and count its cost. Undefined until a call is made.
|
|
118
|
+
*/
|
|
119
|
+
get LastDecisionResult(): AIDecisionRunResult | undefined;
|
|
61
120
|
/**
|
|
62
121
|
* Generate feedback questions from warnings
|
|
63
122
|
*/
|
|
123
|
+
GenerateQuestions(warnings: PayloadWarning[]): PayloadFeedbackQuestion[];
|
|
124
|
+
/** @deprecated Use {@link GenerateQuestions}. */
|
|
64
125
|
generateQuestions(warnings: PayloadWarning[]): PayloadFeedbackQuestion[];
|
|
65
126
|
/**
|
|
66
127
|
* Create a structured question from a warning
|
|
67
128
|
*/
|
|
68
129
|
private createQuestionFromWarning;
|
|
69
130
|
/**
|
|
70
|
-
*
|
|
131
|
+
* Asks whether each suspicious payload change was intended: one Likelihood per question, all
|
|
132
|
+
* in one decision call. The state is the agent's reasoning and message for the step plus a
|
|
133
|
+
* compact list of the changes (paths, and sizes or types), never the payload itself.
|
|
71
134
|
*
|
|
72
|
-
*
|
|
73
|
-
*
|
|
74
|
-
*
|
|
75
|
-
*
|
|
135
|
+
* A change is `intended` when its probability is at or above {@link IntendedThreshold}, and
|
|
136
|
+
* its explanation carries the probability. When no decision answers a change (no context user,
|
|
137
|
+
* a failed, throwing, cancelled or timed-out call, a missing answer, or more questions than one
|
|
138
|
+
* call carries), the change is accepted, as it always was, and its explanation says why. Never
|
|
139
|
+
* throws.
|
|
140
|
+
*
|
|
141
|
+
* @param questions - The questions from {@link GenerateQuestions}
|
|
142
|
+
* @param context - The agent's reasoning and message for the step, and the call's options
|
|
143
|
+
* @param contextUser - The user the decision runs as
|
|
144
|
+
* @returns One response per question, in the same order
|
|
76
145
|
*/
|
|
77
|
-
|
|
146
|
+
QueryAgent(questions: PayloadFeedbackQuestion[], context: PayloadFeedbackContext, contextUser?: UserInfo): Promise<PayloadFeedbackResponse[]>;
|
|
147
|
+
/** @deprecated Use {@link QueryAgent}. */
|
|
148
|
+
queryAgent(questions: PayloadFeedbackQuestion[], context: PayloadFeedbackContext, contextUser?: UserInfo): Promise<PayloadFeedbackResponse[]>;
|
|
78
149
|
/**
|
|
79
|
-
*
|
|
150
|
+
* Describes one flagged change in a line: what the analyzer saw, where, and the names of any
|
|
151
|
+
* removed keys. The analyzer's message carries the sizes or types, never payload content.
|
|
80
152
|
*/
|
|
81
|
-
|
|
153
|
+
DescribeChange(warning: PayloadWarning): string;
|
|
82
154
|
/**
|
|
83
|
-
*
|
|
84
|
-
*
|
|
85
|
-
*
|
|
155
|
+
* The message that lists the changes judged unintended and asks the agent to confirm them or put
|
|
156
|
+
* them back, or `undefined` when every change was judged intended. It reverts nothing itself, and
|
|
157
|
+
* it never carries the original values, so it tells the agent how to rebuild them.
|
|
158
|
+
*/
|
|
159
|
+
BuildUnintendedChangesMessage(questions: PayloadFeedbackQuestion[], responses: PayloadFeedbackResponse[]): string | undefined;
|
|
160
|
+
/**
|
|
161
|
+
* How the agent puts the listed changes back: a removed key is added again under `newElements`,
|
|
162
|
+
* and any other change is set again under `updateElements`. The message has no original values,
|
|
163
|
+
* so the agent rebuilds them from their source, or says what was lost.
|
|
164
|
+
*/
|
|
165
|
+
private restoreInstructions;
|
|
166
|
+
/**
|
|
167
|
+
* Asks the questions in one call. Never throws, and never waits longer than
|
|
168
|
+
* {@link PayloadFeedbackManager.DECISION_TIMEOUT_MS} or past the run's cancellation: a throw, a
|
|
169
|
+
* timeout and a cancelled run each come back as a failed result, so the caller accepts every
|
|
170
|
+
* change. Stopping also aborts the call.
|
|
86
171
|
*/
|
|
87
|
-
private
|
|
172
|
+
private askDecisions;
|
|
173
|
+
/** A decision result that answered nothing, and why. */
|
|
174
|
+
private failedResult;
|
|
175
|
+
/** One Likelihood per question: "Given the agent's stated reasoning, this change was intended: ...". */
|
|
176
|
+
private buildDecisionQuestions;
|
|
177
|
+
/** The agent's reasoning and message, then the numbered changes. Never the payload. */
|
|
178
|
+
private buildDecisionState;
|
|
179
|
+
/** A labelled, capped block of the agent's text, or `undefined` when there is none. */
|
|
180
|
+
private contextSection;
|
|
181
|
+
/** The key names a key-removal warning recorded, if any. */
|
|
182
|
+
private removedKeyNames;
|
|
183
|
+
/** Maps one answer to the feedback shape. Anything but a numeric Likelihood is accepted by default. */
|
|
184
|
+
private mapAnswerToFeedback;
|
|
185
|
+
/** Accepts the change, as it always was, and says why. */
|
|
186
|
+
private acceptedByDefault;
|
|
187
|
+
/** The question key for position `index`. Keys are labels for code; the model reads the instructions. */
|
|
188
|
+
private questionKey;
|
|
189
|
+
/** `maxQuestionsPerBatch`, or 10 when that is not a positive whole number. */
|
|
190
|
+
private maxQuestionsPerCall;
|
|
88
191
|
/**
|
|
89
192
|
* Process feedback responses and determine final result
|
|
90
193
|
*/
|
|
194
|
+
ProcessFeedback(questions: PayloadFeedbackQuestion[], responses: PayloadFeedbackResponse[]): PayloadFeedbackResult;
|
|
195
|
+
/** @deprecated Use {@link ProcessFeedback}. */
|
|
91
196
|
processFeedback(questions: PayloadFeedbackQuestion[], responses: PayloadFeedbackResponse[]): PayloadFeedbackResult;
|
|
92
197
|
/**
|
|
93
198
|
* Log feedback results
|
|
94
199
|
*/
|
|
200
|
+
LogFeedbackResults(result: PayloadFeedbackResult): void;
|
|
201
|
+
/** @deprecated Use {@link LogFeedbackResults}. */
|
|
95
202
|
logFeedbackResults(result: PayloadFeedbackResult): void;
|
|
96
203
|
}
|
|
97
204
|
//# sourceMappingURL=PayloadFeedbackManager.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PayloadFeedbackManager.d.ts","sourceRoot":"","sources":["../src/PayloadFeedbackManager.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAuB,QAAQ,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"PayloadFeedbackManager.d.ts","sourceRoot":"","sources":["../src/PayloadFeedbackManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,24 +9,58 @@
|
|
|
9
9
|
* @since 3.1.0
|
|
10
10
|
*/
|
|
11
11
|
import { LogStatus, LogError } from '@memberjunction/core';
|
|
12
|
-
import {
|
|
13
|
-
import {
|
|
14
|
-
|
|
12
|
+
import { PayloadWarningType } from './PayloadChangeAnalyzer.js';
|
|
13
|
+
import { AgentDecisionService } from './AgentDecisionService.js';
|
|
14
|
+
/** The probability at or above which a change is judged intended, unless configured. */
|
|
15
|
+
const DEFAULT_INTENDED_THRESHOLD = 0.5;
|
|
16
|
+
/** The questions one decision call carries, unless `maxQuestionsPerBatch` says otherwise. */
|
|
17
|
+
const DEFAULT_MAX_QUESTIONS_PER_CALL = 10;
|
|
18
|
+
/** The most characters of each reasoning or message field the decision state carries. */
|
|
19
|
+
const MAX_CONTEXT_TEXT = 4000;
|
|
20
|
+
/** The most removed key names listed for one change. */
|
|
21
|
+
const MAX_LISTED_KEYS = 10;
|
|
15
22
|
/**
|
|
16
23
|
* Manages feedback collection for suspicious payload changes
|
|
17
24
|
*/
|
|
18
25
|
export class PayloadFeedbackManager {
|
|
19
|
-
|
|
26
|
+
/**
|
|
27
|
+
* The longest the decision call may take. Past it the call is aborted and every change is
|
|
28
|
+
* accepted, as on any other failure. The same bound as the catalog narrowing decision.
|
|
29
|
+
*/
|
|
30
|
+
static { this.DECISION_TIMEOUT_MS = 30000; }
|
|
31
|
+
/**
|
|
32
|
+
* @param config - Feedback settings. See {@link PayloadFeedbackConfig}.
|
|
33
|
+
* @param decisionService - Answers the questions in {@link QueryAgent}. Defaults to a new
|
|
34
|
+
* {@link AgentDecisionService}.
|
|
35
|
+
*/
|
|
36
|
+
constructor(config, decisionService) {
|
|
20
37
|
this.config = {
|
|
21
|
-
maxQuestionsPerBatch:
|
|
38
|
+
maxQuestionsPerBatch: DEFAULT_MAX_QUESTIONS_PER_CALL,
|
|
22
39
|
temperature: 0.1,
|
|
40
|
+
intendedThreshold: DEFAULT_INTENDED_THRESHOLD,
|
|
23
41
|
...config
|
|
24
42
|
};
|
|
43
|
+
this.decisionService = decisionService ?? new AgentDecisionService();
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* The probability at or above which a change is judged intended: `intendedThreshold`, or 0.5
|
|
47
|
+
* when that is not a number from 0 to 1.
|
|
48
|
+
*/
|
|
49
|
+
get IntendedThreshold() {
|
|
50
|
+
const threshold = this.config.intendedThreshold;
|
|
51
|
+
return typeof threshold === 'number' && threshold >= 0 && threshold <= 1 ? threshold : DEFAULT_INTENDED_THRESHOLD;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* The result of the most recent decision call {@link QueryAgent} made, so the caller can link
|
|
55
|
+
* its prompt run to a run step and count its cost. Undefined until a call is made.
|
|
56
|
+
*/
|
|
57
|
+
get LastDecisionResult() {
|
|
58
|
+
return this._lastDecisionResult;
|
|
25
59
|
}
|
|
26
60
|
/**
|
|
27
61
|
* Generate feedback questions from warnings
|
|
28
62
|
*/
|
|
29
|
-
|
|
63
|
+
GenerateQuestions(warnings) {
|
|
30
64
|
const questions = [];
|
|
31
65
|
const feedbackWarnings = warnings.filter(w => w.requiresFeedback);
|
|
32
66
|
for (let i = 0; i < feedbackWarnings.length; i++) {
|
|
@@ -36,6 +70,10 @@ export class PayloadFeedbackManager {
|
|
|
36
70
|
}
|
|
37
71
|
return questions;
|
|
38
72
|
}
|
|
73
|
+
/** @deprecated Use {@link GenerateQuestions}. */
|
|
74
|
+
generateQuestions(warnings) {
|
|
75
|
+
return this.GenerateQuestions(warnings);
|
|
76
|
+
}
|
|
39
77
|
/**
|
|
40
78
|
* Create a structured question from a warning
|
|
41
79
|
*/
|
|
@@ -72,108 +110,218 @@ export class PayloadFeedbackManager {
|
|
|
72
110
|
};
|
|
73
111
|
}
|
|
74
112
|
/**
|
|
75
|
-
*
|
|
113
|
+
* Asks whether each suspicious payload change was intended: one Likelihood per question, all
|
|
114
|
+
* in one decision call. The state is the agent's reasoning and message for the step plus a
|
|
115
|
+
* compact list of the changes (paths, and sizes or types), never the payload itself.
|
|
116
|
+
*
|
|
117
|
+
* A change is `intended` when its probability is at or above {@link IntendedThreshold}, and
|
|
118
|
+
* its explanation carries the probability. When no decision answers a change (no context user,
|
|
119
|
+
* a failed, throwing, cancelled or timed-out call, a missing answer, or more questions than one
|
|
120
|
+
* call carries), the change is accepted, as it always was, and its explanation says why. Never
|
|
121
|
+
* throws.
|
|
76
122
|
*
|
|
77
|
-
* @param questions -
|
|
78
|
-
* @param
|
|
79
|
-
* @param contextUser -
|
|
80
|
-
* @returns
|
|
123
|
+
* @param questions - The questions from {@link GenerateQuestions}
|
|
124
|
+
* @param context - The agent's reasoning and message for the step, and the call's options
|
|
125
|
+
* @param contextUser - The user the decision runs as
|
|
126
|
+
* @returns One response per question, in the same order
|
|
81
127
|
*/
|
|
82
|
-
async
|
|
128
|
+
async QueryAgent(questions, context, contextUser) {
|
|
83
129
|
if (questions.length === 0) {
|
|
84
130
|
return [];
|
|
85
131
|
}
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
const prompt = AIEngine.Instance.Prompts.find(p => p.Name.trim().toLowerCase() === promptName.toLowerCase() &&
|
|
89
|
-
p.Category?.trim().toLowerCase() === 'mj: system');
|
|
90
|
-
if (!prompt) {
|
|
91
|
-
// Fallback: accept all changes if prompt not configured
|
|
92
|
-
LogStatus(`PayloadFeedbackManager: Prompt "${promptName}" not found in MJ: System category. Accepting all changes by default.`);
|
|
93
|
-
return questions.map(q => ({
|
|
94
|
-
questionId: q.id,
|
|
95
|
-
intended: true,
|
|
96
|
-
explanation: 'Accepted by default (feedback prompt not configured)'
|
|
97
|
-
}));
|
|
132
|
+
if (!contextUser) {
|
|
133
|
+
return questions.map(q => this.acceptedByDefault(q, 'no context user for the decision call'));
|
|
98
134
|
}
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
const
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
}
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
135
|
+
const asked = questions.slice(0, this.maxQuestionsPerCall());
|
|
136
|
+
const result = await this.askDecisions(asked, context ?? {}, contextUser);
|
|
137
|
+
this._lastDecisionResult = result;
|
|
138
|
+
if (!result.success) {
|
|
139
|
+
const reason = result.errorMessage || 'no error message';
|
|
140
|
+
LogError(`PayloadFeedbackManager: the payload change decisions failed, so every change is accepted: ${reason}`);
|
|
141
|
+
return questions.map(q => this.acceptedByDefault(q, `the decision call failed: ${reason}`));
|
|
142
|
+
}
|
|
143
|
+
return questions.map((question, i) => i < asked.length
|
|
144
|
+
? this.mapAnswerToFeedback(question, result.Answers[this.questionKey(i)])
|
|
145
|
+
: this.acceptedByDefault(question, `over the limit of ${asked.length} questions per decision call`));
|
|
146
|
+
}
|
|
147
|
+
/** @deprecated Use {@link QueryAgent}. */
|
|
148
|
+
async queryAgent(questions, context, contextUser) {
|
|
149
|
+
return this.QueryAgent(questions, context, contextUser);
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* Describes one flagged change in a line: what the analyzer saw, where, and the names of any
|
|
153
|
+
* removed keys. The analyzer's message carries the sizes or types, never payload content.
|
|
154
|
+
*/
|
|
155
|
+
DescribeChange(warning) {
|
|
156
|
+
const where = warning.path ? `"${warning.path}"` : 'the payload root';
|
|
157
|
+
const keys = this.removedKeyNames(warning);
|
|
158
|
+
const removed = keys.length > 0 ? ` (removed: ${keys.join(', ')})` : '';
|
|
159
|
+
return `${warning.message} at ${where}${removed}`;
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* The message that lists the changes judged unintended and asks the agent to confirm them or put
|
|
163
|
+
* them back, or `undefined` when every change was judged intended. It reverts nothing itself, and
|
|
164
|
+
* it never carries the original values, so it tells the agent how to rebuild them.
|
|
165
|
+
*/
|
|
166
|
+
BuildUnintendedChangesMessage(questions, responses) {
|
|
167
|
+
const lines = [];
|
|
168
|
+
const unintended = [];
|
|
169
|
+
for (const response of responses) {
|
|
170
|
+
const question = questions.find(q => q.id === response.questionId);
|
|
171
|
+
if (question && !response.intended) {
|
|
172
|
+
const probability = typeof response.probability === 'number'
|
|
173
|
+
? ` (probability it was intended: ${response.probability.toFixed(2)})`
|
|
174
|
+
: '';
|
|
175
|
+
lines.push(`- ${this.DescribeChange(question.warning)}${probability}`);
|
|
176
|
+
unintended.push(question.warning);
|
|
119
177
|
}
|
|
120
|
-
// Map LLM responses back to our format
|
|
121
|
-
return this.mapLLMResponsesToFeedback(questions, result.result.responses);
|
|
122
178
|
}
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
// Fallback to accepting all changes
|
|
126
|
-
return questions.map(q => ({
|
|
127
|
-
questionId: q.id,
|
|
128
|
-
intended: true,
|
|
129
|
-
explanation: 'Accepted by default (error during feedback query)'
|
|
130
|
-
}));
|
|
179
|
+
if (lines.length === 0) {
|
|
180
|
+
return undefined;
|
|
131
181
|
}
|
|
182
|
+
return [
|
|
183
|
+
'Payload change check: these changes to the payload may not have been intended.',
|
|
184
|
+
...lines,
|
|
185
|
+
'Nothing was reverted. If you meant a change, confirm it in your reasoning and carry on.',
|
|
186
|
+
this.restoreInstructions(unintended)
|
|
187
|
+
].join('\n');
|
|
132
188
|
}
|
|
133
189
|
/**
|
|
134
|
-
*
|
|
190
|
+
* How the agent puts the listed changes back: a removed key is added again under `newElements`,
|
|
191
|
+
* and any other change is set again under `updateElements`. The message has no original values,
|
|
192
|
+
* so the agent rebuilds them from their source, or says what was lost.
|
|
135
193
|
*/
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
// Default to intended if no matching response found
|
|
148
|
-
return {
|
|
149
|
-
questionId: q.id,
|
|
150
|
-
intended: true,
|
|
151
|
-
explanation: 'No explicit response from LLM - assuming intended'
|
|
152
|
-
};
|
|
153
|
-
});
|
|
194
|
+
restoreInstructions(warnings) {
|
|
195
|
+
const steps = [];
|
|
196
|
+
if (warnings.some(w => w.type === PayloadWarningType.KeyRemoval)) {
|
|
197
|
+
steps.push('add each removed key back under newElements');
|
|
198
|
+
}
|
|
199
|
+
if (warnings.some(w => w.type !== PayloadWarningType.KeyRemoval)) {
|
|
200
|
+
steps.push('set each shortened or changed value again under updateElements');
|
|
201
|
+
}
|
|
202
|
+
return `If not, put the data back with a payloadChangeRequest: ${steps.join(', and ')}. `
|
|
203
|
+
+ 'The original values are not shown here, so rebuild each one from where it came from '
|
|
204
|
+
+ '(an action result, a sub-agent result or the conversation). If you cannot, say in your message what was lost.';
|
|
154
205
|
}
|
|
155
206
|
/**
|
|
156
|
-
*
|
|
157
|
-
*
|
|
158
|
-
*
|
|
207
|
+
* Asks the questions in one call. Never throws, and never waits longer than
|
|
208
|
+
* {@link PayloadFeedbackManager.DECISION_TIMEOUT_MS} or past the run's cancellation: a throw, a
|
|
209
|
+
* timeout and a cancelled run each come back as a failed result, so the caller accepts every
|
|
210
|
+
* change. Stopping also aborts the call.
|
|
159
211
|
*/
|
|
160
|
-
|
|
212
|
+
async askDecisions(questions, context, contextUser) {
|
|
213
|
+
const runToken = context.CancellationToken;
|
|
214
|
+
if (runToken?.aborted) {
|
|
215
|
+
return this.failedResult('the run was cancelled');
|
|
216
|
+
}
|
|
217
|
+
const controller = new AbortController();
|
|
218
|
+
let stop = () => undefined;
|
|
219
|
+
const stopped = new Promise(resolve => {
|
|
220
|
+
stop = (reason) => {
|
|
221
|
+
controller.abort(reason);
|
|
222
|
+
resolve(this.failedResult(reason));
|
|
223
|
+
};
|
|
224
|
+
});
|
|
225
|
+
const relayRunAbort = () => stop('the run was cancelled');
|
|
226
|
+
runToken?.addEventListener('abort', relayRunAbort, { once: true });
|
|
227
|
+
const timeoutMS = PayloadFeedbackManager.DECISION_TIMEOUT_MS;
|
|
228
|
+
const timer = setTimeout(() => stop(`timed out after ${timeoutMS} ms`), timeoutMS);
|
|
229
|
+
try {
|
|
230
|
+
const ask = this.decisionService.Ask({
|
|
231
|
+
State: this.buildDecisionState(questions, context),
|
|
232
|
+
Questions: this.buildDecisionQuestions(questions),
|
|
233
|
+
ContextUser: contextUser,
|
|
234
|
+
AgentID: context.AgentID,
|
|
235
|
+
PromptName: this.config.decisionPromptName,
|
|
236
|
+
CancellationToken: controller.signal
|
|
237
|
+
});
|
|
238
|
+
return await Promise.race([ask, stopped]);
|
|
239
|
+
}
|
|
240
|
+
catch (error) {
|
|
241
|
+
return this.failedResult(error instanceof Error ? error.message : String(error));
|
|
242
|
+
}
|
|
243
|
+
finally {
|
|
244
|
+
clearTimeout(timer);
|
|
245
|
+
runToken?.removeEventListener('abort', relayRunAbort);
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
/** A decision result that answered nothing, and why. */
|
|
249
|
+
failedResult(errorMessage) {
|
|
250
|
+
return { success: false, errorMessage, Answers: {} };
|
|
251
|
+
}
|
|
252
|
+
/** One Likelihood per question: "Given the agent's stated reasoning, this change was intended: ...". */
|
|
253
|
+
buildDecisionQuestions(questions) {
|
|
254
|
+
const result = {};
|
|
255
|
+
questions.forEach((question, i) => {
|
|
256
|
+
result[this.questionKey(i)] = {
|
|
257
|
+
Kind: 'Likelihood',
|
|
258
|
+
Instructions: `Given the agent's stated reasoning, this change was intended: ${this.DescribeChange(question.warning)}`
|
|
259
|
+
};
|
|
260
|
+
});
|
|
261
|
+
return result;
|
|
262
|
+
}
|
|
263
|
+
/** The agent's reasoning and message, then the numbered changes. Never the payload. */
|
|
264
|
+
buildDecisionState(questions, context) {
|
|
265
|
+
const sections = [
|
|
266
|
+
this.contextSection("The agent's reasoning for this step", context.Reasoning),
|
|
267
|
+
this.contextSection("The agent's reasoning for the payload change", context.ChangeReasoning),
|
|
268
|
+
this.contextSection("The agent's message", context.Message)
|
|
269
|
+
].filter((section) => section !== undefined);
|
|
270
|
+
if (sections.length === 0) {
|
|
271
|
+
sections.push('The agent gave no reasoning or message for this step.');
|
|
272
|
+
}
|
|
273
|
+
const changes = questions.map((q, i) => `${i + 1}. ${this.DescribeChange(q.warning)}`);
|
|
274
|
+
sections.push(`The payload changes in question (paths, and sizes or types):\n${changes.join('\n')}`);
|
|
275
|
+
return sections.join('\n\n');
|
|
276
|
+
}
|
|
277
|
+
/** A labelled, capped block of the agent's text, or `undefined` when there is none. */
|
|
278
|
+
contextSection(label, text) {
|
|
279
|
+
const trimmed = typeof text === 'string' ? text.trim() : '';
|
|
280
|
+
return trimmed ? `${label}:\n${trimmed.slice(0, MAX_CONTEXT_TEXT)}` : undefined;
|
|
281
|
+
}
|
|
282
|
+
/** The key names a key-removal warning recorded, if any. */
|
|
283
|
+
removedKeyNames(warning) {
|
|
284
|
+
const details = warning.details;
|
|
285
|
+
if (typeof details !== 'object' || details === null || !('removedKeys' in details) || !Array.isArray(details.removedKeys)) {
|
|
286
|
+
return [];
|
|
287
|
+
}
|
|
288
|
+
const keys = details.removedKeys;
|
|
289
|
+
return keys.filter((key) => typeof key === 'string').slice(0, MAX_LISTED_KEYS);
|
|
290
|
+
}
|
|
291
|
+
/** Maps one answer to the feedback shape. Anything but a numeric Likelihood is accepted by default. */
|
|
292
|
+
mapAnswerToFeedback(question, answer) {
|
|
293
|
+
if (answer?.Kind !== 'Likelihood' || !Number.isFinite(answer.Probability)) {
|
|
294
|
+
return this.acceptedByDefault(question, 'no usable answer for this change');
|
|
295
|
+
}
|
|
296
|
+
const threshold = this.IntendedThreshold;
|
|
297
|
+
return {
|
|
298
|
+
questionId: question.id,
|
|
299
|
+
intended: answer.Probability >= threshold,
|
|
300
|
+
probability: answer.Probability,
|
|
301
|
+
explanation: `Probability the change was intended: ${answer.Probability.toFixed(2)} (threshold ${threshold})`
|
|
302
|
+
};
|
|
303
|
+
}
|
|
304
|
+
/** Accepts the change, as it always was, and says why. */
|
|
305
|
+
acceptedByDefault(question, reason) {
|
|
161
306
|
return {
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
context: q.context,
|
|
166
|
-
warningType: q.warning.type,
|
|
167
|
-
severity: q.warning.severity
|
|
168
|
-
})),
|
|
169
|
-
totalQuestions: questions.length,
|
|
170
|
-
timestamp: new Date().toISOString()
|
|
307
|
+
questionId: question.id,
|
|
308
|
+
intended: true,
|
|
309
|
+
explanation: `Accepted by default (${reason})`
|
|
171
310
|
};
|
|
172
311
|
}
|
|
312
|
+
/** The question key for position `index`. Keys are labels for code; the model reads the instructions. */
|
|
313
|
+
questionKey(index) {
|
|
314
|
+
return `change_${index + 1}`;
|
|
315
|
+
}
|
|
316
|
+
/** `maxQuestionsPerBatch`, or 10 when that is not a positive whole number. */
|
|
317
|
+
maxQuestionsPerCall() {
|
|
318
|
+
const max = this.config.maxQuestionsPerBatch;
|
|
319
|
+
return typeof max === 'number' && Number.isInteger(max) && max > 0 ? max : DEFAULT_MAX_QUESTIONS_PER_CALL;
|
|
320
|
+
}
|
|
173
321
|
/**
|
|
174
322
|
* Process feedback responses and determine final result
|
|
175
323
|
*/
|
|
176
|
-
|
|
324
|
+
ProcessFeedback(questions, responses) {
|
|
177
325
|
const acceptedChanges = [];
|
|
178
326
|
const rejectedChanges = [];
|
|
179
327
|
for (const response of responses) {
|
|
@@ -195,10 +343,14 @@ export class PayloadFeedbackManager {
|
|
|
195
343
|
requiresRevision: rejectedChanges.length > 0
|
|
196
344
|
};
|
|
197
345
|
}
|
|
346
|
+
/** @deprecated Use {@link ProcessFeedback}. */
|
|
347
|
+
processFeedback(questions, responses) {
|
|
348
|
+
return this.ProcessFeedback(questions, responses);
|
|
349
|
+
}
|
|
198
350
|
/**
|
|
199
351
|
* Log feedback results
|
|
200
352
|
*/
|
|
201
|
-
|
|
353
|
+
LogFeedbackResults(result) {
|
|
202
354
|
if (result.responses.length === 0) {
|
|
203
355
|
return;
|
|
204
356
|
}
|
|
@@ -215,5 +367,9 @@ export class PayloadFeedbackManager {
|
|
|
215
367
|
LogStatus(`\n ⚠️ Agent needs to revise the payload`);
|
|
216
368
|
}
|
|
217
369
|
}
|
|
370
|
+
/** @deprecated Use {@link LogFeedbackResults}. */
|
|
371
|
+
logFeedbackResults(result) {
|
|
372
|
+
return this.LogFeedbackResults(result);
|
|
373
|
+
}
|
|
218
374
|
}
|
|
219
375
|
//# sourceMappingURL=PayloadFeedbackManager.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PayloadFeedbackManager.js","sourceRoot":"","sources":["../src/PayloadFeedbackManager.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAY,MAAM,sBAAsB,CAAC;AAErE,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAgD9D;;GAEG;AACH,MAAM,OAAO,sBAAsB;IAG/B,YAAY,MAA8B;QACtC,IAAI,CAAC,MAAM,GAAG;YACV,oBAAoB,EAAE,EAAE;YACxB,WAAW,EAAE,GAAG;YAChB,GAAG,MAAM;SACZ,CAAC;IACN,CAAC;IAED;;OAEG;IACI,iBAAiB,CAAC,QAA0B;QAC/C,MAAM,SAAS,GAA8B,EAAE,CAAC;QAChD,MAAM,gBAAgB,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC;QAElE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,gBAAgB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC/C,MAAM,OAAO,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC;YACpC,MAAM,QAAQ,GAAG,IAAI,CAAC,yBAAyB,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;YAC5D,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC7B,CAAC;QAED,OAAO,SAAS,CAAC;IACrB,CAAC;IAED;;OAEG;IACK,yBAAyB,CAAC,OAAuB,EAAE,KAAa;QACpE,IAAI,QAAQ,GAAG,EAAE,CAAC;QAElB,QAAQ,OAAO,CAAC,IAAI,EAAE,CAAC;YACnB,KAAK,oBAAoB;gBACrB,MAAM,YAAY,GAAG,OAAO,CAAC,OAAqF,CAAC;gBACnH,QAAQ,GAAG,4CAA4C,OAAO,CAAC,IAAI,UAAU,YAAY,CAAC,cAAc,OAAO,YAAY,CAAC,SAAS,gBAAgB,YAAY,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC;gBAChN,MAAM;YAEV,KAAK,aAAa;gBACd,MAAM,cAAc,GAAG,OAAO,CAAC,OAAoC,CAAC;gBACpE,QAAQ,GAAG,qDAAqD,OAAO,CAAC,IAAI,MAAM,cAAc,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;gBAC3H,MAAM;YAEV,KAAK,aAAa;gBACd,MAAM,WAAW,GAAG,OAAO,CAAC,OAAoD,CAAC;gBACjF,QAAQ,GAAG,yCAAyC,OAAO,CAAC,IAAI,UAAU,WAAW,CAAC,YAAY,OAAO,WAAW,CAAC,OAAO,GAAG,CAAC;gBAChI,MAAM;YAEV,KAAK,iBAAiB;gBAClB,QAAQ,GAAG,2CAA2C,OAAO,CAAC,IAAI,MAAM,OAAO,CAAC,OAAO,GAAG,CAAC;gBAC3F,MAAM;YAEV;gBACI,QAAQ,GAAG,iCAAiC,OAAO,CAAC,IAAI,MAAM,OAAO,CAAC,OAAO,GAAG,CAAC;QACzF,CAAC;QAED,OAAO;YACH,EAAE,EAAE,YAAY,KAAK,IAAI,IAAI,CAAC,GAAG,EAAE,EAAE;YACrC,QAAQ;YACR,OAAO;YACP,OAAO,EAAE;gBACL,IAAI,EAAE,OAAO,CAAC,IAAI;gBAClB,UAAU,EAAE,OAAO,CAAC,IAAI;gBACxB,OAAO,EAAE,OAAO,CAAC,OAAO;aAC3B;SACJ,CAAC;IACN,CAAC;IAED;;;;;;;OAOG;IACI,KAAK,CAAC,UAAU,CACnB,SAAoC,EACpC,mBAA4C,EAC5C,WAAsB;QAEtB,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzB,OAAO,EAAE,CAAC;QACd,CAAC;QAED,mCAAmC;QACnC,MAAM,UAAU,GAAG,+BAA+B,CAAC;QACnD,MAAM,MAAM,GAAG,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CACzC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,KAAK,UAAU,CAAC,WAAW,EAAE;YACxD,CAAC,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,WAAW,EAAE,KAAK,YAAY,CACzD,CAAC;QAEF,IAAI,CAAC,MAAM,EAAE,CAAC;YACV,wDAAwD;YACxD,SAAS,CAAC,mCAAmC,UAAU,uEAAuE,CAAC,CAAC;YAChI,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;gBACvB,UAAU,EAAE,CAAC,CAAC,EAAE;gBAChB,QAAQ,EAAE,IAAI;gBACd,WAAW,EAAE,sDAAsD;aACtE,CAAC,CAAC,CAAC;QACR,CAAC;QAED,IAAI,CAAC;YACD,4BAA4B;YAC5B,MAAM,YAAY,GAAG,IAAI,CAAC,2BAA2B,CAAC,SAAS,CAAC,CAAC;YAEjE,qBAAqB;YACrB,MAAM,MAAM,GAAG,IAAI,cAAc,EAAE,CAAC;YACpC,MAAM,YAAY,GAAG,IAAI,cAAc,EAAE,CAAC;YAC1C,YAAY,CAAC,MAAM,GAAG,MAAM,CAAC;YAC7B,YAAY,CAAC,IAAI,GAAG,YAAY,CAAC;YACjC,IAAI,WAAW,EAAE,CAAC;gBACd,YAAY,CAAC,WAAW,GAAG,WAAW,CAAC;YAC3C,CAAC;YAED,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,aAAa,CAA4F,YAAY,CAAC,CAAC;YAEnJ,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC;gBAC/C,QAAQ,CAAC,2EAA2E,EAAE,SAAS,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC;gBACtH,oCAAoC;gBACpC,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;oBACvB,UAAU,EAAE,CAAC,CAAC,EAAE;oBAChB,QAAQ,EAAE,IAAI;oBACd,WAAW,EAAE,+CAA+C;iBAC/D,CAAC,CAAC,CAAC;YACR,CAAC;YAED,uCAAuC;YACvC,OAAO,IAAI,CAAC,yBAAyB,CAAC,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAC9E,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,QAAQ,CAAC,2DAA2D,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;YACxF,oCAAoC;YACpC,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;gBACvB,UAAU,EAAE,CAAC,CAAC,EAAE;gBAChB,QAAQ,EAAE,IAAI;gBACd,WAAW,EAAE,mDAAmD;aACnE,CAAC,CAAC,CAAC;QACR,CAAC;IACL,CAAC;IAED;;OAEG;IACK,yBAAyB,CAC7B,SAAoC,EACpC,YAAwF;QAExF,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE;YAC9B,MAAM,cAAc,GAAG,KAAK,GAAG,CAAC,CAAC;YACjC,MAAM,WAAW,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,cAAc,KAAK,cAAc,CAAC,CAAC;YAEhF,IAAI,WAAW,EAAE,CAAC;gBACd,OAAO;oBACH,UAAU,EAAE,CAAC,CAAC,EAAE;oBAChB,QAAQ,EAAE,WAAW,CAAC,QAAQ;oBAC9B,WAAW,EAAE,WAAW,CAAC,WAAW;iBACvC,CAAC;YACN,CAAC;YAED,oDAAoD;YACpD,OAAO;gBACH,UAAU,EAAE,CAAC,CAAC,EAAE;gBAChB,QAAQ,EAAE,IAAI;gBACd,WAAW,EAAE,mDAAmD;aACnE,CAAC;QACN,CAAC,CAAC,CAAC;IACP,CAAC;IAED;;;;OAIG;IACK,2BAA2B,CAAC,SAAoC;QACpE,OAAO;YACH,SAAS,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;gBAChC,MAAM,EAAE,CAAC,GAAG,CAAC;gBACb,IAAI,EAAE,CAAC,CAAC,QAAQ;gBAChB,OAAO,EAAE,CAAC,CAAC,OAAO;gBAClB,WAAW,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI;gBAC3B,QAAQ,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ;aAC/B,CAAC,CAAC;YACH,cAAc,EAAE,SAAS,CAAC,MAAM;YAChC,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACtC,CAAC;IACN,CAAC;IAED;;OAEG;IACI,eAAe,CAClB,SAAoC,EACpC,SAAoC;QAEpC,MAAM,eAAe,GAAa,EAAE,CAAC;QACrC,MAAM,eAAe,GAAa,EAAE,CAAC;QAErC,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;YAC/B,MAAM,QAAQ,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,QAAQ,CAAC,UAAU,CAAC,CAAC;YACnE,IAAI,QAAQ,EAAE,CAAC;gBACX,IAAI,QAAQ,CAAC,QAAQ,EAAE,CAAC;oBACpB,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;gBAChD,CAAC;qBAAM,CAAC;oBACJ,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;gBAChD,CAAC;YACL,CAAC;QACL,CAAC;QAED,OAAO;YACH,SAAS;YACT,SAAS;YACT,eAAe;YACf,eAAe;YACf,gBAAgB,EAAE,eAAe,CAAC,MAAM,GAAG,CAAC;SAC/C,CAAC;IACN,CAAC;IAED;;OAEG;IACI,kBAAkB,CAAC,MAA6B;QACnD,IAAI,MAAM,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAChC,OAAO;QACX,CAAC;QAED,SAAS,CAAC,uCAAuC,CAAC,CAAC;QACnD,SAAS,CAAC,0BAA0B,MAAM,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC,CAAC;QACrE,SAAS,CAAC,0BAA0B,MAAM,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC,CAAC;QAErE,IAAI,MAAM,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACpC,SAAS,CAAC,6BAA6B,CAAC,CAAC;YACzC,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,eAAe,EAAE,CAAC;gBACxC,SAAS,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC;YACjC,CAAC;QACL,CAAC;QAED,IAAI,MAAM,CAAC,gBAAgB,EAAE,CAAC;YAC1B,SAAS,CAAC,4CAA4C,CAAC,CAAC;QAC5D,CAAC;IACL,CAAC;CACJ"}
|
|
1
|
+
{"version":3,"file":"PayloadFeedbackManager.js","sourceRoot":"","sources":["../src/PayloadFeedbackManager.ts"],"names":[],"mappings":"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"}
|