centy 0.0.27 → 0.0.28
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/dist/commands/workspace/cleanup.d.ts +10 -0
- package/dist/commands/workspace/cleanup.d.ts.map +1 -0
- package/dist/commands/workspace/cleanup.js +31 -0
- package/dist/commands/workspace/cleanup.js.map +1 -0
- package/dist/commands/workspace/close.d.ts +16 -0
- package/dist/commands/workspace/close.d.ts.map +1 -0
- package/dist/commands/workspace/close.js +49 -0
- package/dist/commands/workspace/close.js.map +1 -0
- package/dist/commands/workspace/list.d.ts +15 -0
- package/dist/commands/workspace/list.d.ts.map +1 -0
- package/dist/commands/workspace/list.js +67 -0
- package/dist/commands/workspace/list.js.map +1 -0
- package/dist/commands/workspace/open.d.ts +19 -0
- package/dist/commands/workspace/open.d.ts.map +1 -0
- package/dist/commands/workspace/open.js +76 -0
- package/dist/commands/workspace/open.js.map +1 -0
- package/dist/daemon/daemon-cleanup-expired-workspaces.d.ts +6 -0
- package/dist/daemon/daemon-cleanup-expired-workspaces.d.ts.map +1 -0
- package/dist/daemon/daemon-cleanup-expired-workspaces.js +17 -0
- package/dist/daemon/daemon-cleanup-expired-workspaces.js.map +1 -0
- package/dist/daemon/daemon-close-temp-workspace.d.ts +6 -0
- package/dist/daemon/daemon-close-temp-workspace.d.ts.map +1 -0
- package/dist/daemon/daemon-close-temp-workspace.js +17 -0
- package/dist/daemon/daemon-close-temp-workspace.js.map +1 -0
- package/dist/daemon/daemon-list-temp-workspaces.d.ts +6 -0
- package/dist/daemon/daemon-list-temp-workspaces.d.ts.map +1 -0
- package/dist/daemon/daemon-list-temp-workspaces.js +17 -0
- package/dist/daemon/daemon-list-temp-workspaces.js.map +1 -0
- package/dist/daemon/daemon-open-in-temp-vscode.d.ts +6 -0
- package/dist/daemon/daemon-open-in-temp-vscode.d.ts.map +1 -0
- package/dist/daemon/daemon-open-in-temp-vscode.js +17 -0
- package/dist/daemon/daemon-open-in-temp-vscode.js.map +1 -0
- package/dist/daemon/load-proto.d.ts +5 -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 +53 -0
- package/dist/daemon/types.d.ts.map +1 -1
- package/oclif.manifest.json +409 -233
- package/package.json +1 -1
- package/proto/centy.proto +220 -48
package/proto/centy.proto
CHANGED
|
@@ -28,6 +28,9 @@ service CentyDaemon {
|
|
|
28
28
|
// List all issues with optional filtering
|
|
29
29
|
rpc ListIssues(ListIssuesRequest) returns (ListIssuesResponse);
|
|
30
30
|
|
|
31
|
+
// Advanced issue search with query language
|
|
32
|
+
rpc AdvancedSearch(AdvancedSearchRequest) returns (AdvancedSearchResponse);
|
|
33
|
+
|
|
31
34
|
// Update an existing issue
|
|
32
35
|
rpc UpdateIssue(UpdateIssueRequest) returns (UpdateIssueResponse);
|
|
33
36
|
|
|
@@ -98,17 +101,6 @@ service CentyDaemon {
|
|
|
98
101
|
// List all shared assets
|
|
99
102
|
rpc ListSharedAssets(ListSharedAssetsRequest) returns (ListAssetsResponse);
|
|
100
103
|
|
|
101
|
-
// ============ Plan RPCs ============
|
|
102
|
-
|
|
103
|
-
// Get an issue's plan
|
|
104
|
-
rpc GetPlan(GetPlanRequest) returns (GetPlanResponse);
|
|
105
|
-
|
|
106
|
-
// Update (or create) an issue's plan
|
|
107
|
-
rpc UpdatePlan(UpdatePlanRequest) returns (UpdatePlanResponse);
|
|
108
|
-
|
|
109
|
-
// Delete an issue's plan
|
|
110
|
-
rpc DeletePlan(DeletePlanRequest) returns (DeletePlanResponse);
|
|
111
|
-
|
|
112
104
|
// ============ Project Registry RPCs ============
|
|
113
105
|
|
|
114
106
|
// List all tracked projects
|
|
@@ -234,6 +226,20 @@ service CentyDaemon {
|
|
|
234
226
|
// Update local LLM configuration
|
|
235
227
|
rpc UpdateLocalLlmConfig(UpdateLocalLlmConfigRequest) returns (UpdateLocalLlmConfigResponse);
|
|
236
228
|
|
|
229
|
+
// ============ Temp Workspace RPCs ============
|
|
230
|
+
|
|
231
|
+
// Open a project in a temporary VS Code workspace
|
|
232
|
+
rpc OpenInTempVscode(OpenInTempVscodeRequest) returns (OpenInTempVscodeResponse);
|
|
233
|
+
|
|
234
|
+
// List all temp workspaces
|
|
235
|
+
rpc ListTempWorkspaces(ListTempWorkspacesRequest) returns (ListTempWorkspacesResponse);
|
|
236
|
+
|
|
237
|
+
// Close/cleanup a temp workspace
|
|
238
|
+
rpc CloseTempWorkspace(CloseTempWorkspaceRequest) returns (CloseTempWorkspaceResponse);
|
|
239
|
+
|
|
240
|
+
// Cleanup all expired workspaces
|
|
241
|
+
rpc CleanupExpiredWorkspaces(CleanupExpiredWorkspacesRequest) returns (CleanupExpiredWorkspacesResponse);
|
|
242
|
+
|
|
237
243
|
// ============ Link RPCs ============
|
|
238
244
|
|
|
239
245
|
// Create a link between two entities (bidirectional)
|
|
@@ -247,6 +253,26 @@ service CentyDaemon {
|
|
|
247
253
|
|
|
248
254
|
// Get all available link types (builtin + custom)
|
|
249
255
|
rpc GetAvailableLinkTypes(GetAvailableLinkTypesRequest) returns (GetAvailableLinkTypesResponse);
|
|
256
|
+
|
|
257
|
+
// ============ User RPCs ============
|
|
258
|
+
|
|
259
|
+
// Create a new user
|
|
260
|
+
rpc CreateUser(CreateUserRequest) returns (CreateUserResponse);
|
|
261
|
+
|
|
262
|
+
// Get a single user by ID
|
|
263
|
+
rpc GetUser(GetUserRequest) returns (User);
|
|
264
|
+
|
|
265
|
+
// List all users
|
|
266
|
+
rpc ListUsers(ListUsersRequest) returns (ListUsersResponse);
|
|
267
|
+
|
|
268
|
+
// Update an existing user
|
|
269
|
+
rpc UpdateUser(UpdateUserRequest) returns (UpdateUserResponse);
|
|
270
|
+
|
|
271
|
+
// Delete a user
|
|
272
|
+
rpc DeleteUser(DeleteUserRequest) returns (DeleteUserResponse);
|
|
273
|
+
|
|
274
|
+
// Sync users from git history
|
|
275
|
+
rpc SyncUsers(SyncUsersRequest) returns (SyncUsersResponse);
|
|
250
276
|
}
|
|
251
277
|
|
|
252
278
|
// ============ Init Messages ============
|
|
@@ -368,7 +394,6 @@ message Issue {
|
|
|
368
394
|
string title = 4;
|
|
369
395
|
string description = 5;
|
|
370
396
|
IssueMetadata metadata = 6;
|
|
371
|
-
bool has_plan = 7; // Whether issue has a plan.md file
|
|
372
397
|
}
|
|
373
398
|
|
|
374
399
|
message IssueMetadata {
|
|
@@ -429,6 +454,32 @@ message ListIssuesResponse {
|
|
|
429
454
|
int32 total_count = 2;
|
|
430
455
|
}
|
|
431
456
|
|
|
457
|
+
// Advanced search request
|
|
458
|
+
message AdvancedSearchRequest {
|
|
459
|
+
string query = 1; // Query string (e.g., "status:open AND priority:1")
|
|
460
|
+
string sort_by = 2; // Field to sort by (e.g., "createdAt", "priority")
|
|
461
|
+
bool sort_descending = 3; // Sort order (true = descending)
|
|
462
|
+
bool multi_project = 4; // Search across all tracked projects
|
|
463
|
+
string project_path = 5; // Project path (required if multi_project is false)
|
|
464
|
+
}
|
|
465
|
+
|
|
466
|
+
// Search result containing issue and project info
|
|
467
|
+
message SearchResultIssue {
|
|
468
|
+
Issue issue = 1;
|
|
469
|
+
string project_path = 2;
|
|
470
|
+
string project_name = 3;
|
|
471
|
+
string display_path = 4;
|
|
472
|
+
}
|
|
473
|
+
|
|
474
|
+
// Advanced search response
|
|
475
|
+
message AdvancedSearchResponse {
|
|
476
|
+
bool success = 1;
|
|
477
|
+
string error = 2;
|
|
478
|
+
repeated SearchResultIssue results = 3;
|
|
479
|
+
int32 total_count = 4;
|
|
480
|
+
string parsed_query = 5; // Debug: the parsed query representation
|
|
481
|
+
}
|
|
482
|
+
|
|
432
483
|
message UpdateIssueRequest {
|
|
433
484
|
string project_path = 1;
|
|
434
485
|
string issue_id = 2; // UUID or legacy issue number
|
|
@@ -779,42 +830,6 @@ message ListSharedAssetsRequest {
|
|
|
779
830
|
string project_path = 1;
|
|
780
831
|
}
|
|
781
832
|
|
|
782
|
-
// ============ Plan Messages ============
|
|
783
|
-
|
|
784
|
-
message GetPlanRequest {
|
|
785
|
-
string project_path = 1;
|
|
786
|
-
string issue_id = 2; // Issue ID or display number
|
|
787
|
-
}
|
|
788
|
-
|
|
789
|
-
message GetPlanResponse {
|
|
790
|
-
bool exists = 1; // Whether plan.md exists
|
|
791
|
-
string content = 2; // Plan content (empty if not exists)
|
|
792
|
-
string updated_at = 3; // ISO timestamp of last modification (empty if not exists)
|
|
793
|
-
}
|
|
794
|
-
|
|
795
|
-
message UpdatePlanRequest {
|
|
796
|
-
string project_path = 1;
|
|
797
|
-
string issue_id = 2; // Issue ID or display number
|
|
798
|
-
string content = 3; // New plan content
|
|
799
|
-
}
|
|
800
|
-
|
|
801
|
-
message UpdatePlanResponse {
|
|
802
|
-
bool success = 1;
|
|
803
|
-
string error = 2;
|
|
804
|
-
Manifest manifest = 3;
|
|
805
|
-
}
|
|
806
|
-
|
|
807
|
-
message DeletePlanRequest {
|
|
808
|
-
string project_path = 1;
|
|
809
|
-
string issue_id = 2; // Issue ID or display number
|
|
810
|
-
}
|
|
811
|
-
|
|
812
|
-
message DeletePlanResponse {
|
|
813
|
-
bool success = 1;
|
|
814
|
-
string error = 2;
|
|
815
|
-
Manifest manifest = 3;
|
|
816
|
-
}
|
|
817
|
-
|
|
818
833
|
// ============ Project Registry Messages ============
|
|
819
834
|
|
|
820
835
|
// Returned by API (enriched with live data from disk)
|
|
@@ -1358,6 +1373,73 @@ message UpdateLocalLlmConfigResponse {
|
|
|
1358
1373
|
LocalLlmConfig config = 3;
|
|
1359
1374
|
}
|
|
1360
1375
|
|
|
1376
|
+
// ============ Temp Workspace Messages ============
|
|
1377
|
+
|
|
1378
|
+
// Request to open a project in a temporary VS Code workspace
|
|
1379
|
+
message OpenInTempVscodeRequest {
|
|
1380
|
+
string project_path = 1; // Source project path
|
|
1381
|
+
string issue_id = 2; // Issue UUID or display number
|
|
1382
|
+
LlmAction action = 3; // Plan or Implement
|
|
1383
|
+
string agent_name = 4; // Agent to use (empty = default)
|
|
1384
|
+
uint32 ttl_hours = 5; // Custom TTL in hours (0 = use default 12h)
|
|
1385
|
+
}
|
|
1386
|
+
|
|
1387
|
+
message OpenInTempVscodeResponse {
|
|
1388
|
+
bool success = 1;
|
|
1389
|
+
string error = 2;
|
|
1390
|
+
string workspace_path = 3; // Path to the temp workspace
|
|
1391
|
+
string issue_id = 4; // Resolved issue UUID
|
|
1392
|
+
uint32 display_number = 5; // Issue display number
|
|
1393
|
+
string expires_at = 6; // ISO timestamp when workspace expires
|
|
1394
|
+
bool vscode_opened = 7; // Whether VS Code was successfully opened
|
|
1395
|
+
}
|
|
1396
|
+
|
|
1397
|
+
// A temporary workspace entry
|
|
1398
|
+
message TempWorkspace {
|
|
1399
|
+
string workspace_path = 1; // Absolute path to temp workspace
|
|
1400
|
+
string source_project_path = 2; // Original project path
|
|
1401
|
+
string issue_id = 3; // Issue UUID
|
|
1402
|
+
uint32 issue_display_number = 4; // Issue display number
|
|
1403
|
+
string issue_title = 5; // Issue title
|
|
1404
|
+
string agent_name = 6; // Agent being used
|
|
1405
|
+
LlmAction action = 7; // Plan or Implement
|
|
1406
|
+
string created_at = 8; // ISO timestamp
|
|
1407
|
+
string expires_at = 9; // ISO timestamp when workspace expires
|
|
1408
|
+
}
|
|
1409
|
+
|
|
1410
|
+
message ListTempWorkspacesRequest {
|
|
1411
|
+
bool include_expired = 1; // Include expired workspaces (default: false)
|
|
1412
|
+
string source_project_path = 2; // Filter by source project (empty = all)
|
|
1413
|
+
}
|
|
1414
|
+
|
|
1415
|
+
message ListTempWorkspacesResponse {
|
|
1416
|
+
repeated TempWorkspace workspaces = 1;
|
|
1417
|
+
uint32 total_count = 2;
|
|
1418
|
+
uint32 expired_count = 3; // Number of expired workspaces (not included unless include_expired)
|
|
1419
|
+
}
|
|
1420
|
+
|
|
1421
|
+
message CloseTempWorkspaceRequest {
|
|
1422
|
+
string workspace_path = 1; // Path to the workspace to close
|
|
1423
|
+
bool force = 2; // Force removal even if VS Code may be open
|
|
1424
|
+
}
|
|
1425
|
+
|
|
1426
|
+
message CloseTempWorkspaceResponse {
|
|
1427
|
+
bool success = 1;
|
|
1428
|
+
string error = 2;
|
|
1429
|
+
bool worktree_removed = 3; // Whether git worktree was removed
|
|
1430
|
+
bool directory_removed = 4; // Whether directory was removed
|
|
1431
|
+
}
|
|
1432
|
+
|
|
1433
|
+
message CleanupExpiredWorkspacesRequest {}
|
|
1434
|
+
|
|
1435
|
+
message CleanupExpiredWorkspacesResponse {
|
|
1436
|
+
bool success = 1;
|
|
1437
|
+
string error = 2;
|
|
1438
|
+
uint32 cleaned_count = 3; // Number of workspaces cleaned up
|
|
1439
|
+
repeated string cleaned_paths = 4; // Paths that were cleaned
|
|
1440
|
+
repeated string failed_paths = 5; // Paths that failed to clean
|
|
1441
|
+
}
|
|
1442
|
+
|
|
1361
1443
|
// ============ Link Messages ============
|
|
1362
1444
|
|
|
1363
1445
|
// Target entity type for links
|
|
@@ -1437,3 +1519,93 @@ message LinkTypeInfo {
|
|
|
1437
1519
|
message GetAvailableLinkTypesResponse {
|
|
1438
1520
|
repeated LinkTypeInfo link_types = 1;
|
|
1439
1521
|
}
|
|
1522
|
+
|
|
1523
|
+
// ============ User Messages ============
|
|
1524
|
+
|
|
1525
|
+
// A project user/team member
|
|
1526
|
+
message User {
|
|
1527
|
+
string id = 1; // Unique identifier (slug format, e.g., "john-doe")
|
|
1528
|
+
string name = 2; // Display name
|
|
1529
|
+
string email = 3; // Email address (optional)
|
|
1530
|
+
repeated string git_usernames = 4; // Git usernames (e.g., GitHub handles)
|
|
1531
|
+
string created_at = 5; // ISO timestamp
|
|
1532
|
+
string updated_at = 6; // ISO timestamp
|
|
1533
|
+
}
|
|
1534
|
+
|
|
1535
|
+
message CreateUserRequest {
|
|
1536
|
+
string project_path = 1;
|
|
1537
|
+
string id = 2; // User ID (slug format)
|
|
1538
|
+
string name = 3; // Display name (required)
|
|
1539
|
+
string email = 4; // Email address (optional)
|
|
1540
|
+
repeated string git_usernames = 5; // Git usernames (optional)
|
|
1541
|
+
}
|
|
1542
|
+
|
|
1543
|
+
message CreateUserResponse {
|
|
1544
|
+
bool success = 1;
|
|
1545
|
+
string error = 2;
|
|
1546
|
+
User user = 3; // The created user
|
|
1547
|
+
Manifest manifest = 4;
|
|
1548
|
+
}
|
|
1549
|
+
|
|
1550
|
+
message GetUserRequest {
|
|
1551
|
+
string project_path = 1;
|
|
1552
|
+
string user_id = 2; // User ID (slug format)
|
|
1553
|
+
}
|
|
1554
|
+
|
|
1555
|
+
message ListUsersRequest {
|
|
1556
|
+
string project_path = 1;
|
|
1557
|
+
string git_username = 2; // Optional: filter by git username
|
|
1558
|
+
}
|
|
1559
|
+
|
|
1560
|
+
message ListUsersResponse {
|
|
1561
|
+
repeated User users = 1;
|
|
1562
|
+
int32 total_count = 2;
|
|
1563
|
+
}
|
|
1564
|
+
|
|
1565
|
+
message UpdateUserRequest {
|
|
1566
|
+
string project_path = 1;
|
|
1567
|
+
string user_id = 2; // User ID (slug format)
|
|
1568
|
+
string name = 3; // Empty = don't update
|
|
1569
|
+
string email = 4; // Empty = don't update
|
|
1570
|
+
repeated string git_usernames = 5; // Empty array = don't update
|
|
1571
|
+
}
|
|
1572
|
+
|
|
1573
|
+
message UpdateUserResponse {
|
|
1574
|
+
bool success = 1;
|
|
1575
|
+
string error = 2;
|
|
1576
|
+
User user = 3; // The updated user
|
|
1577
|
+
Manifest manifest = 4;
|
|
1578
|
+
}
|
|
1579
|
+
|
|
1580
|
+
message DeleteUserRequest {
|
|
1581
|
+
string project_path = 1;
|
|
1582
|
+
string user_id = 2; // User ID (slug format)
|
|
1583
|
+
}
|
|
1584
|
+
|
|
1585
|
+
message DeleteUserResponse {
|
|
1586
|
+
bool success = 1;
|
|
1587
|
+
string error = 2;
|
|
1588
|
+
Manifest manifest = 3;
|
|
1589
|
+
}
|
|
1590
|
+
|
|
1591
|
+
// Git contributor found in history
|
|
1592
|
+
message GitContributor {
|
|
1593
|
+
string name = 1;
|
|
1594
|
+
string email = 2;
|
|
1595
|
+
}
|
|
1596
|
+
|
|
1597
|
+
message SyncUsersRequest {
|
|
1598
|
+
string project_path = 1;
|
|
1599
|
+
bool dry_run = 2; // If true, don't create users, just show what would be created
|
|
1600
|
+
}
|
|
1601
|
+
|
|
1602
|
+
message SyncUsersResponse {
|
|
1603
|
+
bool success = 1;
|
|
1604
|
+
string error = 2;
|
|
1605
|
+
repeated string created = 3; // User IDs that were created
|
|
1606
|
+
repeated string skipped = 4; // Emails that were skipped (already exist)
|
|
1607
|
+
repeated string errors = 5; // Errors during creation
|
|
1608
|
+
repeated GitContributor would_create = 6; // For dry run: users that would be created
|
|
1609
|
+
repeated GitContributor would_skip = 7; // For dry run: users that would be skipped
|
|
1610
|
+
Manifest manifest = 8;
|
|
1611
|
+
}
|