maestro-flow 0.4.6 → 0.4.8

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 (105) hide show
  1. package/.claude/commands/maestro-ralph.md +548 -377
  2. package/.claude/commands/maestro.md +220 -191
  3. package/.codex/skills/maestro/SKILL.md +495 -462
  4. package/.codex/skills/maestro-collab/SKILL.md +218 -117
  5. package/.codex/skills/maestro-execute/SKILL.md +13 -11
  6. package/.codex/skills/maestro-milestone-audit/SKILL.md +12 -10
  7. package/.codex/skills/maestro-ralph/SKILL.md +491 -339
  8. package/.codex/skills/maestro-ui-codify/SKILL.md +18 -16
  9. package/.codex/skills/manage-codebase-rebuild/SKILL.md +20 -13
  10. package/.codex/skills/manage-issue-discover/SKILL.md +19 -17
  11. package/.codex/skills/quality-debug/SKILL.md +35 -31
  12. package/.codex/skills/quality-refactor/SKILL.md +20 -12
  13. package/.codex/skills/quality-review/SKILL.md +21 -17
  14. package/.codex/skills/team-coordinate/SKILL.md +462 -235
  15. package/.codex/skills/team-coordinate/specs/role-catalog.md +132 -0
  16. package/.codex/skills/team-lifecycle-v4/SKILL.md +445 -191
  17. package/.codex/skills/team-quality-assurance/SKILL.md +205 -161
  18. package/.codex/skills/team-review/SKILL.md +198 -159
  19. package/.codex/skills/team-tech-debt/SKILL.md +214 -144
  20. package/.codex/skills/team-testing/SKILL.md +210 -158
  21. package/dashboard/dist-server/dashboard/src/server/agents/claude-code-adapter.js +25 -33
  22. package/dashboard/dist-server/dashboard/src/server/agents/claude-code-adapter.js.map +1 -1
  23. package/dashboard/dist-server/dashboard/src/server/agents/claude-code-adapter.test.js +9 -3
  24. package/dashboard/dist-server/dashboard/src/server/agents/claude-code-adapter.test.js.map +1 -1
  25. package/dashboard/dist-server/dashboard/src/server/agents/codex-app-server-adapter.js +5 -2
  26. package/dashboard/dist-server/dashboard/src/server/agents/codex-app-server-adapter.js.map +1 -1
  27. package/dashboard/dist-server/dashboard/src/server/agents/codex-cli-adapter.js +20 -8
  28. package/dashboard/dist-server/dashboard/src/server/agents/codex-cli-adapter.js.map +1 -1
  29. package/dashboard/dist-server/dashboard/src/server/agents/gemini-a2a-adapter.js +6 -3
  30. package/dashboard/dist-server/dashboard/src/server/agents/gemini-a2a-adapter.js.map +1 -1
  31. package/dashboard/dist-server/dashboard/src/server/agents/gemini-a2a-adapter.test.js +7 -1
  32. package/dashboard/dist-server/dashboard/src/server/agents/gemini-a2a-adapter.test.js.map +1 -1
  33. package/dashboard/dist-server/dashboard/src/server/agents/opencode-adapter.d.ts +2 -0
  34. package/dashboard/dist-server/dashboard/src/server/agents/opencode-adapter.js +40 -15
  35. package/dashboard/dist-server/dashboard/src/server/agents/opencode-adapter.js.map +1 -1
  36. package/dashboard/dist-server/dashboard/src/server/agents/process-tree-kill.d.ts +1 -0
  37. package/dashboard/dist-server/dashboard/src/server/agents/process-tree-kill.js +59 -0
  38. package/dashboard/dist-server/dashboard/src/server/agents/process-tree-kill.js.map +1 -0
  39. package/dashboard/dist-server/dashboard/src/server/agents/process-tree-kill.test.d.ts +1 -0
  40. package/dashboard/dist-server/dashboard/src/server/agents/process-tree-kill.test.js +78 -0
  41. package/dashboard/dist-server/dashboard/src/server/agents/process-tree-kill.test.js.map +1 -0
  42. package/dashboard/dist-server/dashboard/src/server/agents/stale-handler.d.ts +25 -0
  43. package/dashboard/dist-server/dashboard/src/server/agents/stale-handler.js +40 -0
  44. package/dashboard/dist-server/dashboard/src/server/agents/stale-handler.js.map +1 -0
  45. package/dashboard/dist-server/dashboard/src/server/agents/stale-handler.test.d.ts +1 -0
  46. package/dashboard/dist-server/dashboard/src/server/agents/stale-handler.test.js +89 -0
  47. package/dashboard/dist-server/dashboard/src/server/agents/stale-handler.test.js.map +1 -0
  48. package/dashboard/dist-server/dashboard/src/server/agents/stream-json-adapter.js +19 -8
  49. package/dashboard/dist-server/dashboard/src/server/agents/stream-json-adapter.js.map +1 -1
  50. package/dashboard/dist-server/dashboard/src/server/agents/stream-monitor.d.ts +6 -0
  51. package/dashboard/dist-server/dashboard/src/server/agents/stream-monitor.js +7 -1
  52. package/dashboard/dist-server/dashboard/src/server/agents/stream-monitor.js.map +1 -1
  53. package/dashboard/dist-server/dashboard/src/server/agents/stream-monitor.test.d.ts +1 -0
  54. package/dashboard/dist-server/dashboard/src/server/agents/stream-monitor.test.js +46 -0
  55. package/dashboard/dist-server/dashboard/src/server/agents/stream-monitor.test.js.map +1 -0
  56. package/dashboard/dist-server/shared/agent-types.d.ts +6 -0
  57. package/dist/shared/agent-types.d.ts +6 -0
  58. package/dist/shared/agent-types.d.ts.map +1 -1
  59. package/dist/src/agents/cli-agent-runner.d.ts +3 -0
  60. package/dist/src/agents/cli-agent-runner.d.ts.map +1 -1
  61. package/dist/src/agents/cli-agent-runner.js +1 -0
  62. package/dist/src/agents/cli-agent-runner.js.map +1 -1
  63. package/dist/src/commands/delegate.d.ts +2 -0
  64. package/dist/src/commands/delegate.d.ts.map +1 -1
  65. package/dist/src/commands/delegate.js +18 -0
  66. package/dist/src/commands/delegate.js.map +1 -1
  67. package/dist/src/config/cli-tools-config.d.ts +3 -0
  68. package/dist/src/config/cli-tools-config.d.ts.map +1 -1
  69. package/dist/src/config/cli-tools-config.js.map +1 -1
  70. package/package.json +1 -1
  71. package/shared/agent-types.ts +237 -231
  72. package/.codex/skills/team-coordinate/roles/coordinator/commands/analyze-task.md +0 -247
  73. package/.codex/skills/team-coordinate/roles/coordinator/commands/dispatch.md +0 -126
  74. package/.codex/skills/team-coordinate/roles/coordinator/commands/monitor.md +0 -265
  75. package/.codex/skills/team-coordinate/roles/coordinator/role.md +0 -403
  76. package/.codex/skills/team-coordinate/specs/knowledge-transfer.md +0 -113
  77. package/.codex/skills/team-coordinate/specs/pipelines.md +0 -97
  78. package/.codex/skills/team-coordinate/specs/quality-gates.md +0 -112
  79. package/.codex/skills/team-coordinate/specs/role-spec-template.md +0 -192
  80. package/.codex/skills/team-executor/SKILL.md +0 -116
  81. package/.codex/skills/team-executor/roles/executor/commands/monitor.md +0 -213
  82. package/.codex/skills/team-executor/roles/executor/role.md +0 -173
  83. package/.codex/skills/team-executor/specs/session-schema.md +0 -230
  84. package/.codex/skills/team-lifecycle-v4/roles/coordinator/commands/analyze.md +0 -56
  85. package/.codex/skills/team-lifecycle-v4/roles/coordinator/commands/dispatch.md +0 -61
  86. package/.codex/skills/team-lifecycle-v4/roles/coordinator/commands/monitor.md +0 -113
  87. package/.codex/skills/team-lifecycle-v4/roles/coordinator/role.md +0 -189
  88. package/.codex/skills/team-lifecycle-v4/schemas/tasks-schema.md +0 -100
  89. package/.codex/skills/team-lifecycle-v4/specs/knowledge-transfer.md +0 -204
  90. package/.codex/skills/team-quality-assurance/roles/coordinator/commands/analyze.md +0 -72
  91. package/.codex/skills/team-quality-assurance/roles/coordinator/commands/dispatch.md +0 -108
  92. package/.codex/skills/team-quality-assurance/roles/coordinator/commands/monitor.md +0 -163
  93. package/.codex/skills/team-quality-assurance/roles/coordinator/role.md +0 -177
  94. package/.codex/skills/team-review/roles/coordinator/commands/analyze.md +0 -71
  95. package/.codex/skills/team-review/roles/coordinator/commands/dispatch.md +0 -90
  96. package/.codex/skills/team-review/roles/coordinator/commands/monitor.md +0 -135
  97. package/.codex/skills/team-review/roles/coordinator/role.md +0 -176
  98. package/.codex/skills/team-tech-debt/roles/coordinator/commands/analyze.md +0 -47
  99. package/.codex/skills/team-tech-debt/roles/coordinator/commands/dispatch.md +0 -163
  100. package/.codex/skills/team-tech-debt/roles/coordinator/commands/monitor.md +0 -133
  101. package/.codex/skills/team-tech-debt/roles/coordinator/role.md +0 -173
  102. package/.codex/skills/team-testing/roles/coordinator/commands/analyze.md +0 -70
  103. package/.codex/skills/team-testing/roles/coordinator/commands/dispatch.md +0 -106
  104. package/.codex/skills/team-testing/roles/coordinator/commands/monitor.md +0 -156
  105. package/.codex/skills/team-testing/roles/coordinator/role.md +0 -185
