@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.
Files changed (88) hide show
  1. package/CHANGELOG.md +37 -0
  2. package/LICENSE +16 -0
  3. package/README.md +842 -0
  4. package/dist/browser/index.d.ts +8 -0
  5. package/dist/browser/index.d.ts.map +1 -0
  6. package/dist/browser/index.js +4493 -0
  7. package/dist/browser/index.js.map +1 -0
  8. package/dist/index.d.ts +17 -0
  9. package/dist/index.d.ts.map +1 -0
  10. package/dist/index.js +14 -0
  11. package/dist/index.js.map +1 -0
  12. package/dist/providers/openai-compatible.d.ts +44 -0
  13. package/dist/providers/openai-compatible.d.ts.map +1 -0
  14. package/dist/providers/openai-compatible.js +305 -0
  15. package/dist/providers/openai-compatible.js.map +1 -0
  16. package/dist/runtime/broadcast.d.ts +18 -0
  17. package/dist/runtime/broadcast.d.ts.map +1 -0
  18. package/dist/runtime/broadcast.js +335 -0
  19. package/dist/runtime/broadcast.js.map +1 -0
  20. package/dist/runtime/cancellation.d.ts +6 -0
  21. package/dist/runtime/cancellation.d.ts.map +1 -0
  22. package/dist/runtime/cancellation.js +35 -0
  23. package/dist/runtime/cancellation.js.map +1 -0
  24. package/dist/runtime/coordinator.d.ts +18 -0
  25. package/dist/runtime/coordinator.d.ts.map +1 -0
  26. package/dist/runtime/coordinator.js +434 -0
  27. package/dist/runtime/coordinator.js.map +1 -0
  28. package/dist/runtime/decisions.d.ts +5 -0
  29. package/dist/runtime/decisions.d.ts.map +1 -0
  30. package/dist/runtime/decisions.js +31 -0
  31. package/dist/runtime/decisions.js.map +1 -0
  32. package/dist/runtime/defaults.d.ts +63 -0
  33. package/dist/runtime/defaults.d.ts.map +1 -0
  34. package/dist/runtime/defaults.js +426 -0
  35. package/dist/runtime/defaults.js.map +1 -0
  36. package/dist/runtime/engine.d.ts +79 -0
  37. package/dist/runtime/engine.d.ts.map +1 -0
  38. package/dist/runtime/engine.js +723 -0
  39. package/dist/runtime/engine.js.map +1 -0
  40. package/dist/runtime/model.d.ts +14 -0
  41. package/dist/runtime/model.d.ts.map +1 -0
  42. package/dist/runtime/model.js +82 -0
  43. package/dist/runtime/model.js.map +1 -0
  44. package/dist/runtime/sequential.d.ts +18 -0
  45. package/dist/runtime/sequential.d.ts.map +1 -0
  46. package/dist/runtime/sequential.js +277 -0
  47. package/dist/runtime/sequential.js.map +1 -0
  48. package/dist/runtime/shared.d.ts +18 -0
  49. package/dist/runtime/shared.d.ts.map +1 -0
  50. package/dist/runtime/shared.js +288 -0
  51. package/dist/runtime/shared.js.map +1 -0
  52. package/dist/runtime/termination.d.ts +77 -0
  53. package/dist/runtime/termination.d.ts.map +1 -0
  54. package/dist/runtime/termination.js +355 -0
  55. package/dist/runtime/termination.js.map +1 -0
  56. package/dist/runtime/tools.d.ts +314 -0
  57. package/dist/runtime/tools.d.ts.map +1 -0
  58. package/dist/runtime/tools.js +969 -0
  59. package/dist/runtime/tools.js.map +1 -0
  60. package/dist/runtime/validation.d.ts +23 -0
  61. package/dist/runtime/validation.d.ts.map +1 -0
  62. package/dist/runtime/validation.js +656 -0
  63. package/dist/runtime/validation.js.map +1 -0
  64. package/dist/types.d.ts +2434 -0
  65. package/dist/types.d.ts.map +1 -0
  66. package/dist/types.js +81 -0
  67. package/dist/types.js.map +1 -0
  68. package/package.json +157 -0
  69. package/src/browser/index.ts +7 -0
  70. package/src/index.ts +195 -0
  71. package/src/providers/openai-compatible.ts +406 -0
  72. package/src/runtime/broadcast.test.ts +355 -0
  73. package/src/runtime/broadcast.ts +428 -0
  74. package/src/runtime/cancellation.ts +40 -0
  75. package/src/runtime/coordinator.test.ts +468 -0
  76. package/src/runtime/coordinator.ts +581 -0
  77. package/src/runtime/decisions.ts +38 -0
  78. package/src/runtime/defaults.ts +547 -0
  79. package/src/runtime/engine.ts +880 -0
  80. package/src/runtime/model.ts +117 -0
  81. package/src/runtime/sequential.test.ts +262 -0
  82. package/src/runtime/sequential.ts +357 -0
  83. package/src/runtime/shared.test.ts +265 -0
  84. package/src/runtime/shared.ts +367 -0
  85. package/src/runtime/termination.ts +463 -0
  86. package/src/runtime/tools.ts +1518 -0
  87. package/src/runtime/validation.ts +771 -0
  88. package/src/types.ts +2729 -0
