agentmesh-ai 0.1.5 → 0.3.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 (80) hide show
  1. package/GUIDE.md +27 -33
  2. package/README.md +132 -144
  3. package/dist/cli/commands/init.d.ts.map +1 -1
  4. package/dist/cli/commands/init.js +41 -22
  5. package/dist/cli/commands/init.js.map +1 -1
  6. package/dist/cli/commands/join.d.ts +2 -0
  7. package/dist/cli/commands/join.d.ts.map +1 -0
  8. package/dist/cli/commands/join.js +260 -0
  9. package/dist/cli/commands/join.js.map +1 -0
  10. package/dist/cli/commands/serve.d.ts.map +1 -1
  11. package/dist/cli/commands/serve.js +114 -19
  12. package/dist/cli/commands/serve.js.map +1 -1
  13. package/dist/cli/commands/setup.d.ts.map +1 -1
  14. package/dist/cli/commands/setup.js +31 -10
  15. package/dist/cli/commands/setup.js.map +1 -1
  16. package/dist/cli/commands/status.d.ts.map +1 -1
  17. package/dist/cli/commands/status.js +15 -0
  18. package/dist/cli/commands/status.js.map +1 -1
  19. package/dist/cli/index.js +7 -2
  20. package/dist/cli/index.js.map +1 -1
  21. package/dist/cloud/cloud-conversation.d.ts +83 -0
  22. package/dist/cloud/cloud-conversation.d.ts.map +1 -0
  23. package/dist/cloud/cloud-conversation.js +357 -0
  24. package/dist/cloud/cloud-conversation.js.map +1 -0
  25. package/dist/cloud/index.d.ts +4 -0
  26. package/dist/cloud/index.d.ts.map +1 -0
  27. package/dist/cloud/index.js +3 -0
  28. package/dist/cloud/index.js.map +1 -0
  29. package/dist/cloud/supabase-client.d.ts +29 -0
  30. package/dist/cloud/supabase-client.d.ts.map +1 -0
  31. package/dist/cloud/supabase-client.js +135 -0
  32. package/dist/cloud/supabase-client.js.map +1 -0
  33. package/dist/conversation/server.d.ts.map +1 -1
  34. package/dist/conversation/server.js +6 -0
  35. package/dist/conversation/server.js.map +1 -1
  36. package/dist/index.d.ts +1 -0
  37. package/dist/index.d.ts.map +1 -1
  38. package/dist/index.js +1 -0
  39. package/dist/index.js.map +1 -1
  40. package/dist/mcp/conversation-tools.d.ts +5 -1
  41. package/dist/mcp/conversation-tools.d.ts.map +1 -1
  42. package/dist/mcp/conversation-tools.js +210 -157
  43. package/dist/mcp/conversation-tools.js.map +1 -1
  44. package/dist/mcp/index.js +124 -43
  45. package/dist/mcp/index.js.map +1 -1
  46. package/dist/mcp/memory-tools.d.ts +20 -2
  47. package/dist/mcp/memory-tools.d.ts.map +1 -1
  48. package/dist/mcp/memory-tools.js +88 -44
  49. package/dist/mcp/memory-tools.js.map +1 -1
  50. package/dist/memory/index.d.ts +1 -0
  51. package/dist/memory/index.d.ts.map +1 -1
  52. package/dist/memory/index.js +1 -0
  53. package/dist/memory/index.js.map +1 -1
  54. package/dist/memory/merge-view.d.ts.map +1 -1
  55. package/dist/memory/merge-view.js +5 -4
  56. package/dist/memory/merge-view.js.map +1 -1
  57. package/dist/memory/reader.js +2 -2
  58. package/dist/memory/reader.js.map +1 -1
  59. package/dist/memory/schema.d.ts +3 -0
  60. package/dist/memory/schema.d.ts.map +1 -1
  61. package/dist/memory/schema.js +1 -0
  62. package/dist/memory/schema.js.map +1 -1
  63. package/dist/memory/types.d.ts +1 -0
  64. package/dist/memory/types.d.ts.map +1 -1
  65. package/dist/memory/write-utils.d.ts +30 -0
  66. package/dist/memory/write-utils.d.ts.map +1 -0
  67. package/dist/memory/write-utils.js +98 -0
  68. package/dist/memory/write-utils.js.map +1 -0
  69. package/dist/memory/writer.d.ts.map +1 -1
  70. package/dist/memory/writer.js +21 -84
  71. package/dist/memory/writer.js.map +1 -1
  72. package/dist/utils/id.d.ts +2 -0
  73. package/dist/utils/id.d.ts.map +1 -1
  74. package/dist/utils/id.js +4 -0
  75. package/dist/utils/id.js.map +1 -1
  76. package/dist/utils/notify.d.ts +2 -0
  77. package/dist/utils/notify.d.ts.map +1 -0
  78. package/dist/utils/notify.js +50 -0
  79. package/dist/utils/notify.js.map +1 -0
  80. package/package.json +5 -4
