@a3s-lab/code 0.5.0 → 0.7.0

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