@memberjunction/ai-agents 6.2.0-edge.1 → 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 +18 -0
- 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 +7 -0
- package/dist/AgentRunner.d.ts.map +1 -1
- package/dist/AgentRunner.js +16 -5
- package/dist/AgentRunner.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/PayloadFeedbackManager.d.ts +113 -14
- package/dist/PayloadFeedbackManager.d.ts.map +1 -1
- package/dist/PayloadFeedbackManager.js +228 -88
- package/dist/PayloadFeedbackManager.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/flow-agent-type.d.ts +97 -0
- package/dist/agent-types/flow-agent-type.d.ts.map +1 -1
- package/dist/agent-types/flow-agent-type.js +281 -24
- 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 +239 -66
- package/dist/agent-types/loop-agent-prompt-params.d.ts.map +1 -1
- package/dist/agent-types/loop-agent-prompt-params.js +47 -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/base-agent.d.ts +492 -2
- package/dist/base-agent.d.ts.map +1 -1
- package/dist/base-agent.js +1686 -95
- 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/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 +6 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -0
- package/dist/index.js.map +1 -1
- package/dist/memory-manager-agent.d.ts +108 -2
- package/dist/memory-manager-agent.d.ts.map +1 -1
- package/dist/memory-manager-agent.js +172 -9
- 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/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/realtime-client-session-service.d.ts +54 -12
- package/dist/realtime/realtime-client-session-service.d.ts.map +1 -1
- package/dist/realtime/realtime-client-session-service.js +76 -25
- package/dist/realtime/realtime-client-session-service.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/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/package.json +19 -18
|
@@ -0,0 +1,401 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Decision discovery (typed-decision plan, Task 3.1): the pure half.
|
|
3
|
+
*
|
|
4
|
+
* When the user names no agent, a conversation manager such as Sage takes two turns to delegate: it
|
|
5
|
+
* calls Find Candidate Agents, then reads the rows and picks one. With the Loop prompt param
|
|
6
|
+
* `decisionDiscovery` on, `BaseAgent` instead asks one decision before the first prompt of a
|
|
7
|
+
* conversation's opening turn: a Choice over the agents the user may run, and a Likelihood that a
|
|
8
|
+
* specialist agent should handle the request. When both answers are confident, a `<suggested_agent>`
|
|
9
|
+
* system message reaches the first prompt, so the agent can delegate in its first turn. These helpers
|
|
10
|
+
* build the options and questions, judge the answers and format the message. The call, the
|
|
11
|
+
* `Agent discovery` step and the injection live on `BaseAgent`.
|
|
12
|
+
*
|
|
13
|
+
* It fails safe: after an error, a timeout, an unusable answer or an unsure one, nothing is injected
|
|
14
|
+
* and the agent behaves as it did before. A follow-up turn is never asked about (see
|
|
15
|
+
* {@link IsOpeningTurn}), so discovery never pulls the agent away from one it has already engaged.
|
|
16
|
+
*
|
|
17
|
+
* Known limitation, kept on purpose: the Likelihood does not name the options, so "none of these
|
|
18
|
+
* agents fits" cannot be expressed (see {@link DECISION_DISCOVERY_APPLIES_INSTRUCTIONS}).
|
|
19
|
+
*
|
|
20
|
+
* @module @memberjunction/ai-agents
|
|
21
|
+
*/
|
|
22
|
+
import { type ChatMessage, type DecisionAnswer, type DecisionQuestion, type PlattCalibration } from '@memberjunction/ai';
|
|
23
|
+
import type { AIDecisionRunResult } from '@memberjunction/ai-prompts';
|
|
24
|
+
import { type DecisionAnsweringModel, type DecisionModelCalibration } from '@memberjunction/ai-core-plus';
|
|
25
|
+
import type { AIEngine } from '@memberjunction/aiengine';
|
|
26
|
+
import type { EntitySearchResult, IRunViewProvider, UserInfo } from '@memberjunction/core';
|
|
27
|
+
import type { MJAIAgentEntity } from '@memberjunction/core-entities';
|
|
28
|
+
/**
|
|
29
|
+
* The most options the Choice ever offers. It always applies: the limit is this, or the decision
|
|
30
|
+
* model's declared `MaxChoiceOptions` when that is smaller. A larger catalog is first narrowed to
|
|
31
|
+
* the limit by the semantic search Find Candidate Agents uses.
|
|
32
|
+
*/
|
|
33
|
+
export declare const DECISION_DISCOVERY_MAX_OPTIONS = 25;
|
|
34
|
+
/**
|
|
35
|
+
* The least **calibrated** confidence at which the suggestion is shown (see
|
|
36
|
+
* {@link DECISION_DISCOVERY_CALIBRATION}). Both the Choice's confidence and the Likelihood that any
|
|
37
|
+
* agent applies must reach it.
|
|
38
|
+
*
|
|
39
|
+
* Set from the agent-discovery Decision Eval (plan Task 3.1, 2026-09-29): 258 labelled requests, 198
|
|
40
|
+
* for one of 33 agents and 60 for none, three repeats per model, calibrated out of fold, and scored
|
|
41
|
+
* as production would, so an answer after {@link DECISION_DISCOVERY_TIMEOUT_MS} injects nothing. At a
|
|
42
|
+
* calibrated 0.85, Jev's suggestion covered 21.7% of the requests meant for an agent, and named the
|
|
43
|
+
* right agent for 95.3% of those it covered. It was shown for 5.0% of the requests meant for no agent,
|
|
44
|
+
* all of them multi-agent workflows. Every Jev discovery but the run's first, which loaded the
|
|
45
|
+
* embedding model, finished within the timeout. LLM Decision finished within it for at least 67.7% of
|
|
46
|
+
* requests, and covered at least 16.0% at 92.6% precision, shown for 5.0%. A wrong suggestion costs
|
|
47
|
+
* more than a missed one, which is only the two-turn flow the agent used before, so the threshold
|
|
48
|
+
* favours precision. On raw probabilities the old 0.7 almost never fired: Jev's raw any-applies
|
|
49
|
+
* Likelihood never passed 0.8, so it covered 6.9%.
|
|
50
|
+
*/
|
|
51
|
+
export declare const DECISION_DISCOVERY_MIN_CONFIDENCE = 0.85;
|
|
52
|
+
/** A decision model's Platt calibration of the two discovery answers. */
|
|
53
|
+
export interface DecisionDiscoveryCalibration {
|
|
54
|
+
/** The Choice's confidence, as the probability that the chosen agent is the right one. */
|
|
55
|
+
Confidence: PlattCalibration;
|
|
56
|
+
/** The Likelihood that a specialist agent should handle the request. */
|
|
57
|
+
AnyApplies: PlattCalibration;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Platt calibration of the discovery answers, each tied to the exact model it was fitted on (see
|
|
61
|
+
* `FindDecisionCalibration` in `@memberjunction/ai-core-plus`): the MJ decision model that answered
|
|
62
|
+
* (`ModelName`, from `modelInfo.modelName`) and the model its driver reports behind it
|
|
63
|
+
* (`ResolvedModel`, from `DecisionResult.ResolvedModel`). A model's raw answers are not calibrated:
|
|
64
|
+
* Jev's raw any-applies Likelihood sits between 0.1 and 0.8 whatever the request. Any other model,
|
|
65
|
+
* including Jev at another version or `LLM Decision` answered by another chat model, is treated as
|
|
66
|
+
* unsure, so its answer suggests nothing.
|
|
67
|
+
*
|
|
68
|
+
* Fitted on the agent-discovery Decision Eval (2026-09-29; 258 requests, 3 repeats per model, 774
|
|
69
|
+
* answers each): the Choice's confidence against whether it named the labelled agent (594 answers
|
|
70
|
+
* to requests meant for an agent), and the Likelihood against whether the request was meant for an
|
|
71
|
+
* agent (all 774). Every fit converged (5 to 7 Newton iterations; a 60-digit refit agrees to 4
|
|
72
|
+
* places).
|
|
73
|
+
* - **Jev** at its pinned `APIName`, `typesafe/jev-1.13-20260917`, which it reports back as the
|
|
74
|
+
* resolved model.
|
|
75
|
+
* - **LLM Decision** when its chat model is GPT-OSS-120B, which answered all 774 of its runs.
|
|
76
|
+
*
|
|
77
|
+
* Refit, and add the new pair, whenever a model, its version, the questions or the catalog's shape
|
|
78
|
+
* changes.
|
|
79
|
+
*/
|
|
80
|
+
export declare const DECISION_DISCOVERY_CALIBRATION: readonly DecisionModelCalibration<DecisionDiscoveryCalibration>[];
|
|
81
|
+
/**
|
|
82
|
+
* The answers with the Choice's confidence and the Likelihood calibrated for the exact model that
|
|
83
|
+
* gave them ({@link DECISION_DISCOVERY_CALIBRATION}), or null when that model has no discovery
|
|
84
|
+
* calibration. Other answers, and the Choice's distribution, are returned as they are.
|
|
85
|
+
*
|
|
86
|
+
* @param answers - The raw answers, by question key.
|
|
87
|
+
* @param answeredBy - The decision model that answered, and the model behind it.
|
|
88
|
+
*/
|
|
89
|
+
export declare function CalibrateDiscoveryAnswers(answers: Record<string, DecisionAnswer>, answeredBy: DecisionAnsweringModel): Record<string, DecisionAnswer> | null;
|
|
90
|
+
/**
|
|
91
|
+
* The longest decision discovery may delay the run's first prompt. Past it the run moves on, the
|
|
92
|
+
* decision call is aborted, and nothing is injected.
|
|
93
|
+
*/
|
|
94
|
+
export declare const DECISION_DISCOVERY_TIMEOUT_MS = 1500;
|
|
95
|
+
/**
|
|
96
|
+
* The fewest options discovery asks about. Below it nothing is asked and nothing is suggested.
|
|
97
|
+
*
|
|
98
|
+
* Two options are not enough, although the Choice is well-formed: its probabilities sum to 1, so its
|
|
99
|
+
* top answer is at least 0.5 however poorly both agents fit, and the any-applies Likelihood cannot
|
|
100
|
+
* vouch for them (see {@link DECISION_DISCOVERY_APPLIES_INSTRUCTIONS}). A confidence threshold then
|
|
101
|
+
* sits only a little above chance. The discovery eval (#4892) offered every request dozens of
|
|
102
|
+
* options, so this bound leaves the measured case alone. With fewer options the agent falls back to
|
|
103
|
+
* Find Candidate Agents, as it would without discovery.
|
|
104
|
+
*/
|
|
105
|
+
export declare const DECISION_DISCOVERY_MIN_OPTIONS = 3;
|
|
106
|
+
/** The Choice's question key: which agent should handle the request. */
|
|
107
|
+
export declare const DECISION_DISCOVERY_AGENT_QUESTION = "agent";
|
|
108
|
+
/** The Likelihood's question key: whether any of the agents should. */
|
|
109
|
+
export declare const DECISION_DISCOVERY_APPLIES_QUESTION = "anyApplies";
|
|
110
|
+
/**
|
|
111
|
+
* The Likelihood's instructions. They stand on the request alone, because a driver may answer each
|
|
112
|
+
* question separately and never see the Choice's options.
|
|
113
|
+
*
|
|
114
|
+
* **Known limitation.** Because they name no agent, the Likelihood measures "is this specialist
|
|
115
|
+
* work?", not "does one of *these* agents fit?". A per-question driver, such as the Default
|
|
116
|
+
* Decision prompt's top-priority binding, answers each question on its own, so it never sees the
|
|
117
|
+
* options while answering this one. The Choice cannot say "none" either: its probabilities sum to
|
|
118
|
+
* 1 over the options it is given. So when the options leave out the agent the request needs (a host
|
|
119
|
+
* allow-list of a Billing and a Marketing agent, and a request for a legal review), both answers can
|
|
120
|
+
* still clear the threshold and suggest an agent that does not fit. The suggestion stays advisory,
|
|
121
|
+
* and the agent's prompt keeps the "unless the request clearly needs something else" escape.
|
|
122
|
+
*
|
|
123
|
+
* **Why the wording stays.** The discovery eval (#4892) measured, and the calibration (#4893)
|
|
124
|
+
* calibrated, exactly this question: its per-model Platt parameters and threshold hold only for this
|
|
125
|
+
* wording. Rewording it invalidates both, so the fix (quoting the options, or one Likelihood per
|
|
126
|
+
* option) waits for a re-measurement, tracked in #4938. Meanwhile {@link DECISION_DISCOVERY_MIN_OPTIONS} closes the
|
|
127
|
+
* worst case, two options, and leaves the measured case unchanged.
|
|
128
|
+
*/
|
|
129
|
+
export declare const DECISION_DISCOVERY_APPLIES_INSTRUCTIONS = "This request asks for work that a specialist agent should do, rather than something the conversation manager should answer directly or plan as a multi-agent workflow.";
|
|
130
|
+
/** The entity the semantic search ranks when the catalog is over the limit, as Find Candidate Agents does. */
|
|
131
|
+
export declare const DECISION_DISCOVERY_SEARCH_ENTITY = "MJ: AI Agents";
|
|
132
|
+
/**
|
|
133
|
+
* The `ExecuteAgentParams.data` key holding the host's catalog of agents the conversation manager
|
|
134
|
+
* may route to (`ConversationAgentRunner` sets it, narrowed to the host's `AllowedAgentIDs`).
|
|
135
|
+
*/
|
|
136
|
+
export declare const DECISION_DISCOVERY_HOST_AGENTS_KEY = "ALL_AVAILABLE_AGENTS";
|
|
137
|
+
/** The most agent IDs the step records in a list, such as the agents left out for having no description. */
|
|
138
|
+
export declare const DECISION_DISCOVERY_MAX_RECORDED_IDS = 50;
|
|
139
|
+
/** One agent the Choice can pick. */
|
|
140
|
+
export interface DecisionDiscoveryOption {
|
|
141
|
+
/** The agent's ID: the option's value. */
|
|
142
|
+
ID: string;
|
|
143
|
+
/** The agent's name: used in the suggestion and the step, never shown to the decision model. */
|
|
144
|
+
Name: string;
|
|
145
|
+
/** The agent's description: what the decision model reads. */
|
|
146
|
+
Description: string;
|
|
147
|
+
}
|
|
148
|
+
/** A valid answer to the two questions, in terms of the options. */
|
|
149
|
+
export interface DecisionDiscoveryAnswer {
|
|
150
|
+
/** The agent the Choice picked. */
|
|
151
|
+
Agent: DecisionDiscoveryOption;
|
|
152
|
+
/** The Choice's confidence. */
|
|
153
|
+
Confidence: number;
|
|
154
|
+
/** The Likelihood that a specialist agent should handle the request ({@link DECISION_DISCOVERY_APPLIES_INSTRUCTIONS}). */
|
|
155
|
+
AnyApplies: number;
|
|
156
|
+
/** The Choice's distribution, by agent name. */
|
|
157
|
+
Probabilities: Record<string, number>;
|
|
158
|
+
}
|
|
159
|
+
/** What the answers mean for the prompt. */
|
|
160
|
+
export interface DecisionDiscoveryVerdict {
|
|
161
|
+
/** The answer, when both questions were answered validly. */
|
|
162
|
+
Answer?: DecisionDiscoveryAnswer;
|
|
163
|
+
/** Whether the suggestion is shown: both answers at or above the threshold. */
|
|
164
|
+
Confident: boolean;
|
|
165
|
+
/** Why it is not shown. */
|
|
166
|
+
Reason?: string;
|
|
167
|
+
}
|
|
168
|
+
/** What one run's decision discovery did. `BaseAgent` records it as the `Agent discovery` step. */
|
|
169
|
+
export interface DecisionDiscoveryOutcome {
|
|
170
|
+
/** Whether the `<suggested_agent>` message goes into the first prompt. */
|
|
171
|
+
Injected: boolean;
|
|
172
|
+
/** The message, when it is injected. */
|
|
173
|
+
Message?: string;
|
|
174
|
+
/**
|
|
175
|
+
* False when discovery failed: an error, a timeout, a cancelled run, or an answer it could not
|
|
176
|
+
* use. True when the decision gave a valid answer, confident or not.
|
|
177
|
+
*/
|
|
178
|
+
Succeeded: boolean;
|
|
179
|
+
/** Why nothing is injected. */
|
|
180
|
+
Reason?: string;
|
|
181
|
+
/** How many agents the user may delegate to: the catalog before any narrowing. */
|
|
182
|
+
CatalogSize?: number;
|
|
183
|
+
/** How many IDs the host's allow-list held, when the run carried one. The catalog was cut to it. */
|
|
184
|
+
HostAllowListSize?: number;
|
|
185
|
+
/** The IDs of the catalog agents left out of the options for having no description. */
|
|
186
|
+
WithoutDescription?: string[];
|
|
187
|
+
/** How many options the Choice offered. */
|
|
188
|
+
OptionCount?: number;
|
|
189
|
+
/** The most options the Choice may offer: see {@link DecisionOptionLimit}. */
|
|
190
|
+
OptionLimit?: number;
|
|
191
|
+
/** The decision model's option cap, when one is declared. */
|
|
192
|
+
DeclaredOptionCap?: number;
|
|
193
|
+
/** The number of options before the semantic search narrowed them. Set only when it did. */
|
|
194
|
+
NarrowedFrom?: number;
|
|
195
|
+
/** The answer, when there was a valid one. */
|
|
196
|
+
Answer?: DecisionDiscoveryAnswer;
|
|
197
|
+
/** The decision call's result, for its usage. */
|
|
198
|
+
Result?: AIDecisionRunResult;
|
|
199
|
+
/**
|
|
200
|
+
* The model behind the answer (`DescribeAnsweringModel`), when it has no discovery calibration,
|
|
201
|
+
* so its answer was treated as unsure: discovery never suggests anything for it.
|
|
202
|
+
*/
|
|
203
|
+
UncalibratedModel?: string;
|
|
204
|
+
}
|
|
205
|
+
/**
|
|
206
|
+
* The Choice's options for one run, and how they were reached from the catalog. Its members other
|
|
207
|
+
* than `Options` and `Error` carry over into the {@link DecisionDiscoveryOutcome}.
|
|
208
|
+
*/
|
|
209
|
+
export interface DecisionDiscoveryOptionSet {
|
|
210
|
+
/** The options to offer. */
|
|
211
|
+
Options: DecisionDiscoveryOption[];
|
|
212
|
+
/** Why the options could not be built, when they could not. */
|
|
213
|
+
Error?: string;
|
|
214
|
+
/** See {@link DecisionDiscoveryOutcome.CatalogSize}. */
|
|
215
|
+
CatalogSize: number;
|
|
216
|
+
/** See {@link DecisionDiscoveryOutcome.HostAllowListSize}. */
|
|
217
|
+
HostAllowListSize?: number;
|
|
218
|
+
/** See {@link DecisionDiscoveryOutcome.WithoutDescription}. */
|
|
219
|
+
WithoutDescription: string[];
|
|
220
|
+
/** See {@link DecisionDiscoveryOutcome.OptionLimit}. */
|
|
221
|
+
OptionLimit: number;
|
|
222
|
+
/** See {@link DecisionDiscoveryOutcome.DeclaredOptionCap}. */
|
|
223
|
+
DeclaredOptionCap?: number;
|
|
224
|
+
/** See {@link DecisionDiscoveryOutcome.NarrowedFrom}. */
|
|
225
|
+
NarrowedFrom?: number;
|
|
226
|
+
}
|
|
227
|
+
/** A discovery that failed: nothing is injected. */
|
|
228
|
+
export declare function FailedDecisionDiscovery(reason: string): DecisionDiscoveryOutcome;
|
|
229
|
+
/**
|
|
230
|
+
* Whether the `decisionDiscovery` setting is on in merged agent-type prompt params. Only `true` turns it
|
|
231
|
+
* on. Discovery runs only when the master switch, `decisionsEnabled`, is on as well: `BaseAgent` checks both.
|
|
232
|
+
*/
|
|
233
|
+
export declare function IsDecisionDiscoveryOn(promptParams: Record<string, unknown> | undefined): boolean;
|
|
234
|
+
/**
|
|
235
|
+
* Whether a run answers a conversation's opening request, the only turn discovery asks about: its
|
|
236
|
+
* messages hold exactly one user message. A follow-up turn carries the earlier requests in its
|
|
237
|
+
* history (or the summary of them, which also arrives as a user message), and may be continuing work
|
|
238
|
+
* with an agent already engaged, which a suggestion must not pull the agent away from. Assistant and
|
|
239
|
+
* system messages do not count, so a greeting before the first request still leaves it the opening
|
|
240
|
+
* turn. Read it from the messages the run started with, before the framework adds any.
|
|
241
|
+
*
|
|
242
|
+
* @param messages - The run's conversation messages, as the run received them.
|
|
243
|
+
*/
|
|
244
|
+
export declare function IsOpeningTurn(messages: ReadonlyArray<ChatMessage> | undefined): boolean;
|
|
245
|
+
/**
|
|
246
|
+
* Whether the request @mentions an agent other than the one running, in which case the user has
|
|
247
|
+
* already chosen and discovery does not run. It recognises both forms a mention takes by the time a
|
|
248
|
+
* run starts: the composer's `@{"_mode":"mention","type":"agent",...}` token, and the "@Agent Name"
|
|
249
|
+
* text `BaseAgent` converts that token to (or that the user typed). Names match whole, in any case.
|
|
250
|
+
* A mention of the running agent itself does not count: it names no one to delegate to.
|
|
251
|
+
*
|
|
252
|
+
* @param request - The run's opening request.
|
|
253
|
+
* @param agents - Every agent a mention could name.
|
|
254
|
+
* @param selfID - The running agent's ID.
|
|
255
|
+
*/
|
|
256
|
+
export declare function MentionsAgent(request: string, agents: ReadonlyArray<{
|
|
257
|
+
ID: string;
|
|
258
|
+
Name: string | null;
|
|
259
|
+
}>, selfID: string): boolean;
|
|
260
|
+
/**
|
|
261
|
+
* The Choice's options: one per agent with a description, in catalog order. An agent with a blank
|
|
262
|
+
* description is left out, because the decision model reads only descriptions and the decision
|
|
263
|
+
* primitive rejects an option without one.
|
|
264
|
+
*/
|
|
265
|
+
export declare function DecisionDiscoveryOptions(agents: ReadonlyArray<{
|
|
266
|
+
ID: string;
|
|
267
|
+
Name: string;
|
|
268
|
+
Description: string | null;
|
|
269
|
+
}>): DecisionDiscoveryOption[];
|
|
270
|
+
/** The IDs of the agents {@link DecisionDiscoveryOptions} leaves out for having a blank description, in catalog order. */
|
|
271
|
+
export declare function AgentsWithoutDescription(agents: ReadonlyArray<{
|
|
272
|
+
ID: string;
|
|
273
|
+
Description: string | null;
|
|
274
|
+
}>): string[];
|
|
275
|
+
/**
|
|
276
|
+
* The agent IDs in the host's allow-list, when the run carries one: the `ID` of each entry of
|
|
277
|
+
* `data[`{@link DECISION_DISCOVERY_HOST_AGENTS_KEY}`]` when that is an array. `undefined` when it is
|
|
278
|
+
* absent or not an array. An empty array is an allow-list that allows no one.
|
|
279
|
+
*/
|
|
280
|
+
export declare function HostAllowedAgentIDs(data: Record<string, unknown> | undefined): string[] | undefined;
|
|
281
|
+
/**
|
|
282
|
+
* The agents the host allows, in their original order, compared UUID-safely. Without an allow-list
|
|
283
|
+
* every agent is kept, and `agents` itself is returned.
|
|
284
|
+
*/
|
|
285
|
+
export declare function KeepHostAllowedAgents<T extends {
|
|
286
|
+
ID: string;
|
|
287
|
+
}>(agents: T[], allowedIDs: ReadonlyArray<string> | undefined): T[];
|
|
288
|
+
/**
|
|
289
|
+
* The smallest option cap any of the decision prompt's models declares, or `undefined` when none
|
|
290
|
+
* does. The runner may answer with any of them after failover, so the smallest is the one they all
|
|
291
|
+
* accept. Anything but a positive number declares no cap.
|
|
292
|
+
*/
|
|
293
|
+
export declare function SmallestOptionCap(caps: ReadonlyArray<number | null | undefined>): number | undefined;
|
|
294
|
+
/**
|
|
295
|
+
* The most options the Choice may offer: {@link DECISION_DISCOVERY_MAX_OPTIONS}, or the model's
|
|
296
|
+
* declared cap when that is smaller. It always applies, declared cap or not. More options than this
|
|
297
|
+
* are narrowed first.
|
|
298
|
+
*/
|
|
299
|
+
export declare function DecisionOptionLimit(declaredCap: number | undefined): number;
|
|
300
|
+
/**
|
|
301
|
+
* Keeps the options the semantic search returned, in its rank order, up to `limit`. An option the
|
|
302
|
+
* search did not return is dropped, and a result that is not an option (an agent the user may not
|
|
303
|
+
* run, say) is skipped.
|
|
304
|
+
*/
|
|
305
|
+
export declare function RankOptionsBySearch(options: ReadonlyArray<DecisionDiscoveryOption>, rankedIDs: ReadonlyArray<string>, limit: number): DecisionDiscoveryOption[];
|
|
306
|
+
/**
|
|
307
|
+
* The two questions, asked about the opening request in one call: a Choice over the options, whose
|
|
308
|
+
* values are agent IDs and whose descriptions are the agents' descriptions, and a Likelihood,
|
|
309
|
+
* {@link DECISION_DISCOVERY_APPLIES_INSTRUCTIONS}, that stands on the request alone.
|
|
310
|
+
*
|
|
311
|
+
* Neither can say that none of the options fits: the Likelihood never sees them, and the Choice's
|
|
312
|
+
* probabilities sum to 1 over them. The wording is what the discovery eval measured and calibrated,
|
|
313
|
+
* so it changes only with a re-measurement (see {@link DECISION_DISCOVERY_APPLIES_INSTRUCTIONS}).
|
|
314
|
+
*
|
|
315
|
+
* @param options - The agents to choose from.
|
|
316
|
+
*/
|
|
317
|
+
export declare function BuildDecisionDiscoveryQuestions(options: ReadonlyArray<DecisionDiscoveryOption>): Record<string, DecisionQuestion>;
|
|
318
|
+
/**
|
|
319
|
+
* Judges the answers. Confident means the Choice's confidence and the Likelihood both reach
|
|
320
|
+
* `minConfidence`. An answer that is missing, of the wrong kind, not a finite number, or names no
|
|
321
|
+
* option gives no answer at all.
|
|
322
|
+
*/
|
|
323
|
+
export declare function JudgeDecisionDiscovery(answers: Record<string, DecisionAnswer>, options: ReadonlyArray<DecisionDiscoveryOption>, minConfidence?: number): DecisionDiscoveryVerdict;
|
|
324
|
+
/**
|
|
325
|
+
* What a finished decision call means for the prompt: the suggestion when both **calibrated**
|
|
326
|
+
* answers are confident, otherwise nothing, with the reason. A failed call, or an answer that cannot
|
|
327
|
+
* be used, is a failed discovery. An answer from a model with no discovery calibration is unsure.
|
|
328
|
+
*/
|
|
329
|
+
export declare function DecisionDiscoveryFromResult(result: AIDecisionRunResult, options: ReadonlyArray<DecisionDiscoveryOption>, minConfidence?: number): DecisionDiscoveryOutcome;
|
|
330
|
+
/** The system message placed before the first prompt when the answer is confident. */
|
|
331
|
+
export declare function SuggestedAgentMessage(agent: DecisionDiscoveryOption, confidence: number): string;
|
|
332
|
+
/**
|
|
333
|
+
* Whether a provider can run `SearchEntity`. It is declared on `IRunViewProvider`, which every real
|
|
334
|
+
* provider implements alongside `IMetadataProvider`.
|
|
335
|
+
*/
|
|
336
|
+
export declare function CanSearchEntities<T extends object>(provider: T | undefined): provider is T & Pick<IRunViewProvider, 'SearchEntity'>;
|
|
337
|
+
/** The fields of an agent that discovery reads. Every `MJAIAgentEntity` has them. */
|
|
338
|
+
export type DecisionDiscoveryAgent = Pick<MJAIAgentEntity, 'ID' | 'Name' | 'Description' | 'Status' | 'InvocationMode' | 'ParentID'>;
|
|
339
|
+
/**
|
|
340
|
+
* The semantic search that ranks agents for one request, best first: see
|
|
341
|
+
* {@link DecisionDiscoveryAgentSearch}. It returns at most `topK` results.
|
|
342
|
+
*/
|
|
343
|
+
export type DecisionDiscoverySearch = (topK: number) => Promise<EntitySearchResult[]>;
|
|
344
|
+
/** What {@link BuildDecisionDiscoveryOptionSet} builds the Choice's options from. */
|
|
345
|
+
export interface DecisionDiscoveryOptionSetParams {
|
|
346
|
+
/** The agents the user may run: {@link DecisionDiscoveryRunnableAgents} over the engine's catalog. */
|
|
347
|
+
Agents: ReadonlyArray<DecisionDiscoveryAgent>;
|
|
348
|
+
/** The agent running discovery, such as Sage. It is never an option. */
|
|
349
|
+
RunningAgentID: string;
|
|
350
|
+
/** The host's allow-list ({@link HostAllowedAgentIDs}), when the run carries one. */
|
|
351
|
+
HostAllowedIDs?: ReadonlyArray<string>;
|
|
352
|
+
/** The decision model's option cap ({@link DecisionPromptOptionCap}), when one is declared. */
|
|
353
|
+
DeclaredCap?: number;
|
|
354
|
+
/** Narrows a catalog over the limit. Undefined when the provider cannot run the search. */
|
|
355
|
+
Search?: DecisionDiscoverySearch;
|
|
356
|
+
}
|
|
357
|
+
/**
|
|
358
|
+
* The agents a user may run, as Find Candidate Agents filters them: through
|
|
359
|
+
* {@link AIAgentPermissionHelper.FilterRunnableAgents} (Active, with run permission), in catalog order.
|
|
360
|
+
*
|
|
361
|
+
* @param agents - The catalog: `AIEngine.Instance.Agents`.
|
|
362
|
+
* @param contextUser - The user whose run permission decides.
|
|
363
|
+
*/
|
|
364
|
+
export declare function DecisionDiscoveryRunnableAgents<T extends DecisionDiscoveryAgent>(agents: T[], contextUser: UserInfo): Promise<T[]>;
|
|
365
|
+
/**
|
|
366
|
+
* The agents this run may suggest: of the agents the user may run, the ones that can be discovered
|
|
367
|
+
* directly (the set Find Candidate Agents offers, through the same {@link AIAgentPermissionHelper}
|
|
368
|
+
* filter), minus the running agent itself. In catalog order.
|
|
369
|
+
*
|
|
370
|
+
* @param agents - The agents the user may run ({@link DecisionDiscoveryRunnableAgents}).
|
|
371
|
+
* @param runningAgentID - The agent running discovery.
|
|
372
|
+
*/
|
|
373
|
+
export declare function DecisionDiscoveryCatalog<T extends Pick<DecisionDiscoveryAgent, 'ID' | 'InvocationMode' | 'ParentID'>>(agents: ReadonlyArray<T>, runningAgentID: string): T[];
|
|
374
|
+
/**
|
|
375
|
+
* The decision model's option cap: the smallest `Decision.MaxChoiceOptions` in the effective model
|
|
376
|
+
* configuration of the models the decision prompt is bound to, the setting `AIDecisionRunner`
|
|
377
|
+
* checks before its call. `undefined` when none declares one, or the prompt is not found.
|
|
378
|
+
*
|
|
379
|
+
* @param engine - The loaded engine: `AIEngine.Instance`.
|
|
380
|
+
* @param promptName - The decision prompt's name, matched whole in any case.
|
|
381
|
+
*/
|
|
382
|
+
export declare function DecisionPromptOptionCap(engine: Pick<AIEngine, 'Prompts' | 'PromptModels' | 'ModelVendors' | 'GetEffectiveModelConfiguration'>, promptName: string): number | undefined;
|
|
383
|
+
/**
|
|
384
|
+
* The search Find Candidate Agents runs, for one request: hybrid over
|
|
385
|
+
* {@link DECISION_DISCOVERY_SEARCH_ENTITY}. Its similarity floor is not applied: the caller judges fit.
|
|
386
|
+
*
|
|
387
|
+
* @param provider - A provider that can search ({@link CanSearchEntities}).
|
|
388
|
+
* @param request - The request to rank agents for.
|
|
389
|
+
* @param contextUser - The user the search runs as.
|
|
390
|
+
*/
|
|
391
|
+
export declare function DecisionDiscoveryAgentSearch(provider: Pick<IRunViewProvider, 'SearchEntity'>, request: string, contextUser: UserInfo): DecisionDiscoverySearch;
|
|
392
|
+
/**
|
|
393
|
+
* The Choice's options, rebuilt on every call and never cached: the agents in the permitted
|
|
394
|
+
* catalog ({@link DecisionDiscoveryCatalog}) that the host allows and that have a description.
|
|
395
|
+
* There are never more than {@link DecisionOptionLimit}: when there are, the semantic search narrows
|
|
396
|
+
* them first; if it cannot, `Error` says why.
|
|
397
|
+
*
|
|
398
|
+
* @param params - The permitted agents, the running agent, the host's allow-list, the option cap and the search.
|
|
399
|
+
*/
|
|
400
|
+
export declare function BuildDecisionDiscoveryOptionSet(params: DecisionDiscoveryOptionSetParams): Promise<DecisionDiscoveryOptionSet>;
|
|
401
|
+
//# sourceMappingURL=decision-discovery.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"decision-discovery.d.ts","sourceRoot":"","sources":["../src/decision-discovery.ts"],"names":[],"mappings":"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"}
|