@dogpile/sdk 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +37 -0
- package/LICENSE +16 -0
- package/README.md +842 -0
- package/dist/browser/index.d.ts +8 -0
- package/dist/browser/index.d.ts.map +1 -0
- package/dist/browser/index.js +4493 -0
- package/dist/browser/index.js.map +1 -0
- package/dist/index.d.ts +17 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +14 -0
- package/dist/index.js.map +1 -0
- package/dist/providers/openai-compatible.d.ts +44 -0
- package/dist/providers/openai-compatible.d.ts.map +1 -0
- package/dist/providers/openai-compatible.js +305 -0
- package/dist/providers/openai-compatible.js.map +1 -0
- package/dist/runtime/broadcast.d.ts +18 -0
- package/dist/runtime/broadcast.d.ts.map +1 -0
- package/dist/runtime/broadcast.js +335 -0
- package/dist/runtime/broadcast.js.map +1 -0
- package/dist/runtime/cancellation.d.ts +6 -0
- package/dist/runtime/cancellation.d.ts.map +1 -0
- package/dist/runtime/cancellation.js +35 -0
- package/dist/runtime/cancellation.js.map +1 -0
- package/dist/runtime/coordinator.d.ts +18 -0
- package/dist/runtime/coordinator.d.ts.map +1 -0
- package/dist/runtime/coordinator.js +434 -0
- package/dist/runtime/coordinator.js.map +1 -0
- package/dist/runtime/decisions.d.ts +5 -0
- package/dist/runtime/decisions.d.ts.map +1 -0
- package/dist/runtime/decisions.js +31 -0
- package/dist/runtime/decisions.js.map +1 -0
- package/dist/runtime/defaults.d.ts +63 -0
- package/dist/runtime/defaults.d.ts.map +1 -0
- package/dist/runtime/defaults.js +426 -0
- package/dist/runtime/defaults.js.map +1 -0
- package/dist/runtime/engine.d.ts +79 -0
- package/dist/runtime/engine.d.ts.map +1 -0
- package/dist/runtime/engine.js +723 -0
- package/dist/runtime/engine.js.map +1 -0
- package/dist/runtime/model.d.ts +14 -0
- package/dist/runtime/model.d.ts.map +1 -0
- package/dist/runtime/model.js +82 -0
- package/dist/runtime/model.js.map +1 -0
- package/dist/runtime/sequential.d.ts +18 -0
- package/dist/runtime/sequential.d.ts.map +1 -0
- package/dist/runtime/sequential.js +277 -0
- package/dist/runtime/sequential.js.map +1 -0
- package/dist/runtime/shared.d.ts +18 -0
- package/dist/runtime/shared.d.ts.map +1 -0
- package/dist/runtime/shared.js +288 -0
- package/dist/runtime/shared.js.map +1 -0
- package/dist/runtime/termination.d.ts +77 -0
- package/dist/runtime/termination.d.ts.map +1 -0
- package/dist/runtime/termination.js +355 -0
- package/dist/runtime/termination.js.map +1 -0
- package/dist/runtime/tools.d.ts +314 -0
- package/dist/runtime/tools.d.ts.map +1 -0
- package/dist/runtime/tools.js +969 -0
- package/dist/runtime/tools.js.map +1 -0
- package/dist/runtime/validation.d.ts +23 -0
- package/dist/runtime/validation.d.ts.map +1 -0
- package/dist/runtime/validation.js +656 -0
- package/dist/runtime/validation.js.map +1 -0
- package/dist/types.d.ts +2434 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +81 -0
- package/dist/types.js.map +1 -0
- package/package.json +157 -0
- package/src/browser/index.ts +7 -0
- package/src/index.ts +195 -0
- package/src/providers/openai-compatible.ts +406 -0
- package/src/runtime/broadcast.test.ts +355 -0
- package/src/runtime/broadcast.ts +428 -0
- package/src/runtime/cancellation.ts +40 -0
- package/src/runtime/coordinator.test.ts +468 -0
- package/src/runtime/coordinator.ts +581 -0
- package/src/runtime/decisions.ts +38 -0
- package/src/runtime/defaults.ts +547 -0
- package/src/runtime/engine.ts +880 -0
- package/src/runtime/model.ts +117 -0
- package/src/runtime/sequential.test.ts +262 -0
- package/src/runtime/sequential.ts +357 -0
- package/src/runtime/shared.test.ts +265 -0
- package/src/runtime/shared.ts +367 -0
- package/src/runtime/termination.ts +463 -0
- package/src/runtime/tools.ts +1518 -0
- package/src/runtime/validation.ts +771 -0
- package/src/types.ts +2729 -0
|
@@ -0,0 +1,288 @@
|
|
|
1
|
+
import { addCost, createReplayTraceBudget, createReplayTraceBudgetStateChanges, createReplayTraceFinalOutput, createReplayTraceProtocolDecision, createReplayTraceRunInputs, createReplayTraceSeed, createRunAccounting, createRunEventLog, createRunMetadata, createRunUsage, createTranscriptLink, emptyCost } from "./defaults.js";
|
|
2
|
+
import { throwIfAborted } from "./cancellation.js";
|
|
3
|
+
import { parseAgentDecision } from "./decisions.js";
|
|
4
|
+
import { generateModelTurn } from "./model.js";
|
|
5
|
+
import { evaluateTerminationStop } from "./termination.js";
|
|
6
|
+
import { createRuntimeToolExecutor, executeModelResponseToolRequests, runtimeToolAvailability } from "./tools.js";
|
|
7
|
+
export async function runShared(options) {
|
|
8
|
+
const runId = createRunId();
|
|
9
|
+
const events = [];
|
|
10
|
+
const transcript = [];
|
|
11
|
+
const protocolDecisions = [];
|
|
12
|
+
const providerCalls = [];
|
|
13
|
+
let totalCost = emptyCost();
|
|
14
|
+
const sharedState = options.protocol.organizationalMemory ?? "";
|
|
15
|
+
const maxTurns = options.protocol.maxTurns ?? options.agents.length;
|
|
16
|
+
const activeAgents = options.agents.slice(0, maxTurns);
|
|
17
|
+
const startedAtMs = nowMs();
|
|
18
|
+
let stopped = false;
|
|
19
|
+
let termination;
|
|
20
|
+
const emit = (event) => {
|
|
21
|
+
events.push(event);
|
|
22
|
+
options.emit?.(event);
|
|
23
|
+
};
|
|
24
|
+
const recordProtocolDecision = (event, decisionOptions) => {
|
|
25
|
+
protocolDecisions.push(createReplayTraceProtocolDecision("shared", event, events.length - 1, decisionOptions));
|
|
26
|
+
};
|
|
27
|
+
const toolExecutor = createRuntimeToolExecutor({
|
|
28
|
+
runId,
|
|
29
|
+
protocol: "shared",
|
|
30
|
+
tier: options.tier,
|
|
31
|
+
tools: options.tools,
|
|
32
|
+
emit(event) {
|
|
33
|
+
emit(event);
|
|
34
|
+
recordProtocolDecision(event);
|
|
35
|
+
},
|
|
36
|
+
getTrace: () => ({ events, transcript }),
|
|
37
|
+
...(options.signal !== undefined ? { abortSignal: options.signal } : {})
|
|
38
|
+
});
|
|
39
|
+
const toolAvailability = runtimeToolAvailability(toolExecutor.tools);
|
|
40
|
+
throwIfAborted(options.signal, options.model.id);
|
|
41
|
+
for (const agent of activeAgents) {
|
|
42
|
+
const event = {
|
|
43
|
+
type: "role-assignment",
|
|
44
|
+
runId,
|
|
45
|
+
at: new Date().toISOString(),
|
|
46
|
+
agentId: agent.id,
|
|
47
|
+
role: agent.role
|
|
48
|
+
};
|
|
49
|
+
emit(event);
|
|
50
|
+
recordProtocolDecision(event);
|
|
51
|
+
}
|
|
52
|
+
if (!stopIfNeeded()) {
|
|
53
|
+
const providerCallSlots = [];
|
|
54
|
+
const turnResults = await Promise.all(activeAgents.map(async (agent, index) => {
|
|
55
|
+
const turn = index + 1;
|
|
56
|
+
const input = buildSharedInput(options.intent, sharedState, turn);
|
|
57
|
+
const request = {
|
|
58
|
+
temperature: options.temperature,
|
|
59
|
+
...(options.signal !== undefined ? { signal: options.signal } : {}),
|
|
60
|
+
metadata: {
|
|
61
|
+
runId,
|
|
62
|
+
protocol: "shared",
|
|
63
|
+
agentId: agent.id,
|
|
64
|
+
role: agent.role,
|
|
65
|
+
tier: options.tier,
|
|
66
|
+
turn,
|
|
67
|
+
...toolAvailability
|
|
68
|
+
},
|
|
69
|
+
messages: [
|
|
70
|
+
{
|
|
71
|
+
role: "system",
|
|
72
|
+
content: buildSystemPrompt(agent)
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
role: "user",
|
|
76
|
+
content: input
|
|
77
|
+
}
|
|
78
|
+
]
|
|
79
|
+
};
|
|
80
|
+
const response = await generateModelTurn({
|
|
81
|
+
model: options.model,
|
|
82
|
+
request,
|
|
83
|
+
runId,
|
|
84
|
+
agent,
|
|
85
|
+
input,
|
|
86
|
+
emit,
|
|
87
|
+
callId: providerCallIdFor(runId, providerCalls.length + index + 1),
|
|
88
|
+
onProviderCall(call) {
|
|
89
|
+
providerCallSlots[index] = call;
|
|
90
|
+
}
|
|
91
|
+
});
|
|
92
|
+
const decision = parseAgentDecision(response.text);
|
|
93
|
+
const toolCalls = await executeModelResponseToolRequests({
|
|
94
|
+
response,
|
|
95
|
+
executor: toolExecutor,
|
|
96
|
+
agentId: agent.id,
|
|
97
|
+
role: agent.role,
|
|
98
|
+
turn
|
|
99
|
+
});
|
|
100
|
+
throwIfAborted(options.signal, options.model.id);
|
|
101
|
+
return {
|
|
102
|
+
agent,
|
|
103
|
+
turn,
|
|
104
|
+
input,
|
|
105
|
+
response,
|
|
106
|
+
decision,
|
|
107
|
+
toolCalls,
|
|
108
|
+
turnCost: responseCost(response)
|
|
109
|
+
};
|
|
110
|
+
}));
|
|
111
|
+
providerCalls.push(...providerCallSlots.filter((call) => call !== undefined));
|
|
112
|
+
for (const result of turnResults) {
|
|
113
|
+
totalCost = addCost(totalCost, result.turnCost);
|
|
114
|
+
transcript.push({
|
|
115
|
+
agentId: result.agent.id,
|
|
116
|
+
role: result.agent.role,
|
|
117
|
+
input: result.input,
|
|
118
|
+
output: result.response.text,
|
|
119
|
+
...(result.decision !== undefined ? { decision: result.decision } : {}),
|
|
120
|
+
...(result.toolCalls.length > 0 ? { toolCalls: result.toolCalls } : {})
|
|
121
|
+
});
|
|
122
|
+
const event = {
|
|
123
|
+
type: "agent-turn",
|
|
124
|
+
runId,
|
|
125
|
+
at: new Date().toISOString(),
|
|
126
|
+
agentId: result.agent.id,
|
|
127
|
+
role: result.agent.role,
|
|
128
|
+
input: result.input,
|
|
129
|
+
output: result.response.text,
|
|
130
|
+
...(result.decision !== undefined ? { decision: result.decision } : {}),
|
|
131
|
+
cost: totalCost
|
|
132
|
+
};
|
|
133
|
+
emit(event);
|
|
134
|
+
recordProtocolDecision(event, {
|
|
135
|
+
turn: result.turn,
|
|
136
|
+
transcriptEntryCount: transcript.length
|
|
137
|
+
});
|
|
138
|
+
}
|
|
139
|
+
stopIfNeeded();
|
|
140
|
+
}
|
|
141
|
+
const output = synthesizeSharedOutput(transcript);
|
|
142
|
+
throwIfAborted(options.signal, options.model.id);
|
|
143
|
+
const final = {
|
|
144
|
+
type: "final",
|
|
145
|
+
runId,
|
|
146
|
+
at: new Date().toISOString(),
|
|
147
|
+
output,
|
|
148
|
+
cost: totalCost,
|
|
149
|
+
transcript: createTranscriptLink(transcript),
|
|
150
|
+
...(termination !== undefined ? { termination } : {})
|
|
151
|
+
};
|
|
152
|
+
emit(final);
|
|
153
|
+
recordProtocolDecision(final, {
|
|
154
|
+
transcriptEntryCount: transcript.length
|
|
155
|
+
});
|
|
156
|
+
const finalEvent = events.at(-1);
|
|
157
|
+
return {
|
|
158
|
+
output,
|
|
159
|
+
eventLog: createRunEventLog(runId, "shared", events),
|
|
160
|
+
trace: {
|
|
161
|
+
schemaVersion: "1.0",
|
|
162
|
+
runId,
|
|
163
|
+
protocol: "shared",
|
|
164
|
+
tier: options.tier,
|
|
165
|
+
modelProviderId: options.model.id,
|
|
166
|
+
agentsUsed: activeAgents,
|
|
167
|
+
inputs: createReplayTraceRunInputs({
|
|
168
|
+
intent: options.intent,
|
|
169
|
+
protocol: options.protocol,
|
|
170
|
+
tier: options.tier,
|
|
171
|
+
modelProviderId: options.model.id,
|
|
172
|
+
agents: activeAgents,
|
|
173
|
+
temperature: options.temperature
|
|
174
|
+
}),
|
|
175
|
+
budget: createReplayTraceBudget({
|
|
176
|
+
tier: options.tier,
|
|
177
|
+
...(options.budget ? { caps: options.budget } : {}),
|
|
178
|
+
...(options.terminate ? { termination: options.terminate } : {})
|
|
179
|
+
}),
|
|
180
|
+
budgetStateChanges: createReplayTraceBudgetStateChanges(events),
|
|
181
|
+
seed: createReplayTraceSeed(options.seed),
|
|
182
|
+
protocolDecisions,
|
|
183
|
+
providerCalls,
|
|
184
|
+
finalOutput: createReplayTraceFinalOutput(output, finalEvent ?? {
|
|
185
|
+
type: "final",
|
|
186
|
+
runId,
|
|
187
|
+
at: "",
|
|
188
|
+
output,
|
|
189
|
+
cost: totalCost,
|
|
190
|
+
transcript: createTranscriptLink(transcript)
|
|
191
|
+
}),
|
|
192
|
+
events,
|
|
193
|
+
transcript
|
|
194
|
+
},
|
|
195
|
+
transcript,
|
|
196
|
+
usage: createRunUsage(totalCost),
|
|
197
|
+
metadata: createRunMetadata({
|
|
198
|
+
runId,
|
|
199
|
+
protocol: "shared",
|
|
200
|
+
tier: options.tier,
|
|
201
|
+
modelProviderId: options.model.id,
|
|
202
|
+
agentsUsed: activeAgents,
|
|
203
|
+
events
|
|
204
|
+
}),
|
|
205
|
+
accounting: createRunAccounting({
|
|
206
|
+
tier: options.tier,
|
|
207
|
+
...(options.budget ? { budget: options.budget } : {}),
|
|
208
|
+
...(options.terminate ? { termination: options.terminate } : {}),
|
|
209
|
+
cost: totalCost,
|
|
210
|
+
events
|
|
211
|
+
}),
|
|
212
|
+
cost: totalCost
|
|
213
|
+
};
|
|
214
|
+
function stopIfNeeded() {
|
|
215
|
+
throwIfAborted(options.signal, options.model.id);
|
|
216
|
+
if (stopped || !options.terminate) {
|
|
217
|
+
return stopped;
|
|
218
|
+
}
|
|
219
|
+
const stopRecord = evaluateTerminationStop(options.terminate, {
|
|
220
|
+
runId,
|
|
221
|
+
protocol: "shared",
|
|
222
|
+
tier: options.tier,
|
|
223
|
+
cost: totalCost,
|
|
224
|
+
events,
|
|
225
|
+
transcript,
|
|
226
|
+
iteration: transcript.length,
|
|
227
|
+
elapsedMs: elapsedMs(startedAtMs)
|
|
228
|
+
});
|
|
229
|
+
if (!stopRecord) {
|
|
230
|
+
return false;
|
|
231
|
+
}
|
|
232
|
+
stopped = true;
|
|
233
|
+
termination = stopRecord;
|
|
234
|
+
if (stopRecord.reason === "budget") {
|
|
235
|
+
emitBudgetStop(stopRecord);
|
|
236
|
+
}
|
|
237
|
+
return true;
|
|
238
|
+
}
|
|
239
|
+
function emitBudgetStop(record) {
|
|
240
|
+
const event = {
|
|
241
|
+
type: "budget-stop",
|
|
242
|
+
runId,
|
|
243
|
+
at: new Date().toISOString(),
|
|
244
|
+
reason: record.budgetReason ?? "cost",
|
|
245
|
+
cost: totalCost,
|
|
246
|
+
iteration: transcript.length,
|
|
247
|
+
elapsedMs: elapsedMs(startedAtMs),
|
|
248
|
+
detail: record.detail ?? {}
|
|
249
|
+
};
|
|
250
|
+
emit(event);
|
|
251
|
+
recordProtocolDecision(event, {
|
|
252
|
+
transcriptEntryCount: transcript.length
|
|
253
|
+
});
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
function buildSystemPrompt(agent) {
|
|
257
|
+
const instruction = agent.instructions ? `\nInstructions: ${agent.instructions}` : "";
|
|
258
|
+
return `You are ${agent.id}, acting as ${agent.role} in a Shared multi-agent protocol. Read the shared state, update it with your best contribution, and preserve useful prior work.${instruction}`;
|
|
259
|
+
}
|
|
260
|
+
function buildSharedInput(intent, sharedState, turn) {
|
|
261
|
+
const state = sharedState ? sharedState : "(empty)";
|
|
262
|
+
return `Mission: ${intent}\nShared turn ${turn}: read the shared state and return an improved shared-state update.\n\nShared state:\n${state}`;
|
|
263
|
+
}
|
|
264
|
+
function synthesizeSharedOutput(transcript) {
|
|
265
|
+
return transcript.map((entry) => `${entry.role}:${entry.agentId} => ${entry.output}`).join("\n");
|
|
266
|
+
}
|
|
267
|
+
function responseCost(response) {
|
|
268
|
+
return {
|
|
269
|
+
usd: response.costUsd ?? 0,
|
|
270
|
+
inputTokens: response.usage?.inputTokens ?? 0,
|
|
271
|
+
outputTokens: response.usage?.outputTokens ?? 0,
|
|
272
|
+
totalTokens: response.usage?.totalTokens ?? 0
|
|
273
|
+
};
|
|
274
|
+
}
|
|
275
|
+
function createRunId() {
|
|
276
|
+
const random = globalThis.crypto?.randomUUID?.();
|
|
277
|
+
return random ?? `run-${Date.now().toString(36)}`;
|
|
278
|
+
}
|
|
279
|
+
function nowMs() {
|
|
280
|
+
return globalThis.performance?.now() ?? Date.now();
|
|
281
|
+
}
|
|
282
|
+
function elapsedMs(startedAtMs) {
|
|
283
|
+
return Math.max(0, nowMs() - startedAtMs);
|
|
284
|
+
}
|
|
285
|
+
function providerCallIdFor(runId, oneBasedIndex) {
|
|
286
|
+
return `${runId}:provider-call:${oneBasedIndex}`;
|
|
287
|
+
}
|
|
288
|
+
//# sourceMappingURL=shared.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shared.js","sourceRoot":"","sources":["../../src/runtime/shared.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import type { BudgetTerminationCondition, ConvergenceTerminationCondition, FirstOfTerminationCondition, FirstOfTerminationConditions, FirstOfTerminationOutput, JudgeTerminationCondition, TerminationStopRecord, TerminationCondition, TerminationDecision, TerminationEvaluationContext } from "../types.js";
|
|
2
|
+
/**
|
|
3
|
+
* Create a budget termination condition.
|
|
4
|
+
*
|
|
5
|
+
* The returned object is JSON-serializable and can be used directly in
|
|
6
|
+
* `terminate` or composed with {@link firstOf}.
|
|
7
|
+
*/
|
|
8
|
+
export declare function budget(options: Omit<BudgetTerminationCondition, "kind">): BudgetTerminationCondition;
|
|
9
|
+
/**
|
|
10
|
+
* Create a convergence termination condition.
|
|
11
|
+
*
|
|
12
|
+
* The condition fires when the run has produced `stableTurns` sufficiently
|
|
13
|
+
* similar protocol outputs.
|
|
14
|
+
*/
|
|
15
|
+
export declare function convergence(options: Omit<ConvergenceTerminationCondition, "kind">): ConvergenceTerminationCondition;
|
|
16
|
+
/**
|
|
17
|
+
* Create a judge termination condition.
|
|
18
|
+
*
|
|
19
|
+
* The rubric is stored as serializable configuration so callers can replay or
|
|
20
|
+
* persist traces without SDK-owned state.
|
|
21
|
+
*/
|
|
22
|
+
export declare function judge(options: Omit<JudgeTerminationCondition, "kind">): JudgeTerminationCondition;
|
|
23
|
+
/**
|
|
24
|
+
* Compose termination conditions so whichever child fires first wins.
|
|
25
|
+
*
|
|
26
|
+
* Conditions are evaluated in the order supplied by the caller. At least one
|
|
27
|
+
* condition is required so the composite is always meaningful and the public
|
|
28
|
+
* type remains a non-empty tuple.
|
|
29
|
+
*/
|
|
30
|
+
export declare function firstOf(...conditions: FirstOfTerminationConditions): FirstOfTerminationCondition;
|
|
31
|
+
/**
|
|
32
|
+
* Evaluate a serializable termination condition against the current run state.
|
|
33
|
+
*
|
|
34
|
+
* Budget, convergence, judge, and firstOf conditions are enforced from their
|
|
35
|
+
* own normalized inputs so one stop class cannot accidentally satisfy another.
|
|
36
|
+
*/
|
|
37
|
+
export declare function evaluateTermination(condition: TerminationCondition, context: TerminationEvaluationContext): TerminationDecision;
|
|
38
|
+
/**
|
|
39
|
+
* Evaluate an ordered firstOf composition and return the winning child, if any.
|
|
40
|
+
*/
|
|
41
|
+
export declare function evaluateFirstOf(condition: FirstOfTerminationCondition, context: TerminationEvaluationContext): FirstOfTerminationOutput;
|
|
42
|
+
/**
|
|
43
|
+
* Evaluate a termination condition and return a trace-ready stop record.
|
|
44
|
+
*
|
|
45
|
+
* Protocol runners use this helper so the first policy decision that halts a
|
|
46
|
+
* run is recorded exactly once on the terminal event.
|
|
47
|
+
*/
|
|
48
|
+
export declare function evaluateTerminationStop(condition: TerminationCondition, context: TerminationEvaluationContext): TerminationStopRecord | null;
|
|
49
|
+
/**
|
|
50
|
+
* Combine independently evaluated termination decisions with SDK precedence.
|
|
51
|
+
*
|
|
52
|
+
* Budget caps win over judge decisions, and judge decisions win over
|
|
53
|
+
* convergence. This keeps simultaneous stops deterministic while preserving
|
|
54
|
+
* each evaluator's normalized stop reason on the returned decision.
|
|
55
|
+
*/
|
|
56
|
+
export declare function combineTerminationDecisions(decisions: readonly TerminationDecision[]): TerminationDecision;
|
|
57
|
+
/**
|
|
58
|
+
* Evaluate cost, token, iteration, and timeout caps for a budget condition.
|
|
59
|
+
*/
|
|
60
|
+
export declare function evaluateBudget(condition: BudgetTerminationCondition, context: TerminationEvaluationContext): TerminationDecision;
|
|
61
|
+
/**
|
|
62
|
+
* Evaluate protocol-level convergence from recent coordination outputs.
|
|
63
|
+
*
|
|
64
|
+
* This intentionally ignores budget caps and judge quality state. Budget and
|
|
65
|
+
* judge conditions can be composed with convergence through `firstOf`, but a
|
|
66
|
+
* convergence condition itself only reads protocol output signals.
|
|
67
|
+
*/
|
|
68
|
+
export declare function evaluateConvergence(condition: ConvergenceTerminationCondition, context: TerminationEvaluationContext): TerminationDecision;
|
|
69
|
+
/**
|
|
70
|
+
* Evaluate caller-owned judge state without reading budget or convergence data.
|
|
71
|
+
*
|
|
72
|
+
* Explicit accept/reject verdicts always halt. Score-only decisions halt when
|
|
73
|
+
* they meet `minScore`; when `minScore` is omitted, any score-only decision is
|
|
74
|
+
* treated as the judge's terminal decision.
|
|
75
|
+
*/
|
|
76
|
+
export declare function evaluateJudge(condition: JudgeTerminationCondition, context: TerminationEvaluationContext): TerminationDecision;
|
|
77
|
+
//# sourceMappingURL=termination.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"termination.d.ts","sourceRoot":"","sources":["../../src/runtime/termination.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,0BAA0B,EAC1B,+BAA+B,EAC/B,2BAA2B,EAC3B,4BAA4B,EAC5B,wBAAwB,EAGxB,yBAAyB,EAGzB,qBAAqB,EAErB,oBAAoB,EACpB,mBAAmB,EACnB,4BAA4B,EAE7B,MAAM,aAAa,CAAC;AAErB;;;;;GAKG;AACH,wBAAgB,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,0BAA0B,EAAE,MAAM,CAAC,GAAG,0BAA0B,CAKpG;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,IAAI,CAAC,+BAA+B,EAAE,MAAM,CAAC,GAAG,+BAA+B,CAKnH;AAED;;;;;GAKG;AACH,wBAAgB,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,yBAAyB,EAAE,MAAM,CAAC,GAAG,yBAAyB,CAKjG;AAED;;;;;;GAMG;AACH,wBAAgB,OAAO,CAAC,GAAG,UAAU,EAAE,4BAA4B,GAAG,2BAA2B,CAShG;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CACjC,SAAS,EAAE,oBAAoB,EAC/B,OAAO,EAAE,4BAA4B,GACpC,mBAAmB,CAWrB;AAED;;GAEG;AACH,wBAAgB,eAAe,CAC7B,SAAS,EAAE,2BAA2B,EACtC,OAAO,EAAE,4BAA4B,GACpC,wBAAwB,CAuB1B;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,CACrC,SAAS,EAAE,oBAAoB,EAC/B,OAAO,EAAE,4BAA4B,GACpC,qBAAqB,GAAG,IAAI,CA2B9B;AAED;;;;;;GAMG;AACH,wBAAgB,2BAA2B,CACzC,SAAS,EAAE,SAAS,mBAAmB,EAAE,GACxC,mBAAmB,CAcrB;AAED;;GAEG;AACH,wBAAgB,cAAc,CAC5B,SAAS,EAAE,0BAA0B,EACrC,OAAO,EAAE,4BAA4B,GACpC,mBAAmB,CAyBrB;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CACjC,SAAS,EAAE,+BAA+B,EAC1C,OAAO,EAAE,4BAA4B,GACpC,mBAAmB,CA4BrB;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAC3B,SAAS,EAAE,yBAAyB,EACpC,OAAO,EAAE,4BAA4B,GACpC,mBAAmB,CAoBrB"}
|