@jaggerxtrm/specialists 3.7.1 → 3.10.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 (193) hide show
  1. package/README.md +23 -9
  2. package/config/mandatory-rules/README.md +113 -0
  3. package/config/mandatory-rules/gitnexus-required.md +12 -1
  4. package/config/mandatory-rules/serena-cheatsheet.md +41 -0
  5. package/config/skills/specialists-creator/SKILL.md +6 -32
  6. package/config/skills/specialists-creator/scripts/audit-spec-uniformity.mjs +86 -0
  7. package/config/skills/specialists-creator/scripts/scaffold-specialist.ts +1 -6
  8. package/config/skills/update-specialists/SKILL.md +83 -8
  9. package/config/skills/using-specialists/SKILL.md +13 -0
  10. package/config/skills/using-specialists-v2/SKILL.md +639 -0
  11. package/config/specialists/debugger.specialist.json +7 -9
  12. package/config/specialists/executor.specialist.json +5 -6
  13. package/config/specialists/explorer.specialist.json +3 -7
  14. package/config/specialists/memory-processor.specialist.json +8 -9
  15. package/config/specialists/node-coordinator.specialist.json +1 -5
  16. package/config/specialists/overthinker.specialist.json +7 -13
  17. package/config/specialists/planner.specialist.json +12 -12
  18. package/config/specialists/researcher.specialist.json +9 -14
  19. package/config/specialists/reviewer.specialist.json +8 -8
  20. package/config/specialists/specialists-creator.specialist.json +7 -2
  21. package/config/specialists/sync-docs.specialist.json +7 -11
  22. package/config/specialists/test-runner.specialist.json +4 -13
  23. package/config/specialists/xt-merge.specialist.json +3 -5
  24. package/dist/index.js +3066 -1368
  25. package/dist/lib.js +13219 -0
  26. package/dist/types/cli/attach.d.ts +2 -0
  27. package/dist/types/cli/attach.d.ts.map +1 -0
  28. package/dist/types/cli/clean.d.ts +2 -0
  29. package/dist/types/cli/clean.d.ts.map +1 -0
  30. package/dist/types/cli/config.d.ts +2 -0
  31. package/dist/types/cli/config.d.ts.map +1 -0
  32. package/dist/types/cli/db.d.ts +2 -0
  33. package/dist/types/cli/db.d.ts.map +1 -0
  34. package/dist/types/cli/doctor.d.ts +15 -0
  35. package/dist/types/cli/doctor.d.ts.map +1 -0
  36. package/dist/types/cli/edit.d.ts +2 -0
  37. package/dist/types/cli/edit.d.ts.map +1 -0
  38. package/dist/types/cli/end.d.ts +2 -0
  39. package/dist/types/cli/end.d.ts.map +1 -0
  40. package/dist/types/cli/epic.d.ts +8 -0
  41. package/dist/types/cli/epic.d.ts.map +1 -0
  42. package/dist/types/cli/feed.d.ts +19 -0
  43. package/dist/types/cli/feed.d.ts.map +1 -0
  44. package/dist/types/cli/follow-up.d.ts +2 -0
  45. package/dist/types/cli/follow-up.d.ts.map +1 -0
  46. package/dist/types/cli/format-helpers.d.ts +108 -0
  47. package/dist/types/cli/format-helpers.d.ts.map +1 -0
  48. package/dist/types/cli/help.d.ts +2 -0
  49. package/dist/types/cli/help.d.ts.map +1 -0
  50. package/dist/types/cli/init.d.ts +10 -0
  51. package/dist/types/cli/init.d.ts.map +1 -0
  52. package/dist/types/cli/install.d.ts +2 -0
  53. package/dist/types/cli/install.d.ts.map +1 -0
  54. package/dist/types/cli/list-rules.d.ts +2 -0
  55. package/dist/types/cli/list-rules.d.ts.map +1 -0
  56. package/dist/types/cli/list.d.ts +13 -0
  57. package/dist/types/cli/list.d.ts.map +1 -0
  58. package/dist/types/cli/memory.d.ts +2 -0
  59. package/dist/types/cli/memory.d.ts.map +1 -0
  60. package/dist/types/cli/merge.d.ts +79 -0
  61. package/dist/types/cli/merge.d.ts.map +1 -0
  62. package/dist/types/cli/models.d.ts +2 -0
  63. package/dist/types/cli/models.d.ts.map +1 -0
  64. package/dist/types/cli/node.d.ts +2 -0
  65. package/dist/types/cli/node.d.ts.map +1 -0
  66. package/dist/types/cli/poll.d.ts +25 -0
  67. package/dist/types/cli/poll.d.ts.map +1 -0
  68. package/dist/types/cli/ps.d.ts +2 -0
  69. package/dist/types/cli/ps.d.ts.map +1 -0
  70. package/dist/types/cli/quickstart.d.ts +2 -0
  71. package/dist/types/cli/quickstart.d.ts.map +1 -0
  72. package/dist/types/cli/result.d.ts +2 -0
  73. package/dist/types/cli/result.d.ts.map +1 -0
  74. package/dist/types/cli/resume.d.ts +2 -0
  75. package/dist/types/cli/resume.d.ts.map +1 -0
  76. package/dist/types/cli/run.d.ts +2 -0
  77. package/dist/types/cli/run.d.ts.map +1 -0
  78. package/dist/types/cli/script.d.ts +23 -0
  79. package/dist/types/cli/script.d.ts.map +1 -0
  80. package/dist/types/cli/serve.d.ts +17 -0
  81. package/dist/types/cli/serve.d.ts.map +1 -0
  82. package/dist/types/cli/setup.d.ts +2 -0
  83. package/dist/types/cli/setup.d.ts.map +1 -0
  84. package/dist/types/cli/status.d.ts +4 -0
  85. package/dist/types/cli/status.d.ts.map +1 -0
  86. package/dist/types/cli/steer.d.ts +2 -0
  87. package/dist/types/cli/steer.d.ts.map +1 -0
  88. package/dist/types/cli/stop.d.ts +2 -0
  89. package/dist/types/cli/stop.d.ts.map +1 -0
  90. package/dist/types/cli/tmux-utils.d.ts +23 -0
  91. package/dist/types/cli/tmux-utils.d.ts.map +1 -0
  92. package/dist/types/cli/validate.d.ts +11 -0
  93. package/dist/types/cli/validate.d.ts.map +1 -0
  94. package/dist/types/cli/version.d.ts +2 -0
  95. package/dist/types/cli/version.d.ts.map +1 -0
  96. package/dist/types/cli/view.d.ts +2 -0
  97. package/dist/types/cli/view.d.ts.map +1 -0
  98. package/dist/types/constants.d.ts +140 -0
  99. package/dist/types/constants.d.ts.map +1 -0
  100. package/dist/types/index.d.ts +8 -0
  101. package/dist/types/index.d.ts.map +1 -0
  102. package/dist/types/lib.d.ts +5 -0
  103. package/dist/types/lib.d.ts.map +1 -0
  104. package/dist/types/pi/backendMap.d.ts +3 -0
  105. package/dist/types/pi/backendMap.d.ts.map +1 -0
  106. package/dist/types/pi/session.d.ts +209 -0
  107. package/dist/types/pi/session.d.ts.map +1 -0
  108. package/dist/types/server.d.ts +10 -0
  109. package/dist/types/server.d.ts.map +1 -0
  110. package/dist/types/specialist/beads.d.ts +60 -0
  111. package/dist/types/specialist/beads.d.ts.map +1 -0
  112. package/dist/types/specialist/chain-identity.d.ts +18 -0
  113. package/dist/types/specialist/chain-identity.d.ts.map +1 -0
  114. package/dist/types/specialist/epic-lifecycle.d.ts +57 -0
  115. package/dist/types/specialist/epic-lifecycle.d.ts.map +1 -0
  116. package/dist/types/specialist/epic-readiness.d.ts +55 -0
  117. package/dist/types/specialist/epic-readiness.d.ts.map +1 -0
  118. package/dist/types/specialist/epic-reconciler.d.ts +35 -0
  119. package/dist/types/specialist/epic-reconciler.d.ts.map +1 -0
  120. package/dist/types/specialist/hooks.d.ts +44 -0
  121. package/dist/types/specialist/hooks.d.ts.map +1 -0
  122. package/dist/types/specialist/job-control.d.ts +29 -0
  123. package/dist/types/specialist/job-control.d.ts.map +1 -0
  124. package/dist/types/specialist/job-file-output.d.ts +4 -0
  125. package/dist/types/specialist/job-file-output.d.ts.map +1 -0
  126. package/dist/types/specialist/job-root.d.ts +21 -0
  127. package/dist/types/specialist/job-root.d.ts.map +1 -0
  128. package/dist/types/specialist/jobRegistry.d.ts +69 -0
  129. package/dist/types/specialist/jobRegistry.d.ts.map +1 -0
  130. package/dist/types/specialist/json-output.d.ts +2 -0
  131. package/dist/types/specialist/json-output.d.ts.map +1 -0
  132. package/dist/types/specialist/loader.d.ts +48 -0
  133. package/dist/types/specialist/loader.d.ts.map +1 -0
  134. package/dist/types/specialist/mandatory-rules.d.ts +41 -0
  135. package/dist/types/specialist/mandatory-rules.d.ts.map +1 -0
  136. package/dist/types/specialist/memory-retrieval.d.ts +34 -0
  137. package/dist/types/specialist/memory-retrieval.d.ts.map +1 -0
  138. package/dist/types/specialist/model-display.d.ts +4 -0
  139. package/dist/types/specialist/model-display.d.ts.map +1 -0
  140. package/dist/types/specialist/node-contract.d.ts +343 -0
  141. package/dist/types/specialist/node-contract.d.ts.map +1 -0
  142. package/dist/types/specialist/node-resolve.d.ts +5 -0
  143. package/dist/types/specialist/node-resolve.d.ts.map +1 -0
  144. package/dist/types/specialist/node-supervisor.d.ts +198 -0
  145. package/dist/types/specialist/node-supervisor.d.ts.map +1 -0
  146. package/dist/types/specialist/observability-db.d.ts +19 -0
  147. package/dist/types/specialist/observability-db.d.ts.map +1 -0
  148. package/dist/types/specialist/observability-sqlite.d.ts +218 -0
  149. package/dist/types/specialist/observability-sqlite.d.ts.map +1 -0
  150. package/dist/types/specialist/pipeline.d.ts +23 -0
  151. package/dist/types/specialist/pipeline.d.ts.map +1 -0
  152. package/dist/types/specialist/process-liveness.d.ts +2 -0
  153. package/dist/types/specialist/process-liveness.d.ts.map +1 -0
  154. package/dist/types/specialist/runner.d.ts +98 -0
  155. package/dist/types/specialist/runner.d.ts.map +1 -0
  156. package/dist/types/specialist/schema.d.ts +2875 -0
  157. package/dist/types/specialist/schema.d.ts.map +1 -0
  158. package/dist/types/specialist/script-runner.d.ts +47 -0
  159. package/dist/types/specialist/script-runner.d.ts.map +1 -0
  160. package/dist/types/specialist/supervisor.d.ts +142 -0
  161. package/dist/types/specialist/supervisor.d.ts.map +1 -0
  162. package/dist/types/specialist/templateEngine.d.ts +2 -0
  163. package/dist/types/specialist/templateEngine.d.ts.map +1 -0
  164. package/dist/types/specialist/timeline-events.d.ts +563 -0
  165. package/dist/types/specialist/timeline-events.d.ts.map +1 -0
  166. package/dist/types/specialist/timeline-query.d.ts +129 -0
  167. package/dist/types/specialist/timeline-query.d.ts.map +1 -0
  168. package/dist/types/specialist/worktree-gc.d.ts +24 -0
  169. package/dist/types/specialist/worktree-gc.d.ts.map +1 -0
  170. package/dist/types/specialist/worktree.d.ts +69 -0
  171. package/dist/types/specialist/worktree.d.ts.map +1 -0
  172. package/dist/types/tools/specialist/feed_specialist.tool.d.ts +51 -0
  173. package/dist/types/tools/specialist/feed_specialist.tool.d.ts.map +1 -0
  174. package/dist/types/tools/specialist/list_specialists.tool.d.ts +28 -0
  175. package/dist/types/tools/specialist/list_specialists.tool.d.ts.map +1 -0
  176. package/dist/types/tools/specialist/resume_specialist.tool.d.ts +46 -0
  177. package/dist/types/tools/specialist/resume_specialist.tool.d.ts.map +1 -0
  178. package/dist/types/tools/specialist/specialist_init.tool.d.ts +26 -0
  179. package/dist/types/tools/specialist/specialist_init.tool.d.ts.map +1 -0
  180. package/dist/types/tools/specialist/specialist_status.tool.d.ts +33 -0
  181. package/dist/types/tools/specialist/specialist_status.tool.d.ts.map +1 -0
  182. package/dist/types/tools/specialist/steer_specialist.tool.d.ts +38 -0
  183. package/dist/types/tools/specialist/steer_specialist.tool.d.ts.map +1 -0
  184. package/dist/types/tools/specialist/stop_specialist.tool.d.ts +31 -0
  185. package/dist/types/tools/specialist/stop_specialist.tool.d.ts.map +1 -0
  186. package/dist/types/tools/specialist/use_specialist.tool.d.ts +93 -0
  187. package/dist/types/tools/specialist/use_specialist.tool.d.ts.map +1 -0
  188. package/dist/types/utils/circuitBreaker.d.ts +19 -0
  189. package/dist/types/utils/circuitBreaker.d.ts.map +1 -0
  190. package/dist/types/utils/logger.d.ts +11 -0
  191. package/dist/types/utils/logger.d.ts.map +1 -0
  192. package/package.json +13 -2
  193. package/config/specialists/parallel-review.specialist.json +0 -65
