centy 0.7.9 → 0.8.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/run.js +0 -24
- package/dist/commands/compact.d.ts.map +1 -1
- package/dist/commands/compact.js +11 -13
- package/dist/commands/compact.js.map +1 -1
- package/dist/commands/create.d.ts +8 -7
- package/dist/commands/create.d.ts.map +1 -1
- package/dist/commands/create.js +8 -33
- package/dist/commands/create.js.map +1 -1
- package/dist/commands/edit.d.ts +9 -0
- package/dist/commands/edit.d.ts.map +1 -0
- package/dist/commands/edit.js +17 -0
- package/dist/commands/edit.js.map +1 -0
- package/dist/commands/list/items.d.ts +21 -0
- package/dist/commands/list/items.d.ts.map +1 -0
- package/dist/commands/list/items.js +97 -0
- package/dist/commands/list/items.js.map +1 -0
- package/dist/commands/list.d.ts +1 -0
- package/dist/commands/list.d.ts.map +1 -1
- package/dist/commands/list.js +22 -47
- package/dist/commands/list.js.map +1 -1
- package/dist/commands/next.d.ts +18 -0
- package/dist/commands/next.d.ts.map +1 -0
- package/dist/commands/next.js +88 -0
- package/dist/commands/next.js.map +1 -0
- package/dist/commands/org/delete.d.ts.map +1 -1
- package/dist/commands/org/delete.js +1 -0
- package/dist/commands/org/delete.js.map +1 -1
- package/dist/commands/register/project.d.ts.map +1 -1
- package/dist/commands/register/project.js +1 -0
- package/dist/commands/register/project.js.map +1 -1
- package/dist/commands/update.d.ts +8 -7
- package/dist/commands/update.d.ts.map +1 -1
- package/dist/commands/update.js +9 -27
- package/dist/commands/update.js.map +1 -1
- package/dist/commands/workspace/list.d.ts.map +1 -1
- package/dist/commands/workspace/list.js +0 -1
- package/dist/commands/workspace/list.js.map +1 -1
- package/dist/commands/workspace/new.d.ts.map +1 -1
- package/dist/commands/workspace/new.js +0 -1
- package/dist/commands/workspace/new.js.map +1 -1
- package/dist/commands/workspace/open.d.ts.map +1 -1
- package/dist/commands/workspace/open.js +0 -3
- package/dist/commands/workspace/open.js.map +1 -1
- package/dist/daemon/daemon-duplicate-doc.d.ts +2 -2
- package/dist/daemon/daemon-duplicate-doc.d.ts.map +1 -1
- package/dist/daemon/daemon-duplicate-doc.js +4 -1
- package/dist/daemon/daemon-duplicate-doc.js.map +1 -1
- package/dist/daemon/daemon-duplicate-issue.d.ts +2 -2
- package/dist/daemon/daemon-duplicate-issue.d.ts.map +1 -1
- package/dist/daemon/daemon-duplicate-issue.js +4 -1
- package/dist/daemon/daemon-duplicate-issue.js.map +1 -1
- package/dist/daemon/daemon-get-doc.d.ts +2 -2
- package/dist/daemon/daemon-get-doc.d.ts.map +1 -1
- package/dist/daemon/daemon-get-doc.js +6 -3
- package/dist/daemon/daemon-get-doc.js.map +1 -1
- package/dist/daemon/daemon-get-docs-by-slug.d.ts +4 -2
- package/dist/daemon/daemon-get-docs-by-slug.d.ts.map +1 -1
- package/dist/daemon/daemon-get-docs-by-slug.js +4 -1
- package/dist/daemon/daemon-get-docs-by-slug.js.map +1 -1
- package/dist/daemon/daemon-get-issue-by-display-number.d.ts +5 -2
- package/dist/daemon/daemon-get-issue-by-display-number.d.ts.map +1 -1
- package/dist/daemon/daemon-get-issue-by-display-number.js +8 -3
- package/dist/daemon/daemon-get-issue-by-display-number.js.map +1 -1
- package/dist/daemon/daemon-get-issue.d.ts +2 -2
- package/dist/daemon/daemon-get-issue.d.ts.map +1 -1
- package/dist/daemon/daemon-get-issue.js +6 -3
- package/dist/daemon/daemon-get-issue.js.map +1 -1
- package/dist/daemon/daemon-get-issues-by-uuid.d.ts +4 -2
- package/dist/daemon/daemon-get-issues-by-uuid.d.ts.map +1 -1
- package/dist/daemon/daemon-get-issues-by-uuid.js +4 -1
- package/dist/daemon/daemon-get-issues-by-uuid.js.map +1 -1
- package/dist/daemon/daemon-list-docs.d.ts +2 -2
- package/dist/daemon/daemon-list-docs.d.ts.map +1 -1
- package/dist/daemon/daemon-list-docs.js +4 -1
- package/dist/daemon/daemon-list-docs.js.map +1 -1
- package/dist/daemon/daemon-list-issues.d.ts +2 -2
- package/dist/daemon/daemon-list-issues.d.ts.map +1 -1
- package/dist/daemon/daemon-list-issues.js +4 -1
- package/dist/daemon/daemon-list-issues.js.map +1 -1
- package/dist/daemon/daemon-list-items-globally.d.ts +7 -0
- package/dist/daemon/daemon-list-items-globally.d.ts.map +1 -0
- package/dist/daemon/daemon-list-items-globally.js +54 -0
- package/dist/daemon/daemon-list-items-globally.js.map +1 -0
- package/dist/daemon/daemon-move-doc.d.ts +2 -2
- package/dist/daemon/daemon-move-doc.d.ts.map +1 -1
- package/dist/daemon/daemon-move-doc.js +4 -1
- package/dist/daemon/daemon-move-doc.js.map +1 -1
- package/dist/daemon/daemon-move-issue.d.ts +2 -2
- package/dist/daemon/daemon-move-issue.d.ts.map +1 -1
- package/dist/daemon/daemon-move-issue.js +4 -1
- package/dist/daemon/daemon-move-issue.js.map +1 -1
- package/dist/daemon/daemon-update-doc.d.ts +2 -2
- package/dist/daemon/daemon-update-doc.d.ts.map +1 -1
- package/dist/daemon/daemon-update-doc.js +4 -1
- package/dist/daemon/daemon-update-doc.js.map +1 -1
- package/dist/daemon/daemon-update-issue.d.ts +2 -2
- package/dist/daemon/daemon-update-issue.d.ts.map +1 -1
- package/dist/daemon/daemon-update-issue.js +4 -1
- package/dist/daemon/daemon-update-issue.js.map +1 -1
- package/dist/daemon/generated/centy/v1/centy.d.ts +244 -547
- package/dist/daemon/generated/centy/v1/centy.d.ts.map +1 -1
- package/dist/daemon/generated/centy/v1/centy.js +0 -19
- package/dist/daemon/generated/centy/v1/centy.js.map +1 -1
- package/dist/daemon/generated/centy/v1/generic_item.d.ts +25 -99
- package/dist/daemon/generated/centy/v1/generic_item.d.ts.map +1 -1
- package/dist/daemon/generated/centy/v1/generic_item.js +1 -13
- package/dist/daemon/generated/centy/v1/generic_item.js.map +1 -1
- package/dist/daemon/grpc-client-data.d.ts +2 -11
- package/dist/daemon/grpc-client-data.d.ts.map +1 -1
- package/dist/daemon/grpc-client-extended.d.ts +1 -3
- package/dist/daemon/grpc-client-extended.d.ts.map +1 -1
- package/dist/daemon/grpc-client-init.d.ts +2 -12
- package/dist/daemon/grpc-client-init.d.ts.map +1 -1
- package/dist/daemon/grpc-client-items.d.ts +2 -2
- package/dist/daemon/grpc-client-items.d.ts.map +1 -1
- package/dist/daemon/types/feature.d.ts +2 -2
- package/dist/daemon/types/feature.d.ts.map +1 -1
- package/dist/flags/create-flags.d.ts +11 -0
- package/dist/flags/create-flags.d.ts.map +1 -0
- package/dist/flags/create-flags.js +38 -0
- package/dist/flags/create-flags.js.map +1 -0
- package/dist/flags/update-flags.d.ts +11 -0
- package/dist/flags/update-flags.d.ts.map +1 -0
- package/dist/flags/update-flags.js +31 -0
- package/dist/flags/update-flags.js.map +1 -0
- package/dist/lib/close/close-issue.d.ts.map +1 -1
- package/dist/lib/close/close-issue.js +5 -4
- package/dist/lib/close/close-issue.js.map +1 -1
- package/dist/lib/close/find-entity.d.ts.map +1 -1
- package/dist/lib/close/find-entity.js +1 -1
- package/dist/lib/close/find-entity.js.map +1 -1
- package/dist/lib/compact/format-dry-run.d.ts +2 -2
- package/dist/lib/compact/format-dry-run.d.ts.map +1 -1
- package/dist/lib/compact/format-dry-run.js +2 -1
- package/dist/lib/compact/format-dry-run.js.map +1 -1
- package/dist/lib/create-item-type/features.d.ts.map +1 -1
- package/dist/lib/create-item-type/features.js +2 -0
- package/dist/lib/create-item-type/features.js.map +1 -1
- package/dist/lib/get-doc/cross-project-hint.js +2 -2
- package/dist/lib/get-doc/cross-project-hint.js.map +1 -1
- package/dist/lib/get-doc/format-doc-output.d.ts +2 -2
- package/dist/lib/get-doc/format-doc-output.d.ts.map +1 -1
- package/dist/lib/get-doc/format-doc-output.js +2 -2
- package/dist/lib/get-doc/format-doc-output.js.map +1 -1
- package/dist/lib/get-doc/handle-global-search.d.ts +2 -2
- package/dist/lib/get-doc/handle-global-search.d.ts.map +1 -1
- package/dist/lib/get-doc/handle-global-search.js +6 -6
- package/dist/lib/get-doc/handle-global-search.js.map +1 -1
- package/dist/lib/get-doc/handle-not-initialized.js +1 -1
- package/dist/lib/get-doc/handle-not-initialized.js.map +1 -1
- package/dist/lib/get-issue/cross-project-hint.js +2 -2
- package/dist/lib/get-issue/cross-project-hint.js.map +1 -1
- package/dist/lib/get-issue/format-issue-output.d.ts +2 -2
- package/dist/lib/get-issue/format-issue-output.d.ts.map +1 -1
- package/dist/lib/get-issue/format-issue-output.js +4 -4
- package/dist/lib/get-issue/format-issue-output.js.map +1 -1
- package/dist/lib/get-issue/handle-global-search.d.ts +2 -2
- package/dist/lib/get-issue/handle-global-search.d.ts.map +1 -1
- package/dist/lib/get-issue/handle-global-search.js +7 -7
- package/dist/lib/get-issue/handle-global-search.js.map +1 -1
- package/dist/lib/get-issue/handle-not-initialized.js +1 -1
- package/dist/lib/get-issue/handle-not-initialized.js.map +1 -1
- package/dist/lib/init/config-builder.d.ts.map +1 -1
- package/dist/lib/init/config-builder.js +1 -4
- package/dist/lib/init/config-builder.js.map +1 -1
- package/dist/lib/list-items/format-item-line.d.ts +6 -0
- package/dist/lib/list-items/format-item-line.d.ts.map +1 -0
- package/dist/lib/list-items/format-item-line.js +13 -0
- package/dist/lib/list-items/format-item-line.js.map +1 -0
- package/dist/lib/list-items/handle-global-list.d.ts +2 -0
- package/dist/lib/list-items/handle-global-list.d.ts.map +1 -0
- package/dist/lib/list-items/handle-global-list.js +44 -0
- package/dist/lib/list-items/handle-global-list.js.map +1 -0
- package/dist/lib/list-items/handle-project-list.d.ts +2 -0
- package/dist/lib/list-items/handle-project-list.d.ts.map +1 -0
- package/dist/lib/list-items/handle-project-list.js +44 -0
- package/dist/lib/list-items/handle-project-list.js.map +1 -0
- package/dist/lib/show/format-results.d.ts +2 -2
- package/dist/lib/show/format-results.d.ts.map +1 -1
- package/dist/lib/show/format-results.js +5 -5
- package/dist/lib/show/format-results.js.map +1 -1
- package/dist/lib/show/search-entities.d.ts +2 -2
- package/dist/lib/show/search-entities.d.ts.map +1 -1
- package/dist/utils/apply-link-flags.d.ts +10 -0
- package/dist/utils/apply-link-flags.d.ts.map +1 -0
- package/dist/utils/apply-link-flags.js +37 -0
- package/dist/utils/apply-link-flags.js.map +1 -0
- package/oclif.manifest.json +323 -76
- package/package.json +1 -1
- package/proto/.husky/pre-commit +1 -0
- package/proto/README.md +19 -0
- package/proto/centy/v1/centy.proto +275 -562
- package/proto/centy/v1/generic_item.proto +26 -88
- package/proto/cspell.json +5 -0
- package/proto/package.json +11 -0
- package/proto/pnpm-lock.yaml +833 -0
- package/dist/daemon/daemon-get-next-issue-number.d.ts +0 -6
- package/dist/daemon/daemon-get-next-issue-number.d.ts.map +0 -1
- package/dist/daemon/daemon-get-next-issue-number.js +0 -9
- package/dist/daemon/daemon-get-next-issue-number.js.map +0 -1
|
@@ -15,45 +15,6 @@ service CentyDaemon {
|
|
|
15
15
|
// Execute reconciliation with user decisions
|
|
16
16
|
rpc ExecuteReconciliation(ExecuteReconciliationRequest) returns (InitResponse);
|
|
17
17
|
|
|
18
|
-
// Deprecated: Use CreateItem with item_type="issues" instead.
|
|
19
|
-
rpc CreateIssue(CreateIssueRequest) returns (CreateIssueResponse);
|
|
20
|
-
|
|
21
|
-
// Deprecated: Use GetItem with item_type="issues" instead.
|
|
22
|
-
rpc GetIssue(GetIssueRequest) returns (GetIssueResponse);
|
|
23
|
-
|
|
24
|
-
// Get a single issue by display number (human-readable number like 1, 2, 3)
|
|
25
|
-
rpc GetIssueByDisplayNumber(GetIssueByDisplayNumberRequest) returns (GetIssueResponse);
|
|
26
|
-
|
|
27
|
-
// Get issues by UUID across all tracked projects (global search)
|
|
28
|
-
rpc GetIssuesByUuid(GetIssuesByUuidRequest) returns (GetIssuesByUuidResponse);
|
|
29
|
-
|
|
30
|
-
// Deprecated: Use ListItems with item_type="issues" instead.
|
|
31
|
-
rpc ListIssues(ListIssuesRequest) returns (ListIssuesResponse);
|
|
32
|
-
|
|
33
|
-
// Advanced issue search with query language
|
|
34
|
-
rpc AdvancedSearch(AdvancedSearchRequest) returns (AdvancedSearchResponse);
|
|
35
|
-
|
|
36
|
-
// Deprecated: Use UpdateItem with item_type="issues" instead.
|
|
37
|
-
rpc UpdateIssue(UpdateIssueRequest) returns (UpdateIssueResponse);
|
|
38
|
-
|
|
39
|
-
// Deprecated: Use DeleteItem with item_type="issues" instead.
|
|
40
|
-
rpc DeleteIssue(DeleteIssueRequest) returns (DeleteIssueResponse);
|
|
41
|
-
|
|
42
|
-
// Deprecated: Use SoftDeleteItem with item_type="issues" instead.
|
|
43
|
-
rpc SoftDeleteIssue(SoftDeleteIssueRequest) returns (SoftDeleteIssueResponse);
|
|
44
|
-
|
|
45
|
-
// Deprecated: Use RestoreItem with item_type="issues" instead.
|
|
46
|
-
rpc RestoreIssue(RestoreIssueRequest) returns (RestoreIssueResponse);
|
|
47
|
-
|
|
48
|
-
// Move an issue to another project
|
|
49
|
-
rpc MoveIssue(MoveIssueRequest) returns (MoveIssueResponse);
|
|
50
|
-
|
|
51
|
-
// Duplicate an issue (same project or different project)
|
|
52
|
-
rpc DuplicateIssue(DuplicateIssueRequest) returns (DuplicateIssueResponse);
|
|
53
|
-
|
|
54
|
-
// Get the next issue number
|
|
55
|
-
rpc GetNextIssueNumber(GetNextIssueNumberRequest) returns (GetNextIssueNumberResponse);
|
|
56
|
-
|
|
57
18
|
// Read the manifest
|
|
58
19
|
rpc GetManifest(GetManifestRequest) returns (GetManifestResponse);
|
|
59
20
|
|
|
@@ -66,38 +27,6 @@ service CentyDaemon {
|
|
|
66
27
|
// Check if centy is initialized in a directory
|
|
67
28
|
rpc IsInitialized(IsInitializedRequest) returns (IsInitializedResponse);
|
|
68
29
|
|
|
69
|
-
// ============ Doc RPCs ============
|
|
70
|
-
|
|
71
|
-
// Deprecated: Use CreateItem with item_type="docs" instead.
|
|
72
|
-
rpc CreateDoc(CreateDocRequest) returns (CreateDocResponse);
|
|
73
|
-
|
|
74
|
-
// Deprecated: Use GetItem with item_type="docs" instead.
|
|
75
|
-
rpc GetDoc(GetDocRequest) returns (GetDocResponse);
|
|
76
|
-
|
|
77
|
-
// Get docs by slug across all tracked projects (global search)
|
|
78
|
-
rpc GetDocsBySlug(GetDocsBySlugRequest) returns (GetDocsBySlugResponse);
|
|
79
|
-
|
|
80
|
-
// Deprecated: Use ListItems with item_type="docs" instead.
|
|
81
|
-
rpc ListDocs(ListDocsRequest) returns (ListDocsResponse);
|
|
82
|
-
|
|
83
|
-
// Deprecated: Use UpdateItem with item_type="docs" instead.
|
|
84
|
-
rpc UpdateDoc(UpdateDocRequest) returns (UpdateDocResponse);
|
|
85
|
-
|
|
86
|
-
// Deprecated: Use DeleteItem with item_type="docs" instead.
|
|
87
|
-
rpc DeleteDoc(DeleteDocRequest) returns (DeleteDocResponse);
|
|
88
|
-
|
|
89
|
-
// Deprecated: Use SoftDeleteItem with item_type="docs" instead.
|
|
90
|
-
rpc SoftDeleteDoc(SoftDeleteDocRequest) returns (SoftDeleteDocResponse);
|
|
91
|
-
|
|
92
|
-
// Deprecated: Use RestoreItem with item_type="docs" instead.
|
|
93
|
-
rpc RestoreDoc(RestoreDocRequest) returns (RestoreDocResponse);
|
|
94
|
-
|
|
95
|
-
// Move a doc to another project
|
|
96
|
-
rpc MoveDoc(MoveDocRequest) returns (MoveDocResponse);
|
|
97
|
-
|
|
98
|
-
// Duplicate a doc (same project or different project)
|
|
99
|
-
rpc DuplicateDoc(DuplicateDocRequest) returns (DuplicateDocResponse);
|
|
100
|
-
|
|
101
30
|
// ============ Asset RPCs ============
|
|
102
31
|
|
|
103
32
|
// Add an asset to an issue or as a shared asset
|
|
@@ -161,6 +90,32 @@ service CentyDaemon {
|
|
|
161
90
|
// Delete an organization
|
|
162
91
|
rpc DeleteOrganization(DeleteOrganizationRequest) returns (DeleteOrganizationResponse);
|
|
163
92
|
|
|
93
|
+
// ============ Organization Issue RPCs ============
|
|
94
|
+
|
|
95
|
+
// Create an organization-level issue
|
|
96
|
+
rpc CreateOrgIssue(CreateOrgIssueRequest) returns (CreateOrgIssueResponse);
|
|
97
|
+
|
|
98
|
+
// Get an org issue by UUID
|
|
99
|
+
rpc GetOrgIssue(GetOrgIssueRequest) returns (OrgIssue);
|
|
100
|
+
|
|
101
|
+
// Get an org issue by display number
|
|
102
|
+
rpc GetOrgIssueByDisplayNumber(GetOrgIssueByDisplayNumberRequest) returns (OrgIssue);
|
|
103
|
+
|
|
104
|
+
// List org issues with optional filters
|
|
105
|
+
rpc ListOrgIssues(ListOrgIssuesRequest) returns (ListOrgIssuesResponse);
|
|
106
|
+
|
|
107
|
+
// Update an org issue
|
|
108
|
+
rpc UpdateOrgIssue(UpdateOrgIssueRequest) returns (UpdateOrgIssueResponse);
|
|
109
|
+
|
|
110
|
+
// Delete an org issue
|
|
111
|
+
rpc DeleteOrgIssue(DeleteOrgIssueRequest) returns (DeleteOrgIssueResponse);
|
|
112
|
+
|
|
113
|
+
// Get org-level config
|
|
114
|
+
rpc GetOrgConfig(GetOrgConfigRequest) returns (OrgConfig);
|
|
115
|
+
|
|
116
|
+
// Update org-level config
|
|
117
|
+
rpc UpdateOrgConfig(UpdateOrgConfigRequest) returns (UpdateOrgConfigResponse);
|
|
118
|
+
|
|
164
119
|
// ============ Version RPCs ============
|
|
165
120
|
|
|
166
121
|
// Get daemon version info
|
|
@@ -191,9 +146,6 @@ service CentyDaemon {
|
|
|
191
146
|
// Open a project in a temporary terminal workspace (deprecated: use OpenInTempWorkspace)
|
|
192
147
|
rpc OpenInTempTerminal(OpenInTempWorkspaceRequest) returns (OpenInTempWorkspaceResponse);
|
|
193
148
|
|
|
194
|
-
// Open an agent in a terminal for working on an issue
|
|
195
|
-
rpc OpenAgentInTerminal(OpenAgentInTerminalRequest) returns (OpenAgentInTerminalResponse);
|
|
196
|
-
|
|
197
149
|
// Open a standalone workspace in VS Code (deprecated: use OpenStandaloneWorkspace)
|
|
198
150
|
rpc OpenStandaloneWorkspaceVscode(OpenStandaloneWorkspaceRequest) returns (OpenStandaloneWorkspaceResponse);
|
|
199
151
|
|
|
@@ -274,6 +226,14 @@ service CentyDaemon {
|
|
|
274
226
|
// Manually trigger a sync push
|
|
275
227
|
rpc SyncPush(SyncPushRequest) returns (SyncPushResponse);
|
|
276
228
|
|
|
229
|
+
// ============ Item Type RPCs ============
|
|
230
|
+
|
|
231
|
+
// Create a new item type dynamically
|
|
232
|
+
rpc CreateItemType(CreateItemTypeRequest) returns (CreateItemTypeResponse);
|
|
233
|
+
|
|
234
|
+
// List all item types for a project
|
|
235
|
+
rpc ListItemTypes(ListItemTypesRequest) returns (ListItemTypesResponse);
|
|
236
|
+
|
|
277
237
|
// ============ Generic Item RPCs ============
|
|
278
238
|
|
|
279
239
|
// Create a new item of any type
|
|
@@ -303,11 +263,14 @@ service CentyDaemon {
|
|
|
303
263
|
// Move an item to another project
|
|
304
264
|
rpc MoveItem(MoveItemRequest) returns (MoveItemResponse);
|
|
305
265
|
|
|
306
|
-
//
|
|
307
|
-
rpc
|
|
266
|
+
// Archive an item by moving it to the archived folder and recording its original type
|
|
267
|
+
rpc ArchiveItem(ArchiveItemRequest) returns (ArchiveItemResponse);
|
|
308
268
|
|
|
309
|
-
//
|
|
310
|
-
rpc
|
|
269
|
+
// Unarchive an item by moving it back to its original folder
|
|
270
|
+
rpc UnarchiveItem(UnarchiveItemRequest) returns (UnarchiveItemResponse);
|
|
271
|
+
|
|
272
|
+
// Search for an item by ID across all tracked projects
|
|
273
|
+
rpc SearchItems(SearchItemsRequest) returns (SearchItemsResponse);
|
|
311
274
|
}
|
|
312
275
|
|
|
313
276
|
// ============ Init Messages ============
|
|
@@ -321,6 +284,15 @@ message InitRequest {
|
|
|
321
284
|
|
|
322
285
|
// Decisions for files that need user input (only used when force=false)
|
|
323
286
|
ReconciliationDecisions decisions = 3;
|
|
287
|
+
|
|
288
|
+
// Optional configuration to apply during initialization.
|
|
289
|
+
// Fields set here will be written to .centy/config.json.
|
|
290
|
+
// Unset/zero-value fields fall back to project defaults.
|
|
291
|
+
Config init_config = 4;
|
|
292
|
+
|
|
293
|
+
// Optional project title to set during initialization (stored in .centy/project.json,
|
|
294
|
+
// visible to all team members). Empty string means no title is set.
|
|
295
|
+
string title = 5;
|
|
324
296
|
}
|
|
325
297
|
|
|
326
298
|
message InitResponse {
|
|
@@ -380,261 +352,6 @@ message ReconciliationDecisions {
|
|
|
380
352
|
repeated string reset = 2;
|
|
381
353
|
}
|
|
382
354
|
|
|
383
|
-
// ============ Issue Messages ============
|
|
384
|
-
|
|
385
|
-
message CreateIssueRequest {
|
|
386
|
-
string project_path = 1;
|
|
387
|
-
string title = 2;
|
|
388
|
-
string description = 3;
|
|
389
|
-
int32 priority = 4; // 1 = highest priority, 0 = use default
|
|
390
|
-
string status = 5; // default: "open"
|
|
391
|
-
map<string, string> custom_fields = 6;
|
|
392
|
-
string template = 7; // Optional template name (without .md extension)
|
|
393
|
-
bool draft = 8; // Create as draft (default: false)
|
|
394
|
-
bool is_org_issue = 9; // Create as organization-wide issue (syncs to all org projects)
|
|
395
|
-
}
|
|
396
|
-
|
|
397
|
-
message CreateIssueResponse {
|
|
398
|
-
bool success = 1;
|
|
399
|
-
string error = 2;
|
|
400
|
-
|
|
401
|
-
// The created issue ID (UUID)
|
|
402
|
-
string id = 3;
|
|
403
|
-
|
|
404
|
-
// Human-readable display number (1, 2, 3...)
|
|
405
|
-
uint32 display_number = 4;
|
|
406
|
-
|
|
407
|
-
// Legacy: same as id (for backward compatibility)
|
|
408
|
-
string issue_number = 5;
|
|
409
|
-
|
|
410
|
-
// Paths to created files
|
|
411
|
-
repeated string created_files = 6;
|
|
412
|
-
|
|
413
|
-
// The updated manifest
|
|
414
|
-
Manifest manifest = 7;
|
|
415
|
-
|
|
416
|
-
// Org-level display number (only for org issues, 0 if not an org issue)
|
|
417
|
-
uint32 org_display_number = 8;
|
|
418
|
-
|
|
419
|
-
// Results from syncing to other org projects (org issues only)
|
|
420
|
-
repeated OrgDocSyncResult sync_results = 9;
|
|
421
|
-
}
|
|
422
|
-
|
|
423
|
-
message GetNextIssueNumberRequest {
|
|
424
|
-
string project_path = 1;
|
|
425
|
-
}
|
|
426
|
-
|
|
427
|
-
message GetNextIssueNumberResponse {
|
|
428
|
-
string issue_number = 1;
|
|
429
|
-
bool success = 2;
|
|
430
|
-
string error = 3;
|
|
431
|
-
}
|
|
432
|
-
|
|
433
|
-
// Issue represents a full issue with all its data
|
|
434
|
-
message Issue {
|
|
435
|
-
// UUID-based issue ID (folder name)
|
|
436
|
-
string id = 1;
|
|
437
|
-
|
|
438
|
-
// Human-readable display number (1, 2, 3...)
|
|
439
|
-
uint32 display_number = 2;
|
|
440
|
-
|
|
441
|
-
// Legacy: same as id (for backward compatibility)
|
|
442
|
-
string issue_number = 3;
|
|
443
|
-
|
|
444
|
-
string title = 4;
|
|
445
|
-
string description = 5;
|
|
446
|
-
IssueMetadata metadata = 6;
|
|
447
|
-
}
|
|
448
|
-
|
|
449
|
-
message IssueMetadata {
|
|
450
|
-
// Human-readable display number (1, 2, 3...)
|
|
451
|
-
uint32 display_number = 1;
|
|
452
|
-
string status = 2; // e.g., "open", "in-progress", "closed"
|
|
453
|
-
int32 priority = 3; // 1 = highest priority, N = lowest
|
|
454
|
-
string created_at = 4; // ISO timestamp
|
|
455
|
-
string updated_at = 5; // ISO timestamp
|
|
456
|
-
map<string, string> custom_fields = 6;
|
|
457
|
-
string priority_label = 7; // Human-readable label (e.g., "high", "P1")
|
|
458
|
-
reserved 8, 9; // Removed: compacted, compacted_at (moved to CLI)
|
|
459
|
-
bool draft = 10; // Whether this issue is a draft
|
|
460
|
-
string deleted_at = 11; // ISO timestamp when soft-deleted (empty if not deleted)
|
|
461
|
-
bool is_org_issue = 12; // Whether this is an organization-level issue
|
|
462
|
-
string org_slug = 13; // Organization slug (empty if not org issue)
|
|
463
|
-
uint32 org_display_number = 14; // Org-scoped display number (0 if not org issue)
|
|
464
|
-
}
|
|
465
|
-
|
|
466
|
-
message GetIssueRequest {
|
|
467
|
-
string project_path = 1;
|
|
468
|
-
string issue_id = 2; // UUID or legacy issue number (e.g., "0001")
|
|
469
|
-
}
|
|
470
|
-
|
|
471
|
-
message GetIssueByDisplayNumberRequest {
|
|
472
|
-
string project_path = 1;
|
|
473
|
-
uint32 display_number = 2; // Human-readable number (1, 2, 3...)
|
|
474
|
-
}
|
|
475
|
-
|
|
476
|
-
// Wrapper response for GetIssue and GetIssueByDisplayNumber RPCs
|
|
477
|
-
message GetIssueResponse {
|
|
478
|
-
bool success = 1;
|
|
479
|
-
string error = 2;
|
|
480
|
-
Issue issue = 3;
|
|
481
|
-
}
|
|
482
|
-
|
|
483
|
-
// ============ Global Issue Search Messages ============
|
|
484
|
-
|
|
485
|
-
message GetIssuesByUuidRequest {
|
|
486
|
-
string uuid = 1; // The UUID to search for (must be valid UUID format)
|
|
487
|
-
}
|
|
488
|
-
|
|
489
|
-
// An issue with its source project path
|
|
490
|
-
message IssueWithProject {
|
|
491
|
-
Issue issue = 1;
|
|
492
|
-
string project_path = 2; // Absolute path to the project where this issue was found
|
|
493
|
-
string project_name = 3; // Human-readable project name (directory name)
|
|
494
|
-
string display_path = 4; // Human-readable path with ~/ for home dir (use for display only)
|
|
495
|
-
}
|
|
496
|
-
|
|
497
|
-
message GetIssuesByUuidResponse {
|
|
498
|
-
repeated IssueWithProject issues = 1;
|
|
499
|
-
int32 total_count = 2;
|
|
500
|
-
repeated string errors = 3; // Non-fatal errors (e.g., projects that couldn't be accessed)
|
|
501
|
-
bool success = 4;
|
|
502
|
-
string error = 5;
|
|
503
|
-
}
|
|
504
|
-
|
|
505
|
-
message ListIssuesRequest {
|
|
506
|
-
string project_path = 1;
|
|
507
|
-
|
|
508
|
-
// Optional filters
|
|
509
|
-
string status = 2; // Filter by status (empty = all)
|
|
510
|
-
int32 priority = 3; // Filter by priority (0 = all)
|
|
511
|
-
optional bool draft = 4; // Filter by draft status (absent = all, true = drafts only, false = non-drafts only)
|
|
512
|
-
bool include_deleted = 5; // Include soft-deleted issues (default: false)
|
|
513
|
-
}
|
|
514
|
-
|
|
515
|
-
message ListIssuesResponse {
|
|
516
|
-
repeated Issue issues = 1;
|
|
517
|
-
int32 total_count = 2;
|
|
518
|
-
bool success = 3;
|
|
519
|
-
string error = 4;
|
|
520
|
-
}
|
|
521
|
-
|
|
522
|
-
// Advanced search request
|
|
523
|
-
message AdvancedSearchRequest {
|
|
524
|
-
string query = 1; // Query string (e.g., "status:open AND priority:1")
|
|
525
|
-
string sort_by = 2; // Field to sort by (e.g., "createdAt", "priority")
|
|
526
|
-
bool sort_descending = 3; // Sort order (true = descending)
|
|
527
|
-
bool multi_project = 4; // Search across all tracked projects
|
|
528
|
-
string project_path = 5; // Project path (required if multi_project is false)
|
|
529
|
-
}
|
|
530
|
-
|
|
531
|
-
// Search result containing issue and project info
|
|
532
|
-
message SearchResultIssue {
|
|
533
|
-
Issue issue = 1;
|
|
534
|
-
string project_path = 2;
|
|
535
|
-
string project_name = 3;
|
|
536
|
-
string display_path = 4;
|
|
537
|
-
}
|
|
538
|
-
|
|
539
|
-
// Advanced search response
|
|
540
|
-
message AdvancedSearchResponse {
|
|
541
|
-
bool success = 1;
|
|
542
|
-
string error = 2;
|
|
543
|
-
repeated SearchResultIssue results = 3;
|
|
544
|
-
int32 total_count = 4;
|
|
545
|
-
string parsed_query = 5; // Debug: the parsed query representation
|
|
546
|
-
}
|
|
547
|
-
|
|
548
|
-
message UpdateIssueRequest {
|
|
549
|
-
string project_path = 1;
|
|
550
|
-
string issue_id = 2; // UUID or legacy issue number
|
|
551
|
-
|
|
552
|
-
// Fields to update (empty string = don't update, 0 = don't update priority)
|
|
553
|
-
string title = 3;
|
|
554
|
-
string description = 4;
|
|
555
|
-
string status = 5;
|
|
556
|
-
int32 priority = 6; // 0 = don't update, otherwise 1-N
|
|
557
|
-
map<string, string> custom_fields = 7;
|
|
558
|
-
optional bool draft = 8; // Update draft status (absent = don't update)
|
|
559
|
-
}
|
|
560
|
-
|
|
561
|
-
message UpdateIssueResponse {
|
|
562
|
-
bool success = 1;
|
|
563
|
-
string error = 2;
|
|
564
|
-
Issue issue = 3; // The updated issue
|
|
565
|
-
Manifest manifest = 4;
|
|
566
|
-
repeated OrgDocSyncResult sync_results = 5; // Results from syncing to other org projects (org issues only)
|
|
567
|
-
}
|
|
568
|
-
|
|
569
|
-
message DeleteIssueRequest {
|
|
570
|
-
string project_path = 1;
|
|
571
|
-
string issue_id = 2; // UUID or legacy issue number
|
|
572
|
-
}
|
|
573
|
-
|
|
574
|
-
message DeleteIssueResponse {
|
|
575
|
-
bool success = 1;
|
|
576
|
-
string error = 2;
|
|
577
|
-
Manifest manifest = 3; // Updated manifest after deletion
|
|
578
|
-
}
|
|
579
|
-
|
|
580
|
-
// Soft-delete an issue (set deleted_at timestamp)
|
|
581
|
-
message SoftDeleteIssueRequest {
|
|
582
|
-
string project_path = 1;
|
|
583
|
-
string issue_id = 2; // UUID or legacy issue number
|
|
584
|
-
}
|
|
585
|
-
|
|
586
|
-
message SoftDeleteIssueResponse {
|
|
587
|
-
bool success = 1;
|
|
588
|
-
string error = 2;
|
|
589
|
-
Issue issue = 3; // The soft-deleted issue (with deleted_at set)
|
|
590
|
-
Manifest manifest = 4; // Updated manifest
|
|
591
|
-
}
|
|
592
|
-
|
|
593
|
-
// Restore a soft-deleted issue (clear deleted_at timestamp)
|
|
594
|
-
message RestoreIssueRequest {
|
|
595
|
-
string project_path = 1;
|
|
596
|
-
string issue_id = 2; // UUID or legacy issue number
|
|
597
|
-
}
|
|
598
|
-
|
|
599
|
-
message RestoreIssueResponse {
|
|
600
|
-
bool success = 1;
|
|
601
|
-
string error = 2;
|
|
602
|
-
Issue issue = 3; // The restored issue (with deleted_at cleared)
|
|
603
|
-
Manifest manifest = 4; // Updated manifest
|
|
604
|
-
}
|
|
605
|
-
|
|
606
|
-
// ============ Issue Move/Duplicate Messages ============
|
|
607
|
-
|
|
608
|
-
message MoveIssueRequest {
|
|
609
|
-
string source_project_path = 1; // Project containing the issue
|
|
610
|
-
string issue_id = 2; // UUID of the issue to move
|
|
611
|
-
string target_project_path = 3; // Target project path
|
|
612
|
-
}
|
|
613
|
-
|
|
614
|
-
message MoveIssueResponse {
|
|
615
|
-
bool success = 1;
|
|
616
|
-
string error = 2;
|
|
617
|
-
Issue issue = 3; // The moved issue (same UUID, new display_number)
|
|
618
|
-
uint32 old_display_number = 4; // Original display number for reference
|
|
619
|
-
Manifest source_manifest = 5; // Updated source project manifest
|
|
620
|
-
Manifest target_manifest = 6; // Updated target project manifest
|
|
621
|
-
}
|
|
622
|
-
|
|
623
|
-
message DuplicateIssueRequest {
|
|
624
|
-
string source_project_path = 1; // Project containing the original issue
|
|
625
|
-
string issue_id = 2; // UUID of the issue to duplicate
|
|
626
|
-
string target_project_path = 3; // Target project (can be same as source)
|
|
627
|
-
string new_title = 4; // Optional: override title (default: "Copy of {original}")
|
|
628
|
-
}
|
|
629
|
-
|
|
630
|
-
message DuplicateIssueResponse {
|
|
631
|
-
bool success = 1;
|
|
632
|
-
string error = 2;
|
|
633
|
-
Issue issue = 3; // The new duplicate issue (new UUID, new display_number)
|
|
634
|
-
string original_issue_id = 4; // UUID of the original issue
|
|
635
|
-
Manifest manifest = 5; // Updated target project manifest
|
|
636
|
-
}
|
|
637
|
-
|
|
638
355
|
// ============ Manifest Messages ============
|
|
639
356
|
|
|
640
357
|
message GetManifestRequest {
|
|
@@ -648,12 +365,7 @@ message GetManifestResponse {
|
|
|
648
365
|
Manifest manifest = 3;
|
|
649
366
|
}
|
|
650
367
|
|
|
651
|
-
|
|
652
|
-
int32 schema_version = 1;
|
|
653
|
-
string centy_version = 2;
|
|
654
|
-
string created_at = 3;
|
|
655
|
-
string updated_at = 4;
|
|
656
|
-
}
|
|
368
|
+
// Manifest is defined in generic_item.proto (shared across both files)
|
|
657
369
|
|
|
658
370
|
enum FileType {
|
|
659
371
|
FILE_TYPE_UNSPECIFIED = 0;
|
|
@@ -685,7 +397,7 @@ message Config {
|
|
|
685
397
|
repeated CustomFieldDefinition custom_fields = 1;
|
|
686
398
|
map<string, string> defaults = 2;
|
|
687
399
|
int32 priority_levels = 3; // Number of priority levels (default: 3)
|
|
688
|
-
|
|
400
|
+
reserved 4; // Previously: repeated string allowed_states (moved to per-item-type config.yaml)
|
|
689
401
|
reserved 5; // Previously: string default_state (moved to per-item-type config.yaml)
|
|
690
402
|
string version = 6; // Project version (semver, empty = daemon default)
|
|
691
403
|
map<string, string> state_colors = 7; // State name → hex color (e.g., "open" → "#10b981")
|
|
@@ -748,184 +460,6 @@ message IsInitializedResponse {
|
|
|
748
460
|
string centy_path = 2; // Full path to .centy folder if initialized
|
|
749
461
|
}
|
|
750
462
|
|
|
751
|
-
// ============ Doc Messages ============
|
|
752
|
-
|
|
753
|
-
message CreateDocRequest {
|
|
754
|
-
string project_path = 1;
|
|
755
|
-
string title = 2; // Doc title (used to generate slug)
|
|
756
|
-
string content = 3; // Markdown content
|
|
757
|
-
string slug = 4; // Optional custom slug (auto-generated from title if empty)
|
|
758
|
-
string template = 5; // Optional template name (without .md extension)
|
|
759
|
-
bool is_org_doc = 6; // Create as organization-wide doc (syncs to all org projects)
|
|
760
|
-
}
|
|
761
|
-
|
|
762
|
-
// Result of syncing an org doc to a project
|
|
763
|
-
message OrgDocSyncResult {
|
|
764
|
-
string project_path = 1; // Path of target project
|
|
765
|
-
bool success = 2; // Whether sync succeeded
|
|
766
|
-
string error = 3; // Error message if failed
|
|
767
|
-
}
|
|
768
|
-
|
|
769
|
-
message CreateDocResponse {
|
|
770
|
-
bool success = 1;
|
|
771
|
-
string error = 2;
|
|
772
|
-
string slug = 3; // The created doc slug
|
|
773
|
-
string created_file = 4; // Path to created file
|
|
774
|
-
Manifest manifest = 5;
|
|
775
|
-
repeated OrgDocSyncResult sync_results = 6; // Results from syncing to other org projects
|
|
776
|
-
}
|
|
777
|
-
|
|
778
|
-
message GetDocRequest {
|
|
779
|
-
string project_path = 1;
|
|
780
|
-
string slug = 2; // e.g., "getting-started"
|
|
781
|
-
}
|
|
782
|
-
|
|
783
|
-
// Wrapper response for GetDoc RPC
|
|
784
|
-
message GetDocResponse {
|
|
785
|
-
bool success = 1;
|
|
786
|
-
string error = 2;
|
|
787
|
-
Doc doc = 3;
|
|
788
|
-
}
|
|
789
|
-
|
|
790
|
-
// ============ Global Doc Search Messages ============
|
|
791
|
-
|
|
792
|
-
message GetDocsBySlugRequest {
|
|
793
|
-
string slug = 1; // The slug to search for (kebab-case)
|
|
794
|
-
}
|
|
795
|
-
|
|
796
|
-
// A doc with its source project path
|
|
797
|
-
message DocWithProject {
|
|
798
|
-
Doc doc = 1;
|
|
799
|
-
string project_path = 2; // Absolute path to the project where this doc was found
|
|
800
|
-
string project_name = 3; // Human-readable project name (directory name)
|
|
801
|
-
string display_path = 4; // Human-readable path with ~/ for home dir (use for display only)
|
|
802
|
-
}
|
|
803
|
-
|
|
804
|
-
message GetDocsBySlugResponse {
|
|
805
|
-
repeated DocWithProject docs = 1;
|
|
806
|
-
int32 total_count = 2;
|
|
807
|
-
repeated string errors = 3; // Non-fatal errors (e.g., projects that couldn't be accessed)
|
|
808
|
-
bool success = 4;
|
|
809
|
-
string error = 5;
|
|
810
|
-
}
|
|
811
|
-
|
|
812
|
-
message ListDocsRequest {
|
|
813
|
-
string project_path = 1;
|
|
814
|
-
bool include_deleted = 2; // Include soft-deleted docs (default: false)
|
|
815
|
-
}
|
|
816
|
-
|
|
817
|
-
message ListDocsResponse {
|
|
818
|
-
repeated Doc docs = 1;
|
|
819
|
-
int32 total_count = 2;
|
|
820
|
-
bool success = 3;
|
|
821
|
-
string error = 4;
|
|
822
|
-
}
|
|
823
|
-
|
|
824
|
-
// Doc represents a documentation file
|
|
825
|
-
message Doc {
|
|
826
|
-
string slug = 1; // e.g., "getting-started"
|
|
827
|
-
string title = 2;
|
|
828
|
-
string content = 3; // Full markdown content
|
|
829
|
-
DocMetadata metadata = 4;
|
|
830
|
-
}
|
|
831
|
-
|
|
832
|
-
message DocMetadata {
|
|
833
|
-
string created_at = 1; // ISO timestamp
|
|
834
|
-
string updated_at = 2; // ISO timestamp
|
|
835
|
-
string deleted_at = 3; // ISO timestamp when soft-deleted (empty if not deleted)
|
|
836
|
-
bool is_org_doc = 4; // Whether this is an organization-level doc
|
|
837
|
-
string org_slug = 5; // Organization slug (for org docs)
|
|
838
|
-
}
|
|
839
|
-
|
|
840
|
-
message UpdateDocRequest {
|
|
841
|
-
string project_path = 1;
|
|
842
|
-
string slug = 2;
|
|
843
|
-
|
|
844
|
-
// Fields to update (empty string = don't update)
|
|
845
|
-
string title = 3;
|
|
846
|
-
string content = 4;
|
|
847
|
-
string new_slug = 5; // Rename the doc (empty = keep current slug)
|
|
848
|
-
}
|
|
849
|
-
|
|
850
|
-
message UpdateDocResponse {
|
|
851
|
-
bool success = 1;
|
|
852
|
-
string error = 2;
|
|
853
|
-
Doc doc = 3; // The updated doc
|
|
854
|
-
Manifest manifest = 4;
|
|
855
|
-
repeated OrgDocSyncResult sync_results = 5; // Results from syncing to other org projects (org docs only)
|
|
856
|
-
}
|
|
857
|
-
|
|
858
|
-
message DeleteDocRequest {
|
|
859
|
-
string project_path = 1;
|
|
860
|
-
string slug = 2;
|
|
861
|
-
}
|
|
862
|
-
|
|
863
|
-
message DeleteDocResponse {
|
|
864
|
-
bool success = 1;
|
|
865
|
-
string error = 2;
|
|
866
|
-
Manifest manifest = 3;
|
|
867
|
-
}
|
|
868
|
-
|
|
869
|
-
// Soft-delete a doc (set deleted_at timestamp)
|
|
870
|
-
message SoftDeleteDocRequest {
|
|
871
|
-
string project_path = 1;
|
|
872
|
-
string slug = 2;
|
|
873
|
-
}
|
|
874
|
-
|
|
875
|
-
message SoftDeleteDocResponse {
|
|
876
|
-
bool success = 1;
|
|
877
|
-
string error = 2;
|
|
878
|
-
Doc doc = 3; // The soft-deleted doc (with deleted_at set)
|
|
879
|
-
Manifest manifest = 4;
|
|
880
|
-
}
|
|
881
|
-
|
|
882
|
-
// Restore a soft-deleted doc (clear deleted_at timestamp)
|
|
883
|
-
message RestoreDocRequest {
|
|
884
|
-
string project_path = 1;
|
|
885
|
-
string slug = 2;
|
|
886
|
-
}
|
|
887
|
-
|
|
888
|
-
message RestoreDocResponse {
|
|
889
|
-
bool success = 1;
|
|
890
|
-
string error = 2;
|
|
891
|
-
Doc doc = 3; // The restored doc (with deleted_at cleared)
|
|
892
|
-
Manifest manifest = 4;
|
|
893
|
-
}
|
|
894
|
-
|
|
895
|
-
// ============ Doc Move/Duplicate Messages ============
|
|
896
|
-
|
|
897
|
-
message MoveDocRequest {
|
|
898
|
-
string source_project_path = 1; // Project containing the doc
|
|
899
|
-
string slug = 2; // Slug of the doc to move
|
|
900
|
-
string target_project_path = 3; // Target project path
|
|
901
|
-
string new_slug = 4; // Optional: new slug if conflict exists
|
|
902
|
-
}
|
|
903
|
-
|
|
904
|
-
message MoveDocResponse {
|
|
905
|
-
bool success = 1;
|
|
906
|
-
string error = 2;
|
|
907
|
-
Doc doc = 3; // The moved doc
|
|
908
|
-
string old_slug = 4; // Original slug for reference
|
|
909
|
-
Manifest source_manifest = 5; // Updated source project manifest
|
|
910
|
-
Manifest target_manifest = 6; // Updated target project manifest
|
|
911
|
-
}
|
|
912
|
-
|
|
913
|
-
message DuplicateDocRequest {
|
|
914
|
-
string source_project_path = 1; // Project containing the original doc
|
|
915
|
-
string slug = 2; // Slug of the doc to duplicate
|
|
916
|
-
string target_project_path = 3; // Target project (can be same as source)
|
|
917
|
-
string new_slug = 4; // Optional: override slug (default: "{slug}-copy")
|
|
918
|
-
string new_title = 5; // Optional: override title (default: "Copy of {original}")
|
|
919
|
-
}
|
|
920
|
-
|
|
921
|
-
message DuplicateDocResponse {
|
|
922
|
-
bool success = 1;
|
|
923
|
-
string error = 2;
|
|
924
|
-
Doc doc = 3; // The new duplicate doc
|
|
925
|
-
string original_slug = 4; // Slug of the original doc
|
|
926
|
-
Manifest manifest = 5; // Updated target project manifest
|
|
927
|
-
}
|
|
928
|
-
|
|
929
463
|
// ============ Asset Messages ============
|
|
930
464
|
|
|
931
465
|
// Asset represents file metadata
|
|
@@ -1018,6 +552,8 @@ message ProjectInfo {
|
|
|
1018
552
|
string organization_name = 12; // Organization display name (for convenience)
|
|
1019
553
|
string user_title = 13; // User-scope custom title (from ~/.centy/projects.json)
|
|
1020
554
|
string project_title = 14; // Project-scope custom title (from .centy/project.json)
|
|
555
|
+
string project_version = 15; // Centy version recorded in manifest (empty if not initialized)
|
|
556
|
+
bool project_behind = 16; // True if project version is behind current daemon version
|
|
1021
557
|
}
|
|
1022
558
|
|
|
1023
559
|
message ListProjectsRequest {
|
|
@@ -1190,6 +726,7 @@ message UpdateOrganizationResponse {
|
|
|
1190
726
|
|
|
1191
727
|
message DeleteOrganizationRequest {
|
|
1192
728
|
string slug = 1;
|
|
729
|
+
bool cascade = 2;
|
|
1193
730
|
}
|
|
1194
731
|
|
|
1195
732
|
message DeleteOrganizationResponse {
|
|
@@ -1233,21 +770,6 @@ message RestartResponse {
|
|
|
1233
770
|
|
|
1234
771
|
// ============ Temp Workspace Messages ============
|
|
1235
772
|
|
|
1236
|
-
// Action types for workspace operations
|
|
1237
|
-
enum LlmAction {
|
|
1238
|
-
LLM_ACTION_UNSPECIFIED = 0;
|
|
1239
|
-
LLM_ACTION_PLAN = 1;
|
|
1240
|
-
LLM_ACTION_IMPLEMENT = 2;
|
|
1241
|
-
LLM_ACTION_DEEPDIVE = 3;
|
|
1242
|
-
}
|
|
1243
|
-
|
|
1244
|
-
// Workspace mode for agent operations
|
|
1245
|
-
enum WorkspaceMode {
|
|
1246
|
-
WORKSPACE_MODE_UNSPECIFIED = 0; // Use project default or prompt user
|
|
1247
|
-
WORKSPACE_MODE_TEMP = 1; // Create temporary worktree
|
|
1248
|
-
WORKSPACE_MODE_CURRENT = 2; // Use current project directory
|
|
1249
|
-
}
|
|
1250
|
-
|
|
1251
773
|
// Editor type for opening workspaces
|
|
1252
774
|
enum EditorType {
|
|
1253
775
|
EDITOR_TYPE_UNSPECIFIED = 0;
|
|
@@ -1277,8 +799,7 @@ message GetSupportedEditorsResponse {
|
|
|
1277
799
|
message OpenInTempWorkspaceWithEditorRequest {
|
|
1278
800
|
string project_path = 1; // Source project path
|
|
1279
801
|
string issue_id = 2; // Issue UUID or display number
|
|
1280
|
-
|
|
1281
|
-
string agent_name = 4; // Agent to use (empty = default)
|
|
802
|
+
reserved 3, 4; // Removed: action (LlmAction), agent_name
|
|
1282
803
|
uint32 ttl_hours = 5; // Custom TTL in hours (0 = use default 12h)
|
|
1283
804
|
string editor_id = 6; // Editor ID (e.g., "vscode", "terminal", "zed"). Empty = use project/user default.
|
|
1284
805
|
}
|
|
@@ -1289,7 +810,7 @@ message OpenStandaloneWorkspaceWithEditorRequest {
|
|
|
1289
810
|
string name = 2; // Optional custom name for the workspace
|
|
1290
811
|
string description = 3; // Optional description/goals for this workspace
|
|
1291
812
|
uint32 ttl_hours = 4; // Custom TTL in hours (0 = use default 12h)
|
|
1292
|
-
|
|
813
|
+
reserved 5; // Removed: agent_name
|
|
1293
814
|
string editor_id = 6; // Editor ID (e.g., "vscode", "terminal", "zed"). Empty = use project/user default.
|
|
1294
815
|
}
|
|
1295
816
|
|
|
@@ -1297,8 +818,7 @@ message OpenStandaloneWorkspaceWithEditorRequest {
|
|
|
1297
818
|
message OpenInTempWorkspaceRequest {
|
|
1298
819
|
string project_path = 1; // Source project path
|
|
1299
820
|
string issue_id = 2; // Issue UUID or display number
|
|
1300
|
-
|
|
1301
|
-
string agent_name = 4; // Agent to use (empty = default)
|
|
821
|
+
reserved 3, 4; // Removed: action (LlmAction), agent_name
|
|
1302
822
|
uint32 ttl_hours = 5; // Custom TTL in hours (0 = use default 12h)
|
|
1303
823
|
}
|
|
1304
824
|
|
|
@@ -1316,34 +836,13 @@ message OpenInTempWorkspaceResponse {
|
|
|
1316
836
|
string original_created_at = 10; // Original creation timestamp (only set if workspace_reused is true)
|
|
1317
837
|
}
|
|
1318
838
|
|
|
1319
|
-
// Request to open an agent in a terminal
|
|
1320
|
-
message OpenAgentInTerminalRequest {
|
|
1321
|
-
string project_path = 1; // Source project path
|
|
1322
|
-
string issue_id = 2; // Issue UUID or display number
|
|
1323
|
-
string agent_name = 3; // Agent to use (empty = default)
|
|
1324
|
-
WorkspaceMode workspace_mode = 4; // Temp worktree or current project
|
|
1325
|
-
uint32 ttl_hours = 5; // Custom TTL in hours (0 = default, only for temp mode)
|
|
1326
|
-
}
|
|
1327
|
-
|
|
1328
|
-
message OpenAgentInTerminalResponse {
|
|
1329
|
-
bool success = 1;
|
|
1330
|
-
string error = 2;
|
|
1331
|
-
string working_directory = 3; // Path where agent was launched
|
|
1332
|
-
string issue_id = 4; // Resolved issue UUID
|
|
1333
|
-
uint32 display_number = 5; // Issue display number
|
|
1334
|
-
string agent_command = 6; // The agent command that was executed
|
|
1335
|
-
bool terminal_opened = 7; // Whether terminal was successfully opened
|
|
1336
|
-
string expires_at = 8; // ISO timestamp (only for temp mode)
|
|
1337
|
-
bool requires_status_config = 9; // True if user must configure update_status_on_start setting
|
|
1338
|
-
}
|
|
1339
|
-
|
|
1340
839
|
// Request to open a standalone workspace (not tied to an issue)
|
|
1341
840
|
message OpenStandaloneWorkspaceRequest {
|
|
1342
841
|
string project_path = 1; // Source project path
|
|
1343
842
|
string name = 2; // Optional custom name for the workspace
|
|
1344
843
|
string description = 3; // Optional description/goals for this workspace
|
|
1345
844
|
uint32 ttl_hours = 4; // Custom TTL in hours (0 = use default 12h)
|
|
1346
|
-
|
|
845
|
+
reserved 5; // Removed: agent_name
|
|
1347
846
|
}
|
|
1348
847
|
|
|
1349
848
|
// Response for opening a standalone workspace
|
|
@@ -1366,8 +865,7 @@ message TempWorkspace {
|
|
|
1366
865
|
string issue_id = 3; // Issue UUID (empty for standalone workspaces)
|
|
1367
866
|
uint32 issue_display_number = 4; // Issue display number (0 for standalone)
|
|
1368
867
|
string issue_title = 5; // Issue title (empty for standalone)
|
|
1369
|
-
|
|
1370
|
-
LlmAction action = 7; // Plan or Implement
|
|
868
|
+
reserved 6, 7; // Removed: agent_name, action (LlmAction)
|
|
1371
869
|
string created_at = 8; // ISO timestamp
|
|
1372
870
|
string expires_at = 9; // ISO timestamp when workspace expires
|
|
1373
871
|
bool is_standalone = 10; // True if this is a standalone workspace (not tied to an issue)
|
|
@@ -1776,3 +1274,218 @@ message SyncPushResponse {
|
|
|
1776
1274
|
bool had_changes = 3; // Whether any changes were pushed
|
|
1777
1275
|
}
|
|
1778
1276
|
|
|
1277
|
+
// ============ Item Type Messages ============
|
|
1278
|
+
|
|
1279
|
+
// Toggle-able features for an item type
|
|
1280
|
+
message ItemTypeFeatures {
|
|
1281
|
+
bool display_number = 1; // Enable display numbers (1, 2, 3...)
|
|
1282
|
+
bool status = 2; // Enable status tracking
|
|
1283
|
+
bool priority = 3; // Enable priority levels
|
|
1284
|
+
bool assets = 4; // Enable file attachments
|
|
1285
|
+
bool org_sync = 5; // Enable organization sync
|
|
1286
|
+
bool move = 6; // Enable moving between projects
|
|
1287
|
+
bool duplicate = 7; // Enable duplication
|
|
1288
|
+
bool soft_delete = 8; // Enable soft-deletion (restorable delete)
|
|
1289
|
+
}
|
|
1290
|
+
|
|
1291
|
+
// Request to create a new item type
|
|
1292
|
+
message CreateItemTypeRequest {
|
|
1293
|
+
string project_path = 1;
|
|
1294
|
+
string name = 2; // Singular display name (e.g., "Bug", "Task", "Epic")
|
|
1295
|
+
string plural = 3; // Folder/type key (e.g., "bugs", "tasks", "epics")
|
|
1296
|
+
string identifier = 4; // "uuid" or "slug"
|
|
1297
|
+
ItemTypeFeatures features = 5; // Toggle-able features
|
|
1298
|
+
repeated string statuses = 6; // Allowed statuses (e.g., ["open", "in-progress", "closed"])
|
|
1299
|
+
string default_status = 7; // Default status for new items (must be in statuses list)
|
|
1300
|
+
uint32 priority_levels = 8; // Number of priority levels (0 = none)
|
|
1301
|
+
repeated CustomFieldDefinition custom_fields = 9; // Custom field definitions
|
|
1302
|
+
}
|
|
1303
|
+
|
|
1304
|
+
// Response after creating an item type
|
|
1305
|
+
message CreateItemTypeResponse {
|
|
1306
|
+
bool success = 1;
|
|
1307
|
+
string error = 2;
|
|
1308
|
+
ItemTypeConfigProto config = 3; // The created item type config
|
|
1309
|
+
}
|
|
1310
|
+
|
|
1311
|
+
// Proto representation of an ItemTypeConfig
|
|
1312
|
+
message ItemTypeConfigProto {
|
|
1313
|
+
string name = 1;
|
|
1314
|
+
string plural = 2;
|
|
1315
|
+
string identifier = 3;
|
|
1316
|
+
ItemTypeFeatures features = 4;
|
|
1317
|
+
repeated string statuses = 5;
|
|
1318
|
+
string default_status = 6;
|
|
1319
|
+
uint32 priority_levels = 7;
|
|
1320
|
+
repeated CustomFieldDefinition custom_fields = 8;
|
|
1321
|
+
string icon = 9; // Optional icon identifier (e.g. "clipboard")
|
|
1322
|
+
string template = 10; // Optional template file path
|
|
1323
|
+
}
|
|
1324
|
+
|
|
1325
|
+
message ListItemTypesRequest {
|
|
1326
|
+
string project_path = 1;
|
|
1327
|
+
}
|
|
1328
|
+
|
|
1329
|
+
message ListItemTypesResponse {
|
|
1330
|
+
bool success = 1;
|
|
1331
|
+
string error = 2;
|
|
1332
|
+
repeated ItemTypeConfigProto item_types = 3;
|
|
1333
|
+
int32 total_count = 4;
|
|
1334
|
+
}
|
|
1335
|
+
|
|
1336
|
+
// ============ Generic Item Move Messages ============
|
|
1337
|
+
|
|
1338
|
+
message MoveItemRequest {
|
|
1339
|
+
string source_project_path = 1;
|
|
1340
|
+
string target_project_path = 2;
|
|
1341
|
+
string item_type = 3;
|
|
1342
|
+
string item_id = 4;
|
|
1343
|
+
string new_id = 5; // Optional: for slug renames
|
|
1344
|
+
}
|
|
1345
|
+
|
|
1346
|
+
message MoveItemResponse {
|
|
1347
|
+
bool success = 1;
|
|
1348
|
+
string error = 2;
|
|
1349
|
+
GenericItem item = 3;
|
|
1350
|
+
string old_id = 4;
|
|
1351
|
+
Manifest source_manifest = 5;
|
|
1352
|
+
Manifest target_manifest = 6;
|
|
1353
|
+
}
|
|
1354
|
+
|
|
1355
|
+
// ============ Archive Messages ============
|
|
1356
|
+
|
|
1357
|
+
message ArchiveItemRequest {
|
|
1358
|
+
string project_path = 1;
|
|
1359
|
+
string item_type = 2; // Source folder name (e.g., "issues", "docs")
|
|
1360
|
+
string item_id = 3; // UUID of the item to archive
|
|
1361
|
+
}
|
|
1362
|
+
|
|
1363
|
+
message ArchiveItemResponse {
|
|
1364
|
+
bool success = 1;
|
|
1365
|
+
string error = 2;
|
|
1366
|
+
GenericItem item = 3; // The archived item with original_item_type set
|
|
1367
|
+
}
|
|
1368
|
+
|
|
1369
|
+
message UnarchiveItemRequest {
|
|
1370
|
+
string project_path = 1;
|
|
1371
|
+
string item_id = 2; // UUID of the archived item
|
|
1372
|
+
string target_item_type = 3; // Optional: override original_item_type from metadata
|
|
1373
|
+
}
|
|
1374
|
+
|
|
1375
|
+
message UnarchiveItemResponse {
|
|
1376
|
+
bool success = 1;
|
|
1377
|
+
string error = 2;
|
|
1378
|
+
GenericItem item = 3; // The restored item
|
|
1379
|
+
string original_item_type = 4; // The folder the item was restored to
|
|
1380
|
+
}
|
|
1381
|
+
|
|
1382
|
+
// ============ Organization Issue Messages ============
|
|
1383
|
+
|
|
1384
|
+
message OrgIssueMetadata {
|
|
1385
|
+
uint32 display_number = 1;
|
|
1386
|
+
string status = 2;
|
|
1387
|
+
int32 priority = 3;
|
|
1388
|
+
string created_at = 4;
|
|
1389
|
+
string updated_at = 5;
|
|
1390
|
+
map<string, string> custom_fields = 6;
|
|
1391
|
+
string priority_label = 7;
|
|
1392
|
+
repeated string referenced_projects = 8;
|
|
1393
|
+
}
|
|
1394
|
+
|
|
1395
|
+
message OrgIssue {
|
|
1396
|
+
string id = 1;
|
|
1397
|
+
uint32 display_number = 2;
|
|
1398
|
+
string title = 3;
|
|
1399
|
+
string description = 4;
|
|
1400
|
+
OrgIssueMetadata metadata = 5;
|
|
1401
|
+
}
|
|
1402
|
+
|
|
1403
|
+
message CreateOrgIssueRequest {
|
|
1404
|
+
string organization_slug = 1;
|
|
1405
|
+
string title = 2;
|
|
1406
|
+
string description = 3;
|
|
1407
|
+
int32 priority = 4;
|
|
1408
|
+
string status = 5;
|
|
1409
|
+
map<string, string> custom_fields = 6;
|
|
1410
|
+
repeated string referenced_projects = 7;
|
|
1411
|
+
}
|
|
1412
|
+
|
|
1413
|
+
message CreateOrgIssueResponse {
|
|
1414
|
+
bool success = 1;
|
|
1415
|
+
string error = 2;
|
|
1416
|
+
string id = 3;
|
|
1417
|
+
uint32 display_number = 4;
|
|
1418
|
+
repeated string created_files = 5;
|
|
1419
|
+
}
|
|
1420
|
+
|
|
1421
|
+
message GetOrgIssueRequest {
|
|
1422
|
+
string organization_slug = 1;
|
|
1423
|
+
string issue_id = 2;
|
|
1424
|
+
}
|
|
1425
|
+
|
|
1426
|
+
message GetOrgIssueByDisplayNumberRequest {
|
|
1427
|
+
string organization_slug = 1;
|
|
1428
|
+
uint32 display_number = 2;
|
|
1429
|
+
}
|
|
1430
|
+
|
|
1431
|
+
message ListOrgIssuesRequest {
|
|
1432
|
+
string organization_slug = 1;
|
|
1433
|
+
string status = 2; // Filter by status (empty = all)
|
|
1434
|
+
int32 priority = 3; // Filter by priority (0 = all)
|
|
1435
|
+
string referenced_project = 4; // Filter by referenced project path (empty = all)
|
|
1436
|
+
}
|
|
1437
|
+
|
|
1438
|
+
message ListOrgIssuesResponse {
|
|
1439
|
+
repeated OrgIssue issues = 1;
|
|
1440
|
+
int32 total_count = 2;
|
|
1441
|
+
}
|
|
1442
|
+
|
|
1443
|
+
message UpdateOrgIssueRequest {
|
|
1444
|
+
string organization_slug = 1;
|
|
1445
|
+
string issue_id = 2;
|
|
1446
|
+
string title = 3;
|
|
1447
|
+
string description = 4;
|
|
1448
|
+
string status = 5;
|
|
1449
|
+
int32 priority = 6;
|
|
1450
|
+
map<string, string> custom_fields = 7;
|
|
1451
|
+
repeated string add_referenced_projects = 8;
|
|
1452
|
+
repeated string remove_referenced_projects = 9;
|
|
1453
|
+
}
|
|
1454
|
+
|
|
1455
|
+
message UpdateOrgIssueResponse {
|
|
1456
|
+
bool success = 1;
|
|
1457
|
+
string error = 2;
|
|
1458
|
+
OrgIssue issue = 3;
|
|
1459
|
+
}
|
|
1460
|
+
|
|
1461
|
+
message DeleteOrgIssueRequest {
|
|
1462
|
+
string organization_slug = 1;
|
|
1463
|
+
string issue_id = 2;
|
|
1464
|
+
}
|
|
1465
|
+
|
|
1466
|
+
message DeleteOrgIssueResponse {
|
|
1467
|
+
bool success = 1;
|
|
1468
|
+
string error = 2;
|
|
1469
|
+
}
|
|
1470
|
+
|
|
1471
|
+
message OrgConfig {
|
|
1472
|
+
uint32 priority_levels = 1;
|
|
1473
|
+
repeated CustomFieldDefinition custom_fields = 2;
|
|
1474
|
+
}
|
|
1475
|
+
|
|
1476
|
+
message GetOrgConfigRequest {
|
|
1477
|
+
string organization_slug = 1;
|
|
1478
|
+
}
|
|
1479
|
+
|
|
1480
|
+
message UpdateOrgConfigRequest {
|
|
1481
|
+
string organization_slug = 1;
|
|
1482
|
+
uint32 priority_levels = 2;
|
|
1483
|
+
repeated CustomFieldDefinition custom_fields = 3;
|
|
1484
|
+
}
|
|
1485
|
+
|
|
1486
|
+
message UpdateOrgConfigResponse {
|
|
1487
|
+
bool success = 1;
|
|
1488
|
+
string error = 2;
|
|
1489
|
+
OrgConfig config = 3;
|
|
1490
|
+
}
|
|
1491
|
+
|