speexor 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 (48) hide show
  1. package/API-REFERENCE.md +201 -0
  2. package/ARCHITECTURE.md +548 -0
  3. package/CHANGELOG.md +52 -0
  4. package/CODE-OF-CONDUCT.md +83 -0
  5. package/CONTRIBUTING.md +98 -0
  6. package/FAQ.md +105 -0
  7. package/LICENSE.md +21 -0
  8. package/PUBLISH.md +77 -0
  9. package/README.md +179 -0
  10. package/REFACTOR-LOG.md +40 -0
  11. package/ROADMAP.md +78 -0
  12. package/SECURITY.md +79 -0
  13. package/SUMMARY.md +46 -0
  14. package/TESTING.md +140 -0
  15. package/dist/agent-5D3BVWNK.js +37 -0
  16. package/dist/agent-5D3BVWNK.js.map +1 -0
  17. package/dist/chunk-2F66BZYJ.js +212 -0
  18. package/dist/chunk-2F66BZYJ.js.map +1 -0
  19. package/dist/chunk-5NA2TFPG.js +3 -0
  20. package/dist/chunk-5NA2TFPG.js.map +1 -0
  21. package/dist/chunk-B7WLHC4W.js +666 -0
  22. package/dist/chunk-B7WLHC4W.js.map +1 -0
  23. package/dist/chunk-SXALZEOJ.js +345 -0
  24. package/dist/chunk-SXALZEOJ.js.map +1 -0
  25. package/dist/cli/index.d.ts +1 -0
  26. package/dist/cli/index.js +287 -0
  27. package/dist/cli/index.js.map +1 -0
  28. package/dist/core/index.d.ts +31 -0
  29. package/dist/core/index.js +4 -0
  30. package/dist/core/index.js.map +1 -0
  31. package/dist/index.d.ts +75 -0
  32. package/dist/index.js +205 -0
  33. package/dist/index.js.map +1 -0
  34. package/dist/plugins/index.d.ts +6 -0
  35. package/dist/plugins/index.js +3 -0
  36. package/dist/plugins/index.js.map +1 -0
  37. package/dist/types-0q_okI2g.d.ts +205 -0
  38. package/docs/PRD01.md +264 -0
  39. package/docs/PRD02.md +299 -0
  40. package/docs/PRD03.md +0 -0
  41. package/docs/PRD04.md +349 -0
  42. package/docs/PRD05.md +312 -0
  43. package/docs/SETUP.md +94 -0
  44. package/docs/TROUBLESHOOTING.md +113 -0
  45. package/examples/basic.yaml +61 -0
  46. package/package.json +102 -0
  47. package/schema/config.schema.json +119 -0
  48. package/speexor.config.yaml.example +30 -0
