indusagi-coding-agent 0.1.22 → 0.1.24

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 (222) hide show
  1. package/CHANGELOG.md +72 -11
  2. package/README.md +2 -36
  3. package/dist/cli/args.d.ts +117 -1
  4. package/dist/cli/args.d.ts.map +1 -1
  5. package/dist/cli/args.js +231 -64
  6. package/dist/cli/args.js.map +1 -1
  7. package/dist/cli/config-selector.d.ts +58 -2
  8. package/dist/cli/config-selector.d.ts.map +1 -1
  9. package/dist/cli/config-selector.js +130 -12
  10. package/dist/cli/config-selector.js.map +1 -1
  11. package/dist/cli/file-processor.d.ts +70 -2
  12. package/dist/cli/file-processor.d.ts.map +1 -1
  13. package/dist/cli/file-processor.js +240 -15
  14. package/dist/cli/file-processor.js.map +1 -1
  15. package/dist/cli/list-models.d.ts +63 -3
  16. package/dist/cli/list-models.d.ts.map +1 -1
  17. package/dist/cli/list-models.js +202 -27
  18. package/dist/cli/list-models.js.map +1 -1
  19. package/dist/cli/login-handler.d.ts +82 -8
  20. package/dist/cli/login-handler.d.ts.map +1 -1
  21. package/dist/cli/login-handler.js +410 -77
  22. package/dist/cli/login-handler.js.map +1 -1
  23. package/dist/cli/session-picker.d.ts +74 -2
  24. package/dist/cli/session-picker.d.ts.map +1 -1
  25. package/dist/cli/session-picker.js +236 -12
  26. package/dist/cli/session-picker.js.map +1 -1
  27. package/dist/core/agent-session.d.ts +214 -9
  28. package/dist/core/agent-session.d.ts.map +1 -1
  29. package/dist/core/agent-session.js +214 -9
  30. package/dist/core/agent-session.js.map +1 -1
  31. package/dist/core/bash-executor.d.ts +302 -12
  32. package/dist/core/bash-executor.d.ts.map +1 -1
  33. package/dist/core/bash-executor.js +302 -12
  34. package/dist/core/bash-executor.js.map +1 -1
  35. package/dist/core/diagnostics.d.ts +191 -0
  36. package/dist/core/diagnostics.d.ts.map +1 -1
  37. package/dist/core/diagnostics.js +142 -0
  38. package/dist/core/diagnostics.js.map +1 -1
  39. package/dist/core/event-bus.d.ts +146 -0
  40. package/dist/core/event-bus.d.ts.map +1 -1
  41. package/dist/core/event-bus.js +93 -0
  42. package/dist/core/event-bus.js.map +1 -1
  43. package/dist/core/export-html/ansi-to-html.d.ts +4 -0
  44. package/dist/core/export-html/ansi-to-html.d.ts.map +1 -1
  45. package/dist/core/export-html/ansi-to-html.js +4 -0
  46. package/dist/core/export-html/ansi-to-html.js.map +1 -1
  47. package/dist/core/export-html/index.d.ts +128 -0
  48. package/dist/core/export-html/index.d.ts.map +1 -1
  49. package/dist/core/export-html/index.js +128 -0
  50. package/dist/core/export-html/index.js.map +1 -1
  51. package/dist/core/export-html/tool-renderer.d.ts +4 -0
  52. package/dist/core/export-html/tool-renderer.d.ts.map +1 -1
  53. package/dist/core/export-html/tool-renderer.js +4 -0
  54. package/dist/core/export-html/tool-renderer.js.map +1 -1
  55. package/dist/core/keybindings.d.ts +142 -0
  56. package/dist/core/keybindings.d.ts.map +1 -1
  57. package/dist/core/keybindings.js +142 -0
  58. package/dist/core/keybindings.js.map +1 -1
  59. package/dist/core/model-registry.d.ts +98 -1
  60. package/dist/core/model-registry.d.ts.map +1 -1
  61. package/dist/core/model-registry.js +98 -1
  62. package/dist/core/model-registry.js.map +1 -1
  63. package/dist/core/model-resolver.d.ts +99 -1
  64. package/dist/core/model-resolver.d.ts.map +1 -1
  65. package/dist/core/model-resolver.js +99 -1
  66. package/dist/core/model-resolver.js.map +1 -1
  67. package/dist/core/prompt-templates.js.map +1 -1
  68. package/dist/core/sdk.d.ts +1 -1
  69. package/dist/core/sdk.d.ts.map +1 -1
  70. package/dist/core/sdk.js +0 -2
  71. package/dist/core/sdk.js.map +1 -1
  72. package/dist/core/session-manager.d.ts +127 -0
  73. package/dist/core/session-manager.d.ts.map +1 -1
  74. package/dist/core/session-manager.js +125 -0
  75. package/dist/core/session-manager.js.map +1 -1
  76. package/dist/core/skills.js.map +1 -1
  77. package/dist/core/subagents.js.map +1 -1
  78. package/dist/core/tools/bash.d.ts +391 -11
  79. package/dist/core/tools/bash.d.ts.map +1 -1
  80. package/dist/core/tools/bash.js +269 -2
  81. package/dist/core/tools/bash.js.map +1 -1
  82. package/dist/core/tools/edit.d.ts +284 -6
  83. package/dist/core/tools/edit.d.ts.map +1 -1
  84. package/dist/core/tools/edit.js +238 -0
  85. package/dist/core/tools/edit.js.map +1 -1
  86. package/dist/core/tools/find.d.ts +169 -5
  87. package/dist/core/tools/find.d.ts.map +1 -1
  88. package/dist/core/tools/find.js +136 -0
  89. package/dist/core/tools/find.js.map +1 -1
  90. package/dist/core/tools/grep.d.ts +285 -5
  91. package/dist/core/tools/grep.d.ts.map +1 -1
  92. package/dist/core/tools/grep.js +247 -0
  93. package/dist/core/tools/grep.js.map +1 -1
  94. package/dist/core/tools/index.d.ts +0 -18
  95. package/dist/core/tools/index.d.ts.map +1 -1
  96. package/dist/core/tools/index.js +1 -23
  97. package/dist/core/tools/index.js.map +1 -1
  98. package/dist/core/tools/ls.d.ts +6 -0
  99. package/dist/core/tools/ls.d.ts.map +1 -1
  100. package/dist/core/tools/ls.js +6 -0
  101. package/dist/core/tools/ls.js.map +1 -1
  102. package/dist/core/tools/read.d.ts +308 -7
  103. package/dist/core/tools/read.d.ts.map +1 -1
  104. package/dist/core/tools/read.js +231 -0
  105. package/dist/core/tools/read.js.map +1 -1
  106. package/dist/core/tools/webfetch.d.ts +118 -3
  107. package/dist/core/tools/webfetch.d.ts.map +1 -1
  108. package/dist/core/tools/webfetch.js +118 -3
  109. package/dist/core/tools/webfetch.js.map +1 -1
  110. package/dist/core/tools/websearch.d.ts +130 -3
  111. package/dist/core/tools/websearch.d.ts.map +1 -1
  112. package/dist/core/tools/websearch.js +130 -3
  113. package/dist/core/tools/websearch.js.map +1 -1
  114. package/dist/core/tools/write.d.ts +251 -5
  115. package/dist/core/tools/write.d.ts.map +1 -1
  116. package/dist/core/tools/write.js +210 -0
  117. package/dist/core/tools/write.js.map +1 -1
  118. package/dist/modes/interactive/components/assistant-message.d.ts +164 -1
  119. package/dist/modes/interactive/components/assistant-message.d.ts.map +1 -1
  120. package/dist/modes/interactive/components/assistant-message.js +164 -1
  121. package/dist/modes/interactive/components/assistant-message.js.map +1 -1
  122. package/dist/modes/interactive/components/bash-execution.d.ts +297 -1
  123. package/dist/modes/interactive/components/bash-execution.d.ts.map +1 -1
  124. package/dist/modes/interactive/components/bash-execution.js +297 -1
  125. package/dist/modes/interactive/components/bash-execution.js.map +1 -1
  126. package/dist/modes/interactive/components/tool-execution.d.ts.map +1 -1
  127. package/dist/modes/interactive/components/tool-execution.js +251 -1
  128. package/dist/modes/interactive/components/tool-execution.js.map +1 -1
  129. package/dist/modes/interactive/components/user-message.d.ts +186 -1
  130. package/dist/modes/interactive/components/user-message.d.ts.map +1 -1
  131. package/dist/modes/interactive/components/user-message.js +186 -1
  132. package/dist/modes/interactive/components/user-message.js.map +1 -1
  133. package/dist/modes/interactive/interactive-mode.d.ts +1567 -13
  134. package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
  135. package/dist/modes/interactive/interactive-mode.js +1567 -13
  136. package/dist/modes/interactive/interactive-mode.js.map +1 -1
  137. package/dist/modes/interactive/theme/theme.d.ts +422 -0
  138. package/dist/modes/interactive/theme/theme.d.ts.map +1 -1
  139. package/dist/modes/interactive/theme/theme.js +422 -0
  140. package/dist/modes/interactive/theme/theme.js.map +1 -1
  141. package/dist/modes/print-mode.d.ts +538 -5
  142. package/dist/modes/print-mode.d.ts.map +1 -1
  143. package/dist/modes/print-mode.js +538 -5
  144. package/dist/modes/print-mode.js.map +1 -1
  145. package/dist/modes/rpc/rpc-client.d.ts +921 -8
  146. package/dist/modes/rpc/rpc-client.d.ts.map +1 -1
  147. package/dist/modes/rpc/rpc-client.js +921 -8
  148. package/dist/modes/rpc/rpc-client.js.map +1 -1
  149. package/dist/modes/rpc/rpc-mode.d.ts +802 -9
  150. package/dist/modes/rpc/rpc-mode.d.ts.map +1 -1
  151. package/dist/modes/rpc/rpc-mode.js +802 -9
  152. package/dist/modes/rpc/rpc-mode.js.map +1 -1
  153. package/dist/modes/rpc/rpc-types.d.ts +356 -3
  154. package/dist/modes/rpc/rpc-types.d.ts.map +1 -1
  155. package/dist/modes/rpc/rpc-types.js +356 -3
  156. package/dist/modes/rpc/rpc-types.js.map +1 -1
  157. package/dist/modes/shared.d.ts +386 -0
  158. package/dist/modes/shared.d.ts.map +1 -0
  159. package/dist/modes/shared.js +543 -0
  160. package/dist/modes/shared.js.map +1 -0
  161. package/dist/utils/array.d.ts +389 -0
  162. package/dist/utils/array.d.ts.map +1 -0
  163. package/dist/utils/array.js +585 -0
  164. package/dist/utils/array.js.map +1 -0
  165. package/dist/utils/color-formatter.d.ts +318 -0
  166. package/dist/utils/color-formatter.d.ts.map +1 -0
  167. package/dist/utils/color-formatter.js +442 -0
  168. package/dist/utils/color-formatter.js.map +1 -0
  169. package/dist/utils/data-transformer.d.ts +326 -0
  170. package/dist/utils/data-transformer.d.ts.map +1 -0
  171. package/dist/utils/data-transformer.js +512 -0
  172. package/dist/utils/data-transformer.js.map +1 -0
  173. package/dist/utils/date-formatter.d.ts +281 -0
  174. package/dist/utils/date-formatter.d.ts.map +1 -0
  175. package/dist/utils/date-formatter.js +503 -0
  176. package/dist/utils/date-formatter.js.map +1 -0
  177. package/dist/utils/error-handler.d.ts +541 -0
  178. package/dist/utils/error-handler.d.ts.map +1 -0
  179. package/dist/utils/error-handler.js +726 -0
  180. package/dist/utils/error-handler.js.map +1 -0
  181. package/dist/utils/file-operations.d.ts +297 -0
  182. package/dist/utils/file-operations.d.ts.map +1 -0
  183. package/dist/utils/file-operations.js +505 -0
  184. package/dist/utils/file-operations.js.map +1 -0
  185. package/dist/utils/frontmatter.d.ts +268 -6
  186. package/dist/utils/frontmatter.d.ts.map +1 -1
  187. package/dist/utils/frontmatter.js +500 -21
  188. package/dist/utils/frontmatter.js.map +1 -1
  189. package/dist/utils/json-formatter.d.ts +259 -0
  190. package/dist/utils/json-formatter.d.ts.map +1 -0
  191. package/dist/utils/json-formatter.js +517 -0
  192. package/dist/utils/json-formatter.js.map +1 -0
  193. package/dist/utils/logger.d.ts +176 -0
  194. package/dist/utils/logger.d.ts.map +1 -0
  195. package/dist/utils/logger.js +346 -0
  196. package/dist/utils/logger.js.map +1 -0
  197. package/dist/utils/markdown-formatter.d.ts +211 -0
  198. package/dist/utils/markdown-formatter.d.ts.map +1 -0
  199. package/dist/utils/markdown-formatter.js +482 -0
  200. package/dist/utils/markdown-formatter.js.map +1 -0
  201. package/dist/utils/path-validator.d.ts +603 -0
  202. package/dist/utils/path-validator.d.ts.map +1 -0
  203. package/dist/utils/path-validator.js +870 -0
  204. package/dist/utils/path-validator.js.map +1 -0
  205. package/dist/utils/string-formatter.d.ts +609 -0
  206. package/dist/utils/string-formatter.d.ts.map +1 -0
  207. package/dist/utils/string-formatter.js +806 -0
  208. package/dist/utils/string-formatter.js.map +1 -0
  209. package/dist/utils/type-guards.d.ts +629 -0
  210. package/dist/utils/type-guards.d.ts.map +1 -0
  211. package/dist/utils/type-guards.js +662 -0
  212. package/dist/utils/type-guards.js.map +1 -0
  213. package/docs/COMPLETE-GUIDE.md +300 -0
  214. package/docs/MODES-ARCHITECTURE.md +565 -0
  215. package/docs/PRINT-MODE-GUIDE.md +456 -0
  216. package/docs/README.md +1 -2
  217. package/docs/RPC-GUIDE.md +705 -0
  218. package/docs/UTILS-IMPLEMENTATION-SUMMARY.md +647 -0
  219. package/docs/UTILS-MODULE-OVERVIEW.md +1480 -0
  220. package/docs/UTILS-QA-CHECKLIST.md +1061 -0
  221. package/docs/UTILS-USAGE-GUIDE.md +1419 -0
  222. package/package.json +3 -3
