59 lines
2.3 KiB
JavaScript
59 lines
2.3 KiB
JavaScript
function normalizeRuntimeProvider(value) {
|
|
const normalized = String(value || '').trim().toLowerCase();
|
|
return normalized === 'opencode' ? 'opencode' : 'native';
|
|
}
|
|
|
|
function createMemberMessagingProtocol(runtimeProvider) {
|
|
const provider = normalizeRuntimeProvider(runtimeProvider);
|
|
|
|
if (provider === 'opencode') {
|
|
return {
|
|
runtimeProvider: 'opencode',
|
|
sendToolName: 'agent-teams_message_send',
|
|
sendToolAliases: [
|
|
'agent-teams_message_send',
|
|
'agent_teams_message_send',
|
|
'mcp__agent-teams__message_send',
|
|
'mcp__agent_teams__message_send',
|
|
'message_send',
|
|
],
|
|
sendLeadPhrase: 'MCP tool agent-teams_message_send',
|
|
crossTeamPhrase: 'call MCP tool agent-teams_cross_team_send',
|
|
buildLeadMessageExample({ teamName, leadName, fromName, text, summary }) {
|
|
return `agent-teams_message_send { teamName: "${teamName}", to: "${leadName}", from: "${fromName}", text: "${text}", summary: "${summary}" }`;
|
|
},
|
|
buildCrossTeamMessageExample({ teamName, toTeam, fromName, text, summary }) {
|
|
return `agent-teams_cross_team_send { teamName: "${teamName}", toTeam: "${toTeam}", fromMember: "${fromName}", text: "${text}", summary: "${summary}" }`;
|
|
},
|
|
};
|
|
}
|
|
|
|
return {
|
|
runtimeProvider: 'native',
|
|
sendToolName: 'SendMessage',
|
|
sendToolAliases: ['SendMessage'],
|
|
sendLeadPhrase: 'SendMessage',
|
|
crossTeamPhrase: 'use the cross-team MCP tool cross_team_send',
|
|
buildLeadMessageExample({ leadName, text, summary }) {
|
|
return `SendMessage { to: "${leadName}", summary: "${summary}", message: "${text}" }`;
|
|
},
|
|
buildCrossTeamMessageExample({ teamName, toTeam, fromName, text, summary }) {
|
|
return `cross_team_send { teamName: "${teamName}", toTeam: "${toTeam}", fromMember: "${fromName}", text: "${text}", summary: "${summary}" }`;
|
|
},
|
|
};
|
|
}
|
|
|
|
function isOpenCodeMember(member) {
|
|
const provider = String((member && (member.providerId || member.provider)) || '')
|
|
.trim()
|
|
.toLowerCase();
|
|
if (provider) return provider === 'opencode';
|
|
const model = String((member && member.model) || '').trim().toLowerCase();
|
|
return model.startsWith('opencode/');
|
|
}
|
|
|
|
module.exports = {
|
|
createMemberMessagingProtocol,
|
|
isOpenCodeMember,
|
|
normalizeRuntimeProvider,
|
|
};
|