@a3s-lab/code 0.6.0 → 0.7.1

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 (52) hide show
  1. package/index.d.ts +87 -0
  2. package/index.darwin-arm64.node +0 -0
  3. package/index.darwin-x64.node +0 -0
  4. package/index.js +128 -0
  5. package/index.linux-arm64-gnu.node +0 -0
  6. package/index.linux-arm64-musl.node +0 -0
  7. package/index.linux-x64-gnu.node +0 -0
  8. package/index.linux-x64-musl.node +0 -0
  9. package/package.json +27 -34
  10. package/LICENSE +0 -21
  11. package/README.md +0 -764
  12. package/dist/chat.d.ts +0 -97
  13. package/dist/chat.d.ts.map +0 -1
  14. package/dist/chat.js +0 -179
  15. package/dist/chat.js.map +0 -1
  16. package/dist/client.d.ts +0 -1356
  17. package/dist/client.d.ts.map +0 -1
  18. package/dist/client.js +0 -1014
  19. package/dist/client.js.map +0 -1
  20. package/dist/config.d.ts +0 -106
  21. package/dist/config.d.ts.map +0 -1
  22. package/dist/config.js +0 -142
  23. package/dist/config.js.map +0 -1
  24. package/dist/generate.d.ts +0 -130
  25. package/dist/generate.d.ts.map +0 -1
  26. package/dist/generate.js +0 -283
  27. package/dist/generate.js.map +0 -1
  28. package/dist/index.d.ts +0 -54
  29. package/dist/index.d.ts.map +0 -1
  30. package/dist/index.js +0 -60
  31. package/dist/index.js.map +0 -1
  32. package/dist/message.d.ts +0 -157
  33. package/dist/message.d.ts.map +0 -1
  34. package/dist/message.js +0 -279
  35. package/dist/message.js.map +0 -1
  36. package/dist/openai-compat.d.ts +0 -186
  37. package/dist/openai-compat.d.ts.map +0 -1
  38. package/dist/openai-compat.js +0 -263
  39. package/dist/openai-compat.js.map +0 -1
  40. package/dist/provider.d.ts +0 -64
  41. package/dist/provider.d.ts.map +0 -1
  42. package/dist/provider.js +0 -60
  43. package/dist/provider.js.map +0 -1
  44. package/dist/session.d.ts +0 -573
  45. package/dist/session.d.ts.map +0 -1
  46. package/dist/session.js +0 -1153
  47. package/dist/session.js.map +0 -1
  48. package/dist/tool.d.ts +0 -106
  49. package/dist/tool.d.ts.map +0 -1
  50. package/dist/tool.js +0 -71
  51. package/dist/tool.js.map +0 -1
  52. package/proto/code_agent.proto +0 -1851