@@ -1,8 +1,361 @@
1
1
  /**
2
- * RPC protocol types for headless operation.
2
+ * RPC PROTOCOL SPECIFICATION & TYPE DEFINITIONS
3
3
  *
4
- * Commands are sent as JSON lines on stdin.
5
- * Responses and events are emitted as JSON lines on stdout.
4
+ * ============================================================================
5
+ * OVERVIEW
6
+ * ============================================================================
7
+ *
8
+ * This module defines the complete JSON-RPC 2.0 protocol for headless access
9
+ * to the coding agent. The protocol supports:
10
+ *
11
+ * - Asynchronous command execution with streaming responses
12
+ * - Full session state management and querying
13
+ * - Real-time event subscriptions
14
+ * - Extension UI request/response handling
15
+ * - Error recovery and graceful degradation
16
+ *
17
+ * Communication Model:
18
+ * - Stdin: Commands as newline-delimited JSON
19
+ * - Stdout: Responses and events as newline-delimited JSON
20
+ * - Bidirectional: Client sends commands, server sends responses/events
21
+ * - No ordering guarantee: Events from different commands may interleave
22
+ *
23
+ * ============================================================================
24
+ * PROTOCOL BASICS
25
+ * ============================================================================
26
+ *
27
+ * Command Format (Client to Server):
28
+ * ───────────────────────────────────────────────────────────────────────
29
+ * {
30
+ * "id": "unique-identifier", // Optional: for correlating responses
31
+ * "type": "command-name", // Required: command type
32
+ * ...command-specific fields...
33
+ * }
34
+ *
35
+ * Response Format (Server to Client):
36
+ * ───────────────────────────────────────────────────────────────────────
37
+ * SUCCESS:
38
+ * {
39
+ * "id": "unique-identifier", // Matches command ID if provided
40
+ * "type": "response",
41
+ * "command": "command-name", // Which command this responds to
42
+ * "success": true,
43
+ * "data": {...} // Optional: command-specific data
44
+ * }
45
+ *
46
+ * ERROR:
47
+ * {
48
+ * "id": "unique-identifier",
49
+ * "type": "response",
50
+ * "command": "command-name",
51
+ * "success": false,
52
+ * "error": "Human-readable error message"
53
+ * }
54
+ *
55
+ * Event Format (Server to Client - Streaming):
56
+ * ───────────────────────────────────────────────────────────────────────
57
+ * Events are sent asynchronously and independently of command responses:
58
+ *
59
+ * {
60
+ * "type": "agent_start",
61
+ * "model": { "provider": "...", "id": "..." }
62
+ * }
63
+ *
64
+ * {
65
+ * "type": "message",
66
+ * "role": "user" | "assistant",
67
+ * "content": [...]
68
+ * }
69
+ *
70
+ * {
71
+ * "type": "tool_call",
72
+ * "toolName": "bash",
73
+ * "toolInput": { "command": "..." }
74
+ * }
75
+ *
76
+ * ... More events ...
77
+ *
78
+ * {
79
+ * "type": "agent_end"
80
+ * }
81
+ *
82
+ * ============================================================================
83
+ * COMMAND CATEGORIES & TYPES
84
+ * ============================================================================
85
+ *
86
+ * 1. PROMPTING COMMANDS
87
+ * ──────────────────
88
+ * Control agent execution and conversation flow.
89
+ *
90
+ * - prompt: Send a new prompt with optional images
91
+ * - steer: Interrupt and steer current response (queued)
92
+ * - follow_up: Queue message for after current response
93
+ * - abort: Cancel current operation
94
+ * - new_session: Start fresh session with optional parent tracking
95
+ *
96
+ * 2. STATE COMMANDS
97
+ * ──────────────
98
+ * Query and introspect session state.
99
+ *
100
+ * - get_state: Retrieve full session state snapshot
101
+ * - get_messages: Get all messages in conversation
102
+ * - get_session_stats: Token usage, message count, etc.
103
+ * - get_last_assistant_text: Quick access to latest response
104
+ *
105
+ * 3. MODEL COMMANDS
106
+ * ──────────────
107
+ * Configure and switch AI models.
108
+ *
109
+ * - set_model: Switch to specific model by provider/id
110
+ * - cycle_model: Switch to next available model
111
+ * - get_available_models: List all models from registry
112
+ *
113
+ * 4. THINKING COMMANDS
114
+ * ──────────────────
115
+ * Control model reasoning/thinking behavior.
116
+ *
117
+ * - set_thinking_level: Set budget (none, auto, max)
118
+ * - cycle_thinking_level: Rotate through levels
119
+ *
120
+ * 5. QUEUE MODE COMMANDS
121
+ * ───────────────────
122
+ * Configure how multiple inputs are processed.
123
+ *
124
+ * - set_steering_mode: How steering msgs are handled
125
+ * - set_follow_up_mode: How follow-ups are processed
126
+ *
127
+ * 6. COMPACTION COMMANDS
128
+ * ───────────────────
129
+ * Manage context window via message summarization.
130
+ *
131
+ * - compact: Manually trigger compaction
132
+ * - set_auto_compaction: Enable/disable auto-compaction
133
+ *
134
+ * 7. RETRY COMMANDS
135
+ * ──────────────
136
+ * Control automatic retry behavior.
137
+ *
138
+ * - set_auto_retry: Enable/disable auto-retry
139
+ * - abort_retry: Cancel in-flight retry operation
140
+ *
141
+ * 8. BASH COMMANDS
142
+ * ────────────
143
+ * Execute shell commands directly (synchronous).
144
+ *
145
+ * - bash: Execute command and get stdout/stderr
146
+ * - abort_bash: Kill running command
147
+ *
148
+ * 9. SESSION COMMANDS
149
+ * ────────────────
150
+ * Session management and persistence.
151
+ *
152
+ * - export_html: Export session to HTML file
153
+ * - switch_session: Load different session file
154
+ * - fork: Create new session from branch point
155
+ * - get_fork_messages: Get available branch points
156
+ *
157
+ * ============================================================================
158
+ * SESSION STATE STRUCTURE
159
+ * ============================================================================
160
+ *
161
+ * RpcSessionState is a snapshot of the session at a point in time:
162
+ *
163
+ * {
164
+ * "model": { // Current model info
165
+ * "provider": "anthropic", // Model provider ID
166
+ * "id": "claude-3-5-sonnet", // Model ID
167
+ * "contextWindow": 200000, // Token limit
168
+ * "reasoning": true // Has reasoning capability
169
+ * },
170
+ * "thinkingLevel": "auto", // "none" | "auto" | "max"
171
+ * "isStreaming": false, // Agent currently processing
172
+ * "isCompacting": false, // Auto-compaction in progress
173
+ * "steeringMode": "all", // "all" | "one-at-a-time"
174
+ * "followUpMode": "all", // "all" | "one-at-a-time"
175
+ * "sessionFile": "...path...", // Full path to session JSONL
176
+ * "sessionId": "abc123", // Short session ID
177
+ * "autoCompactionEnabled": true, // Auto-compact on context pressure
178
+ * "messageCount": 42, // Total messages in session
179
+ * "pendingMessageCount": 0 // Messages queued but not processed
180
+ * }
181
+ *
182
+ * ============================================================================
183
+ * ERROR HANDLING & ERROR CODES
184
+ * ============================================================================
185
+ *
186
+ * Response Errors:
187
+ * All command errors returned via success: false with error field.
188
+ * No exceptions thrown - all errors recoverable.
189
+ *
190
+ * Standard Error Codes (JSON-RPC 2.0):
191
+ * -32700 Parse error: Malformed JSON in command
192
+ * -32600 Invalid Request: Required field missing
193
+ * -32601 Method not found: Unknown command type
194
+ * -32602 Invalid params: Parameter value invalid for command
195
+ * -32603 Internal error: Server error during processing
196
+ *
197
+ * Custom Error Codes (Reserved range -32000 to -32099):
198
+ * -32000 Session error: Session file corrupted or inaccessible
199
+ * -32001 Model error: Model not found or unavailable
200
+ * -32002 Tool error: Tool execution failed
201
+ * -32003 Timeout: Operation exceeded time limit
202
+ * -32004 Abort: Operation aborted by user/system
203
+ * -32005 Invalid state: Operation invalid in current state
204
+ *
205
+ * Error Response Example:
206
+ * {
207
+ * "id": "req-123",
208
+ * "type": "response",
209
+ * "command": "set_model",
210
+ * "success": false,
211
+ * "error": "Model not found: anthropic/claude-99"
212
+ * }
213
+ *
214
+ * ============================================================================
215
+ * EXTENSION UI REQUEST/RESPONSE PROTOCOL
216
+ * ============================================================================
217
+ *
218
+ * When extensions need user input, they emit extension_ui_request events:
219
+ *
220
+ * Extension UI Request (Server to Client):
221
+ * ───────────────────────────────────────────────────────────────────────
222
+ * {
223
+ * "type": "extension_ui_request",
224
+ * "id": "ui-uuid", // Correlation ID
225
+ * "method": "select" | "confirm" | "input" | "editor" | ...,
226
+ * ...method-specific fields...
227
+ * }
228
+ *
229
+ * Extension UI Response (Client to Server):
230
+ * ───────────────────────────────────────────────────────────────────────
231
+ * {
232
+ * "type": "extension_ui_response",
233
+ * "id": "ui-uuid", // Matches request ID
234
+ * "value": "..." // Method-specific response
235
+ * }
236
+ *
237
+ * OR (for cancelled/aborted dialogs):
238
+ * {
239
+ * "type": "extension_ui_response",
240
+ * "id": "ui-uuid",
241
+ * "cancelled": true
242
+ * }
243
+ *
244
+ * Supported UI Methods:
245
+ *
246
+ * select(title, options):
247
+ * Request: { method: "select", title: "...", options: [...], timeout?: ms }
248
+ * Response: { value: "selected-option" } or { cancelled: true }
249
+ * Usage: Extension offers user a choice
250
+ *
251
+ * confirm(title, message):
252
+ * Request: { method: "confirm", title: "...", message: "...", timeout?: ms }
253
+ * Response: { confirmed: boolean } or { cancelled: true }
254
+ * Usage: Extension requests yes/no confirmation
255
+ *
256
+ * input(title, placeholder):
257
+ * Request: { method: "input", title: "...", placeholder: "...", timeout?: ms }
258
+ * Response: { value: "user-input" } or { cancelled: true }
259
+ * Usage: Extension requests text input
260
+ *
261
+ * editor(title, prefill):
262
+ * Request: { method: "editor", title: "...", prefill: "..." }
263
+ * Response: { value: "edited-text" } or { cancelled: true }
264
+ * Usage: Extension opens editor for multi-line editing
265
+ *
266
+ * notify(message, type):
267
+ * Request: { method: "notify", message: "...", notifyType: "info"|"warning"|"error" }
268
+ * No response required (fire-and-forget)
269
+ * Usage: Extension sends notification to user
270
+ *
271
+ * setStatus(key, text):
272
+ * Request: { method: "setStatus", statusKey: "...", statusText: "..." }
273
+ * No response required (fire-and-forget)
274
+ * Usage: Extension updates status line in UI
275
+ *
276
+ * setWidget(key, lines, placement):
277
+ * Request: { method: "setWidget", widgetKey: "...", widgetLines: [...], widgetPlacement: "..." }
278
+ * No response required (fire-and-forget)
279
+ * Usage: Extension updates custom widget display
280
+ *
281
+ * setTitle(title):
282
+ * Request: { method: "setTitle", title: "..." }
283
+ * No response required (fire-and-forget)
284
+ * Usage: Extension sets terminal/window title
285
+ *
286
+ * setEditorText(text):
287
+ * Request: { method: "set_editor_text", text: "..." }
288
+ * No response required (fire-and-forget)
289
+ * Usage: Extension modifies editor content
290
+ *
291
+ * ============================================================================
292
+ * ASYNCHRONOUS BEHAVIOR & EVENT ORDERING
293
+ * ============================================================================
294
+ *
295
+ * Key Points:
296
+ * 1. Commands complete immediately with response (success: true/false)
297
+ * 2. Events stream asynchronously after command response
298
+ * 3. No ordering guarantee between different command's events
299
+ * 4. Within a single command, events are ordered
300
+ *
301
+ * Example Timeline:
302
+ * Client: { "id": "req-1", "type": "prompt", "message": "Hello" }
303
+ * Server: { "id": "req-1", "type": "response", "command": "prompt", "success": true }
304
+ * Server: { "type": "agent_start", "model": {...} }
305
+ * Server: { "type": "message", "role": "user", "content": [...] }
306
+ * Server: { "type": "agent_end" }
307
+ *
308
+ * Client: { "id": "req-2", "type": "get_state" }
309
+ * Server: { "id": "req-2", "type": "response", "command": "get_state", "success": true, "data": {...} }
310
+ *
311
+ * ============================================================================
312
+ * MESSAGE CONTENT STRUCTURE
313
+ * ============================================================================
314
+ *
315
+ * Messages contain arrays of content blocks:
316
+ *
317
+ * Text Content:
318
+ * {
319
+ * "type": "text",
320
+ * "text": "The actual message text"
321
+ * }
322
+ *
323
+ * Image Content:
324
+ * {
325
+ * "type": "image",
326
+ * "mimeType": "image/png" | "image/jpeg" | "image/gif" | "image/webp",
327
+ * "data": "base64-encoded-image-data"
328
+ * }
329
+ *
330
+ * Tool Use (in assistant messages):
331
+ * {
332
+ * "type": "tool_use",
333
+ * "id": "tool-use-123",
334
+ * "name": "bash",
335
+ * "input": { "command": "ls -la" }
336
+ * }
337
+ *
338
+ * Tool Result (in user messages):
339
+ * {
340
+ * "type": "tool_result",
341
+ * "toolUseId": "tool-use-123",
342
+ * "content": [
343
+ * { "type": "text", "text": "stdout content" }
344
+ * ],
345
+ * "isError": false
346
+ * }
347
+ *
348
+ * ============================================================================
349
+ * BASED ON PROTOCOL IMPLEMENTATION
350
+ * ============================================================================
351
+ *
352
+ * These type definitions implement the complete RPC protocol for the coding
353
+ * agent. They ensure type safety on both client and server, support IDE
354
+ * autocomplete, and serve as documentation of the protocol contract.
355
+ *
356
+ * Use RpcCommand and RpcCommand union for sending commands.
357
+ * Use RpcResponse union for handling responses.
358
+ * Use RpcExtensionUIRequest/Response for extension dialogs.
6
359
  */
7
360
  export {};
8
361
  //# sourceMappingURL=rpc-types.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"rpc-types.js","sourceRoot":"","sources":["../../../src/modes/rpc/rpc-types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}
1
+ {"version":3,"file":"rpc-types.js","sourceRoot":"","sources":["../../../src/modes/rpc/rpc-types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsWG"}