@arvoretech/hub 0.13.0 → 0.13.2

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.
@@ -117,7 +117,7 @@ async function checkAndAutoRegenerate(hubDir) {
117
117
  return;
118
118
  }
119
119
  console.log(chalk.yellow("\n Detected outdated configs, auto-regenerating..."));
120
- const { generators: generators2 } = await import("./generate-Z2ZCPGIG.js");
120
+ const { generators: generators2 } = await import("./generate-NLS7H2YS.js");
121
121
  const generator = generators2[result.editor];
122
122
  if (!generator) {
123
123
  console.log(chalk.red(` Unknown editor '${result.editor}' in cache. Run 'hub generate' manually.`));
@@ -1006,6 +1006,50 @@ This workspace has agent teams support via the \`agent-teams-lead\` MCP. You can
1006
1006
  - Send a broadcast message after creating tasks to notify teammates
1007
1007
  - Always call \`wait_for_team\` after creating tasks to monitor completion`;
1008
1008
  }
1009
+ function hasAgentTeamsChatMcp(mcps) {
1010
+ if (!mcps) return false;
1011
+ const proxyMcp = mcps.find((m) => m.upstreams && m.upstreams.length > 0);
1012
+ const directMatch = mcps.some((m) => m.name === "agent-teams-chat");
1013
+ const upstreamMatch = proxyMcp?.upstreams?.includes("agent-teams-chat") ?? false;
1014
+ return directMatch || upstreamMatch;
1015
+ }
1016
+ function buildAgentTeamsChatSection(mcps) {
1017
+ if (!hasAgentTeamsChatMcp(mcps)) return "";
1018
+ return `
1019
+ ## Agent Chat (Cross-Developer Communication)
1020
+
1021
+ You can communicate with agents from other developers on the team via the \`agent-teams-chat\` MCP. This is NOT the same as agent teams (which coordinates teammates within your own session). Agent chat lets you talk to agents running in other people's workspaces through Slack threads.
1022
+
1023
+ **When to use agent chat:**
1024
+ - You need context or help from another developer's agent (e.g. "Hey, Jo\xE3o's agent \u2014 what was the decision on the auth migration?")
1025
+ - Coordinating cross-developer work asynchronously (e.g. "I'm changing the API contract, heads up")
1026
+ - Sharing decisions, blockers, or discoveries that affect the whole team
1027
+ - Asking questions that another developer's agent might already know the answer to
1028
+
1029
+ **How it works:**
1030
+ 1. Use \`open_thread\` to start a new conversation thread about a topic
1031
+ 2. Use \`reply_to_thread\` to respond in an existing thread
1032
+ 3. Use \`read_thread\` to catch up on what others have said
1033
+ 4. Use \`list_threads\` to see recent conversations in the channel
1034
+ 5. Use \`find_thread\` to search for threads by topic or content
1035
+
1036
+ **Available tools:** \`open_thread\`, \`reply_to_thread\`, \`read_thread\`, \`list_threads\`, \`find_thread\`.
1037
+
1038
+ **Message format:** Messages are automatically formatted with your identity (e.g. \`\u{1F916} *Jo\xE3o's Agent* \u2014 your message here\`). Other agents' messages will show their owner's name.
1039
+
1040
+ **IMPORTANT \u2014 Proactive message checking:**
1041
+ - When you open or reply to a thread, periodically check for new replies using \`read_thread\` with the \`since\` parameter set to the last message timestamp you saw
1042
+ - After sending a message that expects a response, wait a reasonable time (30-60 seconds) then check for replies
1043
+ - At the start of a task, use \`list_threads\` to check if there are recent threads relevant to your current work
1044
+ - If you're waiting on another agent's input, poll the thread every 30-60 seconds until you get a response or a reasonable timeout (5 minutes)
1045
+
1046
+ **Best practices:**
1047
+ - Search for existing threads before opening a new one on the same topic
1048
+ - Keep messages concise and actionable
1049
+ - Use threads to maintain context \u2014 avoid top-level messages for replies
1050
+ - Read the thread before replying to avoid repeating what others said
1051
+ - When starting a task that touches shared code, check recent threads for relevant context`;
1052
+ }
1009
1053
  function buildMcpToolsSection(mcps) {
1010
1054
  if (!mcps || mcps.length === 0) return "";
1011
1055
  const proxyMcp = mcps.find((m) => m.upstreams && m.upstreams.length > 0);
@@ -1148,6 +1192,8 @@ Available tools: \`search_memories\`, \`get_memory\`, \`add_memory\`, \`list_mem
1148
1192
  if (designSectionOpenCode) sections.push(designSectionOpenCode);
1149
1193
  const agentTeamsSectionOpenCode = buildAgentTeamsSection(config.mcps);
1150
1194
  if (agentTeamsSectionOpenCode) sections.push(agentTeamsSectionOpenCode);
1195
+ const agentTeamsChatSectionOpenCode = buildAgentTeamsChatSection(config.mcps);
1196
+ if (agentTeamsChatSectionOpenCode) sections.push(agentTeamsChatSectionOpenCode);
1151
1197
  sections.push(`
1152
1198
  ## Troubleshooting and Debugging
1153
1199
 
@@ -1443,6 +1489,8 @@ Available tools: \`search_memories\`, \`get_memory\`, \`add_memory\`, \`list_mem
1443
1489
  if (designSectionKiro) sections.push(designSectionKiro);
1444
1490
  const agentTeamsSectionKiro = buildAgentTeamsSection(config.mcps);
1445
1491
  if (agentTeamsSectionKiro) sections.push(agentTeamsSectionKiro);
1492
+ const agentTeamsChatSectionKiro = buildAgentTeamsChatSection(config.mcps);
1493
+ if (agentTeamsChatSectionKiro) sections.push(agentTeamsChatSectionKiro);
1446
1494
  sections.push(`
1447
1495
  ## Troubleshooting and Debugging
1448
1496
 
@@ -1633,6 +1681,8 @@ Available tools: \`search_memories\`, \`get_memory\`, \`add_memory\`, \`list_mem
1633
1681
  if (designSectionCursor) sections.push(designSectionCursor);
1634
1682
  const agentTeamsSectionCursor = buildAgentTeamsSection(config.mcps);
1635
1683
  if (agentTeamsSectionCursor) sections.push(agentTeamsSectionCursor);
1684
+ const agentTeamsChatSectionCursor = buildAgentTeamsChatSection(config.mcps);
1685
+ if (agentTeamsChatSectionCursor) sections.push(agentTeamsChatSectionCursor);
1636
1686
  sections.push(`
1637
1687
  ## Troubleshooting and Debugging
1638
1688
 
@@ -2255,6 +2305,13 @@ function buildGitignoreLines(config) {
2255
2305
  `${memPath}/.lancedb/`
2256
2306
  );
2257
2307
  }
