centy 0.3.0 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (295) hide show
  1. package/bin/run.js +3 -3
  2. package/dist/commands/close.d.ts +1 -4
  3. package/dist/commands/close.d.ts.map +1 -1
  4. package/dist/commands/close.js +23 -40
  5. package/dist/commands/close.js.map +1 -1
  6. package/dist/commands/create/item-type.d.ts +20 -0
  7. package/dist/commands/create/item-type.d.ts.map +1 -0
  8. package/dist/commands/create/item-type.js +90 -0
  9. package/dist/commands/create/item-type.js.map +1 -0
  10. package/dist/commands/init.d.ts +0 -4
  11. package/dist/commands/init.d.ts.map +1 -1
  12. package/dist/commands/init.js +0 -20
  13. package/dist/commands/init.js.map +1 -1
  14. package/dist/commands/{delete/pr.d.ts → link.d.ts} +6 -4
  15. package/dist/commands/link.d.ts.map +1 -0
  16. package/dist/commands/link.js +74 -0
  17. package/dist/commands/link.js.map +1 -0
  18. package/dist/commands/{get/pr.d.ts → links.d.ts} +4 -5
  19. package/dist/commands/links.d.ts.map +1 -0
  20. package/dist/commands/links.js +70 -0
  21. package/dist/commands/links.js.map +1 -0
  22. package/dist/commands/list/link-types.d.ts +14 -0
  23. package/dist/commands/list/link-types.d.ts.map +1 -0
  24. package/dist/commands/list/link-types.js +59 -0
  25. package/dist/commands/list/link-types.js.map +1 -0
  26. package/dist/commands/show.d.ts.map +1 -1
  27. package/dist/commands/show.js +5 -8
  28. package/dist/commands/show.js.map +1 -1
  29. package/dist/commands/unlink.d.ts +19 -0
  30. package/dist/commands/unlink.d.ts.map +1 -0
  31. package/dist/commands/unlink.js +73 -0
  32. package/dist/commands/unlink.js.map +1 -0
  33. package/dist/commands/version.d.ts +13 -0
  34. package/dist/commands/version.d.ts.map +1 -0
  35. package/dist/commands/version.js +51 -0
  36. package/dist/commands/version.js.map +1 -0
  37. package/dist/daemon/daemon-create-item-type.d.ts +6 -0
  38. package/dist/daemon/daemon-create-item-type.d.ts.map +1 -0
  39. package/dist/daemon/daemon-create-item-type.js +9 -0
  40. package/dist/daemon/daemon-create-item-type.js.map +1 -0
  41. package/dist/daemon/daemon-create-link.d.ts +6 -0
  42. package/dist/daemon/daemon-create-link.d.ts.map +1 -0
  43. package/dist/daemon/daemon-create-link.js +9 -0
  44. package/dist/daemon/daemon-create-link.js.map +1 -0
  45. package/dist/daemon/daemon-delete-link.d.ts +6 -0
  46. package/dist/daemon/daemon-delete-link.d.ts.map +1 -0
  47. package/dist/daemon/daemon-delete-link.js +9 -0
  48. package/dist/daemon/daemon-delete-link.js.map +1 -0
  49. package/dist/daemon/daemon-get-available-link-types.d.ts +6 -0
  50. package/dist/daemon/daemon-get-available-link-types.d.ts.map +1 -0
  51. package/dist/daemon/daemon-get-available-link-types.js +9 -0
  52. package/dist/daemon/daemon-get-available-link-types.js.map +1 -0
  53. package/dist/daemon/daemon-list-links.d.ts +6 -0
  54. package/dist/daemon/daemon-list-links.d.ts.map +1 -0
  55. package/dist/daemon/daemon-list-links.js +9 -0
  56. package/dist/daemon/daemon-list-links.js.map +1 -0
  57. package/dist/daemon/daemon-open-in-temp-workspace.d.ts +2 -2
  58. package/dist/daemon/daemon-open-in-temp-workspace.d.ts.map +1 -1
  59. package/dist/daemon/daemon-open-in-temp-workspace.js.map +1 -1
  60. package/dist/daemon/grpc-client-extended.d.ts +4 -8
  61. package/dist/daemon/grpc-client-extended.d.ts.map +1 -1
  62. package/dist/daemon/grpc-client-items.d.ts +19 -0
  63. package/dist/daemon/grpc-client-items.d.ts.map +1 -0
  64. package/dist/daemon/grpc-client-items.js +2 -0
  65. package/dist/daemon/grpc-client-items.js.map +1 -0
  66. package/dist/daemon/grpc-client-link.d.ts +12 -0
  67. package/dist/daemon/grpc-client-link.d.ts.map +1 -0
  68. package/dist/daemon/grpc-client-link.js +2 -0
  69. package/dist/daemon/grpc-client-link.js.map +1 -0
  70. package/dist/daemon/grpc-client-ops.d.ts +2 -12
  71. package/dist/daemon/grpc-client-ops.d.ts.map +1 -1
  72. package/dist/daemon/load-proto.d.ts +3 -1
  73. package/dist/daemon/load-proto.d.ts.map +1 -1
  74. package/dist/daemon/load-proto.js +3 -1
  75. package/dist/daemon/load-proto.js.map +1 -1
  76. package/dist/daemon/types/config.d.ts +3 -7
  77. package/dist/daemon/types/config.d.ts.map +1 -1
  78. package/dist/daemon/types/generic-item.d.ts +104 -0
  79. package/dist/daemon/types/generic-item.d.ts.map +1 -0
  80. package/dist/daemon/types/generic-item.js +6 -0
  81. package/dist/daemon/types/generic-item.js.map +1 -0
  82. package/dist/daemon/types/item-type.d.ts +37 -0
  83. package/dist/daemon/types/item-type.d.ts.map +1 -0
  84. package/dist/daemon/types/item-type.js +6 -0
  85. package/dist/daemon/types/item-type.js.map +1 -0
  86. package/dist/daemon/types.d.ts +2 -3
  87. package/dist/daemon/types.d.ts.map +1 -1
  88. package/dist/daemon/types.js +2 -3
  89. package/dist/daemon/types.js.map +1 -1
  90. package/dist/lib/autostart/launchd.d.ts.map +1 -1
  91. package/dist/lib/autostart/launchd.js +10 -3
  92. package/dist/lib/autostart/launchd.js.map +1 -1
  93. package/dist/lib/close/find-entity.d.ts +1 -1
  94. package/dist/lib/close/find-entity.d.ts.map +1 -1
  95. package/dist/lib/close/find-entity.js +0 -15
  96. package/dist/lib/close/find-entity.js.map +1 -1
  97. package/dist/lib/create-item-type/features.d.ts +18 -0
  98. package/dist/lib/create-item-type/features.d.ts.map +1 -0
  99. package/dist/lib/create-item-type/features.js +58 -0
  100. package/dist/lib/create-item-type/features.js.map +1 -0
  101. package/dist/lib/init/config-builder.d.ts.map +1 -1
  102. package/dist/lib/init/config-builder.js +1 -24
  103. package/dist/lib/init/config-builder.js.map +1 -1
  104. package/dist/lib/show/format-results.d.ts +1 -2
  105. package/dist/lib/show/format-results.d.ts.map +1 -1
  106. package/dist/lib/show/format-results.js +0 -20
  107. package/dist/lib/show/format-results.js.map +1 -1
  108. package/dist/lib/show/search-entities.d.ts +1 -2
  109. package/dist/lib/show/search-entities.d.ts.map +1 -1
  110. package/dist/lib/show/search-entities.js +2 -6
  111. package/dist/lib/show/search-entities.js.map +1 -1
  112. package/dist/lib/start/handle-missing-daemon.d.ts.map +1 -1
  113. package/dist/lib/start/handle-missing-daemon.js +11 -1
  114. package/dist/lib/start/handle-missing-daemon.js.map +1 -1
  115. package/dist/lib/start/start-foreground.d.ts +1 -1
  116. package/dist/lib/start/start-foreground.d.ts.map +1 -1
  117. package/dist/lib/start/start-foreground.js +11 -1
  118. package/dist/lib/start/start-foreground.js.map +1 -1
  119. package/dist/types/init-options.d.ts +0 -8
  120. package/dist/types/init-options.d.ts.map +1 -1
  121. package/dist/utils/format-cross-project-hint.d.ts +1 -1
  122. package/dist/utils/format-cross-project-hint.d.ts.map +1 -1
  123. package/dist/utils/format-cross-project-hint.js.map +1 -1
  124. package/dist/utils/handle-not-initialized-with-search.d.ts +1 -1
  125. package/dist/utils/handle-not-initialized-with-search.d.ts.map +1 -1
  126. package/dist/utils/parse-link-target.d.ts +5 -0
  127. package/dist/utils/parse-link-target.d.ts.map +1 -0
  128. package/dist/utils/parse-link-target.js +16 -0
  129. package/dist/utils/parse-link-target.js.map +1 -0
  130. package/dist/utils/process-timeout-config.d.ts +17 -0
  131. package/dist/utils/process-timeout-config.d.ts.map +1 -0
  132. package/dist/utils/process-timeout-config.js +18 -0
  133. package/dist/utils/process-timeout-config.js.map +1 -0
  134. package/dist/utils/process-timeout-error.d.ts +4 -0
  135. package/dist/utils/process-timeout-error.d.ts.map +1 -0
  136. package/dist/utils/process-timeout-error.js +7 -0
  137. package/dist/utils/process-timeout-error.js.map +1 -0
  138. package/oclif.manifest.json +459 -573
  139. package/package.json +1 -1
  140. package/proto/{centy.proto → centy/v1/centy.proto} +86 -248
  141. package/proto/centy/v1/generic_item.proto +177 -0
  142. package/dist/commands/create/pr.d.ts +0 -21
  143. package/dist/commands/create/pr.d.ts.map +0 -1
  144. package/dist/commands/create/pr.js +0 -85
  145. package/dist/commands/create/pr.js.map +0 -1
  146. package/dist/commands/delete/pr.d.ts.map +0 -1
  147. package/dist/commands/delete/pr.js +0 -74
  148. package/dist/commands/delete/pr.js.map +0 -1
  149. package/dist/commands/get/pr.d.ts.map +0 -1
  150. package/dist/commands/get/pr.js +0 -86
  151. package/dist/commands/get/pr.js.map +0 -1
  152. package/dist/commands/list/prs.d.ts +0 -19
  153. package/dist/commands/list/prs.d.ts.map +0 -1
  154. package/dist/commands/list/prs.js +0 -90
  155. package/dist/commands/list/prs.js.map +0 -1
  156. package/dist/commands/update/pr.d.ts +0 -21
  157. package/dist/commands/update/pr.d.ts.map +0 -1
  158. package/dist/commands/update/pr.js +0 -97
  159. package/dist/commands/update/pr.js.map +0 -1
  160. package/dist/daemon/daemon-create-pr.d.ts +0 -6
  161. package/dist/daemon/daemon-create-pr.d.ts.map +0 -1
  162. package/dist/daemon/daemon-create-pr.js +0 -9
  163. package/dist/daemon/daemon-create-pr.js.map +0 -1
  164. package/dist/daemon/daemon-delete-pr.d.ts +0 -6
  165. package/dist/daemon/daemon-delete-pr.d.ts.map +0 -1
  166. package/dist/daemon/daemon-delete-pr.js +0 -9
  167. package/dist/daemon/daemon-delete-pr.js.map +0 -1
  168. package/dist/daemon/daemon-get-pr-by-display-number.d.ts +0 -6
  169. package/dist/daemon/daemon-get-pr-by-display-number.d.ts.map +0 -1
  170. package/dist/daemon/daemon-get-pr-by-display-number.js +0 -14
  171. package/dist/daemon/daemon-get-pr-by-display-number.js.map +0 -1
  172. package/dist/daemon/daemon-get-pr.d.ts +0 -6
  173. package/dist/daemon/daemon-get-pr.d.ts.map +0 -1
  174. package/dist/daemon/daemon-get-pr.js +0 -14
  175. package/dist/daemon/daemon-get-pr.js.map +0 -1
  176. package/dist/daemon/daemon-get-prs-by-uuid.d.ts +0 -6
  177. package/dist/daemon/daemon-get-prs-by-uuid.d.ts.map +0 -1
  178. package/dist/daemon/daemon-get-prs-by-uuid.js +0 -9
  179. package/dist/daemon/daemon-get-prs-by-uuid.js.map +0 -1
  180. package/dist/daemon/daemon-list-prs.d.ts +0 -6
  181. package/dist/daemon/daemon-list-prs.d.ts.map +0 -1
  182. package/dist/daemon/daemon-list-prs.js +0 -9
  183. package/dist/daemon/daemon-list-prs.js.map +0 -1
  184. package/dist/daemon/daemon-update-pr.d.ts +0 -6
  185. package/dist/daemon/daemon-update-pr.d.ts.map +0 -1
  186. package/dist/daemon/daemon-update-pr.js +0 -9
  187. package/dist/daemon/daemon-update-pr.js.map +0 -1
  188. package/dist/daemon/types/pr-lifecycle.d.ts +0 -54
  189. package/dist/daemon/types/pr-lifecycle.d.ts.map +0 -1
  190. package/dist/daemon/types/pr-lifecycle.js +0 -7
  191. package/dist/daemon/types/pr-lifecycle.js.map +0 -1
  192. package/dist/daemon/types/pr-search.d.ts +0 -19
  193. package/dist/daemon/types/pr-search.d.ts.map +0 -1
  194. package/dist/daemon/types/pr-search.js +0 -6
  195. package/dist/daemon/types/pr-search.js.map +0 -1
  196. package/dist/daemon/types/pr.d.ts +0 -79
  197. package/dist/daemon/types/pr.d.ts.map +0 -1
  198. package/dist/daemon/types/pr.js +0 -6
  199. package/dist/daemon/types/pr.js.map +0 -1
  200. package/dist/lib/close/close-pr.d.ts +0 -2
  201. package/dist/lib/close/close-pr.d.ts.map +0 -1
  202. package/dist/lib/close/close-pr.js +0 -23
  203. package/dist/lib/close/close-pr.js.map +0 -1
  204. package/dist/lib/create-pr/converters.d.ts +0 -15
  205. package/dist/lib/create-pr/converters.d.ts.map +0 -1
  206. package/dist/lib/create-pr/converters.js +0 -53
  207. package/dist/lib/create-pr/converters.js.map +0 -1
  208. package/dist/lib/create-pr/create-pr.d.ts +0 -8
  209. package/dist/lib/create-pr/create-pr.d.ts.map +0 -1
  210. package/dist/lib/create-pr/create-pr.js +0 -65
  211. package/dist/lib/create-pr/create-pr.js.map +0 -1
  212. package/dist/lib/create-pr/gather-basic-fields.d.ts +0 -8
  213. package/dist/lib/create-pr/gather-basic-fields.d.ts.map +0 -1
  214. package/dist/lib/create-pr/gather-basic-fields.js +0 -34
  215. package/dist/lib/create-pr/gather-basic-fields.js.map +0 -1
  216. package/dist/lib/create-pr/gather-metadata-fields.d.ts +0 -11
  217. package/dist/lib/create-pr/gather-metadata-fields.d.ts.map +0 -1
  218. package/dist/lib/create-pr/gather-metadata-fields.js +0 -36
  219. package/dist/lib/create-pr/gather-metadata-fields.js.map +0 -1
  220. package/dist/lib/create-pr/gather-pr-input.d.ts +0 -8
  221. package/dist/lib/create-pr/gather-pr-input.d.ts.map +0 -1
  222. package/dist/lib/create-pr/gather-pr-input.js +0 -38
  223. package/dist/lib/create-pr/gather-pr-input.js.map +0 -1
  224. package/dist/lib/create-pr/index.d.ts +0 -2
  225. package/dist/lib/create-pr/index.d.ts.map +0 -1
  226. package/dist/lib/create-pr/index.js +0 -2
  227. package/dist/lib/create-pr/index.js.map +0 -1
  228. package/dist/lib/create-pr/prompt-for-description.d.ts +0 -6
  229. package/dist/lib/create-pr/prompt-for-description.d.ts.map +0 -1
  230. package/dist/lib/create-pr/prompt-for-description.js +0 -12
  231. package/dist/lib/create-pr/prompt-for-description.js.map +0 -1
  232. package/dist/lib/create-pr/prompt-for-linked-issues.d.ts +0 -7
  233. package/dist/lib/create-pr/prompt-for-linked-issues.d.ts.map +0 -1
  234. package/dist/lib/create-pr/prompt-for-linked-issues.js +0 -22
  235. package/dist/lib/create-pr/prompt-for-linked-issues.js.map +0 -1
  236. package/dist/lib/create-pr/prompt-for-priority.d.ts +0 -9
  237. package/dist/lib/create-pr/prompt-for-priority.d.ts.map +0 -1
  238. package/dist/lib/create-pr/prompt-for-priority.js +0 -27
  239. package/dist/lib/create-pr/prompt-for-priority.js.map +0 -1
  240. package/dist/lib/create-pr/prompt-for-reviewers.d.ts +0 -7
  241. package/dist/lib/create-pr/prompt-for-reviewers.d.ts.map +0 -1
  242. package/dist/lib/create-pr/prompt-for-reviewers.js +0 -22
  243. package/dist/lib/create-pr/prompt-for-reviewers.js.map +0 -1
  244. package/dist/lib/create-pr/prompt-for-source-branch.d.ts +0 -7
  245. package/dist/lib/create-pr/prompt-for-source-branch.d.ts.map +0 -1
  246. package/dist/lib/create-pr/prompt-for-source-branch.js +0 -20
  247. package/dist/lib/create-pr/prompt-for-source-branch.js.map +0 -1
  248. package/dist/lib/create-pr/prompt-for-status.d.ts +0 -9
  249. package/dist/lib/create-pr/prompt-for-status.d.ts.map +0 -1
  250. package/dist/lib/create-pr/prompt-for-status.js +0 -27
  251. package/dist/lib/create-pr/prompt-for-status.js.map +0 -1
  252. package/dist/lib/create-pr/prompt-for-target-branch.d.ts +0 -7
  253. package/dist/lib/create-pr/prompt-for-target-branch.d.ts.map +0 -1
  254. package/dist/lib/create-pr/prompt-for-target-branch.js +0 -15
  255. package/dist/lib/create-pr/prompt-for-target-branch.js.map +0 -1
  256. package/dist/lib/create-pr/prompt-for-title.d.ts +0 -6
  257. package/dist/lib/create-pr/prompt-for-title.d.ts.map +0 -1
  258. package/dist/lib/create-pr/prompt-for-title.js +0 -12
  259. package/dist/lib/create-pr/prompt-for-title.js.map +0 -1
  260. package/dist/lib/create-pr/types.d.ts +0 -14
  261. package/dist/lib/create-pr/types.d.ts.map +0 -1
  262. package/dist/lib/create-pr/types.js +0 -2
  263. package/dist/lib/create-pr/types.js.map +0 -1
  264. package/dist/lib/get-pr/cross-project-hint.d.ts +0 -6
  265. package/dist/lib/get-pr/cross-project-hint.d.ts.map +0 -1
  266. package/dist/lib/get-pr/cross-project-hint.js +0 -24
  267. package/dist/lib/get-pr/cross-project-hint.js.map +0 -1
  268. package/dist/lib/get-pr/fetch-and-display.d.ts +0 -12
  269. package/dist/lib/get-pr/fetch-and-display.d.ts.map +0 -1
  270. package/dist/lib/get-pr/fetch-and-display.js +0 -36
  271. package/dist/lib/get-pr/fetch-and-display.js.map +0 -1
  272. package/dist/lib/get-pr/format-pr-output.d.ts +0 -3
  273. package/dist/lib/get-pr/format-pr-output.d.ts.map +0 -1
  274. package/dist/lib/get-pr/format-pr-output.js +0 -24
  275. package/dist/lib/get-pr/format-pr-output.js.map +0 -1
  276. package/dist/lib/get-pr/handle-global-search.d.ts +0 -3
  277. package/dist/lib/get-pr/handle-global-search.d.ts.map +0 -1
  278. package/dist/lib/get-pr/handle-global-search.js +0 -37
  279. package/dist/lib/get-pr/handle-global-search.js.map +0 -1
  280. package/dist/lib/get-pr/handle-not-initialized.d.ts +0 -6
  281. package/dist/lib/get-pr/handle-not-initialized.d.ts.map +0 -1
  282. package/dist/lib/get-pr/handle-not-initialized.js +0 -22
  283. package/dist/lib/get-pr/handle-not-initialized.js.map +0 -1
  284. package/dist/lib/update-pr/process-fields.d.ts +0 -4
  285. package/dist/lib/update-pr/process-fields.d.ts.map +0 -1
  286. package/dist/lib/update-pr/process-fields.js +0 -23
  287. package/dist/lib/update-pr/process-fields.js.map +0 -1
  288. package/dist/types/create-pr-options.d.ts +0 -30
  289. package/dist/types/create-pr-options.d.ts.map +0 -1
  290. package/dist/types/create-pr-options.js +0 -2
  291. package/dist/types/create-pr-options.js.map +0 -1
  292. package/dist/types/create-pr-result.d.ts +0 -16
  293. package/dist/types/create-pr-result.d.ts.map +0 -1
  294. package/dist/types/create-pr-result.js +0 -2
  295. package/dist/types/create-pr-result.js.map +0 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "centy",
