pi-crew 0.1.37 → 0.1.39

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 (162) hide show
  1. package/AGENTS.md +1 -1
  2. package/CHANGELOG.md +27 -0
  3. package/README.md +5 -0
  4. package/agents/analyst.md +11 -11
  5. package/agents/critic.md +11 -11
  6. package/agents/executor.md +11 -11
  7. package/agents/explorer.md +11 -11
  8. package/agents/planner.md +11 -11
  9. package/agents/reviewer.md +11 -11
  10. package/agents/security-reviewer.md +11 -11
  11. package/agents/test-engineer.md +11 -11
  12. package/agents/verifier.md +11 -11
  13. package/agents/writer.md +11 -11
  14. package/docs/refactor-tasks-phase3.md +394 -394
  15. package/docs/refactor-tasks-phase4.md +564 -564
  16. package/docs/refactor-tasks-phase5.md +402 -402
  17. package/docs/refactor-tasks-phase6.md +662 -662
  18. package/docs/research-extension-examples.md +297 -297
  19. package/docs/research-extension-system.md +324 -324
  20. package/docs/research-optimization-plan.md +548 -548
  21. package/docs/research-pi-coding-agent.md +357 -357
  22. package/docs/research-source-pi-crew-reference.md +174 -174
  23. package/docs/resource-formats.md +10 -8
  24. package/docs/runtime-flow.md +148 -148
  25. package/docs/source-runtime-refactor-map.md +83 -83
  26. package/docs/usage.md +6 -0
  27. package/index.ts +6 -6
  28. package/package.json +3 -3
  29. package/schema.json +2 -2
  30. package/src/agents/agent-serializer.ts +34 -34
  31. package/src/config/config.ts +8 -4
  32. package/src/extension/cross-extension-rpc.ts +82 -82
  33. package/src/extension/import-index.ts +18 -2
  34. package/src/extension/register.ts +11 -1
  35. package/src/extension/registration/compaction-guard.ts +125 -125
  36. package/src/extension/registration/subagent-helpers.ts +30 -6
  37. package/src/extension/registration/subagent-tools.ts +8 -3
  38. package/src/extension/result-watcher.ts +98 -98
  39. package/src/extension/run-import.ts +12 -2
  40. package/src/extension/run-index.ts +12 -2
  41. package/src/extension/run-maintenance.ts +24 -24
  42. package/src/extension/team-tool/api.ts +54 -14
  43. package/src/extension/team-tool/cancel.ts +31 -31
  44. package/src/extension/team-tool/doctor.ts +179 -179
  45. package/src/extension/team-tool/inspect.ts +41 -41
  46. package/src/extension/team-tool/lifecycle-actions.ts +79 -79
  47. package/src/extension/team-tool/plan.ts +19 -19
  48. package/src/extension/team-tool/status.ts +73 -73
  49. package/src/observability/correlation.ts +35 -35
  50. package/src/observability/event-to-metric.ts +54 -54
  51. package/src/observability/exporters/adapter.ts +24 -24
  52. package/src/observability/exporters/otlp-exporter.ts +65 -65
  53. package/src/observability/exporters/prometheus-exporter.ts +47 -47
  54. package/src/observability/metric-registry.ts +72 -72
  55. package/src/observability/metric-retention.ts +46 -46
  56. package/src/observability/metric-sink.ts +51 -51
  57. package/src/observability/metrics-primitives.ts +166 -166
  58. package/src/prompt/prompt-runtime.ts +68 -68
  59. package/src/runtime/agent-control.ts +64 -64
  60. package/src/runtime/agent-memory.ts +72 -72
  61. package/src/runtime/agent-observability.ts +114 -113
  62. package/src/runtime/async-marker.ts +26 -26
  63. package/src/runtime/background-runner.ts +53 -53
  64. package/src/runtime/crash-recovery.ts +56 -56
  65. package/src/runtime/crew-agent-records.ts +54 -9
  66. package/src/runtime/crew-agent-runtime.ts +58 -58
  67. package/src/runtime/deadletter.ts +36 -36
  68. package/src/runtime/direct-run.ts +35 -35
  69. package/src/runtime/foreground-control.ts +82 -82
  70. package/src/runtime/green-contract.ts +46 -46
  71. package/src/runtime/group-join.ts +88 -88
  72. package/src/runtime/heartbeat-gradient.ts +28 -28
  73. package/src/runtime/heartbeat-watcher.ts +80 -80
  74. package/src/runtime/live-agent-control.ts +87 -78
  75. package/src/runtime/live-agent-manager.ts +85 -85
  76. package/src/runtime/live-control-realtime.ts +36 -36
  77. package/src/runtime/live-session-runtime.ts +299 -299
  78. package/src/runtime/manifest-cache.ts +248 -212
  79. package/src/runtime/model-fallback.ts +261 -261
  80. package/src/runtime/parallel-research.ts +44 -44
  81. package/src/runtime/parallel-utils.ts +99 -99
  82. package/src/runtime/pi-json-output.ts +111 -111
  83. package/src/runtime/policy-engine.ts +78 -78
  84. package/src/runtime/post-exit-stdio-guard.ts +86 -86
  85. package/src/runtime/process-status.ts +56 -56
  86. package/src/runtime/progress-event-coalescer.ts +43 -43
  87. package/src/runtime/recovery-recipes.ts +74 -74
  88. package/src/runtime/retry-executor.ts +59 -59
  89. package/src/runtime/role-permission.ts +39 -39
  90. package/src/runtime/session-usage.ts +79 -79
  91. package/src/runtime/sidechain-output.ts +28 -28
  92. package/src/runtime/subagent-manager.ts +80 -12
  93. package/src/runtime/task-display.ts +38 -38
  94. package/src/runtime/task-output-context.ts +127 -106
  95. package/src/runtime/task-runner/live-executor.ts +98 -98
  96. package/src/runtime/task-runner/progress.ts +111 -111
  97. package/src/runtime/task-runner/result-utils.ts +14 -14
  98. package/src/runtime/task-runner/state-helpers.ts +22 -22
  99. package/src/runtime/team-runner.ts +1 -1
  100. package/src/runtime/worker-heartbeat.ts +21 -21
  101. package/src/runtime/worker-startup.ts +57 -57
  102. package/src/schema/config-schema.ts +21 -21
  103. package/src/schema/team-tool-schema.ts +100 -100
  104. package/src/state/artifact-store.ts +122 -108
  105. package/src/state/contracts.ts +105 -105
  106. package/src/state/jsonl-writer.ts +77 -77
  107. package/src/state/mailbox.ts +67 -22
  108. package/src/state/state-store.ts +36 -5
  109. package/src/state/task-claims.ts +42 -42
  110. package/src/state/usage.ts +29 -29
  111. package/src/subagents/async-entry.ts +1 -1
  112. package/src/subagents/index.ts +3 -3
  113. package/src/subagents/live/control.ts +1 -1
  114. package/src/subagents/live/manager.ts +1 -1
  115. package/src/subagents/live/realtime.ts +1 -1
  116. package/src/subagents/live/session-runtime.ts +1 -1
  117. package/src/subagents/manager.ts +1 -1
  118. package/src/subagents/spawn.ts +1 -1
  119. package/src/teams/discover-teams.ts +27 -5
  120. package/src/teams/team-serializer.ts +38 -36
  121. package/src/types/diff.d.ts +18 -18
  122. package/src/ui/crew-footer.ts +101 -101
  123. package/src/ui/crew-select-list.ts +111 -111
  124. package/src/ui/dashboard-panes/metrics-pane.ts +34 -34
  125. package/src/ui/dynamic-border.ts +25 -25
  126. package/src/ui/layout-primitives.ts +106 -106
  127. package/src/ui/loaders.ts +158 -158
  128. package/src/ui/mascot.ts +441 -441
  129. package/src/ui/render-diff.ts +119 -119
  130. package/src/ui/run-dashboard.ts +5 -2
  131. package/src/ui/run-snapshot-cache.ts +19 -8
  132. package/src/ui/spinner.ts +17 -17
  133. package/src/ui/status-colors.ts +54 -54
  134. package/src/ui/syntax-highlight.ts +116 -116
  135. package/src/ui/transcript-viewer.ts +15 -1
  136. package/src/utils/completion-dedupe.ts +63 -63
  137. package/src/utils/file-coalescer.ts +84 -84
  138. package/src/utils/frontmatter.ts +36 -36
  139. package/src/utils/fs-watch.ts +31 -31
  140. package/src/utils/git.ts +262 -262
  141. package/src/utils/ids.ts +12 -12
  142. package/src/utils/names.ts +26 -26
  143. package/src/utils/paths.ts +3 -2
  144. package/src/utils/safe-paths.ts +34 -0
  145. package/src/utils/sleep.ts +32 -32
  146. package/src/utils/timings.ts +31 -31
  147. package/src/utils/visual.ts +159 -159
  148. package/src/workflows/discover-workflows.ts +30 -3
  149. package/src/workflows/validate-workflow.ts +40 -40
  150. package/src/worktree/branch-freshness.ts +45 -45
  151. package/teams/default.team.md +12 -12
  152. package/teams/fast-fix.team.md +11 -11
  153. package/teams/implementation.team.md +18 -18
  154. package/teams/parallel-research.team.md +14 -14
  155. package/teams/research.team.md +11 -11
  156. package/teams/review.team.md +12 -12
  157. package/workflows/default.workflow.md +29 -29
  158. package/workflows/fast-fix.workflow.md +22 -22
  159. package/workflows/implementation.workflow.md +38 -38
  160. package/workflows/parallel-research.workflow.md +46 -46
  161. package/workflows/research.workflow.md +22 -22
  162. package/workflows/review.workflow.md +30 -30