@@ -1,1851 +0,0 @@
1
- syntax = "proto3";
2
-
3
- package a3s.code.agent.v1;
4
-
5
- // ============================================================================
6
- // A3S Code Agent Service
7
- // ============================================================================
8
- // Standard coding agent interface. Any agent implementing this interface
9
- // can be integrated into A3S Box.
10
-
11
- service CodeAgentService {
12
- // === Lifecycle Management ===
13
- rpc HealthCheck(HealthCheckRequest) returns (HealthCheckResponse);
14
- rpc GetCapabilities(GetCapabilitiesRequest) returns (GetCapabilitiesResponse);
15
- rpc Initialize(InitializeRequest) returns (InitializeResponse);
16
- rpc Shutdown(ShutdownRequest) returns (ShutdownResponse);
17
-
18
- // === Session Management ===
19
- rpc CreateSession(CreateSessionRequest) returns (CreateSessionResponse);
20
- rpc DestroySession(DestroySessionRequest) returns (DestroySessionResponse);
21
- rpc ListSessions(ListSessionsRequest) returns (ListSessionsResponse);
22
- rpc GetSession(GetSessionRequest) returns (GetSessionResponse);
23
- rpc ConfigureSession(ConfigureSessionRequest) returns (ConfigureSessionResponse);
24
- rpc GetMessages(GetMessagesRequest) returns (GetMessagesResponse);
25
- rpc RestoreSession(RestoreSessionRequest) returns (RestoreSessionResponse);
26
-
27
- // === Code Generation ===
28
- rpc Generate(GenerateRequest) returns (GenerateResponse);
29
- rpc StreamGenerate(GenerateRequest) returns (stream GenerateChunk);
30
- rpc GenerateStructured(GenerateStructuredRequest) returns (GenerateStructuredResponse);
31
- rpc StreamGenerateStructured(GenerateStructuredRequest) returns (stream GenerateStructuredChunk);
32
-
33
- // === Skill Management ===
34
- rpc LoadSkill(LoadSkillRequest) returns (LoadSkillResponse);
35
- rpc UnloadSkill(UnloadSkillRequest) returns (UnloadSkillResponse);
36
- rpc ListSkills(ListSkillsRequest) returns (ListSkillsResponse);
37
- rpc GetSkill(GetSkillRequest) returns (GetSkillResponse);
38
- rpc SearchSkills(SearchSkillsRequest) returns (SearchSkillsResponse);
39
- rpc InstallSkill(InstallSkillRequest) returns (InstallSkillResponse);
40
-
41
- // === Context Management ===
42
- rpc GetContextUsage(GetContextUsageRequest) returns (GetContextUsageResponse);
43
- rpc CompactContext(CompactContextRequest) returns (CompactContextResponse);
44
- rpc ClearContext(ClearContextRequest) returns (ClearContextResponse);
45
-
46
- // === Event Streaming ===
47
- rpc SubscribeEvents(SubscribeEventsRequest) returns (stream AgentEvent);
48
-
49
- // === Control Operations ===
50
- rpc Cancel(CancelRequest) returns (CancelResponse);
51
- rpc Pause(PauseRequest) returns (PauseResponse);
52
- rpc Resume(ResumeRequest) returns (ResumeResponse);
53
-
54
- // === Human-in-the-Loop (HITL) ===
55
- rpc ConfirmToolExecution(ConfirmToolExecutionRequest) returns (ConfirmToolExecutionResponse);
56
- rpc SetConfirmationPolicy(SetConfirmationPolicyRequest) returns (SetConfirmationPolicyResponse);
57
- rpc GetConfirmationPolicy(GetConfirmationPolicyRequest) returns (GetConfirmationPolicyResponse);
58
-
59
- // === External Task Handling (Pluggable Handlers) ===
60
- rpc SetLaneHandler(SetLaneHandlerRequest) returns (SetLaneHandlerResponse);
61
- rpc GetLaneHandler(GetLaneHandlerRequest) returns (GetLaneHandlerResponse);
62
- rpc CompleteExternalTask(CompleteExternalTaskRequest) returns (CompleteExternalTaskResponse);
63
- rpc ListPendingExternalTasks(ListPendingExternalTasksRequest) returns (ListPendingExternalTasksResponse);
64
-
65
- // === Permission System (Allow/Deny/Ask Rules) ===
66
- rpc SetPermissionPolicy(SetPermissionPolicyRequest) returns (SetPermissionPolicyResponse);
67
- rpc GetPermissionPolicy(GetPermissionPolicyRequest) returns (GetPermissionPolicyResponse);
68
- rpc CheckPermission(CheckPermissionRequest) returns (CheckPermissionResponse);
69
- rpc AddPermissionRule(AddPermissionRuleRequest) returns (AddPermissionRuleResponse);
70
-
71
- // === Todo/Task Tracking ===
72
- rpc GetTodos(GetTodosRequest) returns (GetTodosResponse);
73
- rpc SetTodos(SetTodosRequest) returns (SetTodosResponse);
74
-
75
- // === Provider Configuration ===
76
- rpc ListProviders(ListProvidersRequest) returns (ListProvidersResponse);
77
- rpc GetProvider(GetProviderRequest) returns (GetProviderResponse);
78
- rpc AddProvider(AddProviderRequest) returns (AddProviderResponse);
79
- rpc UpdateProvider(UpdateProviderRequest) returns (UpdateProviderResponse);
80
- rpc RemoveProvider(RemoveProviderRequest) returns (RemoveProviderResponse);
81
- rpc SetDefaultModel(SetDefaultModelRequest) returns (SetDefaultModelResponse);
82
- rpc GetDefaultModel(GetDefaultModelRequest) returns (GetDefaultModelResponse);
83
-
84
- // === Planning & Goal Tracking (Phase 1) ===
85
- rpc CreatePlan(CreatePlanRequest) returns (CreatePlanResponse);
86
- rpc GetPlan(GetPlanRequest) returns (GetPlanResponse);
87
- rpc ExtractGoal(ExtractGoalRequest) returns (ExtractGoalResponse);
88
- rpc CheckGoalAchievement(CheckGoalAchievementRequest) returns (CheckGoalAchievementResponse);
89
-
90
- // === Memory System (Phase 3) ===
91
- rpc StoreMemory(StoreMemoryRequest) returns (StoreMemoryResponse);
92
- rpc RetrieveMemory(RetrieveMemoryRequest) returns (RetrieveMemoryResponse);
93
- rpc SearchMemories(SearchMemoriesRequest) returns (SearchMemoriesResponse);
94
- rpc GetMemoryStats(GetMemoryStatsRequest) returns (GetMemoryStatsResponse);
95
- rpc ClearMemories(ClearMemoriesRequest) returns (ClearMemoriesResponse);
96
- rpc DeleteMemory(DeleteMemoryRequest) returns (DeleteMemoryResponse);
97
- rpc SummarizeMemories(SummarizeMemoriesRequest) returns (SummarizeMemoriesResponse);
98
-
99
- // === MCP (Model Context Protocol) ===
100
- rpc RegisterMcpServer(RegisterMcpServerRequest) returns (RegisterMcpServerResponse);
101
- rpc ConnectMcpServer(ConnectMcpServerRequest) returns (ConnectMcpServerResponse);
102
- rpc DisconnectMcpServer(DisconnectMcpServerRequest) returns (DisconnectMcpServerResponse);
103
- rpc ListMcpServers(ListMcpServersRequest) returns (ListMcpServersResponse);
104
- rpc GetMcpTools(GetMcpToolsRequest) returns (GetMcpToolsResponse);
105
-
106
- // === LSP (Language Server Protocol) ===
107
- rpc StartLspServer(StartLspServerRequest) returns (StartLspServerResponse);
108
- rpc StopLspServer(StopLspServerRequest) returns (StopLspServerResponse);
109
- rpc ListLspServers(ListLspServersRequest) returns (ListLspServersResponse);
110
- rpc LspHover(LspHoverRequest) returns (LspHoverResponse);
111
- rpc LspDefinition(LspDefinitionRequest) returns (LspDefinitionResponse);
112
- rpc LspReferences(LspReferencesRequest) returns (LspReferencesResponse);
113
- rpc LspSymbols(LspSymbolsRequest) returns (LspSymbolsResponse);
114
- rpc LspDiagnostics(LspDiagnosticsRequest) returns (LspDiagnosticsResponse);
115
-
116
- // === Cron (Scheduled Tasks) ===
117
- rpc ListCronJobs(ListCronJobsRequest) returns (ListCronJobsResponse);
118
- rpc CreateCronJob(CreateCronJobRequest) returns (CreateCronJobResponse);
119
- rpc GetCronJob(GetCronJobRequest) returns (GetCronJobResponse);
120
- rpc UpdateCronJob(UpdateCronJobRequest) returns (UpdateCronJobResponse);
121
- rpc PauseCronJob(PauseCronJobRequest) returns (PauseCronJobResponse);
122
- rpc ResumeCronJob(ResumeCronJobRequest) returns (ResumeCronJobResponse);
123
- rpc DeleteCronJob(DeleteCronJobRequest) returns (DeleteCronJobResponse);
124
- rpc GetCronHistory(GetCronHistoryRequest) returns (GetCronHistoryResponse);
125
- rpc RunCronJob(RunCronJobRequest) returns (RunCronJobResponse);
126
- rpc ParseCronSchedule(ParseCronScheduleRequest) returns (ParseCronScheduleResponse);
127
-
128
- // Observability
129
- rpc GetToolMetrics(GetToolMetricsRequest) returns (GetToolMetricsResponse);
130
- rpc GetCostSummary(GetCostSummaryRequest) returns (GetCostSummaryResponse);
131
-
132
- // === Server-Side AgenticLoop ===
133
- rpc AgenticGenerate(AgenticGenerateRequest) returns (AgenticGenerateResponse);
134
- rpc StreamAgenticGenerate(AgenticGenerateRequest) returns (stream AgenticGenerateEvent);
135
-
136
- // === Server-Side Delegation (Subagents) ===
137
- rpc Delegate(DelegateRequest) returns (DelegateResponse);
138
- rpc StreamDelegate(DelegateRequest) returns (stream AgenticGenerateEvent);
139
-
140
- // === Queue Statistics ===
141
- rpc GetQueueStats(GetQueueStatsRequest) returns (GetQueueStatsResponse);
142
-
143
- // === Batch Skill Loading ===
144
- rpc LoadSkillsFromDir(LoadSkillsFromDirRequest) returns (LoadSkillsFromDirResponse);
145
- }
146
-
147
- // ============================================================================
148
- // Lifecycle Management Messages
149
- // ============================================================================
150
-
151
- message HealthCheckRequest {}
152
-
153
- message HealthCheckResponse {
154
- enum Status {
155
- STATUS_UNKNOWN = 0;
156
- STATUS_HEALTHY = 1;
157
- STATUS_DEGRADED = 2;
158
- STATUS_UNHEALTHY = 3;
159
- }
160
-
161
- Status status = 1;
162
- string message = 2;
163
- map<string, string> details = 3;
164
- }
165
-
166
- message GetCapabilitiesRequest {}
167
-
168
- message GetCapabilitiesResponse {
169
- AgentInfo info = 1;
170
- repeated string features = 2;
171
- repeated ToolCapability tools = 3;
172
- repeated ModelCapability models = 4;
173
- ResourceLimits limits = 5;
174
- map<string, string> metadata = 6;
175
- }
176
-
177
- message AgentInfo {
178
- string name = 1;
179
- string version = 2;
180
- string description = 3;
181
- string author = 4;
182
- string license = 5;
183
- string homepage = 6;
184
- }
185
-
186
- message ToolCapability {
187
- string name = 1;
188
- string description = 2;
189
- repeated string parameters = 3;
190
- bool async = 4;
191
- }
192
-
193
- message ModelCapability {
194
- string provider = 1;
195
- string model = 2;
196
- repeated string features = 3;
197
- }
198
-
199
- message ResourceLimits {
200
- uint64 max_context_tokens = 1;
201
- uint32 max_concurrent_sessions = 2;
202
- uint32 max_tools_per_request = 3;
203
- }
204
-
205
- message InitializeRequest {
206
- string workspace = 1;
207
- map<string, string> env = 2;
208
- }
209
-
210
- message InitializeResponse {
211
- bool success = 1;
212
- string message = 2;
213
- AgentInfo info = 3;
214
- }
215
-
216
- message LLMConfig {
217
- string provider = 1;
218
- string model = 2;
219
- string api_key = 3;
220
- string base_url = 4;
221
- float temperature = 5;
222
- uint32 max_tokens = 6;
223
- }
224
-
225
- message ShutdownRequest {}
226
-
227
- message ShutdownResponse {
228
- bool success = 1;
229
- string message = 2;
230
- }
231
-
232
- // ============================================================================
233
- // Session Management Messages
234
- // ============================================================================
235
-
236
- message CreateSessionRequest {
237
- optional string session_id = 1;
238
- SessionConfig config = 2;
239
- repeated Message initial_context = 3;
240
- }
241
-
242
- message CreateSessionResponse {
243
- string session_id = 1;
244
- Session session = 2;
245
- }
246
-
247
- message SessionConfig {
248
- string name = 1;
249
- string workspace = 2;
250
- optional LLMConfig llm = 3;
251
- string system_prompt = 4;
252
- uint32 max_context_length = 5;
253
- bool auto_compact = 6;
254
- StorageType storage_type = 7;
255
- float auto_compact_threshold = 8; // Context usage threshold (0.0-1.0) for auto-compaction, default 0.80
256
- bool planning_enabled = 9; // Enable planning phase before execution
257
- bool goal_tracking = 10; // Enable goal tracking
258
- }
259
-
260
- enum StorageType {
261
- STORAGE_TYPE_UNSPECIFIED = 0;
262
- STORAGE_TYPE_MEMORY = 1;
263
- STORAGE_TYPE_FILE = 2;
264
- STORAGE_TYPE_CUSTOM = 3;
265
- }
266
-
267
- message Session {
268
- string session_id = 1;
269
- SessionConfig config = 2;
270
- SessionState state = 3;
271
- ContextUsage context_usage = 4;
272
- int64 created_at = 5;
273
- int64 updated_at = 6;
274
- }
275
-
276
- enum SessionState {
277
- SESSION_STATE_UNKNOWN = 0;
278
- SESSION_STATE_ACTIVE = 1;
279
- SESSION_STATE_PAUSED = 2;
280
- SESSION_STATE_COMPLETED = 3;
281
- SESSION_STATE_ERROR = 4;
282
- }
283
-
284
- message ContextUsage {
285
- uint32 total_tokens = 1;
286
- uint32 prompt_tokens = 2;
287
- uint32 completion_tokens = 3;
288
- uint32 message_count = 4;
289
- }
290
-
291
- message DestroySessionRequest {
292
- string session_id = 1;
293
- }
294
-
295
- message DestroySessionResponse {
296
- bool success = 1;
297
- }
298
-
299
- message ListSessionsRequest {}
300
-
301
- message ListSessionsResponse {
302
- repeated Session sessions = 1;
303
- }
304
-
305
- message RestoreSessionRequest {
306
- string session_id = 1;
307
- }
308
-
309
- message RestoreSessionResponse {
310
- bool success = 1;
311
- string session_id = 2;
312
- string message = 3;
313
- }
314
-
315
- message GetSessionRequest {
316
- string session_id = 1;
317
- }
318
-
319
- message GetSessionResponse {
320
- Session session = 1;
321
- }
322
-
323
- message ConfigureSessionRequest {
324
- string session_id = 1;
325
- SessionConfig config = 2;
326
- }
327
-
328
- message ConfigureSessionResponse {
329
- Session session = 1;
330
- }
331
-
332
- // Get messages (conversation history) for a session
333
- message GetMessagesRequest {
334
- string session_id = 1;
335
- optional uint32 limit = 2; // Max number of messages to return (default: all)
336
- optional uint32 offset = 3; // Skip first N messages (for pagination)
337
- }
338
-
339
- message GetMessagesResponse {
340
- repeated ConversationMessage messages = 1;
341
- uint32 total_count = 2; // Total number of messages in session
342
- bool has_more = 3; // Whether there are more messages after this batch
343
- }
344
-
345
- // Rich message format for conversation history
346
- message ConversationMessage {
347
- string id = 1; // Unique message ID
348
- string role = 2; // "user", "assistant", "system"
349
- repeated ContentBlock content = 3;
350
- int64 timestamp = 4; // Unix timestamp (milliseconds)
351
- map<string, string> metadata = 5;
352
- }
353
-
354
- // Content block within a message
355
- message ContentBlock {
356
- oneof block {
357
- TextContent text = 1;
358
- ToolUseContent tool_use = 2;
359
- ToolResultContent tool_result = 3;
360
- }
361
- }
362
-
363
- message TextContent {
364
- string text = 1;
365
- }
366
-
367
- message ToolUseContent {
368
- string id = 1;
369
- string name = 2;
370
- string arguments = 3; // JSON string
371
- }
372
-
373
- message ToolResultContent {
374
- string tool_use_id = 1;
375
- string content = 2;
376
- bool is_error = 3;
377
- }
378
-
379
- // ============================================================================
380
- // Code Generation Messages
381
- // ============================================================================
382
-
383
- message GenerateRequest {
384
- string session_id = 1;
385
- repeated Message messages = 2;
386
- }
387
-
388
- // OpenAI-compatible message format
389
- message Message {
390
- string role = 1; // "user", "assistant", "system", "tool"
391
- string content = 2;
392
- map<string, string> metadata = 3;
393
- }
394
-
395
- message GenerateResponse {
396
- string session_id = 1;
397
- Message message = 2;
398
- repeated ToolCall tool_calls = 3;
399
- Usage usage = 4;
400
- string finish_reason = 5; // OpenAI-compatible: "stop", "length", "tool_calls", "content_filter", "error"
401
- map<string, string> metadata = 6;
402
- }
403
-
404
- message ToolCall {
405
- string id = 1;
406
- string name = 2;
407
- string arguments = 3;
408
- optional ToolResult result = 4;
409
- }
410
-
411
- message ToolResult {
412
- bool success = 1;
413
- string output = 2;
414
- string error = 3;
415
- map<string, string> metadata = 4;
416
- }
417
-
418
- message Usage {
419
- uint32 prompt_tokens = 1;
420
- uint32 completion_tokens = 2;
421
- uint32 total_tokens = 3;
422
- }
423
-
424
- // OpenAI-compatible finish reason (string values)
425
- // Values: "stop", "length", "tool_calls", "content_filter", "error"
426
- // Note: Using string instead of enum for OpenAI compatibility
427
-
428
- message GenerateChunk {
429
- // OpenAI-compatible chunk type (string values)
430
- // Values: "content", "tool_call", "tool_result", "metadata", "done"
431
- string type = 1;
432
- string session_id = 2;
433
- string content = 3;
434
- optional ToolCall tool_call = 4;
435
- optional ToolResult tool_result = 5;
436
- map<string, string> metadata = 6;
437
- string finish_reason = 7; // OpenAI-compatible: "stop", "length", "tool_calls", etc.
438
- }
439
-
440
- message GenerateStructuredRequest {
441
- string session_id = 1;
442
- repeated Message messages = 2;
443
- string schema = 3; // JSON Schema
444
- }
445
-
446
- message GenerateStructuredResponse {
447
- string session_id = 1;
448
- string data = 2; // JSON format
449
- Usage usage = 3;
450
- map<string, string> metadata = 4;
451
- }
452
-
453
- message GenerateStructuredChunk {
454
- string session_id = 1;
455
- string data = 2;
456
- bool done = 3;
457
- }
458
-
459
- // ============================================================================
460
- // Skill Management Messages
461
- // ============================================================================
462
-
463
- message LoadSkillRequest {
464
- string session_id = 1;
465
- string skill_name = 2;
466
- optional string skill_content = 3;
467
- }
468
-
469
- message LoadSkillResponse {
470
- bool success = 1;
471
- }
472
-
473
- message UnloadSkillRequest {
474
- string session_id = 1;
475
- string skill_name = 2;
476
- }
477
-
478
- message UnloadSkillResponse {
479
- bool success = 1;
480
- }
481
-
482
- message ListSkillsRequest {
483
- optional string session_id = 1;
484
- }
485
-
486
- message ListSkillsResponse {
487
- repeated Skill skills = 1;
488
- }
489
-
490
- message Skill {
491
- string name = 1;
492
- string description = 2;
493
- optional string allowed_tools = 3; // Tool permissions (e.g., "Bash(gh:*)")
494
- bool disable_model_invocation = 4;
495
- string content = 5; // Markdown instructions
496
- map<string, string> metadata = 6;
497
- string kind = 7; // "instruction" (default), "tool", "agent"
498
- }
499
-
500
- // Tool permission pattern
501
- message ToolPermission {
502
- string tool = 1; // Tool name (e.g., "Bash")
503
- string pattern = 2; // Pattern to match (e.g., "gh:*")
504
- }
505
-
506
- message GetSkillRequest {
507
- optional string name = 1; // If set, get specific skill by name
508
- }
509
-
510
- message GetSkillResponse {
511
- repeated Skill skills = 1;
512
- }
513
-
514
- // Search skills in the ecosystem
515
- message SearchSkillsRequest {
516
- string query = 1; // Search query keywords
517
- uint32 limit = 2; // Max results (default: 10, max: 30)
518
- }
519
-
520
- message SearchSkillsResponse {
521
- repeated SkillSearchResult results = 1;
522
- uint32 total_count = 2;
523
- }
524
-
525
- message SkillSearchResult {
526
- string name = 1; // Repository full name (owner/repo)
527
- string description = 2;
528
- string url = 3; // GitHub URL
529
- uint64 stars = 4;
530
- repeated string topics = 5;
531
- string install_source = 6; // Source string for install_skill
532
- }
533
-
534
- // Install a skill from GitHub
535
- message InstallSkillRequest {
536
- string source = 1; // owner/repo or owner/repo@skill-name
537
- bool global = 2; // Install globally (~/.a3s/skills/) vs project-local
538
- optional string session_id = 3;
539
- }
540
-
541
- message InstallSkillResponse {
542
- bool success = 1;
543
- string message = 2;
544
- string installed_path = 3; // Path where skill was saved
545
- string skill_name = 4; // Name of installed skill
546
- }
547
-
548
- // ============================================================================
549
- // Context Management Messages
550
- // ============================================================================
551
-
552
- message GetContextUsageRequest {
553
- string session_id = 1;
554
- }
555
-
556
- message GetContextUsageResponse {
557
- ContextUsage usage = 1;
558
- }
559
-
560
- message CompactContextRequest {
561
- string session_id = 1;
562
- }
563
-
564
- message CompactContextResponse {
565
- bool success = 1;
566
- ContextUsage before = 2;
567
- ContextUsage after = 3;
568
- }
569
-
570
- message ClearContextRequest {
571
- string session_id = 1;
572
- }
573
-
574
- message ClearContextResponse {
575
- bool success = 1;
576
- }
577
-
578
- // ============================================================================
579
- // Event Streaming Messages
580
- // ============================================================================
581
-
582
- message SubscribeEventsRequest {
583
- optional string session_id = 1;
584
- repeated string event_types = 2;
585
- }
586
-
587
- message AgentEvent {
588
- enum EventType {
589
- EVENT_TYPE_UNKNOWN = 0;
590
- EVENT_TYPE_SESSION_CREATED = 1;
591
- EVENT_TYPE_SESSION_DESTROYED = 2;
592
- EVENT_TYPE_GENERATION_STARTED = 3;
593
- EVENT_TYPE_GENERATION_COMPLETED = 4;
594
- EVENT_TYPE_TOOL_CALLED = 5;
595
- EVENT_TYPE_TOOL_COMPLETED = 6;
596
- EVENT_TYPE_ERROR = 7;
597
- EVENT_TYPE_WARNING = 8;
598
- EVENT_TYPE_INFO = 9;
599
- // HITL events
600
- EVENT_TYPE_CONFIRMATION_REQUIRED = 10;
601
- EVENT_TYPE_CONFIRMATION_RECEIVED = 11;
602
- EVENT_TYPE_CONFIRMATION_TIMEOUT = 12;
603
- // External task events
604
- EVENT_TYPE_EXTERNAL_TASK_PENDING = 13;
605
- EVENT_TYPE_EXTERNAL_TASK_COMPLETED = 14;
606
- // Permission events
607
- EVENT_TYPE_PERMISSION_DENIED = 15;
608
- // Memory System events (Phase 3)
609
- EVENT_TYPE_MEMORY_STORED = 16;
610
- EVENT_TYPE_MEMORY_RECALLED = 17;
611
- EVENT_TYPE_MEMORIES_SEARCHED = 18;
612
- EVENT_TYPE_MEMORY_CLEARED = 19;
613
- // Context compaction events
614
- EVENT_TYPE_CONTEXT_COMPACTED = 20;
615
- }
616
-
617
- EventType type = 1;
618
- optional string session_id = 2;
619
- int64 timestamp = 3;
620
- string message = 4;
621
- map<string, string> data = 5;
622
- }
623
-
624
- // ============================================================================
625
- // Control Operations Messages
626
- // ============================================================================
627
-
628
- message CancelRequest {
629
- string session_id = 1;
630
- optional string operation_id = 2;
631
- }
632
-
633
- message CancelResponse {
634
- bool success = 1;
635
- }
636
-
637
- message PauseRequest {
638
- string session_id = 1;
639
- }
640
-
641
- message PauseResponse {
642
- bool success = 1;
643
- }
644
-
645
- message ResumeRequest {
646
- string session_id = 1;
647
- }
648
-
649
- message ResumeResponse {
650
- bool success = 1;
651
- }
652
-
653
- // ============================================================================
654
- // Human-in-the-Loop (HITL) Messages
655
- // ============================================================================
656
-
657
- // Confirm tool execution request
658
- message ConfirmToolExecutionRequest {
659
- string session_id = 1;
660
- string tool_id = 2;
661
- bool approved = 3;
662
- optional string reason = 4;
663
- }
664
-
665
- message ConfirmToolExecutionResponse {
666
- bool success = 1;
667
- string error = 2;
668
- }
669
-
670
- // Session queue lane type
671
- enum SessionLane {
672
- SESSION_LANE_UNKNOWN = 0;
673
- SESSION_LANE_CONTROL = 1; // P0 - pause, resume, cancel
674
- SESSION_LANE_QUERY = 2; // P1 - read, glob, ls, grep
675
- SESSION_LANE_EXECUTE = 3; // P2 - bash, write, edit
676
- SESSION_LANE_GENERATE = 4; // P3 - LLM calls
677
- }
678
-
679
- // Timeout behavior
680
- enum TimeoutAction {
681
- TIMEOUT_ACTION_UNKNOWN = 0;
682
- TIMEOUT_ACTION_REJECT = 1; // Reject on timeout
683
- TIMEOUT_ACTION_AUTO_APPROVE = 2; // Auto-approve on timeout
684
- }
685
-
686
- // Confirmation policy configuration
687
- message ConfirmationPolicy {
688
- bool enabled = 1; // Whether HITL is enabled (default: false)
689
- repeated string auto_approve_tools = 2; // Tools to auto-approve
690
- repeated string require_confirm_tools = 3; // Tools requiring confirmation
691
- uint64 default_timeout_ms = 4; // Default timeout (30s)
692
- TimeoutAction timeout_action = 5; // Timeout behavior
693
- repeated SessionLane yolo_lanes = 6; // YOLO mode: tasks in these lanes auto-approve
694
- }
695
-
696
- // Set confirmation policy request
697
- message SetConfirmationPolicyRequest {
698
- string session_id = 1;
699
- ConfirmationPolicy policy = 2;
700
- }
701
-
702
- message SetConfirmationPolicyResponse {
703
- bool success = 1;
704
- ConfirmationPolicy policy = 2;
705
- }
706
-
707
- // Get confirmation policy request
708
- message GetConfirmationPolicyRequest {
709
- string session_id = 1;
710
- }
711
-
712
- message GetConfirmationPolicyResponse {
713
- ConfirmationPolicy policy = 1;
714
- }
715
-
716
- // ============================================================================
717
- // External Task Handling (Pluggable Handlers) Messages
718
- // ============================================================================
719
-
720
- // Task handler mode
721
- enum TaskHandlerMode {
722
- TASK_HANDLER_MODE_UNKNOWN = 0;
723
- TASK_HANDLER_MODE_INTERNAL = 1; // Internal handling (default)
724
- TASK_HANDLER_MODE_EXTERNAL = 2; // External handling (send to SDK, wait for callback)
725
- TASK_HANDLER_MODE_HYBRID = 3; // Hybrid mode (internal handling with external notification)
726
- }
727
-
728
- // Lane handler configuration
729
- message LaneHandlerConfig {
730
- TaskHandlerMode mode = 1;
731
- uint64 timeout_ms = 2; // External handling timeout (milliseconds)
732
- }
733
-
734
- // Set lane handler request
735
- message SetLaneHandlerRequest {
736
- string session_id = 1;
737
- SessionLane lane = 2;
738
- LaneHandlerConfig config = 3;
739
- }
740
-
741
- message SetLaneHandlerResponse {
742
- bool success = 1;
743
- LaneHandlerConfig config = 2;
744
- }
745
-
746
- // Get lane handler request
747
- message GetLaneHandlerRequest {
748
- string session_id = 1;
749
- SessionLane lane = 2;
750
- }
751
-
752
- message GetLaneHandlerResponse {
753
- LaneHandlerConfig config = 1;
754
- }
755
-
756
- // External task
757
- message ExternalTask {
758
- string task_id = 1;
759
- string session_id = 2;
760
- SessionLane lane = 3;
761
- string command_type = 4;
762
- string payload = 5; // Task data in JSON format
763
- uint64 timeout_ms = 6;
764
- uint64 remaining_ms = 7; // Remaining timeout
765
- }
766
-
767
- // Complete external task request
768
- message CompleteExternalTaskRequest {
769
- string session_id = 1;
770
- string task_id = 2;
771
- bool success = 3;
772
- string result = 4; // Result in JSON format
773
- string error = 5; // Error message (if failed)
774
- }
775
-
776
- message CompleteExternalTaskResponse {
777
- bool success = 1;
778
- string error = 2;
779
- }
780
-
781
- // List pending external tasks request
782
- message ListPendingExternalTasksRequest {
783
- string session_id = 1;
784
- }
785
-
786
- message ListPendingExternalTasksResponse {
787
- repeated ExternalTask tasks = 1;
788
- }
789
-
790
- // ============================================================================
791
- // Permission System (Allow/Deny/Ask Rules) Messages
792
- // ============================================================================
793
-
794
- // Permission decision
795
- enum PermissionDecision {
796
- PERMISSION_DECISION_UNKNOWN = 0;
797
- PERMISSION_DECISION_ALLOW = 1; // Auto-allow
798
- PERMISSION_DECISION_DENY = 2; // Deny
799
- PERMISSION_DECISION_ASK = 3; // Requires confirmation
800
- }
801
-
802
- // Permission rule
803
- message PermissionRule {
804
- string rule = 1; // e.g., "Bash(cargo:*)", "Read(src/**/*.rs)"
805
- }
806
-
807
- // Permission policy
808
- message PermissionPolicy {
809
- repeated PermissionRule deny = 1; // Deny rules (highest priority)
810
- repeated PermissionRule allow = 2; // Allow rules
811
- repeated PermissionRule ask = 3; // Ask rules
812
- PermissionDecision default_decision = 4; // Default decision
813
- bool enabled = 5; // Whether permission system is enabled
814
- }
815
-
816
- // Set permission policy request
817
- message SetPermissionPolicyRequest {
818
- string session_id = 1;
819
- PermissionPolicy policy = 2;
820
- }
821
-
822
- message SetPermissionPolicyResponse {
823
- bool success = 1;
824
- PermissionPolicy policy = 2;
825
- }
826
-
827
- // Get permission policy request
828
- message GetPermissionPolicyRequest {
829
- string session_id = 1;
830
- }
831
-
832
- message GetPermissionPolicyResponse {
833
- PermissionPolicy policy = 1;
834
- }
835
-
836
- // Check permission request
837
- message CheckPermissionRequest {
838
- string session_id = 1;
839
- string tool_name = 2;
840
- string arguments = 3; // JSON format
841
- }
842
-
843
- message CheckPermissionResponse {
844
- PermissionDecision decision = 1;
845
- repeated string matching_rules = 2; // Matching rules (for debugging)
846
- }
847
-
848
- // Add permission rule request
849
- message AddPermissionRuleRequest {
850
- string session_id = 1;
851
- string rule_type = 2; // "allow", "deny", or "ask"
852
- string rule = 3; // e.g., "Bash(cargo:*)"
853
- }
854
-
855
- message AddPermissionRuleResponse {
856
- bool success = 1;
857
- string error = 2;
858
- }
859
-
860
- // ============================================================================
861
- // Todo/Task Tracking Messages
862
- // ============================================================================
863
-
864
- // Todo item for task tracking
865
- message Todo {
866
- string id = 1;
867
- string content = 2;
868
- string status = 3; // pending, in_progress, completed, cancelled
869
- string priority = 4; // high, medium, low
870
- }
871
-
872
- // Get todos request
873
- message GetTodosRequest {
874
- string session_id = 1;
875
- }
876
-
877
- message GetTodosResponse {
878
- repeated Todo todos = 1;
879
- }
880
-
881
- // Set todos request (replaces entire list)
882
- message SetTodosRequest {
883
- string session_id = 1;
884
- repeated Todo todos = 2;
885
- }
886
-
887
- message SetTodosResponse {
888
- bool success = 1;
889
- repeated Todo todos = 2;
890
- }
891
-
892
- // ============================================================================
893
- // Provider Configuration Messages
894
- // ============================================================================
895
-
896
- // Model cost information (per million tokens)
897
- message ModelCostInfo {
898
- double input = 1; // Input token cost
899
- double output = 2; // Output token cost
900
- double cache_read = 3; // Cache read cost
901
- double cache_write = 4; // Cache write cost
902
- }
903
-
904
- // Model token limits
905
- message ModelLimitInfo {
906
- uint32 context = 1; // Maximum context tokens
907
- uint32 output = 2; // Maximum output tokens
908
- }
909
-
910
- // Model modalities (input/output types)
911
- message ModelModalitiesInfo {
912
- repeated string input = 1; // Supported input types (text, image, pdf)
913
- repeated string output = 2; // Supported output types (text)
914
- }
915
-
916
- // Model configuration
917
- message ModelInfo {
918
- string id = 1; // Model ID (e.g., "claude-sonnet-4-20250514")
919
- string name = 2; // Display name
920
- string family = 3; // Model family (e.g., "claude-sonnet")
921
- optional string api_key = 4; // Per-model API key override
922
- optional string base_url = 5; // Per-model base URL override
923
- bool attachment = 6; // Supports file attachments
924
- bool reasoning = 7; // Supports reasoning/thinking
925
- bool tool_call = 8; // Supports tool calling
926
- bool temperature = 9; // Supports temperature setting
927
- optional string release_date = 10; // Release date
928
- ModelModalitiesInfo modalities = 11;
929
- ModelCostInfo cost = 12;
930
- ModelLimitInfo limit = 13;
931
- }
932
-
933
- // Provider configuration
934
- message ProviderInfo {
935
- string name = 1; // Provider name (e.g., "anthropic", "openai")
936
- optional string api_key = 2; // API key for this provider
937
- optional string base_url = 3; // Base URL for the API
938
- repeated ModelInfo models = 4; // Available models
939
- }
940
-
941
- // List all providers
942
- message ListProvidersRequest {}
943
-
944
- message ListProvidersResponse {
945
- repeated ProviderInfo providers = 1;
946
- optional string default_provider = 2;
947
- optional string default_model = 3;
948
- }
949
-
950
- // Get a specific provider
951
- message GetProviderRequest {
952
- string name = 1;
953
- }
954
-
955
- message GetProviderResponse {
956
- ProviderInfo provider = 1;
957
- }
958
-
959
- // Add a new provider
960
- message AddProviderRequest {
961
- ProviderInfo provider = 1;
962
- }
963
-
964
- message AddProviderResponse {
965
- bool success = 1;
966
- string error = 2;
967
- ProviderInfo provider = 3;
968
- }
969
-
970
- // Update an existing provider
971
- message UpdateProviderRequest {
972
- ProviderInfo provider = 1; // Provider name identifies which to update
973
- }
974
-
975
- message UpdateProviderResponse {
976
- bool success = 1;
977
- string error = 2;
978
- ProviderInfo provider = 3;
979
- }
980
-
981
- // Remove a provider
982
- message RemoveProviderRequest {
983
- string name = 1;
984
- }
985
-
986
- message RemoveProviderResponse {
987
- bool success = 1;
988
- string error = 2;
989
- }
990
-
991
- // Set default provider and model
992
- message SetDefaultModelRequest {
993
- string provider = 1; // Provider name
994
- string model = 2; // Model ID
995
- }
996
-
997
- message SetDefaultModelResponse {
998
- bool success = 1;
999
- string error = 2;
1000
- string provider = 3;
1001
- string model = 4;
1002
- }
1003
-
1004
- // Get current default provider and model
1005
- message GetDefaultModelRequest {}
1006
-
1007
- message GetDefaultModelResponse {
1008
- optional string provider = 1;
1009
- optional string model = 2;
1010
- }
1011
-
1012
- // ============================================================================
1013
- // Planning & Goal Tracking Messages (Phase 1)
1014
- // ============================================================================
1015
-
1016
- // Task complexity level
1017
- enum Complexity {
1018
- COMPLEXITY_UNKNOWN = 0;
1019
- COMPLEXITY_SIMPLE = 1;
1020
- COMPLEXITY_MEDIUM = 2;
1021
- COMPLEXITY_COMPLEX = 3;
1022
- COMPLEXITY_VERY_COMPLEX = 4;
1023
- }
1024
-
1025
- // Step status in execution plan
1026
- enum StepStatus {
1027
- STEP_STATUS_UNKNOWN = 0;
1028
- STEP_STATUS_PENDING = 1;
1029
- STEP_STATUS_IN_PROGRESS = 2;
1030
- STEP_STATUS_COMPLETED = 3;
1031
- STEP_STATUS_FAILED = 4;
1032
- STEP_STATUS_SKIPPED = 5;
1033
- }
1034
-
1035
- // Individual execution step
1036
- message PlanStep {
1037
- string id = 1;
1038
- string description = 2;
1039
- optional string tool = 3;
1040
- repeated string dependencies = 4;
1041
- StepStatus status = 5;
1042
- repeated string success_criteria = 6;
1043
- }
1044
-
1045
- // Complete execution plan
1046
- message ExecutionPlan {
1047
- string goal = 1;
1048
- repeated PlanStep steps = 2;
1049
- Complexity complexity = 3;
1050
- repeated string required_tools = 4;
1051
- uint32 estimated_steps = 5;
1052
- }
1053
-
1054
- // Agent goal with success criteria
1055
- message AgentGoal {
1056
- string description = 1;
1057
- repeated string success_criteria = 2;
1058
- float progress = 3;
1059
- bool achieved = 4;
1060
- int64 created_at = 5;
1061
- optional int64 achieved_at = 6;
1062
- }
1063
-
1064
- // Create an execution plan
1065
- message CreatePlanRequest {
1066
- string session_id = 1;
1067
- string prompt = 2;
1068
- optional string context = 3;
1069
- }
1070
-
1071
- message CreatePlanResponse {
1072
- ExecutionPlan plan = 1;
1073
- }
1074
-
1075
- // Get an existing plan
1076
- message GetPlanRequest {
1077
- string session_id = 1;
1078
- string plan_id = 2;
1079
- }
1080
-
1081
- message GetPlanResponse {
1082
- ExecutionPlan plan = 1;
1083
- }
1084
-
1085
- // Extract goal from prompt
1086
- message ExtractGoalRequest {
1087
- string session_id = 1;
1088
- string prompt = 2;
1089
- }
1090
-
1091
- message ExtractGoalResponse {
1092
- AgentGoal goal = 1;
1093
- }
1094
-
1095
- // Check if goal is achieved
1096
- message CheckGoalAchievementRequest {
1097
- string session_id = 1;
1098
- AgentGoal goal = 2;
1099
- string current_state = 3;
1100
- }
1101
-
1102
- message CheckGoalAchievementResponse {
1103
- bool achieved = 1;
1104
- float progress = 2;
1105
- repeated string remaining_criteria = 3;
1106
- }
1107
-
1108
- // ============================================================================
1109
- // Memory System Messages (Phase 3)
1110
- // ============================================================================
1111
-
1112
- // Memory type classification
1113
- enum MemoryType {
1114
- MEMORY_TYPE_UNKNOWN = 0;
1115
- MEMORY_TYPE_EPISODIC = 1;
1116
- MEMORY_TYPE_SEMANTIC = 2;
1117
- MEMORY_TYPE_PROCEDURAL = 3;
1118
- MEMORY_TYPE_WORKING = 4;
1119
- }
1120
-
1121
- // Single memory item
1122
- message MemoryItem {
1123
- string id = 1;
1124
- string content = 2;
1125
- int64 timestamp = 3;
1126
- float importance = 4;
1127
- repeated string tags = 5;
1128
- MemoryType memory_type = 6;
1129
- map<string, string> metadata = 7;
1130
- uint32 access_count = 8;
1131
- optional int64 last_accessed = 9;
1132
- }
1133
-
1134
- // Memory statistics
1135
- message MemoryStats {
1136
- uint64 long_term_count = 1;
1137
- uint64 short_term_count = 2;
1138
- uint64 working_count = 3;
1139
- }
1140
-
1141
- // Store a memory
1142
- message StoreMemoryRequest {
1143
- string session_id = 1;
1144
- MemoryItem memory = 2;
1145
- }
1146
-
1147
- message StoreMemoryResponse {
1148
- bool success = 1;
1149
- string memory_id = 2;
1150
- }
1151
-
1152
- // Retrieve a memory by ID
1153
- message RetrieveMemoryRequest {
1154
- string session_id = 1;
1155
- string memory_id = 2;
1156
- }
1157
-
1158
- message RetrieveMemoryResponse {
1159
- optional MemoryItem memory = 1;
1160
- }
1161
-
1162
- // Search memories
1163
- message SearchMemoriesRequest {
1164
- string session_id = 1;
1165
- optional string query = 2;
1166
- repeated string tags = 3;
1167
- uint32 limit = 4;
1168
- bool recent_only = 5;
1169
- optional float min_importance = 6;
1170
- }
1171
-
1172
- message SearchMemoriesResponse {
1173
- repeated MemoryItem memories = 1;
1174
- uint32 total_count = 2;
1175
- }
1176
-
1177
- // Get memory statistics
1178
- message GetMemoryStatsRequest {
1179
- string session_id = 1;
1180
- }
1181
-
1182
- message GetMemoryStatsResponse {
1183
- MemoryStats stats = 1;
1184
- }
1185
-
1186
- // Clear memories
1187
- message ClearMemoriesRequest {
1188
- string session_id = 1;
1189
- bool clear_long_term = 2;
1190
- bool clear_short_term = 3;
1191
- bool clear_working = 4;
1192
- }
1193
-
1194
- message ClearMemoriesResponse {
1195
- bool success = 1;
1196
- uint64 cleared_count = 2;
1197
- }
1198
-
1199
- message DeleteMemoryRequest {
1200
- string session_id = 1;
1201
- string memory_id = 2;
1202
- }
1203
-
1204
- message DeleteMemoryResponse {
1205
- bool success = 1;
1206
- }
1207
-
1208
- message SummarizeMemoriesRequest {
1209
- string session_id = 1;
1210
- repeated string tags = 2;
1211
- uint32 limit = 3;
1212
- optional uint32 recent_hours = 4;
1213
- }
1214
-
1215
- message SummarizeMemoriesResponse {
1216
- string summary = 1;
1217
- uint32 memory_count = 2;
1218
- bool stored = 3;
1219
- string summary_memory_id = 4;
1220
- }
1221
-
1222
- // ============================================================================
1223
- // MCP (Model Context Protocol) Messages
1224
- // ============================================================================
1225
-
1226
- // MCP transport configuration
1227
- message McpTransport {
1228
- oneof transport {
1229
- McpStdioTransport stdio = 1;
1230
- McpHttpTransport http = 2;
1231
- }
1232
- }
1233
-
1234
- message McpStdioTransport {
1235
- string command = 1;
1236
- repeated string args = 2;
1237
- }
1238
-
1239
- message McpHttpTransport {
1240
- string url = 1;
1241
- map<string, string> headers = 2;
1242
- }
1243
-
1244
- // MCP server configuration
1245
- message McpServerConfigProto {
1246
- string name = 1;
1247
- McpTransport transport = 2;
1248
- bool enabled = 3;
1249
- map<string, string> env = 4;
1250
- // Per-tool execution timeout in seconds (default: 60, 0 = use default)
1251
- uint32 tool_timeout_secs = 5;
1252
- }
1253
-
1254
- // Register MCP server
1255
- message RegisterMcpServerRequest {
1256
- McpServerConfigProto config = 1;
1257
- }
1258
-
1259
- message RegisterMcpServerResponse {
1260
- bool success = 1;
1261
- string message = 2;
1262
- }
1263
-
1264
- // Connect to MCP server
1265
- message ConnectMcpServerRequest {
1266
- string name = 1;
1267
- }
1268
-
1269
- message ConnectMcpServerResponse {
1270
- bool success = 1;
1271
- string message = 2;
1272
- repeated string tool_names = 3;
1273
- }
1274
-
1275
- // Disconnect from MCP server
1276
- message DisconnectMcpServerRequest {
1277
- string name = 1;
1278
- }
1279
-
1280
- message DisconnectMcpServerResponse {
1281
- bool success = 1;
1282
- }
1283
-
1284
- // List MCP servers
1285
- message ListMcpServersRequest {}
1286
-
1287
- message ListMcpServersResponse {
1288
- repeated McpServerInfo servers = 1;
1289
- }
1290
-
1291
- message McpServerInfo {
1292
- string name = 1;
1293
- bool connected = 2;
1294
- bool enabled = 3;
1295
- uint32 tool_count = 4;
1296
- optional string error = 5;
1297
- }
1298
-
1299
- // Get MCP tools
1300
- message GetMcpToolsRequest {
1301
- optional string server_name = 1; // If set, only return tools from this server
1302
- }
1303
-
1304
- message GetMcpToolsResponse {
1305
- repeated McpToolInfo tools = 1;
1306
- }
1307
-
1308
- message McpToolInfo {
1309
- string full_name = 1; // mcp__server__tool
1310
- string server_name = 2;
1311
- string tool_name = 3;
1312
- string description = 4;
1313
- string input_schema = 5; // JSON Schema as string
1314
- }
1315
-
1316
- // ============================================================================
1317
- // LSP (Language Server Protocol) Messages
1318
- // ============================================================================
1319
-
1320
- // Start LSP server for a language
1321
- message StartLspServerRequest {
1322
- string language = 1; // Language name (e.g., "rust", "python", "typescript")
1323
- string root_uri = 2; // Workspace root URI (e.g., "file:///path/to/project")
1324
- }
1325
-
1326
- message StartLspServerResponse {
1327
- bool success = 1;
1328
- string message = 2;
1329
- optional LspServerInfo server_info = 3;
1330
- }
1331
-
1332
- // Stop LSP server
1333
- message StopLspServerRequest {
1334
- string language = 1;
1335
- }
1336
-
1337
- message StopLspServerResponse {
1338
- bool success = 1;
1339
- }
1340
-
1341
- // List LSP servers
1342
- message ListLspServersRequest {}
1343
-
1344
- message ListLspServersResponse {
1345
- repeated LspServerInfo servers = 1;
1346
- }
1347
-
1348
- message LspServerInfo {
1349
- string language = 1;
1350
- string name = 2; // Server name (e.g., "rust-analyzer")
1351
- optional string version = 3;
1352
- bool running = 4;
1353
- }
1354
-
1355
- // LSP Hover
1356
- message LspHoverRequest {
1357
- string file_path = 1;
1358
- uint32 line = 2; // 0-indexed
1359
- uint32 column = 3; // 0-indexed
1360
- }
1361
-
1362
- message LspHoverResponse {
1363
- bool found = 1;
1364
- string content = 2; // Hover content (markdown)
1365
- optional LspRange range = 3;
1366
- }
1367
-
1368
- // LSP Definition
1369
- message LspDefinitionRequest {
1370
- string file_path = 1;
1371
- uint32 line = 2;
1372
- uint32 column = 3;
1373
- }
1374
-
1375
- message LspDefinitionResponse {
1376
- repeated LspLocation locations = 1;
1377
- }
1378
-
1379
- // LSP References
1380
- message LspReferencesRequest {
1381
- string file_path = 1;
1382
- uint32 line = 2;
1383
- uint32 column = 3;
1384
- bool include_declaration = 4;
1385
- }
1386
-
1387
- message LspReferencesResponse {
1388
- repeated LspLocation locations = 1;
1389
- }
1390
-
1391
- // LSP Symbols
1392
- message LspSymbolsRequest {
1393
- string query = 1; // Search query
1394
- uint32 limit = 2; // Max results (default: 20)
1395
- }
1396
-
1397
- message LspSymbolsResponse {
1398
- repeated LspSymbol symbols = 1;
1399
- }
1400
-
1401
- // LSP Diagnostics
1402
- message LspDiagnosticsRequest {
1403
- optional string file_path = 1; // If not set, returns all diagnostics
1404
- }
1405
-
1406
- message LspDiagnosticsResponse {
1407
- repeated LspDiagnostic diagnostics = 1;
1408
- }
1409
-
1410
- // LSP Common Types
1411
- message LspPosition {
1412
- uint32 line = 1;
1413
- uint32 character = 2;
1414
- }
1415
-
1416
- message LspRange {
1417
- LspPosition start = 1;
1418
- LspPosition end = 2;
1419
- }
1420
-
1421
- message LspLocation {
1422
- string uri = 1;
1423
- LspRange range = 2;
1424
- }
1425
-
1426
- message LspSymbol {
1427
- string name = 1;
1428
- string kind = 2; // "function", "class", "variable", etc.
1429
- LspLocation location = 3;
1430
- optional string container_name = 4;
1431
- }
1432
-
1433
- message LspDiagnostic {
1434
- string uri = 1;
1435
- LspRange range = 2;
1436
- string severity = 3; // "error", "warning", "info", "hint"
1437
- string message = 4;
1438
- optional string code = 5;
1439
- optional string source = 6;
1440
- }
1441
-
1442
- // ============================================================================
1443
- // Cron (Scheduled Tasks) Messages
1444
- // ============================================================================
1445
-
1446
- // Cron job status
1447
- enum CronJobStatus {
1448
- CRON_JOB_STATUS_UNKNOWN = 0;
1449
- CRON_JOB_STATUS_ACTIVE = 1;
1450
- CRON_JOB_STATUS_PAUSED = 2;
1451
- CRON_JOB_STATUS_RUNNING = 3;
1452
- }
1453
-
1454
- // Cron job type
1455
- enum CronJobType {
1456
- CRON_JOB_TYPE_SHELL = 0; // Execute as shell command (default)
1457
- CRON_JOB_TYPE_AGENT = 1; // Execute as agent prompt
1458
- }
1459
-
1460
- // Cron execution status
1461
- enum CronExecutionStatus {
1462
- CRON_EXECUTION_STATUS_UNKNOWN = 0;
1463
- CRON_EXECUTION_STATUS_SUCCESS = 1;
1464
- CRON_EXECUTION_STATUS_FAILED = 2;
1465
- CRON_EXECUTION_STATUS_TIMEOUT = 3;
1466
- CRON_EXECUTION_STATUS_CANCELLED = 4;
1467
- }
1468
-
1469
- // Agent configuration for agent-mode cron jobs
1470
- message CronAgentConfig {
1471
- string model = 1; // LLM model identifier
1472
- string api_key = 2; // API key for the LLM provider
1473
- optional string workspace = 3; // Workspace directory override
1474
- optional string system_prompt = 4; // System prompt override
1475
- optional string base_url = 5; // Base URL override for the LLM API
1476
- }
1477
-
1478
- // Cron job definition
1479
- message CronJob {
1480
- string id = 1; // Unique job identifier
1481
- string name = 2; // Human-readable job name
1482
- string schedule = 3; // Cron expression (5 fields: min hour day month weekday)
1483
- string command = 4; // Command to execute (shell) or prompt (agent)
1484
- CronJobStatus status = 5; // Current job status
1485
- uint64 timeout_ms = 6; // Execution timeout in milliseconds
1486
- int64 created_at = 7; // Creation timestamp (Unix ms)
1487
- int64 updated_at = 8; // Last update timestamp (Unix ms)
1488
- optional int64 last_run = 9; // Last execution timestamp (Unix ms)
1489
- optional int64 next_run = 10; // Next scheduled run timestamp (Unix ms)
1490
- uint64 run_count = 11; // Total successful run count
1491
- uint64 fail_count = 12; // Total failed run count
1492
- optional string working_dir = 13; // Working directory for command execution
1493
- CronJobType job_type = 14; // Job type: shell (default) or agent
1494
- optional CronAgentConfig agent_config = 15; // Agent config (required when job_type is AGENT)
1495
- }
1496
-
1497
- // Cron job execution record
1498
- message CronExecution {
1499
- string id = 1; // Execution ID
1500
- string job_id = 2; // Job ID
1501
- CronExecutionStatus status = 3; // Execution status
1502
- int64 started_at = 4; // Start timestamp (Unix ms)
1503
- optional int64 ended_at = 5; // End timestamp (Unix ms)
1504
- optional uint64 duration_ms = 6; // Duration in milliseconds
1505
- optional int32 exit_code = 7; // Exit code (if available)
1506
- string stdout = 8; // Standard output (truncated if too long)
1507
- string stderr = 9; // Standard error (truncated if too long)
1508
- optional string error = 10; // Error message (if failed)
1509
- }
1510
-
1511
- // List all cron jobs
1512
- message ListCronJobsRequest {}
1513
-
1514
- message ListCronJobsResponse {
1515
- repeated CronJob jobs = 1;
1516
- }
1517
-
1518
- // Create a new cron job
1519
- message CreateCronJobRequest {
1520
- string name = 1; // Job name (required)
1521
- string schedule = 2; // Schedule expression - cron syntax or natural language
1522
- string command = 3; // Command to execute or agent prompt (required)
1523
- optional uint64 timeout_ms = 4; // Execution timeout (default: 60000)
1524
- CronJobType job_type = 5; // Job type: shell (default) or agent
1525
- optional CronAgentConfig agent_config = 6; // Agent config (required when job_type is AGENT)
1526
- }
1527
-
1528
- message CreateCronJobResponse {
1529
- bool success = 1;
1530
- CronJob job = 2;
1531
- string error = 3;
1532
- }
1533
-
1534
- // Get a cron job by ID or name
1535
- message GetCronJobRequest {
1536
- optional string id = 1; // Job ID
1537
- optional string name = 2; // Job name (alternative to ID)
1538
- }
1539
-
1540
- message GetCronJobResponse {
1541
- optional CronJob job = 1;
1542
- }
1543
-
1544
- // Update a cron job
1545
- message UpdateCronJobRequest {
1546
- string id = 1; // Job ID (required)
1547
- optional string schedule = 2; // New schedule expression
1548
- optional string command = 3; // New command
1549
- optional uint64 timeout_ms = 4; // New timeout
1550
- }
1551
-
1552
- message UpdateCronJobResponse {
1553
- bool success = 1;
1554
- CronJob job = 2;
1555
- string error = 3;
1556
- }
1557
-
1558
- // Pause a cron job
1559
- message PauseCronJobRequest {
1560
- string id = 1; // Job ID
1561
- }
1562
-
1563
- message PauseCronJobResponse {
1564
- bool success = 1;
1565
- CronJob job = 2;
1566
- string error = 3;
1567
- }
1568
-
1569
- // Resume a paused cron job
1570
- message ResumeCronJobRequest {
1571
- string id = 1; // Job ID
1572
- }
1573
-
1574
- message ResumeCronJobResponse {
1575
- bool success = 1;
1576
- CronJob job = 2;
1577
- string error = 3;
1578
- }
1579
-
1580
- // Delete a cron job
1581
- message DeleteCronJobRequest {
1582
- string id = 1; // Job ID
1583
- }
1584
-
1585
- message DeleteCronJobResponse {
1586
- bool success = 1;
1587
- string error = 2;
1588
- }
1589
-
1590
- // Get execution history for a cron job
1591
- message GetCronHistoryRequest {
1592
- string id = 1; // Job ID
1593
- optional uint32 limit = 2; // Max records to return (default: 10)
1594
- }
1595
-
1596
- message GetCronHistoryResponse {
1597
- repeated CronExecution executions = 1;
1598
- }
1599
-
1600
- // Manually run a cron job
1601
- message RunCronJobRequest {
1602
- string id = 1; // Job ID
1603
- }
1604
-
1605
- message RunCronJobResponse {
1606
- bool success = 1;
1607
- CronExecution execution = 2;
1608
- string error = 3;
1609
- }
1610
-
1611
- // Parse natural language schedule to cron expression
1612
- message ParseCronScheduleRequest {
1613
- string input = 1; // Natural language or cron expression
1614
- }
1615
-
1616
- message ParseCronScheduleResponse {
1617
- bool success = 1;
1618
- string cron_expression = 2; // Parsed cron expression
1619
- string description = 3; // Human-readable description
1620
- string error = 4;
1621
- }
1622
-
1623
- // ============================================================================
1624
- // Observability Messages
1625
- // ============================================================================
1626
-
1627
- message GetToolMetricsRequest {
1628
- string session_id = 1;
1629
- string tool_name = 2; // Optional: filter by tool name (empty = all)
1630
- }
1631
-
1632
- message GetToolMetricsResponse {
1633
- repeated ToolStats tools = 1; // Per-tool aggregated stats
1634
- uint64 total_calls = 2; // Total calls across all tools
1635
- uint64 total_duration_ms = 3; // Total execution time across all tools
1636
- }
1637
-
1638
- message ToolStats {
1639
- string tool_name = 1;
1640
- uint64 total_calls = 2;
1641
- uint64 success_count = 3;
1642
- uint64 failure_count = 4;
1643
- uint64 total_duration_ms = 5;
1644
- uint64 min_duration_ms = 6;
1645
- uint64 max_duration_ms = 7;
1646
- uint64 avg_duration_ms = 8;
1647
- string last_called_at = 9; // ISO 8601 timestamp (empty if never called)
1648
- }
1649
-
1650
- message GetCostSummaryRequest {
1651
- string session_id = 1; // Optional: filter by session (empty = all sessions)
1652
- string model = 2; // Optional: filter by model
1653
- string start_date = 3; // Optional: YYYY-MM-DD
1654
- string end_date = 4; // Optional: YYYY-MM-DD
1655
- }
1656
-
1657
- message GetCostSummaryResponse {
1658
- double total_cost_usd = 1;
1659
- uint64 total_prompt_tokens = 2;
1660
- uint64 total_completion_tokens = 3;
1661
- uint64 total_tokens = 4;
1662
- uint64 call_count = 5;
1663
- repeated ModelCostBreakdownProto by_model = 6;
1664
- repeated DayCostBreakdownProto by_day = 7;
1665
- }
1666
-
1667
- message ModelCostBreakdownProto {
1668
- string model = 1;
1669
- uint64 prompt_tokens = 2;
1670
- uint64 completion_tokens = 3;
1671
- uint64 total_tokens = 4;
1672
- double cost_usd = 5;
1673
- uint64 call_count = 6;
1674
- }
1675
-
1676
- message DayCostBreakdownProto {
1677
- string date = 1;
1678
- double cost_usd = 2;
1679
- uint64 call_count = 3;
1680
- uint64 total_tokens = 4;
1681
- }
1682
-
1683
- // ============================================================================
1684
- // Server-Side AgenticLoop Messages
1685
- // ============================================================================
1686
-
1687
- // Execution strategy for the agentic loop
1688
- enum AgenticStrategy {
1689
- AGENTIC_STRATEGY_AUTO = 0; // Server decides
1690
- AGENTIC_STRATEGY_DIRECT = 1; // Single generate, no loop
1691
- AGENTIC_STRATEGY_PLANNED = 2; // Plan first, then execute steps
1692
- AGENTIC_STRATEGY_ITERATIVE = 3; // Generate → tool → reflect → repeat
1693
- AGENTIC_STRATEGY_PARALLEL = 4; // Parallel tool execution where possible
1694
- }
1695
-
1696
- message AgenticGenerateRequest {
1697
- string session_id = 1;
1698
- string prompt = 2;
1699
- AgenticStrategy strategy = 3;
1700
- uint32 max_steps = 4; // Max loop iterations (default: 50)
1701
- bool reflection = 5; // Enable reflection after tool failures (default: true)
1702
- bool planning = 6; // Enable planning before execution (default: auto)
1703
- }
1704
-
1705
- message AgenticGenerateResponse {
1706
- string session_id = 1;
1707
- string text = 2; // Final text output
1708
- repeated AgenticStep steps = 3; // All steps executed
1709
- repeated ToolCall tool_calls = 4; // All tool calls made
1710
- Usage usage = 5; // Total token usage
1711
- string finish_reason = 6; // "stop", "max_steps", "cancelled", "error"
1712
- optional ExecutionPlan plan = 7; // Execution plan (if planning was used)
1713
- }
1714
-
1715
- // A single step in the agentic loop
1716
- message AgenticStep {
1717
- uint32 step_index = 1;
1718
- string text = 2;
1719
- repeated ToolCall tool_calls = 3;
1720
- repeated ToolResult tool_results = 4;
1721
- Usage usage = 5;
1722
- string finish_reason = 6;
1723
- }
1724
-
1725
- // Streaming event from the agentic loop
1726
- message AgenticGenerateEvent {
1727
- // Event type discriminator
1728
- string type = 1; // "text", "tool_call", "tool_result", "step_finish",
1729
- // "plan", "reflection", "confirmation_required",
1730
- // "confirmation_received", "subagent_start",
1731
- // "subagent_progress", "subagent_end",
1732
- // "context_compact", "external_task_pending",
1733
- // "external_task_completed", "error", "done"
1734
-
1735
- string session_id = 2;
1736
-
1737
- // Text content (type: "text")
1738
- optional string content = 3;
1739
-
1740
- // Tool call (type: "tool_call")
1741
- optional ToolCall tool_call = 4;
1742
-
1743
- // Tool result (type: "tool_result")
1744
- optional ToolResult tool_result = 5;
1745
- optional string tool_call_id = 6;
1746
-
1747
- // Step finish (type: "step_finish")
1748
- optional uint32 step_index = 7;
1749
- optional string step_text = 8;
1750
-
1751
- // Plan (type: "plan")
1752
- optional ExecutionPlan plan = 9;
1753
-
1754
- // Reflection (type: "reflection")
1755
- optional float confidence = 10;
1756
- optional bool should_retry = 11;
1757
- optional string insight = 12;
1758
-
1759
- // Confirmation (type: "confirmation_required" / "confirmation_received")
1760
- optional string confirmation_id = 13;
1761
- optional string tool_name = 14;
1762
- optional string tool_args = 15; // JSON
1763
- optional uint64 timeout_ms = 16;
1764
- optional bool approved = 17;
1765
-
1766
- // Subagent (type: "subagent_start" / "subagent_progress" / "subagent_end")
1767
- optional string agent_name = 18;
1768
- optional string agent_task = 19;
1769
- optional string agent_session_id = 20;
1770
- optional string agent_result = 21;
1771
-
1772
- // Context compact (type: "context_compact")
1773
- optional uint32 before_tokens = 22;
1774
- optional uint32 after_tokens = 23;
1775
-
1776
- // External task (type: "external_task_pending" / "external_task_completed")
1777
- optional ExternalTask external_task = 24;
1778
-
1779
- // Error (type: "error")
1780
- optional string error_message = 25;
1781
- optional bool recoverable = 26;
1782
-
1783
- // Done (type: "done")
1784
- optional string finish_reason = 27;
1785
-
1786
- // Usage (accumulated, sent with "step_finish" and "done")
1787
- optional Usage usage = 28;
1788
- }
1789
-
1790
- // ============================================================================
1791
- // Server-Side Delegation (Subagent) Messages
1792
- // ============================================================================
1793
-
1794
- message DelegateRequest {
1795
- string session_id = 1;
1796
- string agent_name = 2; // Built-in: "explore", "plan", "general"
1797
- string task = 3; // Task description
1798
- uint32 max_steps = 4; // Max steps for subagent (default: 50)
1799
- repeated string allowed_tools = 5; // Tool whitelist for subagent
1800
- }
1801
-
1802
- message DelegateResponse {
1803
- string session_id = 1;
1804
- string agent_session_id = 2; // Subagent's session ID
1805
- string text = 3; // Final text output
1806
- repeated AgenticStep steps = 4;
1807
- repeated ToolCall tool_calls = 5;
1808
- Usage usage = 6;
1809
- string finish_reason = 7;
1810
- }
1811
-
1812
- // ============================================================================
1813
- // Queue Statistics Messages
1814
- // ============================================================================
1815
-
1816
- // Per-lane statistics
1817
- message LaneStats {
1818
- uint32 pending = 1;
1819
- uint32 active = 2;
1820
- uint32 external = 3;
1821
- uint32 completed = 4;
1822
- uint32 failed = 5;
1823
- }
1824
-
1825
- message GetQueueStatsRequest {
1826
- string session_id = 1;
1827
- }
1828
-
1829
- message GetQueueStatsResponse {
1830
- LaneStats control = 1;
1831
- LaneStats query = 2;
1832
- LaneStats execute = 3;
1833
- LaneStats generate = 4;
1834
- uint32 dead_letters = 5;
1835
- }
1836
-
1837
- // ============================================================================
1838
- // Batch Skill Loading Messages
1839
- // ============================================================================
1840
-
1841
- message LoadSkillsFromDirRequest {
1842
- string session_id = 1;
1843
- string directory = 2; // Directory path containing skill files
1844
- bool recursive = 3; // Recurse into subdirectories
1845
- }
1846
-
1847
- message LoadSkillsFromDirResponse {
1848
- bool success = 1;
1849
- repeated string loaded_skills = 2; // Names of loaded skills
1850
- repeated string errors = 3; // Errors for skills that failed to load
1851
- }