@botbotgo/agent-harness 0.0.449 → 0.0.450
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.
|
|
1
|
+
export declare const AGENT_HARNESS_VERSION = "0.0.450";
|
|
2
2
|
export declare const AGENT_HARNESS_RELEASE_DATE = "2026-05-04";
|
package/dist/package-version.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export const AGENT_HARNESS_VERSION = "0.0.
|
|
1
|
+
export const AGENT_HARNESS_VERSION = "0.0.450";
|
|
2
2
|
export const AGENT_HARNESS_RELEASE_DATE = "2026-05-04";
|
|
@@ -2,7 +2,7 @@ import path from "node:path";
|
|
|
2
2
|
import { validateSkillMetadata } from "../runtime/skills/skill-metadata.js";
|
|
3
3
|
import { getAgentExecutionConfigValue } from "./support/agent-execution-config.js";
|
|
4
4
|
import { getRuntimeAgentDefaults, getWorkspaceObject, resolvePromptValue } from "./support/workspace-ref-utils.js";
|
|
5
|
-
const
|
|
5
|
+
const UPSTREAM_GENERAL_PURPOSE_SUBAGENT_NAME = "general-purpose";
|
|
6
6
|
const FRAMEWORK_AGENT_TOOL_NAMES = new Set(["task"]);
|
|
7
7
|
const FRAMEWORK_EXECUTION_TOOL_NAMES = new Set(["write_todos", "read_todos"]);
|
|
8
8
|
const TERMINAL_STATUS_VALUES = new Set(["completed", "blocked", "failed", "refused"]);
|
|
@@ -188,17 +188,17 @@ function validateAgentContract(agent, referencedSubagentIds, tools, refs, issues
|
|
|
188
188
|
...agent.subagentRefs.map(resolveRefId),
|
|
189
189
|
...(agent.asyncSubagents ?? []).map((subagent) => subagent.name),
|
|
190
190
|
];
|
|
191
|
-
|
|
192
|
-
|
|
191
|
+
const isDeepAgentsGeneralPurposeSubagentOverride = agent.executionMode === "deepagent"
|
|
192
|
+
&& isSubagent
|
|
193
|
+
&& agent.id === UPSTREAM_GENERAL_PURPOSE_SUBAGENT_NAME;
|
|
194
|
+
if (agent.id === UPSTREAM_GENERAL_PURPOSE_SUBAGENT_NAME && !isDeepAgentsGeneralPurposeSubagentOverride) {
|
|
195
|
+
addIssue(issues, "agent.general_purpose.forbidden", `Agent ${agent.id} uses the upstream DeepAgents general-purpose subagent name outside a DeepAgents subagent override. Define a product agent with a narrow runtime boundary instead.`);
|
|
193
196
|
}
|
|
194
197
|
for (const asyncSubagent of agent.asyncSubagents ?? []) {
|
|
195
|
-
if (asyncSubagent.name ===
|
|
196
|
-
addIssue(issues, "agent.general_purpose.forbidden", `Agent ${agent.id} defines async subagent ${asyncSubagent.name}.
|
|
198
|
+
if (asyncSubagent.name === UPSTREAM_GENERAL_PURPOSE_SUBAGENT_NAME) {
|
|
199
|
+
addIssue(issues, "agent.general_purpose.forbidden", `Agent ${agent.id} defines async subagent ${asyncSubagent.name}. DeepAgents reserves that name for its inline general-purpose subagent surface.`);
|
|
197
200
|
}
|
|
198
201
|
}
|
|
199
|
-
if (localSubagentNames.includes(FORBIDDEN_GENERAL_PURPOSE_SUBAGENT_NAME)) {
|
|
200
|
-
addIssue(issues, "agent.general_purpose.forbidden", `Agent ${agent.id} references reserved subagent name ${FORBIDDEN_GENERAL_PURPOSE_SUBAGENT_NAME}. Define explicit specialists with narrow responsibilities instead.`);
|
|
201
|
-
}
|
|
202
202
|
if (hasDuplicateValues(localSubagentNames)) {
|
|
203
203
|
addIssue(issues, "agent.subagent.duplicate_name", `Agent ${agent.id} exposes duplicate subagent names. Each delegated capability must have one stable owner.`);
|
|
204
204
|
}
|