package/GUIDE.md CHANGED
@@ -245,49 +245,38 @@ npx agentmesh-ai serve
245
245
  会显示:
246
246
 
247
247
  ```
248
- 🚀 对话空间已启动
248
+ 🚀 Conversation space is running
249
249
 
250
- Local: ws://localhost:4800
251
- Network: ws://192.168.1.100:4800
250
+ Address: ws://192.168.31.66:4800
252
251
  Key: abc123
253
252
 
254
- 把以下信息发给队友:
255
- AGENTHUB_SERVER_URL=ws://192.168.1.100:4800
256
- AGENTHUB_SERVER_KEY=abc123
253
+ Send this to your teammates:
254
+
255
+ npx agentmesh-ai join ws://192.168.31.66:4800 --key abc123
256
+
257
+ Restart your AI tool to connect.
257
258
  ```
258
259
 
259
- ### 其他人连入
260
+ serve 会自动:
261
+ - 检测你的局域网 IP(过滤掉虚拟网卡)
262
+ - 配好你自己的 MCP(加上对话空间地址)
263
+ - Windows 上自动尝试开放防火墙端口
260
264
 
261
- **Claude Code 用户:**
265
+ ### 同事加入(一行命令)
262
266
 
263
- 先移除旧配置再重新添加(带上对话空间地址):
267
+ 把 serve 输出的那行命令发给同事,同事粘贴运行:
264
268
 
265
269
  ```bash
266
- claude mcp remove agentmesh
267
- claude mcp add agentmesh -e AGENTHUB_AGENT_ID=你的agent-id -e AGENTHUB_SERVER_URL=ws://192.168.1.100:4800 -e AGENTHUB_SERVER_KEY=abc123 -- npx -y agentmesh-ai mcp
270
+ npx agentmesh-ai join ws://192.168.31.66:4800 --key abc123
268
271
  ```
269
272
 
270
- **Cursor / Windsurf 用户:**
271
-
272
- `.cursor/mcp.json` 或 `.windsurf/mcp.json` 的 `env` 里加上对话空间地址:
273
-
274
- ```json
275
- {
276
- "mcpServers": {
277
- "agentmesh": {
278
- "command": "npx",
279
- "args": ["-y", "agentmesh-ai", "mcp"],
280
- "env": {
281
- "AGENTHUB_AGENT_ID": "你的agent-id",
282
- "AGENTHUB_SERVER_URL": "ws://192.168.1.100:4800",
283
- "AGENTHUB_SERVER_KEY": "abc123"
284
- }
285
- }
286
- }
287
- }
288
- ```
273
+ 这个命令会自动完成所有事情:
274
+ - 如果没有 .agenthub/,自动初始化
275
+ - 测试网络连接是否通
276
+ - 自动检测 AI 工具(Claude Code / Cursor / Windsurf)
277
+ - 自动配好 MCP(包含对话空间地址)
289
278
 
290
- 然后重启 AI 工具。
279
+ 同事只需要在命令完成后**重启 AI 工具**即可。
291
280
 
292
281
  **注意:** 所有人必须在同一个局域网内(同一个 WiFi 或公司网络)。如果是远程协作,启动 serve 的人需要用 ngrok 等工具做内网穿透。
293
282
 
@@ -418,10 +407,15 @@ Cursor 自动读取共享记忆,知道:
418
407
 
419
408
  ```bash
420
409
  npx agentmesh-ai serve
421
- # 把 URL 和 Key 发给小红
410
+ # 输出一行命令,小明把它发给小红
422
411
  ```
423
412
 
424
- 小红在 MCP 配置里加上对话空间地址,重启 Cursor。
413
+ 小红运行小明发来的命令:
414
+
415
+ ```bash
416
+ npx agentmesh-ai join ws://192.168.31.66:4800 --key abc123
417
+ # 自动配好一切,重启 Cursor
418
+ ```
425
419
 
