centy 0.8.0 → 0.8.2

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 (521) hide show
  1. package/dist/commands/add/asset.d.ts.map +1 -1
  2. package/dist/commands/add/asset.js +0 -8
  3. package/dist/commands/add/asset.js.map +1 -1
  4. package/dist/commands/close.d.ts.map +1 -1
  5. package/dist/commands/close.js +2 -6
  6. package/dist/commands/close.js.map +1 -1
  7. package/dist/commands/cockpit.d.ts.map +1 -1
  8. package/dist/commands/cockpit.js +0 -3
  9. package/dist/commands/cockpit.js.map +1 -1
  10. package/dist/commands/comment/add.d.ts +19 -0
  11. package/dist/commands/comment/add.d.ts.map +1 -0
  12. package/dist/commands/comment/add.js +84 -0
  13. package/dist/commands/comment/add.js.map +1 -0
  14. package/dist/commands/comment/delete.d.ts +18 -0
  15. package/dist/commands/comment/delete.d.ts.map +1 -0
  16. package/dist/commands/comment/delete.js +80 -0
  17. package/dist/commands/comment/delete.js.map +1 -0
  18. package/dist/commands/comment/list.d.ts +17 -0
  19. package/dist/commands/comment/list.d.ts.map +1 -0
  20. package/dist/commands/comment/list.js +71 -0
  21. package/dist/commands/comment/list.js.map +1 -0
  22. package/dist/commands/comment/update.d.ts +18 -0
  23. package/dist/commands/comment/update.d.ts.map +1 -0
  24. package/dist/commands/comment/update.js +71 -0
  25. package/dist/commands/comment/update.js.map +1 -0
  26. package/dist/commands/compact.d.ts.map +1 -1
  27. package/dist/commands/compact.js +11 -20
  28. package/dist/commands/compact.js.map +1 -1
  29. package/dist/commands/config.d.ts.map +1 -1
  30. package/dist/commands/config.js +0 -5
  31. package/dist/commands/config.js.map +1 -1
  32. package/dist/commands/create.d.ts +9 -7
  33. package/dist/commands/create.d.ts.map +1 -1
  34. package/dist/commands/create.js +10 -39
  35. package/dist/commands/create.js.map +1 -1
  36. package/dist/commands/daemon/autostart.d.ts.map +1 -1
  37. package/dist/commands/daemon/autostart.js +0 -7
  38. package/dist/commands/daemon/autostart.js.map +1 -1
  39. package/dist/commands/daemon/status.d.ts.map +1 -1
  40. package/dist/commands/daemon/status.js +0 -6
  41. package/dist/commands/daemon/status.js.map +1 -1
  42. package/dist/commands/delete/asset.d.ts.map +1 -1
  43. package/dist/commands/delete/asset.js +0 -6
  44. package/dist/commands/delete/asset.js.map +1 -1
  45. package/dist/commands/delete.d.ts.map +1 -1
  46. package/dist/commands/delete.js +0 -6
  47. package/dist/commands/delete.js.map +1 -1
  48. package/dist/commands/duplicate.d.ts.map +1 -1
  49. package/dist/commands/duplicate.js +0 -6
  50. package/dist/commands/duplicate.js.map +1 -1
  51. package/dist/commands/edit.d.ts +9 -0
  52. package/dist/commands/edit.d.ts.map +1 -0
  53. package/dist/commands/edit.js +14 -0
  54. package/dist/commands/edit.js.map +1 -0
  55. package/dist/commands/get/asset.d.ts.map +1 -1
  56. package/dist/commands/get/asset.js +0 -9
  57. package/dist/commands/get/asset.js.map +1 -1
  58. package/dist/commands/get/project.d.ts.map +1 -1
  59. package/dist/commands/get/project.js +0 -8
  60. package/dist/commands/get/project.js.map +1 -1
  61. package/dist/commands/get.d.ts.map +1 -1
  62. package/dist/commands/get.js +0 -6
  63. package/dist/commands/get.js.map +1 -1
  64. package/dist/commands/info.d.ts.map +1 -1
  65. package/dist/commands/info.js +0 -5
  66. package/dist/commands/info.js.map +1 -1
  67. package/dist/commands/init.d.ts.map +1 -1
  68. package/dist/commands/init.js +0 -6
  69. package/dist/commands/init.js.map +1 -1
  70. package/dist/commands/item-type/create.d.ts.map +1 -1
  71. package/dist/commands/item-type/create.js +0 -6
  72. package/dist/commands/item-type/create.js.map +1 -1
  73. package/dist/commands/item-type/list.d.ts.map +1 -1
  74. package/dist/commands/item-type/list.js +0 -5
  75. package/dist/commands/item-type/list.js.map +1 -1
  76. package/dist/commands/link.d.ts.map +1 -1
  77. package/dist/commands/link.js +2 -10
  78. package/dist/commands/link.js.map +1 -1
  79. package/dist/commands/links.d.ts.map +1 -1
  80. package/dist/commands/links.js +2 -9
  81. package/dist/commands/links.js.map +1 -1
  82. package/dist/commands/list/assets.d.ts.map +1 -1
  83. package/dist/commands/list/assets.js +0 -6
  84. package/dist/commands/list/assets.js.map +1 -1
  85. package/dist/commands/list/items.d.ts +22 -0
  86. package/dist/commands/list/items.d.ts.map +1 -0
  87. package/dist/commands/list/items.js +86 -0
  88. package/dist/commands/list/items.js.map +1 -0
  89. package/dist/commands/list/link-types.d.ts.map +1 -1
  90. package/dist/commands/list/link-types.js +1 -6
  91. package/dist/commands/list/link-types.js.map +1 -1
  92. package/dist/commands/list/projects.d.ts.map +1 -1
  93. package/dist/commands/list/projects.js +0 -6
  94. package/dist/commands/list/projects.js.map +1 -1
  95. package/dist/commands/list.d.ts +1 -0
  96. package/dist/commands/list.d.ts.map +1 -1
  97. package/dist/commands/list.js +25 -53
  98. package/dist/commands/list.js.map +1 -1
  99. package/dist/commands/llm.d.ts.map +1 -1
  100. package/dist/commands/llm.js +1 -8
  101. package/dist/commands/llm.js.map +1 -1
  102. package/dist/commands/manifest.d.ts.map +1 -1
  103. package/dist/commands/manifest.js +0 -6
  104. package/dist/commands/manifest.js.map +1 -1
  105. package/dist/commands/move.d.ts.map +1 -1
  106. package/dist/commands/move.js +0 -6
  107. package/dist/commands/move.js.map +1 -1
  108. package/dist/commands/next.d.ts +19 -0
  109. package/dist/commands/next.d.ts.map +1 -0
  110. package/dist/commands/next.js +58 -0
  111. package/dist/commands/next.js.map +1 -0
  112. package/dist/commands/org/create.d.ts.map +1 -1
  113. package/dist/commands/org/create.js +0 -6
  114. package/dist/commands/org/create.js.map +1 -1
  115. package/dist/commands/org/delete.d.ts.map +1 -1
  116. package/dist/commands/org/delete.js +1 -7
  117. package/dist/commands/org/delete.js.map +1 -1
  118. package/dist/commands/org/get.d.ts.map +1 -1
  119. package/dist/commands/org/get.js +0 -7
  120. package/dist/commands/org/get.js.map +1 -1
  121. package/dist/commands/org/list.d.ts.map +1 -1
  122. package/dist/commands/org/list.js +0 -6
  123. package/dist/commands/org/list.js.map +1 -1
  124. package/dist/commands/org/update.d.ts.map +1 -1
  125. package/dist/commands/org/update.js +0 -7
  126. package/dist/commands/org/update.js.map +1 -1
  127. package/dist/commands/project/archive.d.ts.map +1 -1
  128. package/dist/commands/project/archive.js +0 -7
  129. package/dist/commands/project/archive.js.map +1 -1
  130. package/dist/commands/project/favorite.d.ts.map +1 -1
  131. package/dist/commands/project/favorite.js +0 -7
  132. package/dist/commands/project/favorite.js.map +1 -1
  133. package/dist/commands/project/org.d.ts.map +1 -1
  134. package/dist/commands/project/org.js +0 -9
  135. package/dist/commands/project/org.js.map +1 -1
  136. package/dist/commands/project/title.d.ts.map +1 -1
  137. package/dist/commands/project/title.js +0 -8
  138. package/dist/commands/project/title.js.map +1 -1
  139. package/dist/commands/register/project.d.ts.map +1 -1
  140. package/dist/commands/register/project.js +1 -7
  141. package/dist/commands/register/project.js.map +1 -1
  142. package/dist/commands/restart.d.ts.map +1 -1
  143. package/dist/commands/restart.js +0 -6
  144. package/dist/commands/restart.js.map +1 -1
  145. package/dist/commands/restore.d.ts.map +1 -1
  146. package/dist/commands/restore.js +0 -6
  147. package/dist/commands/restore.js.map +1 -1
  148. package/dist/commands/show.d.ts.map +1 -1
  149. package/dist/commands/show.js +0 -3
  150. package/dist/commands/show.js.map +1 -1
  151. package/dist/commands/shutdown.d.ts.map +1 -1
  152. package/dist/commands/shutdown.js +0 -6
  153. package/dist/commands/shutdown.js.map +1 -1
  154. package/dist/commands/start.d.ts.map +1 -1
  155. package/dist/commands/start.js +1 -6
  156. package/dist/commands/start.js.map +1 -1
  157. package/dist/commands/sync/users.d.ts.map +1 -1
  158. package/dist/commands/sync/users.js +0 -5
  159. package/dist/commands/sync/users.js.map +1 -1
  160. package/dist/commands/unlink.d.ts +2 -5
  161. package/dist/commands/unlink.d.ts.map +1 -1
  162. package/dist/commands/unlink.js +9 -38
  163. package/dist/commands/unlink.js.map +1 -1
  164. package/dist/commands/untrack/org.d.ts +17 -0
  165. package/dist/commands/untrack/org.d.ts.map +1 -0
  166. package/dist/commands/untrack/org.js +77 -0
  167. package/dist/commands/untrack/org.js.map +1 -0
  168. package/dist/commands/untrack/project.d.ts.map +1 -1
  169. package/dist/commands/untrack/project.js +0 -7
  170. package/dist/commands/untrack/project.js.map +1 -1
  171. package/dist/commands/update.d.ts +10 -7
  172. package/dist/commands/update.d.ts.map +1 -1
  173. package/dist/commands/update.js +13 -33
  174. package/dist/commands/update.js.map +1 -1
  175. package/dist/commands/user/create.d.ts.map +1 -1
  176. package/dist/commands/user/create.js +0 -5
  177. package/dist/commands/user/create.js.map +1 -1
  178. package/dist/commands/user/delete.d.ts.map +1 -1
  179. package/dist/commands/user/delete.js +0 -7
  180. package/dist/commands/user/delete.js.map +1 -1
  181. package/dist/commands/user/list.d.ts.map +1 -1
  182. package/dist/commands/user/list.js +0 -6
  183. package/dist/commands/user/list.js.map +1 -1
  184. package/dist/commands/user/update.d.ts.map +1 -1
  185. package/dist/commands/user/update.js +0 -7
  186. package/dist/commands/user/update.js.map +1 -1
  187. package/dist/commands/version.d.ts.map +1 -1
  188. package/dist/commands/version.js +0 -5
  189. package/dist/commands/version.js.map +1 -1
  190. package/dist/commands/workspace/cleanup.d.ts.map +1 -1
  191. package/dist/commands/workspace/cleanup.js +0 -4
  192. package/dist/commands/workspace/cleanup.js.map +1 -1
  193. package/dist/commands/workspace/close.d.ts.map +1 -1
  194. package/dist/commands/workspace/close.js +0 -6
  195. package/dist/commands/workspace/close.js.map +1 -1
  196. package/dist/commands/workspace/list.d.ts.map +1 -1
  197. package/dist/commands/workspace/list.js +0 -6
  198. package/dist/commands/workspace/list.js.map +1 -1
  199. package/dist/commands/workspace/new.d.ts.map +1 -1
  200. package/dist/commands/workspace/new.js +12 -10
  201. package/dist/commands/workspace/new.js.map +1 -1
  202. package/dist/commands/workspace/open.d.ts.map +1 -1
  203. package/dist/commands/workspace/open.js +13 -13
  204. package/dist/commands/workspace/open.js.map +1 -1
  205. package/dist/daemon/check-daemon-connection.d.ts.map +1 -1
  206. package/dist/daemon/check-daemon-connection.js +18 -13
  207. package/dist/daemon/check-daemon-connection.js.map +1 -1
  208. package/dist/daemon/daemon-control-service.d.ts.map +1 -1
  209. package/dist/daemon/daemon-control-service.js +2 -5
  210. package/dist/daemon/daemon-control-service.js.map +1 -1
  211. package/dist/daemon/daemon-duplicate-doc.d.ts +2 -2
  212. package/dist/daemon/daemon-duplicate-doc.d.ts.map +1 -1
  213. package/dist/daemon/daemon-duplicate-doc.js +4 -1
  214. package/dist/daemon/daemon-duplicate-doc.js.map +1 -1
  215. package/dist/daemon/daemon-duplicate-issue.d.ts +2 -2
  216. package/dist/daemon/daemon-duplicate-issue.d.ts.map +1 -1
  217. package/dist/daemon/daemon-duplicate-issue.js +4 -1
  218. package/dist/daemon/daemon-duplicate-issue.js.map +1 -1
  219. package/dist/daemon/daemon-get-doc.d.ts +2 -2
  220. package/dist/daemon/daemon-get-doc.d.ts.map +1 -1
  221. package/dist/daemon/daemon-get-doc.js +6 -3
  222. package/dist/daemon/daemon-get-doc.js.map +1 -1
  223. package/dist/daemon/daemon-get-docs-by-slug.d.ts +4 -2
  224. package/dist/daemon/daemon-get-docs-by-slug.d.ts.map +1 -1
  225. package/dist/daemon/daemon-get-docs-by-slug.js +4 -1
  226. package/dist/daemon/daemon-get-docs-by-slug.js.map +1 -1
  227. package/dist/daemon/daemon-get-issue-by-display-number.d.ts +5 -2
  228. package/dist/daemon/daemon-get-issue-by-display-number.d.ts.map +1 -1
  229. package/dist/daemon/daemon-get-issue-by-display-number.js +8 -3
  230. package/dist/daemon/daemon-get-issue-by-display-number.js.map +1 -1
  231. package/dist/daemon/daemon-get-issue.d.ts +2 -2
  232. package/dist/daemon/daemon-get-issue.d.ts.map +1 -1
  233. package/dist/daemon/daemon-get-issue.js +6 -3
  234. package/dist/daemon/daemon-get-issue.js.map +1 -1
  235. package/dist/daemon/daemon-get-issues-by-uuid.d.ts +4 -2
  236. package/dist/daemon/daemon-get-issues-by-uuid.d.ts.map +1 -1
  237. package/dist/daemon/daemon-get-issues-by-uuid.js +4 -1
  238. package/dist/daemon/daemon-get-issues-by-uuid.js.map +1 -1
  239. package/dist/daemon/daemon-get-project-version.d.ts.map +1 -1
  240. package/dist/daemon/daemon-get-project-version.js +0 -1
  241. package/dist/daemon/daemon-get-project-version.js.map +1 -1
  242. package/dist/daemon/daemon-list-docs.d.ts +2 -2
  243. package/dist/daemon/daemon-list-docs.d.ts.map +1 -1
  244. package/dist/daemon/daemon-list-docs.js +4 -1
  245. package/dist/daemon/daemon-list-docs.js.map +1 -1
  246. package/dist/daemon/daemon-list-issues.d.ts +2 -2
  247. package/dist/daemon/daemon-list-issues.d.ts.map +1 -1
  248. package/dist/daemon/daemon-list-issues.js +4 -1
  249. package/dist/daemon/daemon-list-issues.js.map +1 -1
  250. package/dist/daemon/daemon-list-items-across-projects.d.ts +6 -0
  251. package/dist/daemon/daemon-list-items-across-projects.d.ts.map +1 -0
  252. package/dist/daemon/daemon-list-items-across-projects.js +9 -0
  253. package/dist/daemon/daemon-list-items-across-projects.js.map +1 -0
  254. package/dist/daemon/daemon-list-items-globally.d.ts +6 -0
  255. package/dist/daemon/daemon-list-items-globally.d.ts.map +1 -0
  256. package/dist/daemon/daemon-list-items-globally.js +22 -0
  257. package/dist/daemon/daemon-list-items-globally.js.map +1 -0
  258. package/dist/daemon/daemon-move-doc.d.ts +2 -2
  259. package/dist/daemon/daemon-move-doc.d.ts.map +1 -1
  260. package/dist/daemon/daemon-move-doc.js +4 -1
  261. package/dist/daemon/daemon-move-doc.js.map +1 -1
  262. package/dist/daemon/daemon-move-issue.d.ts +2 -2
  263. package/dist/daemon/daemon-move-issue.d.ts.map +1 -1
  264. package/dist/daemon/daemon-move-issue.js +4 -1
  265. package/dist/daemon/daemon-move-issue.js.map +1 -1
  266. package/dist/daemon/daemon-update-doc.d.ts +2 -2
  267. package/dist/daemon/daemon-update-doc.d.ts.map +1 -1
  268. package/dist/daemon/daemon-update-doc.js +4 -1
  269. package/dist/daemon/daemon-update-doc.js.map +1 -1
  270. package/dist/daemon/daemon-update-issue.d.ts +2 -2
  271. package/dist/daemon/daemon-update-issue.d.ts.map +1 -1
  272. package/dist/daemon/daemon-update-issue.js +4 -1
  273. package/dist/daemon/daemon-update-issue.js.map +1 -1
  274. package/dist/daemon/generated/centy/v1/centy.d.ts +164 -640
  275. package/dist/daemon/generated/centy/v1/centy.d.ts.map +1 -1
  276. package/dist/daemon/generated/centy/v1/centy.js +0 -42
  277. package/dist/daemon/generated/centy/v1/centy.js.map +1 -1
  278. package/dist/daemon/generated/centy/v1/generic_item.d.ts +56 -98
  279. package/dist/daemon/generated/centy/v1/generic_item.d.ts.map +1 -1
  280. package/dist/daemon/generated/centy/v1/generic_item.js +1 -13
  281. package/dist/daemon/generated/centy/v1/generic_item.js.map +1 -1
  282. package/dist/daemon/grpc-client-data.d.ts +2 -11
  283. package/dist/daemon/grpc-client-data.d.ts.map +1 -1
  284. package/dist/daemon/grpc-client-extended.d.ts +1 -3
  285. package/dist/daemon/grpc-client-extended.d.ts.map +1 -1
  286. package/dist/daemon/grpc-client-init.d.ts +2 -12
  287. package/dist/daemon/grpc-client-init.d.ts.map +1 -1
  288. package/dist/daemon/grpc-client-items.d.ts +3 -2
  289. package/dist/daemon/grpc-client-items.d.ts.map +1 -1
  290. package/dist/daemon/grpc-config.d.ts.map +1 -1
  291. package/dist/daemon/grpc-config.js.map +1 -1
  292. package/dist/daemon/grpc-utils.d.ts.map +1 -1
  293. package/dist/daemon/grpc-utils.js +0 -1
  294. package/dist/daemon/grpc-utils.js.map +1 -1
  295. package/dist/daemon/load-proto.d.ts.map +1 -1
  296. package/dist/daemon/load-proto.js +11 -7
  297. package/dist/daemon/load-proto.js.map +1 -1
  298. package/dist/daemon/parse-error-response.d.ts.map +1 -1
  299. package/dist/daemon/parse-error-response.js +4 -3
  300. package/dist/daemon/parse-error-response.js.map +1 -1
  301. package/dist/daemon/types/feature.d.ts +2 -2
  302. package/dist/daemon/types/feature.d.ts.map +1 -1
  303. package/dist/daemon/types/feature.js +0 -1
  304. package/dist/daemon/types/feature.js.map +1 -1
  305. package/dist/daemon/types/global-search.d.ts.map +1 -1
  306. package/dist/daemon/types/global-search.js +0 -1
  307. package/dist/daemon/types/global-search.js.map +1 -1
  308. package/dist/daemon/types/reconciliation.d.ts +19 -0
  309. package/dist/daemon/types/reconciliation.d.ts.map +1 -0
  310. package/dist/daemon/types/reconciliation.js +2 -0
  311. package/dist/daemon/types/reconciliation.js.map +1 -0
  312. package/dist/daemon/types.d.ts +1 -0
  313. package/dist/daemon/types.d.ts.map +1 -1
  314. package/dist/daemon/types.js +1 -0
  315. package/dist/daemon/types.js.map +1 -1
  316. package/dist/flags/create-flags.d.ts +12 -0
  317. package/dist/flags/create-flags.d.ts.map +1 -0
  318. package/dist/flags/create-flags.js +42 -0
  319. package/dist/flags/create-flags.js.map +1 -0
  320. package/dist/flags/update-flags.d.ts +13 -0
  321. package/dist/flags/update-flags.d.ts.map +1 -0
  322. package/dist/flags/update-flags.js +39 -0
  323. package/dist/flags/update-flags.js.map +1 -0
  324. package/dist/help.d.ts +6 -1
  325. package/dist/help.d.ts.map +1 -1
  326. package/dist/help.js +20 -1
  327. package/dist/help.js.map +1 -1
  328. package/dist/hooks/postrun.d.ts.map +1 -1
  329. package/dist/hooks/postrun.js +1 -4
  330. package/dist/hooks/postrun.js.map +1 -1
  331. package/dist/hooks/prerun.d.ts.map +1 -1
  332. package/dist/hooks/prerun.js +0 -1
  333. package/dist/hooks/prerun.js.map +1 -1
  334. package/dist/lib/assert/assert-initialized.d.ts.map +1 -1
  335. package/dist/lib/assert/assert-initialized.js +0 -1
  336. package/dist/lib/assert/assert-initialized.js.map +1 -1
  337. package/dist/lib/autostart/launchd.d.ts.map +1 -1
  338. package/dist/lib/autostart/launchd.js +0 -10
  339. package/dist/lib/autostart/launchd.js.map +1 -1
  340. package/dist/lib/compact/apply-llm-response.d.ts.map +1 -1
  341. package/dist/lib/compact/apply-llm-response.js +0 -2
  342. package/dist/lib/compact/apply-llm-response.js.map +1 -1
  343. package/dist/lib/compact/format-dry-run.d.ts +2 -2
  344. package/dist/lib/compact/format-dry-run.d.ts.map +1 -1
  345. package/dist/lib/compact/format-dry-run.js +2 -1
  346. package/dist/lib/compact/format-dry-run.js.map +1 -1
  347. package/dist/lib/compact/mark-issues.d.ts.map +1 -1
  348. package/dist/lib/compact/mark-issues.js +0 -1
  349. package/dist/lib/compact/mark-issues.js.map +1 -1
  350. package/dist/lib/compact/parse-llm-response.d.ts.map +1 -1
  351. package/dist/lib/compact/parse-llm-response.js +0 -1
  352. package/dist/lib/compact/parse-llm-response.js.map +1 -1
  353. package/dist/lib/compact/save-results.d.ts.map +1 -1
  354. package/dist/lib/compact/save-results.js +0 -1
  355. package/dist/lib/compact/save-results.js.map +1 -1
  356. package/dist/lib/create-item-type/features.d.ts.map +1 -1
  357. package/dist/lib/create-item-type/features.js +2 -1
  358. package/dist/lib/create-item-type/features.js.map +1 -1
  359. package/dist/lib/find-binary/find-binary.d.ts.map +1 -1
  360. package/dist/lib/find-binary/find-binary.js +1 -6
  361. package/dist/lib/find-binary/find-binary.js.map +1 -1
  362. package/dist/lib/find-binary/get-search-paths.d.ts.map +1 -1
  363. package/dist/lib/find-binary/get-search-paths.js +1 -2
  364. package/dist/lib/find-binary/get-search-paths.js.map +1 -1
  365. package/dist/lib/get-issue/handle-global-search.d.ts +2 -2
  366. package/dist/lib/get-issue/handle-global-search.d.ts.map +1 -1
  367. package/dist/lib/get-issue/handle-global-search.js +7 -7
  368. package/dist/lib/get-issue/handle-global-search.js.map +1 -1
  369. package/dist/lib/init/gather-decisions.d.ts.map +1 -1
  370. package/dist/lib/init/gather-decisions.js +0 -1
  371. package/dist/lib/init/gather-decisions.js.map +1 -1
  372. package/dist/lib/init/init.d.ts +0 -1
  373. package/dist/lib/init/init.d.ts.map +1 -1
  374. package/dist/lib/init/init.js +4 -8
  375. package/dist/lib/init/init.js.map +1 -1
  376. package/dist/lib/init/type-converters.d.ts.map +1 -1
  377. package/dist/lib/init/type-converters.js +0 -1
  378. package/dist/lib/init/type-converters.js.map +1 -1
  379. package/dist/lib/install-daemon/extract.d.ts +3 -0
  380. package/dist/lib/install-daemon/extract.d.ts.map +1 -1
  381. package/dist/lib/install-daemon/extract.js +7 -4
  382. package/dist/lib/install-daemon/extract.js.map +1 -1
  383. package/dist/lib/install-daemon/make-executable.d.ts.map +1 -1
  384. package/dist/lib/install-daemon/make-executable.js +0 -1
  385. package/dist/lib/install-daemon/make-executable.js.map +1 -1
  386. package/dist/lib/install-daemon/platform.d.ts.map +1 -1
  387. package/dist/lib/install-daemon/platform.js +0 -1
  388. package/dist/lib/install-daemon/platform.js.map +1 -1
  389. package/dist/lib/install-script-url.d.ts.map +1 -1
  390. package/dist/lib/install-script-url.js +4 -6
  391. package/dist/lib/install-script-url.js.map +1 -1
  392. package/dist/lib/launch-tui/tui-binary-exists.js +0 -1
  393. package/dist/lib/launch-tui/tui-binary-exists.js.map +1 -1
  394. package/dist/lib/launch-tui-manager/tui-manager-binary-exists.js +0 -1
  395. package/dist/lib/launch-tui-manager/tui-manager-binary-exists.js.map +1 -1
  396. package/dist/lib/list-items/format-item-line.d.ts +6 -0
  397. package/dist/lib/list-items/format-item-line.d.ts.map +1 -0
  398. package/dist/lib/list-items/format-item-line.js +13 -0
  399. package/dist/lib/list-items/format-item-line.js.map +1 -0
  400. package/dist/lib/list-items/handle-global-list.d.ts +2 -0
  401. package/dist/lib/list-items/handle-global-list.d.ts.map +1 -0
  402. package/dist/lib/list-items/handle-global-list.js +44 -0
  403. package/dist/lib/list-items/handle-global-list.js.map +1 -0
  404. package/dist/lib/list-items/handle-project-list.d.ts +2 -0
  405. package/dist/lib/list-items/handle-project-list.d.ts.map +1 -0
  406. package/dist/lib/list-items/handle-project-list.js +44 -0
  407. package/dist/lib/list-items/handle-project-list.js.map +1 -0
  408. package/dist/lib/list-items/run-global-list.d.ts +4 -0
  409. package/dist/lib/list-items/run-global-list.d.ts.map +1 -0
  410. package/dist/lib/list-items/run-global-list.js +36 -0
  411. package/dist/lib/list-items/run-global-list.js.map +1 -0
  412. package/dist/lib/next-item/handle-global-next.d.ts +2 -0
  413. package/dist/lib/next-item/handle-global-next.d.ts.map +1 -0
  414. package/dist/lib/next-item/handle-global-next.js +24 -0
  415. package/dist/lib/next-item/handle-global-next.js.map +1 -0
  416. package/dist/lib/next-item/handle-project-next.d.ts +2 -0
  417. package/dist/lib/next-item/handle-project-next.d.ts.map +1 -0
  418. package/dist/lib/next-item/handle-project-next.js +43 -0
  419. package/dist/lib/next-item/handle-project-next.js.map +1 -0
  420. package/dist/lib/start/daemon-binary-exists.js +0 -1
  421. package/dist/lib/start/daemon-binary-exists.js.map +1 -1
  422. package/dist/utils/apply-link-flags.d.ts +10 -0
  423. package/dist/utils/apply-link-flags.d.ts.map +1 -0
  424. package/dist/utils/apply-link-flags.js +35 -0
  425. package/dist/utils/apply-link-flags.js.map +1 -0
  426. package/dist/utils/cross-project-search.d.ts +0 -4
  427. package/dist/utils/cross-project-search.d.ts.map +1 -1
  428. package/dist/utils/cross-project-search.js +0 -4
  429. package/dist/utils/cross-project-search.js.map +1 -1
  430. package/dist/utils/parse-custom-fields.d.ts.map +1 -1
  431. package/dist/utils/parse-custom-fields.js +1 -2
  432. package/dist/utils/parse-custom-fields.js.map +1 -1
  433. package/dist/utils/process-timeout-config.d.ts +0 -4
  434. package/dist/utils/process-timeout-config.d.ts.map +1 -1
  435. package/dist/utils/process-timeout-config.js +0 -5
  436. package/dist/utils/process-timeout-config.js.map +1 -1
  437. package/dist/utils/resolve-project-path.d.ts.map +1 -1
  438. package/dist/utils/resolve-project-path.js +6 -3
  439. package/dist/utils/resolve-project-path.js.map +1 -1
  440. package/oclif.manifest.json +655 -126
  441. package/package.json +3 -3
  442. package/proto/.husky/pre-commit +1 -0
  443. package/proto/README.md +19 -0
  444. package/proto/buf.yaml +1 -0
  445. package/proto/centy/v1/centy.proto +169 -666
  446. package/proto/centy/v1/generic_item.proto +47 -84
  447. package/proto/cspell.json +5 -0
  448. package/proto/package.json +11 -0
  449. package/proto/pnpm-lock.yaml +833 -0
  450. package/dist/daemon/daemon-get-next-issue-number.d.ts +0 -6
  451. package/dist/daemon/daemon-get-next-issue-number.d.ts.map +0 -1
  452. package/dist/daemon/daemon-get-next-issue-number.js +0 -9
  453. package/dist/daemon/daemon-get-next-issue-number.js.map +0 -1
  454. package/dist/lib/close/close-entity-error.d.ts +0 -4
  455. package/dist/lib/close/close-entity-error.d.ts.map +0 -1
  456. package/dist/lib/close/close-entity-error.js +0 -7
  457. package/dist/lib/close/close-entity-error.js.map +0 -1
  458. package/dist/lib/close/close-issue.d.ts +0 -2
  459. package/dist/lib/close/close-issue.d.ts.map +0 -1
  460. package/dist/lib/close/close-issue.js +0 -27
  461. package/dist/lib/close/close-issue.js.map +0 -1
  462. package/dist/lib/close/find-entity.d.ts +0 -8
  463. package/dist/lib/close/find-entity.d.ts.map +0 -1
  464. package/dist/lib/close/find-entity.js +0 -21
  465. package/dist/lib/close/find-entity.js.map +0 -1
  466. package/dist/lib/get-doc/cross-project-hint.d.ts +0 -6
  467. package/dist/lib/get-doc/cross-project-hint.d.ts.map +0 -1
  468. package/dist/lib/get-doc/cross-project-hint.js +0 -27
  469. package/dist/lib/get-doc/cross-project-hint.js.map +0 -1
  470. package/dist/lib/get-doc/format-doc-output.d.ts +0 -3
  471. package/dist/lib/get-doc/format-doc-output.d.ts.map +0 -1
  472. package/dist/lib/get-doc/format-doc-output.js +0 -8
  473. package/dist/lib/get-doc/format-doc-output.js.map +0 -1
  474. package/dist/lib/get-doc/handle-global-search.d.ts +0 -3
  475. package/dist/lib/get-doc/handle-global-search.d.ts.map +0 -1
  476. package/dist/lib/get-doc/handle-global-search.js +0 -33
  477. package/dist/lib/get-doc/handle-global-search.js.map +0 -1
  478. package/dist/lib/get-doc/handle-not-initialized.d.ts +0 -6
  479. package/dist/lib/get-doc/handle-not-initialized.d.ts.map +0 -1
  480. package/dist/lib/get-doc/handle-not-initialized.js +0 -21
  481. package/dist/lib/get-doc/handle-not-initialized.js.map +0 -1
  482. package/dist/lib/get-issue/cross-project-hint.d.ts +0 -6
  483. package/dist/lib/get-issue/cross-project-hint.d.ts.map +0 -1
  484. package/dist/lib/get-issue/cross-project-hint.js +0 -27
  485. package/dist/lib/get-issue/cross-project-hint.js.map +0 -1
  486. package/dist/lib/get-issue/format-issue-output.d.ts +0 -3
  487. package/dist/lib/get-issue/format-issue-output.d.ts.map +0 -1
  488. package/dist/lib/get-issue/format-issue-output.js +0 -14
  489. package/dist/lib/get-issue/format-issue-output.js.map +0 -1
  490. package/dist/lib/get-issue/handle-not-initialized.d.ts +0 -6
  491. package/dist/lib/get-issue/handle-not-initialized.d.ts.map +0 -1
  492. package/dist/lib/get-issue/handle-not-initialized.js +0 -22
  493. package/dist/lib/get-issue/handle-not-initialized.js.map +0 -1
  494. package/dist/lib/init/config-builder.d.ts +0 -9
  495. package/dist/lib/init/config-builder.d.ts.map +0 -1
  496. package/dist/lib/init/config-builder.js +0 -27
  497. package/dist/lib/init/config-builder.js.map +0 -1
  498. package/dist/lib/show/format-results.d.ts +0 -3
  499. package/dist/lib/show/format-results.d.ts.map +0 -1
  500. package/dist/lib/show/format-results.js +0 -19
  501. package/dist/lib/show/format-results.js.map +0 -1
  502. package/dist/lib/show/search-entities.d.ts +0 -6
  503. package/dist/lib/show/search-entities.d.ts.map +0 -1
  504. package/dist/lib/show/search-entities.js +0 -7
  505. package/dist/lib/show/search-entities.js.map +0 -1
  506. package/dist/utils/format-cross-project-hint.d.ts +0 -9
  507. package/dist/utils/format-cross-project-hint.d.ts.map +0 -1
  508. package/dist/utils/format-cross-project-hint.js +0 -17
  509. package/dist/utils/format-cross-project-hint.js.map +0 -1
  510. package/dist/utils/format-cross-project-json.d.ts +0 -9
  511. package/dist/utils/format-cross-project-json.d.ts.map +0 -1
  512. package/dist/utils/format-cross-project-json.js +0 -16
  513. package/dist/utils/format-cross-project-json.js.map +0 -1
  514. package/dist/utils/handle-not-initialized-with-search.d.ts +0 -31
  515. package/dist/utils/handle-not-initialized-with-search.d.ts.map +0 -1
  516. package/dist/utils/handle-not-initialized-with-search.js +0 -39
  517. package/dist/utils/handle-not-initialized-with-search.js.map +0 -1
  518. package/dist/utils/is-not-found-error.d.ts +0 -5
  519. package/dist/utils/is-not-found-error.d.ts.map +0 -1
  520. package/dist/utils/is-not-found-error.js +0 -16
  521. package/dist/utils/is-not-found-error.js.map +0 -1
