@botbotgo/agent-harness 0.0.376 → 0.0.377

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.
@@ -1,2 +1,2 @@
1
- export declare const AGENT_HARNESS_VERSION = "0.0.376";
1
+ export declare const AGENT_HARNESS_VERSION = "0.0.377";
2
2
  export declare const AGENT_HARNESS_RELEASE_DATE = "2026-04-30";
@@ -1,2 +1,2 @@
1
- export const AGENT_HARNESS_VERSION = "0.0.376";
1
+ export const AGENT_HARNESS_VERSION = "0.0.377";
2
2
  export const AGENT_HARNESS_RELEASE_DATE = "2026-04-30";
@@ -900,56 +900,58 @@ export class AgentRuntimeAdapter {
900
900
  "User request:",
901
901
  requestText,
902
902
  ].filter(Boolean).join("\n\n");
903
- const model = await this.resolveModel(primaryModel);
904
- if (typeof model.invoke !== "function") {
905
- return null;
906
- }
907
- const invokeRouter = async (activePrompt, operationName) => this.invokeWithProviderRetry(binding, () => this.withTimeout(() => model.invoke(activePrompt, resolveLangChainInvocationConfig(binding, {
908
- sessionId,
909
- requestId,
910
- context: options.context,
911
- toolRuntimeContext: this.buildFunctionToolRuntimeContext(binding, {
912
- ...options,
903
+ if (!selection) {
904
+ const model = await this.resolveModel(primaryModel);
905
+ if (typeof model.invoke !== "function") {
906
+ return null;
907
+ }
908
+ const invokeRouter = async (activePrompt, operationName) => this.invokeWithProviderRetry(binding, () => this.withTimeout(() => model.invoke(activePrompt, resolveLangChainInvocationConfig(binding, {
913
909
  sessionId,
914
910
  requestId,
915
- }),
916
- })), resolveBindingTimeout(binding), operationName, "invoke"));
917
- const routerPrompts = [
918
- prompt,
919
- [
911
+ context: options.context,
912
+ toolRuntimeContext: this.buildFunctionToolRuntimeContext(binding, {
913
+ ...options,
914
+ sessionId,
915
+ requestId,
916
+ }),
917
+ })), resolveBindingTimeout(binding), operationName, "invoke"));
918
+ const routerPrompts = [
920
919
  prompt,
921
- "Your previous router output was invalid.",
922
- "Return only one JSON object now. Do not include prose, markdown, labels, or tool-call wrappers.",
923
- ].join("\n\n"),
924
- [
925
- primaryModel.init?.think === false ? "/no_think" : "",
926
- "Select one subagent from this exact list:",
927
- Array.from(subagentNames).join(", "),
928
- "Return JSON only:",
929
- "{\"subagent_type\":\"<one exact listed name>\"}",
930
- "User request:",
931
- requestText,
932
- ].filter(Boolean).join("\n\n"),
933
- [
934
- primaryModel.init?.think === false ? "/no_think" : "",
935
- "JSON only. Pick a listed subagent or refuse.",
936
- "Listed subagents:",
937
- Array.from(subagentNames).join(", "),
938
- "Allowed outputs:",
939
- "{\"subagent_type\":\"<listed name>\"}",
940
- "{\"status\":\"refused\",\"reason\":\"No configured subagent can handle the request.\"}",
941
- "Request:",
942
- requestText,
943
- ].filter(Boolean).join("\n\n"),
944
- ];
945
- let previousRawText = "";
946
- for (let index = 0; index < routerPrompts.length && !selection; index += 1) {
947
- const activePrompt = index <= 1 || !previousRawText
948
- ? routerPrompts[index]
949
- : [routerPrompts[index], "Previous output:", previousRawText].join("\n\n");
950
- const raw = await invokeRouter(activePrompt, index === 0 ? "delegation router invoke" : `delegation router retry invoke ${index}`);
951
- previousRawText = readModelText(raw);
952
- selection = parseCompactRouterSelection(previousRawText, subagentNames);
920
+ [
921
+ prompt,
922
+ "Your previous router output was invalid.",
923
+ "Return only one JSON object now. Do not include prose, markdown, labels, or tool-call wrappers.",
924
+ ].join("\n\n"),
925
+ [
926
+ primaryModel.init?.think === false ? "/no_think" : "",
927
+ "Select one subagent from this exact list:",
928
+ Array.from(subagentNames).join(", "),
929
+ "Return JSON only:",
930
+ "{\"subagent_type\":\"<one exact listed name>\"}",
931
+ "User request:",
932
+ requestText,
933
+ ].filter(Boolean).join("\n\n"),
934
+ [
935
+ primaryModel.init?.think === false ? "/no_think" : "",
936
+ "JSON only. Pick a listed subagent or refuse.",
937
+ "Listed subagents:",
938
+ Array.from(subagentNames).join(", "),
939
+ "Allowed outputs:",
940
+ "{\"subagent_type\":\"<listed name>\"}",
941
+ "{\"status\":\"refused\",\"reason\":\"No configured subagent can handle the request.\"}",
942
+ "Request:",
943
+ requestText,
944
+ ].filter(Boolean).join("\n\n"),
945
+ ];
946
+ let previousRawText = "";
947
+ for (let index = 0; index < routerPrompts.length && !selection; index += 1) {
948
+ const activePrompt = index <= 1 || !previousRawText
949
+ ? routerPrompts[index]
950
+ : [routerPrompts[index], "Previous output:", previousRawText].join("\n\n");
951
+ const raw = await invokeRouter(activePrompt, index === 0 ? "delegation router invoke" : `delegation router retry invoke ${index}`);
952
+ previousRawText = readModelText(raw);
953
+ selection = parseCompactRouterSelection(previousRawText, subagentNames);
954
+ }
953
955
  }
954
956
  if (selection?.refusedReason) {
955
957
  return {
@@ -1266,56 +1268,58 @@ export class AgentRuntimeAdapter {
1266
1268
  "User request:",
1267
1269
  requestText,
1268
1270
  ].filter(Boolean).join("\n\n");
1269
- const model = await this.resolveModel(primaryModel);
1270
- if (typeof model.invoke !== "function") {
1271
- return null;
1272
- }
1273
- const invokeRouter = async (activePrompt, operationName) => this.invokeWithProviderRetry(binding, () => this.withTimeout(() => model.invoke(activePrompt, resolveLangChainInvocationConfig(binding, {
1274
- sessionId,
1275
- requestId,
1276
- context: options.context,
1277
- toolRuntimeContext: this.buildFunctionToolRuntimeContext(binding, {
1278
- ...options,
1271
+ if (!selection) {
1272
+ const model = await this.resolveModel(primaryModel);
1273
+ if (typeof model.invoke !== "function") {
1274
+ return null;
1275
+ }
1276
+ const invokeRouter = async (activePrompt, operationName) => this.invokeWithProviderRetry(binding, () => this.withTimeout(() => model.invoke(activePrompt, resolveLangChainInvocationConfig(binding, {
1279
1277
  sessionId,
1280
1278
  requestId,
1281
- }),
1282
- })), resolveBindingTimeout(binding), operationName, "invoke"));
1283
- const routerPrompts = [
1284
- prompt,
1285
- [
1279
+ context: options.context,
1280
+ toolRuntimeContext: this.buildFunctionToolRuntimeContext(binding, {
1281
+ ...options,
1282
+ sessionId,
1283
+ requestId,
1284
+ }),
1285
+ })), resolveBindingTimeout(binding), operationName, "invoke"));
1286
+ const routerPrompts = [
1286
1287
  prompt,
1287
- "Your previous router output was invalid.",
1288
- "Return only one JSON object now. Do not include prose, markdown, labels, or tool-call wrappers.",
1289
- ].join("\n\n"),
1290
- [
1291
- primaryModel.init?.think === false ? "/no_think" : "",
1292
- "Select one subagent from this exact list:",
1293
- Array.from(subagentNames).join(", "),
1294
- "Return JSON only:",
1295
- "{\"subagent_type\":\"<one exact listed name>\"}",
1296
- "User request:",
1297
- requestText,
1298
- ].filter(Boolean).join("\n\n"),
1299
- [
1300
- primaryModel.init?.think === false ? "/no_think" : "",
1301
- "JSON only. Pick a listed subagent or refuse.",
1302
- "Listed subagents:",
1303
- Array.from(subagentNames).join(", "),
1304
- "Allowed outputs:",
1305
- "{\"subagent_type\":\"<listed name>\"}",
1306
- "{\"status\":\"refused\",\"reason\":\"No configured subagent can handle the request.\"}",
1307
- "Request:",
1308
- requestText,
1309
- ].filter(Boolean).join("\n\n"),
1310
- ];
1311
- let previousRawText = "";
1312
- for (let index = 0; index < routerPrompts.length && !selection; index += 1) {
1313
- const activePrompt = index <= 1 || !previousRawText
1314
- ? routerPrompts[index]
1315
- : [routerPrompts[index], "Previous output:", previousRawText].join("\n\n");
1316
- const raw = await invokeRouter(activePrompt, index === 0 ? "delegation router invoke" : `delegation router retry invoke ${index}`);
1317
- previousRawText = readModelText(raw);
1318
- selection = parseCompactRouterSelection(previousRawText, subagentNames);
1288
+ [
1289
+ prompt,
1290
+ "Your previous router output was invalid.",
1291
+ "Return only one JSON object now. Do not include prose, markdown, labels, or tool-call wrappers.",
1292
+ ].join("\n\n"),
1293
+ [
1294
+ primaryModel.init?.think === false ? "/no_think" : "",
1295
+ "Select one subagent from this exact list:",
1296
+ Array.from(subagentNames).join(", "),
1297
+ "Return JSON only:",
1298
+ "{\"subagent_type\":\"<one exact listed name>\"}",
1299
+ "User request:",
1300
+ requestText,
1301
+ ].filter(Boolean).join("\n\n"),
1302
+ [
1303
+ primaryModel.init?.think === false ? "/no_think" : "",
1304
+ "JSON only. Pick a listed subagent or refuse.",
1305
+ "Listed subagents:",
1306
+ Array.from(subagentNames).join(", "),
1307
+ "Allowed outputs:",
1308
+ "{\"subagent_type\":\"<listed name>\"}",
1309
+ "{\"status\":\"refused\",\"reason\":\"No configured subagent can handle the request.\"}",
1310
+ "Request:",
1311
+ requestText,
1312
+ ].filter(Boolean).join("\n\n"),
1313
+ ];
1314
+ let previousRawText = "";
1315
+ for (let index = 0; index < routerPrompts.length && !selection; index += 1) {
1316
+ const activePrompt = index <= 1 || !previousRawText
1317
+ ? routerPrompts[index]
1318
+ : [routerPrompts[index], "Previous output:", previousRawText].join("\n\n");
1319
+ const raw = await invokeRouter(activePrompt, index === 0 ? "delegation router invoke" : `delegation router retry invoke ${index}`);
1320
+ previousRawText = readModelText(raw);
1321
+ selection = parseCompactRouterSelection(previousRawText, subagentNames);
1322
+ }
1319
1323
  }
1320
1324
  if (selection?.refusedReason) {
1321
1325
  return {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@botbotgo/agent-harness",
3
- "version": "0.0.376",
3
+ "version": "0.0.377",
4
4
  "description": "Workspace runtime for multi-agent applications",
5
5
  "license": "MIT",
6
6
  "type": "module",