426
420
  小红对 Cursor 说:"帮我和团队讨论一下 UI 用什么组件库和颜色"
427
421
 
package/README.md CHANGED
@@ -1,24 +1,66 @@
1
- # AgentHub
1
+ # AgentMesh
2
2
 
3
- **Shared memory & conversation protocol for AI coding agents.**
3
+ **Let your AI agents share knowledge and talk to each other.**
4
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.
5
+ You use Claude Code. Your teammate uses Cursor. Another uses Copilot. Your AIs have no idea what each other is doing. AgentMesh fixes that.
6
6
 
7
+ ```bash
8
+ npx agentmesh-ai init # Get a Team ID
9
+ npx agentmesh-ai setup # Configure your AI tool
7
10
  ```
8
- npx agenthub init && npx agenthub setup
11
+
12
+ Share your Team ID with teammates. They run:
13
+
14
+ ```bash
15
+ npx agentmesh-ai join team-a1b2c3d4
9
16
  ```
10
17
 
11
- That's it. Your AI now shares knowledge with every other AI on the team.
18
+ Done. Your AIs now share knowledge and can discuss in real time.
12
19
 
13
20
  ---
14
21
 
15
22
  ## What It Does
16
23
 
17
- **Shared Memory** — Each AI automatically records what it learns (APIs, decisions, gotchas). Every other AI can read it.
24
+ ### Shared Memory
25
+
26
+ Your AI records what it learns — APIs, architecture decisions, gotchas, conventions. Every other AI on the team can read it instantly.
27
+
28
+ ```
29
+ You: "Build the user authentication API"
30
+
31
+ Your AI writes code, then automatically records:
32
+ - "User API: POST /api/users, POST /api/auth/login (JWT)"
33
+ - "Using bcrypt for password hashing, 12 rounds"
34
+
35
+ Teammate's AI starts frontend work, reads memory:
36
+ - Sees the exact API paths, auth flow, data formats
37
+ - No Slack messages, no documentation, no meetings needed
38
+ ```
39
+
40
+ ### Real-time Discussion
41
+
42
+ When AIs need to align on something, they discuss directly:
43
+
44
+ ```
45
+ You: "Go discuss the API response format with the frontend AI, wait 10 min"
46
+
47
+ Your AI sends a message → teammate gets a desktop notification
48
+ Teammate tells their AI: "Go join the API discussion"
49
+ → Multi-round back-and-forth, fully automatic
50
+ → Conclusion saved to shared memory
51
+ Your AI comes back: "We agreed on paginated JSON, 20 items per page."
52
+ ```
53
+
54
+ You say one sentence. The AIs handle the rest.
55
+
56
+ ### Team Voting
18
57
 
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.
58
+ For important decisions, every human must approve:
20
59
 
21
- **Team Consensus** — Important decisions require all humans to vote. No single person can override the team.
60
+ 1. AI presents options via an interactive form
61
+ 2. Each team member's AI asks their human to vote
62
+ 3. All approve -> decision becomes protected (locked)
63
+ 4. Anyone rejects -> discussion restarts with their feedback
22
64
 
23
65
  ---
24
66
 
@@ -27,156 +69,100 @@ That's it. Your AI now shares knowledge with every other AI on the team.
27
69
  ### 1. Initialize (30 seconds)
28
70
 
29
71
  ```bash
30
- npx agenthub init
72
+ cd your-project
73
+ npx agentmesh-ai init
31
74
  ```
32
75
 
33
- Answers a few questions, creates `.agenthub/` in your project.
76
+ You'll get a **Team ID** like `team-a1b2c3d4`. This is your team's cloud identifier.
34
77
 
35
- ### 2. Configure your AI tool (1 minute)
78
+ ### 2. Configure your AI tool
36
79
 
37
80
  ```bash
38
- npx agenthub setup
81
+ npx agentmesh-ai setup
39
82
  ```
40
83
 
41
- Auto-detects Claude Code, Cursor, Windsurf and writes their MCP config.
84
+ Auto-detects Claude Code, Cursor, Windsurf and configures MCP.
42
85
 
43
86
  ### 3. Invite teammates
44
87
 