@@ -9,51 +9,6 @@ service CentyDaemon {
9
9
  // Initialize a .centy folder in the specified directory
10
10
  rpc Init(InitRequest) returns (InitResponse);
11
11
 
12
- // Get reconciliation plan without executing it
13
- rpc GetReconciliationPlan(GetReconciliationPlanRequest) returns (ReconciliationPlan);
14
-
15
- // Execute reconciliation with user decisions
16
- rpc ExecuteReconciliation(ExecuteReconciliationRequest) returns (InitResponse);
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
12
  // Read the manifest
58
13
  rpc GetManifest(GetManifestRequest) returns (GetManifestResponse);
59
14
 
@@ -66,38 +21,6 @@ service CentyDaemon {
66
21
  // Check if centy is initialized in a directory
67
22
  rpc IsInitialized(IsInitializedRequest) returns (IsInitializedResponse);
68
23
 
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
24
  // ============ Asset RPCs ============
102
25
 
103
26
  // Add an asset to an issue or as a shared asset
@@ -185,21 +108,6 @@ service CentyDaemon {
185
108
  // Open a standalone workspace with a configurable editor (not tied to an issue)
186
109
  rpc OpenStandaloneWorkspace(OpenStandaloneWorkspaceWithEditorRequest) returns (OpenStandaloneWorkspaceResponse);
187
110
 
188
- // Open a project in a temporary VS Code workspace (deprecated: use OpenInTempWorkspace)
189
- rpc OpenInTempVscode(OpenInTempWorkspaceRequest) returns (OpenInTempWorkspaceResponse);
190
-
191
- // Open a project in a temporary terminal workspace (deprecated: use OpenInTempWorkspace)
192
- rpc OpenInTempTerminal(OpenInTempWorkspaceRequest) returns (OpenInTempWorkspaceResponse);
193
-
194
- // Open an agent in a terminal for working on an issue
195
- rpc OpenAgentInTerminal(OpenAgentInTerminalRequest) returns (OpenAgentInTerminalResponse);
196
-
197
- // Open a standalone workspace in VS Code (deprecated: use OpenStandaloneWorkspace)
198
- rpc OpenStandaloneWorkspaceVscode(OpenStandaloneWorkspaceRequest) returns (OpenStandaloneWorkspaceResponse);
199
-
200
- // Open a standalone workspace in terminal (deprecated: use OpenStandaloneWorkspace)
201
- rpc OpenStandaloneWorkspaceTerminal(OpenStandaloneWorkspaceRequest) returns (OpenStandaloneWorkspaceResponse);
202
-
203
111
  // List all temp workspaces
204
112
  rpc ListTempWorkspaces(ListTempWorkspacesRequest) returns (ListTempWorkspacesResponse);
205
113
 
@@ -274,6 +182,14 @@ service CentyDaemon {
274
182
  // Manually trigger a sync push
275
183
  rpc SyncPush(SyncPushRequest) returns (SyncPushResponse);
276
184
 
185
+ // ============ Item Type RPCs ============
186
+
187
+ // Create a new item type dynamically
188
+ rpc CreateItemType(CreateItemTypeRequest) returns (CreateItemTypeResponse);
189
+
190
+ // List all item types for a project
191
+ rpc ListItemTypes(ListItemTypesRequest) returns (ListItemTypesResponse);
192
+
277
193
  // ============ Generic Item RPCs ============
278
194
 
279
195
  // Create a new item of any type
@@ -303,11 +219,17 @@ service CentyDaemon {
303
219
  // Move an item to another project
304
220
  rpc MoveItem(MoveItemRequest) returns (MoveItemResponse);
305
221
 
306
- // Create a new custom item type
307
- rpc CreateItemType(CreateItemTypeRequest) returns (CreateItemTypeResponse);
222
+ // Archive an item by moving it to the archived folder and recording its original type
223
+ rpc ArchiveItem(ArchiveItemRequest) returns (ArchiveItemResponse);
308
224
 
309
- // List all item types for a project
310
- rpc ListItemTypes(ListItemTypesRequest) returns (ListItemTypesResponse);
225
+ // Unarchive an item by moving it back to its original folder
226
+ rpc UnarchiveItem(UnarchiveItemRequest) returns (UnarchiveItemResponse);
227
+
228
+ // Search for an item by ID across all tracked projects
229
+ rpc SearchItems(SearchItemsRequest) returns (SearchItemsResponse);
230
+
231
+ // List items of a given type across all tracked projects, sorted by created_at descending
232
+ rpc ListItemsAcrossProjects(ListItemsAcrossProjectsRequest) returns (ListItemsAcrossProjectsResponse);
311
233
  }
312
234
 
313
235
  // ============ Init Messages ============
@@ -321,6 +243,15 @@ message InitRequest {
321
243
 
322
244
  // Decisions for files that need user input (only used when force=false)
323
245
  ReconciliationDecisions decisions = 3;
246
+
247
+ // Optional configuration to apply during initialization.
248
+ // Fields set here will be written to .centy/config.json.
249
+ // Unset/zero-value fields fall back to project defaults.
250
+ Config init_config = 4;
251
+
252
+ // Optional project title to set during initialization (stored in .centy/project.json,
253
+ // visible to all team members). Empty string means no title is set.
254
+ string title = 5;
324
255
  }
325
256
 
326
257
  message InitResponse {
@@ -340,38 +271,6 @@ message InitResponse {
340
271
  OrgInferenceResult org_inference = 8;
341
272
  }
342
273
 
343
- message GetReconciliationPlanRequest {
344
- string project_path = 1;
345
- }
346
-
347
- message ReconciliationPlan {
348
- // Files that need to be created (not on disk, not in manifest)
349
- repeated FileInfo to_create = 1;
350
-
351
- // Files that were deleted but exist in manifest (can be restored)
352
- repeated FileInfo to_restore = 2;
353
-
354
- // Files that were modified from original (hash mismatch)
355
- repeated FileInfo to_reset = 3;
356
-
357
- // Files that are up to date
358
- repeated FileInfo up_to_date = 4;
359
-
360
- // User-created files (not managed by centy)
361
- repeated FileInfo user_files = 5;
362
-
363
- // Whether user decisions are needed
364
- bool needs_decisions = 6;
365
-
366
- bool success = 7;
367
- string error = 8;
368
- }
369
-
370
- message ExecuteReconciliationRequest {
371
- string project_path = 1;
372
- ReconciliationDecisions decisions = 2;
373
- }
374
-
375
274
  message ReconciliationDecisions {
376
275
  // Paths of files to restore (from to_restore list)
377
276
  repeated string restore = 1;
@@ -380,261 +279,6 @@ message ReconciliationDecisions {
380
279
  repeated string reset = 2;
381
280
  }
382
281
 
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
282
  // ============ Manifest Messages ============
639
283
 
640
284
  message GetManifestRequest {
@@ -648,12 +292,7 @@ message GetManifestResponse {
648
292
  Manifest manifest = 3;
649
293
  }
650
294
 
651
- message Manifest {
652
- int32 schema_version = 1;
653
- string centy_version = 2;
654
- string created_at = 3;
655
- string updated_at = 4;
656
- }
295
+ // Manifest is defined in generic_item.proto (shared across both files)
657
296
 
658
297
  enum FileType {
659
298
  FILE_TYPE_UNSPECIFIED = 0;
@@ -685,7 +324,7 @@ message Config {
685
324
  repeated CustomFieldDefinition custom_fields = 1;
686
325
  map<string, string> defaults = 2;
687
326
  int32 priority_levels = 3; // Number of priority levels (default: 3)
688
- repeated string allowed_states = 4; // Allowed status values (default: ["open", "in-progress", "closed"])
327
+ reserved 4; // Previously: repeated string allowed_states (moved to per-item-type config.yaml)
689
328
  reserved 5; // Previously: string default_state (moved to per-item-type config.yaml)
690
329
  string version = 6; // Project version (semver, empty = daemon default)
691
330
  map<string, string> state_colors = 7; // State name → hex color (e.g., "open" → "#10b981")
@@ -693,8 +332,9 @@ message Config {
693
332
  reserved 9; // Previously: LlmConfig llm (removed)
694
333
  repeated LinkTypeDefinition custom_link_types = 10; // Custom link types (in addition to built-in)
695
334
  string default_editor = 11; // Default editor ID for this project (e.g., "vscode", "terminal", "zed")
696
- repeated HookDefinition hooks = 12; // Lifecycle hooks
335
+ reserved 12; // Previously: repeated HookDefinition hooks (moved to hooks.yaml)
697
336
  WorkspaceConfig workspace = 13; // Workspace settings
337
+ map<string, string> user_values = 14; // User-defined free-form key-value pairs
698
338
  }
699
339
 
700
340
  // Workspace configuration section
@@ -710,19 +350,10 @@ message CustomFieldDefinition {
710
350
  repeated string enum_values = 5; // For enum type
711
351
  }
712
352
 
713
- // Lifecycle hook definition (bash scripts to run before/after operations)
714
- message HookDefinition {
715
- string pattern = 1; // Pattern like "pre:issue:create" or "*:*:delete"
716
- string command = 2; // Bash command to execute
717
- bool run_async = 3; // If true, run in background (post-hooks only)
718
- uint64 timeout = 4; // Timeout in seconds (default: 30)
719
- bool enabled = 5; // Whether hook is enabled (default: true)
720
- }
721
-
722
353
  // Custom link type definition (for custom relationship types)
723
354
  message LinkTypeDefinition {
724
355
  string name = 1; // Link type name (e.g., "depends-on")
725
- string inverse = 2; // Inverse link type (e.g., "dependency-of")
356
+ reserved 2; // Removed: inverse (no longer needed — direction field on Link replaces it)
726
357
  string description = 3; // Optional description
727
358
  }
728
359
 
@@ -748,184 +379,6 @@ message IsInitializedResponse {
748
379
  string centy_path = 2; // Full path to .centy folder if initialized
749
380
  }
750
381
 
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
382
  // ============ Asset Messages ============
930
383
 
931
384
  // Asset represents file metadata
@@ -1018,6 +471,8 @@ message ProjectInfo {
1018
471
  string organization_name = 12; // Organization display name (for convenience)
1019
472
  string user_title = 13; // User-scope custom title (from ~/.centy/projects.json)
1020
473
  string project_title = 14; // Project-scope custom title (from .centy/project.json)
474
+ string project_version = 15; // Centy version recorded in manifest (empty if not initialized)
475
+ bool project_behind = 16; // True if project version is behind current daemon version
1021
476
  }
1022
477
 
1023
478
  message ListProjectsRequest {
@@ -1190,6 +645,7 @@ message UpdateOrganizationResponse {
1190
645
 
1191
646
  message DeleteOrganizationRequest {
1192
647
  string slug = 1;
648
+ bool cascade = 2;
1193
649
  }
1194
650
 
1195
651
  message DeleteOrganizationResponse {
@@ -1206,7 +662,7 @@ message DaemonInfo {
1206
662
  string version = 1; // Current daemon version (e.g., "0.1.0")
1207
663
  reserved 2; // was: repeated string available_versions (removed)
1208
664
  string binary_path = 3; // Absolute path to the running daemon binary
1209
- bool vscode_available = 4; // Whether VS Code is installed and accessible
665
+ reserved 4; // was: vscode_available (removed)
1210
666
  }
1211
667
 
1212
668
  // ============ Daemon Control Messages ============
@@ -1233,34 +689,11 @@ message RestartResponse {
1233
689
 
1234
690
  // ============ Temp Workspace Messages ============
1235
691
 
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
- // Editor type for opening workspaces
1252
- enum EditorType {
1253
- EDITOR_TYPE_UNSPECIFIED = 0;
1254
- EDITOR_TYPE_VSCODE = 1; // VS Code editor
1255
- EDITOR_TYPE_TERMINAL = 2; // OS terminal
1256
- }
1257
-
1258
692
  // Request to get supported editors (empty request)
1259
693
  message GetSupportedEditorsRequest {}
1260
694
 
1261
695
  // Information about a supported editor
1262
696
  message EditorInfo {
1263
- EditorType editor_type = 1; // Editor type enum value (deprecated: use editor_id)
1264
697
  string name = 2; // Display name (e.g., "VS Code", "Terminal")
1265
698
  string description = 3; // Brief description
1266
699
  bool available = 4; // Whether this editor is available on the current system
@@ -1277,8 +710,7 @@ message GetSupportedEditorsResponse {
1277
710
  message OpenInTempWorkspaceWithEditorRequest {
1278
711
  string project_path = 1; // Source project path
1279
712
  string issue_id = 2; // Issue UUID or display number
1280
- LlmAction action = 3; // Plan or Implement
1281
- string agent_name = 4; // Agent to use (empty = default)
713
+ reserved 3, 4; // Removed: action (LlmAction), agent_name
1282
714
  uint32 ttl_hours = 5; // Custom TTL in hours (0 = use default 12h)
1283
715
  string editor_id = 6; // Editor ID (e.g., "vscode", "terminal", "zed"). Empty = use project/user default.
1284
716
  }
@@ -1289,7 +721,7 @@ message OpenStandaloneWorkspaceWithEditorRequest {
1289
721
  string name = 2; // Optional custom name for the workspace
1290
722
  string description = 3; // Optional description/goals for this workspace
1291
723
  uint32 ttl_hours = 4; // Custom TTL in hours (0 = use default 12h)
1292
- string agent_name = 5; // Agent to use (empty = default)
724
+ reserved 5; // Removed: agent_name
1293
725
  string editor_id = 6; // Editor ID (e.g., "vscode", "terminal", "zed"). Empty = use project/user default.
1294
726
  }
1295
727
 
@@ -1297,8 +729,7 @@ message OpenStandaloneWorkspaceWithEditorRequest {
1297
729
  message OpenInTempWorkspaceRequest {
1298
730
  string project_path = 1; // Source project path
1299
731
  string issue_id = 2; // Issue UUID or display number
1300
- LlmAction action = 3; // Plan or Implement
1301
- string agent_name = 4; // Agent to use (empty = default)
732
+ reserved 3, 4; // Removed: action (LlmAction), agent_name
1302
733
  uint32 ttl_hours = 5; // Custom TTL in hours (0 = use default 12h)
1303
734
  }
1304
735
 
@@ -1316,34 +747,13 @@ message OpenInTempWorkspaceResponse {
1316
747
  string original_created_at = 10; // Original creation timestamp (only set if workspace_reused is true)
1317
748
  }
1318
749
 
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
750
  // Request to open a standalone workspace (not tied to an issue)
1341
751
  message OpenStandaloneWorkspaceRequest {
1342
752
  string project_path = 1; // Source project path
1343
753
  string name = 2; // Optional custom name for the workspace
1344
754
  string description = 3; // Optional description/goals for this workspace
1345
755
  uint32 ttl_hours = 4; // Custom TTL in hours (0 = use default 12h)
1346
- string agent_name = 5; // Agent to use (empty = default)
756
+ reserved 5; // Removed: agent_name
1347
757
  }
1348
758
 
1349
759
  // Response for opening a standalone workspace
@@ -1366,8 +776,7 @@ message TempWorkspace {
1366
776
  string issue_id = 3; // Issue UUID (empty for standalone workspaces)
1367
777
  uint32 issue_display_number = 4; // Issue display number (0 for standalone)
1368
778
  string issue_title = 5; // Issue title (empty for standalone)
1369
- string agent_name = 6; // Agent being used
1370
- LlmAction action = 7; // Plan or Implement
779
+ reserved 6, 7; // Removed: agent_name, action (LlmAction)
1371
780
  string created_at = 8; // ISO timestamp
1372
781
  string expires_at = 9; // ISO timestamp when workspace expires
1373
782
  bool is_standalone = 10; // True if this is a standalone workspace (not tied to an issue)
@@ -1413,47 +822,40 @@ message CleanupExpiredWorkspacesResponse {
1413
822
 
1414
823
  // ============ Link Messages ============
1415
824
 
1416
- // Target entity type for links
1417
- enum LinkTargetType {
1418
- LINK_TARGET_TYPE_UNSPECIFIED = 0;
1419
- LINK_TARGET_TYPE_ISSUE = 1;
1420
- LINK_TARGET_TYPE_DOC = 2;
1421
- reserved 3; // Removed: LINK_TARGET_TYPE_PR
1422
- }
1423
-
1424
825
  // A link between two entities
1425
826
  message Link {
1426
827
  string target_id = 1; // Target entity ID (UUID for issues, slug for docs)
1427
- LinkTargetType target_type = 2; // Type of the target entity
1428
- string link_type = 3; // Relationship type (e.g., "blocks", "parent-of")
828
+ reserved 2; // Removed: LinkTargetType target_type (legacy enum)
829
+ string link_type = 3; // Relationship type (e.g., "blocks", "parent-of"); always from source's perspective
1429
830
  string created_at = 4; // ISO timestamp when link was created
831
+ string target_item_type = 5; // Singular item type as a string (e.g., "issue", "plan")
832
+ string id = 6; // UUID of the link file (use for deletion)
833
+ string direction = 7; // "source" or "target" — which side the queried entity is on
1430
834
  }
1431
835
 
1432
- // Create a link between two entities (bidirectional - also creates inverse)
836
+ // Create a link between two entities (one file, two response views)
1433
837
  message CreateLinkRequest {
1434
838
  string project_path = 1;
1435
- string source_id = 2; // Source entity ID
1436
- LinkTargetType source_type = 3; // Source entity type
1437
- string target_id = 4; // Target entity ID
1438
- LinkTargetType target_type = 5; // Target entity type
839
+ string source_id = 2; // Source entity ID (UUID or display number)
840
+ reserved 3; // Removed: LinkTargetType source_type (legacy enum)
841
+ string target_id = 4; // Target entity ID (UUID or display number)
842
+ reserved 5; // Removed: LinkTargetType target_type (legacy enum)
1439
843
  string link_type = 6; // Link type (e.g., "blocks")
844
+ string source_item_type = 7; // Singular item type as a string (e.g., "issue", "plan")
845
+ string target_item_type = 8; // Singular item type as a string (e.g., "issue", "plan")
1440
846
  }
1441
847
 
1442
848
  message CreateLinkResponse {
1443
849
  bool success = 1;
1444
850
  string error = 2;
1445
- Link created_link = 3; // The forward link that was created
1446
- Link inverse_link = 4; // The inverse link that was created
851
+ Link created_link = 3; // Source's view (direction="source")
852
+ Link inverse_link = 4; // Target's view (direction="target")
1447
853
  }
1448
854
 
1449
- // Delete a link between two entities (also deletes inverse)
855
+ // Delete a link by its UUID
1450
856
  message DeleteLinkRequest {
1451
857
  string project_path = 1;
1452
- string source_id = 2; // Source entity ID
1453
- LinkTargetType source_type = 3; // Source entity type
1454
- string target_id = 4; // Target entity ID
1455
- LinkTargetType target_type = 5; // Target entity type
1456
- string link_type = 6; // Optional: specific link type to delete (empty = all links between entities)
858
+ string link_id = 2; // UUID of the link file to delete (from Link.id)
1457
859
  }
1458
860
 
1459
861
  message DeleteLinkResponse {
@@ -1466,7 +868,8 @@ message DeleteLinkResponse {
1466
868
  message ListLinksRequest {
1467
869
  string project_path = 1;
1468
870
  string entity_id = 2; // Entity ID to list links for
1469
- LinkTargetType entity_type = 3; // Entity type
871
+ reserved 3; // Removed: LinkTargetType entity_type (legacy enum)
872
+ string entity_item_type = 4; // Singular item type as a string (e.g., "issue", "plan")
1470
873
  }
1471
874
 
1472
875
  message ListLinksResponse {
@@ -1484,7 +887,7 @@ message GetAvailableLinkTypesRequest {
1484
887
  // Information about a link type
1485
888
  message LinkTypeInfo {
1486
889
  string name = 1; // Link type name (e.g., "blocks")
1487
- string inverse = 2; // Inverse link type (e.g., "blocked-by")
890
+ reserved 2; // Removed: inverse (no longer needed — use direction on Link instead)
1488
891
  string description = 3; // Optional description
1489
892
  bool is_builtin = 4; // Whether this is a built-in type
1490
893
  }
@@ -1622,14 +1025,6 @@ message SyncUsersResponse {
1622
1025
 
1623
1026
  // ============ Entity Actions Messages ============
1624
1027
 
1625
- // Entity type for actions
1626
- enum EntityType {
1627
- ENTITY_TYPE_UNSPECIFIED = 0;
1628
- ENTITY_TYPE_ISSUE = 1;
1629
- reserved 2; // Removed: ENTITY_TYPE_PR
1630
- ENTITY_TYPE_DOC = 3;
1631
- }
1632
-
1633
1028
  // Action category for grouping in UI
1634
1029
  enum ActionCategory {
1635
1030
  ACTION_CATEGORY_UNSPECIFIED = 0;
@@ -1653,8 +1048,9 @@ message EntityAction {
1653
1048
  // Request to get available actions for an entity
1654
1049
  message GetEntityActionsRequest {
1655
1050
  string project_path = 1; // Project path for config/state lookup
1656
- EntityType entity_type = 2; // Type of entity (issue, doc)
1051
+ reserved 2; // Removed: EntityType entity_type (legacy enum)
1657
1052
  string entity_id = 3; // Optional: entity ID for contextual actions (empty = general actions like "create")
1053
+ string item_type = 4; // Type of item (e.g., "issues", "docs")
1658
1054
  }
1659
1055
 
1660
1056
  // Response with available actions
@@ -1776,3 +1172,110 @@ message SyncPushResponse {
1776
1172
  bool had_changes = 3; // Whether any changes were pushed
1777
1173
  }
1778
1174
 
1175
+ // ============ Item Type Messages ============
1176
+
1177
+ // Toggle-able features for an item type
1178
+ message ItemTypeFeatures {
1179
+ bool display_number = 1; // Enable display numbers (1, 2, 3...)
1180
+ bool status = 2; // Enable status tracking
1181
+ bool priority = 3; // Enable priority levels
1182
+ bool assets = 4; // Enable file attachments
1183
+ bool org_sync = 5; // Enable organization sync
1184
+ bool move = 6; // Enable moving between projects
1185
+ bool duplicate = 7; // Enable duplication
1186
+ bool soft_delete = 8; // Enable soft-deletion (restorable delete)
1187
+ }
1188
+
1189
+ // Request to create a new item type
1190
+ message CreateItemTypeRequest {
1191
+ string project_path = 1;
1192
+ string name = 2; // Singular display name (e.g., "Bug", "Task", "Epic")
1193
+ string plural = 3; // Folder/type key (e.g., "bugs", "tasks", "epics")
1194
+ string identifier = 4; // "uuid" or "slug"
1195
+ ItemTypeFeatures features = 5; // Toggle-able features
1196
+ repeated string statuses = 6; // Allowed statuses (e.g., ["open", "in-progress", "closed"])
1197
+ string default_status = 7; // Default status for new items (must be in statuses list)
1198
+ uint32 priority_levels = 8; // Number of priority levels (0 = none)
1199
+ repeated CustomFieldDefinition custom_fields = 9; // Custom field definitions
1200
+ }
1201
+
1202
+ // Response after creating an item type
1203
+ message CreateItemTypeResponse {
1204
+ bool success = 1;
1205
+ string error = 2;
1206
+ ItemTypeConfigProto config = 3; // The created item type config
1207
+ }
1208
+
1209
+ // Proto representation of an ItemTypeConfig
1210
+ message ItemTypeConfigProto {
1211
+ string name = 1;
1212
+ string plural = 2;
1213
+ string identifier = 3;
1214
+ ItemTypeFeatures features = 4;
1215
+ repeated string statuses = 5;
1216
+ string default_status = 6;
1217
+ uint32 priority_levels = 7;
1218
+ repeated CustomFieldDefinition custom_fields = 8;
1219
+ string icon = 9; // Optional icon identifier (e.g. "clipboard")
1220
+ string template = 10; // Optional template file path
1221
+ bool listed = 11; // Whether this type appears in ListItemTypes responses
1222
+ }
1223
+
1224
+ message ListItemTypesRequest {
1225
+ string project_path = 1;
1226
+ }
1227
+
1228
+ message ListItemTypesResponse {
1229
+ bool success = 1;
1230
+ string error = 2;
1231
+ repeated ItemTypeConfigProto item_types = 3;
1232
+ int32 total_count = 4;
1233
+ }
1234
+
1235
+ // ============ Generic Item Move Messages ============
1236
+
1237
+ message MoveItemRequest {
1238
+ string source_project_path = 1;
1239
+ string target_project_path = 2;
1240
+ string item_type = 3;
1241
+ string item_id = 4;
1242
+ string new_id = 5; // Optional: for slug renames
1243
+ }
1244
+
1245
+ message MoveItemResponse {
1246
+ bool success = 1;
1247
+ string error = 2;
1248
+ GenericItem item = 3;
1249
+ string old_id = 4;
1250
+ Manifest source_manifest = 5;
1251
+ Manifest target_manifest = 6;
1252
+ }
1253
+
1254
+ // ============ Archive Messages ============
1255
+
1256
+ message ArchiveItemRequest {
1257
+ string project_path = 1;
1258
+ string item_type = 2; // Source folder name (e.g., "issues", "docs")
1259
+ string item_id = 3; // UUID of the item to archive
1260
+ }
1261
+
1262
+ message ArchiveItemResponse {
1263
+ bool success = 1;
1264
+ string error = 2;
1265
+ GenericItem item = 3; // The archived item with original_item_type set
1266
+ }
1267
+
1268
+ message UnarchiveItemRequest {
1269
+ string project_path = 1;
1270
+ string item_id = 2; // UUID of the archived item
1271
+ string target_item_type = 3; // Optional: override original_item_type from metadata
1272
+ }
1273
+
1274
+ message UnarchiveItemResponse {
1275
+ bool success = 1;
1276
+ string error = 2;
1277
+ GenericItem item = 3; // The restored item
1278
+ string original_item_type = 4; // The folder the item was restored to
1279
+ }
1280
+
1281
+