@@ -1,174 +1,174 @@
1
- # Research: `source/pi-crew` as New Reference Source
2
-
3
- Date: 2026-04-29
4
- Reference source: `D:/my/my_project/source/pi-crew` (`@melihmucuk/pi-crew@1.0.14`, commit `c0631a3`)
5
- Current target: `D:/my/my_project/pi-crew` (`pi-crew@0.1.34`)
6
- Research run: `team_20260429091311_8047706b`
7
-
8
- > Note: the parallel research run produced useful artifacts, but child workers were marked failed because they did not exit within 5s after their final assistant message. The source audit content was still captured in result/shared artifacts.
9
-
10
- ## Executive Summary
11
-
12
- `source/pi-crew` is a compact, in-process subagent orchestration extension. It is not a team/workflow engine; instead, it focuses on fast non-blocking subagent sessions, owner-routed steering-message delivery, interactive subagents, and context-overflow recovery. It is valuable as a reference for **session-native subagent runtime**, **delivery semantics**, and **minimal interactive worker UX**.
13
-
14
- Current `pi-crew` is more powerful and durable: child Pi workers, teams/workflows, task graph scheduling, worktrees, mailbox, event logs, dashboard, notifications, and recovery state. The best path is not replacement; it is selective porting of patterns into `pi-crew`'s existing `live-session-runtime` / `SubagentManager` as an optional session-native lane.
15
-
16
- ## Source File Map
17
-
18
- | Area | Reference files |
19
- |---|---|
20
- | Extension entry/session hooks | `source/pi-crew/extension/index.ts` |
21
- | Runtime singleton | `source/pi-crew/extension/runtime/crew-runtime.ts` |
22
- | Delivery routing | `source/pi-crew/extension/runtime/delivery-coordinator.ts` |
23
- | State model/registry | `source/pi-crew/extension/runtime/subagent-state.ts`, `source/pi-crew/extension/runtime/subagent-registry.ts` |
24
- | Overflow recovery | `source/pi-crew/extension/runtime/overflow-recovery.ts` |
25
- | Session bootstrap | `source/pi-crew/extension/bootstrap-session.ts` |
26
- | Agent discovery | `source/pi-crew/extension/agent-discovery.ts` |
27
- | Tool registration | `source/pi-crew/extension/integration/register-tools.ts`, `source/pi-crew/extension/integration/tools/*.ts` |
28
- | Message renderers | `source/pi-crew/extension/integration/register-renderers.ts` |
29
- | Message formatting | `source/pi-crew/extension/subagent-messages.ts` |
30
- | Status widget | `source/pi-crew/extension/status-widget.ts` |
31
- | Architecture doc | `source/pi-crew/docs/architecture.md` |
32
-
33
- ## Architecture Observations
34
-
35
- ### Reference `source/pi-crew`
36
-
37
- - Process-level singleton `CrewRuntime` survives Pi runtime/session replacement and rebinds on `session_start`.
38
- - Subagents are in-process SDK `AgentSession`s created with `createAgentSession()`.
39
- - Parent/child linkage uses `SessionManager.newSession({ parentSession })`.
40
- - Subagent resource loading filters out the pi-crew extension through `extensionsOverride` to prevent recursive `crew_spawn` loops.
41
- - Results are delivered through Pi-native `sendMessage()` with explicit idle/streaming semantics.
42
- - Interactive subagents are first-class: `interactive: true` workers enter `waiting`; parent continues with `crew_respond`; cleanup is explicit with `crew_done`.
43
- - Overflow recovery tracks `agent_end`, `compaction_start/end`, and `auto_retry_start/end` events around `session.prompt()`.
44
- - State is in-memory only; subagent session files remain for post-hoc `/resume` inspection.
45
-
46
- ### Current `pi-crew`
47
-
48
- - Primary runtime is child Pi process execution with durable `.crew/state` manifests and artifacts.
49
- - It has workflow/team abstractions, task graphs, worktree support, event log, mailbox, dashboard panes, render scheduler, notifications, and diagnostic exports.
50
- - It already has `live-session-runtime.ts`, but the current product surface centers on durable child-process workers rather than interactive in-process subagents.
51
-
52
- ## Extension API Patterns Worth Reusing
53
-
54
- | Pattern | Reference source | Why it matters for current `pi-crew` |
55
- |---|---|---|
56
- | Owner-routed delivery by `sessionManager.getSessionId()` | `delivery-coordinator.ts` | Avoids sending async worker results to the wrong active session after `/resume`, `/new`, `/fork`, or multi-session use. |
57
- | Idle vs streaming delivery split | `subagent-messages.ts`, `delivery-coordinator.ts` | Prevents messages from getting stuck: idle sessions need `triggerTurn`; streaming sessions need `deliverAs: "steer"`. |
58
- | Deferred pending flush via `setTimeout(0)` | `delivery-coordinator.ts` | Avoids lost JSONL/custom-message persistence during resume before listeners reconnect. |
59
- | `extensionsOverride` filter | `bootstrap-session.ts` | Required for any in-process worker lane to prevent recursive subagent spawning. |
60
- | Fire-and-forget interactive response | `crew-respond.ts`, `crew-runtime.ts` | Lets parent stay responsive while an interactive worker continues in background. |
61
- | No duplicate done message | `crew-done.ts` | Avoids repeating the last subagent response during cleanup. |
62
- | Source-specific abort reasons | `crew-abort.ts`, `index.ts` shutdown handlers | Better diagnostics than generic "aborted by user". |
63
- | Emergency unrestricted abort command | `register-command.ts` | Useful escape hatch distinct from owner-scoped tool actions. |
64
- | Overflow tracker around SDK prompt | `overflow-recovery.ts` | Better UX for context overflow/compaction/retry in session-native workers. |
65
-
66
- ## Key Differences / Non-Goals
67
-
68
- | Dimension | Reference `source/pi-crew` | Current `pi-crew` |
69
- |---|---|---|
70
- | Runtime | In-process `AgentSession` | Child Pi processes + durable orchestration |
71
- | State | In-memory map | Durable manifests/event logs/artifacts |
72
- | Scope | Flat subagent spawn/respond/done | Teams, workflows, task graph, worktrees |
73
- | Result UX | Pi steering/custom messages | Tool results, mailbox, dashboard, async status |
74
- | Interactive workers | Native | Not yet first-class |
75
- | Worktree isolation | None | First-class |
76
- | Replay/restart | Limited | Strong durable recovery |
77
-
78
- Do **not** replace the current runtime wholesale. Reference `source/pi-crew` lacks durable state, worktrees, workflow scheduling, artifact indexing, and the Phase 8 operator experience. Its best value is a narrower session-native execution lane and delivery correctness patterns.
79
-
80
- ## Recommendations
81
-
82
- ### P0 — Adopt Delivery Semantics for Async/Live Results
83
-
84
- Implement or adapt a small owner-routed delivery coordinator in current `pi-crew`:
85
-
86
- - Key by owner `sessionId`, not session file.
87
- - Queue pending messages when owner inactive.
88
- - On `session_start`, flush pending messages on next macrotask.
89
- - Use idle/streaming split:
90
- - idle: `sendMessage(payload, { triggerTurn: true })`
91
- - streaming: `sendMessage(payload, { deliverAs: "steer", triggerTurn: true })`
92
- - Keep current mailbox/event-log as durable source of truth; use delivery coordinator only for live UX.
93
-
94
- Likely target files:
95
-
96
- - `pi-crew/src/extension/register.ts`
97
- - `pi-crew/src/runtime/subagent-manager.ts`
98
- - `pi-crew/src/runtime/live-session-runtime.ts`
99
- - `pi-crew/src/extension/notification-router.ts`
100
-
101
- ### P1 — Add Optional Session-Native Subagent Lane
102
-
103
- Build an opt-in lane on top of existing `live-session-runtime.ts` rather than changing the default child-process runtime:
104
-
105
- - `runtime.mode = "child-process" | "live-session" | "auto"` already exists conceptually; tighten semantics.
106
- - Use `SessionManager.newSession({ parentSession })` and `createAgentSession()` for in-process workers.
107
- - Filter `pi-crew` out of subagent resource loader extensions.
108
- - Persist minimal metadata to existing `.crew/state` so dashboards/recovery still work.
109
-
110
- This can reduce process startup overhead and blank console issues, while preserving child-process isolation as the safe default.
111
-
112
- ### P1 — Introduce Interactive Worker Semantics
113
-
114
- Add first-class interactive subagents without disrupting teams:
115
-
116
- - New status: `waiting` for interactive background workers.
117
- - `crew_agent_respond` / `crew_agent_done` or extend existing `crew_agent_steer` semantics.
118
- - Fire-and-forget response: parent tool returns immediately; worker response arrives as mailbox/steering message.
119
- - `done` performs cleanup only; no duplicate response.
120
-
121
- Likely target files:
122
-
123
- - `pi-crew/src/runtime/crew-agent-records.ts`
124
- - `pi-crew/src/runtime/subagent-manager.ts`
125
- - `pi-crew/src/extension/registration/subagent-tools.ts`
126
- - `pi-crew/src/state/mailbox.ts`
127
- - `pi-crew/src/ui/dashboard-panes/agents-pane.ts`
128
-
129
- ### P2 — Port Overflow Recovery Tracker for Live Sessions
130
-
131
- For session-native workers, wrap `AgentSession.prompt()` with an event tracker similar to `source/pi-crew/extension/runtime/overflow-recovery.ts`:
132
-
133
- - Track `compaction_start/end` and `auto_retry_start/end`.
134
- - Report recovered context overflow separately from hard failure.
135
- - Emit durable event-log records and dashboard health hints.
136
-
137
- This should not apply to child Pi workers directly; they already have process/transcript supervision.
138
-
139
- ### P2 — Improve Abort Reason Taxonomy
140
-
141
- Adopt explicit abort source reasons across all worker paths:
142
-
143
- - tool-triggered abort
144
- - command-triggered emergency abort
145
- - session quit cleanup
146
- - session replacement detach/deactivate
147
- - watchdog timeout
148
- - stale heartbeat kill
149
-
150
- This improves diagnostics, notification routing, and Phase 9 reliability work.
151
-
152
- ## Risks
153
-
154
- - In-process sessions reduce OS/process isolation; failures or leaks may affect the parent Pi process.
155
- - `extensionsOverride` is mandatory; missing it risks recursive subagent spawning.
156
- - Pi SDK internals may shift; keep this lane optional and covered by integration tests.
157
- - Delivery semantics must not bypass durable mailbox/event log; live messages are convenience, not source of truth.
158
- - Interactive workers can linger in memory; require TTL/status visibility and explicit cleanup.
159
-
160
- ## Suggested Follow-Up Plan
161
-
162
- 1. Write a focused design doc: `docs/research-session-native-runtime-plan.md`.
163
- 2. Spike delivery coordinator only; no runtime swap.
164
- 3. Add tests for idle/streaming/inactive owner delivery behavior.
165
- 4. Add optional `live-session` worker lane behind config.
166
- 5. Add interactive worker status/actions after live delivery is stable.
167
-
168
- ## Research Artifacts
169
-
170
- - `D:/my/my_project/.crew/artifacts/team_20260429091311_8047706b/results/01_discover.txt`
171
- - `D:/my/my_project/.crew/artifacts/team_20260429091311_8047706b/results/02_explore-shard-1.txt`
172
- - `D:/my/my_project/.crew/artifacts/team_20260429091311_8047706b/results/03_explore-shard-2.txt`
173
- - `D:/my/my_project/.crew/artifacts/team_20260429091311_8047706b/results/04_explore-shard-3.txt`
174
- - `D:/my/my_project/.crew/artifacts/team_20260429091311_8047706b/batches/01_discover+02_explore-shard-1+03_explore-shard-2+04_explore-shard-3.md`
1
+ # Research: `source/pi-crew` as New Reference Source
2
+
3
+ Date: 2026-04-29
4
+ Reference source: `D:/my/my_project/source/pi-crew` (`@melihmucuk/pi-crew@1.0.14`, commit `c0631a3`)
5
+ Current target: `D:/my/my_project/pi-crew` (`pi-crew@0.1.34`)
6
+ Research run: `team_20260429091311_8047706b`
7
+
8
+ > Note: the parallel research run produced useful artifacts, but child workers were marked failed because they did not exit within 5s after their final assistant message. The source audit content was still captured in result/shared artifacts.
9
+
10
+ ## Executive Summary
11
+
12
+ `source/pi-crew` is a compact, in-process subagent orchestration extension. It is not a team/workflow engine; instead, it focuses on fast non-blocking subagent sessions, owner-routed steering-message delivery, interactive subagents, and context-overflow recovery. It is valuable as a reference for **session-native subagent runtime**, **delivery semantics**, and **minimal interactive worker UX**.
13
+
14
+ Current `pi-crew` is more powerful and durable: child Pi workers, teams/workflows, task graph scheduling, worktrees, mailbox, event logs, dashboard, notifications, and recovery state. The best path is not replacement; it is selective porting of patterns into `pi-crew`'s existing `live-session-runtime` / `SubagentManager` as an optional session-native lane.
15
+
16
+ ## Source File Map
17
+
18
+ | Area | Reference files |
19
+ |---|---|
20
+ | Extension entry/session hooks | `source/pi-crew/extension/index.ts` |
21
+ | Runtime singleton | `source/pi-crew/extension/runtime/crew-runtime.ts` |
22
+ | Delivery routing | `source/pi-crew/extension/runtime/delivery-coordinator.ts` |
23
+ | State model/registry | `source/pi-crew/extension/runtime/subagent-state.ts`, `source/pi-crew/extension/runtime/subagent-registry.ts` |
24
+ | Overflow recovery | `source/pi-crew/extension/runtime/overflow-recovery.ts` |
25
+ | Session bootstrap | `source/pi-crew/extension/bootstrap-session.ts` |
26
+ | Agent discovery | `source/pi-crew/extension/agent-discovery.ts` |
27
+ | Tool registration | `source/pi-crew/extension/integration/register-tools.ts`, `source/pi-crew/extension/integration/tools/*.ts` |
28
+ | Message renderers | `source/pi-crew/extension/integration/register-renderers.ts` |
29
+ | Message formatting | `source/pi-crew/extension/subagent-messages.ts` |
30
+ | Status widget | `source/pi-crew/extension/status-widget.ts` |
31
+ | Architecture doc | `source/pi-crew/docs/architecture.md` |
32
+
33
+ ## Architecture Observations
34
+
35
+ ### Reference `source/pi-crew`
36
+
37
+ - Process-level singleton `CrewRuntime` survives Pi runtime/session replacement and rebinds on `session_start`.
38
+ - Subagents are in-process SDK `AgentSession`s created with `createAgentSession()`.
39
+ - Parent/child linkage uses `SessionManager.newSession({ parentSession })`.
40
+ - Subagent resource loading filters out the pi-crew extension through `extensionsOverride` to prevent recursive `crew_spawn` loops.
41
+ - Results are delivered through Pi-native `sendMessage()` with explicit idle/streaming semantics.
42
+ - Interactive subagents are first-class: `interactive: true` workers enter `waiting`; parent continues with `crew_respond`; cleanup is explicit with `crew_done`.
43
+ - Overflow recovery tracks `agent_end`, `compaction_start/end`, and `auto_retry_start/end` events around `session.prompt()`.
44
+ - State is in-memory only; subagent session files remain for post-hoc `/resume` inspection.
45
+
46
+ ### Current `pi-crew`
47
+
48
+ - Primary runtime is child Pi process execution with durable `.crew/state` manifests and artifacts.
49
+ - It has workflow/team abstractions, task graphs, worktree support, event log, mailbox, dashboard panes, render scheduler, notifications, and diagnostic exports.
50
+ - It already has `live-session-runtime.ts`, but the current product surface centers on durable child-process workers rather than interactive in-process subagents.
51
+
52
+ ## Extension API Patterns Worth Reusing
53
+
54
+ | Pattern | Reference source | Why it matters for current `pi-crew` |
55
+ |---|---|---|
56
+ | Owner-routed delivery by `sessionManager.getSessionId()` | `delivery-coordinator.ts` | Avoids sending async worker results to the wrong active session after `/resume`, `/new`, `/fork`, or multi-session use. |
57
+ | Idle vs streaming delivery split | `subagent-messages.ts`, `delivery-coordinator.ts` | Prevents messages from getting stuck: idle sessions need `triggerTurn`; streaming sessions need `deliverAs: "steer"`. |
58
+ | Deferred pending flush via `setTimeout(0)` | `delivery-coordinator.ts` | Avoids lost JSONL/custom-message persistence during resume before listeners reconnect. |
59
+ | `extensionsOverride` filter | `bootstrap-session.ts` | Required for any in-process worker lane to prevent recursive subagent spawning. |
60
+ | Fire-and-forget interactive response | `crew-respond.ts`, `crew-runtime.ts` | Lets parent stay responsive while an interactive worker continues in background. |
61
+ | No duplicate done message | `crew-done.ts` | Avoids repeating the last subagent response during cleanup. |
62
+ | Source-specific abort reasons | `crew-abort.ts`, `index.ts` shutdown handlers | Better diagnostics than generic "aborted by user". |
63
+ | Emergency unrestricted abort command | `register-command.ts` | Useful escape hatch distinct from owner-scoped tool actions. |
64
+ | Overflow tracker around SDK prompt | `overflow-recovery.ts` | Better UX for context overflow/compaction/retry in session-native workers. |
65
+
66
+ ## Key Differences / Non-Goals
67
+
68
+ | Dimension | Reference `source/pi-crew` | Current `pi-crew` |
69
+ |---|---|---|
70
+ | Runtime | In-process `AgentSession` | Child Pi processes + durable orchestration |
71
+ | State | In-memory map | Durable manifests/event logs/artifacts |
72
+ | Scope | Flat subagent spawn/respond/done | Teams, workflows, task graph, worktrees |
73
+ | Result UX | Pi steering/custom messages | Tool results, mailbox, dashboard, async status |
74
+ | Interactive workers | Native | Not yet first-class |
75
+ | Worktree isolation | None | First-class |
76
+ | Replay/restart | Limited | Strong durable recovery |
77
+
78
+ Do **not** replace the current runtime wholesale. Reference `source/pi-crew` lacks durable state, worktrees, workflow scheduling, artifact indexing, and the Phase 8 operator experience. Its best value is a narrower session-native execution lane and delivery correctness patterns.
79
+
80
+ ## Recommendations
81
+
82
+ ### P0 — Adopt Delivery Semantics for Async/Live Results
83
+
84
+ Implement or adapt a small owner-routed delivery coordinator in current `pi-crew`:
85
+
86
+ - Key by owner `sessionId`, not session file.
87
+ - Queue pending messages when owner inactive.
88
+ - On `session_start`, flush pending messages on next macrotask.
89
+ - Use idle/streaming split:
90
+ - idle: `sendMessage(payload, { triggerTurn: true })`
91
+ - streaming: `sendMessage(payload, { deliverAs: "steer", triggerTurn: true })`
92
+ - Keep current mailbox/event-log as durable source of truth; use delivery coordinator only for live UX.
93
+
94
+ Likely target files:
95
+
96
+ - `pi-crew/src/extension/register.ts`
97
+ - `pi-crew/src/runtime/subagent-manager.ts`
98
+ - `pi-crew/src/runtime/live-session-runtime.ts`
99
+ - `pi-crew/src/extension/notification-router.ts`
100
+
101
+ ### P1 — Add Optional Session-Native Subagent Lane
102
+
103
+ Build an opt-in lane on top of existing `live-session-runtime.ts` rather than changing the default child-process runtime:
104
+
105
+ - `runtime.mode = "child-process" | "live-session" | "auto"` already exists conceptually; tighten semantics.
106
+ - Use `SessionManager.newSession({ parentSession })` and `createAgentSession()` for in-process workers.
107
+ - Filter `pi-crew` out of subagent resource loader extensions.
108
+ - Persist minimal metadata to existing `.crew/state` so dashboards/recovery still work.
109
+
110
+ This can reduce process startup overhead and blank console issues, while preserving child-process isolation as the safe default.
111
+
112
+ ### P1 — Introduce Interactive Worker Semantics
113
+
114
+ Add first-class interactive subagents without disrupting teams:
115
+
116
+ - New status: `waiting` for interactive background workers.
117
+ - `crew_agent_respond` / `crew_agent_done` or extend existing `crew_agent_steer` semantics.
118
+ - Fire-and-forget response: parent tool returns immediately; worker response arrives as mailbox/steering message.
119
+ - `done` performs cleanup only; no duplicate response.
120
+
121
+ Likely target files:
122
+
123
+ - `pi-crew/src/runtime/crew-agent-records.ts`
124
+ - `pi-crew/src/runtime/subagent-manager.ts`
125
+ - `pi-crew/src/extension/registration/subagent-tools.ts`
126
+ - `pi-crew/src/state/mailbox.ts`
127
+ - `pi-crew/src/ui/dashboard-panes/agents-pane.ts`
128
+
129
+ ### P2 — Port Overflow Recovery Tracker for Live Sessions
130
+
131
+ For session-native workers, wrap `AgentSession.prompt()` with an event tracker similar to `source/pi-crew/extension/runtime/overflow-recovery.ts`:
132
+
133
+ - Track `compaction_start/end` and `auto_retry_start/end`.
134
+ - Report recovered context overflow separately from hard failure.
135
+ - Emit durable event-log records and dashboard health hints.
136
+
137
+ This should not apply to child Pi workers directly; they already have process/transcript supervision.
138
+
139
+ ### P2 — Improve Abort Reason Taxonomy
140
+
141
+ Adopt explicit abort source reasons across all worker paths:
142
+
143
+ - tool-triggered abort
144
+ - command-triggered emergency abort
145
+ - session quit cleanup
146
+ - session replacement detach/deactivate
147
+ - watchdog timeout
148
+ - stale heartbeat kill
149
+
150
+ This improves diagnostics, notification routing, and Phase 9 reliability work.
151
+
152
+ ## Risks
153
+
154
+ - In-process sessions reduce OS/process isolation; failures or leaks may affect the parent Pi process.
155
+ - `extensionsOverride` is mandatory; missing it risks recursive subagent spawning.
156
+ - Pi SDK internals may shift; keep this lane optional and covered by integration tests.
157
+ - Delivery semantics must not bypass durable mailbox/event log; live messages are convenience, not source of truth.
158
+ - Interactive workers can linger in memory; require TTL/status visibility and explicit cleanup.
159
+
160
+ ## Suggested Follow-Up Plan
161
+
162
+ 1. Write a focused design doc: `docs/research-session-native-runtime-plan.md`.
163
+ 2. Spike delivery coordinator only; no runtime swap.
164
+ 3. Add tests for idle/streaming/inactive owner delivery behavior.
165
+ 4. Add optional `live-session` worker lane behind config.
166
+ 5. Add interactive worker status/actions after live delivery is stable.
167
+
168
+ ## Research Artifacts
169
+
170
+ - `D:/my/my_project/.crew/artifacts/team_20260429091311_8047706b/results/01_discover.txt`
171
+ - `D:/my/my_project/.crew/artifacts/team_20260429091311_8047706b/results/02_explore-shard-1.txt`
172
+ - `D:/my/my_project/.crew/artifacts/team_20260429091311_8047706b/results/03_explore-shard-2.txt`
173
+ - `D:/my/my_project/.crew/artifacts/team_20260429091311_8047706b/results/04_explore-shard-3.txt`
174
+ - `D:/my/my_project/.crew/artifacts/team_20260429091311_8047706b/batches/01_discover+02_explore-shard-1+03_explore-shard-2+04_explore-shard-3.md`
@@ -5,9 +5,10 @@
5
5
  Location:
