@dogpile/sdk 0.1.2 → 0.2.1
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 +16 -0
- package/README.md +9 -7
- package/dist/browser/index.js +3773 -4061
- package/dist/browser/index.js.map +1 -1
- package/dist/providers/openai-compatible.d.ts.map +1 -1
- package/dist/providers/openai-compatible.js +51 -8
- package/dist/providers/openai-compatible.js.map +1 -1
- package/package.json +19 -7
- package/src/providers/openai-compatible.ts +62 -8
- package/src/runtime/broadcast.test.ts +0 -355
- package/src/runtime/coordinator.test.ts +0 -468
- package/src/runtime/sequential.test.ts +0 -262
- package/src/runtime/shared.test.ts +0 -265
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openai-compatible.d.ts","sourceRoot":"","sources":["../../src/providers/openai-compatible.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,uBAAuB,EAEvB,UAAU,EAIV,YAAY,EACZ,aAAa,EACd,MAAM,aAAa,CAAC;AAKrB,MAAM,MAAM,qBAAqB,GAAG,CAAC,KAAK,EAAE,WAAW,GAAG,GAAG,EAAE,IAAI,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;AAExG,MAAM,WAAW,mCAAmC;IAClD,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,OAAO,EAAE,YAAY,CAAC;IAC/B,QAAQ,CAAC,QAAQ,EAAE,sCAAsC,CAAC;IAC1D,QAAQ,CAAC,KAAK,CAAC,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC;CACzC;AAED,MAAM,MAAM,qCAAqC,GAAG,CAClD,OAAO,EAAE,mCAAmC,KACzC,MAAM,GAAG,SAAS,CAAC;AAExB,MAAM,WAAW,+BAA+B;IAC9C,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,GAAG,CAAC;IAChC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,OAAO,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC;IAChE,QAAQ,CAAC,KAAK,CAAC,EAAE,qBAAqB,CAAC;IACvC,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,SAAS,CAAC,EAAE,UAAU,CAAC;IAChC,QAAQ,CAAC,aAAa,CAAC,EAAE,qCAAqC,CAAC;CAChE;AAED,MAAM,WAAW,sCAAsC;IACrD,QAAQ,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,oCAAoC,EAAE,CAAC;IACnE,QAAQ,CAAC,KAAK,CAAC,EAAE,qBAAqB,CAAC;CACxC;AAED,MAAM,WAAW,oCAAoC;IACnD,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvC,QAAQ,CAAC,OAAO,CAAC,EAAE;QACjB,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;KAC5B,CAAC;CACH;AAED,MAAM,WAAW,qBAAsB,SAAQ,UAAU;IACvD,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IACpC,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;CACjC;AAED,wBAAgB,8BAA8B,CAAC,OAAO,EAAE,+BAA+B,GAAG,uBAAuB,
|
|
1
|
+
{"version":3,"file":"openai-compatible.d.ts","sourceRoot":"","sources":["../../src/providers/openai-compatible.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,uBAAuB,EAEvB,UAAU,EAIV,YAAY,EACZ,aAAa,EACd,MAAM,aAAa,CAAC;AAKrB,MAAM,MAAM,qBAAqB,GAAG,CAAC,KAAK,EAAE,WAAW,GAAG,GAAG,EAAE,IAAI,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;AAExG,MAAM,WAAW,mCAAmC;IAClD,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,OAAO,EAAE,YAAY,CAAC;IAC/B,QAAQ,CAAC,QAAQ,EAAE,sCAAsC,CAAC;IAC1D,QAAQ,CAAC,KAAK,CAAC,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC;CACzC;AAED,MAAM,MAAM,qCAAqC,GAAG,CAClD,OAAO,EAAE,mCAAmC,KACzC,MAAM,GAAG,SAAS,CAAC;AAExB,MAAM,WAAW,+BAA+B;IAC9C,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,GAAG,CAAC;IAChC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,OAAO,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC;IAChE,QAAQ,CAAC,KAAK,CAAC,EAAE,qBAAqB,CAAC;IACvC,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,SAAS,CAAC,EAAE,UAAU,CAAC;IAChC,QAAQ,CAAC,aAAa,CAAC,EAAE,qCAAqC,CAAC;CAChE;AAED,MAAM,WAAW,sCAAsC;IACrD,QAAQ,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,oCAAoC,EAAE,CAAC;IACnE,QAAQ,CAAC,KAAK,CAAC,EAAE,qBAAqB,CAAC;CACxC;AAED,MAAM,WAAW,oCAAoC;IACnD,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvC,QAAQ,CAAC,OAAO,CAAC,EAAE;QACjB,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;KAC5B,CAAC;CACH;AAED,MAAM,WAAW,qBAAsB,SAAQ,UAAU;IACvD,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IACpC,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;CACjC;AAED,wBAAgB,8BAA8B,CAAC,OAAO,EAAE,+BAA+B,GAAG,uBAAuB,CAgEhH"}
|
|
@@ -21,12 +21,18 @@ export function createOpenAICompatibleProvider(options) {
|
|
|
21
21
|
return {
|
|
22
22
|
id: providerId,
|
|
23
23
|
async generate(request) {
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
24
|
+
let response;
|
|
25
|
+
try {
|
|
26
|
+
response = await fetchImplementation(createURL(options), {
|
|
27
|
+
method: "POST",
|
|
28
|
+
headers: createHeaders(options),
|
|
29
|
+
body: JSON.stringify(createBody(options, request)),
|
|
30
|
+
...(request.signal !== undefined ? { signal: request.signal } : {})
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
catch (error) {
|
|
34
|
+
throw normalizeFetchError(error, providerId);
|
|
35
|
+
}
|
|
30
36
|
const payload = await readJson(response, providerId);
|
|
31
37
|
if (!response.ok) {
|
|
32
38
|
throw createProviderError(response, payload, providerId);
|
|
@@ -244,7 +250,7 @@ function responseMetadata(response) {
|
|
|
244
250
|
function createProviderError(response, payload, providerId) {
|
|
245
251
|
return new DogpileError({
|
|
246
252
|
code: codeForStatus(response.status),
|
|
247
|
-
message:
|
|
253
|
+
message: providerResponseErrorMessage(response, payload),
|
|
248
254
|
retryable: response.status === 408 || response.status === 429 || response.status >= 500,
|
|
249
255
|
providerId,
|
|
250
256
|
detail: removeUndefined({
|
|
@@ -254,6 +260,29 @@ function createProviderError(response, payload, providerId) {
|
|
|
254
260
|
})
|
|
255
261
|
});
|
|
256
262
|
}
|
|
263
|
+
function normalizeFetchError(error, providerId) {
|
|
264
|
+
if (DogpileError.isInstance(error)) {
|
|
265
|
+
return error;
|
|
266
|
+
}
|
|
267
|
+
if (errorName(error) === "AbortError") {
|
|
268
|
+
return new DogpileError({
|
|
269
|
+
code: "aborted",
|
|
270
|
+
message: providerTransportErrorMessage(error, "OpenAI-compatible provider request was aborted."),
|
|
271
|
+
cause: error,
|
|
272
|
+
retryable: false,
|
|
273
|
+
providerId,
|
|
274
|
+
detail: errorDetail(error)
|
|
275
|
+
});
|
|
276
|
+
}
|
|
277
|
+
return new DogpileError({
|
|
278
|
+
code: "provider-error",
|
|
279
|
+
message: providerTransportErrorMessage(error, "OpenAI-compatible provider request failed before receiving a response."),
|
|
280
|
+
cause: error,
|
|
281
|
+
retryable: true,
|
|
282
|
+
providerId,
|
|
283
|
+
detail: errorDetail(error)
|
|
284
|
+
});
|
|
285
|
+
}
|
|
257
286
|
function codeForStatus(status) {
|
|
258
287
|
if (status === 401 || status === 403) {
|
|
259
288
|
return "provider-authentication";
|
|
@@ -275,12 +304,26 @@ function codeForStatus(status) {
|
|
|
275
304
|
}
|
|
276
305
|
return "provider-error";
|
|
277
306
|
}
|
|
278
|
-
function
|
|
307
|
+
function providerResponseErrorMessage(response, payload) {
|
|
279
308
|
const providerMessage = isRecord(payload) && isRecord(payload.error) && typeof payload.error.message === "string"
|
|
280
309
|
? payload.error.message
|
|
281
310
|
: undefined;
|
|
282
311
|
return providerMessage ?? `OpenAI-compatible provider request failed with HTTP ${response.status}.`;
|
|
283
312
|
}
|
|
313
|
+
function errorDetail(error) {
|
|
314
|
+
const detail = {};
|
|
315
|
+
const name = errorName(error);
|
|
316
|
+
if (name !== undefined) {
|
|
317
|
+
detail.name = name;
|
|
318
|
+
}
|
|
319
|
+
return detail;
|
|
320
|
+
}
|
|
321
|
+
function errorName(error) {
|
|
322
|
+
return isRecord(error) && typeof error.name === "string" ? error.name : undefined;
|
|
323
|
+
}
|
|
324
|
+
function providerTransportErrorMessage(error, fallback) {
|
|
325
|
+
return error instanceof Error && error.message ? error.message : fallback;
|
|
326
|
+
}
|
|
284
327
|
function removeUndefined(values) {
|
|
285
328
|
return Object.fromEntries(Object.entries(values).filter(([, value]) => value !== undefined));
|
|
286
329
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openai-compatible.js","sourceRoot":"","sources":["../../src/providers/openai-compatible.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"openai-compatible.js","sourceRoot":"","sources":["../../src/providers/openai-compatible.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dogpile/sdk",
|
|
3
|
-
"version": "0.1
|
|
3
|
+
"version": "0.2.1",
|
|
4
4
|
"description": "TypeScript SDK for running multi-agent LLM coordination protocols.",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"type": "module",
|
|
@@ -121,7 +121,18 @@
|
|
|
121
121
|
"src/types.ts",
|
|
122
122
|
"src/browser/index.ts",
|
|
123
123
|
"src/providers/openai-compatible.ts",
|
|
124
|
-
"src/runtime
|
|
124
|
+
"src/runtime/broadcast.ts",
|
|
125
|
+
"src/runtime/cancellation.ts",
|
|
126
|
+
"src/runtime/coordinator.ts",
|
|
127
|
+
"src/runtime/decisions.ts",
|
|
128
|
+
"src/runtime/defaults.ts",
|
|
129
|
+
"src/runtime/engine.ts",
|
|
130
|
+
"src/runtime/model.ts",
|
|
131
|
+
"src/runtime/sequential.ts",
|
|
132
|
+
"src/runtime/shared.ts",
|
|
133
|
+
"src/runtime/termination.ts",
|
|
134
|
+
"src/runtime/tools.ts",
|
|
135
|
+
"src/runtime/validation.ts",
|
|
125
136
|
"README.md",
|
|
126
137
|
"CHANGELOG.md",
|
|
127
138
|
"LICENSE"
|
|
@@ -137,6 +148,7 @@
|
|
|
137
148
|
"quickstart:smoke": "node scripts/consumer-import-smoke.mjs",
|
|
138
149
|
"package:identity": "node scripts/check-package-identity.mjs",
|
|
139
150
|
"package:sourcemaps": "node scripts/check-pack-sourcemaps.mjs",
|
|
151
|
+
"benchmark:baseline": "pnpm run build && node scripts/benchmark-baseline.mjs",
|
|
140
152
|
"pack:check": "pnpm run package:identity && pnpm run build && pnpm run package:artifacts && pnpm run quickstart:smoke -- --skip-build && pnpm run package:sourcemaps && npm pack --dry-run --cache ./.npm-cache",
|
|
141
153
|
"publish:check": "pnpm run verify && pnpm run package:artifacts && npm publish --dry-run --cache ./.npm-cache",
|
|
142
154
|
"test": "vitest run",
|
|
@@ -145,11 +157,11 @@
|
|
|
145
157
|
"verify": "pnpm run package:identity && pnpm run build && pnpm run package:artifacts && pnpm run quickstart:smoke -- --skip-build && pnpm run typecheck && pnpm run test"
|
|
146
158
|
},
|
|
147
159
|
"devDependencies": {
|
|
148
|
-
"@types/node": "^22.
|
|
149
|
-
"ai": "
|
|
150
|
-
"typescript": "^
|
|
151
|
-
"vite": "^
|
|
152
|
-
"vitest": "^
|
|
160
|
+
"@types/node": "^22.19.17",
|
|
161
|
+
"ai": "^6.0.168",
|
|
162
|
+
"typescript": "^6.0.3",
|
|
163
|
+
"vite": "^8.0.10",
|
|
164
|
+
"vitest": "^4.1.5"
|
|
153
165
|
},
|
|
154
166
|
"engines": {
|
|
155
167
|
"node": ">=22"
|
|
@@ -86,12 +86,18 @@ export function createOpenAICompatibleProvider(options: OpenAICompatibleProvider
|
|
|
86
86
|
return {
|
|
87
87
|
id: providerId,
|
|
88
88
|
async generate(request: ModelRequest): Promise<ModelResponse> {
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
89
|
+
let response: Response;
|
|
90
|
+
|
|
91
|
+
try {
|
|
92
|
+
response = await fetchImplementation(createURL(options), {
|
|
93
|
+
method: "POST",
|
|
94
|
+
headers: createHeaders(options),
|
|
95
|
+
body: JSON.stringify(createBody(options, request)),
|
|
96
|
+
...(request.signal !== undefined ? { signal: request.signal } : {})
|
|
97
|
+
});
|
|
98
|
+
} catch (error) {
|
|
99
|
+
throw normalizeFetchError(error, providerId);
|
|
100
|
+
}
|
|
95
101
|
|
|
96
102
|
const payload = await readJson(response, providerId);
|
|
97
103
|
|
|
@@ -337,7 +343,7 @@ function responseMetadata(response: OpenAICompatibleChatCompletionResponse): Jso
|
|
|
337
343
|
function createProviderError(response: Response, payload: unknown, providerId: string): DogpileError {
|
|
338
344
|
return new DogpileError({
|
|
339
345
|
code: codeForStatus(response.status),
|
|
340
|
-
message:
|
|
346
|
+
message: providerResponseErrorMessage(response, payload),
|
|
341
347
|
retryable: response.status === 408 || response.status === 429 || response.status >= 500,
|
|
342
348
|
providerId,
|
|
343
349
|
detail: removeUndefined({
|
|
@@ -348,6 +354,35 @@ function createProviderError(response: Response, payload: unknown, providerId: s
|
|
|
348
354
|
});
|
|
349
355
|
}
|
|
350
356
|
|
|
357
|
+
function normalizeFetchError(error: unknown, providerId: string): DogpileError {
|
|
358
|
+
if (DogpileError.isInstance(error)) {
|
|
359
|
+
return error;
|
|
360
|
+
}
|
|
361
|
+
|
|
362
|
+
if (errorName(error) === "AbortError") {
|
|
363
|
+
return new DogpileError({
|
|
364
|
+
code: "aborted",
|
|
365
|
+
message: providerTransportErrorMessage(error, "OpenAI-compatible provider request was aborted."),
|
|
366
|
+
cause: error,
|
|
367
|
+
retryable: false,
|
|
368
|
+
providerId,
|
|
369
|
+
detail: errorDetail(error)
|
|
370
|
+
});
|
|
371
|
+
}
|
|
372
|
+
|
|
373
|
+
return new DogpileError({
|
|
374
|
+
code: "provider-error",
|
|
375
|
+
message: providerTransportErrorMessage(
|
|
376
|
+
error,
|
|
377
|
+
"OpenAI-compatible provider request failed before receiving a response."
|
|
378
|
+
),
|
|
379
|
+
cause: error,
|
|
380
|
+
retryable: true,
|
|
381
|
+
providerId,
|
|
382
|
+
detail: errorDetail(error)
|
|
383
|
+
});
|
|
384
|
+
}
|
|
385
|
+
|
|
351
386
|
function codeForStatus(status: number): DogpileErrorCode {
|
|
352
387
|
if (status === 401 || status === 403) {
|
|
353
388
|
return "provider-authentication";
|
|
@@ -370,13 +405,32 @@ function codeForStatus(status: number): DogpileErrorCode {
|
|
|
370
405
|
return "provider-error";
|
|
371
406
|
}
|
|
372
407
|
|
|
373
|
-
function
|
|
408
|
+
function providerResponseErrorMessage(response: Response, payload: unknown): string {
|
|
374
409
|
const providerMessage = isRecord(payload) && isRecord(payload.error) && typeof payload.error.message === "string"
|
|
375
410
|
? payload.error.message
|
|
376
411
|
: undefined;
|
|
377
412
|
return providerMessage ?? `OpenAI-compatible provider request failed with HTTP ${response.status}.`;
|
|
378
413
|
}
|
|
379
414
|
|
|
415
|
+
function errorDetail(error: unknown): JsonObject {
|
|
416
|
+
const detail: Record<string, JsonValue> = {};
|
|
417
|
+
const name = errorName(error);
|
|
418
|
+
|
|
419
|
+
if (name !== undefined) {
|
|
420
|
+
detail.name = name;
|
|
421
|
+
}
|
|
422
|
+
|
|
423
|
+
return detail;
|
|
424
|
+
}
|
|
425
|
+
|
|
426
|
+
function errorName(error: unknown): string | undefined {
|
|
427
|
+
return isRecord(error) && typeof error.name === "string" ? error.name : undefined;
|
|
428
|
+
}
|
|
429
|
+
|
|
430
|
+
function providerTransportErrorMessage(error: unknown, fallback: string): string {
|
|
431
|
+
return error instanceof Error && error.message ? error.message : fallback;
|
|
432
|
+
}
|
|
433
|
+
|
|
380
434
|
function removeUndefined(values: Record<string, JsonValue | undefined>): JsonObject {
|
|
381
435
|
return Object.fromEntries(Object.entries(values).filter(([, value]) => value !== undefined)) as JsonObject;
|
|
382
436
|
}
|
|
@@ -1,355 +0,0 @@
|
|
|
1
|
-
import { describe, expect, it } from "vitest";
|
|
2
|
-
import { createDeterministicBroadcastTestMission } from "../internal.js";
|
|
3
|
-
import { run, runtimeToolManifest, stream } from "../index.js";
|
|
4
|
-
import type {
|
|
5
|
-
AgentSpec,
|
|
6
|
-
ConfiguredModelProvider,
|
|
7
|
-
JsonObject,
|
|
8
|
-
ModelRequest,
|
|
9
|
-
ModelResponse,
|
|
10
|
-
RuntimeTool
|
|
11
|
-
} from "../index.js";
|
|
12
|
-
|
|
13
|
-
describe("broadcast protocol", () => {
|
|
14
|
-
it("dispatches the mission to every configured seat and aggregates their responses", async () => {
|
|
15
|
-
const intent = "Assess whether the benchmark release should ship today.";
|
|
16
|
-
const agents: readonly AgentSpec[] = [
|
|
17
|
-
{
|
|
18
|
-
id: "seat-release",
|
|
19
|
-
role: "release",
|
|
20
|
-
instructions: "Focus on release blocking risk."
|
|
21
|
-
},
|
|
22
|
-
{
|
|
23
|
-
id: "seat-eval",
|
|
24
|
-
role: "evaluator",
|
|
25
|
-
instructions: "Focus on reproduction evidence."
|
|
26
|
-
},
|
|
27
|
-
{
|
|
28
|
-
id: "seat-api",
|
|
29
|
-
role: "api",
|
|
30
|
-
instructions: "Focus on caller ergonomics."
|
|
31
|
-
},
|
|
32
|
-
{
|
|
33
|
-
id: "seat-runtime",
|
|
34
|
-
role: "runtime",
|
|
35
|
-
instructions: "Focus on portability."
|
|
36
|
-
}
|
|
37
|
-
];
|
|
38
|
-
const requests: ModelRequest[] = [];
|
|
39
|
-
const model: ConfiguredModelProvider = {
|
|
40
|
-
id: "capturing-broadcast-model",
|
|
41
|
-
async generate(request: ModelRequest): Promise<ModelResponse> {
|
|
42
|
-
requests.push(request);
|
|
43
|
-
const agentId = String(request.metadata.agentId);
|
|
44
|
-
const role = String(request.metadata.role);
|
|
45
|
-
return {
|
|
46
|
-
text: `${agentId}(${role}) saw the shared broadcast mission`,
|
|
47
|
-
usage: {
|
|
48
|
-
inputTokens: 7,
|
|
49
|
-
outputTokens: 5,
|
|
50
|
-
totalTokens: 12
|
|
51
|
-
},
|
|
52
|
-
costUsd: 0.001
|
|
53
|
-
};
|
|
54
|
-
}
|
|
55
|
-
};
|
|
56
|
-
|
|
57
|
-
const result = await run({
|
|
58
|
-
intent,
|
|
59
|
-
protocol: { kind: "broadcast", maxRounds: 1 },
|
|
60
|
-
tier: "balanced",
|
|
61
|
-
model,
|
|
62
|
-
agents
|
|
63
|
-
});
|
|
64
|
-
|
|
65
|
-
expect(requests).toHaveLength(agents.length);
|
|
66
|
-
for (const [index, agent] of agents.entries()) {
|
|
67
|
-
const request = requests[index];
|
|
68
|
-
if (!request) {
|
|
69
|
-
throw new Error(`missing broadcast request for ${agent.id}`);
|
|
70
|
-
}
|
|
71
|
-
const userMessage = request.messages.find((message) => message.role === "user");
|
|
72
|
-
const systemMessage = request.messages.find((message) => message.role === "system");
|
|
73
|
-
|
|
74
|
-
expect(request.metadata).toMatchObject({
|
|
75
|
-
protocol: "broadcast",
|
|
76
|
-
agentId: agent.id,
|
|
77
|
-
role: agent.role,
|
|
78
|
-
tier: "balanced",
|
|
79
|
-
round: 1
|
|
80
|
-
});
|
|
81
|
-
expect(userMessage?.content).toContain(intent);
|
|
82
|
-
expect(userMessage?.content).toContain("Broadcast round 1");
|
|
83
|
-
expect(systemMessage?.content).toContain(agent.id);
|
|
84
|
-
expect(systemMessage?.content).toContain(agent.role);
|
|
85
|
-
expect(systemMessage?.content).toContain(agent.instructions);
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
const expectedOutputs = agents.map(
|
|
89
|
-
(agent) => `${agent.id}(${agent.role}) saw the shared broadcast mission`
|
|
90
|
-
);
|
|
91
|
-
expect(result.transcript.map((entry) => entry.output)).toEqual(expectedOutputs);
|
|
92
|
-
expect(result.output).toBe(
|
|
93
|
-
agents
|
|
94
|
-
.map((agent, index) => `${agent.role}:${agent.id} => ${expectedOutputs[index]}`)
|
|
95
|
-
.join("\n")
|
|
96
|
-
);
|
|
97
|
-
|
|
98
|
-
const broadcastEvent = result.trace.events.find((event) => event.type === "broadcast");
|
|
99
|
-
expect(broadcastEvent?.type).toBe("broadcast");
|
|
100
|
-
if (broadcastEvent?.type !== "broadcast") {
|
|
101
|
-
throw new Error("expected broadcast event");
|
|
102
|
-
}
|
|
103
|
-
expect(broadcastEvent.contributions.map((contribution) => contribution.output)).toEqual(expectedOutputs);
|
|
104
|
-
});
|
|
105
|
-
|
|
106
|
-
it("feeds round-one intentions into round-two final broadcast decisions", async () => {
|
|
107
|
-
const requests: ModelRequest[] = [];
|
|
108
|
-
const model: ConfiguredModelProvider = {
|
|
109
|
-
id: "two-round-broadcast-model",
|
|
110
|
-
async generate(request) {
|
|
111
|
-
requests.push(request);
|
|
112
|
-
const round = Number(request.metadata.round);
|
|
113
|
-
const agentId = String(request.metadata.agentId);
|
|
114
|
-
const selectedRole = agentId === "agent-a" ? "upload supervisor" : "release verifier";
|
|
115
|
-
if (round === 1) {
|
|
116
|
-
return {
|
|
117
|
-
text: [
|
|
118
|
-
`role_selected: ${selectedRole}`,
|
|
119
|
-
"participation: contribute",
|
|
120
|
-
"rationale: I am broadcasting my intended specialization before final decisions.",
|
|
121
|
-
"contribution:",
|
|
122
|
-
`Intention from ${agentId}: cover ${selectedRole}.`
|
|
123
|
-
].join("\n")
|
|
124
|
-
};
|
|
125
|
-
}
|
|
126
|
-
|
|
127
|
-
return {
|
|
128
|
-
text: [
|
|
129
|
-
`role_selected: ${selectedRole}`,
|
|
130
|
-
"participation: contribute",
|
|
131
|
-
"rationale: I saw the round one intentions and can now make a final contribution.",
|
|
132
|
-
"contribution:",
|
|
133
|
-
`Final contribution from ${agentId}.`
|
|
134
|
-
].join("\n")
|
|
135
|
-
};
|
|
136
|
-
}
|
|
137
|
-
};
|
|
138
|
-
|
|
139
|
-
const result = await run({
|
|
140
|
-
intent: "Plan an upload manager.",
|
|
141
|
-
protocol: { kind: "broadcast", maxRounds: 2 },
|
|
142
|
-
tier: "fast",
|
|
143
|
-
model,
|
|
144
|
-
agents: [
|
|
145
|
-
{ id: "agent-a", role: "autonomous-agent" },
|
|
146
|
-
{ id: "agent-b", role: "autonomous-agent" }
|
|
147
|
-
]
|
|
148
|
-
});
|
|
149
|
-
|
|
150
|
-
expect(requests).toHaveLength(4);
|
|
151
|
-
const roundTwoPrompts = requests.slice(2).map((request) => request.messages.find((message) => message.role === "user")?.content);
|
|
152
|
-
expect(roundTwoPrompts[0]).toContain("Round 1 intentions:");
|
|
153
|
-
expect(roundTwoPrompts[0]).toContain("Intention from agent-a");
|
|
154
|
-
expect(roundTwoPrompts[0]).toContain("Intention from agent-b");
|
|
155
|
-
expect(roundTwoPrompts[1]).toContain("Intention from agent-a");
|
|
156
|
-
expect(roundTwoPrompts[1]).toContain("Intention from agent-b");
|
|
157
|
-
expect(result.output).toContain("Final contribution from agent-a.");
|
|
158
|
-
expect(result.output).toContain("Final contribution from agent-b.");
|
|
159
|
-
expect(result.output).not.toContain("Intention from agent-a");
|
|
160
|
-
expect(result.transcript).toHaveLength(4);
|
|
161
|
-
expect(result.transcript[0]?.decision).toMatchObject({
|
|
162
|
-
selectedRole: "upload supervisor",
|
|
163
|
-
participation: "contribute"
|
|
164
|
-
});
|
|
165
|
-
const broadcastEvents = result.trace.events.filter((event) => event.type === "broadcast");
|
|
166
|
-
expect(broadcastEvents).toHaveLength(2);
|
|
167
|
-
expect(broadcastEvents[1]?.type).toBe("broadcast");
|
|
168
|
-
if (broadcastEvents[1]?.type !== "broadcast") {
|
|
169
|
-
throw new Error("expected second broadcast event");
|
|
170
|
-
}
|
|
171
|
-
expect(broadcastEvents[1].contributions.map((contribution) => contribution.output)).toEqual([
|
|
172
|
-
[
|
|
173
|
-
"role_selected: upload supervisor",
|
|
174
|
-
"participation: contribute",
|
|
175
|
-
"rationale: I saw the round one intentions and can now make a final contribution.",
|
|
176
|
-
"contribution:",
|
|
177
|
-
"Final contribution from agent-a."
|
|
178
|
-
].join("\n"),
|
|
179
|
-
[
|
|
180
|
-
"role_selected: release verifier",
|
|
181
|
-
"participation: contribute",
|
|
182
|
-
"rationale: I saw the round one intentions and can now make a final contribution.",
|
|
183
|
-
"contribution:",
|
|
184
|
-
"Final contribution from agent-b."
|
|
185
|
-
].join("\n")
|
|
186
|
-
]);
|
|
187
|
-
});
|
|
188
|
-
|
|
189
|
-
it("runs a deterministic test mission against a configured model provider", async () => {
|
|
190
|
-
const result = await run(createDeterministicBroadcastTestMission());
|
|
191
|
-
const expectedTranscript = [
|
|
192
|
-
{
|
|
193
|
-
agentId: "agent-1",
|
|
194
|
-
role: "release-engineer",
|
|
195
|
-
input:
|
|
196
|
-
"Mission: Decide whether to ship a portable multi-agent SDK release candidate.\nBroadcast round 1: contribute independently before synthesis.",
|
|
197
|
-
output: "release-engineer:agent-1 independently assessed the broadcast mission."
|
|
198
|
-
},
|
|
199
|
-
{
|
|
200
|
-
agentId: "agent-2",
|
|
201
|
-
role: "paper-reviewer",
|
|
202
|
-
input:
|
|
203
|
-
"Mission: Decide whether to ship a portable multi-agent SDK release candidate.\nBroadcast round 1: contribute independently before synthesis.",
|
|
204
|
-
output: "paper-reviewer:agent-2 independently assessed the broadcast mission."
|
|
205
|
-
},
|
|
206
|
-
{
|
|
207
|
-
agentId: "agent-3",
|
|
208
|
-
role: "developer-advocate",
|
|
209
|
-
input:
|
|
210
|
-
"Mission: Decide whether to ship a portable multi-agent SDK release candidate.\nBroadcast round 1: contribute independently before synthesis.",
|
|
211
|
-
output: "developer-advocate:agent-3 independently assessed the broadcast mission."
|
|
212
|
-
}
|
|
213
|
-
] as const;
|
|
214
|
-
const expectedOutput = expectedTranscript
|
|
215
|
-
.map((entry) => `${entry.role}:${entry.agentId} => ${entry.output}`)
|
|
216
|
-
.join("\n");
|
|
217
|
-
|
|
218
|
-
expect(result.output).toBe(expectedOutput);
|
|
219
|
-
expect(result.transcript).toEqual(expectedTranscript);
|
|
220
|
-
expect(result.trace.transcript).toEqual(expectedTranscript);
|
|
221
|
-
expect(result.trace.transcript).toEqual(result.transcript);
|
|
222
|
-
expect(result.trace.protocol).toBe("broadcast");
|
|
223
|
-
expect(result.trace.modelProviderId).toBe("deterministic-broadcast-model");
|
|
224
|
-
expect(result.trace.events.map((event) => event.type)).toEqual([
|
|
225
|
-
"role-assignment",
|
|
226
|
-
"role-assignment",
|
|
227
|
-
"role-assignment",
|
|
228
|
-
"agent-turn",
|
|
229
|
-
"agent-turn",
|
|
230
|
-
"agent-turn",
|
|
231
|
-
"broadcast",
|
|
232
|
-
"final"
|
|
233
|
-
]);
|
|
234
|
-
for (const event of result.trace.events) {
|
|
235
|
-
expect(event.runId).toBe(result.trace.runId);
|
|
236
|
-
expect(new Date(event.at).toISOString()).toBe(event.at);
|
|
237
|
-
}
|
|
238
|
-
|
|
239
|
-
const broadcastEvent = result.trace.events.find((event) => event.type === "broadcast");
|
|
240
|
-
expect(broadcastEvent?.type).toBe("broadcast");
|
|
241
|
-
if (broadcastEvent?.type !== "broadcast") {
|
|
242
|
-
throw new Error("expected broadcast event");
|
|
243
|
-
}
|
|
244
|
-
expect(broadcastEvent.round).toBe(1);
|
|
245
|
-
expect(broadcastEvent.contributions).toHaveLength(3);
|
|
246
|
-
expect(broadcastEvent.contributions.map((contribution) => contribution.agentId)).toEqual([
|
|
247
|
-
"agent-1",
|
|
248
|
-
"agent-2",
|
|
249
|
-
"agent-3"
|
|
250
|
-
]);
|
|
251
|
-
expect(broadcastEvent.contributions).toEqual(
|
|
252
|
-
expectedTranscript.map((entry) => ({
|
|
253
|
-
agentId: entry.agentId,
|
|
254
|
-
role: entry.role,
|
|
255
|
-
output: entry.output
|
|
256
|
-
}))
|
|
257
|
-
);
|
|
258
|
-
const finalEvent = result.trace.events.at(-1);
|
|
259
|
-
expect(finalEvent?.type).toBe("final");
|
|
260
|
-
if (finalEvent?.type !== "final") {
|
|
261
|
-
throw new Error("expected final event");
|
|
262
|
-
}
|
|
263
|
-
expect(finalEvent.output).toBe(expectedOutput);
|
|
264
|
-
expect(finalEvent.cost).toEqual(result.cost);
|
|
265
|
-
expect(JSON.parse(JSON.stringify(result.trace))).toEqual(result.trace);
|
|
266
|
-
expect(result.cost.totalTokens).toBeGreaterThan(0);
|
|
267
|
-
});
|
|
268
|
-
|
|
269
|
-
it("streams broadcast coordination moments before resolving the final result", async () => {
|
|
270
|
-
const handle = stream(createDeterministicBroadcastTestMission());
|
|
271
|
-
|
|
272
|
-
const events: string[] = [];
|
|
273
|
-
for await (const event of handle) {
|
|
274
|
-
events.push(event.type);
|
|
275
|
-
}
|
|
276
|
-
const result = await handle.result;
|
|
277
|
-
|
|
278
|
-
expect(events).toEqual([
|
|
279
|
-
"role-assignment",
|
|
280
|
-
"role-assignment",
|
|
281
|
-
"role-assignment",
|
|
282
|
-
"agent-turn",
|
|
283
|
-
"agent-turn",
|
|
284
|
-
"agent-turn",
|
|
285
|
-
"broadcast",
|
|
286
|
-
"final"
|
|
287
|
-
]);
|
|
288
|
-
expect(result.output).toContain("developer-advocate:agent-3");
|
|
289
|
-
});
|
|
290
|
-
|
|
291
|
-
it("threads runtime tool availability through every broadcast model turn", async () => {
|
|
292
|
-
interface LookupInput extends JsonObject {
|
|
293
|
-
readonly query: string;
|
|
294
|
-
}
|
|
295
|
-
|
|
296
|
-
interface LookupOutput extends JsonObject {
|
|
297
|
-
readonly answer: string;
|
|
298
|
-
}
|
|
299
|
-
|
|
300
|
-
const requests: ModelRequest[] = [];
|
|
301
|
-
const lookupTool: RuntimeTool<LookupInput, LookupOutput> = {
|
|
302
|
-
identity: {
|
|
303
|
-
id: "fixture.lookup",
|
|
304
|
-
name: "lookup",
|
|
305
|
-
description: "Lookup contextual facts for the active mission."
|
|
306
|
-
},
|
|
307
|
-
inputSchema: {
|
|
308
|
-
kind: "json-schema",
|
|
309
|
-
schema: {
|
|
310
|
-
type: "object",
|
|
311
|
-
properties: {
|
|
312
|
-
query: { type: "string" }
|
|
313
|
-
},
|
|
314
|
-
required: ["query"],
|
|
315
|
-
additionalProperties: false
|
|
316
|
-
}
|
|
317
|
-
},
|
|
318
|
-
execute(input, context) {
|
|
319
|
-
return {
|
|
320
|
-
type: "success",
|
|
321
|
-
toolCallId: context.toolCallId,
|
|
322
|
-
tool: this.identity,
|
|
323
|
-
output: {
|
|
324
|
-
answer: `found:${input.query}`
|
|
325
|
-
}
|
|
326
|
-
};
|
|
327
|
-
}
|
|
328
|
-
};
|
|
329
|
-
const model: ConfiguredModelProvider = {
|
|
330
|
-
id: "broadcast-tool-availability-model",
|
|
331
|
-
async generate(request) {
|
|
332
|
-
requests.push(request);
|
|
333
|
-
return { text: `turn-${requests.length}` };
|
|
334
|
-
}
|
|
335
|
-
};
|
|
336
|
-
|
|
337
|
-
await run({
|
|
338
|
-
intent: "Use available tools while independently assessing a release.",
|
|
339
|
-
protocol: { kind: "broadcast", maxRounds: 1 },
|
|
340
|
-
tier: "fast",
|
|
341
|
-
model,
|
|
342
|
-
agents: [
|
|
343
|
-
{ id: "release-seat", role: "release" },
|
|
344
|
-
{ id: "eval-seat", role: "evaluator" }
|
|
345
|
-
],
|
|
346
|
-
tools: [lookupTool]
|
|
347
|
-
});
|
|
348
|
-
|
|
349
|
-
expect(requests).toHaveLength(2);
|
|
350
|
-
expect(requests.map((request) => request.metadata.tools)).toEqual([
|
|
351
|
-
runtimeToolManifest([lookupTool]),
|
|
352
|
-
runtimeToolManifest([lookupTool])
|
|
353
|
-
]);
|
|
354
|
-
});
|
|
355
|
-
});
|