centy 0.0.20 → 0.0.22
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.
- package/bin/run.js +19 -2
- package/dist/commands/add/asset.d.ts +1 -0
- package/dist/commands/add/asset.d.ts.map +1 -1
- package/dist/commands/add/asset.js +14 -5
- package/dist/commands/add/asset.js.map +1 -1
- package/dist/commands/compact.d.ts.map +1 -1
- package/dist/commands/compact.js +9 -4
- package/dist/commands/compact.js.map +1 -1
- package/dist/commands/config.d.ts.map +1 -1
- package/dist/commands/config.js +9 -4
- package/dist/commands/config.js.map +1 -1
- package/dist/commands/create/doc.d.ts +1 -0
- package/dist/commands/create/doc.d.ts.map +1 -1
- package/dist/commands/create/doc.js +14 -5
- package/dist/commands/create/doc.js.map +1 -1
- package/dist/commands/create/issue.d.ts +1 -0
- package/dist/commands/create/issue.d.ts.map +1 -1
- package/dist/commands/create/issue.js +5 -2
- package/dist/commands/create/issue.js.map +1 -1
- package/dist/commands/create/pr.d.ts +1 -0
- package/dist/commands/create/pr.d.ts.map +1 -1
- package/dist/commands/create/pr.js +5 -1
- package/dist/commands/create/pr.js.map +1 -1
- package/dist/commands/delete/asset.d.ts +1 -0
- package/dist/commands/delete/asset.d.ts.map +1 -1
- package/dist/commands/delete/asset.js +14 -5
- package/dist/commands/delete/asset.js.map +1 -1
- package/dist/commands/delete/doc.d.ts +1 -0
- package/dist/commands/delete/doc.d.ts.map +1 -1
- package/dist/commands/delete/doc.js +14 -5
- package/dist/commands/delete/doc.js.map +1 -1
- package/dist/commands/delete/issue.d.ts +1 -0
- package/dist/commands/delete/issue.d.ts.map +1 -1
- package/dist/commands/delete/issue.js +14 -5
- package/dist/commands/delete/issue.js.map +1 -1
- package/dist/commands/delete/pr.d.ts +1 -0
- package/dist/commands/delete/pr.d.ts.map +1 -1
- package/dist/commands/delete/pr.js +14 -5
- package/dist/commands/delete/pr.js.map +1 -1
- package/dist/commands/get/asset.d.ts +2 -0
- package/dist/commands/get/asset.d.ts.map +1 -1
- package/dist/commands/get/asset.js +15 -5
- package/dist/commands/get/asset.js.map +1 -1
- package/dist/commands/get/doc.d.ts +3 -0
- package/dist/commands/get/doc.d.ts.map +1 -1
- package/dist/commands/get/doc.js +98 -17
- package/dist/commands/get/doc.js.map +1 -1
- package/dist/commands/get/issue.d.ts +3 -0
- package/dist/commands/get/issue.d.ts.map +1 -1
- package/dist/commands/get/issue.js +121 -27
- package/dist/commands/get/issue.js.map +1 -1
- package/dist/commands/get/pr.d.ts +3 -0
- package/dist/commands/get/pr.d.ts.map +1 -1
- package/dist/commands/get/pr.js +136 -40
- package/dist/commands/get/pr.js.map +1 -1
- package/dist/commands/get/project.d.ts +1 -0
- package/dist/commands/get/project.d.ts.map +1 -1
- package/dist/commands/get/project.js +1 -0
- package/dist/commands/get/project.js.map +1 -1
- package/dist/commands/list/assets.d.ts +1 -0
- package/dist/commands/list/assets.d.ts.map +1 -1
- package/dist/commands/list/assets.js +14 -5
- package/dist/commands/list/assets.js.map +1 -1
- package/dist/commands/list/docs.d.ts +1 -0
- package/dist/commands/list/docs.d.ts.map +1 -1
- package/dist/commands/list/docs.js +14 -5
- package/dist/commands/list/docs.js.map +1 -1
- package/dist/commands/list/issues.d.ts +1 -0
- package/dist/commands/list/issues.d.ts.map +1 -1
- package/dist/commands/list/issues.js +14 -5
- package/dist/commands/list/issues.js.map +1 -1
- package/dist/commands/list/prs.d.ts +1 -0
- package/dist/commands/list/prs.d.ts.map +1 -1
- package/dist/commands/list/prs.js +14 -5
- package/dist/commands/list/prs.js.map +1 -1
- package/dist/commands/manifest.d.ts.map +1 -1
- package/dist/commands/manifest.js +9 -4
- package/dist/commands/manifest.js.map +1 -1
- package/dist/commands/start.d.ts +2 -0
- package/dist/commands/start.d.ts.map +1 -1
- package/dist/commands/start.js +56 -2
- package/dist/commands/start.js.map +1 -1
- package/dist/commands/update/doc.d.ts +1 -0
- package/dist/commands/update/doc.d.ts.map +1 -1
- package/dist/commands/update/doc.js +14 -5
- package/dist/commands/update/doc.js.map +1 -1
- package/dist/commands/update/issue.d.ts +1 -0
- package/dist/commands/update/issue.d.ts.map +1 -1
- package/dist/commands/update/issue.js +14 -5
- package/dist/commands/update/issue.js.map +1 -1
- package/dist/commands/update/pr.d.ts +1 -0
- package/dist/commands/update/pr.d.ts.map +1 -1
- package/dist/commands/update/pr.js +14 -5
- package/dist/commands/update/pr.js.map +1 -1
- package/dist/commands/update.d.ts.map +1 -1
- package/dist/commands/update.js +9 -4
- package/dist/commands/update.js.map +1 -1
- package/dist/commands/version.d.ts.map +1 -1
- package/dist/commands/version.js +9 -4
- package/dist/commands/version.js.map +1 -1
- package/dist/daemon/daemon-get-docs-by-slug.d.ts +6 -0
- package/dist/daemon/daemon-get-docs-by-slug.d.ts.map +1 -0
- package/dist/daemon/daemon-get-docs-by-slug.js +17 -0
- package/dist/daemon/daemon-get-docs-by-slug.js.map +1 -0
- package/dist/daemon/daemon-get-issues-by-uuid.d.ts +6 -0
- package/dist/daemon/daemon-get-issues-by-uuid.d.ts.map +1 -0
- package/dist/daemon/daemon-get-issues-by-uuid.js +17 -0
- package/dist/daemon/daemon-get-issues-by-uuid.js.map +1 -0
- package/dist/daemon/daemon-get-prs-by-uuid.d.ts +6 -0
- package/dist/daemon/daemon-get-prs-by-uuid.d.ts.map +1 -0
- package/dist/daemon/daemon-get-prs-by-uuid.js +17 -0
- package/dist/daemon/daemon-get-prs-by-uuid.js.map +1 -0
- package/dist/daemon/load-proto.d.ts +4 -1
- package/dist/daemon/load-proto.d.ts.map +1 -1
- package/dist/daemon/load-proto.js.map +1 -1
- package/dist/daemon/types.d.ts +39 -0
- package/dist/daemon/types.d.ts.map +1 -1
- package/dist/flags/project-flag.d.ts +6 -0
- package/dist/flags/project-flag.d.ts.map +1 -0
- package/dist/flags/project-flag.js +9 -0
- package/dist/flags/project-flag.js.map +1 -0
- package/dist/lib/start/prompt-for-install.d.ts +13 -0
- package/dist/lib/start/prompt-for-install.d.ts.map +1 -0
- package/dist/lib/start/prompt-for-install.js +12 -0
- package/dist/lib/start/prompt-for-install.js.map +1 -0
- package/dist/tui/App.d.ts.map +1 -1
- package/dist/tui/App.js +17 -5
- package/dist/tui/App.js.map +1 -1
- package/dist/tui/components/domain/DocDetail.d.ts.map +1 -1
- package/dist/tui/components/domain/DocDetail.js +20 -0
- package/dist/tui/components/domain/DocDetail.js.map +1 -1
- package/dist/tui/components/domain/DocList.d.ts.map +1 -1
- package/dist/tui/components/domain/DocList.js +16 -0
- package/dist/tui/components/domain/DocList.js.map +1 -1
- package/dist/tui/components/domain/IssueDetail.d.ts.map +1 -1
- package/dist/tui/components/domain/IssueDetail.js +14 -0
- package/dist/tui/components/domain/IssueDetail.js.map +1 -1
- package/dist/tui/components/domain/IssueList.d.ts.map +1 -1
- package/dist/tui/components/domain/IssueList.js +16 -0
- package/dist/tui/components/domain/IssueList.js.map +1 -1
- package/dist/tui/components/domain/PRDetail.d.ts.map +1 -1
- package/dist/tui/components/domain/PRDetail.js +14 -0
- package/dist/tui/components/domain/PRDetail.js.map +1 -1
- package/dist/tui/components/domain/PRList.d.ts.map +1 -1
- package/dist/tui/components/domain/PRList.js +16 -0
- package/dist/tui/components/domain/PRList.js.map +1 -1
- package/dist/tui/components/layout/StatusBar.d.ts +2 -1
- package/dist/tui/components/layout/StatusBar.d.ts.map +1 -1
- package/dist/tui/components/layout/StatusBar.js +2 -2
- package/dist/tui/components/layout/StatusBar.js.map +1 -1
- package/dist/tui/hooks/useClipboard.d.ts +6 -0
- package/dist/tui/hooks/useClipboard.d.ts.map +1 -0
- package/dist/tui/hooks/useClipboard.js +46 -0
- package/dist/tui/hooks/useClipboard.js.map +1 -0
- package/dist/tui/services/clipboard-service.d.ts +18 -0
- package/dist/tui/services/clipboard-service.d.ts.map +1 -0
- package/dist/tui/services/clipboard-service.js +37 -0
- package/dist/tui/services/clipboard-service.js.map +1 -0
- package/dist/tui/state/app-state.d.ts +4 -0
- package/dist/tui/state/app-state.d.ts.map +1 -1
- package/dist/tui/state/app-state.js +3 -0
- package/dist/tui/state/app-state.js.map +1 -1
- package/dist/utils/ask-yes-no.d.ts +10 -0
- package/dist/utils/ask-yes-no.d.ts.map +1 -0
- package/dist/utils/ask-yes-no.js +26 -0
- package/dist/utils/ask-yes-no.js.map +1 -0
- package/dist/utils/cross-project-search.d.ts +7 -0
- package/dist/utils/cross-project-search.d.ts.map +1 -0
- package/dist/utils/cross-project-search.js +7 -0
- package/dist/utils/cross-project-search.js.map +1 -0
- package/dist/utils/ensure-initialized.d.ts +10 -0
- package/dist/utils/ensure-initialized.d.ts.map +1 -0
- package/dist/utils/ensure-initialized.js +26 -0
- package/dist/utils/ensure-initialized.js.map +1 -0
- package/dist/utils/format-cross-project-hint.d.ts +9 -0
- package/dist/utils/format-cross-project-hint.d.ts.map +1 -0
- package/dist/utils/format-cross-project-hint.js +17 -0
- package/dist/utils/format-cross-project-hint.js.map +1 -0
- package/dist/utils/format-cross-project-json.d.ts +9 -0
- package/dist/utils/format-cross-project-json.d.ts.map +1 -0
- package/dist/utils/format-cross-project-json.js +16 -0
- package/dist/utils/format-cross-project-json.js.map +1 -0
- package/dist/utils/is-not-found-error.d.ts +5 -0
- package/dist/utils/is-not-found-error.d.ts.map +1 -0
- package/dist/utils/is-not-found-error.js +14 -0
- package/dist/utils/is-not-found-error.js.map +1 -0
- package/dist/utils/resolve-project-path.d.ts +17 -0
- package/dist/utils/resolve-project-path.d.ts.map +1 -0
- package/dist/utils/resolve-project-path.js +72 -0
- package/dist/utils/resolve-project-path.js.map +1 -0
- package/oclif.manifest.json +270 -71
- package/package.json +2 -1
- package/proto/centy.proto +294 -1
package/proto/centy.proto
CHANGED
|
@@ -22,6 +22,9 @@ service CentyDaemon {
|
|
|
22
22
|
// Get a single issue by display number (human-readable number like 1, 2, 3)
|
|
23
23
|
rpc GetIssueByDisplayNumber(GetIssueByDisplayNumberRequest) returns (Issue);
|
|
24
24
|
|
|
25
|
+
// Get issues by UUID across all tracked projects (global search)
|
|
26
|
+
rpc GetIssuesByUuid(GetIssuesByUuidRequest) returns (GetIssuesByUuidResponse);
|
|
27
|
+
|
|
25
28
|
// List all issues with optional filtering
|
|
26
29
|
rpc ListIssues(ListIssuesRequest) returns (ListIssuesResponse);
|
|
27
30
|
|
|
@@ -54,6 +57,9 @@ service CentyDaemon {
|
|
|
54
57
|
// Get a single doc by slug
|
|
55
58
|
rpc GetDoc(GetDocRequest) returns (Doc);
|
|
56
59
|
|
|
60
|
+
// Get docs by slug across all tracked projects (global search)
|
|
61
|
+
rpc GetDocsBySlug(GetDocsBySlugRequest) returns (GetDocsBySlugResponse);
|
|
62
|
+
|
|
57
63
|
// List all docs
|
|
58
64
|
rpc ListDocs(ListDocsRequest) returns (ListDocsResponse);
|
|
59
65
|
|
|
@@ -122,6 +128,9 @@ service CentyDaemon {
|
|
|
122
128
|
// Get a single PR by display number (human-readable number like 1, 2, 3)
|
|
123
129
|
rpc GetPrByDisplayNumber(GetPrByDisplayNumberRequest) returns (PullRequest);
|
|
124
130
|
|
|
131
|
+
// Get PRs by UUID across all tracked projects (global search)
|
|
132
|
+
rpc GetPrsByUuid(GetPrsByUuidRequest) returns (GetPrsByUuidResponse);
|
|
133
|
+
|
|
125
134
|
// List all PRs with optional filtering
|
|
126
135
|
rpc ListPrs(ListPrsRequest) returns (ListPrsResponse);
|
|
127
136
|
|
|
@@ -164,6 +173,37 @@ service CentyDaemon {
|
|
|
164
173
|
|
|
165
174
|
// Mark multiple issues as compacted
|
|
166
175
|
rpc MarkIssuesCompacted(MarkIssuesCompactedRequest) returns (MarkIssuesCompactedResponse);
|
|
176
|
+
|
|
177
|
+
// ============ LLM Agent RPCs ============
|
|
178
|
+
|
|
179
|
+
// Spawn an LLM agent to work on an issue
|
|
180
|
+
rpc SpawnAgent(SpawnAgentRequest) returns (SpawnAgentResponse);
|
|
181
|
+
|
|
182
|
+
// Get current LLM work session for a project
|
|
183
|
+
rpc GetLlmWork(GetLlmWorkRequest) returns (GetLlmWorkResponse);
|
|
184
|
+
|
|
185
|
+
// Clear the active LLM work tracking
|
|
186
|
+
rpc ClearLlmWork(ClearLlmWorkRequest) returns (ClearLlmWorkResponse);
|
|
187
|
+
|
|
188
|
+
// Get local LLM configuration (config.local.json)
|
|
189
|
+
rpc GetLocalLlmConfig(GetLocalLlmConfigRequest) returns (GetLocalLlmConfigResponse);
|
|
190
|
+
|
|
191
|
+
// Update local LLM configuration
|
|
192
|
+
rpc UpdateLocalLlmConfig(UpdateLocalLlmConfigRequest) returns (UpdateLocalLlmConfigResponse);
|
|
193
|
+
|
|
194
|
+
// ============ Link RPCs ============
|
|
195
|
+
|
|
196
|
+
// Create a link between two entities (bidirectional)
|
|
197
|
+
rpc CreateLink(CreateLinkRequest) returns (CreateLinkResponse);
|
|
198
|
+
|
|
199
|
+
// Delete a link between two entities (bidirectional)
|
|
200
|
+
rpc DeleteLink(DeleteLinkRequest) returns (DeleteLinkResponse);
|
|
201
|
+
|
|
202
|
+
// List all links for an entity
|
|
203
|
+
rpc ListLinks(ListLinksRequest) returns (ListLinksResponse);
|
|
204
|
+
|
|
205
|
+
// Get all available link types (builtin + custom)
|
|
206
|
+
rpc GetAvailableLinkTypes(GetAvailableLinkTypesRequest) returns (GetAvailableLinkTypesResponse);
|
|
167
207
|
}
|
|
168
208
|
|
|
169
209
|
// ============ Init Messages ============
|
|
@@ -309,6 +349,25 @@ message GetIssueByDisplayNumberRequest {
|
|
|
309
349
|
uint32 display_number = 2; // Human-readable number (1, 2, 3...)
|
|
310
350
|
}
|
|
311
351
|
|
|
352
|
+
// ============ Global Issue Search Messages ============
|
|
353
|
+
|
|
354
|
+
message GetIssuesByUuidRequest {
|
|
355
|
+
string uuid = 1; // The UUID to search for (must be valid UUID format)
|
|
356
|
+
}
|
|
357
|
+
|
|
358
|
+
// An issue with its source project path
|
|
359
|
+
message IssueWithProject {
|
|
360
|
+
Issue issue = 1;
|
|
361
|
+
string project_path = 2; // Absolute path to the project where this issue was found
|
|
362
|
+
string project_name = 3; // Human-readable project name (directory name)
|
|
363
|
+
}
|
|
364
|
+
|
|
365
|
+
message GetIssuesByUuidResponse {
|
|
366
|
+
repeated IssueWithProject issues = 1;
|
|
367
|
+
int32 total_count = 2;
|
|
368
|
+
repeated string errors = 3; // Non-fatal errors (e.g., projects that couldn't be accessed)
|
|
369
|
+
}
|
|
370
|
+
|
|
312
371
|
message ListIssuesRequest {
|
|
313
372
|
string project_path = 1;
|
|
314
373
|
|
|
@@ -394,6 +453,7 @@ message Config {
|
|
|
394
453
|
map<string, string> state_colors = 7; // State name → hex color (e.g., "open" → "#10b981")
|
|
395
454
|
map<string, string> priority_colors = 8; // Priority level → hex color (e.g., "1" → "#ef4444")
|
|
396
455
|
LlmConfig llm = 9; // LLM-related settings
|
|
456
|
+
repeated LinkTypeDefinition custom_link_types = 10; // Custom link types (in addition to built-in)
|
|
397
457
|
}
|
|
398
458
|
|
|
399
459
|
message CustomFieldDefinition {
|
|
@@ -410,6 +470,13 @@ message LlmConfig {
|
|
|
410
470
|
bool allow_direct_edits = 3; // Allow LLM to directly edit issue files
|
|
411
471
|
}
|
|
412
472
|
|
|
473
|
+
// Custom link type definition (for custom relationship types)
|
|
474
|
+
message LinkTypeDefinition {
|
|
475
|
+
string name = 1; // Link type name (e.g., "depends-on")
|
|
476
|
+
string inverse = 2; // Inverse link type (e.g., "dependency-of")
|
|
477
|
+
string description = 3; // Optional description
|
|
478
|
+
}
|
|
479
|
+
|
|
413
480
|
message UpdateConfigRequest {
|
|
414
481
|
string project_path = 1;
|
|
415
482
|
Config config = 2;
|
|
@@ -455,6 +522,25 @@ message GetDocRequest {
|
|
|
455
522
|
string slug = 2; // e.g., "getting-started"
|
|
456
523
|
}
|
|
457
524
|
|
|
525
|
+
// ============ Global Doc Search Messages ============
|
|
526
|
+
|
|
527
|
+
message GetDocsBySlugRequest {
|
|
528
|
+
string slug = 1; // The slug to search for (kebab-case)
|
|
529
|
+
}
|
|
530
|
+
|
|
531
|
+
// A doc with its source project path
|
|
532
|
+
message DocWithProject {
|
|
533
|
+
Doc doc = 1;
|
|
534
|
+
string project_path = 2; // Absolute path to the project where this doc was found
|
|
535
|
+
string project_name = 3; // Human-readable project name (directory name)
|
|
536
|
+
}
|
|
537
|
+
|
|
538
|
+
message GetDocsBySlugResponse {
|
|
539
|
+
repeated DocWithProject docs = 1;
|
|
540
|
+
int32 total_count = 2;
|
|
541
|
+
repeated string errors = 3; // Non-fatal errors (e.g., projects that couldn't be accessed)
|
|
542
|
+
}
|
|
543
|
+
|
|
458
544
|
message ListDocsRequest {
|
|
459
545
|
string project_path = 1;
|
|
460
546
|
}
|
|
@@ -581,7 +667,7 @@ message ListSharedAssetsRequest {
|
|
|
581
667
|
|
|
582
668
|
// Returned by API (enriched with live data from disk)
|
|
583
669
|
message ProjectInfo {
|
|
584
|
-
string path = 1; // Absolute path to project
|
|
670
|
+
string path = 1; // Absolute path to project (use this for API calls)
|
|
585
671
|
string first_accessed = 2; // ISO timestamp
|
|
586
672
|
string last_accessed = 3; // ISO timestamp
|
|
587
673
|
uint32 issue_count = 4; // Fetched live from .centy/issues/
|
|
@@ -590,6 +676,7 @@ message ProjectInfo {
|
|
|
590
676
|
string name = 7; // Fetched live (directory name)
|
|
591
677
|
bool is_favorite = 8; // User-marked favorite status
|
|
592
678
|
bool is_archived = 9; // User-marked archived status
|
|
679
|
+
string display_path = 10; // Human-readable path with ~/ for home dir (use for display only)
|
|
593
680
|
}
|
|
594
681
|
|
|
595
682
|
message ListProjectsRequest {
|
|
@@ -793,6 +880,25 @@ message GetPrByDisplayNumberRequest {
|
|
|
793
880
|
uint32 display_number = 2; // Human-readable number (1, 2, 3...)
|
|
794
881
|
}
|
|
795
882
|
|
|
883
|
+
// ============ Global PR Search Messages ============
|
|
884
|
+
|
|
885
|
+
message GetPrsByUuidRequest {
|
|
886
|
+
string uuid = 1; // The UUID to search for (must be valid UUID format)
|
|
887
|
+
}
|
|
888
|
+
|
|
889
|
+
// A PR with its source project path
|
|
890
|
+
message PrWithProject {
|
|
891
|
+
PullRequest pr = 1;
|
|
892
|
+
string project_path = 2; // Absolute path to the project where this PR was found
|
|
893
|
+
string project_name = 3; // Human-readable project name (directory name)
|
|
894
|
+
}
|
|
895
|
+
|
|
896
|
+
message GetPrsByUuidResponse {
|
|
897
|
+
repeated PrWithProject prs = 1;
|
|
898
|
+
int32 total_count = 2;
|
|
899
|
+
repeated string errors = 3; // Non-fatal errors (e.g., projects that couldn't be accessed)
|
|
900
|
+
}
|
|
901
|
+
|
|
796
902
|
message ListPrsRequest {
|
|
797
903
|
string project_path = 1;
|
|
798
904
|
|
|
@@ -914,3 +1020,190 @@ message MarkIssuesCompactedResponse {
|
|
|
914
1020
|
string error = 2;
|
|
915
1021
|
uint32 marked_count = 3; // Number of issues successfully marked
|
|
916
1022
|
}
|
|
1023
|
+
|
|
1024
|
+
// ============ LLM Agent Messages ============
|
|
1025
|
+
|
|
1026
|
+
// Predefined agent types
|
|
1027
|
+
enum AgentType {
|
|
1028
|
+
AGENT_TYPE_UNSPECIFIED = 0;
|
|
1029
|
+
AGENT_TYPE_CLAUDE = 1;
|
|
1030
|
+
AGENT_TYPE_GEMINI = 2;
|
|
1031
|
+
AGENT_TYPE_CODEX = 3;
|
|
1032
|
+
AGENT_TYPE_OPENCODE = 4;
|
|
1033
|
+
AGENT_TYPE_CUSTOM = 5;
|
|
1034
|
+
}
|
|
1035
|
+
|
|
1036
|
+
// Action types for LLM agents
|
|
1037
|
+
enum LlmAction {
|
|
1038
|
+
LLM_ACTION_UNSPECIFIED = 0;
|
|
1039
|
+
LLM_ACTION_PLAN = 1;
|
|
1040
|
+
LLM_ACTION_IMPLEMENT = 2;
|
|
1041
|
+
}
|
|
1042
|
+
|
|
1043
|
+
// Agent configuration (stored in config.local.json)
|
|
1044
|
+
message AgentConfig {
|
|
1045
|
+
AgentType agent_type = 1;
|
|
1046
|
+
string name = 2; // Display name (e.g., "claude", "my-agent")
|
|
1047
|
+
string command = 3; // CLI command (e.g., "claude", "/path/to/agent")
|
|
1048
|
+
repeated string default_args = 4; // Default arguments for the CLI
|
|
1049
|
+
string plan_template = 5; // Template name for "plan" action
|
|
1050
|
+
string implement_template = 6; // Template name for "implement" action
|
|
1051
|
+
}
|
|
1052
|
+
|
|
1053
|
+
// Local LLM configuration (config.local.json - not version controlled)
|
|
1054
|
+
message LocalLlmConfig {
|
|
1055
|
+
string default_agent = 1; // Name of default agent to use
|
|
1056
|
+
repeated AgentConfig agents = 2; // Available agents
|
|
1057
|
+
map<string, string> env_vars = 3; // Environment variables for agents
|
|
1058
|
+
}
|
|
1059
|
+
|
|
1060
|
+
// Request to spawn an LLM agent
|
|
1061
|
+
message SpawnAgentRequest {
|
|
1062
|
+
string project_path = 1;
|
|
1063
|
+
string issue_id = 2; // UUID or display number of issue to work on
|
|
1064
|
+
LlmAction action = 3; // "plan" or "implement"
|
|
1065
|
+
string agent_name = 4; // Agent to use (empty = default)
|
|
1066
|
+
repeated string extra_args = 5; // Additional CLI arguments
|
|
1067
|
+
}
|
|
1068
|
+
|
|
1069
|
+
message SpawnAgentResponse {
|
|
1070
|
+
bool success = 1;
|
|
1071
|
+
string error = 2;
|
|
1072
|
+
string agent_name = 3; // Which agent was spawned
|
|
1073
|
+
string issue_id = 4; // Resolved issue UUID
|
|
1074
|
+
uint32 display_number = 5; // Issue display number
|
|
1075
|
+
string prompt_preview = 6; // First 500 chars of generated prompt
|
|
1076
|
+
}
|
|
1077
|
+
|
|
1078
|
+
// Get active LLM work for a project
|
|
1079
|
+
message GetLlmWorkRequest {
|
|
1080
|
+
string project_path = 1;
|
|
1081
|
+
}
|
|
1082
|
+
|
|
1083
|
+
message LlmWorkSession {
|
|
1084
|
+
string issue_id = 1;
|
|
1085
|
+
uint32 display_number = 2;
|
|
1086
|
+
string issue_title = 3;
|
|
1087
|
+
string agent_name = 4;
|
|
1088
|
+
LlmAction action = 5;
|
|
1089
|
+
string started_at = 6; // ISO timestamp
|
|
1090
|
+
uint32 pid = 7; // Process ID (0 if unknown/exited)
|
|
1091
|
+
}
|
|
1092
|
+
|
|
1093
|
+
message GetLlmWorkResponse {
|
|
1094
|
+
bool has_active_work = 1;
|
|
1095
|
+
LlmWorkSession session = 2; // Current session (if any)
|
|
1096
|
+
}
|
|
1097
|
+
|
|
1098
|
+
// Clear active work tracking
|
|
1099
|
+
message ClearLlmWorkRequest {
|
|
1100
|
+
string project_path = 1;
|
|
1101
|
+
}
|
|
1102
|
+
|
|
1103
|
+
message ClearLlmWorkResponse {
|
|
1104
|
+
bool success = 1;
|
|
1105
|
+
string error = 2;
|
|
1106
|
+
}
|
|
1107
|
+
|
|
1108
|
+
// Get local LLM config
|
|
1109
|
+
message GetLocalLlmConfigRequest {
|
|
1110
|
+
string project_path = 1; // Empty = global config only
|
|
1111
|
+
}
|
|
1112
|
+
|
|
1113
|
+
message GetLocalLlmConfigResponse {
|
|
1114
|
+
LocalLlmConfig config = 1;
|
|
1115
|
+
bool has_project_config = 2;
|
|
1116
|
+
bool has_global_config = 3;
|
|
1117
|
+
}
|
|
1118
|
+
|
|
1119
|
+
// Update local LLM config
|
|
1120
|
+
message UpdateLocalLlmConfigRequest {
|
|
1121
|
+
string project_path = 1; // Empty = update global config
|
|
1122
|
+
LocalLlmConfig config = 2;
|
|
1123
|
+
}
|
|
1124
|
+
|
|
1125
|
+
message UpdateLocalLlmConfigResponse {
|
|
1126
|
+
bool success = 1;
|
|
1127
|
+
string error = 2;
|
|
1128
|
+
LocalLlmConfig config = 3;
|
|
1129
|
+
}
|
|
1130
|
+
|
|
1131
|
+
// ============ Link Messages ============
|
|
1132
|
+
|
|
1133
|
+
// Target entity type for links
|
|
1134
|
+
enum LinkTargetType {
|
|
1135
|
+
LINK_TARGET_TYPE_UNSPECIFIED = 0;
|
|
1136
|
+
LINK_TARGET_TYPE_ISSUE = 1;
|
|
1137
|
+
LINK_TARGET_TYPE_DOC = 2;
|
|
1138
|
+
LINK_TARGET_TYPE_PR = 3;
|
|
1139
|
+
}
|
|
1140
|
+
|
|
1141
|
+
// A link between two entities
|
|
1142
|
+
message Link {
|
|
1143
|
+
string target_id = 1; // Target entity ID (UUID for issues/PRs, slug for docs)
|
|
1144
|
+
LinkTargetType target_type = 2; // Type of the target entity
|
|
1145
|
+
string link_type = 3; // Relationship type (e.g., "blocks", "parent-of")
|
|
1146
|
+
string created_at = 4; // ISO timestamp when link was created
|
|
1147
|
+
}
|
|
1148
|
+
|
|
1149
|
+
// Create a link between two entities (bidirectional - also creates inverse)
|
|
1150
|
+
message CreateLinkRequest {
|
|
1151
|
+
string project_path = 1;
|
|
1152
|
+
string source_id = 2; // Source entity ID
|
|
1153
|
+
LinkTargetType source_type = 3; // Source entity type
|
|
1154
|
+
string target_id = 4; // Target entity ID
|
|
1155
|
+
LinkTargetType target_type = 5; // Target entity type
|
|
1156
|
+
string link_type = 6; // Link type (e.g., "blocks")
|
|
1157
|
+
}
|
|
1158
|
+
|
|
1159
|
+
message CreateLinkResponse {
|
|
1160
|
+
bool success = 1;
|
|
1161
|
+
string error = 2;
|
|
1162
|
+
Link created_link = 3; // The forward link that was created
|
|
1163
|
+
Link inverse_link = 4; // The inverse link that was created
|
|
1164
|
+
}
|
|
1165
|
+
|
|
1166
|
+
// Delete a link between two entities (also deletes inverse)
|
|
1167
|
+
message DeleteLinkRequest {
|
|
1168
|
+
string project_path = 1;
|
|
1169
|
+
string source_id = 2; // Source entity ID
|
|
1170
|
+
LinkTargetType source_type = 3; // Source entity type
|
|
1171
|
+
string target_id = 4; // Target entity ID
|
|
1172
|
+
LinkTargetType target_type = 5; // Target entity type
|
|
1173
|
+
string link_type = 6; // Optional: specific link type to delete (empty = all links between entities)
|
|
1174
|
+
}
|
|
1175
|
+
|
|
1176
|
+
message DeleteLinkResponse {
|
|
1177
|
+
bool success = 1;
|
|
1178
|
+
string error = 2;
|
|
1179
|
+
uint32 deleted_count = 3; // Number of links deleted (including inverse)
|
|
1180
|
+
}
|
|
1181
|
+
|
|
1182
|
+
// List all links for an entity
|
|
1183
|
+
message ListLinksRequest {
|
|
1184
|
+
string project_path = 1;
|
|
1185
|
+
string entity_id = 2; // Entity ID to list links for
|
|
1186
|
+
LinkTargetType entity_type = 3; // Entity type
|
|
1187
|
+
}
|
|
1188
|
+
|
|
1189
|
+
message ListLinksResponse {
|
|
1190
|
+
repeated Link links = 1;
|
|
1191
|
+
int32 total_count = 2;
|
|
1192
|
+
}
|
|
1193
|
+
|
|
1194
|
+
// Get all available link types (builtin + custom)
|
|
1195
|
+
message GetAvailableLinkTypesRequest {
|
|
1196
|
+
string project_path = 1;
|
|
1197
|
+
}
|
|
1198
|
+
|
|
1199
|
+
// Information about a link type
|
|
1200
|
+
message LinkTypeInfo {
|
|
1201
|
+
string name = 1; // Link type name (e.g., "blocks")
|
|
1202
|
+
string inverse = 2; // Inverse link type (e.g., "blocked-by")
|
|
1203
|
+
string description = 3; // Optional description
|
|
1204
|
+
bool is_builtin = 4; // Whether this is a built-in type
|
|
1205
|
+
}
|
|
1206
|
+
|
|
1207
|
+
message GetAvailableLinkTypesResponse {
|
|
1208
|
+
repeated LinkTypeInfo link_types = 1;
|
|
1209
|
+
}
|