pi-crew 0.1.49 → 0.2.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 (249) hide show
  1. package/CHANGELOG.md +74 -1
  2. package/README.md +176 -781
  3. package/agents/analyst.md +11 -11
  4. package/agents/critic.md +11 -11
  5. package/agents/executor.md +11 -11
  6. package/agents/explorer.md +11 -11
  7. package/agents/planner.md +11 -11
  8. package/agents/reviewer.md +11 -11
  9. package/agents/security-reviewer.md +11 -11
  10. package/agents/test-engineer.md +11 -11
  11. package/agents/verifier.md +70 -11
  12. package/agents/writer.md +11 -11
  13. package/docs/actions-reference.md +595 -0
  14. package/docs/commands-reference.md +347 -0
  15. package/docs/runtime-flow.md +148 -148
  16. package/index.ts +6 -6
  17. package/package.json +99 -99
  18. package/skills/async-worker-recovery/SKILL.md +42 -42
  19. package/skills/context-artifact-hygiene/SKILL.md +52 -52
  20. package/skills/delegation-patterns/SKILL.md +54 -54
  21. package/skills/mailbox-interactive/SKILL.md +40 -40
  22. package/skills/model-routing-context/SKILL.md +39 -39
  23. package/skills/multi-perspective-review/SKILL.md +58 -58
  24. package/skills/observability-reliability/SKILL.md +41 -41
  25. package/skills/orchestration/SKILL.md +157 -157
  26. package/skills/ownership-session-security/SKILL.md +41 -41
  27. package/skills/pi-extension-lifecycle/SKILL.md +39 -39
  28. package/skills/requirements-to-task-packet/SKILL.md +63 -63
  29. package/skills/resource-discovery-config/SKILL.md +41 -41
  30. package/skills/runtime-state-reader/SKILL.md +44 -44
  31. package/skills/secure-agent-orchestration-review/SKILL.md +45 -45
  32. package/skills/state-mutation-locking/SKILL.md +42 -42
  33. package/skills/systematic-debugging/SKILL.md +67 -67
  34. package/skills/ui-render-performance/SKILL.md +39 -39
  35. package/skills/verification-before-done/SKILL.md +57 -57
  36. package/skills/worktree-isolation/SKILL.md +39 -39
  37. package/src/adapters/claude-adapter.ts +25 -0
  38. package/src/adapters/codex-adapter.ts +21 -0
  39. package/src/adapters/cursor-adapter.ts +17 -0
  40. package/src/adapters/export-util.ts +137 -0
  41. package/src/adapters/index.ts +15 -0
  42. package/src/adapters/registry.ts +18 -0
  43. package/src/adapters/types.ts +23 -0
  44. package/src/agents/agent-config.ts +2 -0
  45. package/src/agents/agent-search.ts +98 -98
  46. package/src/agents/discover-agents.ts +2 -1
  47. package/src/config/config.ts +14 -1
  48. package/src/config/defaults.ts +5 -5
  49. package/src/config/drift-detector.ts +211 -0
  50. package/src/config/markers.ts +327 -0
  51. package/src/config/resilient-parser.ts +108 -0
  52. package/src/config/suggestions.ts +74 -0
  53. package/src/extension/cross-extension-rpc.ts +103 -82
  54. package/src/extension/project-init.ts +36 -4
  55. package/src/extension/register.ts +67 -22
  56. package/src/extension/registration/commands.ts +77 -8
  57. package/src/extension/registration/subagent-tools.ts +10 -1
  58. package/src/extension/registration/team-tool.ts +10 -1
  59. package/src/extension/registration/viewers.ts +48 -34
  60. package/src/extension/run-bundle-schema.ts +89 -89
  61. package/src/extension/run-export.ts +26 -12
  62. package/src/extension/run-import.ts +25 -1
  63. package/src/extension/run-index.ts +5 -1
  64. package/src/extension/run-maintenance.ts +142 -68
  65. package/src/extension/team-manager-command.ts +10 -1
  66. package/src/extension/team-tool/context.ts +1 -1
  67. package/src/extension/team-tool/doctor.ts +28 -3
  68. package/src/extension/team-tool/handle-settings.ts +195 -188
  69. package/src/extension/team-tool/inspect.ts +41 -41
  70. package/src/extension/team-tool/intent-policy.ts +42 -42
  71. package/src/extension/team-tool/lifecycle-actions.ts +27 -8
  72. package/src/extension/team-tool/plan.ts +19 -19
  73. package/src/extension/team-tool/run.ts +12 -1
  74. package/src/extension/team-tool.ts +14 -3
  75. package/src/i18n.ts +184 -184
  76. package/src/observability/exporters/otlp-exporter.ts +92 -77
  77. package/src/prompt/prompt-runtime.ts +72 -72
  78. package/src/runtime/agent-memory.ts +72 -72
  79. package/src/runtime/agent-observability.ts +114 -114
  80. package/src/runtime/async-marker.ts +26 -26
  81. package/src/runtime/attention-events.ts +28 -28
  82. package/src/runtime/auto-resume.ts +100 -0
  83. package/src/runtime/background-runner.ts +11 -1
  84. package/src/runtime/cancellation-token.ts +89 -89
  85. package/src/runtime/cancellation.ts +61 -61
  86. package/src/runtime/capability-inventory.ts +116 -116
  87. package/src/runtime/child-pi.ts +7 -2
  88. package/src/runtime/compaction-summary.ts +271 -0
  89. package/src/runtime/completion-guard.ts +190 -190
  90. package/src/runtime/concurrency.ts +3 -1
  91. package/src/runtime/crash-recovery.ts +33 -0
  92. package/src/runtime/delta-conflict.ts +360 -0
  93. package/src/runtime/diagnostic-export.ts +3 -1
  94. package/src/runtime/direct-run.ts +35 -35
  95. package/src/runtime/event-stream-bridge.ts +3 -1
  96. package/src/runtime/foreground-control.ts +82 -82
  97. package/src/runtime/green-contract.ts +46 -46
  98. package/src/runtime/group-join.ts +106 -106
  99. package/src/runtime/heartbeat-gradient.ts +28 -28
  100. package/src/runtime/heartbeat-watcher.ts +124 -124
  101. package/src/runtime/iteration-hooks.ts +262 -0
  102. package/src/runtime/live-agent-control.ts +88 -88
  103. package/src/runtime/live-control-realtime.ts +36 -36
  104. package/src/runtime/live-extension-bridge.ts +150 -150
  105. package/src/runtime/live-irc.ts +92 -92
  106. package/src/runtime/live-session-health.ts +100 -100
  107. package/src/runtime/loop-gates.ts +129 -0
  108. package/src/runtime/metric-parser.ts +40 -0
  109. package/src/runtime/notebook-helpers.ts +90 -90
  110. package/src/runtime/orphan-sentinel.ts +7 -7
  111. package/src/runtime/parallel-research.ts +44 -44
  112. package/src/runtime/phase-progress.ts +217 -0
  113. package/src/runtime/pi-args.ts +38 -2
  114. package/src/runtime/pi-json-output.ts +111 -111
  115. package/src/runtime/pi-spawn.ts +74 -6
  116. package/src/runtime/policy-engine.ts +79 -79
  117. package/src/runtime/post-checks.ts +122 -0
  118. package/src/runtime/process-status.ts +14 -1
  119. package/src/runtime/progress-event-coalescer.ts +43 -43
  120. package/src/runtime/prose-compressor.ts +164 -164
  121. package/src/runtime/recovery-recipes.ts +74 -74
  122. package/src/runtime/result-extractor.ts +121 -121
  123. package/src/runtime/role-permission.ts +39 -39
  124. package/src/runtime/sensitive-paths.ts +3 -3
  125. package/src/runtime/session-resources.ts +25 -25
  126. package/src/runtime/session-snapshot.ts +59 -59
  127. package/src/runtime/session-usage.ts +79 -79
  128. package/src/runtime/sidechain-output.ts +29 -29
  129. package/src/runtime/stream-preview.ts +177 -177
  130. package/src/runtime/supervisor-contact.ts +59 -59
  131. package/src/runtime/task-display.ts +38 -38
  132. package/src/runtime/task-graph.ts +207 -0
  133. package/src/runtime/task-quality.ts +207 -0
  134. package/src/runtime/task-runner/capabilities.ts +78 -78
  135. package/src/runtime/task-runner/live-executor.ts +7 -1
  136. package/src/runtime/task-runner/progress.ts +119 -119
  137. package/src/runtime/task-runner/prompt-builder.ts +1 -1
  138. package/src/runtime/task-runner/prompt-pipeline.ts +64 -64
  139. package/src/runtime/task-runner/result-utils.ts +14 -14
  140. package/src/runtime/task-runner/run-projection.ts +103 -103
  141. package/src/runtime/task-runner/state-helpers.ts +22 -22
  142. package/src/runtime/team-runner.ts +126 -7
  143. package/src/runtime/worker-heartbeat.ts +21 -21
  144. package/src/runtime/worker-startup.ts +57 -57
  145. package/src/runtime/workflow-state.ts +187 -0
  146. package/src/runtime/workspace-tree.ts +298 -298
  147. package/src/schema/config-schema.ts +12 -0
  148. package/src/schema/validation-types.ts +148 -0
  149. package/src/skills/skill-templates.ts +374 -0
  150. package/src/state/active-run-registry.ts +35 -11
  151. package/src/state/atomic-write.ts +33 -26
  152. package/src/state/contracts.ts +1 -0
  153. package/src/state/event-reconstructor.ts +217 -0
  154. package/src/state/locks.ts +2 -11
  155. package/src/state/mailbox.ts +4 -3
  156. package/src/state/state-store.ts +32 -14
  157. package/src/state/task-claims.ts +44 -44
  158. package/src/state/types.ts +9 -0
  159. package/src/state/usage.ts +29 -29
  160. package/src/subagents/async-entry.ts +1 -1
  161. package/src/subagents/index.ts +3 -3
  162. package/src/subagents/live/control.ts +1 -1
  163. package/src/subagents/live/manager.ts +1 -1
  164. package/src/subagents/live/realtime.ts +1 -1
  165. package/src/subagents/live/session-runtime.ts +1 -1
  166. package/src/subagents/manager.ts +1 -1
  167. package/src/subagents/spawn.ts +1 -1
  168. package/src/teams/team-serializer.ts +38 -38
  169. package/src/types/diff.d.ts +18 -18
  170. package/src/ui/crew-footer.ts +101 -101
  171. package/src/ui/crew-select-list.ts +111 -111
  172. package/src/ui/crew-widget.ts +9 -4
  173. package/src/ui/dashboard-panes/cancellation-pane.ts +42 -42
  174. package/src/ui/dashboard-panes/capability-pane.ts +59 -59
  175. package/src/ui/dashboard-panes/mailbox-pane.ts +35 -35
  176. package/src/ui/dashboard-panes/metrics-pane.ts +34 -34
  177. package/src/ui/dashboard-panes/progress-pane.ts +11 -0
  178. package/src/ui/dynamic-border.ts +25 -25
  179. package/src/ui/layout-primitives.ts +106 -106
  180. package/src/ui/loaders.ts +158 -158
  181. package/src/ui/powerbar-publisher.ts +6 -0
  182. package/src/ui/render-coalescer.ts +51 -51
  183. package/src/ui/render-diff.ts +119 -119
  184. package/src/ui/render-scheduler.ts +143 -143
  185. package/src/ui/run-action-dispatcher.ts +10 -1
  186. package/src/ui/spinner.ts +17 -17
  187. package/src/ui/status-colors.ts +58 -58
  188. package/src/ui/syntax-highlight.ts +116 -116
  189. package/src/ui/transcript-entries.ts +258 -258
  190. package/src/utils/completion-dedupe.ts +63 -63
  191. package/src/utils/frontmatter.ts +68 -68
  192. package/src/utils/git.ts +262 -262
  193. package/src/utils/ids.ts +17 -17
  194. package/src/utils/incremental-reader.ts +104 -104
  195. package/src/utils/names.ts +27 -27
  196. package/src/utils/redaction.ts +44 -44
  197. package/src/utils/safe-paths.ts +47 -47
  198. package/src/utils/scan-cache.ts +136 -136
  199. package/src/utils/sleep.ts +40 -26
  200. package/src/utils/task-name-generator.ts +337 -337
  201. package/src/workflows/validate-workflow.ts +40 -40
  202. package/src/worktree/branch-freshness.ts +45 -45
  203. package/src/worktree/worktree-manager.ts +11 -3
  204. package/teams/default.team.md +12 -12
  205. package/teams/fast-fix.team.md +11 -11
  206. package/teams/implementation.team.md +18 -18
  207. package/teams/parallel-research.team.md +14 -14
  208. package/teams/research.team.md +11 -11
  209. package/teams/review.team.md +12 -12
  210. package/workflows/default.workflow.md +30 -29
  211. package/workflows/fast-fix.workflow.md +23 -22
  212. package/workflows/implementation.workflow.md +43 -38
  213. package/workflows/parallel-research.workflow.md +46 -46
  214. package/workflows/research.workflow.md +22 -22
  215. package/workflows/review.workflow.md +30 -30
  216. package/docs/refactor-tasks-phase3.md +0 -394
  217. package/docs/refactor-tasks-phase4.md +0 -564
  218. package/docs/refactor-tasks-phase5.md +0 -402
  219. package/docs/refactor-tasks-phase6.md +0 -662
  220. package/docs/refactor-tasks.md +0 -1484
  221. package/docs/research/AGENT-EXECUTION-ARCHITECTURE.md +0 -261
  222. package/docs/research/AGENT-LIFECYCLE-COMPARISON.md +0 -111
  223. package/docs/research/AUDIT_OH_MY_PI.md +0 -261
  224. package/docs/research/AUDIT_PI_CREW.md +0 -457
  225. package/docs/research/CAVEMAN-DEEP-RESEARCH.md +0 -281
  226. package/docs/research/COMPARISON_OH_MY_PI_VS_PI_CREW.md +0 -264
  227. package/docs/research/DEEP-RESEARCH-PI-POWERBAR.md +0 -343
  228. package/docs/research/DEEP_RESEARCH_SUBAGENT_ARCHITECTURE.md +0 -480
  229. package/docs/research/GAP_CLOSURE_IMPLEMENTATION_PLAN.md +0 -354
  230. package/docs/research/IMPLEMENTATION_PLAN.md +0 -385
  231. package/docs/research/LIVE-SESSION-PRODUCTION-READY-PLAN.md +0 -502
  232. package/docs/research/OH-MY-PI-DEEP-RESEARCH-v14.7.6.md +0 -266
  233. package/docs/research/REMAINING-GAPS-PLAN.md +0 -363
  234. package/docs/research/SESSION-SUMMARY-2026-05-08.md +0 -146
  235. package/docs/research/UI-RESPONSIVENESS-AUDIT.md +0 -173
  236. package/docs/research-awesome-agent-skills-distillation.md +0 -100
  237. package/docs/research-extension-examples.md +0 -297
  238. package/docs/research-extension-system.md +0 -324
  239. package/docs/research-oh-my-pi-distillation.md +0 -369
  240. package/docs/research-optimization-plan.md +0 -548
  241. package/docs/research-phase10-distillation.md +0 -199
  242. package/docs/research-phase11-distillation.md +0 -201
  243. package/docs/research-phase8-operator-experience-plan.md +0 -819
  244. package/docs/research-phase9-observability-reliability-plan.md +0 -1190
  245. package/docs/research-pi-coding-agent.md +0 -357
  246. package/docs/research-source-pi-crew-reference.md +0 -174
  247. package/docs/research-ui-optimization-plan.md +0 -480
  248. package/docs/source-runtime-refactor-map.md +0 -107
  249. package/src/utils/atomic-write.ts +0 -33