45
- ```
46
- "Clone the repo and run: npx agenthub setup"
88
+ Send them your Team ID. They run:
89
+
90
+ ```bash
91
+ npx agentmesh-ai join team-a1b2c3d4
47
92
  ```
48
93
 
49
- No accounts, no servers, no extra software.
94
+ One command — creates config, registers in cloud, configures MCP. Done.
50
95
 
51
96
  ### 4. Start coding
52
97
 
53
98
  Your AI now automatically:
54
- - Reads shared memory before starting work
99
+ - Reads shared memory when starting a new task
55
100
  - Records important knowledge after completing work
56
- - Alerts you when there's a discussion or vote waiting
101
+ - Can discuss with other AIs when you ask it to
57
102
 
58
103
  ---
59
104
 
60
105
  ## How It Works
61
106
 
62
- ### Shared Memory
107
+ ### Cloud-First Architecture
63
108
 
64
- Each AI writes to its own file. No Git conflicts, ever.
109
+ All data lives in the cloud. No Git sync, no local servers, no port forwarding.
65
110
 
66
111
  ```
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
-
112
+ Your AI (Claude Code) Teammate's AI (Cursor)
113
+ | |
114
+ | AgentMesh Cloud |
115
+ | +-------------------+ |
116
+ +-->| Shared Memory |<-----+ Read/write knowledge
117
+ | | (team_memories) | |
118
+ | +-------------------+ |
119
+ | | Realtime Channel | |
120
+ +-->| (Supabase RT) |<-----+ Instant message push
121
+ +-------------------+
78
122
  ```
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
123
 
93
- shadcn/ui, Indigo primary, 8px radius, 4px spacing
94
- ```
124
+ - **Cloud is the source of truth** — memories and conversations persist in Supabase
125
+ - **Local files are just cache** — for offline fallback, automatically managed
126
+ - **No Git tracking needed** — `.agenthub/` is gitignored by default
127
+ - **No AI API calls** — AgentMesh is a protocol layer, not a model provider
95
128
 
96
129
  ### Three Levels of Knowledge
97
130
 
98
131
  | Status | Meaning | Icon |
99
132
  |--------|---------|------|
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"*
133
+ | `auto` | Routine facts (APIs, models, gotchas) — recorded automatically | (none) |
134
+ | `proposal` | Important decision, needs team discussion | 📋 |
135
+ | `protected` | Team consensus — locked, cannot be overridden | 🔒 |
114
136
 
115
- The AI handles multi-round discussion automatically — you only trigger it once.
116
-
117
- ### Team Voting
137
+ ### Desktop Notifications
118
138
 
119
- For important decisions, every human must approve:
139
+ When someone starts a discussion, teammates get a native desktop notification — no extra app, no extra terminal window. Just tell your AI to join.
120
140
 
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
141
+ If you're busy, tell your AI "tell them to wait" the other side automatically extends the timeout.
125
142
 
126
143
  ---
127
144
 
128
145
  ## Works With Everything
129
146
 
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.
147
+ | Tool | Integration | Status |
148
+ |------|-------------|--------|
149
+ | Claude Code | MCP (native) | Full support |
150
+ | Cursor | MCP (native) | Full support |
151
+ | Windsurf | MCP (native) | Full support |
152
+ | GitHub Copilot | MCP / Instructions | Partial |
153
+ | Any MCP-compatible tool | MCP | Full support |
139
154
 
140
155
  ---
141
156
 
142
157
  ## Use Cases
143
158
 
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
159
+ **Solo Developer** Your AI forgets everything between sessions. With AgentMesh, it reads shared memory and instantly recovers all context.
172
160
 
173
- High-risk content is **blocked**. Medium-risk gets a **warning**.
161
+ **Team Collaboration** Alice builds the backend. Bob starts the frontend — his AI already knows every API, every model, every convention. Zero communication overhead.
174
162
 
175
- ### Human-in-the-Loop
163
+ **AI-First Planning** — Three people start a project. Their AIs discuss tech stack, architecture, conventions. Conclusions become protected memories. Everyone codes in sync.
176
164
 
177
- - Routine knowledge: AI records automatically
178
- - Important proposals: AI asks human first
179
- - Team constraints: requires unanimous vote
165
+ **Handover** Someone leaves the project. Their AI's memory contains every decision, every gotcha, every "don't touch this because..." — automatically accumulated.
180
166
 
181
167
  ---
182
168
 
@@ -184,61 +170,63 @@ High-risk content is **blocked**. Medium-risk gets a **warning**.
184
170
 
185
171
  | Command | Description |