@@ -0,0 +1,434 @@
1
+ import { addCost, createReplayTraceBudget, createReplayTraceBudgetStateChanges, createReplayTraceFinalOutput, createReplayTraceProtocolDecision, createReplayTraceRunInputs, createReplayTraceSeed, createRunAccounting, createRunEventLog, createRunMetadata, createRunUsage, createTranscriptLink, emptyCost, nextProviderCallId } 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 runCoordinator(options) {
8
+ const runId = createRunId();
9
+ const events = [];
10
+ const transcript = [];
11
+ const protocolDecisions = [];
12
+ const providerCalls = [];
13
+ let totalCost = emptyCost();
14
+ const maxTurns = options.protocol.maxTurns ?? options.agents.length;
15
+ const activeAgents = options.agents.slice(0, maxTurns);
16
+ const coordinator = activeAgents[0];
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("coordinator", event, events.length - 1, decisionOptions));
26
+ };
27
+ const toolExecutor = createRuntimeToolExecutor({
28
+ runId,
29
+ protocol: "coordinator",
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 (coordinator) {
53
+ if (!stopIfNeeded()) {
54
+ totalCost = await runCoordinatorTurn({
55
+ agent: coordinator,
56
+ coordinator,
57
+ input: buildCoordinatorPlanInput(options.intent, coordinator),
58
+ phase: "plan",
59
+ options,
60
+ runId,
61
+ transcript,
62
+ totalCost,
63
+ providerCalls,
64
+ toolExecutor,
65
+ toolAvailability,
66
+ emit,
67
+ recordProtocolDecision
68
+ });
69
+ stopIfNeeded();
70
+ }
71
+ if (!stopIfNeeded()) {
72
+ const workers = activeAgents.slice(1);
73
+ const providerCallSlots = [];
74
+ const planTranscript = [...transcript];
75
+ const workerResults = await Promise.all(workers.map((agent, index) => runCoordinatorWorkerTurn({
76
+ agent,
77
+ coordinator,
78
+ input: buildWorkerInput(options.intent, planTranscript, coordinator),
79
+ options,
80
+ runId,
81
+ turn: transcript.length + index + 1,
82
+ providerCallId: providerCallIdFor(runId, providerCalls.length + index + 1),
83
+ providerCallIndex: index,
84
+ providerCallSlots,
85
+ toolExecutor,
86
+ toolAvailability,
87
+ emit
88
+ })));
89
+ providerCalls.push(...providerCallSlots.filter((call) => call !== undefined));
90
+ for (const result of workerResults) {
91
+ totalCost = addCost(totalCost, result.turnCost);
92
+ transcript.push({
93
+ agentId: result.agent.id,
94
+ role: result.agent.role,
95
+ input: result.input,
96
+ output: result.response.text,
97
+ ...(result.decision !== undefined ? { decision: result.decision } : {}),
98
+ ...(result.toolCalls.length > 0 ? { toolCalls: result.toolCalls } : {})
99
+ });
100
+ const event = {
101
+ type: "agent-turn",
102
+ runId,
103
+ at: new Date().toISOString(),
104
+ agentId: result.agent.id,
105
+ role: result.agent.role,
106
+ input: result.input,
107
+ output: result.response.text,
108
+ ...(result.decision !== undefined ? { decision: result.decision } : {}),
109
+ cost: totalCost
110
+ };
111
+ emit(event);
112
+ recordProtocolDecision(event, {
113
+ turn: transcript.length,
114
+ phase: "worker",
115
+ transcriptEntryCount: transcript.length
116
+ });
117
+ }
118
+ stopIfNeeded();
119
+ }
120
+ if (!stopIfNeeded()) {
121
+ totalCost = await runCoordinatorTurn({
122
+ agent: coordinator,
123
+ coordinator,
124
+ input: buildFinalSynthesisInput(options.intent, transcript, coordinator),
125
+ phase: "final-synthesis",
126
+ options,
127
+ runId,
128
+ transcript,
129
+ totalCost,
130
+ providerCalls,
131
+ toolExecutor,
132
+ toolAvailability,
133
+ emit,
134
+ recordProtocolDecision
135
+ });
136
+ stopIfNeeded();
137
+ }
138
+ }
139
+ const output = transcript.at(-1)?.output ?? "";
140
+ throwIfAborted(options.signal, options.model.id);
141
+ const final = {
142
+ type: "final",
143
+ runId,
144
+ at: new Date().toISOString(),
145
+ output,
146
+ cost: totalCost,
147
+ transcript: createTranscriptLink(transcript),
148
+ ...(termination !== undefined ? { termination } : {})
149
+ };
150
+ emit(final);
151
+ recordProtocolDecision(final, {
152
+ transcriptEntryCount: transcript.length
153
+ });
154
+ const finalEvent = events.at(-1);
155
+ return {
156
+ output,
157
+ eventLog: createRunEventLog(runId, "coordinator", events),
158
+ trace: {
159
+ schemaVersion: "1.0",
160
+ runId,
161
+ protocol: "coordinator",
162
+ tier: options.tier,
163
+ modelProviderId: options.model.id,
164
+ agentsUsed: activeAgents,
165
+ inputs: createReplayTraceRunInputs({
166
+ intent: options.intent,
167
+ protocol: options.protocol,
168
+ tier: options.tier,
169
+ modelProviderId: options.model.id,
170
+ agents: activeAgents,
171
+ temperature: options.temperature
172
+ }),
173
+ budget: createReplayTraceBudget({
174
+ tier: options.tier,
175
+ ...(options.budget ? { caps: options.budget } : {}),
176
+ ...(options.terminate ? { termination: options.terminate } : {})
177
+ }),
178
+ budgetStateChanges: createReplayTraceBudgetStateChanges(events),
179
+ seed: createReplayTraceSeed(options.seed),
180
+ protocolDecisions,
181
+ providerCalls,
182
+ finalOutput: createReplayTraceFinalOutput(output, finalEvent ?? {
183
+ type: "final",
184
+ runId,
185
+ at: "",
186
+ output,
187
+ cost: totalCost,
188
+ transcript: createTranscriptLink(transcript)
189
+ }),
190
+ events,
191
+ transcript
192
+ },
193
+ transcript,
194
+ usage: createRunUsage(totalCost),
195
+ metadata: createRunMetadata({
196
+ runId,
197
+ protocol: "coordinator",
198
+ tier: options.tier,
199
+ modelProviderId: options.model.id,
200
+ agentsUsed: activeAgents,
201
+ events
202
+ }),
203
+ accounting: createRunAccounting({
204
+ tier: options.tier,
205
+ ...(options.budget ? { budget: options.budget } : {}),
206
+ ...(options.terminate ? { termination: options.terminate } : {}),
207
+ cost: totalCost,
208
+ events
209
+ }),
210
+ cost: totalCost
211
+ };
212
+ function stopIfNeeded() {
213
+ throwIfAborted(options.signal, options.model.id);
214
+ if (stopped || !options.terminate) {
215
+ return stopped;
216
+ }
217
+ const stopRecord = evaluateTerminationStop(options.terminate, {
218
+ runId,
219
+ protocol: "coordinator",
220
+ tier: options.tier,
221
+ cost: totalCost,
222
+ events,
223
+ transcript,
224
+ iteration: transcript.length,
225
+ elapsedMs: elapsedMs(startedAtMs)
226
+ });
227
+ if (!stopRecord) {
228
+ return false;
229
+ }
230
+ stopped = true;
231
+ termination = stopRecord;
232
+ if (stopRecord.reason === "budget") {
233
+ emitBudgetStop(stopRecord);
234
+ }
235
+ return true;
236
+ }
237
+ function emitBudgetStop(record) {
238
+ const event = {
239
+ type: "budget-stop",
240
+ runId,
241
+ at: new Date().toISOString(),
242
+ reason: record.budgetReason ?? "cost",
243
+ cost: totalCost,
244
+ iteration: transcript.length,
245
+ elapsedMs: elapsedMs(startedAtMs),
246
+ detail: record.detail ?? {}
247
+ };
248
+ emit(event);
249
+ recordProtocolDecision(event, {
250
+ transcriptEntryCount: transcript.length
251
+ });
252
+ }
253
+ }
254
+ async function runCoordinatorTurn(turn) {
255
+ throwIfAborted(turn.options.signal, turn.options.model.id);
256
+ const request = {
257
+ temperature: turn.options.temperature,
258
+ ...(turn.options.signal !== undefined ? { signal: turn.options.signal } : {}),
259
+ metadata: {
260
+ runId: turn.runId,
261
+ protocol: "coordinator",
262
+ agentId: turn.agent.id,
263
+ role: turn.agent.role,
264
+ coordinatorAgentId: turn.coordinator.id,
265
+ tier: turn.options.tier,
266
+ phase: turn.phase,
267
+ ...turn.toolAvailability
268
+ },
269
+ messages: [
270
+ {
271
+ role: "system",
272
+ content: buildSystemPrompt(turn.agent, turn.coordinator)
273
+ },
274
+ {
275
+ role: "user",
276
+ content: turn.input
277
+ }
278
+ ]
279
+ };
280
+ const response = await generateModelTurn({
281
+ model: turn.options.model,
282
+ request,
283
+ runId: turn.runId,
284
+ agent: turn.agent,
285
+ input: turn.input,
286
+ emit: turn.emit,
287
+ callId: nextProviderCallId(turn.runId, turn.providerCalls),
288
+ onProviderCall(call) {
289
+ turn.providerCalls.push(call);
290
+ }
291
+ });
292
+ const decision = parseAgentDecision(response.text);
293
+ const totalCost = addCost(turn.totalCost, responseCost(response));
294
+ const toolCalls = await executeModelResponseToolRequests({
295
+ response,
296
+ executor: turn.toolExecutor,
297
+ agentId: turn.agent.id,
298
+ role: turn.agent.role,
299
+ turn: turn.transcript.length + 1,
300
+ metadata: {
301
+ phase: turn.phase
302
+ }
303
+ });
304
+ throwIfAborted(turn.options.signal, turn.options.model.id);
305
+ turn.transcript.push({
306
+ agentId: turn.agent.id,
307
+ role: turn.agent.role,
308
+ input: turn.input,
309
+ output: response.text,
310
+ ...(decision !== undefined ? { decision } : {}),
311
+ ...(toolCalls.length > 0 ? { toolCalls } : {})
312
+ });
313
+ const event = {
314
+ type: "agent-turn",
315
+ runId: turn.runId,
316
+ at: new Date().toISOString(),
317
+ agentId: turn.agent.id,
318
+ role: turn.agent.role,
319
+ input: turn.input,
320
+ output: response.text,
321
+ ...(decision !== undefined ? { decision } : {}),
322
+ cost: totalCost
323
+ };
324
+ turn.emit(event);
325
+ turn.recordProtocolDecision(event, {
326
+ turn: turn.transcript.length,
327
+ phase: turn.phase,
328
+ transcriptEntryCount: turn.transcript.length
329
+ });
330
+ return totalCost;
331
+ }
332
+ async function runCoordinatorWorkerTurn(turn) {
333
+ throwIfAborted(turn.options.signal, turn.options.model.id);
334
+ const request = {
335
+ temperature: turn.options.temperature,
336
+ ...(turn.options.signal !== undefined ? { signal: turn.options.signal } : {}),
337
+ metadata: {
338
+ runId: turn.runId,
339
+ protocol: "coordinator",
340
+ agentId: turn.agent.id,
341
+ role: turn.agent.role,
342
+ coordinatorAgentId: turn.coordinator.id,
343
+ tier: turn.options.tier,
344
+ phase: "worker",
345
+ ...turn.toolAvailability
346
+ },
347
+ messages: [
348
+ {
349
+ role: "system",
350
+ content: buildSystemPrompt(turn.agent, turn.coordinator)
351
+ },
352
+ {
353
+ role: "user",
354
+ content: turn.input
355
+ }
356
+ ]
357
+ };
358
+ const response = await generateModelTurn({
359
+ model: turn.options.model,
360
+ request,
361
+ runId: turn.runId,
362
+ agent: turn.agent,
363
+ input: turn.input,
364
+ emit: turn.emit,
365
+ callId: turn.providerCallId,
366
+ onProviderCall(call) {
367
+ turn.providerCallSlots[turn.providerCallIndex] = call;
368
+ }
369
+ });
370
+ const decision = parseAgentDecision(response.text);
371
+ const toolCalls = await executeModelResponseToolRequests({
372
+ response,
373
+ executor: turn.toolExecutor,
374
+ agentId: turn.agent.id,
375
+ role: turn.agent.role,
376
+ turn: turn.turn,
377
+ metadata: {
378
+ phase: "worker"
379
+ }
380
+ });
381
+ throwIfAborted(turn.options.signal, turn.options.model.id);
382
+ return {
383
+ agent: turn.agent,
384
+ input: turn.input,
385
+ response,
386
+ decision,
387
+ toolCalls,
388
+ turnCost: responseCost(response)
389
+ };
390
+ }
391
+ function buildSystemPrompt(agent, coordinator) {
392
+ const instruction = agent.instructions ? `\nInstructions: ${agent.instructions}` : "";
393
+ const coordinatorText = coordinator && agent.id === coordinator.id
394
+ ? "You are the coordinator: assign work, integrate worker contributions, and produce the final answer."
395
+ : `You are a worker managed by coordinator ${coordinator?.id ?? "unknown"}.`;
396
+ return `You are ${agent.id}, acting as ${agent.role} in a Coordinator multi-agent protocol. ${coordinatorText}${instruction}`;
397
+ }
398
+ function buildCoordinatorPlanInput(intent, coordinator) {
399
+ return `Mission: ${intent}\nCoordinator ${coordinator.id}: assign the work, name the plan, and provide the first contribution.`;
400
+ }
401
+ function buildWorkerInput(intent, transcript, coordinator) {
402
+ const prior = transcript
403
+ .map((entry) => `${entry.role} (${entry.agentId}): ${entry.output}`)
404
+ .join("\n\n");
405
+ return `Mission: ${intent}\n\nCoordinator: ${coordinator.id}\nPrior contributions:\n${prior}\n\nFollow the coordinator-managed plan and provide your assigned contribution.`;
406
+ }
407
+ function buildFinalSynthesisInput(intent, transcript, coordinator) {
408
+ const prior = transcript
409
+ .map((entry) => `${entry.role} (${entry.agentId}): ${entry.output}`)
410
+ .join("\n\n");
411
+ return `Mission: ${intent}\n\nCoordinator: ${coordinator.id}\nPrior contributions:\n${prior}\n\nSynthesize the final answer as the coordinator.`;
412
+ }
413
+ function responseCost(response) {
414
+ return {
415
+ usd: response.costUsd ?? 0,
416
+ inputTokens: response.usage?.inputTokens ?? 0,
417
+ outputTokens: response.usage?.outputTokens ?? 0,
418
+ totalTokens: response.usage?.totalTokens ?? 0
419
+ };
420
+ }
421
+ function createRunId() {
422
+ const random = globalThis.crypto?.randomUUID?.();
423
+ return random ?? `run-${Date.now().toString(36)}`;
424
+ }
425
+ function nowMs() {
426
+ return globalThis.performance?.now() ?? Date.now();
427
+ }
428
+ function elapsedMs(startedAtMs) {
429
+ return Math.max(0, nowMs() - startedAtMs);
430
+ }
431
+ function providerCallIdFor(runId, oneBasedIndex) {
432
+ return `${runId}:provider-call:${oneBasedIndex}`;
433
+ }
434
+ //# sourceMappingURL=coordinator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"coordinator.js","sourceRoot":"","sources":["../../src/runtime/coordinator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import type { AgentDecision, AgentParticipation } from "../types.js";
2
+ export declare function parseAgentDecision(output: string): AgentDecision | undefined;
3
+ export declare function isParticipatingDecision(decision: AgentDecision | undefined): boolean;
4
+ export declare function isAgentParticipation(value: string): value is AgentParticipation;
5
+ //# sourceMappingURL=decisions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"decisions.d.ts","sourceRoot":"","sources":["../../src/runtime/decisions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAErE,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS,CAgB5E;AAED,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,aAAa,GAAG,SAAS,GAAG,OAAO,CAEpF;AAaD,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,IAAI,kBAAkB,CAE/E"}
@@ -0,0 +1,31 @@
1
+ export function parseAgentDecision(output) {
2
+ const selectedRole = matchLine(output, /^role_selected:\s*(.+)$/imu);
3
+ const participation = matchLine(output, /^participation:\s*(contribute|abstain)$/imu);
4
+ const rationale = matchLine(output, /^rationale:\s*(.+)$/imu);
5
+ const contribution = matchContribution(output);
6
+ if (!selectedRole || !participation || !isAgentParticipation(participation) || !rationale || !contribution) {
7
+ return undefined;
8
+ }
9
+ return {
10
+ selectedRole,
11
+ participation,
12
+ rationale,
13
+ contribution
14
+ };
15
+ }
16
+ export function isParticipatingDecision(decision) {
17
+ return decision?.participation !== "abstain";
18
+ }
19
+ function matchLine(output, pattern) {
20
+ const match = output.match(pattern);
21
+ return match?.[1]?.trim();
22
+ }
23
+ function matchContribution(output) {
24
+ const match = output.match(/^contribution:\s*\n([\s\S]*)$/imu);
25
+ const contribution = match?.[1]?.trim();
26
+ return contribution && contribution.length > 0 ? contribution : undefined;
27
+ }
28
+ export function isAgentParticipation(value) {
29
+ return value === "contribute" || value === "abstain";
30
+ }
31
+ //# sourceMappingURL=decisions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"decisions.js","sourceRoot":"","sources":["../../src/runtime/decisions.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,kBAAkB,CAAC,MAAc;IAC/C,MAAM,YAAY,GAAG,SAAS,CAAC,MAAM,EAAE,4BAA4B,CAAC,CAAC;IACrE,MAAM,aAAa,GAAG,SAAS,CAAC,MAAM,EAAE,4CAA4C,CAAC,CAAC;IACtF,MAAM,SAAS,GAAG,SAAS,CAAC,MAAM,EAAE,wBAAwB,CAAC,CAAC;IAC9D,MAAM,YAAY,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC;IAE/C,IAAI,CAAC,YAAY,IAAI,CAAC,aAAa,IAAI,CAAC,oBAAoB,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,YAAY,EAAE,CAAC;QAC3G,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,OAAO;QACL,YAAY;QACZ,aAAa;QACb,SAAS;QACT,YAAY;KACb,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,QAAmC;IACzE,OAAO,QAAQ,EAAE,aAAa,KAAK,SAAS,CAAC;AAC/C,CAAC;AAED,SAAS,SAAS,CAAC,MAAc,EAAE,OAAe;IAChD,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACpC,OAAO,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC;AAC5B,CAAC;AAED,SAAS,iBAAiB,CAAC,MAAc;IACvC,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,kCAAkC,CAAC,CAAC;IAC/D,MAAM,YAAY,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC;IACxC,OAAO,YAAY,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC;AAC5E,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,KAAa;IAChD,OAAO,KAAK,KAAK,YAAY,IAAI,KAAK,KAAK,SAAS,CAAC;AACvD,CAAC"}
@@ -0,0 +1,63 @@
1
+ import type { AgentSpec, Budget, CostSummary, Protocol, ProtocolConfig, ReplayTraceBudget, ReplayTraceFinalOutput, ReplayTraceProtocolDecision, ReplayTraceProtocolDecisionType, ReplayTraceProviderCall, ReplayTraceRunInputs, ReplayTraceBudgetStateChange, ReplayTraceSeed, RunResult, RunAccounting, RunEvent, RunEventLog, RunMetadata, RunUsage, Tier, TranscriptEntry, TranscriptLink } from "../types.js";
2
+ export declare function normalizeProtocol(protocol: Protocol | ProtocolConfig): ProtocolConfig;
3
+ export declare function defaultAgents(): readonly AgentSpec[];
4
+ export declare function orderAgentsForTemperature(agents: readonly AgentSpec[], temperature: number, seed?: string | number): readonly AgentSpec[];
5
+ export declare function tierTemperature(tier: Tier): number;
6
+ export declare function emptyCost(): CostSummary;
7
+ export declare function addCost(left: CostSummary, right: CostSummary): CostSummary;
8
+ export declare function createTranscriptLink(transcript: readonly TranscriptEntry[]): TranscriptLink;
9
+ export declare function createRunEventLog(runId: string, protocol: Protocol, events: readonly RunEvent[]): RunEventLog;
10
+ export declare function createRunUsage(cost: CostSummary): RunUsage;
11
+ export declare function createRunAccounting(options: {
12
+ readonly tier: Tier;
13
+ readonly budget?: Omit<Budget, "tier">;
14
+ readonly termination?: ReplayTraceBudget["termination"];
15
+ readonly cost: CostSummary;
16
+ readonly events: readonly RunEvent[];
17
+ }): RunAccounting;
18
+ export declare function createRunMetadata(options: {
19
+ readonly runId: string;
20
+ readonly protocol: Protocol;
21
+ readonly tier: Tier;
22
+ readonly modelProviderId: string;
23
+ readonly agentsUsed: readonly AgentSpec[];
24
+ readonly events: readonly RunEvent[];
25
+ }): RunMetadata;
26
+ export declare function createReplayTraceRunInputs(options: {
27
+ readonly intent: string;
28
+ readonly protocol: ProtocolConfig;
29
+ readonly tier: Tier;
30
+ readonly modelProviderId: string;
31
+ readonly agents: readonly AgentSpec[];
32
+ readonly temperature: number;
33
+ }): ReplayTraceRunInputs;
34
+ export declare function createReplayTraceBudget(options: {
35
+ readonly tier: Tier;
36
+ readonly caps?: Omit<Budget, "tier">;
37
+ readonly termination?: ReplayTraceBudget["termination"];
38
+ }): ReplayTraceBudget;
39
+ export declare function createReplayTraceBudgetStateChanges(events: readonly RunEvent[]): readonly ReplayTraceBudgetStateChange[];
40
+ export declare function createReplayTraceSeed(seed: string | number | undefined): ReplayTraceSeed;
41
+ export declare function createReplayTraceProtocolDecisions(protocol: Protocol, events: readonly RunEvent[]): readonly ReplayTraceProtocolDecision[];
42
+ export declare function createReplayTraceProtocolDecision(protocol: Protocol, event: RunEvent, eventIndex: number, options?: {
43
+ readonly decision?: ReplayTraceProtocolDecisionType;
44
+ readonly turn?: number;
45
+ readonly phase?: ReplayTraceProtocolDecision["phase"];
46
+ readonly round?: number;
47
+ readonly transcriptEntryCount?: number;
48
+ readonly contributionCount?: number;
49
+ }): ReplayTraceProtocolDecision;
50
+ export declare function createReplayTraceFinalOutput(output: string, event: RunEvent): ReplayTraceFinalOutput;
51
+ export declare function nextProviderCallId(runId: string, providerCalls: readonly ReplayTraceProviderCall[]): string;
52
+ /**
53
+ * Normalize completed run artifacts into deterministic JSON shapes.
54
+ *
55
+ * This keeps caller-owned persistence stable across runtimes: object keys are
56
+ * sorted recursively, undefined object fields are omitted, non-finite numbers
57
+ * become JSON `null`, and negative zero is normalized to zero before callers
58
+ * serialize the returned result, trace, event log, transcript, or metadata.
59
+ */
60
+ export declare function canonicalizeRunResult(result: RunResult): RunResult;
61
+ export declare function stableJsonStringify(value: unknown): string;
62
+ export declare function canonicalizeSerializable<T>(value: T): T;
63
+ //# sourceMappingURL=defaults.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"defaults.d.ts","sourceRoot":"","sources":["../../src/runtime/defaults.ts"],"names":[],"mappings":"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"}