@@ -0,0 +1,563 @@
1
+ /**
2
+ * Feed v2 Timeline Event Model
3
+ *
4
+ * This module defines the canonical event types for the specialists feed v2 timeline.
5
+ * It is grounded in the actual Pi RPC lifecycle, not in legacy callback abstractions.
6
+ *
7
+ * ## Source of truth
8
+ *
9
+ * This model was derived from:
10
+ * - Live `pi --mode rpc` traces (see unitAI-4pq.1 exploration notes)
11
+ * - Official docs in docs/pi-rpc.md
12
+ * - Current implementation analysis in src/pi/session.ts, src/specialist/supervisor.ts
13
+ *
14
+ * ## Layer model (from RPC reality)
15
+ *
16
+ * 1. **Message construction layer** (nested under message_update.assistantMessageEvent):
17
+ * - text_start, text_delta, text_end
18
+ * - thinking_start, thinking_delta, thinking_end
19
+ * - toolcall_start, toolcall_delta, toolcall_end
20
+ * - done (message-level completion, reasons: stop | length | toolUse)
21
+ * - error (message-level failure, reasons: aborted | error)
22
+ *
23
+ * 2. **Tool execution layer** (top-level):
24
+ * - tool_execution_start
25
+ * - tool_execution_update (optional, streaming)
26
+ * - tool_execution_end
27
+ *
28
+ * 3. **Tool result layer** (message role: toolResult):
29
+ * - message_start (role: toolResult)
30
+ * - message_end
31
+ *
32
+ * 4. **Turn boundary layer**:
33
+ * - turn_start
34
+ * - turn_end (includes assistant message + toolResults[])
35
+ *
36
+ * 5. **Run boundary layer**:
37
+ * - agent_start
38
+ * - agent_end (run completion, contains all messages[])
39
+ *
40
+ * ## Completion semantic
41
+ *
42
+ * For feed v2, the canonical completion event is a single `run_complete` event.
43
+ * This resolves the historical ambiguity between:
44
+ * - callback-level `done` (synthetic, from agent_end)
45
+ * - persisted `agent_end` (added after runner returns)
46
+ *
47
+ * The `run_complete` event is emitted once per job and contains:
48
+ * - final status (COMPLETE | ERROR | CANCELLED)
49
+ * - elapsed time
50
+ * - model/backend
51
+ * - error message if applicable
52
+ *
53
+ * ## Persistence contract
54
+ *
55
+ * events.jsonl contains TimelineEvent records (one per line, NDJSON).
56
+ * status.json remains the live mutable state snapshot.
57
+ * result.txt remains final output storage.
58
+ */
59
+ /**
60
+ * Base fields present in every timeline event.
61
+ * Written to events.jsonl as NDJSON (one event per line).
62
+ */
63
+ export interface TimelineEventBase {
64
+ /** Unix timestamp in milliseconds when the event was written */
65
+ t: number;
66
+ /** Per-job monotonic sequence assigned on write */
67
+ seq?: number;
68
+ /** Event type (see TimelineEventType constants) */
69
+ type: string;
70
+ }
71
+ /**
72
+ * Run started event.
73
+ * Emitted once when the specialist begins processing.
74
+ */
75
+ export interface TimelineEventRunStart extends TimelineEventBase {
76
+ type: 'run_start';
77
+ /** Specialist name */
78
+ specialist: string;
79
+ /** Bead ID if tracking is enabled */
80
+ bead_id?: string;
81
+ startup_snapshot?: {
82
+ job_id?: string;
83
+ specialist_name?: string;
84
+ bead_id?: string;
85
+ reused_from_job_id?: string;
86
+ worktree_owner_job_id?: string;
87
+ chain_id?: string;
88
+ chain_root_job_id?: string;
89
+ chain_root_bead_id?: string;
90
+ worktree_path?: string;
91
+ branch?: string;
92
+ variables_keys?: string[];
93
+ reviewed_job_id_present?: boolean;
94
+ reused_worktree_awareness_present?: boolean;
95
+ bead_context_present?: boolean;
96
+ memory_injection?: {
97
+ static_tokens: number;
98
+ memory_tokens: number;
99
+ gitnexus_tokens: number;
100
+ total_tokens: number;
101
+ };
102
+ mandatory_rules_injection?: {
103
+ sets_loaded: string[];
104
+ rules_count: number;
105
+ inline_rules_count: number;
106
+ globals_disabled: boolean;
107
+ token_estimate: number;
108
+ };
109
+ skills?: {
110
+ count: number;
111
+ activated: string[];
112
+ };
113
+ };
114
+ }
115
+ /**
116
+ * Model/backend metadata event.
117
+ * Emitted when the first assistant message_start reveals provider info.
118
+ */
119
+ export interface TimelineEventMeta extends TimelineEventBase {
120
+ type: 'meta';
121
+ /** Resolved model ID (e.g., 'claude-sonnet-4-6') */
122
+ model: string;
123
+ /** Backend provider (e.g., 'anthropic') */
124
+ backend: string;
125
+ memory_injection?: {
126
+ static_tokens: number;
127
+ memory_tokens: number;
128
+ gitnexus_tokens: number;
129
+ total_tokens: number;
130
+ };
131
+ source?: string;
132
+ data?: Record<string, unknown>;
133
+ }
134
+ /**
135
+ * Thinking event.
136
+ * Emitted once when reasoning/thinking activity is detected.
137
+ * Note: thinking_* are optional and backend-dependent.
138
+ */
139
+ export interface TimelineEventThinking extends TimelineEventBase {
140
+ type: 'thinking';
141
+ char_count?: number;
142
+ }
143
+ /**
144
+ * Tool activity event.
145
+ * Represents tool execution lifecycle (construction + execution + result).
146
+ *
147
+ * Feed v2 collapses toolcall_* and tool_execution_* into a single tool event
148
+ * because:
149
+ * - toolcall construction is nested under message_update (not durable)
150
+ * - tool execution is the observable action
151
+ * - the combined view is what operators care about
152
+ */
153
+ export interface TimelineEventTool extends TimelineEventBase {
154
+ type: 'tool';
155
+ /** Tool name (e.g., 'bash', 'read', 'ls') */
156
+ tool: string;
157
+ /** Execution phase */
158
+ phase: 'start' | 'update' | 'end';
159
+ /** Tool call ID for correlation across start/end events */
160
+ tool_call_id?: string;
161
+ /** True when tool event cannot be correlated to a concrete tool call ID */
162
+ uncorrelated?: boolean;
163
+ /** Whether execution resulted in error */
164
+ is_error?: boolean;
165
+ /** tool_use.input payload forwarded from tool_execution_start */
166
+ args?: Record<string, unknown>;
167
+ /** ISO timestamp of tool start — present on phase=start events for duration computation */
168
+ started_at?: string;
169
+ /** Summarized tool result content (truncated to keep timeline compact) */
170
+ result_summary?: string;
171
+ /** Raw structured tool result payload (when available) */
172
+ result_raw?: Record<string, unknown>;
173
+ }
174
+ /**
175
+ * Text output event.
176
+ * Emitted once when text content is first detected.
177
+ * Feed v2 does not persist text deltas (too verbose); just presence.
178
+ */
179
+ export interface TimelineEventText extends TimelineEventBase {
180
+ type: 'text';
181
+ char_count?: number;
182
+ }
183
+ /**
184
+ * Message boundary event.
185
+ * Captures assistant/toolResult message lifecycle boundaries.
186
+ */
187
+ export interface TimelineEventMessage extends TimelineEventBase {
188
+ type: 'message';
189
+ phase: 'start' | 'end';
190
+ role: 'assistant' | 'toolResult';
191
+ }
192
+ /**
193
+ * Turn boundary event.
194
+ * Captures RPC turn_start / turn_end lifecycle phases.
195
+ */
196
+ export interface TimelineEventTurn extends TimelineEventBase {
197
+ type: 'turn';
198
+ phase: 'start' | 'end';
199
+ }
200
+ export interface TimelineEventStatusChange extends TimelineEventBase {
201
+ type: 'status_change';
202
+ status: 'starting' | 'running' | 'waiting' | 'done' | 'error' | 'cancelled';
203
+ previous_status?: 'starting' | 'running' | 'waiting' | 'done' | 'error' | 'cancelled';
204
+ }
205
+ /**
206
+ * Run completion event.
207
+ * THE CANONICAL COMPLETION SIGNAL FOR FEED V2.
208
+ *
209
+ * Emitted exactly once per run, containing final status and metadata.
210
+ * This replaces the historical double-completion (done + agent_end).
211
+ */
212
+ export interface TimelineTokenUsage {
213
+ input_tokens?: number;
214
+ output_tokens?: number;
215
+ cache_creation_tokens?: number;
216
+ cache_read_tokens?: number;
217
+ total_tokens?: number;
218
+ cost_usd?: number;
219
+ }
220
+ export interface TimelineRunMetrics {
221
+ token_usage?: TimelineTokenUsage;
222
+ finish_reason?: string;
223
+ exit_reason?: string;
224
+ turns?: number;
225
+ tool_calls?: number;
226
+ tool_call_names?: string[];
227
+ auto_compactions?: number;
228
+ auto_retries?: number;
229
+ output_type?: string;
230
+ }
231
+ export interface TimelineEventRunComplete extends TimelineEventBase {
232
+ type: 'run_complete';
233
+ /** Final status */
234
+ status: 'COMPLETE' | 'ERROR' | 'CANCELLED';
235
+ /** Elapsed time in seconds */
236
+ elapsed_s: number;
237
+ /** Model ID */
238
+ model?: string;
239
+ /** Backend provider */
240
+ backend?: string;
241
+ /** Bead ID if tracking was enabled */
242
+ bead_id?: string;
243
+ /** Error message if status is ERROR */
244
+ error?: string;
245
+ /** Final assistant output text */
246
+ output?: string;
247
+ /** Aggregated metrics promoted for easy JSON consumption */
248
+ token_usage?: TimelineTokenUsage;
249
+ finish_reason?: string;
250
+ tool_calls?: string[];
251
+ exit_reason?: string;
252
+ /** Optional additive metrics summary */
253
+ metrics?: TimelineRunMetrics;
254
+ gitnexus_summary?: {
255
+ files_touched: string[];
256
+ symbols_analyzed: string[];
257
+ highest_risk?: 'LOW' | 'MEDIUM' | 'HIGH' | 'CRITICAL';
258
+ tool_invocations: number;
259
+ };
260
+ }
261
+ /**
262
+ * Stale warning event.
263
+ * Emitted when a job has been silent (no activity) beyond a configured threshold,
264
+ * or when a single tool execution exceeds its duration threshold.
265
+ *
266
+ * `reason` discriminates the type of staleness:
267
+ * - `running_silence` — job running, no events for > running_silence_warn_ms
268
+ * - `running_silence_error` — job running, no events for > running_silence_error_ms
269
+ * - `waiting_stale` — job waiting for follow-up for > waiting_stale_ms
270
+ * - `tool_duration` — single tool execution running for > tool_duration_warn_ms
271
+ */
272
+ export interface TimelineEventStaleWarning extends TimelineEventBase {
273
+ type: 'stale_warning';
274
+ reason: 'running_silence' | 'running_silence_error' | 'waiting_stale' | 'tool_duration';
275
+ /** How many ms have elapsed without activity */
276
+ silence_ms: number;
277
+ /** The threshold that was crossed */
278
+ threshold_ms: number;
279
+ /** Tool name, present for tool_duration reason */
280
+ tool?: string;
281
+ }
282
+ export interface TimelineEventTokenUsage extends TimelineEventBase {
283
+ type: 'token_usage';
284
+ token_usage: TimelineTokenUsage;
285
+ source: 'message_done' | 'turn_end' | 'agent_end';
286
+ }
287
+ export interface TimelineEventFinishReason extends TimelineEventBase {
288
+ type: 'finish_reason';
289
+ finish_reason: string;
290
+ source: 'message_done' | 'turn_end' | 'agent_end';
291
+ }
292
+ export interface TimelineEventTurnSummary extends TimelineEventBase {
293
+ type: 'turn_summary';
294
+ turn_index: number;
295
+ token_usage?: TimelineTokenUsage;
296
+ finish_reason?: string;
297
+ text_content?: string;
298
+ context_pct?: number;
299
+ context_health?: 'OK' | 'MONITOR' | 'WARN' | 'CRITICAL';
300
+ }
301
+ export interface TimelineEventCompaction extends TimelineEventBase {
302
+ type: 'compaction';
303
+ phase: 'start' | 'end';
304
+ tokens_before?: number;
305
+ summary?: string;
306
+ first_kept_entry_id?: string;
307
+ }
308
+ export interface TimelineEventRetry extends TimelineEventBase {
309
+ type: 'retry';
310
+ phase: 'start' | 'end';
311
+ attempt?: number;
312
+ max_attempts?: number;
313
+ delay_ms?: number;
314
+ error_message?: string;
315
+ }
316
+ export interface TimelineEventModelChange extends TimelineEventBase {
317
+ type: 'model_change';
318
+ action: 'set_model' | 'cycle_model';
319
+ model?: string;
320
+ previous_model?: string;
321
+ }
322
+ export interface TimelineEventExtensionError extends TimelineEventBase {
323
+ type: 'extension_error';
324
+ extension?: string;
325
+ error_message?: string;
326
+ }
327
+ export interface TimelineEventApiError extends TimelineEventBase {
328
+ type: 'error';
329
+ source: 'rpc' | 'stderr';
330
+ error_message: string;
331
+ }
332
+ export interface TimelineEventAutoCommit extends TimelineEventBase {
333
+ type: 'auto_commit_success' | 'auto_commit_skipped' | 'auto_commit_failed';
334
+ reason?: string;
335
+ commit_sha?: string;
336
+ committed_files?: string[];
337
+ }
338
+ /**
339
+ * Legacy completion events that still exist in older jobs.
340
+ * These are accepted for backward compatibility while feed v2 migrates history.
341
+ */
342
+ export interface TimelineEventLegacyComplete extends TimelineEventBase {
343
+ type: 'done' | 'agent_end';
344
+ elapsed_s?: number;
345
+ }
346
+ /**
347
+ * Union of all timeline event types.
348
+ * This is the canonical type for events.jsonl records.
349
+ */
350
+ export type TimelineEvent = TimelineEventRunStart | TimelineEventMeta | TimelineEventThinking | TimelineEventTool | TimelineEventText | TimelineEventMessage | TimelineEventTurn | TimelineEventStatusChange | TimelineEventRunComplete | TimelineEventStaleWarning | TimelineEventTokenUsage | TimelineEventFinishReason | TimelineEventTurnSummary | TimelineEventCompaction | TimelineEventRetry | TimelineEventModelChange | TimelineEventExtensionError | TimelineEventApiError | TimelineEventAutoCommit | TimelineEventLegacyComplete;
351
+ export declare const TIMELINE_EVENT_TYPES: {
352
+ readonly RUN_START: "run_start";
353
+ readonly META: "meta";
354
+ readonly THINKING: "thinking";
355
+ readonly TOOL: "tool";
356
+ readonly TEXT: "text";
357
+ readonly MESSAGE: "message";
358
+ readonly TURN: "turn";
359
+ readonly STATUS_CHANGE: "status_change";
360
+ readonly RUN_COMPLETE: "run_complete";
361
+ readonly STALE_WARNING: "stale_warning";
362
+ readonly TOKEN_USAGE: "token_usage";
363
+ readonly FINISH_REASON: "finish_reason";
364
+ readonly TURN_SUMMARY: "turn_summary";
365
+ readonly COMPACTION: "compaction";
366
+ readonly RETRY: "retry";
367
+ readonly MODEL_CHANGE: "model_change";
368
+ readonly EXTENSION_ERROR: "extension_error";
369
+ readonly ERROR: "error";
370
+ readonly AUTO_COMMIT_SUCCESS: "auto_commit_success";
371
+ readonly AUTO_COMMIT_SKIPPED: "auto_commit_skipped";
372
+ readonly AUTO_COMMIT_FAILED: "auto_commit_failed";
373
+ readonly DONE: "done";
374
+ readonly AGENT_END: "agent_end";
375
+ };
376
+ export declare function mapCallbackEventToTimelineEvent(callbackEvent: string, context: {
377
+ tool?: string;
378
+ toolCallId?: string;
379
+ isError?: boolean;
380
+ args?: Record<string, unknown>;
381
+ resultContent?: string;
382
+ resultRaw?: Record<string, unknown>;
383
+ charCount?: number;
384
+ compaction?: {
385
+ tokensBefore?: number;
386
+ summary?: string;
387
+ firstKeptEntryId?: string;
388
+ };
389
+ retry?: {
390
+ attempt?: number;
391
+ maxAttempts?: number;
392
+ delayMs?: number;
393
+ errorMessage?: string;
394
+ };
395
+ modelChange?: {
396
+ action: 'set_model' | 'cycle_model';
397
+ model?: string;
398
+ previousModel?: string;
399
+ };
400
+ extensionError?: {
401
+ extension?: string;
402
+ errorMessage?: string;
403
+ };
404
+ apiError?: {
405
+ source: 'rpc' | 'stderr';
406
+ errorMessage: string;
407
+ };
408
+ memoryInjection?: {
409
+ static_tokens: number;
410
+ memory_tokens: number;
411
+ gitnexus_tokens: number;
412
+ total_tokens: number;
413
+ };
414
+ metaPayload?: {
415
+ model?: string;
416
+ backend?: string;
417
+ source?: string;
418
+ data?: Record<string, unknown>;
419
+ };
420
+ }): TimelineEvent | null;
421
+ /**
422
+ * Create a run_start event.
423
+ */
424
+ export declare function createRunStartEvent(specialist: string, beadId?: string, startupSnapshot?: TimelineEventRunStart['startup_snapshot']): TimelineEventRunStart;
425
+ /**
426
+ * Create a meta event.
427
+ */
428
+ export declare function createMetaEvent(model: string, backend: string): TimelineEventMeta;
429
+ /**
430
+ * Create a stale_warning event.
431
+ * Emitted when stuck detection thresholds are crossed.
432
+ */
433
+ export declare function createStatusChangeEvent(status: TimelineEventStatusChange['status'], previousStatus?: TimelineEventStatusChange['previous_status']): TimelineEventStatusChange;
434
+ export declare function createStaleWarningEvent(reason: TimelineEventStaleWarning['reason'], options: {
435
+ silence_ms: number;
436
+ threshold_ms: number;
437
+ tool?: string;
438
+ }): TimelineEventStaleWarning;
439
+ export declare function createTokenUsageEvent(token_usage: TimelineTokenUsage, source: 'message_done' | 'turn_end' | 'agent_end'): TimelineEventTokenUsage;
440
+ export declare function createFinishReasonEvent(finish_reason: string, source: 'message_done' | 'turn_end' | 'agent_end'): TimelineEventFinishReason;
441
+ export declare function createTurnSummaryEvent(turn_index: number, token_usage?: TimelineTokenUsage, finish_reason?: string, textContent?: string, contextPct?: number, contextHealth?: 'OK' | 'MONITOR' | 'WARN' | 'CRITICAL'): TimelineEventTurnSummary;
442
+ export declare function createCompactionEvent(phase: 'start' | 'end', options?: {
443
+ tokensBefore?: number;
444
+ summary?: string;
445
+ firstKeptEntryId?: string;
446
+ }): TimelineEventCompaction;
447
+ export declare function createRetryEvent(phase: 'start' | 'end', options?: {
448
+ attempt?: number;
449
+ maxAttempts?: number;
450
+ delayMs?: number;
451
+ errorMessage?: string;
452
+ }): TimelineEventRetry;
453
+ /**
454
+ * Create a run_complete event.
455
+ * THE CANONICAL COMPLETION EVENT.
456
+ */
457
+ export declare function createRunCompleteEvent(status: 'COMPLETE' | 'ERROR' | 'CANCELLED', elapsed_s: number, options?: {
458
+ model?: string;
459
+ backend?: string;
460
+ bead_id?: string;
461
+ error?: string;
462
+ output?: string;
463
+ token_usage?: TimelineTokenUsage;
464
+ finish_reason?: string;
465
+ tool_calls?: string[];
466
+ exit_reason?: string;
467
+ metrics?: TimelineRunMetrics;
468
+ gitnexus_summary?: {
469
+ files_touched: string[];
470
+ symbols_analyzed: string[];
471
+ highest_risk?: 'LOW' | 'MEDIUM' | 'HIGH' | 'CRITICAL';
472
+ tool_invocations: number;
473
+ };
474
+ }): TimelineEventRunComplete;
475
+ export declare function createAutoCommitEvent(status: 'success' | 'skipped' | 'failed', options?: {
476
+ reason?: string;
477
+ commit_sha?: string;
478
+ committed_files?: string[];
479
+ }): TimelineEventAutoCommit;
480
+ /**
481
+ * Parse a timeline event from an events.jsonl line.
482
+ * Returns null for malformed or unknown event types.
483
+ */
484
+ export declare function parseTimelineEvent(line: string): TimelineEvent | null;
485
+ /**
486
+ * Check if an event is the canonical completion event.
487
+ */
488
+ export declare function isRunCompleteEvent(event: TimelineEvent): event is TimelineEventRunComplete;
489
+ /**
490
+ * Check if an event represents tool activity.
491
+ */
492
+ export declare function isToolEvent(event: TimelineEvent): event is TimelineEventTool;
493
+ /**
494
+ * Compare two timeline events by timestamp for sorting.
495
+ * Earlier events come first (ascending order).
496
+ *
497
+ * For events with identical timestamps, the order is preserved (stable sort).
498
+ */
499
+ export declare function compareTimelineEvents(a: TimelineEvent, b: TimelineEvent): number;
500
+ /**
501
+ * Merge timeline events from multiple jobs into a single chronological stream.
502
+ * Events are sorted by timestamp ascending.
503
+ *
504
+ * @param eventBatches - Array of { jobId, events } objects
505
+ * @returns Merged and sorted events with job attribution
506
+ */
507
+ export declare function mergeTimelineEvents(eventBatches: Array<{
508
+ jobId: string;
509
+ specialist: string;
510
+ events: TimelineEvent[];
511
+ }>): Array<{
512
+ jobId: string;
513
+ specialist: string;
514
+ event: TimelineEvent;
515
+ }>;
516
+ /**
517
+ * ## What to persist (events.jsonl)
518
+ *
519
+ * For feed v2, persist these event types only:
520
+ *
521
+ * 1. `run_start` - once per job
522
+ * 2. `meta` - once when model/backend known
523
+ * 3. `thinking` - once if reasoning detected
524
+ * 4. `tool` - per tool start/end
525
+ * 5. `text` - once if text output detected
526
+ * 6. `run_complete` - ONCE per job (canonical completion)
527
+ *
528
+ * Do NOT persist:
529
+ * - `done` (legacy, ambiguous)
530
+ * - `agent_end` (replaced by run_complete)
531
+ * - Streaming deltas (text_delta, thinking_delta, toolcall_delta)
532
+ *
533
+ * ## What to read from status.json
534
+ *
535
+ * status.json provides live mutable state:
536
+ * - current_event, current_tool (for in-progress jobs)
537
+ * - status (starting | running | done | error)
538
+ * - elapsed_s, last_event_at_ms
539
+ * - bead_id
540
+ * - error message
541
+ *
542
+ * For completed jobs, events.jsonl is the source of truth.
543
+ * status.json may be consulted for real-time state.
544
+ *
545
+ * ## What to read from result.txt
546
+ *
547
+ * result.txt contains the final assistant output text.
548
+ * It is NOT part of the event timeline.
549
+ * Use it for result display, not for timeline rendering.
550
+ *
551
+ * ## Completion semantic (repeated for emphasis)
552
+ *
553
+ * There is ONE canonical completion event: `run_complete`.
554
+ * It replaces both:
555
+ * - legacy callback-level `done`
556
+ * - persisted `agent_end`
557
+ *
558
+ * When updating Supervisor to use this model:
559
+ * 1. Remove 'done' from LOGGED_EVENTS
560
+ * 2. Add run_complete emission instead of agent_end
561
+ * 3. Include status, elapsed_s, model, backend, bead_id, error in run_complete
562
+ */
563
+ //# sourceMappingURL=timeline-events.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"timeline-events.d.ts","sourceRoot":"","sources":["../../../src/specialist/timeline-events.ts"],"names":[],"mappings":"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"}