agentmesh-ai 0.1.0

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.
Files changed (123) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +247 -0
  3. package/dist/cli/commands/init.d.ts +2 -0
  4. package/dist/cli/commands/init.d.ts.map +1 -0
  5. package/dist/cli/commands/init.js +134 -0
  6. package/dist/cli/commands/init.js.map +1 -0
  7. package/dist/cli/commands/memory.d.ts +8 -0
  8. package/dist/cli/commands/memory.d.ts.map +1 -0
  9. package/dist/cli/commands/memory.js +40 -0
  10. package/dist/cli/commands/memory.js.map +1 -0
  11. package/dist/cli/commands/serve.d.ts +8 -0
  12. package/dist/cli/commands/serve.d.ts.map +1 -0
  13. package/dist/cli/commands/serve.js +90 -0
  14. package/dist/cli/commands/serve.js.map +1 -0
  15. package/dist/cli/commands/setup.d.ts +2 -0
  16. package/dist/cli/commands/setup.d.ts.map +1 -0
  17. package/dist/cli/commands/setup.js +117 -0
  18. package/dist/cli/commands/setup.js.map +1 -0
  19. package/dist/cli/commands/status.d.ts +2 -0
  20. package/dist/cli/commands/status.d.ts.map +1 -0
  21. package/dist/cli/commands/status.js +66 -0
  22. package/dist/cli/commands/status.js.map +1 -0
  23. package/dist/cli/index.d.ts +3 -0
  24. package/dist/cli/index.d.ts.map +1 -0
  25. package/dist/cli/index.js +50 -0
  26. package/dist/cli/index.js.map +1 -0
  27. package/dist/conversation/client.d.ts +72 -0
  28. package/dist/conversation/client.d.ts.map +1 -0
  29. package/dist/conversation/client.js +245 -0
  30. package/dist/conversation/client.js.map +1 -0
  31. package/dist/conversation/index.d.ts +7 -0
  32. package/dist/conversation/index.d.ts.map +1 -0
  33. package/dist/conversation/index.js +4 -0
  34. package/dist/conversation/index.js.map +1 -0
  35. package/dist/conversation/protocol.d.ts +217 -0
  36. package/dist/conversation/protocol.d.ts.map +1 -0
  37. package/dist/conversation/protocol.js +7 -0
  38. package/dist/conversation/protocol.js.map +1 -0
  39. package/dist/conversation/recorder.d.ts +4 -0
  40. package/dist/conversation/recorder.d.ts.map +1 -0
  41. package/dist/conversation/recorder.js +60 -0
  42. package/dist/conversation/recorder.js.map +1 -0
  43. package/dist/conversation/server.d.ts +59 -0
  44. package/dist/conversation/server.d.ts.map +1 -0
  45. package/dist/conversation/server.js +529 -0
  46. package/dist/conversation/server.js.map +1 -0
  47. package/dist/index.d.ts +3 -0
  48. package/dist/index.d.ts.map +1 -0
  49. package/dist/index.js +3 -0
  50. package/dist/index.js.map +1 -0
  51. package/dist/integrations/claude-md.d.ts +2 -0
  52. package/dist/integrations/claude-md.d.ts.map +1 -0
  53. package/dist/integrations/claude-md.js +35 -0
  54. package/dist/integrations/claude-md.js.map +1 -0
  55. package/dist/integrations/copilot.d.ts +2 -0
  56. package/dist/integrations/copilot.d.ts.map +1 -0
  57. package/dist/integrations/copilot.js +39 -0
  58. package/dist/integrations/copilot.js.map +1 -0
  59. package/dist/integrations/detect.d.ts +9 -0
  60. package/dist/integrations/detect.d.ts.map +1 -0
  61. package/dist/integrations/detect.js +34 -0
  62. package/dist/integrations/detect.js.map +1 -0
  63. package/dist/mcp/conversation-tools.d.ts +4 -0
  64. package/dist/mcp/conversation-tools.d.ts.map +1 -0
  65. package/dist/mcp/conversation-tools.js +540 -0
  66. package/dist/mcp/conversation-tools.js.map +1 -0
  67. package/dist/mcp/index.d.ts +3 -0
  68. package/dist/mcp/index.d.ts.map +1 -0
  69. package/dist/mcp/index.js +86 -0
  70. package/dist/mcp/index.js.map +1 -0
  71. package/dist/mcp/memory-tools.d.ts +4 -0
  72. package/dist/mcp/memory-tools.d.ts.map +1 -0
  73. package/dist/mcp/memory-tools.js +195 -0
  74. package/dist/mcp/memory-tools.js.map +1 -0
  75. package/dist/mcp/resources.d.ts +3 -0
  76. package/dist/mcp/resources.d.ts.map +1 -0
  77. package/dist/mcp/resources.js +23 -0
  78. package/dist/mcp/resources.js.map +1 -0
  79. package/dist/memory/index.d.ts +7 -0
  80. package/dist/memory/index.d.ts.map +1 -0
  81. package/dist/memory/index.js +6 -0
  82. package/dist/memory/index.js.map +1 -0
  83. package/dist/memory/merge-view.d.ts +9 -0
  84. package/dist/memory/merge-view.d.ts.map +1 -0
  85. package/dist/memory/merge-view.js +88 -0
  86. package/dist/memory/merge-view.js.map +1 -0
  87. package/dist/memory/reader.d.ts +8 -0
  88. package/dist/memory/reader.d.ts.map +1 -0
  89. package/dist/memory/reader.js +53 -0
  90. package/dist/memory/reader.js.map +1 -0
  91. package/dist/memory/schema.d.ts +154 -0
  92. package/dist/memory/schema.d.ts.map +1 -0
  93. package/dist/memory/schema.js +34 -0
  94. package/dist/memory/schema.js.map +1 -0
  95. package/dist/memory/searcher.d.ts +7 -0
  96. package/dist/memory/searcher.d.ts.map +1 -0
  97. package/dist/memory/searcher.js +49 -0
  98. package/dist/memory/searcher.js.map +1 -0
  99. package/dist/memory/secret-scanner.d.ts +21 -0
  100. package/dist/memory/secret-scanner.d.ts.map +1 -0
  101. package/dist/memory/secret-scanner.js +54 -0
  102. package/dist/memory/secret-scanner.js.map +1 -0
  103. package/dist/memory/types.d.ts +71 -0
  104. package/dist/memory/types.d.ts.map +1 -0
  105. package/dist/memory/types.js +5 -0
  106. package/dist/memory/types.js.map +1 -0
  107. package/dist/memory/writer.d.ts +4 -0
  108. package/dist/memory/writer.d.ts.map +1 -0
  109. package/dist/memory/writer.js +114 -0
  110. package/dist/memory/writer.js.map +1 -0
  111. package/dist/utils/git.d.ts +7 -0
  112. package/dist/utils/git.d.ts.map +1 -0
  113. package/dist/utils/git.js +46 -0
  114. package/dist/utils/git.js.map +1 -0
  115. package/dist/utils/id.d.ts +6 -0
  116. package/dist/utils/id.d.ts.map +1 -0
  117. package/dist/utils/id.js +20 -0
  118. package/dist/utils/id.js.map +1 -0
  119. package/dist/utils/yaml.d.ts +7 -0
  120. package/dist/utils/yaml.d.ts.map +1 -0
  121. package/dist/utils/yaml.js +50 -0
  122. package/dist/utils/yaml.js.map +1 -0
  123. package/package.json +59 -0
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 AgentHub Contributors
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,247 @@
1
+ # AgentHub
2
+
3
+ **Shared memory & conversation protocol for AI coding agents.**
4
+
5
+ You use Claude Code. Your teammate uses Cursor. Another uses Copilot. Your AIs have no idea what each other is doing. AgentHub fixes that.
6
+
7
+ ```
8
+ npx agenthub init && npx agenthub setup
9
+ ```
10
+
11
+ That's it. Your AI now shares knowledge with every other AI on the team.
12
+
13
+ ---
14
+
15
+ ## What It Does
16
+
17
+ **Shared Memory** — Each AI automatically records what it learns (APIs, decisions, gotchas). Every other AI can read it.
18
+
19
+ **Real-time Discussion** — When AIs need to align on something, they open a conversation space and discuss. Humans only step in for final decisions.
20
+
21
+ **Team Consensus** — Important decisions require all humans to vote. No single person can override the team.
22
+
23
+ ---
24
+
25
+ ## Quick Start
26
+
27
+ ### 1. Initialize (30 seconds)
28
+
29
+ ```bash
30
+ npx agenthub init
31
+ ```
32
+
33
+ Answers a few questions, creates `.agenthub/` in your project.
34
+
35
+ ### 2. Configure your AI tool (1 minute)
36
+
37
+ ```bash
38
+ npx agenthub setup
39
+ ```
40
+
41
+ Auto-detects Claude Code, Cursor, Windsurf and writes their MCP config.
42
+
43
+ ### 3. Invite teammates
44
+
45
+ ```
46
+ "Clone the repo and run: npx agenthub setup"
47
+ ```
48
+
49
+ No accounts, no servers, no extra software.
50
+
51
+ ### 4. Start coding
52
+
53
+ Your AI now automatically:
54
+ - Reads shared memory before starting work
55
+ - Records important knowledge after completing work
56
+ - Alerts you when there's a discussion or vote waiting
57
+
58
+ ---
59
+
60
+ ## How It Works
61
+
62
+ ### Shared Memory
63
+
64
+ Each AI writes to its own file. No Git conflicts, ever.
65
+
66
+ ```
67
+ .agenthub/
68
+ ├── hub.yaml # Project info + agent registry
69
+ ├── memory/
70
+ │ ├── alice-claude-code.yaml # Alice's AI writes here
71
+ │ ├── bob-cursor.yaml # Bob's AI writes here
72
+ │ └── carol-copilot.yaml # Carol's AI writes here
73
+ └── conversations/ # Discussion logs
74
+ ```
75
+
76
+ When any AI reads memory, it sees a merged view of everyone's knowledge:
77
+
78
+ ```
79
+ ## User Service API 🔒
80
+ Agent: alice-claude-code (Backend Developer)
81
+ Status: protected
82
+
83
+ POST /api/users → register
84
+ POST /api/auth/login → login, returns JWT
85
+ GET /api/users/:id → get user info
86
+
87
+ ---
88
+
89
+ ## UI Design System 📋
90
+ Agent: bob-cursor (Frontend Developer)
91
+ Status: proposal
92
+
93
+ shadcn/ui, Indigo primary, 8px radius, 4px spacing
94
+ ```
95
+
96
+ ### Three Levels of Knowledge
97
+
98
+ | Status | Meaning | Icon |
99
+ |--------|---------|------|
100
+ | `auto` | Routine facts (APIs, models) — recorded automatically | (none) |
101
+ | `proposal` | Important decision, needs team confirmation | 📋 |
102
+ | `protected` | Team consensus — cannot be overridden | 🔒 |
103
+
104
+ ### Real-time Discussion
105
+
106
+ When your AI needs to discuss something with the team:
107
+
108
+ ```bash
109
+ # One person starts the conversation space
110
+ npx agenthub serve
111
+ ```
112
+
113
+ Then any team member can say: *"Discuss database selection with the team"*
114
+
115
+ The AI handles multi-round discussion automatically — you only trigger it once.
116
+
117
+ ### Team Voting
118
+
119
+ For important decisions, every human must approve:
120
+
121
+ 1. AI presents options via an interactive form
122
+ 2. Each team member's AI asks their human to vote
123
+ 3. **All approve** → decision becomes protected
124
+ 4. **Anyone rejects** → discussion restarts with feedback
125
+
126
+ ---
127
+
128
+ ## Works With Everything
129
+
130
+ | Tool | Integration | Experience |
131
+ |------|-------------|------------|
132
+ | Claude Code | MCP (native) | Automatic read/write/discuss |
133
+ | Cursor | MCP (native) | Automatic read/write/discuss |
134
+ | Windsurf | MCP (native) | Automatic read/write/discuss |
135
+ | GitHub Copilot | Instructions file | AI reads .agenthub/ on request |
136
+ | Any AI tool | Plain files | Human tells AI to read .agenthub/ |
137
+
138
+ AgentHub doesn't call any AI API. It's a pure protocol layer — each tool uses its own intelligence.
139
+
140
+ ---
141
+
142
+ ## Use Cases
143
+
144
+ ### Solo Developer (Solves AI Amnesia)
145
+
146
+ Your AI forgets everything between sessions. With AgentHub, it reads `.agenthub/memory/` and instantly recovers context.
147
+
148
+ ### Team Collaboration (Zero Communication Overhead)
149
+
150
+ Alice writes the backend. Bob clones the repo — his AI already knows every API, every data model, every convention Alice established.
151
+
152
+ ### Handover (Better Than Any Document)
153
+
154
+ Alice leaves the project. Her AI's memory file contains every decision, every gotcha, every "don't change this because..." — automatically accumulated over months.
155
+
156
+ ### New Project (AI-First Planning)
157
+
158
+ Three people start a new project. They open a conversation space, their AIs discuss tech stack, architecture, conventions. Conclusions become protected memories. Everyone starts coding in sync.
159
+
160
+ ---
161
+
162
+ ## Safety
163
+
164
+ ### Secret Scanner
165
+
166
+ Before any knowledge is shared, AgentHub scans for:
167
+ - API keys (OpenAI, AWS, GitHub, Stripe)
168
+ - Passwords and tokens
169
+ - Private keys
170
+ - Database connection strings
171
+ - Internal URLs
172
+
173
+ High-risk content is **blocked**. Medium-risk gets a **warning**.
174
+
175
+ ### Human-in-the-Loop
176
+
177
+ - Routine knowledge: AI records automatically
178
+ - Important proposals: AI asks human first
179
+ - Team constraints: requires unanimous vote
180
+
181
+ ---
182
+
183
+ ## CLI Commands
184
+
185
+ | Command | Description |
186
+ |---------|-------------|
187
+ | `npx agenthub init` | Create .agenthub/ directory |
188
+ | `npx agenthub setup` | Auto-configure MCP for your AI tools |
189
+ | `npx agenthub serve` | Start conversation space |
190
+ | `npx agenthub status` | Show project memory status |
191
+ | `npx agenthub memory` | View/search shared memory |
192
+ | `npx agenthub memory -s "database"` | Search for specific info |
193
+
194
+ ---
195
+
196
+ ## MCP Tools (for AI)
197
+
198
+ | Tool | What It Does |
199
+ |------|-------------|
200
+ | `read_memory` | Read all shared knowledge |
201
+ | `write_memory` | Record new knowledge |
202
+ | `search_memory` | Search by keyword |
203
+ | `discuss` | Multi-round team discussion |
204
+ | `start_meeting` | Check attendance, start meeting |
205
+ | `escalate_to_human` | Team-wide vote on decisions |
206
+ | `vote_on_decision` | Cast vote on pending decision |
207
+ | `send_message` | Send single message |
208
+ | `get_messages` | Read messages on a topic |
209
+ | `save_to_memory` | Save discussion conclusion |
210
+ | `list_conversations` | See who's online, what's being discussed |
211
+ | `list_pending_decisions` | See what needs voting |
212
+
213
+ ---
214
+
215
+ ## Architecture
216
+
217
+ ```
218
+ .agenthub/ (files) Conversation Space (WebSocket)
219
+ │ │
220
+ │ Shared Memory │ Real-time Discussion
221
+ │ (Git-synced YAML) │ (Optional, ephemeral)
222
+ │ │
223
+ ├── read/write locally ├── discuss, vote, meet
224
+ ├── sync via Git ├── auto-sync memory on join
225
+ └── works offline └── results saved to files
226
+ ```
227
+
228
+ - **Files are the source of truth** — server is just a sync layer
229
+ - **Server down?** Memory still works. Only real-time discussion needs it.
230
+ - **No AI API calls** — AgentHub is a pure protocol, not a model provider
231
+
232
+ ---
233
+
234
+ ## Protocol Specifications
235
+
236
+ For tool builders and contributors:
237
+
238
+ - [Memory Format](docs/spec/memory-format.md) — `.agenthub/` file structure
239
+ - [MCP Tools](docs/spec/mcp-tools.md) — tool definitions and parameters
240
+ - [Conversation Protocol](docs/spec/conversation-protocol.md) — WebSocket messages
241
+ - [Decision Protocol](docs/spec/decision-protocol.md) — voting and consensus rules
242
+
243
+ ---
244
+
245
+ ## License
246
+
247
+ MIT
@@ -0,0 +1,2 @@
1
+ export declare function initCommand(): Promise<void>;
2
+ //# sourceMappingURL=init.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"AAaA,wBAAsB,WAAW,kBAwHhC"}
@@ -0,0 +1,134 @@
1
+ /**
2
+ * agenthub init — Initialize .agenthub/ in the current project.
3
+ */
4
+ import { join } from 'node:path';
5
+ import { mkdir } from 'node:fs/promises';
6
+ import { existsSync } from 'node:fs';
7
+ import inquirer from 'inquirer';
8
+ import chalk from 'chalk';
9
+ import { writeYaml } from '../../utils/yaml.js';
10
+ import { isGitRepo } from '../../utils/git.js';
11
+ import { generateAgentId } from '../../utils/id.js';
12
+ export async function initCommand() {
13
+ const cwd = process.cwd();
14
+ const agentHubDir = join(cwd, '.agenthub');
15
+ // Check if already initialized
16
+ if (existsSync(agentHubDir)) {
17
+ console.log(chalk.yellow('⚠️ .agenthub/ already exists in this directory.'));
18
+ const { proceed } = await inquirer.prompt([{
19
+ type: 'confirm',
20
+ name: 'proceed',
21
+ message: 'Reinitialize?',
22
+ default: false,
23
+ }]);
24
+ if (!proceed)
25
+ return;
26
+ }
27
+ console.log('');
28
+ // Check for git
29
+ const hasGit = isGitRepo(cwd);
30
+ if (hasGit) {
31
+ console.log(chalk.dim(' Git repository detected ✓'));
32
+ }
33
+ else {
34
+ console.log(chalk.dim(' No Git repo detected (memory sync requires Git)'));
35
+ }
36
+ console.log('');
37
+ // Ask questions
38
+ const answers = await inquirer.prompt([
39
+ {
40
+ type: 'input',
41
+ name: 'project',
42
+ message: 'Project name?',
43
+ default: getDefaultProjectName(cwd),
44
+ },
45
+ {
46
+ type: 'input',
47
+ name: 'displayName',
48
+ message: 'Your name?',
49
+ },
50
+ {
51
+ type: 'list',
52
+ name: 'role',
53
+ message: 'Your role?',
54
+ choices: [
55
+ 'Backend Developer',
56
+ 'Frontend Developer',
57
+ 'Full Stack Developer',
58
+ 'Mobile Developer',
59
+ 'DevOps / Infrastructure',
60
+ 'Designer',
61
+ 'Other',
62
+ ],
63
+ },
64
+ {
65
+ type: 'list',
66
+ name: 'tool',
67
+ message: 'Your AI coding tool?',
68
+ choices: [
69
+ { name: 'Claude Code', value: 'claude-code' },
70
+ { name: 'Cursor', value: 'cursor' },
71
+ { name: 'GitHub Copilot', value: 'copilot' },
72
+ { name: 'Windsurf', value: 'windsurf' },
73
+ { name: 'Codex', value: 'codex' },
74
+ { name: 'Other', value: 'other' },
75
+ ],
76
+ },
77
+ ]);
78
+ const agentId = generateAgentId(answers.displayName, answers.tool);
79
+ const now = new Date().toISOString();
80
+ // Create directories
81
+ await mkdir(join(agentHubDir, 'memory'), { recursive: true });
82
+ await mkdir(join(agentHubDir, 'conversations'), { recursive: true });
83
+ // Create hub.yaml
84
+ const hub = {
85
+ project: answers.project,
86
+ created: now,
87
+ version: '1.0',
88
+ agents: [{
89
+ id: agentId,
90
+ display_name: answers.displayName,
91
+ role: answers.role,
92
+ tool: answers.tool,
93
+ }],
94
+ };
95
+ await writeYaml(join(agentHubDir, 'hub.yaml'), hub);
96
+ // Create agent memory file (empty, ready to be written to)
97
+ const memoryFile = {
98
+ agent: agentId,
99
+ role: answers.role,
100
+ tool: answers.tool,
101
+ last_active: now,
102
+ entries: [],
103
+ };
104
+ await writeYaml(join(agentHubDir, 'memory', `${agentId}.yaml`), memoryFile);
105
+ // Output
106
+ console.log('');
107
+ console.log(chalk.green('✅ Created .agenthub/'));
108
+ console.log('');
109
+ console.log(chalk.dim(' .agenthub/'));
110
+ console.log(chalk.dim(' ├── hub.yaml'));
111
+ console.log(chalk.dim(' ├── memory/'));
112
+ console.log(chalk.dim(` │ └── ${agentId}.yaml`));
113
+ console.log(chalk.dim(' └── conversations/'));
114
+ console.log('');
115
+ console.log(` Your Agent ID: ${chalk.cyan(agentId)}`);
116
+ console.log('');
117
+ console.log(chalk.dim(' Next steps:'));
118
+ console.log(` 1. Run ${chalk.cyan('npx agenthub setup')} to configure your AI tool`);
119
+ if (hasGit) {
120
+ console.log(` 2. ${chalk.cyan('git add .agenthub/ && git commit')} to share with teammates`);
121
+ console.log(` 3. Tell your teammates: ${chalk.cyan('"clone and run npx agenthub setup"')}`);
122
+ }
123
+ console.log('');
124
+ }
125
+ function getDefaultProjectName(cwd) {
126
+ try {
127
+ const pkg = require(join(cwd, 'package.json'));
128
+ return pkg.name || cwd.split(/[\\/]/).pop() || 'my-project';
129
+ }
130
+ catch {
131
+ return cwd.split(/[\\/]/).pop() || 'my-project';
132
+ }
133
+ }
134
+ //# sourceMappingURL=init.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ interface MemoryOptions {
2
+ search?: string;
3
+ agent?: string;
4
+ tags?: string;
5
+ }
6
+ export declare function memoryCommand(options: MemoryOptions): Promise<void>;
7
+ export {};
8
+ //# sourceMappingURL=memory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/memory.ts"],"names":[],"mappings":"AASA,UAAU,aAAa;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,wBAAsB,aAAa,CAAC,OAAO,EAAE,aAAa,iBAgCzD"}
@@ -0,0 +1,40 @@
1
+ /**
2
+ * agenthub memory — View or search shared memory.
3
+ */
4
+ import chalk from 'chalk';
5
+ import { findAgentHubDir } from '../../utils/git.js';
6
+ import { readAllAgentMemories } from '../../memory/reader.js';
7
+ import { searchMemories } from '../../memory/searcher.js';
8
+ import { mergeMemories, formatMergedMemories } from '../../memory/merge-view.js';
9
+ export async function memoryCommand(options) {
10
+ const cwd = process.cwd();
11
+ const agentHubDir = findAgentHubDir(cwd);
12
+ if (!agentHubDir) {
13
+ console.log(chalk.red('❌ No .agenthub/ found. Run "npx agenthub init" first.'));
14
+ return;
15
+ }
16
+ const memories = await readAllAgentMemories(agentHubDir);
17
+ if (memories.length === 0) {
18
+ console.log(chalk.dim('\n No shared memories found yet.\n'));
19
+ return;
20
+ }
21
+ if (options.search) {
22
+ // Search mode
23
+ const results = searchMemories(memories, options.search);
24
+ if (results.length === 0) {
25
+ console.log(chalk.dim(`\n No results for "${options.search}".\n`));
26
+ }
27
+ else {
28
+ console.log(`\n Found ${results.length} result(s) for "${options.search}":\n`);
29
+ console.log(formatMergedMemories(results));
30
+ }
31
+ }
32
+ else {
33
+ // List mode with optional filters
34
+ const tags = options.tags?.split(',').map(t => t.trim());
35
+ const merged = mergeMemories(memories, { tags, agent: options.agent });
36
+ console.log('');
37
+ console.log(formatMergedMemories(merged));
38
+ }
39
+ }
40
+ //# sourceMappingURL=memory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory.js","sourceRoot":"","sources":["../../../src/cli/commands/memory.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAQjF,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,OAAsB;IACxD,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAC1B,MAAM,WAAW,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC;IAEzC,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,uDAAuD,CAAC,CAAC,CAAC;QAChF,OAAO;IACT,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,oBAAoB,CAAC,WAAW,CAAC,CAAC;IAEzD,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,qCAAqC,CAAC,CAAC,CAAC;QAC9D,OAAO;IACT,CAAC;IAED,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACnB,cAAc;QACd,MAAM,OAAO,GAAG,cAAc,CAAC,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;QACzD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,uBAAuB,OAAO,CAAC,MAAM,MAAM,CAAC,CAAC,CAAC;QACtE,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,aAAa,OAAO,CAAC,MAAM,mBAAmB,OAAO,CAAC,MAAM,MAAM,CAAC,CAAC;YAChF,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC,CAAC;QAC7C,CAAC;IACH,CAAC;SAAM,CAAC;QACN,kCAAkC;QAClC,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QACzD,MAAM,MAAM,GAAG,aAAa,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;QACvE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC;IAC5C,CAAC;AACH,CAAC"}
@@ -0,0 +1,8 @@
1
+ interface ServeOptions {
2
+ port?: string;
3
+ host?: string;
4
+ key?: string;
5
+ }
6
+ export declare function serveCommand(options: ServeOptions): Promise<void>;
7
+ export {};
8
+ //# sourceMappingURL=serve.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serve.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/serve.ts"],"names":[],"mappings":"AASA,UAAU,YAAY;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,wBAAsB,YAAY,CAAC,OAAO,EAAE,YAAY,iBAmFvD"}
@@ -0,0 +1,90 @@
1
+ /**
2
+ * agenthub serve — Start the conversation space server.
3
+ */
4
+ import chalk from 'chalk';
5
+ import { ConversationServer } from '../../conversation/server.js';
6
+ import { saveConversation } from '../../conversation/recorder.js';
7
+ import { findAgentHubDir } from '../../utils/git.js';
8
+ import { networkInterfaces } from 'node:os';
9
+ export async function serveCommand(options) {
10
+ const cwd = process.cwd();
11
+ const agentHubDir = findAgentHubDir(cwd);
12
+ if (!agentHubDir) {
13
+ console.log(chalk.red('❌ No .agenthub/ found. Run "npx agenthub init" first.'));
14
+ return;
15
+ }
16
+ const port = parseInt(options.port ?? '4800', 10);
17
+ const host = options.host ?? '0.0.0.0';
18
+ const server = new ConversationServer({ port, host, key: options.key });
19
+ // Event handlers
20
+ server.onAgentJoined = (agent) => {
21
+ console.log(chalk.green(` ✅ ${agent.displayName} (${agent.role}) joined`));
22
+ };
23
+ server.onAgentLeft = (agentId) => {
24
+ console.log(chalk.dim(` ← ${agentId} left`));
25
+ };
26
+ server.onMessage = (msg) => {
27
+ console.log(chalk.dim(` 💬 [${msg.topic}] ${msg.from.displayName}: ${msg.content.slice(0, 80)}${msg.content.length > 80 ? '...' : ''}`));
28
+ };
29
+ server.onConclusion = (conclusion) => {
30
+ console.log(chalk.cyan(` 📋 Conclusion on "${conclusion.topic}": ${conclusion.summary.slice(0, 80)}...`));
31
+ };
32
+ try {
33
+ await server.start();
34
+ }
35
+ catch (err) {
36
+ console.log(chalk.red(`❌ Failed to start server: ${err.message}`));
37
+ return;
38
+ }
39
+ const lanIp = getLanIp();
40
+ console.log('');
41
+ console.log(chalk.green(' 🚀 Conversation space is running'));
42
+ console.log('');
43
+ console.log(` Local: ${chalk.cyan(`ws://localhost:${port}`)}`);
44
+ if (lanIp) {
45
+ console.log(` Network: ${chalk.cyan(`ws://${lanIp}:${port}`)}`);
46
+ }
47
+ console.log(` Key: ${chalk.cyan(server.key)}`);
48
+ console.log('');
49
+ console.log(chalk.dim(' Share with teammates:'));
50
+ console.log(chalk.dim(` Set these env vars in their MCP config:`));
51
+ console.log(chalk.dim(` AGENTHUB_SERVER_URL=ws://${lanIp ?? 'localhost'}:${port}`));
52
+ console.log(chalk.dim(` AGENTHUB_SERVER_KEY=${server.key}`));
53
+ console.log('');
54
+ console.log(chalk.dim(' Press Ctrl+C to stop'));
55
+ console.log('');
56
+ // Handle graceful shutdown
57
+ const shutdown = async () => {
58
+ console.log('');
59
+ console.log(chalk.dim(' Shutting down...'));
60
+ // Save conversation logs
61
+ const messages = server.allMessages;
62
+ const conclusions = server.allConclusions;
63
+ if (messages.length > 0) {
64
+ const topics = [...new Set(messages.map(m => m.topic))];
65
+ for (const topic of topics) {
66
+ const topicMessages = messages.filter(m => m.topic === topic);
67
+ const topicConclusions = conclusions.filter(c => c.topic === topic);
68
+ const filePath = await saveConversation(agentHubDir, topic, topicMessages, topicConclusions);
69
+ console.log(chalk.dim(` 📝 Saved: ${filePath}`));
70
+ }
71
+ }
72
+ await server.stop();
73
+ console.log(chalk.dim(' Done.'));
74
+ process.exit(0);
75
+ };
76
+ process.on('SIGINT', shutdown);
77
+ process.on('SIGTERM', shutdown);
78
+ }
79
+ function getLanIp() {
80
+ const interfaces = networkInterfaces();
81
+ for (const name of Object.keys(interfaces)) {
82
+ for (const iface of interfaces[name] ?? []) {
83
+ if (iface.family === 'IPv4' && !iface.internal) {
84
+ return iface.address;
85
+ }
86
+ }
87
+ }
88
+ return null;
89
+ }
90
+ //# sourceMappingURL=serve.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serve.js","sourceRoot":"","sources":["../../../src/cli/commands/serve.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAClE,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAClE,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAQ5C,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,OAAqB;IACtD,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAC1B,MAAM,WAAW,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC;IAEzC,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,uDAAuD,CAAC,CAAC,CAAC;QAChF,OAAO;IACT,CAAC;IAED,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAI,IAAI,MAAM,EAAE,EAAE,CAAC,CAAC;IAClD,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,SAAS,CAAC;IAEvC,MAAM,MAAM,GAAG,IAAI,kBAAkB,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IAExE,iBAAiB;IACjB,MAAM,CAAC,aAAa,GAAG,CAAC,KAAK,EAAE,EAAE;QAC/B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,KAAK,CAAC,WAAW,KAAK,KAAK,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC;IAC9E,CAAC,CAAC;IAEF,MAAM,CAAC,WAAW,GAAG,CAAC,OAAO,EAAE,EAAE;QAC/B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,OAAO,OAAO,CAAC,CAAC,CAAC;IAChD,CAAC,CAAC;IAEF,MAAM,CAAC,SAAS,GAAG,CAAC,GAAG,EAAE,EAAE;QACzB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,GAAG,CAAC,KAAK,KAAK,GAAG,CAAC,IAAI,CAAC,WAAW,KAAK,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,OAAO,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;IAC5I,CAAC,CAAC;IAEF,MAAM,CAAC,YAAY,GAAG,CAAC,UAAU,EAAE,EAAE;QACnC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,uBAAuB,UAAU,CAAC,KAAK,MAAM,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IAC7G,CAAC,CAAC;IAEF,IAAI,CAAC;QACH,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;IACvB,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAClB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,6BAA6B,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QACnE,OAAO;IACT,CAAC;IAED,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAC;IAEzB,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,oCAAoC,CAAC,CAAC,CAAC;IAC/D,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,cAAc,KAAK,CAAC,IAAI,CAAC,kBAAkB,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;IAClE,IAAI,KAAK,EAAE,CAAC;QACV,OAAO,CAAC,GAAG,CAAC,cAAc,KAAK,CAAC,IAAI,CAAC,QAAQ,KAAK,IAAI,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;IACnE,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,cAAc,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACpD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC,CAAC;IAClD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,2CAA2C,CAAC,CAAC,CAAC;IACpE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,gCAAgC,KAAK,IAAI,WAAW,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC;IACvF,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,2BAA2B,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;IAChE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC,CAAC;IACjD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAEhB,2BAA2B;IAC3B,MAAM,QAAQ,GAAG,KAAK,IAAI,EAAE;QAC1B,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC,CAAC;QAE7C,yBAAyB;QACzB,MAAM,QAAQ,GAAG,MAAM,CAAC,WAAW,CAAC;QACpC,MAAM,WAAW,GAAG,MAAM,CAAC,cAAc,CAAC;QAE1C,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxB,MAAM,MAAM,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YACxD,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;gBAC3B,MAAM,aAAa,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC;gBAC9D,MAAM,gBAAgB,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC;gBACpE,MAAM,QAAQ,GAAG,MAAM,gBAAgB,CAAC,WAAW,EAAE,KAAK,EAAE,aAAa,EAAE,gBAAgB,CAAC,CAAC;gBAC7F,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,eAAe,QAAQ,EAAE,CAAC,CAAC,CAAC;YACpD,CAAC;QACH,CAAC;QAED,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;QACpB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC;QAClC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC;IAEF,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAC/B,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;AAClC,CAAC;AAED,SAAS,QAAQ;IACf,MAAM,UAAU,GAAG,iBAAiB,EAAE,CAAC;IACvC,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;QAC3C,KAAK,MAAM,KAAK,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;YAC3C,IAAI,KAAK,CAAC,MAAM,KAAK,MAAM,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;gBAC/C,OAAO,KAAK,CAAC,OAAO,CAAC;YACvB,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function setupCommand(): Promise<void>;
2
+ //# sourceMappingURL=setup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/setup.ts"],"names":[],"mappings":"AAkBA,wBAAsB,YAAY,kBAqHjC"}