@leejungkiin/awkit 1.1.0 → 1.1.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.
- package/README.md +3 -3
- package/VERSION +1 -1
- package/bin/awf.js +1 -1
- package/bin/awk.js +237 -26
- package/core/AGENTS.md +8 -9
- package/core/GEMINI.md +74 -199
- package/package.json +3 -2
- package/skill-packs/neural-memory/skills/nm-memory-sync/SKILL.md +2 -2
- package/skills/CATALOG.md +3 -2
- package/skills/README.md +109 -0
- package/skills/android-re-analyzer/SKILL.md +238 -0
- package/skills/android-re-analyzer/references/api-extraction-patterns.md +119 -0
- package/skills/android-re-analyzer/references/call-flow-analysis.md +176 -0
- package/skills/android-re-analyzer/references/fernflower-usage.md +115 -0
- package/skills/android-re-analyzer/references/jadx-usage.md +116 -0
- package/skills/android-re-analyzer/references/setup-guide.md +221 -0
- package/skills/android-re-analyzer/scripts/check-deps.sh +129 -0
- package/skills/android-re-analyzer/scripts/decompile.sh +375 -0
- package/skills/android-re-analyzer/scripts/find-api-calls.sh +118 -0
- package/skills/android-re-analyzer/scripts/install-dep.sh +448 -0
- package/skills/awf-session-restore/SKILL.md +108 -184
- package/skills/beads-manager/SKILL.md +2 -2
- package/skills/brainstorm-agent/SKILL.md +47 -2
- package/skills/gemini-conductor/SKILL.md +234 -0
- package/skills/memory-sync/SKILL.md +29 -1
- package/skills/nm-memory-sync/SKILL.md +2 -2
- package/skills/orchestrator/SKILL.md +29 -155
- package/skills/skills/nm-memory-sync/SKILL.md +2 -2
- package/skills/smali-to-kotlin/SKILL.md +1 -1
- package/skills/smali-to-swift/SKILL.md +1 -1
- package/skills/swiftui-pro/SKILL.md +108 -0
- package/skills/swiftui-pro/agents/openai.yaml +10 -0
- package/skills/swiftui-pro/assets/swiftui-pro-icon.png +0 -0
- package/skills/swiftui-pro/assets/swiftui-pro-icon.svg +29 -0
- package/skills/swiftui-pro/references/accessibility.md +13 -0
- package/skills/swiftui-pro/references/api.md +39 -0
- package/skills/swiftui-pro/references/data.md +43 -0
- package/skills/swiftui-pro/references/design.md +31 -0
- package/skills/swiftui-pro/references/hygiene.md +9 -0
- package/skills/swiftui-pro/references/navigation.md +14 -0
- package/skills/swiftui-pro/references/performance.md +46 -0
- package/skills/swiftui-pro/references/swift.md +56 -0
- package/skills/swiftui-pro/references/views.md +35 -0
- package/skills/symphony-enforcer/SKILL.md +362 -0
- package/skills/symphony-orchestrator/SKILL.md +301 -0
- package/skills/telegram-notify/SKILL.md +57 -0
- package/symphony/LICENSE +21 -0
- package/symphony/README.md +178 -0
- package/symphony/app/api/agents/route.js +152 -0
- package/symphony/app/api/events/route.js +22 -0
- package/symphony/app/api/knowledge/route.js +253 -0
- package/symphony/app/api/locks/route.js +29 -0
- package/symphony/app/api/notes/route.js +125 -0
- package/symphony/app/api/preflight/route.js +23 -0
- package/symphony/app/api/projects/route.js +116 -0
- package/symphony/app/api/roles/route.js +134 -0
- package/symphony/app/api/skills/route.js +82 -0
- package/symphony/app/api/status/route.js +18 -0
- package/symphony/app/api/tasks/route.js +157 -0
- package/symphony/app/api/workflows/route.js +61 -0
- package/symphony/app/api/workspaces/route.js +15 -0
- package/symphony/app/globals.css +2605 -0
- package/symphony/app/layout.js +20 -0
- package/symphony/app/page.js +2122 -0
- package/symphony/cli/index.js +1060 -0
- package/symphony/core/agent-manager.js +357 -0
- package/symphony/core/context-bus.js +100 -0
- package/symphony/core/db.js +223 -0
- package/symphony/core/file-lock-manager.js +154 -0
- package/symphony/core/merge-pipeline.js +234 -0
- package/symphony/core/orchestrator.js +236 -0
- package/symphony/core/task-manager.js +335 -0
- package/symphony/core/workspace-manager.js +168 -0
- package/symphony/jsconfig.json +7 -0
- package/symphony/lib/core.mjs +1034 -0
- package/symphony/mcp/index.js +29 -0
- package/symphony/mcp/server.js +110 -0
- package/symphony/mcp/tools/context.js +80 -0
- package/symphony/mcp/tools/locks.js +99 -0
- package/symphony/mcp/tools/status.js +82 -0
- package/symphony/mcp/tools/tasks.js +216 -0
- package/symphony/mcp/tools/workspace.js +143 -0
- package/symphony/next.config.mjs +7 -0
- package/symphony/package.json +53 -0
- package/symphony/scripts/postinstall.js +49 -0
- package/symphony/symphony.config.js +41 -0
- package/templates/conductor-tracks.md +38 -0
- package/templates/specs/PROJECT.md +50 -0
- package/templates/specs/ROADMAP.md +79 -0
- package/templates/specs/TECH-SPEC.md +81 -0
- package/templates/specs/task-spec-template.xml +65 -0
- package/templates/workflow_dual_mode_template.md +5 -5
- package/workflows/_uncategorized/AGENTS.md +38 -0
- package/workflows/_uncategorized/decompile.md +67 -0
- package/workflows/_uncategorized/skill-health.md +7 -7
- package/workflows/ads/ads-audit.md +5 -5
- package/workflows/ads/ads-optimize.md +10 -10
- package/workflows/ads/adsExpert.md +7 -7
- package/workflows/conductor.md +97 -0
- package/workflows/context/auto-implement.md +4 -4
- package/workflows/context/codebase-sync.md +19 -8
- package/workflows/context/next.md +27 -27
- package/workflows/context/user-intent-analysis-workflow.md +4 -4
- package/workflows/expert/codeExpert.md +28 -31
- package/workflows/expert/debugExpert.md +11 -11
- package/workflows/expert/planExpert.md +21 -36
- package/workflows/git/smart-git-ops.md +49 -6
- package/workflows/lifecycle/debug.md +7 -7
- package/workflows/lifecycle/deploy.md +10 -10
- package/workflows/lifecycle/init.md +103 -91
- package/workflows/lifecycle/master-code-workflow.md +3 -3
- package/workflows/lifecycle/plan.md +19 -21
- package/workflows/quality/audit.md +1 -1
- package/workflows/quality/project-audit.md +1 -1
- package/workflows/roles/vibe-coding-master-workflow.md +2 -2
- package/workflows/smart-git-ops.md +146 -0
- package/workflows/ui/app-screen-analyzer.md +4 -4
- package/workflows/ui/create-feature.md +8 -8
- package/workflows/ui/create-spec-architect.md +11 -11
|
@@ -0,0 +1,301 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: symphony-orchestrator
|
|
3
|
+
description: |
|
|
4
|
+
Symphony setup, health check, and auto-start skill. Ensures Symphony server
|
|
5
|
+
is running before any task management. Handles installation, global CLI setup,
|
|
6
|
+
project registration, and server lifecycle management.
|
|
7
|
+
metadata:
|
|
8
|
+
stage: core
|
|
9
|
+
version: "3.0"
|
|
10
|
+
replaces: null
|
|
11
|
+
requires: awkit-symphony (npm i -g awkit-symphony)
|
|
12
|
+
tags: [symphony, setup, server, orchestration, core, preflight, multi-project, agent]
|
|
13
|
+
agent: Symphony Conductor
|
|
14
|
+
allowed-tools:
|
|
15
|
+
- run_command
|
|
16
|
+
- read_url_content
|
|
17
|
+
- view_file
|
|
18
|
+
trigger: always
|
|
19
|
+
invocation-type: auto
|
|
20
|
+
priority: 0
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
# Symphony Orchestrator Skill — Multi-Project & Agent Orchestration
|
|
24
|
+
|
|
25
|
+
> **Purpose:** Đảm bảo Symphony server luôn sẵn sàng cho mọi session.
|
|
26
|
+
> **Key Feature:** Single preflight call thay thế 4+ API calls.
|
|
27
|
+
> **Gate Enforcement:** User PHẢI thấy checklist block, nếu không = vi phạm.
|
|
28
|
+
|
|
29
|
+
---
|
|
30
|
+
|
|
31
|
+
## ⚠️ Core Principle: Multi-Project First
|
|
32
|
+
|
|
33
|
+
```
|
|
34
|
+
QUAN TRỌNG:
|
|
35
|
+
- Symphony quản lý tasks từ NHIỀU project cùng lúc
|
|
36
|
+
- "Active project" trên UI CHỈ ảnh hưởng hiển thị dashboard
|
|
37
|
+
- "Active project" KHÔNG filter queries API/CLI
|
|
38
|
+
- CLI/API mặc định trả về TẤT CẢ tasks, dùng --project/-P để filter
|
|
39
|
+
- AI agents làm việc cross-project — không bị giới hạn bởi active project
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
**Database:** Centralized tại `~/.gemini/antigravity/symphony/symphony.db`
|
|
43
|
+
- CLI (`core/db.js`) và API (`lib/core.mjs`) dùng CHUNG 1 database
|
|
44
|
+
- Tất cả tasks từ mọi project nằm trong 1 DB duy nhất
|
|
45
|
+
|
|
46
|
+
---
|
|
47
|
+
|
|
48
|
+
## Installation (One-Time Setup)
|
|
49
|
+
|
|
50
|
+
### Bước 1: Install Global
|
|
51
|
+
|
|
52
|
+
```bash
|
|
53
|
+
cd ~/Dev/NodeJS/main-awf/symphony
|
|
54
|
+
npm link
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
> Hoặc khi publish npm:
|
|
58
|
+
> ```bash
|
|
59
|
+
> npm i -g awkit-symphony
|
|
60
|
+
> ```
|
|
61
|
+
|
|
62
|
+
### Bước 2: Verify
|
|
63
|
+
|
|
64
|
+
```bash
|
|
65
|
+
symphony --version # Expected: 0.1.0+
|
|
66
|
+
symphony --help # Shows: preflight, task, agent, dispatch, next, etc.
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
### Bước 3: Build + Start
|
|
70
|
+
|
|
71
|
+
```bash
|
|
72
|
+
symphony build # Production build (~5-10s)
|
|
73
|
+
symphony start -p 3100 # Start server
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
### Troubleshooting
|
|
77
|
+
|
|
78
|
+
| Lỗi | Giải pháp |
|
|
79
|
+
|------|-----------|
|
|
80
|
+
| `command not found: symphony` | `source ~/.nvm/nvm.sh && nvm use default` |
|
|
81
|
+
| `better-sqlite3 architecture mismatch` | `npm rebuild better-sqlite3` |
|
|
82
|
+
| `EADDRINUSE port 3100` | Đã có instance → dùng port khác: `-p 3101` |
|
|
83
|
+
| `.next/ not found` | Chạy `symphony build` thủ công |
|
|
84
|
+
|
|
85
|
+
---
|
|
86
|
+
|
|
87
|
+
## 🚦 Preflight Gate Protocol (Gate 0) — BẮT BUỘC
|
|
88
|
+
|
|
89
|
+
Mỗi session, AI PHẢI thực hiện **1 call duy nhất**:
|
|
90
|
+
|
|
91
|
+
### Via API (khi server đang chạy):
|
|
92
|
+
|
|
93
|
+
```bash
|
|
94
|
+
curl -s http://localhost:3100/api/preflight
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
### Via CLI:
|
|
98
|
+
|
|
99
|
+
```bash
|
|
100
|
+
symphony preflight # Pretty output
|
|
101
|
+
symphony preflight --json # JSON cho AI parsing
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
### Checklist Output (AI PHẢI hiển thị):
|
|
105
|
+
|
|
106
|
+
```
|
|
107
|
+
🚦 SYMPHONY PREFLIGHT
|
|
108
|
+
──────────────────────────────────────────────────
|
|
109
|
+
Server: ✅ PASS
|
|
110
|
+
Project: ✅ PASS — 🧘 Giác Ngộ
|
|
111
|
+
Tasks: 🔵 HAS_ACTIVE
|
|
112
|
+
Overall: ✅ PASS
|
|
113
|
+
|
|
114
|
+
📿 In Progress: #sym-X1Y2 — Theme System (P1)
|
|
115
|
+
📋 Ready: #sym-A3B4 — Dark Mode (P2)
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
> ⚠️ **Nếu không hiển thị checklist block này = VI PHẠM GATE**
|
|
119
|
+
|
|
120
|
+
---
|
|
121
|
+
|
|
122
|
+
## Auto-Start Protocol
|
|
123
|
+
|
|
124
|
+
```
|
|
125
|
+
1. curl -s http://localhost:3100/api/preflight
|
|
126
|
+
2. Nếu FAIL (connection refused):
|
|
127
|
+
→ symphony start -p 3100 &
|
|
128
|
+
→ Đợi 3-5 giây
|
|
129
|
+
→ Retry preflight
|
|
130
|
+
3. Nếu vẫn FAIL:
|
|
131
|
+
→ "⚠️ Symphony không khởi động được"
|
|
132
|
+
→ Hướng dẫn: cd ~/Dev/NodeJS/main-awf/symphony && npm link && symphony start
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
---
|
|
136
|
+
|
|
137
|
+
## CLI Commands — Full Reference
|
|
138
|
+
|
|
139
|
+
### Task Management
|
|
140
|
+
|
|
141
|
+
```bash
|
|
142
|
+
# Listing (cross-project by default)
|
|
143
|
+
symphony task list # ALL tasks, mọi project
|
|
144
|
+
symphony task list -P giacngo # Chỉ project giacngo
|
|
145
|
+
symphony task list -s ready # Filter by status
|
|
146
|
+
symphony task list -P awkit -s done # Combine filters
|
|
147
|
+
|
|
148
|
+
# CRUD
|
|
149
|
+
symphony task create "title" # Create task
|
|
150
|
+
symphony task show <id> # Show details
|
|
151
|
+
|
|
152
|
+
# Lifecycle
|
|
153
|
+
symphony task claim <id> # ready → claimed
|
|
154
|
+
symphony task start <id> # → in_progress (auto-claim)
|
|
155
|
+
symphony task done <id> -m "summary" # → done (auto-claim nếu cần)
|
|
156
|
+
symphony task approve <id> # draft → ready
|
|
157
|
+
symphony task reopen <id> # done → ready
|
|
158
|
+
symphony task abandon <id> # → ready (reset agent)
|
|
159
|
+
symphony task delete <id> # Xóa (draft/ready only)
|
|
160
|
+
symphony task update <id> # Sửa title/priority/desc
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
### Agent Management & AI Orchestration
|
|
164
|
+
|
|
165
|
+
```bash
|
|
166
|
+
# Agents
|
|
167
|
+
symphony agent list # Tất cả agents + status
|
|
168
|
+
symphony agent register <id> -n "name" -s "code,debug" # Đăng ký
|
|
169
|
+
symphony agent show <id> # Chi tiết
|
|
170
|
+
symphony agent update <id> -s "new,specs" # Sửa profile
|
|
171
|
+
symphony agent remove <id> # Xóa (idle only)
|
|
172
|
+
symphony agent assign <agent-id> <task-id> # Gán task → agent
|
|
173
|
+
symphony agent idle <id> # Mark idle
|
|
174
|
+
|
|
175
|
+
# Orchestration Shortcuts
|
|
176
|
+
symphony dispatch <task-id> # 🎯 Auto-pick idle agent phù hợp
|
|
177
|
+
symphony dispatch <task-id> -a <agent> # 🎯 Dispatch cho agent chỉ định
|
|
178
|
+
symphony next # 📋 Gợi ý task tiếp theo
|
|
179
|
+
symphony next -n 5 # 📋 Top 5 suggestions
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
### Server & System
|
|
183
|
+
|
|
184
|
+
```bash
|
|
185
|
+
symphony status # Full system status
|
|
186
|
+
symphony preflight # Gate check (BẮT BUỘC)
|
|
187
|
+
symphony start [-p PORT] # Production mode
|
|
188
|
+
symphony dev [-p PORT] # Dev mode
|
|
189
|
+
symphony build # Build dashboard
|
|
190
|
+
symphony dashboard # Open browser
|
|
191
|
+
```
|
|
192
|
+
|
|
193
|
+
---
|
|
194
|
+
|
|
195
|
+
## Multi-Project Workflow
|
|
196
|
+
|
|
197
|
+
### Scenario: AI làm việc trên 2 project cùng lúc
|
|
198
|
+
|
|
199
|
+
```bash
|
|
200
|
+
# 1. Xem tất cả tasks cross-project
|
|
201
|
+
symphony task list
|
|
202
|
+
# → Hiển thị tasks từ cả giacngo, awkit, filmcam...
|
|
203
|
+
|
|
204
|
+
# 2. Filter khi cần focus 1 project
|
|
205
|
+
symphony task list -P giacngo -s ready
|
|
206
|
+
|
|
207
|
+
# 3. Claim task từ project bất kỳ
|
|
208
|
+
symphony task start sym-W0jcDtRo # giacngo task
|
|
209
|
+
symphony task start sym-VKTqZkyF # awkit task — vẫn hoạt động
|
|
210
|
+
|
|
211
|
+
# 4. Complete không cần switch project
|
|
212
|
+
symphony task done sym-W0jcDtRo -m "Theme system done"
|
|
213
|
+
|
|
214
|
+
# 5. Dispatch task cho agent cụ thể
|
|
215
|
+
symphony dispatch sym-A3B4 -a agent-frontend
|
|
216
|
+
```
|
|
217
|
+
|
|
218
|
+
### AI Agent Orchestration Flow
|
|
219
|
+
|
|
220
|
+
```
|
|
221
|
+
1. AI registers as agent:
|
|
222
|
+
symphony agent register antigravity-main -n "Antigravity" -s "code,debug,plan"
|
|
223
|
+
|
|
224
|
+
2. AI picks next task from ANY project:
|
|
225
|
+
symphony next
|
|
226
|
+
→ Shows ready tasks across all projects with project column
|
|
227
|
+
|
|
228
|
+
3. AI claims and starts:
|
|
229
|
+
symphony task start <task-id>
|
|
230
|
+
|
|
231
|
+
4. AI completes:
|
|
232
|
+
symphony task done <task-id> -m "summary"
|
|
233
|
+
|
|
234
|
+
5. AI checks next:
|
|
235
|
+
symphony next
|
|
236
|
+
```
|
|
237
|
+
|
|
238
|
+
### Concurrency Control
|
|
239
|
+
|
|
240
|
+
```bash
|
|
241
|
+
# Max 3 working agents (symphony.config.js → maxAgents: 3)
|
|
242
|
+
# Dispatch will fail if all slots occupied:
|
|
243
|
+
# "❌ No available agent slots"
|
|
244
|
+
# → Free a slot: symphony agent idle <agent-id>
|
|
245
|
+
```
|
|
246
|
+
|
|
247
|
+
---
|
|
248
|
+
|
|
249
|
+
## API Endpoints
|
|
250
|
+
|
|
251
|
+
| Method | Endpoint | Description |
|
|
252
|
+
|--------|----------|-------------|
|
|
253
|
+
| **GET** | **`/api/preflight`** | **🚦 Single-call gate check (BẮT BUỘC)** |
|
|
254
|
+
| GET | `/api/status` | Full system status |
|
|
255
|
+
| GET | `/api/tasks` | List tasks (?status=, ?project=) |
|
|
256
|
+
| POST | `/api/tasks` | Create task |
|
|
257
|
+
| PATCH | `/api/tasks` | Actions: claim, complete, abandon, approve, reopen |
|
|
258
|
+
| DELETE | `/api/tasks?id=` | Delete task |
|
|
259
|
+
| GET | `/api/projects` | List projects (?stats=true) |
|
|
260
|
+
| POST | `/api/projects` | Register project |
|
|
261
|
+
| PATCH | `/api/projects` | Activate project (UI only) |
|
|
262
|
+
| GET | `/api/agents` | List agents |
|
|
263
|
+
| POST | `/api/agents` | Register agent |
|
|
264
|
+
| PATCH | `/api/agents` | Update profile / assign task |
|
|
265
|
+
| DELETE | `/api/agents` | Remove agent |
|
|
266
|
+
|
|
267
|
+
---
|
|
268
|
+
|
|
269
|
+
## Integration with GEMINI.md Gates
|
|
270
|
+
|
|
271
|
+
| Gate | Protocol |
|
|
272
|
+
|------|----------|
|
|
273
|
+
| **Gate 0** | `curl /api/preflight` → checklist block → NeuralMemory warm-up |
|
|
274
|
+
| Gate 0.5 | Check `preflight.projects` → auto-register if missing → switch brain |
|
|
275
|
+
| Gate 1 | `symphony task list -s in_progress` → claim/create task (cross-project) |
|
|
276
|
+
| Gate 2 | `symphony task done <id> -m "..."` → `symphony next` → suggest |
|
|
277
|
+
| Gate 3 | `symphony task list -s in_progress` → block deploy if any |
|
|
278
|
+
|
|
279
|
+
---
|
|
280
|
+
|
|
281
|
+
## Database Location
|
|
282
|
+
|
|
283
|
+
```
|
|
284
|
+
~/.gemini/antigravity/symphony/symphony.db # Centralized (all projects share 1 DB)
|
|
285
|
+
```
|
|
286
|
+
|
|
287
|
+
> ⚠️ CLI và API dùng CHUNG database này.
|
|
288
|
+
> Active project selection trên dashboard KHÔNG ảnh hưởng queries.
|
|
289
|
+
|
|
290
|
+
---
|
|
291
|
+
|
|
292
|
+
## Learnings
|
|
293
|
+
|
|
294
|
+
- `npm link` requires NVM PATH — user may need `source ~/.nvm/nvm.sh`
|
|
295
|
+
- `better-sqlite3` is native module — may need `npm rebuild` after arch changes
|
|
296
|
+
- Production server ~170ms vs ~3s for dev — always prefer `symphony start`
|
|
297
|
+
- Preflight replaces 4+ API calls with 1 — much harder for AI to skip
|
|
298
|
+
- Preflight checklist block acts as visual enforcement — user sees immediately if skipped
|
|
299
|
+
- Active project is UI-only — NEVER use it to scope CLI/API queries
|
|
300
|
+
- CLI and API share centralized DB at `~/.gemini/antigravity/symphony/symphony.db`
|
|
301
|
+
- Multi-project work is default — tasks from all projects visible simultaneously
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: telegram-notify
|
|
3
|
+
description: Send Telegram notifications via AWKit CLI (Bot API). Use when tasks complete, deploys finish, or user requests Telegram alerts.
|
|
4
|
+
triggers:
|
|
5
|
+
- keywords: ["telegram", "tg", "notify", "gửi telegram", "báo telegram", "thông báo"]
|
|
6
|
+
- events: ["deploy_complete", "task_complete", "user_request"]
|
|
7
|
+
priority: low
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Telegram Notify Skill
|
|
11
|
+
|
|
12
|
+
Send messages to Telegram groups/topics via `awkit tg` CLI command (Bot API, zero MCP needed).
|
|
13
|
+
|
|
14
|
+
## When to Use
|
|
15
|
+
|
|
16
|
+
- User explicitly asks to send a Telegram message
|
|
17
|
+
- After deploy/release completion (if user has configured notifications)
|
|
18
|
+
- Task completion summaries when user requests
|
|
19
|
+
|
|
20
|
+
## Prerequisites
|
|
21
|
+
|
|
22
|
+
User must have run `awkit tg setup` first. If not configured, guide them:
|
|
23
|
+
|
|
24
|
+
```bash
|
|
25
|
+
awkit tg setup
|
|
26
|
+
# Prompts: Bot Token → Chat ID → Topic ID (optional)
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
## Commands
|
|
30
|
+
|
|
31
|
+
```bash
|
|
32
|
+
# Send plain text
|
|
33
|
+
awkit tg send "message here"
|
|
34
|
+
|
|
35
|
+
# Send to specific chat
|
|
36
|
+
awkit tg send --chat -100xxx "message"
|
|
37
|
+
|
|
38
|
+
# Send to specific forum topic
|
|
39
|
+
awkit tg send --topic 123 "message"
|
|
40
|
+
|
|
41
|
+
# Markdown formatting
|
|
42
|
+
awkit tg send --parse-mode md "**bold** _italic_ `code`"
|
|
43
|
+
|
|
44
|
+
# HTML formatting
|
|
45
|
+
awkit tg send --parse-mode html "<b>bold</b> <i>italic</i>"
|
|
46
|
+
|
|
47
|
+
# Combine flags
|
|
48
|
+
awkit tg send --chat -100xxx --topic 456 --parse-mode md "**Done!**"
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
## AI Usage Rules
|
|
52
|
+
|
|
53
|
+
1. **NEVER send without user consent** — always confirm before sending
|
|
54
|
+
2. **Keep messages concise** — summarize, don't dump full logs
|
|
55
|
+
3. **Use Markdown** for formatted messages (`--parse-mode md`)
|
|
56
|
+
4. **Config location**: `~/.gemini/antigravity/.tg_config.json`
|
|
57
|
+
5. If `awkit tg send` returns error about config, tell user to run `awkit tg setup`
|
package/symphony/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 AWKit
|
|
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.
|
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
# 🎼 AWKit Symphony
|
|
2
|
+
|
|
3
|
+
> Multi-Agent Orchestration for AI Coding Assistants
|
|
4
|
+
|
|
5
|
+
Symphony coordinates multiple AI agents working on the same codebase — managing tasks, preventing file conflicts, and providing real-time visibility through a dashboard.
|
|
6
|
+
|
|
7
|
+
## ✨ Features
|
|
8
|
+
|
|
9
|
+
| Feature | Description |
|
|
10
|
+
|---------|-------------|
|
|
11
|
+
| **Task Management** | Create, assign, track tasks with priority & acceptance criteria |
|
|
12
|
+
| **Git Isolation** | Auto worktree/clone per task — agents work on separate branches |
|
|
13
|
+
| **File Locking** | Pessimistic locking prevents two agents from editing the same file |
|
|
14
|
+
| **Merge Pipeline** | Auto-rebase + fast-forward merge when tasks complete |
|
|
15
|
+
| **MCP Server** | 14 tools for IDE integration via Model Context Protocol |
|
|
16
|
+
| **Dashboard** | Real-time Kanban board, agent status, events feed |
|
|
17
|
+
| **Context Bus** | Event pub/sub — agents notify each other of changes |
|
|
18
|
+
|
|
19
|
+
## 🚀 Quick Start
|
|
20
|
+
|
|
21
|
+
```bash
|
|
22
|
+
# Install
|
|
23
|
+
cd symphony
|
|
24
|
+
npm install
|
|
25
|
+
|
|
26
|
+
# Start dashboard (port 3100)
|
|
27
|
+
npm run dev
|
|
28
|
+
|
|
29
|
+
# Or use CLI
|
|
30
|
+
node cli/index.js status
|
|
31
|
+
node cli/index.js task list
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
## 📋 CLI Commands
|
|
35
|
+
|
|
36
|
+
```bash
|
|
37
|
+
# System
|
|
38
|
+
symphony status # Show system status
|
|
39
|
+
symphony start # Start dashboard server
|
|
40
|
+
symphony dashboard # Open dashboard in browser
|
|
41
|
+
|
|
42
|
+
# Tasks
|
|
43
|
+
symphony task list [-s ready] # List tasks (filter by status)
|
|
44
|
+
symphony task create "Feature X" -p 1 # Create task (priority 1-3)
|
|
45
|
+
symphony task show <id> # Show task details
|
|
46
|
+
|
|
47
|
+
# Workspaces
|
|
48
|
+
symphony workspace list # List active workspaces
|
|
49
|
+
symphony workspace create <task-id> # Create workspace for task
|
|
50
|
+
symphony workspace merge <task-id> # Auto-merge completed task
|
|
51
|
+
symphony workspace clean # Remove merged workspaces
|
|
52
|
+
|
|
53
|
+
# File Locks
|
|
54
|
+
symphony lock list # Show active locks
|
|
55
|
+
symphony lock release <file> # Force-release stuck lock
|
|
56
|
+
|
|
57
|
+
# MCP Server
|
|
58
|
+
symphony mcp-serve [-n "Agent Name"] # Start MCP server (stdio)
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
## 🔌 MCP Integration
|
|
62
|
+
|
|
63
|
+
Add to your IDE's MCP config:
|
|
64
|
+
|
|
65
|
+
```json
|
|
66
|
+
{
|
|
67
|
+
"mcpServers": {
|
|
68
|
+
"symphony": {
|
|
69
|
+
"command": "node",
|
|
70
|
+
"args": ["/path/to/symphony/mcp/server.js"],
|
|
71
|
+
"env": {
|
|
72
|
+
"SYMPHONY_AGENT_NAME": "my-agent"
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
### Available MCP Tools (14)
|
|
80
|
+
|
|
81
|
+
| Tool | Description |
|
|
82
|
+
|------|-------------|
|
|
83
|
+
| `symphony_available_tasks` | List available tasks |
|
|
84
|
+
| `symphony_claim_task` | Claim a task (get workspace + branch) |
|
|
85
|
+
| `symphony_report_progress` | Report progress (0-100%) |
|
|
86
|
+
| `symphony_complete_task` | Complete task + trigger merge |
|
|
87
|
+
| `symphony_abandon_task` | Abandon a task |
|
|
88
|
+
| `symphony_check_files` | Check file lock status |
|
|
89
|
+
| `symphony_lock_files` | Lock files for editing |
|
|
90
|
+
| `symphony_unlock_files` | Release file locks |
|
|
91
|
+
| `symphony_broadcast` | Broadcast event to other agents |
|
|
92
|
+
| `symphony_events` | Query context bus events |
|
|
93
|
+
| `symphony_status` | Get system status |
|
|
94
|
+
| `symphony_create_task` | Create a new task |
|
|
95
|
+
| `symphony_workspace_status` | Get workspace info + diff stats |
|
|
96
|
+
| `symphony_merge_task` | Run auto-merge pipeline |
|
|
97
|
+
|
|
98
|
+
## 🏗️ Architecture
|
|
99
|
+
|
|
100
|
+
```
|
|
101
|
+
symphony/
|
|
102
|
+
├── core/ # Engine
|
|
103
|
+
│ ├── db.js # SQLite (WAL mode)
|
|
104
|
+
│ ├── task-manager.js # Task CRUD + state machine
|
|
105
|
+
│ ├── workspace-manager.js # Git worktree lifecycle
|
|
106
|
+
│ ├── merge-pipeline.js # Auto-rebase + merge
|
|
107
|
+
│ ├── file-lock-manager.js # Pessimistic file locking
|
|
108
|
+
│ ├── context-bus.js # Event pub/sub
|
|
109
|
+
│ └── orchestrator.js # Agent dispatch + state
|
|
110
|
+
├── mcp/ # MCP Server
|
|
111
|
+
│ ├── server.js # stdio transport
|
|
112
|
+
│ ├── index.js # Tool registry (14 tools)
|
|
113
|
+
│ └── tools/ # Tool implementations
|
|
114
|
+
├── cli/ # CLI
|
|
115
|
+
│ └── index.js # Commander.js commands
|
|
116
|
+
├── app/ # Dashboard (Next.js)
|
|
117
|
+
│ ├── page.js # Kanban + status + events
|
|
118
|
+
│ └── api/ # REST API routes
|
|
119
|
+
└── lib/
|
|
120
|
+
└── core.mjs # ESM bridge for Turbopack
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
## ⚙️ Configuration
|
|
124
|
+
|
|
125
|
+
Edit `symphony.config.js`:
|
|
126
|
+
|
|
127
|
+
```js
|
|
128
|
+
module.exports = {
|
|
129
|
+
port: 3100,
|
|
130
|
+
maxAgents: 3,
|
|
131
|
+
workspace: {
|
|
132
|
+
type: 'hybrid', // 'worktree' | 'clone' | 'hybrid'
|
|
133
|
+
cloneThreshold: 30, // files > 30 → full clone
|
|
134
|
+
},
|
|
135
|
+
git: {
|
|
136
|
+
autoMerge: true,
|
|
137
|
+
targetBranch: 'main',
|
|
138
|
+
branchPrefix: 'symphony/',
|
|
139
|
+
},
|
|
140
|
+
locks: {
|
|
141
|
+
strategy: 'pessimistic',
|
|
142
|
+
autoRelease: 3600, // seconds
|
|
143
|
+
},
|
|
144
|
+
};
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
## 📊 Dashboard
|
|
148
|
+
|
|
149
|
+
The dashboard runs on `http://localhost:3100` and provides:
|
|
150
|
+
|
|
151
|
+
- **Kanban Board** — Tasks by status (Ready → In Progress → Review → Done)
|
|
152
|
+
- **Agent Panel** — Connected agents with live status
|
|
153
|
+
- **Events Feed** — Real-time context bus events
|
|
154
|
+
- **Lock Panel** — Active file locks with force-release
|
|
155
|
+
- **Stats Bar** — Task counts and system health
|
|
156
|
+
|
|
157
|
+
## 🔄 Task Lifecycle
|
|
158
|
+
|
|
159
|
+
```
|
|
160
|
+
Ready → Claimed → In Progress → Review → Done
|
|
161
|
+
│ │
|
|
162
|
+
└─── Abandoned ◀────────────────────────┘
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
1. **Create** task via CLI or dashboard
|
|
166
|
+
2. **Agent claims** via MCP → gets isolated workspace + branch
|
|
167
|
+
3. **Agent works** → reports progress, locks files, broadcasts events
|
|
168
|
+
4. **Agent completes** → triggers auto-merge pipeline
|
|
169
|
+
5. **Merge** → rebase onto main, fast-forward, cleanup workspace
|
|
170
|
+
|
|
171
|
+
## 📦 Tech Stack
|
|
172
|
+
|
|
173
|
+
- **Runtime:** Node.js
|
|
174
|
+
- **Database:** SQLite (via better-sqlite3, WAL mode)
|
|
175
|
+
- **Dashboard:** Next.js 16 + React 19
|
|
176
|
+
- **MCP:** @modelcontextprotocol/sdk
|
|
177
|
+
- **CLI:** Commander.js
|
|
178
|
+
- **Git:** Native git commands (worktree, rebase, merge)
|