@@ -1,146 +0,0 @@
1
- # pi-crew Session Summary — 2026-05-08
2
-
3
- ## What Was Done
4
-
5
- ### 1. Full Code Review → 10 Bug Fixes
6
- - **Verdict: FAIL** (2 CRITICAL + 1 HIGH)
7
- - All 10 bugs fixed: C1, C2, H1-H4, M1, M2, L1, L3
8
- - Verified: `npm run typecheck` ✅, `npm test` 991/994 pass
9
-
10
- ### 2. Deep Research on oh-my-pi (v14.7.6)
11
- - `git pull` → 55 files changed, +906/-249 lines
12
- - **CRITICAL DISCOVERY**: oh-my-pi uses IN-PROCESS execution (subagent runs in same process as parent)
13
- - pi-crew uses CHILD-PROCESS execution (extension-based architecture)
14
- - This explains WHY pi-crew needs `parent-guard.ts` and oh-my-pi doesn't
15
-
16
- ### 3. Live-Session Production-Ready Upgrade
17
- - **9 phases implemented** (Phase 0-8): experimental flag removal, yield enforcement, AJV schema validation, AbortSignal, MCP proxy, extension runner, semaphore, IRC, health monitoring
18
- - **All verified** with typecheck + tests
19
-
20
- ### 4. Parity Gaps G1-G6 Closed
21
- | Gap | Feature | Status |
22
- |-----|---------|--------|
23
- | G1 | Custom Tool Injection (submit_result + irc) | ✅ Done |
24
- | G2 | MCP Proxy (functional) | ✅ Done |
25
- | G3 | AJV Schema Validation | ✅ Done |
26
- | G4 | respondAsBackground | ✅ Done |
27
- | G5 | Extension Runner | ✅ Done |
28
- | G6 | toolChoice Workaround | ✅ Done |
29
-
30
- ### 5. Orphaned Run Cleanup
31
- - `cancelOrphanedRuns()` — cancels orphaned project-level runs
32
- - `purgeStaleActiveRunIndex()` — scans active-run-index.json for stale entries
33
- - Integrated into: `cleanupRuntime()` + `session_start` event
34
-
35
- ### 6. Parent Guard (OS-Level Child Cleanup)
36
- - **`parent-guard.ts`** — workers self-monitor parent PID, auto-exit if parent dies
37
- - **`PI_CREW_PARENT_PID`** env var injected into all child spawns
38
- - **Why**: pi-crew uses child processes (unlike oh-my-pi's in-process), so parent death doesn't auto-kill children
39
-
40
- ### 7. P1 Action Items from New Research
41
- - ✅ **`scrubProcessEnv()`** — Added to `background-runner.ts` (macOS malloc fix)
42
- - ⚠️ **Fetch URL syntax** — pi-crew doesn't have a fetch tool (low priority)
43
- - ⚠️ **rewriteStaticImports** — pi-crew doesn't have JS code eval (low priority)
44
-
45
- ---
46
-
47
- ## Files Changed (This Session)
48
-
49
- ### Modified (23 files)
50
- ```
51
- src/config/defaults.ts — Phase 0: DEFAULT_LIVE_SESSION = true
52
- src/extension/register.ts — P0: purgeStaleActiveRunIndex + cleanupRuntime
53
- src/runtime/async-runner.ts — P1: PI_CREW_PARENT_PID + sentinel
54
- src/runtime/background-runner.ts — P1: scrubProcessEnv + parent-guard
55
- src/runtime/child-pi.ts — P1: PI_CREW_PARENT_PID injection
56
- src/runtime/crash-recovery.ts — P0: cancelOrphanedRuns + purgeStaleActiveRunIndex
57
- src/runtime/live-agent-manager.ts — G4: non-blocking IRC
58
- src/runtime/live-session-runtime.ts — Phases 0-8, G1, G6
59
- src/runtime/parallel-utils.ts — Phase 6: mapConcurrentWithSignal
60
- src/runtime/runtime-resolver.ts — Phase 0: removed experimental flag
61
- src/runtime/subprocess-tool-registry.ts — H3: emit for error results
62
- src/runtime/task-runner.ts — H4: try/catch
63
- src/runtime/task-runner/live-executor.ts — Phase 2: outputSchema passthrough
64
- src/runtime/team-runner.ts — P1: executeTeamRunCore try/catch
65
- src/runtime/yield-handler.ts — Phase 2 + G3: AJV validation
66
- src/state/event-log-rotation.ts — C2, M1, L3: compaction + rotation
67
- src/ui/run-event-bus.ts — M2: non-blocking emit
68
- src/utils/sse-parser.ts — L1: non-greedy event parsing
69
- src/extension/team-tool/parallel-dispatch.ts — C1, H1, H2: error handling
70
- ```
71
-
72
- ### Created (14 files)
73
- ```
74
- src/runtime/custom-tools/submit-result-tool.ts — G1: submit_result tool
75
- src/runtime/custom-tools/irc-tool.ts — G1: irc DM/broadcast tool
76
- src/runtime/live-extension-bridge.ts — G5: SDK-verified extension bridge
77
- src/runtime/live-irc.ts — Phase 7: IRC routing
78
- src/runtime/live-session-health.ts — Phase 8: health monitoring
79
- src/runtime/mcp-proxy.ts — G2: functional MCP proxy
80
- src/runtime/orphan-sentinel.ts — (deprecated, parent-guard.ts used instead)
81
- src/runtime/parent-guard.ts — P1: parent PID watchdog
82
- src/runtime/semaphore.ts — Phase 6: Semaphore + fail-fast
83
- docs/research/AGENT-LIFECYCLE-COMPARISON.md — Edge case analysis
84
- docs/research/LIVE-SESSION-PRODUCTION-READY-PLAN.md — 9-phase plan
85
- docs/research/OH-MY-PI-DEEP-RESEARCH-v14.7.6.md — v14.7.6 deep research
86
- docs/research/REMAINING-GAPS-PLAN.md — G1-G6 plan + status
87
- ```
88
-
89
- ---
90
-
91
- ## Architecture Insights
92
-
93
- ### Why pi-crew needs parent-guard (vs oh-my-pi)
94
- ```
95
- oh-my-pi: Agent objects in-process → process.exit() = all dead (OS guarantee)
96
- pi-crew: Worker processes separate → parent dies → workers live forever
97
- → parent-guard.ts: worker polls parent PID, self-terminates on death
98
- ```
99
-
100
- ### pi-crew's Extension-Based Architecture
101
- - **pi-crew is a Pi extension** (not built-in)
102
- - Cannot embed in Pi's process → must use child processes
103
- - Child process isolation is actually a FEATURE (fault tolerance)
104
- - But needs explicit cleanup mechanisms (parent-guard, stale index purge)
105
-
106
- ### Parent-guard Design (Final)
107
- ```typescript
108
- // Workers check parent liveness THEMSELVES
109
- startParentGuard(parentPid: number): void {
110
- const interval = setInterval(() => {
111
- if (!isPidAlive(parentPid)) {
112
- clearInterval(interval);
113
- process.exit(124); // self-terminate
114
- }
115
- }, 3000);
116
- }
117
- ```
118
-
119
- ---
120
-
121
- ## Test Results
122
- - `npm run typecheck` — ✅ pass
123
- - `npm test` — 991/994 pass, 3 skipped, 0 failures
124
- - P0/P1 tests (crash-recovery, active-run-registry, stale-reconciler, team-runner): **19/19 pass**
125
-
126
- ---
127
-
128
- ## Next Steps (Not Done — Low Priority)
129
- 1. **Loop limit** — `/loop 10` iteration limits (oh-my-pi feature)
130
- 2. **rewriteStaticImports** — ESM imports in JS code eval
131
- 3. **Fetch URL syntax** — pi-crew doesn't have fetch tool
132
- 4. **hideThinkingSummary** — model config option
133
-
134
- ---
135
-
136
- ## Commit Message Suggestion
137
- ```
138
- feat: live-session production-ready + orphaned run cleanup + parent guard
139
-
140
- - Live-session: Phase 0-8 (yield, AJV, AbortSignal, MCP, extension, semaphore, IRC, health)
141
- - Parity: G1-G6 (custom tools, MCP proxy, schema validation, async IRC, extension bridge, toolChoice)
142
- - Orphan cleanup: purgeStaleActiveRunIndex() + cancelOrphanedRuns()
143
- - Parent guard: workers self-terminate when parent dies (PI_CREW_PARENT_PID)
144
- - scrubProcessEnv: macOS malloc fix for child shells
145
- - Bug fixes: C1, C2, H1-H4, M1, M2, L1, L3 (from code review)
146
- ```
@@ -1,173 +0,0 @@
1
- # UI Responsiveness Audit — Agent Spawn Visibility
2
-
3
- > Date: 2026-05-08
4
- > Issue: Khi user nháy 1 click "team run" trên UI, không thấy rõ agent đang chạy thật hay không.
5
-
6
- ## 1. Vấn đề
7
-
8
- User gọi `team action='run'` (foreground) hoặc `team action='parallel'` → team runner spawn agents → nhưng widget/dashboard không cập nhật ngay lập tức. User phải đợi 1-2 giây hoặc nhấn refresh mới thấy agents.
9
-
10
- **Hệ quả**: User không biết agent đã spawn thành công hay thất bại → nháy thêm lần nữa → duplicate runs.
11
-
12
- ## 2. Root Cause Analysis
13
-
14
- ### 2.1 Event Flow (foreground run)
15
-
16
- ```
17
- handleRun() [extension thread]
18
- → executeTeamRun() [extension thread]
19
- → runTeamTask() [extension thread]
20
- → registerStreamBridge() [line 75, event bridge ready]
21
- → upsertCrewAgent() [line 99, writes agents.json]
22
- → appendEvent("task.started") [line 100, writes events.jsonl]
23
- → runChildPi() [line ~168, spawns child process]
24
- → child.onJsonEvent() [callback from child stdout]
25
- → bridgeEventFromJsonEvent()
26
- → runEventBus.emit() [emits worker_status event]
27
- → snapshotCache.invalidate()
28
- → CrewWidgetComponent.invalidate()
29
- → RenderScheduler.schedule()
30
- ```
31
-
32
- ### 2.2 Timing Gaps
33
-
34
- | Step | Time | Widget shows |
35
- |------|------|-------------|
36
- | handleRun() starts | 0ms | Old state (no run) |
37
- | upsertCrewAgent() writes agents.json | ~50ms | Still old state (cache TTL) |
38
- | task.started event written | ~60ms | Still old state |
39
- | Child process spawned | ~200ms | Still old state |
40
- | Child stdout first JSON event | ~2-5s | **First update!** |
41
- | Snapshot cache refresh | +500ms TTL | Updated |
42
-
43
- **Gap**: 2-5 giây từ lúc user nhấn đến khi UI hiển thị "1 running".
44
-
45
- ### 2.3 Cụ thể
46
-
47
- 1. **Snapshot cache TTL = 500ms**: Sau khi `agents.json` được ghi, cache chỉ refresh sau khi TTL expire. Nhưng ngay cả khi TTL pass, `refreshIfStale()` check file stamps → detect change → rebuild. OK, nhưng phải đợi next `renderTick()`.
48
-
49
- 2. **Preload loop interval = 1000ms** (`DEFAULT_UI.refreshMs`): Background preload chạy mỗi 1 giây → đọc agents.json + events → update snapshot. Nhưng trong giây đầu tiên, agent chưa visible.
50
-
51
- 3. **Event bridge chỉ hoạt động khi child process output**: `bridgeEventFromJsonEvent()` emit qua `runEventBus` chỉ khi child process gửi JSON events qua stdout. Child process phải start → load Pi → initialize → mới output event đầu tiên. Lost time: 2-5s.
52
-
53
- 4. **Không có "immediate emit" khi task started**: `appendEvent("task.started")` ghi vào file nhưng không emit qua `runEventBus`. Event bridge chỉ active khi child output events.
54
-
55
- 5. **Async run**: Background run spawn process riêng → parent process không nhận events → UI chỉ update qua preload loop (1s polling).
56
-
57
- ## 3. Fixes
58
-
59
- ### Fix 1: Emit `runEventBus` event ngay khi task started (HIGH IMPACT)
60
-
61
- **File**: `src/runtime/task-runner.ts`
62
-
63
- Sau `upsertCrewAgent()` + `appendEvent("task.started")`, emit ngay qua `runEventBus`:
64
-
65
- ```typescript
66
- // Line ~100, after appendEvent("task.started")
67
- streamBridge?.handler({
68
- runId: manifest.runId,
69
- taskId: task.id,
70
- eventType: "task.started",
71
- timestamp: Date.now(),
72
- });
73
- ```
74
-
75
- **Impact**: UI nhận event ngay → invalidate snapshot cache → widget hiển thị "1 running" trong ~100ms thay vì 2-5s.
76
-
77
- ### Fix 2: Snapshot cache invalidate on `upsertCrewAgent` (MEDIUM IMPACT)
78
-
79
- **File**: `src/runtime/crew-agent-records.ts`
80
-
81
- After `saveCrewAgents()`, emit invalidate event:
82
-
83
- ```typescript
84
- import { runEventBus } from "../ui/run-event-bus.ts";
85
-
86
- export function upsertCrewAgent(manifest, record) {
87
- // ... existing code ...
88
- saveCrewAgents(manifest, merged);
89
- writeCrewAgentStatus(manifest, record);
90
- // NEW: Immediate UI notification
91
- runEventBus.emit({
92
- type: "worker_status",
93
- runId: manifest.runId,
94
- taskId: record.taskId,
95
- data: { status: record.status, role: record.role },
96
- });
97
- }
98
- ```
99
-
100
- **Impact**: Mỗi lần agent state thay đổi → UI invalidate ngay. Nhưng tốn thêm import + emit overhead.
101
-
102
- ### Fix 3: Foreground run — emit event after manifest saved (MEDIUM IMPACT)
103
-
104
- **File**: `src/extension/team-tool/run.ts`
105
-
106
- Sau khi `saveRunManifest()` với status "running", emit:
107
-
108
- ```typescript
109
- import { runEventBus } from "../../ui/run-event-bus.ts";
110
-
111
- // After saveRunManifest(manifest with status "running")
112
- runEventBus.emit({
113
- type: "run_state",
114
- runId: manifest.runId,
115
- data: { status: "running" },
116
- });
117
- ```
118
-
119
- **Impact**: Dashboard biết run đã bắt đầu ngay, không phải đợi child process output.
120
-
121
- ### Fix 4: Widget spinner animation cho "just spawned" agents (LOW IMPACT)
122
-
123
- **File**: `src/ui/crew-widget.ts`
124
-
125
- Trong `agentActivity()`, nếu agent status "running" nhưng chưa có `progress.currentTool` và chưa có `startedAt` gần đây (< 5s):
126
-
127
- ```typescript
128
- if (agent.status === "running") {
129
- const age = agent.startedAt ? Date.now() - new Date(agent.startedAt).getTime() : Infinity;
130
- if (age < 5000 && !agent.progress?.currentTool) return "spawning…";
131
- return agent.progress?.currentTool ? "…" : "thinking…";
132
- }
133
- ```
134
-
135
- **Impact**: User thấy "spawning…" thay vì "thinking…" → biết agent đang được khởi tạo.
136
-
137
- ### Fix 5: RenderScheduler immediate schedule on run start (HIGH IMPACT)
138
-
139
- **File**: `src/extension/register.ts`
140
-
141
- Khi `handleRun()` finish (run started), gọi `renderScheduler.schedule()` ngay thay vì đợi preload loop:
142
-
143
- ```typescript
144
- // In handleRun(), after run started
145
- renderScheduler?.schedule();
146
- ```
147
-
148
- **Impact**: UI refresh ngay sau khi run started, không đợi preload loop.
149
-
150
- ## 4. Priority Matrix
151
-
152
- | Fix | Impact | Effort | Priority |
153
- |-----|--------|--------|----------|
154
- | Fix 1: Emit on task.started | HIGH | LOW | **P0** |
155
- | Fix 2: Emit on upsertCrewAgent | MEDIUM | LOW | **P1** |
156
- | Fix 3: Emit on manifest saved | MEDIUM | LOW | **P1** |
157
- | Fix 4: "spawning…" indicator | LOW | LOW | **P2** |
158
- | Fix 5: Immediate schedule | HIGH | LOW | **P0** |
159
-
160
- ## 5. Async Run Specific
161
-
162
- Background runs (`async: true`) không thể emit events qua `runEventBus` vì chạy trong process riêng. Options:
163
-
164
- 1. **Watch manifest file changes**: Dùng `fs.watch()` trên `manifest.json` → invalidate cache khi status change
165
- 2. **Child → Parent IPC**: Background process ghi events vào JSONL → parent poll/read
166
- 3. **Acceptable latency**: Với preload loop 1s, async run visible trong ~1-2s — acceptable cho background tasks
167
-
168
- ## 6. Recommended Implementation Order
169
-
170
- 1. **Fix 1 + Fix 5** (P0): Emit event + immediate render on foreground run start
171
- 2. **Fix 4** (P2): "spawning…" indicator cho better UX
172
- 3. **Fix 2** (P1): Broader event emission on agent state changes
173
- 4. **Fix 3** (P1): Dashboard-level run start notification
@@ -1,100 +0,0 @@
1
- # Awesome Agent Skills Distillation for pi-crew
2
-
3
- Date: 2026-05-05
4
- Source repo: `source/awesome-agent-skills` at `859172a` after fast-forward pull from `VoltAgent/awesome-agent-skills`.
5
-
6
- ## Source Character
7
-
8
- `awesome-agent-skills` is a curated index/README of external agent skills, not a vendored skill-source tree. pi-crew should not copy external skill text from linked repositories. This distillation uses high-level themes from the index plus selected detailed reads of linked skills, rewritten as pi-crew-native workflows rather than vendored text.
9
-
10
- ## Detailed Links Read
11
-
12
- Accessible raw GitHub links inspected:
13
-
14
- - `obra/superpowers`:
15
- - `verification-before-completion/SKILL.md` — evidence before claims; fresh command output required.
16
- - `systematic-debugging/SKILL.md` — no fixes without root-cause investigation; four-phase debug loop.
17
- - `subagent-driven-development/SKILL.md` — fresh subagent context, staged review checkpoints, DONE/NEEDS_CONTEXT/BLOCKED handling.
18
- - `requesting-code-review/SKILL.md` — review early/often with explicit base/head context.
19
- - `receiving-code-review/SKILL.md` — verify feedback before implementing; push back with technical evidence.
20
- - `using-git-worktrees/SKILL.md` — detect existing isolation, prefer native worktree tools, verify clean baseline.
21
- - `finishing-a-development-branch/SKILL.md` — verify tests before merge/PR/discard options.
22
- - `test-driven-development/SKILL.md` — red/green/refactor; tests must fail for the intended reason.
23
- - `writing-skills/SKILL.md` — trigger-only descriptions, progressive skill structure, pressure-test skills.
24
-
25
- Blocked/unavailable in this environment:
26
-
27
- - `officialskills.sh` pages for Trail of Bits/OpenAI returned HTTP 403 when fetched directly.
28
- - Some README paths have moved or are directory-based; missing paths were not treated as source of truth.
29
-
30
- Relevant source themes:
31
-
32
- - Trail of Bits: clarification, audit context, differential review, insecure defaults, sharp edges, static analysis, testing handbook.
33
- - OpenAI/Sentry/CodeRabbit/Garry Tan: security review, threat modeling, PR/code review, QA, guardrails, release/deploy verification.
34
- - Obra/NeoLab community skills: subagent-driven development, testing with subagents, worktrees, verification before completion, recursive decomposition, review checkpoints.
35
- - Context-engineering entries: context degradation, compression, memory systems, tool design, evaluation frameworks.
36
- - Skill quality standards: specific descriptions, progressive disclosure, no absolute paths, scoped tools.
37
- - Security notice: skills are curated but not audited; external skill content can contain prompt injection, tool poisoning, malware payloads, or unsafe data handling.
38
-
39
- ## Added pi-crew Skills
40
-
41
- ### `requirements-to-task-packet`
42
-
43
- Purpose: convert ambiguous work into task packets with assumptions, scope, non-goals, acceptance criteria, verification, and escalation conditions.
44
-
45
- Primary roles: `analyst`, `planner`.
46
-
47
- ### `secure-agent-orchestration-review`
48
-
49
- Purpose: security-review workflow for delegation, skill loading, tool access, prompts, artifacts, config, and session/state ownership.
50
-
51
- Primary role: `security-reviewer`.
52
-
53
- ### `multi-perspective-review`
54
-
55
- Purpose: structured review protocol separating correctness, security, tests, maintainability, operator experience, and compatibility.
56
-
57
- Primary roles: `reviewer`, `critic`.
58
-
59
- ### `verification-before-done`
60
-
61
- Purpose: completion gate requiring targeted checks, typecheck/integration/full test escalation, evidence, artifacts, risks, and rollback notes.
62
-
63
- Primary roles: `executor`, `test-engineer`, `verifier`.
64
-
65
- ### `context-artifact-hygiene`
66
-
67
- Purpose: prevent context poisoning, lost-in-middle failures, stale artifacts, absolute-path leakage, and poor handoffs.
68
-
69
- Primary roles: `explorer`, `writer`.
70
-
71
- ### `systematic-debugging`
72
-
73
- Purpose: reproduce/trace/hypothesize/fix loop for failing tests, blocked runs, config pollution, provider/runtime errors, and stale state.
74
-
75
- Not currently default-mapped to avoid skill-budget bloat; can be requested by `skill: "systematic-debugging"` or added to future debug workflows.
76
-
77
- ## Default Role Mapping Changes
78
-
79
- Updated `src/runtime/skill-instructions.ts` to use the new distilled skills while keeping prompt budgets small:
80
-
81
- - `explorer`: `read-only-explorer`, `context-artifact-hygiene`
82
- - `analyst`: `read-only-explorer`, `requirements-to-task-packet`
83
- - `planner`: `delegation-patterns`, `requirements-to-task-packet`
84
- - `critic`: `read-only-explorer`, `multi-perspective-review`
85
- - `executor`: `state-mutation-locking`, `safe-bash`, `verification-before-done`
86
- - `reviewer`: `read-only-explorer`, `multi-perspective-review`
87
- - `security-reviewer`: `secure-agent-orchestration-review`, `ownership-session-security`
88
- - `test-engineer`: `verification-before-done`, `safe-bash`
89
- - `verifier`: `verification-before-done`, `runtime-state-reader`
90
- - `writer`: `context-artifact-hygiene`, `verify-evidence`
91
-
92
- ## Rationale
93
-
94
- The selected skills are generic, pi-crew-native, and immediately useful for team orchestration. Vendor/framework-specific skills from the index were intentionally skipped because pi-crew is a TypeScript Pi extension and should not bake in unrelated platform instructions.
95
-
96
- ## Follow-up Ideas
97
-
98
- - Add workflow-level `skills:` defaults for debug/recovery workflows that include `systematic-debugging`.
99
- - Add a `skill-supply-chain-audit` skill if pi-crew later imports external skill bundles automatically.
100
- - Add documentation to README describing `skill` override usage and project `skills/<name>/SKILL.md` overrides.