package/docs/PRD02.md ADDED
@@ -0,0 +1,299 @@
1
+ # PRD: Agent Orchestrator — "Speexor" v2
2
+
3
+ **Codename:** Speexor — Autonomous Recursive Agent Fleet
4
+ **Versi:** 2.0 — Pengembangan dari v1
5
+ **Penulis:** Aditya (dengan bantuan Claude)
6
+ **Tanggal:** 30 Juni 2026
7
+ **Status:** Draft
8
+
9
+ > Dokumen ini adalah evolusi dari PRD v1 (`PRD-Agent-Orchestrator.md`). Semua bagian dari v1 (plugin architecture 7 slot, GitHub-first tracker/SCM, CLI dasar, tech stack) **tetap berlaku sebagai fondasi**. PRD ini menambahkan layer baru di atasnya: **Recursive Autonomous Task Decomposition** dan **Realtime Observability Dashboard**, yang menjadi pembeda utama dibanding AO maupun v1 sebelumnya.
10
+
11
+ ---
12
+
13
+ ## 1. Apa yang Berubah dari v1
14
+
15
+ | Aspek | v1 | v2 |
16
+ | -------------- | ------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------- |
17
+ | Unit kerja | 1 task = 1 agent = 1 PR | 1 task = pohon task (task → subtask → subtask...) dikerjakan banyak agent/subagent paralel |
18
+ | Pembuatan task | Manual dari issue tracker | Agent **otomatis memecah** task jadi subtask, dan **membuat task baru** dari hasil kerja subagent (emergent task) |
19
+ | Hierarki agent | Flat (orchestrator → worker) | Berjenjang: Orchestrator → Agent → Subagent → (Sub-subagent jika perlu) |
20
+ | Visibilitas | Dashboard status PR/CI | Dashboard real-time: task tree, agent/subagent yang hidup, skill yang dipakai, command/library/tool yang dieksekusi — semua live |
21
+ | Filosofi | Otomatisasi feedback loop (CI/review) | Otomatisasi penuh dari **planning** sampai **eksekusi paralel** sampai **self-expanding task graph** |
22
+
23
+ Inti dari v2: kamu kasih **1 task tingkat tinggi** ("bangun fitur leaderboard"), sistem akan:
24
+
25
+ 1. Memecahnya jadi task graph (bukan list linear — graph karena ada dependency antar subtask).
26
+ 2. Spawn agent per subtask yang independen, paralel.
27
+ 3. Setiap agent bisa spawn subagent lagi kalau subtask-nya masih terlalu besar (rekursif, dengan depth limit).
28
+ 4. Dari hasil kerja subagent, sistem bisa **membuat task baru** secara otonom (mis. subagent nemu bug saat implementasi → otomatis jadi task baru "fix bug X", atau nemu kebutuhan refactor → task baru "refactor module Y").
29
+ 5. Semua ini terlihat real-time di dashboard: task tree yang hidup, agent yang sedang jalan, skill yang dipakai, command yang dieksekusi.
30
+
31
+ ---
32
+
33
+ ## 2. Problem Statement (Tambahan dari v1)
34
+
35
+ v1 menyelesaikan masalah "1 agent per terminal tidak scalable". Tapi v1 masih mengasumsikan **kamu yang memecah task jadi issue-issue kecil secara manual** sebelum dikasih ke orchestrator. Masalah baru yang muncul setelah v1 berjalan:
36
+
37
+ 1. **Decomposition masih manual** — kamu tetap harus berpikir "task ini perlu dipecah jadi apa" sebelum CLI/dashboard bisa jalan.
38
+ 2. **Task statis** — begitu task selesai didefinisikan, tidak ada mekanisme untuk task baru muncul otomatis dari temuan di lapangan (bug, edge case, missing dependency).
39
+ 3. **Tidak ada visibilitas proses berpikir agent** — kamu cuma lihat hasil akhir (PR, status CI), tidak lihat agent sedang pakai skill apa, command apa, library apa saat itu juga.
40
+ 4. **Subagent invisible** — kalau satu agent men-spawn subagent untuk bagian kerjanya, kamu tidak punya cara melihat struktur hierarki itu di v1.
41
+
42
+ v2 menjawab semua ini dengan **Recursive Task Decomposition Engine** + **Realtime Observability Layer**.
43
+
44
+ ---
45
+
46
+ ## 3. Tujuan Produk v2 (Goals)
47
+
48
+ | # | Goal | Metrik Keberhasilan |
49
+ | --- | ---------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------- |
50
+ | G1 | Decompose 1 high-level task jadi task graph otomatis | Dari 1 task input, sistem hasilkan ≥80% subtask yang valid (executable, scoped jelas) tanpa intervensi manual |
51
+ | G2 | Spawn agent/subagent paralel sesuai task graph | N subtask independen dieksekusi simultan tanpa race condition antar worktree |
52
+ | G3 | Self-expanding task graph dari hasil kerja subagent | Subagent dapat mengusulkan/membuat task baru (bug, refactor, follow-up) yang otomatis masuk graph dan divalidasi sebelum dieksekusi |
53
+ | G4 | Observability real-time penuh | Dashboard menampilkan task tree, status agent/subagent, skill aktif, command/library yang dieksekusi — update < 1 detik delay |
54
+ | G5 | Kontrol kedalaman rekursi & biaya | Depth limit & budget limit per task graph agar tidak runaway spawn agent |
55
+ | G6 | Tetap kompatibel dengan fondasi v1 | Plugin architecture, GitHub-first tracker/SCM, multi-provider routing tetap dipakai sebagai infrastruktur eksekusi |
56
+
57
+ ### Non-Goals v2
58
+
59
+ - Tidak membangun model AI planner sendiri — decomposition tetap menggunakan LLM agent (lewat provider yang sudah dikonfigurasi), bukan algoritma planning kustom dari nol.
60
+ - Tidak full otomatis merge tanpa review manusia (tetap sejalan filosofi v1: auto-merge default `false`).
61
+ - Tidak menyediakan UI drag-and-drop untuk edit task graph manual di v2 — fokus dulu ke automation, manual override task graph masuk v2.5/v3 (lihat Roadmap).
62
+
63
+ ---
64
+
65
+ ## 4. Konsep Inti: Task Graph & Hierarki Agent
66
+
67
+ ### 4.1 Task Graph (bukan task list)
68
+
69
+ Task direpresentasikan sebagai **DAG (Directed Acyclic Graph)**, bukan list linear, karena subtask bisa punya dependency (subtask B butuh hasil subtask A).
70
+
71
+ ```
72
+ Task Node:
73
+ - id
74
+ - title
75
+ - description
76
+ - status: pending | decomposing | ready | in_progress | blocked | review | done | failed
77
+ - parentId (null jika root task)
78
+ - depth (0 = root)
79
+ - dependsOn: [taskId]
80
+ - createdBy: "user" | "agent:<agentId>" | "subagent:<subagentId>"
81
+ - assignedAgent: agentId | null
82
+ - worktree: path | null
83
+ - skillsUsed: [skillName]
84
+ - commandsExecuted: [{ command, timestamp, exitCode }]
85
+ - result: { summary, prUrl?, filesChanged?, newTasksProposed: [taskId] }
86
+ ```
87
+
88
+ ### 4.2 Hierarki Eksekusi
89
+
90
+ ```
91
+ Orchestrator Agent (root, 1 per task graph)
92
+ ├── Agent A (subtask 1)
93
+ │ ├── Subagent A.1 (sub-subtask, jika subtask 1 masih terlalu besar)
94
+ │ └── Subagent A.2
95
+ ├── Agent B (subtask 2, paralel dengan A)
96
+ └── Agent C (subtask 3, depends on subtask 1 → mulai setelah A done)
97
+ ```
98
+
99
+ - **Depth limit default: 3** (Orchestrator → Agent → Subagent → Sub-subagent), dikonfigurasi di YAML.
100
+ - Setiap level punya **worktree sendiri** (mengikuti workspace plugin dari v1), tapi subagent dari agent yang sama **berbagi branch parent** (commit ke sub-branch yang nanti di-merge ke branch agent induk sebelum agent induk buka PR ke base branch).
101
+
102
+ ### 4.3 Siklus Hidup Task (Decompose → Execute → Emit)
103
+
104
+ 1. **Decompose**: Orchestrator menerima task root, panggil LLM dengan prompt khusus "decomposition skill" untuk memecah jadi subtask graph dengan dependency.
105
+ 2. **Validate**: Setiap subtask hasil decompose dicek scoped-nya (tidak terlalu besar/kecil) — kalau masih besar, ditandai `decomposing` lagi secara rekursif sampai depth limit atau dianggap "atomic enough".
106
+ 3. **Execute**: Subtask yang `ready` (semua dependency `done`) di-spawn jadi agent/subagent.
107
+ 4. **Emit**: Saat agent menyelesaikan kerja, hasilnya dianalisis — kalau ada temuan baru (bug, kebutuhan refactor, missing test), agent **mengusulkan task baru** lewat skill "task-proposal". Task baru ini masuk graph dengan status `pending_approval` (lihat Governance di §5.3) sebelum dieksekusi.
108
+ 5. **Repeat** sampai semua node graph berstatus `done`/`failed`, lalu orchestrator menyusun summary akhir + daftar PR untuk direview kamu.
109
+
110
+ ---
111
+
112
+ ## 5. Functional Requirements Baru (di atas v1)
113
+
114
+ ### 5.1 Recursive Decomposition Engine
115
+
116
+ - FR-21: `speexor task submit "<deskripsi task>"` — entry point user untuk memberi 1 task tingkat tinggi.
117
+ - FR-22: Engine memanggil **Planner Agent** (role khusus, bisa pakai provider berbeda dari worker — mis. model reasoning kuat untuk planning, model lebih murah untuk eksekusi rutin) untuk menghasilkan task graph awal.
118
+ - FR-23: Setiap subtask dievaluasi otomatis: jika estimasi scope > threshold (dikonfigurasi, mis. "lebih dari 1 file inti" atau "butuh >1 konsep berbeda"), subtask di-decompose lagi secara rekursif.
119
+ - FR-24: Depth limit & **max total node per graph** dikonfigurasi di `speexor.config.yaml` (default: depth 3, max 50 node) untuk mencegah explosion.
120
+ - FR-25: Decomposition menghasilkan dependency edge (`dependsOn`) berdasarkan analisis konten (mis. "subtask schema DB" harus selesai sebelum "subtask API endpoint").
121
+
122
+ ### 5.2 Parallel Execution Engine
123
+
124
+ - FR-26: Scheduler menjalankan semua node yang `ready` (dependency terpenuhi) secara paralel, dibatasi `maxConcurrentAgents` per project (resource control, relevan untuk constraint mesin lokal kamu).
125
+ - FR-27: Setiap agent/subagent berjalan di worktree terisolasi; subagent dari agent yang sama bekerja di sub-branch dari branch agent induk.
126
+ - FR-28: Agent induk melakukan merge sub-branch subagent miliknya sendiri sebelum lanjut/PR (konflik ditangani agent induk dulu, baru eskalasi ke orchestrator/manusia jika gagal).
127
+ - FR-29: Jika satu node `failed`, node yang depend padanya otomatis `blocked` dan orchestrator memberi opsi: retry, reassign ke agent lain, atau eskalasi ke user.
128
+
129
+ ### 5.3 Self-Expanding Task Graph & Governance
130
+
131
+ - FR-30: Setiap agent punya skill "propose-task" yang dipanggil saat menemukan kerja baru di luar scope subtask-nya (bug, technical debt, missing edge case).
132
+ - FR-31: Task yang diusulkan otomatis masuk graph dengan status `pending_approval`.
133
+ - FR-32: **Governance rule** dikonfigurasi per project: `autoApproveProposedTasks: false` (default) — task baru menunggu approval kamu di dashboard sebelum dieksekusi; bisa di-set `true` untuk kategori low-risk (mis. "test-only" atau "lint-fix") agar langsung jalan.
134
+ - FR-33: Setiap task yang diusulkan menyertakan `proposedBy` (agent/subagent id) dan `reason` (alasan kenapa task ini perlu) untuk transparansi.
135
+ - FR-34: Loop protection: task baru tidak boleh membuat task duplikat/identik (deduplication check berbasis similarity sebelum masuk graph).
136
+
137
+ ### 5.4 Realtime Observability Dashboard
138
+
139
+ Ini adalah perluasan besar dari Dashboard MVP di v1 (§8.6 v1), dengan requirement baru:
140
+
141
+ - FR-35: **Task Tree View** — visualisasi graph (bukan list) yang menunjukkan root task, semua subtask, dependency, dan status warna (pending/in_progress/blocked/done/failed) — update via WebSocket real-time.
142
+ - FR-36: **Agent Fleet View** — daftar semua agent & subagent yang sedang hidup, dengan hierarki parent-child, masing-masing menunjukkan: task yang dikerjakan, runtime/uptime, provider/model yang dipakai.
143
+ - FR-37: **Live Activity Feed per Agent** — stream real-time yang menunjukkan:
144
+ - Skill yang sedang dipanggil agent saat itu (mis. "menggunakan skill: code-review", "menggunakan skill: test-writer").
145
+ - Command yang dieksekusi (shell command, git command, test runner) beserta exit code.
146
+ - Library/dependency yang baru ditambahkan/diubah agent (parse dari diff `package.json`, `requirements.txt`, dll secara live).
147
+ - Tool/plugin MCP yang dipanggil agent (jika agent backend mendukung MCP, log tool call-nya).
148
+ - FR-38: **Drill-down**: klik 1 node task → lihat agent yang menanganinya, subagent di bawahnya, log lengkap, dan diff kode yang dihasilkan sejauh ini.
149
+ - FR-39: **Pending Approval Inbox** — panel khusus untuk task yang diusulkan otomatis (FR-31), dengan tombol approve/reject langsung dari dashboard.
150
+ - FR-40: **Cost & Resource Panel** (lanjutan dari v1 §8.6 FR-23) — breakdown cost per task node, bukan cuma per project, supaya kelihatan subtask mana yang paling mahal.
151
+ - FR-41: Update real-time via WebSocket dengan target latency < 1 detik dari event terjadi di agent sampai muncul di dashboard.
152
+
153
+ ### 5.5 Event & Telemetry Schema
154
+
155
+ - FR-42: Setiap agent wajib emit event terstruktur ke message bus internal (bukan cuma raw stdout), dengan skema minimal:
156
+
157
+ ```json
158
+ {
159
+ "eventType": "skill_invoked | command_executed | file_changed | task_proposed | status_changed",
160
+ "agentId": "string",
161
+ "taskId": "string",
162
+ "timestamp": "ISO8601",
163
+ "payload": { "...sesuai eventType" }
164
+ }
165
+ ```
166
+
167
+ - FR-43: Event bus internal (mis. via in-process EventEmitter + persist ke SQLite untuk history) menjadi single source of truth yang dikonsumsi dashboard via WebSocket gateway.
168
+ - FR-44: Adapter agent (OpenCode/Claude Code/Aider/Codex) wajib di-instrument untuk emit event ini — kalau agent backend tidak punya hook native, gunakan **command wrapper** (intercept shell command & file write agent lewat proxy/wrapper proses) sebagai fallback agar tetap observable.
169
+
170
+ ---
171
+
172
+ ## 6. Arsitektur Tambahan (di atas 7 Plugin Slot v1)
173
+
174
+ | Komponen Baru | Tanggung Jawab |
175
+ | --------------------------- | --------------------------------------------------------------------------------------------------- |
176
+ | **Planner Engine** | Memanggil Planner Agent, decompose task jadi graph, validasi scope, deteksi dependency |
177
+ | **Task Graph Store** | Persist task graph (SQLite/Prisma), termasuk history perubahan status & versi graph |
178
+ | **Scheduler** | Menentukan node mana yang `ready`, alokasi agent sesuai `maxConcurrentAgents`, retry/reassign logic |
179
+ | **Governance Engine** | Approval flow untuk task yang diusulkan otomatis, dedup check, risk classification |
180
+ | **Event Bus** | Central pub-sub untuk semua event agent/subagent, dikonsumsi dashboard real-time |
181
+ | **Instrumentation Wrapper** | Lapisan intercept command/file-write agent untuk agent backend yang tidak native emit event |
182
+
183
+ Struktur monorepo bertambah:
184
+
185
+ ```
186
+ packages/
187
+ ├── core/ # (v1) lifecycle, plugin contracts
188
+ ├── planner-engine/ # (v2) decomposition logic, prompt templates
189
+ ├── task-graph/ # (v2) graph data model + persistence
190
+ ├── scheduler/ # (v2) parallel execution scheduler
191
+ ├── governance/ # (v2) approval flow, dedup, risk rules
192
+ ├── event-bus/ # (v2) pub-sub + persistence
193
+ ├── instrumentation/ # (v2) command/file wrapper untuk observability
194
+ ├── dashboard-api/ # (v1, diperluas) WebSocket gateway untuk task tree & live feed
195
+ ├── dashboard-web/ # (v1, diperluas) Task Tree View, Agent Fleet View, dst
196
+ └── agent-*/ # (v1) adapter per agent backend
197
+ ```
198
+
199
+ ---
200
+
201
+ ## 7. Konfigurasi Baru (`speexor.config.yaml` v2)
202
+
203
+ ```yaml
204
+ $schema: https://.../config.schema.v2.json
205
+ decomposition:
206
+ maxDepth: 3
207
+ maxNodesPerGraph: 50
208
+ plannerProvider: opencode # provider khusus untuk planning, bisa beda dari eksekusi
209
+ plannerModel: deepseek-reasoner
210
+
211
+ scheduler:
212
+ maxConcurrentAgents: 4 # per project, sesuaikan resource mesin lokal
213
+ retryOnFailure: 2
214
+
215
+ governance:
216
+ autoApproveProposedTasks: false
217
+ autoApproveCategories: ["lint-fix", "test-only"]
218
+ duplicateSimilarityThreshold: 0.85
219
+
220
+ observability:
221
+ eventRetentionDays: 30
222
+ liveFeedBufferSize: 200 # jumlah event terakhir yang ditahan per agent di memory
223
+
224
+ projects:
225
+ brainclash:
226
+ repo: aditya/brainclash
227
+ path: ~/projects/brainclash
228
+ agentDefaults:
229
+ planner: claude-code
230
+ worker: opencode
231
+ ```
232
+
233
+ ---
234
+
235
+ ## 8. Non-Functional Requirements Tambahan
236
+
237
+ | Kategori | Requirement |
238
+ | ------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------- |
239
+ | **Latency Observability** | Event dari agent ke dashboard ≤ 1 detik (FR-41) |
240
+ | **Skalabilitas Graph** | Sistem tetap responsif dengan graph hingga 50 node aktif (sesuai `maxNodesPerGraph` default) |
241
+ | **Keamanan Governance** | Task yang diusulkan agent tidak pernah auto-execute kalau kategori tidak ada di `autoApproveCategories` |
242
+ | **Auditability** | Semua keputusan otomatis (decompose, approve, reject, merge) tercatat dengan alasan (`reason` field), bisa ditelusuri lewat dashboard/log |
243
+ | **Idempotency** | Re-run task graph yang sama tidak menghasilkan task duplikat (dedup check FR-34) |
244
+ | **Cost Guard** | Budget limit per task graph (opsional), agar runaway recursive decomposition tidak membengkakkan biaya API |
245
+
246
+ ---
247
+
248
+ ## 9. Roadmap v2 (Lanjutan dari Roadmap v1)
249
+
250
+ > Asumsi: M0–M3 dari v1 (Foundation, Single Agent E2E, GitHub Integration, Multi-Agent Adapter) **sudah selesai/berjalan** sebagai prasyarat sebelum mulai roadmap v2 ini.
251
+
252
+ | Fase | Scope | Estimasi |
253
+ | ------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------ | ---------- |
254
+ | **M7 — Task Graph Core** | Data model Task Graph, persistence, status lifecycle, dependency resolution (tanpa decomposition otomatis dulu — graph manual via API/CLI) | 2 minggu |
255
+ | **M8 — Planner Engine** | Recursive decomposition otomatis dari 1 task root, validasi scope, depth limit | 2-3 minggu |
256
+ | **M9 — Parallel Scheduler** | Eksekusi paralel node `ready`, isolasi worktree/sub-branch, retry/reassign logic | 2 minggu |
257
+ | **M10 — Self-Expanding Graph & Governance** | Skill "propose-task", approval flow, dedup check | 1-2 minggu |
258
+ | **M11 — Event Bus & Instrumentation** | Event schema, pub-sub, instrumentation wrapper untuk agent backend tanpa native hook | 2 minggu |
259
+ | **M12 — Realtime Dashboard v2** | Task Tree View, Agent Fleet View, Live Activity Feed, Pending Approval Inbox, Cost-per-node panel | 3 minggu |
260
+ | **M13 — Hardening & Cost Guard** | Budget limit, loop protection testing, chaos test (banyak agent gagal bersamaan) | 1-2 minggu |
261
+
262
+ Total tambahan estimasi: **~13-17 minggu** setelah fondasi v1 selesai.
263
+
264
+ ---
265
+
266
+ ## 10. Risiko Baru & Mitigasi (Khusus v2)
267
+
268
+ | Risiko | Dampak | Mitigasi |
269
+ | ------------------------------------------------------------------------------ | ------ | ---------------------------------------------------------------------------------------------------------------------------- |
270
+ | **Recursive decomposition runaway** — task terus dipecah tanpa henti | Tinggi | `maxDepth` & `maxNodesPerGraph` hard limit, scope validator sebelum decompose lagi |
271
+ | **Task graph membuat task duplikat berulang** | Sedang | Dedup similarity check (FR-34) sebelum task baru masuk graph |
272
+ | **Subagent konflik merge ke branch agent induk** | Sedang | Agent induk wajib resolve konflik sub-branch sebelum lanjut; eskalasi ke orchestrator/manusia jika gagal >N kali |
273
+ | **Observability overhead memperlambat agent** | Sedang | Event emit async, non-blocking; instrumentation wrapper ringan (intercept, bukan full proxy semua I/O) |
274
+ | **Biaya membludak karena planner + banyak worker paralel** | Tinggi | Cost guard per graph, planner pakai provider lebih murah untuk subtask kecil, model reasoning kuat hanya untuk root planning |
275
+ | **Governance approval jadi bottleneck** (kamu kebanjiran approval request) | Sedang | `autoApproveCategories` untuk task low-risk, batch approval UI di dashboard |
276
+ | **Agent backend tanpa native event hook (mis. Aider) sulit di-observe detail** | Sedang | Instrumentation wrapper fallback (FR-44) — minimal observability tetap ada meski tidak sedetail agent yang native support |
277
+
278
+ ---
279
+
280
+ ## 11. Metrik Sukses v2
281
+
282
+ - Dari 1 task kalimat natural language, sistem menghasilkan task graph valid (executable, scoped wajar) tanpa kamu edit manual decomposition-nya.
283
+ - Bisa lihat real-time di dashboard: berapa agent/subagent hidup, sedang pakai skill apa, command apa — tanpa buka terminal manual sama sekali.
284
+ - Minimal 1 contoh kasus task baru yang diusulkan otomatis oleh subagent (bukan kamu) berhasil diapprove dan dieksekusi sampai PR.
285
+ - Tidak ada insiden runaway cost/spawn agent tak terkendali selama pengujian internal.
286
+
287
+ ---
288
+
289
+ ## 12. Open Questions (Update dari v1)
290
+
291
+ 1. Apakah Planner Agent (untuk decomposition) sebaiknya selalu pakai provider reasoning-kuat (lebih mahal) atau bisa adaptif tergantung kompleksitas task root?
292
+ 2. Bagaimana strategi merge konflik kalau 2 subagent independen ternyata menyentuh file yang sama meski berbeda worktree (mis. shared config file)?
293
+ 3. Apakah "skill yang sedang digunakan agent" akan didefinisikan dari sistem skill kamu sendiri (CEO Orchestrator, 261+ skills) atau skill native dari masing-masing agent backend (OpenCode skill, Claude Code skill)? Ini menentukan desain Instrumentation Wrapper.
294
+ 4. Seberapa granular Live Activity Feed perlu ditampilkan — apakah setiap keystroke/tool-call, atau di-summarize per "langkah logis" supaya dashboard tidak noise?
295
+ 5. Apakah governance approval untuk task baru perlu notifikasi push (desktop/Telegram) atau cukup pasif menunggu di dashboard?
296
+
297
+ ---
298
+
299
+ _PRD v2 ini dibangun di atas fondasi v1 (plugin architecture, GitHub-first, multi-provider routing). Rekomendasi: selesaikan M0-M3 v1 sebagai working baseline dulu sebelum masuk M7 (Task Graph Core), karena scheduler & event bus v2 butuh runtime/workspace/agent adapter dari v1 sudah stabil._
package/docs/PRD03.md ADDED
File without changes