186
172
  |---------|-------------|
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 |
173
+ | `npx agentmesh-ai init` | Initialize project, get a Team ID |
174
+ | `npx agentmesh-ai setup` | Auto-configure MCP for your AI tools |
175
+ | `npx agentmesh-ai join <team-id>` | Join a team (one command does everything) |
176
+ | `npx agentmesh-ai status` | Show cloud connection and memory stats |
177
+ | `npx agentmesh-ai memory` | View/search shared memory |
178
+ | `npx agentmesh-ai memory -s "database"` | Search for specific info |
193
179
 
194
180
  ---
195
181
 
196
- ## MCP Tools (for AI)
182
+ ## MCP Tools (used by AI automatically)
197
183
 
198
184
  | Tool | What It Does |
199
185
  |------|-------------|
200
- | `read_memory` | Read all shared knowledge |
201
- | `write_memory` | Record new knowledge |
186
+ | `read_memory` | Read all shared knowledge from the team |
187
+ | `write_memory` | Record new knowledge to cloud |
202
188
  | `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 |
189
+ | `discuss` | Multi-round team discussion (up to 30 min) |
190
+ | `start_meeting` | Check attendance before discussion |
191
+ | `send_message` | Send a single message |
208
192
  | `get_messages` | Read messages on a topic |
209
193
  | `save_to_memory` | Save discussion conclusion |
194
+ | `escalate_to_human` | Team-wide vote on important decisions |
195
+ | `vote_on_decision` | Cast vote on pending decision |
210
196
  | `list_conversations` | See who's online, what's being discussed |
211
197
  | `list_pending_decisions` | See what needs voting |
212
198
 
213
199
  ---
214
200
 
215
- ## Architecture
201
+ ## Safety
202
+
203
+ ### Secret Scanner
216
204
 
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
- ```
205
+ Before any knowledge is shared, AgentMesh scans for:
206
+ - API keys (OpenAI, AWS, GitHub, Stripe, etc.)
207
+ - Passwords and tokens
208
+ - Private keys and certificates
209
+ - Database connection strings
210
+
211
+ High-risk content is **blocked**. Medium-risk gets a **warning**.
212
+
213
+ ### Human-in-the-Loop
227
214
 
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
215
+ - `auto`AI records routine knowledge without asking
216
+ - `proposal` AI asks human before recording important decisions
217
+ - `protected`requires unanimous team vote to establish
231
218
 
232
219
  ---
233
220
 
234
- ## Protocol Specifications
221
+ ## Configuration
235
222
 
236
- For tool builders and contributors:
223
+ ### Environment Variables
237
224
 
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
225
+ | Variable | Description |
226
+ |----------|-------------|
227
+ | `AGENTHUB_TEAM_ID` | Cloud team identifier (set automatically by setup) |
228
+ | `AGENTHUB_AGENT_ID` | This agent's unique ID (set automatically by setup) |
229
+ | `AGENTHUB_NOTIFY` | Set to `false` to disable desktop notifications |
242
230
 
243
231
  ---
244
232
 
@@ -1 +1 @@
1
- {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"AAaA,wBAAsB,WAAW,kBAwHhC"}
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"AAcA,wBAAsB,WAAW,kBA0IhC"}
@@ -1,14 +1,14 @@
1
1
  /**
2
2
  * agenthub init — Initialize .agenthub/ in the current project.
3
3
  */
4
- import { join } from 'node:path';
5
- import { mkdir } from 'node:fs/promises';
4
+ import { join, basename } from 'node:path';
5
+ import { mkdir, readFile, writeFile } from 'node:fs/promises';
6
6
  import { existsSync } from 'node:fs';
7
7
  import inquirer from 'inquirer';
8
8
  import chalk from 'chalk';
9
9
  import { writeYaml } from '../../utils/yaml.js';
