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.
Files changed (40) hide show
  1. package/dist/commands/workspace/cleanup.d.ts +10 -0
  2. package/dist/commands/workspace/cleanup.d.ts.map +1 -0
  3. package/dist/commands/workspace/cleanup.js +31 -0
  4. package/dist/commands/workspace/cleanup.js.map +1 -0
  5. package/dist/commands/workspace/close.d.ts +16 -0
  6. package/dist/commands/workspace/close.d.ts.map +1 -0
  7. package/dist/commands/workspace/close.js +49 -0
  8. package/dist/commands/workspace/close.js.map +1 -0
  9. package/dist/commands/workspace/list.d.ts +15 -0
  10. package/dist/commands/workspace/list.d.ts.map +1 -0
  11. package/dist/commands/workspace/list.js +67 -0
  12. package/dist/commands/workspace/list.js.map +1 -0
  13. package/dist/commands/workspace/open.d.ts +19 -0
  14. package/dist/commands/workspace/open.d.ts.map +1 -0
  15. package/dist/commands/workspace/open.js +76 -0
  16. package/dist/commands/workspace/open.js.map +1 -0
  17. package/dist/daemon/daemon-cleanup-expired-workspaces.d.ts +6 -0
  18. package/dist/daemon/daemon-cleanup-expired-workspaces.d.ts.map +1 -0
  19. package/dist/daemon/daemon-cleanup-expired-workspaces.js +17 -0
  20. package/dist/daemon/daemon-cleanup-expired-workspaces.js.map +1 -0
  21. package/dist/daemon/daemon-close-temp-workspace.d.ts +6 -0
  22. package/dist/daemon/daemon-close-temp-workspace.d.ts.map +1 -0
  23. package/dist/daemon/daemon-close-temp-workspace.js +17 -0
  24. package/dist/daemon/daemon-close-temp-workspace.js.map +1 -0
  25. package/dist/daemon/daemon-list-temp-workspaces.d.ts +6 -0
  26. package/dist/daemon/daemon-list-temp-workspaces.d.ts.map +1 -0
  27. package/dist/daemon/daemon-list-temp-workspaces.js +17 -0
  28. package/dist/daemon/daemon-list-temp-workspaces.js.map +1 -0
  29. package/dist/daemon/daemon-open-in-temp-vscode.d.ts +6 -0
  30. package/dist/daemon/daemon-open-in-temp-vscode.d.ts.map +1 -0
  31. package/dist/daemon/daemon-open-in-temp-vscode.js +17 -0
  32. package/dist/daemon/daemon-open-in-temp-vscode.js.map +1 -0
  33. package/dist/daemon/load-proto.d.ts +5 -1
  34. package/dist/daemon/load-proto.d.ts.map +1 -1
  35. package/dist/daemon/load-proto.js.map +1 -1
  36. package/dist/daemon/types.d.ts +53 -0
  37. package/dist/daemon/types.d.ts.map +1 -1
  38. package/oclif.manifest.json +409 -233
  39. package/package.json +1 -1
  40. 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
+ }