6
6
 
7
7
  ```text
8
- agents/{name}.md
9
- ~/.pi/agent/agents/{name}.md
10
- .pi/agents/{name}.md
8
+ agents/{name}.md # builtin (in this package)
9
+ ~/.pi/agent/agents/{name}.md # user-global
10
+ .crew/agents/{name}.md # project (new layout)
11
+ .pi/teams/agents/{name}.md # project (legacy layout when .pi/ exists)
11
12
  ```
12
13
 
13
14
  Format:
@@ -80,7 +81,7 @@ category: implementation
80
81
  Role line:
81
82
 
82
83
  ```text
83
- - {role-name}: agent={agent-name} optional description
84
+ - {role-name}: agent={agent-name} [model={provider/model}] [skills={a,b}|false] [maxConcurrency={n}] optional description
84
85
  ```
85
86
 
86
87
  ## Workflow files
@@ -88,9 +89,10 @@ Role line:
88
89
  Location:
89
90
 
90
91
  ```text
91
- workflows/{name}.workflow.md
92
- ~/.pi/agent/workflows/{name}.workflow.md
93
- .pi/workflows/{name}.workflow.md
92
+ workflows/{name}.workflow.md # builtin (in this package)
93
+ ~/.pi/agent/workflows/{name}.workflow.md # user-global
94
+ .crew/workflows/{name}.workflow.md # project (new layout)
95
+ .pi/teams/workflows/{name}.workflow.md # project (legacy layout when .pi/ exists)
94
96
  ```
95
97
 
96
98
  Format:
@@ -129,4 +131,4 @@ Step fields:
129
131
  | `worktree` | `true`/`false` metadata |
130
132
  | `verify` | `true`/`false` verification marker |
131
133
 
132
- Avoid using level-2 headings (`##`) inside task bodies because they delimit workflow steps.
134
+ Each step starts with `## step-id` followed by recognized step metadata such as `role:` before the blank line. Level-2 headings inside task bodies are preserved unless they look like a step section with recognized metadata; use `###` or lower for maximum compatibility.