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/bin/run.js CHANGED
@@ -6,8 +6,8 @@ import { execute } from '@oclif/core'
6
6
  if (typeof Bun === 'undefined') {
7
7
  const { execSync, spawnSync } = await import('child_process')
8
8
  try {
9
- // Check if bun is installed
10
- execSync('bun --version', { stdio: 'ignore' })
9
+ // Check if bun is installed (5s timeout to avoid hanging)
10
+ execSync('bun --version', { stdio: 'ignore', timeout: 5000 })
11
11
  // Re-exec with bun and exit with its exit code
12
12
  const result = spawnSync(
13
13
  'bun',
@@ -20,7 +20,7 @@ if (typeof Bun === 'undefined') {
20
20
  result.status !== null && result.status !== undefined ? result.status : 0
21
21
  )
22
22
  } catch {
23
- // Bun not installed, continue with Node
23
+ // Bun not installed or version check timed out, continue with Node
24
24
  // eslint-disable-next-line default/no-hardcoded-urls
25
25
  console.error('Tip: Install Bun for faster CLI performance: https://bun.sh')
26
26
  }
@@ -1,6 +1,6 @@
1
1
  import { Command } from '@oclif/core';
2
2
  /**
3
- * Generic close command for issues, PRs, and org-issues
3
+ * Close an issue by display number
4
4
  */
5
5
  export default class Close extends Command {
6
6
  static args: {
@@ -9,12 +9,9 @@ export default class Close extends Command {
9
9
  static description: string;
10
10
  static examples: string[];
11
11
  static flags: {
12
- type: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
13
12
  project: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
14
13
  json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
15
14
  };
16
15
  run(): Promise<void>;
17
- private closeByType;
18
- private closeByDiscovery;
19
16
  }
20
17
  //# sourceMappingURL=close.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"close.d.ts","sourceRoot":"","sources":["../../src/commands/close.ts"],"names":[],"mappings":"AACA,OAAO,EAAQ,OAAO,EAAS,MAAM,aAAa,CAAA;AAYlD;;GAEG;AAEH,MAAM,CAAC,OAAO,OAAO,KAAM,SAAQ,OAAO;IAExC,OAAgB,IAAI;;MAKnB;IAGD,OAAgB,WAAW,SAA2C;IAGtE,OAAgB,QAAQ,WAMvB;IAGD,OAAgB,KAAK;;;;MAWpB;IAEY,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;YA8BnB,WAAW;YAaX,gBAAgB;CAyB/B"}
1
+ {"version":3,"file":"close.d.ts","sourceRoot":"","sources":["../../src/commands/close.ts"],"names":[],"mappings":"AACA,OAAO,EAAQ,OAAO,EAAS,MAAM,aAAa,CAAA;AAWlD;;GAEG;AAEH,MAAM,CAAC,OAAO,OAAO,KAAM,SAAQ,OAAO;IAExC,OAAgB,IAAI;;MAKnB;IAGD,OAAgB,WAAW,SAAqC;IAGhE,OAAgB,QAAQ,WAIvB;IAGD,OAAgB,KAAK;;;MAMpB;IAEY,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CA8BlC"}
@@ -1,13 +1,12 @@
1
1
  // eslint-disable-next-line import/order
2
2
  import { Args, Command, Flags } from '@oclif/core';
3
+ import { daemonUpdateIssue } from '../daemon/daemon-update-issue.js';
3
4
  import { projectFlag } from '../flags/project-flag.js';
4
- import { closeIssue } from '../lib/close/close-issue.js';
5
- import { closePr } from '../lib/close/close-pr.js';
6
- import { findEntityByDisplayNumber } from '../lib/close/find-entity.js';
5
+ import { CloseEntityError } from '../lib/close/close-entity-error.js';
7
6
  import { ensureInitialized, NotInitializedError, } from '../utils/ensure-initialized.js';
8
7
  import { resolveProjectPath } from '../utils/resolve-project-path.js';
9
8
  /**
10
- * Generic close command for issues, PRs, and org-issues
9
+ * Close an issue by display number
11
10
  */
12
11
  // eslint-disable-next-line custom/no-default-class-export, class-export/class-export
13
12
  export default class Close extends Command {
@@ -19,22 +18,15 @@ export default class Close extends Command {
19
18
  }),
20
19
  };
21
20
  // eslint-disable-next-line no-restricted-syntax
22
- static description = 'Close an issue or PR by display number';
21
+ static description = 'Close an issue by display number';
23
22
  // eslint-disable-next-line no-restricted-syntax
24
23
  static examples = [
25
24
  '<%= config.bin %> close 1',
26
25
  '<%= config.bin %> close #1',
27
- '<%= config.bin %> close 1 --type issue',
28
- '<%= config.bin %> close 1 --type pr',
29
26
  '<%= config.bin %> close 1 --project centy-daemon',
30
27
  ];
31
28
  // eslint-disable-next-line no-restricted-syntax
32
29
  static flags = {
33
- type: Flags.string({
34
- char: 't',
35
- description: 'Entity type (issue, pr)',
36
- options: ['issue', 'pr'],
37
- }),
38
30
  project: projectFlag,
39
31
  json: Flags.boolean({
40
32
  description: 'Output as JSON',
@@ -58,36 +50,27 @@ export default class Close extends Command {
58
50
  }
59
51
  throw error instanceof Error ? error : new Error(String(error));
60
52
  }
61
- if (flags.type !== undefined) {
62
- await this.closeByType(flags.type, cwd, displayNumber, flags.json);
63
- return;
64
- }
65
- await this.closeByDiscovery(cwd, displayNumber, flags.json);
53
+ await closeIssue(cwd, args.identifier, displayNumber, flags.json, this.log.bind(this));
66
54
  }
67
- async closeByType(type, cwd, displayNumber, json) {
68
- if (type === 'issue') {
69
- await closeIssue(cwd, displayNumber, json, this.log.bind(this));
70
- }
71
- else if (type === 'pr') {
72
- await closePr(cwd, displayNumber, json, this.log.bind(this));
73
- }
55
+ }
56
+ async function closeIssue(cwd, issueId, displayNumber, json, log) {
57
+ const response = await daemonUpdateIssue({
58
+ projectPath: cwd,
59
+ issueId,
60
+ status: 'closed',
61
+ });
62
+ if (!response.success) {
63
+ throw new CloseEntityError(response.error);
74
64
  }
75
- async closeByDiscovery(cwd, displayNumber, json) {
76
- const foundEntities = await findEntityByDisplayNumber(cwd, displayNumber);
77
- if (foundEntities.length === 0) {
78
- this.error(`No issue or PR found with display number #${displayNumber}`);
79
- }
80
- if (foundEntities.length > 1) {
81
- const types = foundEntities.map(e => e.type).join(', ');
82
- this.error(`Ambiguous: found multiple entities with #${displayNumber} (${types}). Use --type to specify which to close.`);
83
- }
84
- const entity = foundEntities[0];
85
- if (entity.type === 'issue') {
86
- await closeIssue(cwd, displayNumber, json, this.log.bind(this));
87
- }
88
- else if (entity.type === 'pr') {
89
- await closePr(cwd, displayNumber, json, this.log.bind(this));
90
- }
65
+ if (json) {
66
+ log(JSON.stringify({
67
+ type: 'issue',
68
+ displayNumber: response.issue.displayNumber,
69
+ status: 'closed',
70
+ }, null, 2));
71
+ }
72
+ else {
73
+ log(`Closed issue #${response.issue.displayNumber}`);
91
74
  }
92
75
  }
93
76
  //# sourceMappingURL=close.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"close.js","sourceRoot":"","sources":["../../src/commands/close.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"close.js","sourceRoot":"","sources":["../../src/commands/close.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ import { Command } from '@oclif/core';
2
+ /**
3
+ * Create a new custom item type in the .centy folder
4
+ */
5
+ export default class CreateItemType extends Command {
6
+ static description: string;
7
+ static examples: string[];
8
+ static flags: {
9
+ name: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
10
+ plural: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
11
+ identifier: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
12
+ statuses: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
13
+ 'default-status': import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
14
+ 'priority-levels': import("@oclif/core/interfaces").OptionFlag<number, import("@oclif/core/interfaces").CustomOptions>;
15
+ features: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
16
+ project: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
17
+ };
18
+ run(): Promise<void>;
19
+ }
20
+ //# sourceMappingURL=item-type.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"item-type.d.ts","sourceRoot":"","sources":["../../../src/commands/create/item-type.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAS,MAAM,aAAa,CAAA;AAU5C;;GAEG;AAEH,MAAM,CAAC,OAAO,OAAO,cAAe,SAAQ,OAAO;IAEjD,OAAgB,WAAW,SAAkC;IAG7D,OAAgB,QAAQ,WAGvB;IAGD,OAAgB,KAAK;;;;;;;;;MAiCpB;IAEY,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CA2ClC"}
@@ -0,0 +1,90 @@
1
+ // eslint-disable-next-line import/order
2
+ import { Command, Flags } from '@oclif/core';
3
+ import { daemonCreateItemType } from '../../daemon/daemon-create-item-type.js';
4
+ import { projectFlag } from '../../flags/project-flag.js';
5
+ import { VALID_FEATURES, parseFeatures, } from '../../lib/create-item-type/features.js';
6
+ import { resolveProjectPath } from '../../utils/resolve-project-path.js';
7
+ /**
8
+ * Create a new custom item type in the .centy folder
9
+ */
10
+ // eslint-disable-next-line custom/no-default-class-export, class-export/class-export
11
+ export default class CreateItemType extends Command {
12
+ // eslint-disable-next-line no-restricted-syntax
13
+ static description = 'Create a new custom item type';
14
+ // eslint-disable-next-line no-restricted-syntax
15
+ static examples = [
16
+ '<%= config.bin %> create item-type --name "Bug" --plural "bugs" --identifier uuid --statuses open,in-progress,closed --default-status open --priority-levels 3 --features display-number,status,priority,move,duplicate',
17
+ '<%= config.bin %> create item-type --name "Task" --plural "tasks" --identifier slug --statuses todo,doing,done --default-status todo --features status,priority',
18
+ ];
19
+ // eslint-disable-next-line no-restricted-syntax
20
+ static flags = {
21
+ name: Flags.string({
22
+ char: 'n',
23
+ description: 'Singular display name (e.g., "Bug", "Task", "Epic")',
24
+ required: true,
25
+ }),
26
+ plural: Flags.string({
27
+ description: 'Folder/type key, lowercase alphanumeric + hyphens (e.g., "bugs")',
28
+ required: true,
29
+ }),
30
+ identifier: Flags.string({
31
+ description: 'Identifier type for items',
32
+ options: ['uuid', 'slug'],
33
+ required: true,
34
+ }),
35
+ statuses: Flags.string({
36
+ description: 'Comma-separated list of allowed statuses',
37
+ required: true,
38
+ }),
39
+ 'default-status': Flags.string({
40
+ description: 'Default status for new items (must be in statuses list)',
41
+ required: true,
42
+ }),
43
+ 'priority-levels': Flags.integer({
44
+ description: 'Number of priority levels (0 = none)',
45
+ default: 0,
46
+ }),
47
+ features: Flags.string({
48
+ char: 'f',
49
+ description: `Comma-separated features (${VALID_FEATURES.join(', ')})`,
50
+ }),
51
+ project: projectFlag,
52
+ };
53
+ async run() {
54
+ const { flags } = await this.parse(CreateItemType);
55
+ const cwd = await resolveProjectPath(flags.project);
56
+ const statuses = flags.statuses.split(',').map(s => s.trim());
57
+ const defaultStatus = flags['default-status'];
58
+ if (!statuses.includes(defaultStatus)) {
59
+ this.error(`Default status "${defaultStatus}" must be one of: ${statuses.join(', ')}`);
60
+ }
61
+ const features = parseFeatures(flags.features);
62
+ const response = await daemonCreateItemType({
63
+ projectPath: cwd,
64
+ name: flags.name,
65
+ plural: flags.plural,
66
+ // eslint-disable-next-line no-restricted-syntax
67
+ identifier: flags.identifier,
68
+ features,
69
+ statuses,
70
+ defaultStatus,
71
+ priorityLevels: flags['priority-levels'],
72
+ customFields: [],
73
+ });
74
+ if (!response.success) {
75
+ const errorMsg = response.error !== '' ? response.error : 'Failed to create item type';
76
+ this.error(errorMsg);
77
+ }
78
+ this.log(`\nCreated item type "${flags.name}" (${flags.plural})`);
79
+ this.log(` Identifier: ${flags.identifier}`);
80
+ this.log(` Statuses: ${statuses.join(', ')}`);
81
+ this.log(` Default status: ${defaultStatus}`);
82
+ if (flags['priority-levels'] > 0) {
83
+ this.log(` Priority levels: ${flags['priority-levels']}`);
84
+ }
85
+ if (features.length > 0 && flags.features !== undefined) {
86
+ this.log(` Features: ${flags.features}`);
87
+ }
88
+ }
89
+ }
90
+ //# sourceMappingURL=item-type.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"item-type.js","sourceRoot":"","sources":["../../../src/commands/create/item-type.ts"],"names":[],"mappings":"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"}
@@ -8,12 +8,8 @@ export default class Init extends Command {
8
8
  static flags: {
9
9
  force: import("@oclif/core/interfaces").BooleanFlag<boolean>;
10
10
  'priority-levels': import("@oclif/core/interfaces").OptionFlag<number | undefined, import("@oclif/core/interfaces").CustomOptions>;
11
- 'default-state': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
12
11
  'allowed-states': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
13
12
  version: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
14
- 'llm-auto-close': import("@oclif/core/interfaces").BooleanFlag<boolean>;
15
- 'llm-update-status': import("@oclif/core/interfaces").BooleanFlag<boolean>;
16
- 'llm-allow-direct-edits': import("@oclif/core/interfaces").BooleanFlag<boolean>;
17
13
  };
18
14
  run(): Promise<void>;
19
15
  }
@@ -1 +1 @@
1
- {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAS,MAAM,aAAa,CAAA;AAI5C;;GAEG;AAEH,MAAM,CAAC,OAAO,OAAO,IAAK,SAAQ,OAAO;IAEvC,OAAgB,WAAW,SAC0B;IAGrD,OAAgB,QAAQ,WAGvB;IAGD,OAAgB,KAAK;;;;;;;;;MAkCpB;IAEY,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CA4BlC"}
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAS,MAAM,aAAa,CAAA;AAI5C;;GAEG;AAEH,MAAM,CAAC,OAAO,OAAO,IAAK,SAAQ,OAAO;IAEvC,OAAgB,WAAW,SAC0B;IAGrD,OAAgB,QAAQ,WAGvB;IAGD,OAAgB,KAAK;;;;;MAkBpB;IAEY,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAwBlC"}
@@ -26,28 +26,12 @@ export default class Init extends Command {
26
26
  min: 1,
27
27
  max: 10,
28
28
  }),
29
- 'default-state': Flags.string({
30
- description: 'Default state for new issues (default: "open")',
31
- }),
32
29
  'allowed-states': Flags.string({
33
30
  description: 'Comma-separated list of allowed states',
34
31
  }),
35
32
  version: Flags.string({
36
33
  description: 'Project version (semver)',
37
34
  }),
38
- // LLM flags
39
- 'llm-auto-close': Flags.boolean({
40
- description: 'Auto-close issues when LLM completes work',
41
- allowNo: true,
42
- }),
43
- 'llm-update-status': Flags.boolean({
44
- description: 'Update status to in-progress when LLM starts',
45
- allowNo: true,
46
- }),
47
- 'llm-allow-direct-edits': Flags.boolean({
48
- description: 'Allow LLM to directly edit issue files',
49
- allowNo: true,
50
- }),
51
35
  };
52
36
  async run() {
53
37
  const { flags } = await this.parse(Init);
@@ -62,12 +46,8 @@ export default class Init extends Command {
62
46
  force: flags.force,
63
47
  cwd,
64
48
  priorityLevels: flags['priority-levels'],
65
- defaultState: flags['default-state'],
66
49
  allowedStates,
67
50
  version: flags.version,
68
- llmAutoClose: flags['llm-auto-close'],
69
- llmUpdateStatus: flags['llm-update-status'],
70
- llmAllowDirectEdits: flags['llm-allow-direct-edits'],
71
51
  });
72
52
  if (!result.success) {
73
53
  this.exit(1);
@@ -1 +1 @@
1
- {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA,wCAAwC;AACxC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;AAE5C,OAAO,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAA;AAE3C;;GAEG;AACH,qFAAqF;AACrF,MAAM,CAAC,OAAO,OAAO,IAAK,SAAQ,OAAO;IACvC,gDAAgD;IAChD,MAAM,CAAU,WAAW,GACzB,mDAAmD,CAAA;IAErD,gDAAgD;IAChD,MAAM,CAAU,QAAQ,GAAG;QACzB,qCAAqC;QACrC,6CAA6C;KAC9C,CAAA;IAED,gDAAgD;IAChD,MAAM,CAAU,KAAK,GAAG;QACtB,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC;YACnB,IAAI,EAAE,GAAG;YACT,WAAW,EAAE,2CAA2C;YACxD,OAAO,EAAE,KAAK;SACf,CAAC;QACF,eAAe;QACf,iBAAiB,EAAE,KAAK,CAAC,OAAO,CAAC;YAC/B,WAAW,EAAE,8CAA8C;YAC3D,GAAG,EAAE,CAAC;YACN,GAAG,EAAE,EAAE;SACR,CAAC;QACF,eAAe,EAAE,KAAK,CAAC,MAAM,CAAC;YAC5B,WAAW,EAAE,gDAAgD;SAC9D,CAAC;QACF,gBAAgB,EAAE,KAAK,CAAC,MAAM,CAAC;YAC7B,WAAW,EAAE,wCAAwC;SACtD,CAAC;QACF,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC;YACpB,WAAW,EAAE,0BAA0B;SACxC,CAAC;QACF,YAAY;QACZ,gBAAgB,EAAE,KAAK,CAAC,OAAO,CAAC;YAC9B,WAAW,EAAE,2CAA2C;YACxD,OAAO,EAAE,IAAI;SACd,CAAC;QACF,mBAAmB,EAAE,KAAK,CAAC,OAAO,CAAC;YACjC,WAAW,EAAE,8CAA8C;YAC3D,OAAO,EAAE,IAAI;SACd,CAAC;QACF,wBAAwB,EAAE,KAAK,CAAC,OAAO,CAAC;YACtC,WAAW,EAAE,wCAAwC;YACrD,OAAO,EAAE,IAAI;SACd,CAAC;KACH,CAAA;IAEM,KAAK,CAAC,GAAG;QACd,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QAExC,sEAAsE;QACtE,gDAAgD;QAChD,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAA;QAEpC,mCAAmC;QACnC,MAAM,aAAa,GAAG,KAAK,CAAC,gBAAgB,CAAC;YAC3C,CAAC,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YACvD,CAAC,CAAC,SAAS,CAAA;QAEb,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC;YACxB,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,GAAG;YACH,cAAc,EAAE,KAAK,CAAC,iBAAiB,CAAC;YACxC,YAAY,EAAE,KAAK,CAAC,eAAe,CAAC;YACpC,aAAa;YACb,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,YAAY,EAAE,KAAK,CAAC,gBAAgB,CAAC;YACrC,eAAe,EAAE,KAAK,CAAC,mBAAmB,CAAC;YAC3C,mBAAmB,EAAE,KAAK,CAAC,wBAAwB,CAAC;SACrD,CAAC,CAAA;QAEF,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACd,CAAC;IACH,CAAC"}
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA,wCAAwC;AACxC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;AAE5C,OAAO,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAA;AAE3C;;GAEG;AACH,qFAAqF;AACrF,MAAM,CAAC,OAAO,OAAO,IAAK,SAAQ,OAAO;IACvC,gDAAgD;IAChD,MAAM,CAAU,WAAW,GACzB,mDAAmD,CAAA;IAErD,gDAAgD;IAChD,MAAM,CAAU,QAAQ,GAAG;QACzB,qCAAqC;QACrC,6CAA6C;KAC9C,CAAA;IAED,gDAAgD;IAChD,MAAM,CAAU,KAAK,GAAG;QACtB,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC;YACnB,IAAI,EAAE,GAAG;YACT,WAAW,EAAE,2CAA2C;YACxD,OAAO,EAAE,KAAK;SACf,CAAC;QACF,eAAe;QACf,iBAAiB,EAAE,KAAK,CAAC,OAAO,CAAC;YAC/B,WAAW,EAAE,8CAA8C;YAC3D,GAAG,EAAE,CAAC;YACN,GAAG,EAAE,EAAE;SACR,CAAC;QACF,gBAAgB,EAAE,KAAK,CAAC,MAAM,CAAC;YAC7B,WAAW,EAAE,wCAAwC;SACtD,CAAC;QACF,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC;YACpB,WAAW,EAAE,0BAA0B;SACxC,CAAC;KACH,CAAA;IAEM,KAAK,CAAC,GAAG;QACd,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QAExC,sEAAsE;QACtE,gDAAgD;QAChD,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAA;QAEpC,mCAAmC;QACnC,MAAM,aAAa,GAAG,KAAK,CAAC,gBAAgB,CAAC;YAC3C,CAAC,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YACvD,CAAC,CAAC,SAAS,CAAA;QAEb,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC;YACxB,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,GAAG;YACH,cAAc,EAAE,KAAK,CAAC,iBAAiB,CAAC;YACxC,aAAa;YACb,OAAO,EAAE,KAAK,CAAC,OAAO;SACvB,CAAC,CAAA;QAEF,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACd,CAAC;IACH,CAAC"}
@@ -1,17 +1,19 @@
1
1
  import { Command } from '@oclif/core';
2
2
  /**
3
- * Delete a pull request
3
+ * Create a link between two entities
4
4
  */
5
- export default class DeletePr extends Command {
5
+ export default class Link extends Command {
6
6
  static args: {
7
+ type: import("@oclif/core/interfaces").Arg<string, Record<string, unknown>>;
7
8
  id: import("@oclif/core/interfaces").Arg<string, Record<string, unknown>>;
9
+ linkType: import("@oclif/core/interfaces").Arg<string, Record<string, unknown>>;
10
+ target: import("@oclif/core/interfaces").Arg<string, Record<string, unknown>>;
8
11
  };
9
12
  static description: string;
10
13
  static examples: string[];
11
14
  static flags: {
12
- force: import("@oclif/core/interfaces").BooleanFlag<boolean>;
13
15
  project: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
14
16
  };
15
17
  run(): Promise<void>;
16
18
  }
17
- //# sourceMappingURL=pr.d.ts.map
19
+ //# sourceMappingURL=link.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"link.d.ts","sourceRoot":"","sources":["../../src/commands/link.ts"],"names":[],"mappings":"AACA,OAAO,EAAQ,OAAO,EAAE,MAAM,aAAa,CAAA;AAW3C;;GAEG;AAEH,MAAM,CAAC,OAAO,OAAO,IAAK,SAAQ,OAAO;IAEvC,OAAgB,IAAI;;;;;MAkBnB;IAGD,OAAgB,WAAW,SAAuC;IAGlE,OAAgB,QAAQ,WAIvB;IAGD,OAAgB,KAAK;;MAEpB;IAEY,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAqClC"}
@@ -0,0 +1,74 @@
1
+ // eslint-disable-next-line import/order
2
+ import { Args, Command } from '@oclif/core';
3
+ import { daemonCreateLink } from '../daemon/daemon-create-link.js';
4
+ import { projectFlag } from '../flags/project-flag.js';
5
+ import { ensureInitialized, NotInitializedError, } from '../utils/ensure-initialized.js';
6
+ import { parseLinkTarget } from '../utils/parse-link-target.js';
7
+ import { resolveProjectPath } from '../utils/resolve-project-path.js';
8
+ /**
9
+ * Create a link between two entities
10
+ */
11
+ // eslint-disable-next-line custom/no-default-class-export, class-export/class-export
12
+ export default class Link extends Command {
13
+ // eslint-disable-next-line no-restricted-syntax
14
+ static args = {
15
+ type: Args.string({
16
+ description: 'Source entity type (e.g., issue, doc)',
17
+ required: true,
18
+ }),
19
+ id: Args.string({
20
+ description: 'Source entity ID or slug',
21
+ required: true,
22
+ }),
23
+ linkType: Args.string({
24
+ description: 'Link type (e.g., blocks, relates-to, parent-of)',
25
+ required: true,
26
+ }),
27
+ target: Args.string({
28
+ description: 'Target entity as type:id (e.g., issue:2, doc:getting-started)',
29
+ required: true,
30
+ }),
31
+ };
32
+ // eslint-disable-next-line no-restricted-syntax
33
+ static description = 'Create a link between two entities';
34
+ // eslint-disable-next-line no-restricted-syntax
35
+ static examples = [
36
+ '<%= config.bin %> link issue 1 blocks issue:2',
37
+ '<%= config.bin %> link doc getting-started relates-to issue:5',
38
+ '<%= config.bin %> link issue 1 parent-of issue:3 --project my-project',
39
+ ];
40
+ // eslint-disable-next-line no-restricted-syntax
41
+ static flags = {
42
+ project: projectFlag,
43
+ };
44
+ async run() {
45
+ const { args, flags } = await this.parse(Link);
46
+ const cwd = await resolveProjectPath(flags.project);
47
+ try {
48
+ await ensureInitialized(cwd);
49
+ }
50
+ catch (error) {
51
+ if (error instanceof NotInitializedError) {
52
+ this.error(error.message);
53
+ }
54
+ throw error instanceof Error ? error : new Error(String(error));
55
+ }
56
+ const parsed = parseLinkTarget(args.target);
57
+ if (parsed === undefined) {
58
+ this.error('Invalid target format. Use type:id (e.g., issue:2, doc:getting-started)');
59
+ }
60
+ const response = await daemonCreateLink({
61
+ projectPath: cwd,
62
+ sourceId: args.id,
63
+ sourceType: args.type,
64
+ targetId: parsed[1],
65
+ targetType: parsed[0],
66
+ linkType: args.linkType,
67
+ });
68
+ if (!response.success) {
69
+ this.error(response.error);
70
+ }
71
+ this.log(`Created link: ${args.type} ${args.id} --[${args.linkType}]--> ${args.target}`);
72
+ }
73
+ }
74
+ //# sourceMappingURL=link.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"link.js","sourceRoot":"","sources":["../../src/commands/link.ts"],"names":[],"mappings":"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"}
@@ -1,19 +1,18 @@
1
1
  import { Command } from '@oclif/core';
2
2
  /**
3
- * Get a single pull request by ID or display number
3
+ * List all links for an entity
4
4
  */
5
- export default class GetPr extends Command {
6
- static aliases: string[];
5
+ export default class Links extends Command {
7
6
  static args: {
7
+ type: import("@oclif/core/interfaces").Arg<string, Record<string, unknown>>;
8
8
  id: import("@oclif/core/interfaces").Arg<string, Record<string, unknown>>;
9
9
  };
10
10
  static description: string;
11
11
  static examples: string[];
12
12
  static flags: {
13
13
  json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
14
- global: import("@oclif/core/interfaces").BooleanFlag<boolean>;
15
14
  project: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
16
15
  };
17
16
  run(): Promise<void>;
18
17
  }
19
- //# sourceMappingURL=pr.d.ts.map
18
+ //# sourceMappingURL=links.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"links.d.ts","sourceRoot":"","sources":["../../src/commands/links.ts"],"names":[],"mappings":"AACA,OAAO,EAAQ,OAAO,EAAS,MAAM,aAAa,CAAA;AAUlD;;GAEG;AAEH,MAAM,CAAC,OAAO,OAAO,KAAM,SAAQ,OAAO;IAExC,OAAgB,IAAI;;;MASnB;IAGD,OAAgB,WAAW,SAAiC;IAG5D,OAAgB,QAAQ,WAIvB;IAGD,OAAgB,KAAK;;;MAMpB;IAEY,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAoClC"}
@@ -0,0 +1,70 @@
1
+ // eslint-disable-next-line import/order
2
+ import { Args, Command, Flags } from '@oclif/core';
3
+ import { daemonListLinks } from '../daemon/daemon-list-links.js';
4
+ import { projectFlag } from '../flags/project-flag.js';
5
+ import { ensureInitialized, NotInitializedError, } from '../utils/ensure-initialized.js';
6
+ import { resolveProjectPath } from '../utils/resolve-project-path.js';
7
+ /**
8
+ * List all links for an entity
9
+ */
10
+ // eslint-disable-next-line custom/no-default-class-export, class-export/class-export
11
+ export default class Links extends Command {
12
+ // eslint-disable-next-line no-restricted-syntax
13
+ static args = {
14
+ type: Args.string({
15
+ description: 'Entity type (e.g., issue, doc)',
16
+ required: true,
17
+ }),
18
+ id: Args.string({
19
+ description: 'Entity ID or slug',
20
+ required: true,
21
+ }),
22
+ };
23
+ // eslint-disable-next-line no-restricted-syntax
24
+ static description = 'List all links for an entity';
25
+ // eslint-disable-next-line no-restricted-syntax
26
+ static examples = [
27
+ '<%= config.bin %> links issue 1',
28
+ '<%= config.bin %> links doc getting-started --json',
29
+ '<%= config.bin %> links issue 1 --project my-project',
30
+ ];
31
+ // eslint-disable-next-line no-restricted-syntax
32
+ static flags = {
33
+ json: Flags.boolean({
34
+ description: 'Output as JSON',
35
+ default: false,
36
+ }),
37
+ project: projectFlag,
38
+ };
39
+ async run() {
40
+ const { args, flags } = await this.parse(Links);
41
+ const cwd = await resolveProjectPath(flags.project);
42
+ try {
43
+ await ensureInitialized(cwd);
44
+ }
45
+ catch (error) {
46
+ if (error instanceof NotInitializedError) {
47
+ this.error(error.message);
48
+ }
49
+ throw error instanceof Error ? error : new Error(String(error));
50
+ }
51
+ const response = await daemonListLinks({
52
+ projectPath: cwd,
53
+ entityId: args.id,
54
+ entityType: args.type,
55
+ });
56
+ if (flags.json) {
57
+ this.log(JSON.stringify(response.links, null, 2));
58
+ return;
59
+ }
60
+ if (response.links.length === 0) {
61
+ this.log(`No links found for ${args.type} ${args.id}.`);
62
+ return;
63
+ }
64
+ this.log(`Found ${response.totalCount} link(s) for ${args.type} ${args.id}:\n`);
65
+ for (const link of response.links) {
66
+ this.log(` ${link.linkType} --> ${link.targetType}:${link.targetId}`);
67
+ }
68
+ }
69
+ }
70
+ //# sourceMappingURL=links.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"links.js","sourceRoot":"","sources":["../../src/commands/links.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import { Command } from '@oclif/core';
2
+ /**
3
+ * List all available link types
4
+ */
5
+ export default class ListLinkTypes extends Command {
6
+ static description: string;
7
+ static examples: string[];
8
+ static flags: {
9
+ json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
10
+ project: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
11
+ };
12
+ run(): Promise<void>;
13
+ }
14
+ //# sourceMappingURL=link-types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"link-types.d.ts","sourceRoot":"","sources":["../../../src/commands/list/link-types.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAS,MAAM,aAAa,CAAA;AAU5C;;GAEG;AAEH,MAAM,CAAC,OAAO,OAAO,aAAc,SAAQ,OAAO;IAEhD,OAAgB,WAAW,SAAkC;IAG7D,OAAgB,QAAQ,WAIvB;IAGD,OAAgB,KAAK;;;MAMpB;IAEY,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAmClC"}