3
- "version": "0.3.0",
3
+ "version": "0.5.0",
4
4
  "description": "CLI for managing project issues and docs via code in the .centy folder",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -2,6 +2,8 @@ syntax = "proto3";
2
2
 
3
3
  package centy.v1;
4
4
 
5
+ import "centy/v1/generic_item.proto";
6
+
5
7
  // CentyDaemon service - manages .centy folder operations
6
8
  service CentyDaemon {
7
9
  // Initialize a .centy folder in the specified directory
@@ -13,10 +15,10 @@ service CentyDaemon {
13
15
  // Execute reconciliation with user decisions
14
16
  rpc ExecuteReconciliation(ExecuteReconciliationRequest) returns (InitResponse);
15
17
 
16
- // Create a new issue
18
+ // Deprecated: Use CreateItem with item_type="issues" instead.
17
19
  rpc CreateIssue(CreateIssueRequest) returns (CreateIssueResponse);
18
20
 
19
- // Get a single issue by ID (UUID or legacy number)
21
+ // Deprecated: Use GetItem with item_type="issues" instead.
20
22
  rpc GetIssue(GetIssueRequest) returns (GetIssueResponse);
21
23
 
22
24
  // Get a single issue by display number (human-readable number like 1, 2, 3)
@@ -25,22 +27,22 @@ service CentyDaemon {
25
27
  // Get issues by UUID across all tracked projects (global search)
26
28
  rpc GetIssuesByUuid(GetIssuesByUuidRequest) returns (GetIssuesByUuidResponse);
27
29
 
28
- // List all issues with optional filtering
30
+ // Deprecated: Use ListItems with item_type="issues" instead.
29
31
  rpc ListIssues(ListIssuesRequest) returns (ListIssuesResponse);
30
32
 
31
33
  // Advanced issue search with query language
32
34
  rpc AdvancedSearch(AdvancedSearchRequest) returns (AdvancedSearchResponse);
33
35
 
34
- // Update an existing issue
36
+ // Deprecated: Use UpdateItem with item_type="issues" instead.
35
37
  rpc UpdateIssue(UpdateIssueRequest) returns (UpdateIssueResponse);
36
38
 
37
- // Delete an issue (hard delete - permanent removal)
39
+ // Deprecated: Use DeleteItem with item_type="issues" instead.
38
40
  rpc DeleteIssue(DeleteIssueRequest) returns (DeleteIssueResponse);
39
41
 
40
- // Soft-delete an issue (set deleted_at timestamp - recoverable)
42
+ // Deprecated: Use SoftDeleteItem with item_type="issues" instead.
41
43
  rpc SoftDeleteIssue(SoftDeleteIssueRequest) returns (SoftDeleteIssueResponse);
42
44
 
43
- // Restore a soft-deleted issue (clear deleted_at timestamp)
45
+ // Deprecated: Use RestoreItem with item_type="issues" instead.
44
46
  rpc RestoreIssue(RestoreIssueRequest) returns (RestoreIssueResponse);
45
47
 
46
48
  // Move an issue to another project
@@ -66,28 +68,28 @@ service CentyDaemon {
66
68
 
67
69
  // ============ Doc RPCs ============
68
70
 
69
- // Create a new documentation file
71
+ // Deprecated: Use CreateItem with item_type="docs" instead.
70
72
  rpc CreateDoc(CreateDocRequest) returns (CreateDocResponse);
71
73
 
72
- // Get a single doc by slug
74
+ // Deprecated: Use GetItem with item_type="docs" instead.
73
75
  rpc GetDoc(GetDocRequest) returns (GetDocResponse);
74
76
 
75
77
  // Get docs by slug across all tracked projects (global search)
76
78
  rpc GetDocsBySlug(GetDocsBySlugRequest) returns (GetDocsBySlugResponse);
77
79
 
78
- // List all docs
80
+ // Deprecated: Use ListItems with item_type="docs" instead.
79
81
  rpc ListDocs(ListDocsRequest) returns (ListDocsResponse);
80
82
 
81
- // Update an existing doc
83
+ // Deprecated: Use UpdateItem with item_type="docs" instead.
82
84
  rpc UpdateDoc(UpdateDocRequest) returns (UpdateDocResponse);
83
85
 
84
- // Delete a doc (hard delete - permanent removal)
86
+ // Deprecated: Use DeleteItem with item_type="docs" instead.
85
87
  rpc DeleteDoc(DeleteDocRequest) returns (DeleteDocResponse);
86
88
 
87
- // Soft-delete a doc (set deleted_at timestamp - recoverable)
89
+ // Deprecated: Use SoftDeleteItem with item_type="docs" instead.
88
90
  rpc SoftDeleteDoc(SoftDeleteDocRequest) returns (SoftDeleteDocResponse);
89
91
 
90
- // Restore a soft-deleted doc (clear deleted_at timestamp)
92
+ // Deprecated: Use RestoreItem with item_type="docs" instead.
91
93
  rpc RestoreDoc(RestoreDocRequest) returns (RestoreDocResponse);
92
94
 
93
95
  // Move a doc to another project
@@ -164,38 +166,6 @@ service CentyDaemon {
164
166
  // Get daemon version info
165
167
  rpc GetDaemonInfo(GetDaemonInfoRequest) returns (DaemonInfo);
166
168
 
167
- // ============ PR RPCs ============
168
-
169
- // Create a new pull request
170
- rpc CreatePr(CreatePrRequest) returns (CreatePrResponse);
171
-
172
- // Get a single PR by ID (UUID)
173
- rpc GetPr(GetPrRequest) returns (GetPrResponse);
174
-
175
- // Get a single PR by display number (human-readable number like 1, 2, 3)
176
- rpc GetPrByDisplayNumber(GetPrByDisplayNumberRequest) returns (GetPrResponse);
177
-
178
- // Get PRs by UUID across all tracked projects (global search)
179
- rpc GetPrsByUuid(GetPrsByUuidRequest) returns (GetPrsByUuidResponse);
180
-
181
- // List all PRs with optional filtering
182
- rpc ListPrs(ListPrsRequest) returns (ListPrsResponse);
183
-
184
- // Update an existing PR
185
- rpc UpdatePr(UpdatePrRequest) returns (UpdatePrResponse);
186
-
187
- // Delete a PR (hard delete - permanent removal)
188
- rpc DeletePr(DeletePrRequest) returns (DeletePrResponse);
189
-
190
- // Soft-delete a PR (set deleted_at timestamp - recoverable)
191
- rpc SoftDeletePr(SoftDeletePrRequest) returns (SoftDeletePrResponse);
192
-
193
- // Restore a soft-deleted PR (clear deleted_at timestamp)
194
- rpc RestorePr(RestorePrRequest) returns (RestorePrResponse);
195
-
196
- // Get the next PR number
197
- rpc GetNextPrNumber(GetNextPrNumberRequest) returns (GetNextPrNumberResponse);
198
-
199
169
  // ============ Daemon Control RPCs ============
200
170
 
201
171
  // Shutdown the daemon gracefully
@@ -303,6 +273,32 @@ service CentyDaemon {
303
273
 
304
274
  // Manually trigger a sync push
305
275
  rpc SyncPush(SyncPushRequest) returns (SyncPushResponse);
276
+
277
+ // ============ Generic Item RPCs ============
278
+
279
+ // Create a new item of any type
280
+ rpc CreateItem(CreateItemRequest) returns (CreateItemResponse);
281
+
282
+ // Get a single item by ID
283
+ rpc GetItem(GetItemRequest) returns (GetItemResponse);
284
+
285
+ // List items with optional filtering
286
+ rpc ListItems(ListItemsRequest) returns (ListItemsResponse);
287
+
288
+ // Update an existing item
289
+ rpc UpdateItem(UpdateItemRequest) returns (UpdateItemResponse);
290
+
291
+ // Delete an item (hard delete if force=true, else soft-delete first)
292
+ rpc DeleteItem(DeleteItemRequest) returns (DeleteItemResponse);
293
+
294
+ // Soft-delete an item (set deleted_at timestamp - recoverable)
295
+ rpc SoftDeleteItem(SoftDeleteItemRequest) returns (SoftDeleteItemResponse);
296
+
297
+ // Restore a soft-deleted item (clear deleted_at timestamp)
298
+ rpc RestoreItem(RestoreItemRequest) returns (RestoreItemResponse);
299
+
300
+ // Create a new custom item type
301
+ rpc CreateItemType(CreateItemTypeRequest) returns (CreateItemTypeResponse);
306
302
  }
307
303
 
308
304
  // ============ Init Messages ============
@@ -357,6 +353,9 @@ message ReconciliationPlan {
357
353
 
358
354
  // Whether user decisions are needed
359
355
  bool needs_decisions = 6;
356
+
357
+ bool success = 7;
358
+ string error = 8;
360
359
  }
361
360
 
362
361
  message ExecuteReconciliationRequest {
@@ -418,6 +417,8 @@ message GetNextIssueNumberRequest {
418
417
 
419
418
  message GetNextIssueNumberResponse {
420
419
  string issue_number = 1;
420
+ bool success = 2;
421
+ string error = 3;
421
422
  }
422
423
 
423
424
  // Issue represents a full issue with all its data
@@ -488,6 +489,8 @@ message GetIssuesByUuidResponse {
488
489
  repeated IssueWithProject issues = 1;
489
490
  int32 total_count = 2;
490
491
  repeated string errors = 3; // Non-fatal errors (e.g., projects that couldn't be accessed)
492
+ bool success = 4;
493
+ string error = 5;
491
494
  }
492
495
 
493
496
  message ListIssuesRequest {
@@ -503,6 +506,8 @@ message ListIssuesRequest {
503
506
  message ListIssuesResponse {
504
507
  repeated Issue issues = 1;
505
508
  int32 total_count = 2;
509
+ bool success = 3;
510
+ string error = 4;
506
511
  }
507
512
 
508
513
  // Advanced search request
@@ -672,14 +677,20 @@ message Config {
672
677
  map<string, string> defaults = 2;
673
678
  int32 priority_levels = 3; // Number of priority levels (default: 3)
674
679
  repeated string allowed_states = 4; // Allowed status values (default: ["open", "in-progress", "closed"])
675
- string default_state = 5; // Default state for new issues (default: "open")
680
+ reserved 5; // Previously: string default_state (moved to per-item-type config.yaml)
676
681
  string version = 6; // Project version (semver, empty = daemon default)
677
682
  map<string, string> state_colors = 7; // State name → hex color (e.g., "open" → "#10b981")
678
683
  map<string, string> priority_colors = 8; // Priority level → hex color (e.g., "1" → "#ef4444")
679
- LlmConfig llm = 9; // LLM-related settings
684
+ reserved 9; // Previously: LlmConfig llm (removed)
680
685
  repeated LinkTypeDefinition custom_link_types = 10; // Custom link types (in addition to built-in)
681
686
  string default_editor = 11; // Default editor ID for this project (e.g., "vscode", "terminal", "zed")
682
687
  repeated HookDefinition hooks = 12; // Lifecycle hooks
688
+ WorkspaceConfig workspace = 13; // Workspace settings
689
+ }
690
+
691
+ // Workspace configuration section
692
+ message WorkspaceConfig {
693
+ optional bool update_status_on_open = 1; // Auto-update issue status to "in-progress" when opening a temp workspace
683
694
  }
684
695
 
685
696
  message CustomFieldDefinition {
@@ -690,13 +701,6 @@ message CustomFieldDefinition {
690
701
  repeated string enum_values = 5; // For enum type
691
702
  }
692
703
 
693
- message LlmConfig {
694
- bool auto_close_on_complete = 1; // Auto-close issues when marked complete by LLM
695
- optional bool update_status_on_start = 2; // Update status to in-progress when LLM starts work (null = prompt user)
696
- bool allow_direct_edits = 3; // Allow LLM to directly edit issue files
697
- WorkspaceMode default_workspace_mode = 4; // Default workspace mode for agent operations
698
- }
699
-
700
704
  // Lifecycle hook definition (bash scripts to run before/after operations)
701
705
  message HookDefinition {
702
706
  string pattern = 1; // Pattern like "pre:issue:create" or "*:*:delete"
@@ -792,6 +796,8 @@ message GetDocsBySlugResponse {
792
796
  repeated DocWithProject docs = 1;
793
797
  int32 total_count = 2;
794
798
  repeated string errors = 3; // Non-fatal errors (e.g., projects that couldn't be accessed)
799
+ bool success = 4;
800
+ string error = 5;
795
801
  }
796
802
 
797
803
  message ListDocsRequest {
@@ -802,6 +808,8 @@ message ListDocsRequest {
802
808
  message ListDocsResponse {
803
809
  repeated Doc docs = 1;
804
810
  int32 total_count = 2;
811
+ bool success = 3;
812
+ string error = 4;
805
813
  }
806
814
 
807
815
  // Doc represents a documentation file
@@ -946,6 +954,8 @@ message ListAssetsRequest {
946
954
  message ListAssetsResponse {
947
955
  repeated Asset assets = 1;
948
956
  int32 total_count = 2;
957
+ bool success = 3;
958
+ string error = 4;
949
959
  }
950
960
 
951
961
  message GetAssetRequest {
@@ -1013,6 +1023,8 @@ message ListProjectsRequest {
1013
1023
  message ListProjectsResponse {
1014
1024
  repeated ProjectInfo projects = 1;
1015
1025
  int32 total_count = 2;
1026
+ bool success = 3;
1027
+ string error = 4;
1016
1028
  }
1017
1029
 
1018
1030
  message RegisterProjectRequest {
@@ -1042,6 +1054,8 @@ message GetProjectInfoRequest {
1042
1054
  message GetProjectInfoResponse {
1043
1055
  bool found = 1;
1044
1056
  ProjectInfo project = 2;
1057
+ bool success = 3;
1058
+ string error = 4;
1045
1059
  }
1046
1060
 
1047
1061
  message SetProjectFavoriteRequest {
@@ -1137,6 +1151,8 @@ message ListOrganizationsRequest {}
1137
1151
  message ListOrganizationsResponse {
1138
1152
  repeated Organization organizations = 1;
1139
1153
  int32 total_count = 2;
1154
+ bool success = 3;
1155
+ string error = 4;
1140
1156
  }
1141
1157
 
1142
1158
  message GetOrganizationRequest {
@@ -1146,6 +1162,8 @@ message GetOrganizationRequest {
1146
1162
  message GetOrganizationResponse {
1147
1163
  bool found = 1;
1148
1164
  Organization organization = 2;
1165
+ bool success = 3;
1166
+ string error = 4;
1149
1167
  }
1150
1168
 
1151
1169
  message UpdateOrganizationRequest {
@@ -1177,6 +1195,7 @@ message GetDaemonInfoRequest {}
1177
1195
 
1178
1196
  message DaemonInfo {
1179
1197
  string version = 1; // Current daemon version (e.g., "0.1.0")
1198
+ reserved 2; // was: repeated string available_versions (removed)
1180
1199
  string binary_path = 3; // Absolute path to the running daemon binary
1181
1200
  bool vscode_available = 4; // Whether VS Code is installed and accessible
1182
1201
  }
@@ -1203,194 +1222,6 @@ message RestartResponse {
1203
1222
  string message = 2;
1204
1223
  }
1205
1224
 
1206
- // ============ PR Messages ============
1207
-
1208
- message CreatePrRequest {
1209
- string project_path = 1;
1210
- string title = 2;
1211
- string description = 3;
1212
- string source_branch = 4; // Source branch name (auto-detected if empty)
1213
- string target_branch = 5; // Target branch name (default: "main")
1214
- reserved 6; // Removed: linked_issues (use Link system instead)
1215
- repeated string reviewers = 7; // Reviewer usernames/identifiers
1216
- int32 priority = 8; // 1 = highest priority, 0 = use default
1217
- string status = 9; // default: "draft"
1218
- map<string, string> custom_fields = 10;
1219
- string template = 11; // Optional template name (without .md extension)
1220
- }
1221
-
1222
- message CreatePrResponse {
1223
- bool success = 1;
1224
- string error = 2;
1225
-
1226
- // The created PR ID (UUID)
1227
- string id = 3;
1228
-
1229
- // Human-readable display number (1, 2, 3...)
1230
- uint32 display_number = 4;
1231
-
1232
- // Paths to created files
1233
- repeated string created_files = 5;
1234
-
1235
- // The updated manifest
1236
- Manifest manifest = 6;
1237
-
1238
- // Git info
1239
- string detected_source_branch = 7; // The source branch that was used
1240
- }
1241
-
1242
- message GetNextPrNumberRequest {
1243
- string project_path = 1;
1244
- }
1245
-
1246
- message GetNextPrNumberResponse {
1247
- uint32 next_number = 1;
1248
- }
1249
-
1250
- // PullRequest represents a full PR with all its data
1251
- message PullRequest {
1252
- // UUID-based PR ID (folder name)
1253
- string id = 1;
1254
-
1255
- // Human-readable display number (1, 2, 3...)
1256
- uint32 display_number = 2;
1257
-
1258
- string title = 3;
1259
- string description = 4;
1260
- PrMetadata metadata = 5;
1261
- }
1262
-
1263
- message PrMetadata {
1264
- // Human-readable display number (1, 2, 3...)
1265
- uint32 display_number = 1;
1266
- string status = 2; // e.g., "draft", "open", "merged", "closed"
1267
- string source_branch = 3;
1268
- string target_branch = 4;
1269
- reserved 5; // Removed: linked_issues (use Link system instead)
1270
- repeated string reviewers = 6;
1271
- int32 priority = 7; // 1 = highest priority, N = lowest
1272
- string priority_label = 8; // Human-readable label (e.g., "high", "P1")
1273
- string created_at = 9; // ISO timestamp
1274
- string updated_at = 10; // ISO timestamp
1275
- string merged_at = 11; // ISO timestamp (empty if not merged)
1276
- string closed_at = 12; // ISO timestamp (empty if not closed)
1277
- map<string, string> custom_fields = 13;
1278
- string deleted_at = 14; // ISO timestamp when soft-deleted (empty if not deleted)
1279
- }
1280
-
1281
- message GetPrRequest {
1282
- string project_path = 1;
1283
- string pr_id = 2; // UUID
1284
- }
1285
-
1286
- message GetPrByDisplayNumberRequest {
1287
- string project_path = 1;
1288
- uint32 display_number = 2; // Human-readable number (1, 2, 3...)
1289
- }
1290
-
1291
- // Wrapper response for GetPr and GetPrByDisplayNumber RPCs
1292
- message GetPrResponse {
1293
- bool success = 1;
1294
- string error = 2;
1295
- PullRequest pr = 3;
1296
- }
1297
-
1298
- // ============ Global PR Search Messages ============
1299
-
1300
- message GetPrsByUuidRequest {
1301
- string uuid = 1; // The UUID to search for (must be valid UUID format)
1302
- }
1303
-
1304
- // A PR with its source project path
1305
- message PrWithProject {
1306
- PullRequest pr = 1;
1307
- string project_path = 2; // Absolute path to the project where this PR was found
1308
- string project_name = 3; // Human-readable project name (directory name)
1309
- string display_path = 4; // Human-readable path with ~/ for home dir (use for display only)
1310
- }
1311
-
1312
- message GetPrsByUuidResponse {
1313
- repeated PrWithProject prs = 1;
1314
- int32 total_count = 2;
1315
- repeated string errors = 3; // Non-fatal errors (e.g., projects that couldn't be accessed)
1316
- }
1317
-
1318
- message ListPrsRequest {
1319
- string project_path = 1;
1320
-
1321
- // Optional filters
1322
- string status = 2; // Filter by status (empty = all)
1323
- string source_branch = 3; // Filter by source branch (empty = all)
1324
- string target_branch = 4; // Filter by target branch (empty = all)
1325
- int32 priority = 5; // Filter by priority (0 = all)
1326
- bool include_deleted = 6; // Include soft-deleted PRs (default: false)
1327
- }
1328
-
1329
- message ListPrsResponse {
1330
- repeated PullRequest prs = 1;
1331
- int32 total_count = 2;
1332
- }
1333
-
1334
- message UpdatePrRequest {
1335
- string project_path = 1;
1336
- string pr_id = 2; // UUID or display number
1337
-
1338
- // Fields to update (empty string = don't update, 0 = don't update priority)
1339
- string title = 3;
1340
- string description = 4;
1341
- string status = 5;
1342
- string source_branch = 6;
1343
- string target_branch = 7;
1344
- reserved 8; // Removed: linked_issues (use Link system instead)
1345
- repeated string reviewers = 9;
1346
- int32 priority = 10; // 0 = don't update, otherwise 1-N
1347
- map<string, string> custom_fields = 11;
1348
- }
1349
-
1350
- message UpdatePrResponse {
1351
- bool success = 1;
1352
- string error = 2;
1353
- PullRequest pr = 3; // The updated PR
1354
- Manifest manifest = 4;
1355
- }
1356
-
1357
- message DeletePrRequest {
1358
- string project_path = 1;
1359
- string pr_id = 2; // UUID or display number
1360
- }
1361
-
1362
- message DeletePrResponse {
1363
- bool success = 1;
1364
- string error = 2;
1365
- Manifest manifest = 3; // Updated manifest after deletion
1366
- }
1367
-
1368
- // Soft-delete a PR (set deleted_at timestamp)
1369
- message SoftDeletePrRequest {
1370
- string project_path = 1;
1371
- string pr_id = 2; // UUID or display number
1372
- }
1373
-
1374
- message SoftDeletePrResponse {
1375
- bool success = 1;
1376
- string error = 2;
1377
- PullRequest pr = 3; // The soft-deleted PR (with deleted_at set)
1378
- Manifest manifest = 4;
1379
- }
1380
-
1381
- // Restore a soft-deleted PR (clear deleted_at timestamp)
1382
- message RestorePrRequest {
1383
- string project_path = 1;
1384
- string pr_id = 2; // UUID or display number
1385
- }
1386
-
1387
- message RestorePrResponse {
1388
- bool success = 1;
1389
- string error = 2;
1390
- PullRequest pr = 3; // The restored PR (with deleted_at cleared)
1391
- Manifest manifest = 4;
1392
- }
1393
-
1394
1225
  // ============ Temp Workspace Messages ============
1395
1226
 
1396
1227
  // Action types for workspace operations
@@ -1545,6 +1376,8 @@ message ListTempWorkspacesResponse {
1545
1376
  repeated TempWorkspace workspaces = 1;
1546
1377
  uint32 total_count = 2;
1547
1378
  uint32 expired_count = 3; // Number of expired workspaces (not included unless include_expired)
1379
+ bool success = 4;
1380
+ string error = 5;
1548
1381
  }
1549
1382
 
1550
1383
  message CloseTempWorkspaceRequest {
@@ -1576,12 +1409,12 @@ enum LinkTargetType {
1576
1409
  LINK_TARGET_TYPE_UNSPECIFIED = 0;
1577
1410
  LINK_TARGET_TYPE_ISSUE = 1;
1578
1411
  LINK_TARGET_TYPE_DOC = 2;
1579
- LINK_TARGET_TYPE_PR = 3;
1412
+ reserved 3; // Removed: LINK_TARGET_TYPE_PR
1580
1413
  }
1581
1414
 
1582
1415
  // A link between two entities
1583
1416
  message Link {
1584
- string target_id = 1; // Target entity ID (UUID for issues/PRs, slug for docs)
1417
+ string target_id = 1; // Target entity ID (UUID for issues, slug for docs)
1585
1418
  LinkTargetType target_type = 2; // Type of the target entity
1586
1419
  string link_type = 3; // Relationship type (e.g., "blocks", "parent-of")
1587
1420
  string created_at = 4; // ISO timestamp when link was created
@@ -1630,6 +1463,8 @@ message ListLinksRequest {
1630
1463
  message ListLinksResponse {
1631
1464
  repeated Link links = 1;
1632
1465
  int32 total_count = 2;
1466
+ bool success = 3;
1467
+ string error = 4;
1633
1468
  }
1634
1469
 
1635
1470
  // Get all available link types (builtin + custom)
@@ -1698,6 +1533,8 @@ message ListUsersRequest {
1698
1533
  message ListUsersResponse {
1699
1534
  repeated User users = 1;
1700
1535
  int32 total_count = 2;
1536
+ bool success = 3;
1537
+ string error = 4;
1701
1538
  }
1702
1539
 
1703
1540
  message UpdateUserRequest {
@@ -1780,7 +1617,7 @@ message SyncUsersResponse {
1780
1617
  enum EntityType {
1781
1618
  ENTITY_TYPE_UNSPECIFIED = 0;
1782
1619
  ENTITY_TYPE_ISSUE = 1;
1783
- ENTITY_TYPE_PR = 2;
1620
+ reserved 2; // Removed: ENTITY_TYPE_PR
1784
1621
  ENTITY_TYPE_DOC = 3;
1785
1622
  }
1786
1623
 
@@ -1807,7 +1644,7 @@ message EntityAction {
1807
1644
  // Request to get available actions for an entity
1808
1645
  message GetEntityActionsRequest {
1809
1646
  string project_path = 1; // Project path for config/state lookup
1810
- EntityType entity_type = 2; // Type of entity (issue, PR, doc)
1647
+ EntityType entity_type = 2; // Type of entity (issue, doc)
1811
1648
  string entity_id = 3; // Optional: entity ID for contextual actions (empty = general actions like "create")
1812
1649
  }
1813
1650
 
@@ -1823,7 +1660,7 @@ message GetEntityActionsResponse {
1823
1660
  // Sync conflict information
1824
1661
  message SyncConflict {
1825
1662
  string id = 1; // Unique conflict ID
1826
- string item_type = 2; // Type of item (issue, doc, pr)
1663
+ string item_type = 2; // Type of item (issue, doc)
1827
1664
  string item_id = 3; // ID of the item with conflict
1828
1665
  string file_path = 4; // Relative file path within .centy
1829
1666
  string created_at = 5; // When the conflict was detected
@@ -1929,3 +1766,4 @@ message SyncPushResponse {
1929
1766
  string error = 2;
1930
1767
  bool had_changes = 3; // Whether any changes were pushed
1931
1768
  }
1769
+