10
- import { isGitRepo } from '../../utils/git.js';
11
- import { generateAgentId } from '../../utils/id.js';
10
+ import { generateAgentId, generateTeamId } from '../../utils/id.js';
11
+ import { cloudWriteMemory } from '../../cloud/supabase-client.js';
12
12
  export async function initCommand() {
13
13
  const cwd = process.cwd();
14
14
  const agentHubDir = join(cwd, '.agenthub');
@@ -25,14 +25,6 @@ export async function initCommand() {
25
25
  return;
26
26
  }
27
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
28
  console.log('');
37
29
  // Ask questions
38
30
  const answers = await inquirer.prompt([
@@ -40,7 +32,7 @@ export async function initCommand() {
40
32
  type: 'input',
41
33
  name: 'project',
42
34
  message: 'Project name?',
43
- default: getDefaultProjectName(cwd),
35
+ default: await getDefaultProjectName(cwd),
44
36
  },
45
37
  {
46
38
  type: 'input',
@@ -76,15 +68,22 @@ export async function initCommand() {
76
68
  },
77
69
  ]);
78
70
  const agentId = generateAgentId(answers.displayName, answers.tool);
71
+ const teamId = generateTeamId();
79
72
  const now = new Date().toISOString();
80
73
  // Create directories
81
74
  await mkdir(join(agentHubDir, 'memory'), { recursive: true });
82
75
  await mkdir(join(agentHubDir, 'conversations'), { recursive: true });
83
- // Create hub.yaml
76
+ // Create .gitignore — everything syncs via cloud, nothing needs Git
77
+ const gitignorePath = join(agentHubDir, '.gitignore');
78
+ if (!existsSync(gitignorePath)) {
79
+ await writeFile(gitignorePath, '# AgentMesh syncs via cloud — nothing needs Git tracking\n*\n', 'utf-8');
80
+ }
81
+ // Create hub.yaml (with cloud team_id)
84
82
  const hub = {
85
83
  project: answers.project,
86
84
  created: now,
87
85
  version: '1.0',
86
+ team_id: teamId,
88
87
  agents: [{
89
88
  id: agentId,
90
89
  display_name: answers.displayName,
@@ -93,6 +92,19 @@ export async function initCommand() {
93
92
  }],
94
93
  };
95
94
  await writeYaml(join(agentHubDir, 'hub.yaml'), hub);
95
+ // Register agent in cloud
96
+ let cloudOk = false;
97
+ try {
98
+ await cloudWriteMemory(teamId, agentId, answers.role, answers.tool, {
99
+ topic: 'Agent Registered',
100
+ content: `${answers.displayName} joined the team using ${answers.tool}.`,
101
+ tags: ['system', 'registration'],
102
+ });
103
+ cloudOk = true;
104
+ }
105
+ catch {
106
+ // Cloud registration failed — will show warning below
107
+ }
96
108
  // Create agent memory file (empty, ready to be written to)
97
109
  const memoryFile = {
98
110
  agent: agentId,
@@ -113,22 +125,29 @@ export async function initCommand() {
113
125
  console.log(chalk.dim(' └── conversations/'));
114
126
  console.log('');
115
127
  console.log(` Your Agent ID: ${chalk.cyan(agentId)}`);
128
+ console.log(` Team ID: ${chalk.cyan(teamId)}`);
129
+ console.log('');
130
+ if (cloudOk) {
131
+ console.log(chalk.green(' ☁️ Cloud sync enabled — memories live in the cloud, no Git needed.'));
132
+ }
133
+ else {
134
+ console.log(chalk.yellow(' ⚠️ Cloud unavailable (check network). Memories saved locally for now.'));
135
+ }
116
136
  console.log('');
117
137
  console.log(chalk.dim(' Next steps:'));
118
138
  console.log(` 1. Run ${chalk.cyan('npx agentmesh-ai 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 agentmesh-ai setup"')}`);
122
- }
139
+ console.log(` 2. Share your Team ID with teammates:`);
140
+ console.log(` ${chalk.cyan(`npx agentmesh-ai join ${teamId}`)}`);
123
141
  console.log('');
124
142
  }
125
- function getDefaultProjectName(cwd) {
143
+ async function getDefaultProjectName(cwd) {
126
144
  try {
127
- const pkg = require(join(cwd, 'package.json'));
128
- return pkg.name || cwd.split(/[\\/]/).pop() || 'my-project';
145
+ const raw = await readFile(join(cwd, 'package.json'), 'utf-8');
146
+ const pkg = JSON.parse(raw);
147
+ return pkg.name || basename(cwd) || 'my-project';
129
148
  }
130
149
  catch {
131
- return cwd.split(/[\\/]/).pop() || 'my-project';
150
+ return basename(cwd) || 'my-project';
132
151
  }
133
152
  }
134
153
  //# sourceMappingURL=init.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"init.js","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function joinCommand(teamId: string): Promise<void>;
2
+ //# sourceMappingURL=join.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"join.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/join.ts"],"names":[],"mappings":"AAmBA,wBAAsB,WAAW,CAAC,MAAM,EAAE,MAAM,iBAoL/C"}