2308
+ if (hasAgentTeamsLeadMcp(config.mcps)) {
2309
+ lines.push(
2310
+ "",
2311
+ "# Agent teams runtime data",
2312
+ ".agent-teams/"
2313
+ );
2314
+ }
2258
2315
  return lines;
2259
2316
  }
2260
2317
  var generators = {
@@ -195,6 +195,7 @@ declare const mcp: {
195
195
  playwright(overrides?: MCPOverrides): MCPConfig;
196
196
  context7(overrides?: MCPOverrides): MCPConfig;
197
197
  agentTeamsLead(overrides?: MCPOverrides): MCPConfig;
198
+ agentTeamsChat(overrides?: MCPOverrides): MCPConfig;
198
199
  proxy(name: string, overrides: MCPOverrides & {
199
200
  upstreams: string[];
200
201
  }): MCPConfig;
@@ -202,6 +202,14 @@ var mcp = {
202
202
  env: { ...overrides?.env }
203
203
  };
204
204
  },
205
+ agentTeamsChat(overrides) {
206
+ return {
207
+ name: "agent-teams-chat",
208
+ package: "@arvoretech/agent-teams-chat-mcp",
209
+ ...overrides,
210
+ env: { ...overrides?.env }
211
+ };
212
+ },
205
213
  proxy(name, overrides) {
206
214
  return {
207
215
  name,
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  generateCommand,
3
3
  generators
4
- } from "./chunk-RMOWX5GS.js";
4
+ } from "./chunk-AXVQZ7Y5.js";
5
5
  import "./chunk-VMN4KGAK.js";
6
6
  export {
7
7
  generateCommand,
package/dist/index.js CHANGED
@@ -2,7 +2,7 @@
2
2
  import {
3
3
  checkAndAutoRegenerate,
4
4
  generateCommand
5
- } from "./chunk-RMOWX5GS.js";
5
+ } from "./chunk-AXVQZ7Y5.js";
6
6
  import {
7
7
  loadHubConfig,
8
8
  resolveConfigPath
@@ -762,6 +762,7 @@ var AVAILABLE_MCPS = [
762
762
  { name: "google-chat", description: "Google Chat spaces, members, and messages" },
763
763
  { name: "tempmail", description: "Temporary email for testing" },
764
764
  { name: "agent-teams-lead", description: "Spawn AI teammate teams that work in parallel on tasks" },
765
+ { name: "agent-teams-chat", description: "Cross-developer agent communication via Slack threads" },
765
766
  { name: "mcp-proxy", description: "Proxy gateway that reduces token usage via mcp_search/mcp_call" }
766
767
  ];
767
768
 
@@ -1277,6 +1278,7 @@ var MCP_HELPER_MAP = {
1277
1278
  playwright: { helper: "mcp.playwright", hasNameArg: false },
1278
1279
  context7: { helper: "mcp.context7", hasNameArg: false },
1279
1280
  "agent-teams-lead": { helper: "mcp.agentTeamsLead", hasNameArg: false },
1281
+ "agent-teams-chat": { helper: "mcp.agentTeamsChat", hasNameArg: false },
1280
1282
  "mcp-proxy": { helper: "mcp.proxy", hasNameArg: true }
1281
1283
  };
1282
1284
  function buildTypeScriptConfig(state) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@arvoretech/hub",
3
- "version": "0.13.0",
3
+ "version": "0.13.2",
4
4
  "description": "CLI for managing AI-aware multi-repository workspaces",
5
5
  "main": "dist/index.js",
6
6
  "type": "module",