@@ -1,231 +1,237 @@
1
- // ---------------------------------------------------------------------------
2
- // Agent type system — protocol abstraction for CLI agent processes
3
- //
4
- // CANONICAL source of truth for all agent types. Both the maestro CLI (src/)
5
- // and dashboard (dashboard/src/) import from this file.
6
- // ---------------------------------------------------------------------------
7
-
8
- /** Supported agent CLI types */
9
- export type AgentType = 'claude-code' | 'codex' | 'codex-server' | 'gemini' | 'gemini-a2a' | 'qwen' | 'opencode' | 'agent-sdk';
10
-
11
- /** Agent process lifecycle status */
12
- export type AgentProcessStatus =
13
- | 'spawning'
14
- | 'running'
15
- | 'paused'
16
- | 'stopping'
17
- | 'stopped'
18
- | 'error';
19
-
20
- // ---------------------------------------------------------------------------
21
- // Agent configuration & process
22
- // ---------------------------------------------------------------------------
23
-
24
- /** Configuration for spawning an agent process */
25
- export interface AgentConfig {
26
- type: AgentType;
27
- prompt: string;
28
- workDir: string;
29
- env?: Record<string, string>;
30
- model?: string;
31
- approvalMode?: 'suggest' | 'auto';
32
- baseUrl?: string;
33
- apiKey?: string;
34
- settingsFile?: string;
35
- /** Path to .env file for loading environment variables before spawn */
36
- envFile?: string;
37
- /** When true, spawn in interactive mode (stdin kept open for follow-up messages) */
38
- interactive?: boolean;
39
- /** Path to MCP config JSON file for CLI agents (claude-code --mcp-config) */
40
- mcpConfigPath?: string;
41
- /** Opaque metadata bag — used to pass team session context through the spawn pipeline */
42
- metadata?: Record<string, unknown>;
43
- /** Reasoning effort level (undefined = tool default) */
44
- reasoningEffort?: 'low' | 'medium' | 'high' | 'max';
45
- }
46
-
47
- /** Runtime state of a spawned agent process */
48
- export interface AgentProcess {
49
- id: string;
50
- type: AgentType;
51
- status: AgentProcessStatus;
52
- config: AgentConfig;
53
- startedAt: string;
54
- pid?: number;
55
- /** Whether the agent supports interactive follow-up messages */
56
- interactive?: boolean;
57
- /** Opaque metadata from config — carries team session context etc. */
58
- metadata?: Record<string, unknown>;
59
- }
60
-
61
- // ---------------------------------------------------------------------------
62
- // NormalizedEntry — 11-type discriminated union for unified agent output
63
- // ---------------------------------------------------------------------------
64
-
65
- /** Base fields shared by all normalized entries */
66
- export interface NormalizedEntryBase {
67
- id: string;
68
- processId: string;
69
- timestamp: string;
70
- }
71
-
72
- /** All possible entry type discriminators */
73
- export type EntryType =
74
- | 'user_message'
75
- | 'assistant_message'
76
- | 'thinking'
77
- | 'tool_use'
78
- | 'file_change'
79
- | 'command_exec'
80
- | 'approval_request'
81
- | 'approval_response'
82
- | 'error'
83
- | 'status_change'
84
- | 'token_usage';
85
-
86
- // --- Individual entry types ------------------------------------------------
87
-
88
- export interface UserMessageEntry extends NormalizedEntryBase {
89
- type: 'user_message';
90
- content: string;
91
- }
92
-
93
- export interface AssistantMessageEntry extends NormalizedEntryBase {
94
- type: 'assistant_message';
95
- content: string;
96
- partial: boolean;
97
- }
98
-
99
- export interface ThinkingEntry extends NormalizedEntryBase {
100
- type: 'thinking';
101
- content: string;
102
- }
103
-
104
- export interface ToolUseEntry extends NormalizedEntryBase {
105
- type: 'tool_use';
106
- name: string;
107
- input: Record<string, unknown>;
108
- status: 'pending' | 'running' | 'completed' | 'failed';
109
- result?: string;
110
- }
111
-
112
- export interface FileChangeEntry extends NormalizedEntryBase {
113
- type: 'file_change';
114
- path: string;
115
- action: 'create' | 'modify' | 'delete';
116
- diff?: string;
117
- }
118
-
119
- export interface CommandExecEntry extends NormalizedEntryBase {
120
- type: 'command_exec';
121
- command: string;
122
- exitCode?: number;
123
- output?: string;
124
- }
125
-
126
- export interface ApprovalRequestEntry extends NormalizedEntryBase {
127
- type: 'approval_request';
128
- toolName: string;
129
- toolInput: Record<string, unknown>;
130
- requestId: string;
131
- }
132
-
133
- export interface ApprovalResponseEntry extends NormalizedEntryBase {
134
- type: 'approval_response';
135
- requestId: string;
136
- allowed: boolean;
137
- }
138
-
139
- export interface ErrorEntry extends NormalizedEntryBase {
140
- type: 'error';
141
- message: string;
142
- code?: string;
143
- }
144
-
145
- export interface StatusChangeEntry extends NormalizedEntryBase {
146
- type: 'status_change';
147
- status: AgentProcessStatus;
148
- reason?: string;
149
- }
150
-
151
- export interface TokenUsageEntry extends NormalizedEntryBase {
152
- type: 'token_usage';
153
- inputTokens: number;
154
- outputTokens: number;
155
- cacheReadTokens?: number;
156
- cacheWriteTokens?: number;
157
- }
158
-
159
- /** Discriminated union of all 11 normalized entry types */
160
- export type NormalizedEntry =
161
- | UserMessageEntry
162
- | AssistantMessageEntry
163
- | ThinkingEntry
164
- | ToolUseEntry
165
- | FileChangeEntry
166
- | CommandExecEntry
167
- | ApprovalRequestEntry
168
- | ApprovalResponseEntry
169
- | ErrorEntry
170
- | StatusChangeEntry
171
- | TokenUsageEntry;
172
-
173
- // ---------------------------------------------------------------------------
174
- // Agent event payload types (used in WS/SSE event envelopes)
175
- // ---------------------------------------------------------------------------
176
-
177
- /** Thought data from agent reasoning */
178
- export interface ThoughtData {
179
- subject: string;
180
- description: string;
181
- }
182
-
183
- /** Payload for agent:thought events */
184
- export interface AgentThoughtPayload {
185
- processId: string;
186
- thought: ThoughtData;
187
- }
188
-
189
- /** Payload for agent:streaming events */
190
- export interface AgentStreamingPayload {
191
- processId: string;
192
- streaming: boolean;
193
- }
194
-
195
- /** Payload for agent:status events */
196
- export interface AgentStatusPayload {
197
- processId: string;
198
- status: AgentProcessStatus;
199
- reason?: string;
200
- }
201
-
202
- /** Payload for agent:stopped events */
203
- export interface AgentStoppedPayload {
204
- processId: string;
205
- reason?: string;
206
- }
207
-
208
- /** Payload for agent:turnCompleted events (codex-server multi-turn) */
209
- export interface AgentTurnCompletedPayload {
210
- processId: string;
211
- }
212
-
213
- // ---------------------------------------------------------------------------
214
- // Approval workflow types
215
- // ---------------------------------------------------------------------------
216
-
217
- /** Server-side approval request (sent to client for user decision) */
218
- export interface ApprovalRequest {
219
- id: string;
220
- processId: string;
221
- toolName: string;
222
- toolInput: Record<string, unknown>;
223
- timestamp: string;
224
- }
225
-
226
- /** Client-side approval decision (sent back to server) */
227
- export interface ApprovalDecision {
228
- id: string;
229
- allow: boolean;
230
- processId: string;
231
- }
1
+ // ---------------------------------------------------------------------------
2
+ // Agent type system — protocol abstraction for CLI agent processes
3
+ //
4
+ // CANONICAL source of truth for all agent types. Both the maestro CLI (src/)
5
+ // and dashboard (dashboard/src/) import from this file.
6
+ // ---------------------------------------------------------------------------
7
+
8
+ /** Supported agent CLI types */
9
+ export type AgentType = 'claude-code' | 'codex' | 'codex-server' | 'gemini' | 'gemini-a2a' | 'qwen' | 'opencode' | 'agent-sdk';
10
+
11
+ /** Agent process lifecycle status */
12
+ export type AgentProcessStatus =
13
+ | 'spawning'
14
+ | 'running'
15
+ | 'paused'
16
+ | 'stopping'
17
+ | 'stopped'
18
+ | 'error';
19
+
20
+ // ---------------------------------------------------------------------------
21
+ // Agent configuration & process
22
+ // ---------------------------------------------------------------------------
23
+
24
+ /** Configuration for spawning an agent process */
25
+ export interface AgentConfig {
26
+ type: AgentType;
27
+ prompt: string;
28
+ workDir: string;
29
+ env?: Record<string, string>;
30
+ model?: string;
31
+ approvalMode?: 'suggest' | 'auto';
32
+ baseUrl?: string;
33
+ apiKey?: string;
34
+ settingsFile?: string;
35
+ /** Path to .env file for loading environment variables before spawn */
36
+ envFile?: string;
37
+ /** When true, spawn in interactive mode (stdin kept open for follow-up messages) */
38
+ interactive?: boolean;
39
+ /** Path to MCP config JSON file for CLI agents (claude-code --mcp-config) */
40
+ mcpConfigPath?: string;
41
+ /** Opaque metadata bag — used to pass team session context through the spawn pipeline */
42
+ metadata?: Record<string, unknown>;
43
+ /** Reasoning effort level (undefined = tool default) */
44
+ reasoningEffort?: 'low' | 'medium' | 'high' | 'max';
45
+ /**
46
+ * Stale-stream silence window in ms before the adapter force-terminates a
47
+ * silent CLI. Undefined = StreamMonitor default (10 min). Threaded from
48
+ * `maestro delegate --timeout` / cli-tools.json `streamTimeoutMs`.
49
+ */
50
+ streamTimeoutMs?: number;
51
+ }
52
+
53
+ /** Runtime state of a spawned agent process */
54
+ export interface AgentProcess {
55
+ id: string;
56
+ type: AgentType;
57
+ status: AgentProcessStatus;
58
+ config: AgentConfig;
59
+ startedAt: string;
60
+ pid?: number;
61
+ /** Whether the agent supports interactive follow-up messages */
62
+ interactive?: boolean;
63
+ /** Opaque metadata from config — carries team session context etc. */
64
+ metadata?: Record<string, unknown>;
65
+ }
66
+
67
+ // ---------------------------------------------------------------------------
68
+ // NormalizedEntry — 11-type discriminated union for unified agent output
69
+ // ---------------------------------------------------------------------------
70
+
71
+ /** Base fields shared by all normalized entries */
72
+ export interface NormalizedEntryBase {
73
+ id: string;
74
+ processId: string;
75
+ timestamp: string;
76
+ }
77
+
78
+ /** All possible entry type discriminators */
79
+ export type EntryType =
80
+ | 'user_message'
81
+ | 'assistant_message'
82
+ | 'thinking'
83
+ | 'tool_use'
84
+ | 'file_change'
85
+ | 'command_exec'
86
+ | 'approval_request'
87
+ | 'approval_response'
88
+ | 'error'
89
+ | 'status_change'
90
+ | 'token_usage';
91
+
92
+ // --- Individual entry types ------------------------------------------------
93
+
94
+ export interface UserMessageEntry extends NormalizedEntryBase {
95
+ type: 'user_message';
96
+ content: string;
97
+ }
98
+
99
+ export interface AssistantMessageEntry extends NormalizedEntryBase {
100
+ type: 'assistant_message';
101
+ content: string;
102
+ partial: boolean;
103
+ }
104
+
105
+ export interface ThinkingEntry extends NormalizedEntryBase {
106
+ type: 'thinking';
107
+ content: string;
108
+ }
109
+
110
+ export interface ToolUseEntry extends NormalizedEntryBase {
111
+ type: 'tool_use';
112
+ name: string;
113
+ input: Record<string, unknown>;
114
+ status: 'pending' | 'running' | 'completed' | 'failed';
115
+ result?: string;
116
+ }
117
+
118
+ export interface FileChangeEntry extends NormalizedEntryBase {
119
+ type: 'file_change';
120
+ path: string;
121
+ action: 'create' | 'modify' | 'delete';
122
+ diff?: string;
123
+ }
124
+
125
+ export interface CommandExecEntry extends NormalizedEntryBase {
126
+ type: 'command_exec';
127
+ command: string;
128
+ exitCode?: number;
129
+ output?: string;
130
+ }
131
+
132
+ export interface ApprovalRequestEntry extends NormalizedEntryBase {
133
+ type: 'approval_request';
134
+ toolName: string;
135
+ toolInput: Record<string, unknown>;
136
+ requestId: string;
137
+ }
138
+
139
+ export interface ApprovalResponseEntry extends NormalizedEntryBase {
140
+ type: 'approval_response';
141
+ requestId: string;
142
+ allowed: boolean;
143
+ }
144
+
145
+ export interface ErrorEntry extends NormalizedEntryBase {
146
+ type: 'error';
147
+ message: string;
148
+ code?: string;
149
+ }
150
+
151
+ export interface StatusChangeEntry extends NormalizedEntryBase {
152
+ type: 'status_change';
153
+ status: AgentProcessStatus;
154
+ reason?: string;
155
+ }
156
+
157
+ export interface TokenUsageEntry extends NormalizedEntryBase {
158
+ type: 'token_usage';
159
+ inputTokens: number;
160
+ outputTokens: number;
161
+ cacheReadTokens?: number;
162
+ cacheWriteTokens?: number;
163
+ }
164
+
165
+ /** Discriminated union of all 11 normalized entry types */
166
+ export type NormalizedEntry =
167
+ | UserMessageEntry
168
+ | AssistantMessageEntry
169
+ | ThinkingEntry
170
+ | ToolUseEntry
171
+ | FileChangeEntry
172
+ | CommandExecEntry
173
+ | ApprovalRequestEntry
174
+ | ApprovalResponseEntry
175
+ | ErrorEntry
176
+ | StatusChangeEntry
177
+ | TokenUsageEntry;
178
+
179
+ // ---------------------------------------------------------------------------
180
+ // Agent event payload types (used in WS/SSE event envelopes)
181
+ // ---------------------------------------------------------------------------
182
+
183
+ /** Thought data from agent reasoning */
184
+ export interface ThoughtData {
185
+ subject: string;
186
+ description: string;
187
+ }
188
+
189
+ /** Payload for agent:thought events */
190
+ export interface AgentThoughtPayload {
191
+ processId: string;
192
+ thought: ThoughtData;
193
+ }
194
+
195
+ /** Payload for agent:streaming events */
196
+ export interface AgentStreamingPayload {
197
+ processId: string;
198
+ streaming: boolean;
199
+ }
200
+
201
+ /** Payload for agent:status events */
202
+ export interface AgentStatusPayload {
203
+ processId: string;
204
+ status: AgentProcessStatus;
205
+ reason?: string;
206
+ }
207
+
208
+ /** Payload for agent:stopped events */
209
+ export interface AgentStoppedPayload {
210
+ processId: string;
211
+ reason?: string;
212
+ }
213
+
214
+ /** Payload for agent:turnCompleted events (codex-server multi-turn) */
215
+ export interface AgentTurnCompletedPayload {
216
+ processId: string;
217
+ }
218
+
219
+ // ---------------------------------------------------------------------------
220
+ // Approval workflow types
221
+ // ---------------------------------------------------------------------------
222
+
223
+ /** Server-side approval request (sent to client for user decision) */
224
+ export interface ApprovalRequest {
225
+ id: string;
226
+ processId: string;
227
+ toolName: string;
228
+ toolInput: Record<string, unknown>;
229
+ timestamp: string;
230
+ }
231
+
232
+ /** Client-side approval decision (sent back to server) */
233
+ export interface ApprovalDecision {
234
+ id: string;
235
+ allow: boolean;
236
+ processId: string;
237
+ }