@noclaf/cli 0.8.0 → 0.9.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (306) hide show
  1. package/README.md +26 -88
  2. package/dist/app.js +13 -0
  3. package/dist/app.js.map +1 -0
  4. package/dist/brand.js +9 -49
  5. package/dist/brand.js.map +1 -1
  6. package/dist/cli.js +3 -37
  7. package/dist/cli.js.map +1 -1
  8. package/dist/mcp-server.js +3 -187
  9. package/dist/mcp-server.js.map +1 -1
  10. package/package.json +8 -17
  11. package/dist/adapters/supabase/allocation-gateway.js +0 -291
  12. package/dist/adapters/supabase/allocation-gateway.js.map +0 -1
  13. package/dist/adapters/supabase/analytics-gateway.js +0 -18
  14. package/dist/adapters/supabase/analytics-gateway.js.map +0 -1
  15. package/dist/adapters/supabase/calendar-gateway.js +0 -48
  16. package/dist/adapters/supabase/calendar-gateway.js.map +0 -1
  17. package/dist/adapters/supabase/calendar-write-gateway.js +0 -35
  18. package/dist/adapters/supabase/calendar-write-gateway.js.map +0 -1
  19. package/dist/adapters/supabase/checklist-gateway.js +0 -63
  20. package/dist/adapters/supabase/checklist-gateway.js.map +0 -1
  21. package/dist/adapters/supabase/client.js +0 -136
  22. package/dist/adapters/supabase/client.js.map +0 -1
  23. package/dist/adapters/supabase/context-gateway.js +0 -23
  24. package/dist/adapters/supabase/context-gateway.js.map +0 -1
  25. package/dist/adapters/supabase/gateway.js +0 -28
  26. package/dist/adapters/supabase/gateway.js.map +0 -1
  27. package/dist/adapters/supabase/release-gateway.js +0 -61
  28. package/dist/adapters/supabase/release-gateway.js.map +0 -1
  29. package/dist/adapters/supabase/sprint-gateway.js +0 -59
  30. package/dist/adapters/supabase/sprint-gateway.js.map +0 -1
  31. package/dist/adapters/supabase/task-gateway.js +0 -533
  32. package/dist/adapters/supabase/task-gateway.js.map +0 -1
  33. package/dist/auth.js +0 -141
  34. package/dist/auth.js.map +0 -1
  35. package/dist/cli/commands/auth.js +0 -127
  36. package/dist/cli/commands/auth.js.map +0 -1
  37. package/dist/cli/commands/clean.js +0 -120
  38. package/dist/cli/commands/clean.js.map +0 -1
  39. package/dist/cli/commands/completion.js +0 -114
  40. package/dist/cli/commands/completion.js.map +0 -1
  41. package/dist/cli/commands/exec.js +0 -69
  42. package/dist/cli/commands/exec.js.map +0 -1
  43. package/dist/cli/commands/init/analyze-step.js +0 -21
  44. package/dist/cli/commands/init/analyze-step.js.map +0 -1
  45. package/dist/cli/commands/init/apply-answers.js +0 -122
  46. package/dist/cli/commands/init/apply-answers.js.map +0 -1
  47. package/dist/cli/commands/init/apply-step.js +0 -165
  48. package/dist/cli/commands/init/apply-step.js.map +0 -1
  49. package/dist/cli/commands/init/auth-step.js +0 -48
  50. package/dist/cli/commands/init/auth-step.js.map +0 -1
  51. package/dist/cli/commands/init/boilerplate-step.js +0 -20
  52. package/dist/cli/commands/init/boilerplate-step.js.map +0 -1
  53. package/dist/cli/commands/init/clients-step.js +0 -78
  54. package/dist/cli/commands/init/clients-step.js.map +0 -1
  55. package/dist/cli/commands/init/context-step.js +0 -81
  56. package/dist/cli/commands/init/context-step.js.map +0 -1
  57. package/dist/cli/commands/init/describe-step.js +0 -68
  58. package/dist/cli/commands/init/describe-step.js.map +0 -1
  59. package/dist/cli/commands/init/index.js +0 -98
  60. package/dist/cli/commands/init/index.js.map +0 -1
  61. package/dist/cli/commands/init/mode.js +0 -18
  62. package/dist/cli/commands/init/mode.js.map +0 -1
  63. package/dist/cli/commands/init/progress.js +0 -60
  64. package/dist/cli/commands/init/progress.js.map +0 -1
  65. package/dist/cli/commands/init/project-step.js +0 -133
  66. package/dist/cli/commands/init/project-step.js.map +0 -1
  67. package/dist/cli/commands/init/provision-step.js +0 -103
  68. package/dist/cli/commands/init/provision-step.js.map +0 -1
  69. package/dist/cli/commands/map.js +0 -18
  70. package/dist/cli/commands/map.js.map +0 -1
  71. package/dist/cli/commands/plan.js +0 -45
  72. package/dist/cli/commands/plan.js.map +0 -1
  73. package/dist/cli/commands/skills.js +0 -23
  74. package/dist/cli/commands/skills.js.map +0 -1
  75. package/dist/cli/commands/sync.js +0 -319
  76. package/dist/cli/commands/sync.js.map +0 -1
  77. package/dist/cli/commands/validate-plan.js +0 -42
  78. package/dist/cli/commands/validate-plan.js.map +0 -1
  79. package/dist/cli/commands/wave.js +0 -57
  80. package/dist/cli/commands/wave.js.map +0 -1
  81. package/dist/cli/copy/auth.json +0 -6
  82. package/dist/cli/copy/flows.json +0 -6
  83. package/dist/cli/copy/init.json +0 -20
  84. package/dist/cli/copy/sync.json +0 -3
  85. package/dist/cli/copy.js +0 -23
  86. package/dist/cli/copy.js.map +0 -1
  87. package/dist/cli/flows/clients.js +0 -130
  88. package/dist/cli/flows/clients.js.map +0 -1
  89. package/dist/cli/flows/completion.js +0 -63
  90. package/dist/cli/flows/completion.js.map +0 -1
  91. package/dist/cli/flows/dependencies.js +0 -114
  92. package/dist/cli/flows/dependencies.js.map +0 -1
  93. package/dist/cli/flows/sections.js +0 -85
  94. package/dist/cli/flows/sections.js.map +0 -1
  95. package/dist/cli/flows/user-config.js +0 -37
  96. package/dist/cli/flows/user-config.js.map +0 -1
  97. package/dist/cli/ui/render.js +0 -239
  98. package/dist/cli/ui/render.js.map +0 -1
  99. package/dist/cli/ui/report.js +0 -130
  100. package/dist/cli/ui/report.js.map +0 -1
  101. package/dist/config.js +0 -289
  102. package/dist/config.js.map +0 -1
  103. package/dist/constants.js +0 -9
  104. package/dist/constants.js.map +0 -1
  105. package/dist/core/ports.js +0 -2
  106. package/dist/core/ports.js.map +0 -1
  107. package/dist/core/types.js +0 -5
  108. package/dist/core/types.js.map +0 -1
  109. package/dist/database.types.js +0 -11
  110. package/dist/database.types.js.map +0 -1
  111. package/dist/lib/active-project.js +0 -28
  112. package/dist/lib/active-project.js.map +0 -1
  113. package/dist/lib/autopull.js +0 -13
  114. package/dist/lib/autopull.js.map +0 -1
  115. package/dist/lib/boilerplate-scaffold.js +0 -65
  116. package/dist/lib/boilerplate-scaffold.js.map +0 -1
  117. package/dist/lib/boilerplates.js +0 -61
  118. package/dist/lib/boilerplates.js.map +0 -1
  119. package/dist/lib/calendar-logic.js +0 -59
  120. package/dist/lib/calendar-logic.js.map +0 -1
  121. package/dist/lib/calendar-write-logic.js +0 -6
  122. package/dist/lib/calendar-write-logic.js.map +0 -1
  123. package/dist/lib/checklist-logic.js +0 -5
  124. package/dist/lib/checklist-logic.js.map +0 -1
  125. package/dist/lib/client-configs.js +0 -191
  126. package/dist/lib/client-configs.js.map +0 -1
  127. package/dist/lib/client-install.js +0 -40
  128. package/dist/lib/client-install.js.map +0 -1
  129. package/dist/lib/colors.js +0 -92
  130. package/dist/lib/colors.js.map +0 -1
  131. package/dist/lib/cowork-extension.js +0 -143
  132. package/dist/lib/cowork-extension.js.map +0 -1
  133. package/dist/lib/dates.js +0 -21
  134. package/dist/lib/dates.js.map +0 -1
  135. package/dist/lib/dependencies.js +0 -145
  136. package/dist/lib/dependencies.js.map +0 -1
  137. package/dist/lib/dependency-install.js +0 -163
  138. package/dist/lib/dependency-install.js.map +0 -1
  139. package/dist/lib/duration.js +0 -5
  140. package/dist/lib/duration.js.map +0 -1
  141. package/dist/lib/exec-delegate.js +0 -218
  142. package/dist/lib/exec-delegate.js.map +0 -1
  143. package/dist/lib/exec-engines.js +0 -90
  144. package/dist/lib/exec-engines.js.map +0 -1
  145. package/dist/lib/exec-events.js +0 -87
  146. package/dist/lib/exec-events.js.map +0 -1
  147. package/dist/lib/exec-translators.js +0 -198
  148. package/dist/lib/exec-translators.js.map +0 -1
  149. package/dist/lib/file-merge.js +0 -33
  150. package/dist/lib/file-merge.js.map +0 -1
  151. package/dist/lib/git-exposure.js +0 -35
  152. package/dist/lib/git-exposure.js.map +0 -1
  153. package/dist/lib/harness.js +0 -127
  154. package/dist/lib/harness.js.map +0 -1
  155. package/dist/lib/hooks.js +0 -216
  156. package/dist/lib/hooks.js.map +0 -1
  157. package/dist/lib/patterns.js +0 -25
  158. package/dist/lib/patterns.js.map +0 -1
  159. package/dist/lib/pg-error.js +0 -53
  160. package/dist/lib/pg-error.js.map +0 -1
  161. package/dist/lib/plan-delegate.js +0 -117
  162. package/dist/lib/plan-delegate.js.map +0 -1
  163. package/dist/lib/project-context.js +0 -151
  164. package/dist/lib/project-context.js.map +0 -1
  165. package/dist/lib/prompts.js +0 -69
  166. package/dist/lib/prompts.js.map +0 -1
  167. package/dist/lib/provision-apply.js +0 -220
  168. package/dist/lib/provision-apply.js.map +0 -1
  169. package/dist/lib/provision-collect.js +0 -47
  170. package/dist/lib/provision-collect.js.map +0 -1
  171. package/dist/lib/provision.js +0 -45
  172. package/dist/lib/provision.js.map +0 -1
  173. package/dist/lib/release-logic.js +0 -10
  174. package/dist/lib/release-logic.js.map +0 -1
  175. package/dist/lib/repo-map.js +0 -176
  176. package/dist/lib/repo-map.js.map +0 -1
  177. package/dist/lib/require-config.js +0 -32
  178. package/dist/lib/require-config.js.map +0 -1
  179. package/dist/lib/rules.js +0 -146
  180. package/dist/lib/rules.js.map +0 -1
  181. package/dist/lib/sections.js +0 -89
  182. package/dist/lib/sections.js.map +0 -1
  183. package/dist/lib/skill-agent.js +0 -44
  184. package/dist/lib/skill-agent.js.map +0 -1
  185. package/dist/lib/skill-serve.js +0 -128
  186. package/dist/lib/skill-serve.js.map +0 -1
  187. package/dist/lib/skills-cache.js +0 -99
  188. package/dist/lib/skills-cache.js.map +0 -1
  189. package/dist/lib/skills.js +0 -237
  190. package/dist/lib/skills.js.map +0 -1
  191. package/dist/lib/sprint-deadline.js +0 -28
  192. package/dist/lib/sprint-deadline.js.map +0 -1
  193. package/dist/lib/sprint-logic.js +0 -31
  194. package/dist/lib/sprint-logic.js.map +0 -1
  195. package/dist/lib/targets.js +0 -150
  196. package/dist/lib/targets.js.map +0 -1
  197. package/dist/lib/task-history.js +0 -15
  198. package/dist/lib/task-history.js.map +0 -1
  199. package/dist/lib/telemetry.js +0 -51
  200. package/dist/lib/telemetry.js.map +0 -1
  201. package/dist/lib/tool-result.js +0 -15
  202. package/dist/lib/tool-result.js.map +0 -1
  203. package/dist/lib/validate-plan-delegate.js +0 -106
  204. package/dist/lib/validate-plan-delegate.js.map +0 -1
  205. package/dist/lib/version-check.js +0 -89
  206. package/dist/lib/version-check.js.map +0 -1
  207. package/dist/lib/wave-scheduler.js +0 -95
  208. package/dist/lib/wave-scheduler.js.map +0 -1
  209. package/dist/session-factory.js +0 -19
  210. package/dist/session-factory.js.map +0 -1
  211. package/dist/spinner.js +0 -12
  212. package/dist/spinner.js.map +0 -1
  213. package/dist/tools/activate-sprint.js +0 -44
  214. package/dist/tools/activate-sprint.js.map +0 -1
  215. package/dist/tools/add-checklist-item.js +0 -44
  216. package/dist/tools/add-checklist-item.js.map +0 -1
  217. package/dist/tools/add-checklist.js +0 -63
  218. package/dist/tools/add-checklist.js.map +0 -1
  219. package/dist/tools/add-holiday.js +0 -41
  220. package/dist/tools/add-holiday.js.map +0 -1
  221. package/dist/tools/add-home-office.js +0 -31
  222. package/dist/tools/add-home-office.js.map +0 -1
  223. package/dist/tools/add-vacation.js +0 -39
  224. package/dist/tools/add-vacation.js.map +0 -1
  225. package/dist/tools/attach-pr.js +0 -97
  226. package/dist/tools/attach-pr.js.map +0 -1
  227. package/dist/tools/comment-task.js +0 -72
  228. package/dist/tools/comment-task.js.map +0 -1
  229. package/dist/tools/create-release.js +0 -46
  230. package/dist/tools/create-release.js.map +0 -1
  231. package/dist/tools/create-sprint.js +0 -66
  232. package/dist/tools/create-sprint.js.map +0 -1
  233. package/dist/tools/create-task.js +0 -174
  234. package/dist/tools/create-task.js.map +0 -1
  235. package/dist/tools/delegate-exec.js +0 -63
  236. package/dist/tools/delegate-exec.js.map +0 -1
  237. package/dist/tools/end-allocation.js +0 -38
  238. package/dist/tools/end-allocation.js.map +0 -1
  239. package/dist/tools/end-sprint.js +0 -37
  240. package/dist/tools/end-sprint.js.map +0 -1
  241. package/dist/tools/end-task-allocation.js +0 -60
  242. package/dist/tools/end-task-allocation.js.map +0 -1
  243. package/dist/tools/exec-status.js +0 -45
  244. package/dist/tools/exec-status.js.map +0 -1
  245. package/dist/tools/finalize-release.js +0 -45
  246. package/dist/tools/finalize-release.js.map +0 -1
  247. package/dist/tools/get-active-allocation.js +0 -69
  248. package/dist/tools/get-active-allocation.js.map +0 -1
  249. package/dist/tools/get-calendar.js +0 -40
  250. package/dist/tools/get-calendar.js.map +0 -1
  251. package/dist/tools/get-context.js +0 -48
  252. package/dist/tools/get-context.js.map +0 -1
  253. package/dist/tools/get-sprint.js +0 -38
  254. package/dist/tools/get-sprint.js.map +0 -1
  255. package/dist/tools/get-task.js +0 -146
  256. package/dist/tools/get-task.js.map +0 -1
  257. package/dist/tools/index.js +0 -92
  258. package/dist/tools/index.js.map +0 -1
  259. package/dist/tools/list-my-allocations.js +0 -71
  260. package/dist/tools/list-my-allocations.js.map +0 -1
  261. package/dist/tools/list-projects.js +0 -38
  262. package/dist/tools/list-projects.js.map +0 -1
  263. package/dist/tools/list-releases.js +0 -32
  264. package/dist/tools/list-releases.js.map +0 -1
  265. package/dist/tools/list-sprints.js +0 -30
  266. package/dist/tools/list-sprints.js.map +0 -1
  267. package/dist/tools/list-tasks.js +0 -95
  268. package/dist/tools/list-tasks.js.map +0 -1
  269. package/dist/tools/move-task.js +0 -82
  270. package/dist/tools/move-task.js.map +0 -1
  271. package/dist/tools/plan.js +0 -56
  272. package/dist/tools/plan.js.map +0 -1
  273. package/dist/tools/record-delivery.js +0 -100
  274. package/dist/tools/record-delivery.js.map +0 -1
  275. package/dist/tools/remove-checklist-item.js +0 -42
  276. package/dist/tools/remove-checklist-item.js.map +0 -1
  277. package/dist/tools/remove-checklist.js +0 -42
  278. package/dist/tools/remove-checklist.js.map +0 -1
  279. package/dist/tools/remove-holiday.js +0 -31
  280. package/dist/tools/remove-holiday.js.map +0 -1
  281. package/dist/tools/remove-home-office.js +0 -32
  282. package/dist/tools/remove-home-office.js.map +0 -1
  283. package/dist/tools/remove-vacation.js +0 -31
  284. package/dist/tools/remove-vacation.js.map +0 -1
  285. package/dist/tools/set-project.js +0 -52
  286. package/dist/tools/set-project.js.map +0 -1
  287. package/dist/tools/set-review.js +0 -132
  288. package/dist/tools/set-review.js.map +0 -1
  289. package/dist/tools/sprint-common.js +0 -13
  290. package/dist/tools/sprint-common.js.map +0 -1
  291. package/dist/tools/start-allocation.js +0 -32
  292. package/dist/tools/start-allocation.js.map +0 -1
  293. package/dist/tools/start-task-allocation.js +0 -83
  294. package/dist/tools/start-task-allocation.js.map +0 -1
  295. package/dist/tools/update-checklist-item.js +0 -51
  296. package/dist/tools/update-checklist-item.js.map +0 -1
  297. package/dist/tools/update-release.js +0 -58
  298. package/dist/tools/update-release.js.map +0 -1
  299. package/dist/tools/update-sprint.js +0 -56
  300. package/dist/tools/update-sprint.js.map +0 -1
  301. package/dist/tools/update-task.js +0 -183
  302. package/dist/tools/update-task.js.map +0 -1
  303. package/dist/tools/validate-plan.js +0 -58
  304. package/dist/tools/validate-plan.js.map +0 -1
  305. package/dist/version.js +0 -16
  306. package/dist/version.js.map +0 -1
@@ -1,39 +0,0 @@
1
- import { z } from 'zod';
2
- import { jsonResult, errorResult } from '../lib/tool-result.js';
3
- import { brand } from '../brand.js';
4
- import { isoDate, dateRangeError } from '../lib/dates.js';
5
- const ArgsSchema = z
6
- .object({ user_id: z.uuid(), start_date: isoDate, end_date: isoDate, notes: z.string().optional() })
7
- .strict();
8
- export const definition = {
9
- name: `${brand.toolPrefix}add_vacation`,
10
- description: 'Registra férias de um usuário no calendário do time (só admin/gerente).',
11
- inputSchema: {
12
- type: 'object',
13
- properties: {
14
- user_id: { type: 'string', format: 'uuid', description: 'ID do usuário.' },
15
- start_date: { type: 'string', description: 'Início (YYYY-MM-DD).' },
16
- end_date: { type: 'string', description: 'Fim (YYYY-MM-DD), >= start_date.' },
17
- notes: { type: 'string', description: 'Observações.' },
18
- },
19
- required: ['user_id', 'start_date', 'end_date'],
20
- additionalProperties: false,
21
- },
22
- };
23
- export async function handler(args, ctx) {
24
- const parsed = ArgsSchema.safeParse(args ?? {});
25
- if (!parsed.success)
26
- return errorResult(`Argumento inválido: ${parsed.error.message}`);
27
- const a = parsed.data;
28
- const bad = dateRangeError(a.start_date, a.end_date);
29
- if (bad)
30
- return errorResult(bad);
31
- try {
32
- const v = await ctx.gateway.addVacation({ ...a, notes: a.notes ?? null, created_by: ctx.user.id });
33
- return jsonResult({ vacation_id: v.id, ...a });
34
- }
35
- catch (err) {
36
- return errorResult(err.message);
37
- }
38
- }
39
- //# sourceMappingURL=add-vacation.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"add-vacation.js","sourceRoot":"","sources":["../../src/tools/add-vacation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAE1D,MAAM,UAAU,GAAG,CAAC;KACjB,MAAM,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,EAAE,EAAE,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC;KACnG,MAAM,EAAE,CAAC;AAEZ,MAAM,CAAC,MAAM,UAAU,GAAS;IAC9B,IAAI,EAAE,GAAG,KAAK,CAAC,UAAU,cAAc;IACvC,WAAW,EAAE,yEAAyE;IACtF,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,gBAAgB,EAAE;YAC1E,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,sBAAsB,EAAE;YACnE,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,kCAAkC,EAAE;YAC7E,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,cAAc,EAAE;SACvD;QACD,QAAQ,EAAE,CAAC,SAAS,EAAE,YAAY,EAAE,UAAU,CAAC;QAC/C,oBAAoB,EAAE,KAAK;KAC5B;CACF,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,IAAa,EAAE,GAAgB;IAC3D,MAAM,MAAM,GAAG,UAAU,CAAC,SAAS,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;IAChD,IAAI,CAAC,MAAM,CAAC,OAAO;QAAE,OAAO,WAAW,CAAC,uBAAuB,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;IACvF,MAAM,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC;IACtB,MAAM,GAAG,GAAG,cAAc,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC;IACrD,IAAI,GAAG;QAAE,OAAO,WAAW,CAAC,GAAG,CAAC,CAAC;IACjC,IAAI,CAAC;QACH,MAAM,CAAC,GAAG,MAAM,GAAG,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,IAAI,EAAE,UAAU,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;QACnG,OAAO,UAAU,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;IACjD,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,WAAW,CAAE,GAAa,CAAC,OAAO,CAAC,CAAC;IAC7C,CAAC;AACH,CAAC"}
@@ -1,97 +0,0 @@
1
- import { z } from 'zod';
2
- import { jsonResult, errorResult } from '../lib/tool-result.js';
3
- import { resolveProjectConfig, isErrorResult } from '../lib/require-config.js';
4
- import { brand } from '../brand.js';
5
- /** Estado do task ao mover pra review quando um PR é anexado. */
6
- const REVIEW_STATUS = 'code_review';
7
- const REVIEW_STATE_ON_ATTACH = 'pending';
8
- const ArgsSchema = z
9
- .object({
10
- task_id: z.uuid(),
11
- pr_url: z.url(),
12
- project_id: z.uuid().optional(),
13
- })
14
- .strict();
15
- export const definition = {
16
- name: `${brand.toolPrefix}attach_pr`,
17
- description: 'Anexa a URL de um pull request a uma tarefa e a coloca em review: grava `pr_url`, ' +
18
- `seta \`review_state=pending\` e move o status pra \`${REVIEW_STATUS}\`. ` +
19
- 'Idempotente — chamar de novo com o mesmo PR não duplica histórico. ' +
20
- 'Use logo após abrir o PR de um ticket (é o passo que liga o ticket ao review externo).',
21
- inputSchema: {
22
- type: 'object',
23
- properties: {
24
- task_id: { type: 'string', format: 'uuid' },
25
- pr_url: { type: 'string', format: 'uri', description: 'URL do pull request.' },
26
- project_id: {
27
- type: 'string',
28
- format: 'uuid',
29
- description: `Override do projeto. Se omitido, usa o projeto ativo (${brand.toolPrefix}set_project) ou o default.`,
30
- },
31
- },
32
- required: ['task_id', 'pr_url'],
33
- additionalProperties: false,
34
- },
35
- };
36
- /**
37
- * Diff entre o estado atual e o alvo de "anexar PR": patch de colunas (`pr_url`/`review_state`)
38
- * + changes pro histórico + se o status precisa mover. Só inclui o que mudou → idempotente. Pura.
39
- */
40
- export function buildAttachPrPatch(current, prUrl) {
41
- const patch = {};
42
- const changes = [];
43
- if (current.pr_url !== prUrl) {
44
- patch.pr_url = prUrl;
45
- changes.push({ field: 'pr_url', old_value: current.pr_url, new_value: prUrl });
46
- }
47
- if (current.review_state !== REVIEW_STATE_ON_ATTACH) {
48
- patch.review_state = REVIEW_STATE_ON_ATTACH;
49
- changes.push({
50
- field: 'review_state',
51
- old_value: current.review_state,
52
- new_value: REVIEW_STATE_ON_ATTACH,
53
- });
54
- }
55
- return { patch: patch, changes, moveStatus: current.status !== REVIEW_STATUS };
56
- }
57
- /** Monta o payload de resposta do attach_pr a partir do estado atual + o que foi aplicado. Pura. */
58
- export function buildAttachPrResult(current, taskId, prUrl, changes, movedStatus) {
59
- return {
60
- task_id: taskId,
61
- key: current.key,
62
- title: current.title,
63
- pr_url: prUrl,
64
- review_state: REVIEW_STATE_ON_ATTACH,
65
- status: REVIEW_STATUS,
66
- previous_status: movedStatus ? current.status : REVIEW_STATUS,
67
- moved_status: movedStatus,
68
- changed_fields: changes.map((c) => c.field),
69
- already_attached: changes.length === 0 && !movedStatus,
70
- };
71
- }
72
- export async function handler(args, ctx) {
73
- const parsed = ArgsSchema.safeParse(args);
74
- if (!parsed.success)
75
- return errorResult(`Argumento inválido: ${parsed.error.message}`);
76
- const { task_id, pr_url } = parsed.data;
77
- const cfg = resolveProjectConfig(ctx, parsed.data.project_id);
78
- if (isErrorResult(cfg))
79
- return cfg;
80
- try {
81
- const current = await ctx.gateway.getTaskForAttachPr(task_id, cfg.project_id);
82
- if (!current)
83
- return errorResult('Tarefa não encontrada ou fora do projeto atual.');
84
- const { patch, changes, moveStatus } = buildAttachPrPatch(current, pr_url);
85
- if (Object.keys(patch).length > 0) {
86
- await ctx.gateway.applyTaskPatch(task_id, cfg.project_id, ctx.user.id, patch, changes);
87
- }
88
- if (moveStatus) {
89
- await ctx.gateway.moveTaskStatus(task_id, cfg.project_id, REVIEW_STATUS, ctx.user.id, current.status);
90
- }
91
- return jsonResult(buildAttachPrResult(current, task_id, pr_url, changes, moveStatus));
92
- }
93
- catch (err) {
94
- return errorResult(err.message);
95
- }
96
- }
97
- //# sourceMappingURL=attach-pr.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"attach-pr.js","sourceRoot":"","sources":["../../src/tools/attach-pr.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAE,oBAAoB,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAC/E,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAIpC,iEAAiE;AACjE,MAAM,aAAa,GAAG,aAAa,CAAC;AACpC,MAAM,sBAAsB,GAAgB,SAAS,CAAC;AAEtD,MAAM,UAAU,GAAG,CAAC;KACjB,MAAM,CAAC;IACN,OAAO,EAAE,CAAC,CAAC,IAAI,EAAE;IACjB,MAAM,EAAE,CAAC,CAAC,GAAG,EAAE;IACf,UAAU,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,QAAQ,EAAE;CAChC,CAAC;KACD,MAAM,EAAE,CAAC;AAEZ,MAAM,CAAC,MAAM,UAAU,GAAS;IAC9B,IAAI,EAAE,GAAG,KAAK,CAAC,UAAU,WAAW;IACpC,WAAW,EACT,oFAAoF;QACpF,uDAAuD,aAAa,MAAM;QAC1E,qEAAqE;QACrE,wFAAwF;IAC1F,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE;YAC3C,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,sBAAsB,EAAE;YAC9E,UAAU,EAAE;gBACV,IAAI,EAAE,QAAQ;gBACd,MAAM,EAAE,MAAM;gBACd,WAAW,EAAE,yDAAyD,KAAK,CAAC,UAAU,4BAA4B;aACnH;SACF;QACD,QAAQ,EAAE,CAAC,SAAS,EAAE,QAAQ,CAAC;QAC/B,oBAAoB,EAAE,KAAK;KAC5B;CACF,CAAC;AAUF;;;GAGG;AACH,MAAM,UAAU,kBAAkB,CAChC,OAA2B,EAC3B,KAAa;IAEb,MAAM,KAAK,GAA4B,EAAE,CAAC;IAC1C,MAAM,OAAO,GAAkB,EAAE,CAAC;IAElC,IAAI,OAAO,CAAC,MAAM,KAAK,KAAK,EAAE,CAAC;QAC7B,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC;QACrB,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;IACjF,CAAC;IACD,IAAI,OAAO,CAAC,YAAY,KAAK,sBAAsB,EAAE,CAAC;QACpD,KAAK,CAAC,YAAY,GAAG,sBAAsB,CAAC;QAC5C,OAAO,CAAC,IAAI,CAAC;YACX,KAAK,EAAE,cAAc;YACrB,SAAS,EAAE,OAAO,CAAC,YAAY;YAC/B,SAAS,EAAE,sBAAsB;SAClC,CAAC,CAAC;IACL,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,KAAmB,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,CAAC,MAAM,KAAK,aAAa,EAAE,CAAC;AAC/F,CAAC;AAED,oGAAoG;AACpG,MAAM,UAAU,mBAAmB,CACjC,OAA2B,EAC3B,MAAc,EACd,KAAa,EACb,OAAsB,EACtB,WAAoB;IAEpB,OAAO;QACL,OAAO,EAAE,MAAM;QACf,GAAG,EAAE,OAAO,CAAC,GAAG;QAChB,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,MAAM,EAAE,KAAK;QACb,YAAY,EAAE,sBAAsB;QACpC,MAAM,EAAE,aAAa;QACrB,eAAe,EAAE,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,aAAa;QAC7D,YAAY,EAAE,WAAW;QACzB,cAAc,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;QAC3C,gBAAgB,EAAE,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,WAAW;KACvD,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,IAAa,EAAE,GAAgB;IAC3D,MAAM,MAAM,GAAG,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IAC1C,IAAI,CAAC,MAAM,CAAC,OAAO;QAAE,OAAO,WAAW,CAAC,uBAAuB,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;IACvF,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC;IACxC,MAAM,GAAG,GAAG,oBAAoB,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC9D,IAAI,aAAa,CAAC,GAAG,CAAC;QAAE,OAAO,GAAG,CAAC;IAEnC,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,OAAO,CAAC,kBAAkB,CAAC,OAAO,EAAE,GAAG,CAAC,UAAU,CAAC,CAAC;QAC9E,IAAI,CAAC,OAAO;YAAE,OAAO,WAAW,CAAC,iDAAiD,CAAC,CAAC;QAEpF,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,GAAG,kBAAkB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAE3E,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAClC,MAAM,GAAG,CAAC,OAAO,CAAC,cAAc,CAAC,OAAO,EAAE,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;QACzF,CAAC;QACD,IAAI,UAAU,EAAE,CAAC;YACf,MAAM,GAAG,CAAC,OAAO,CAAC,cAAc,CAC9B,OAAO,EACP,GAAG,CAAC,UAAU,EACd,aAAa,EACb,GAAG,CAAC,IAAI,CAAC,EAAE,EACX,OAAO,CAAC,MAAM,CACf,CAAC;QACJ,CAAC;QAED,OAAO,UAAU,CAAC,mBAAmB,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC;IACxF,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,WAAW,CAAE,GAAa,CAAC,OAAO,CAAC,CAAC;IAC7C,CAAC;AACH,CAAC"}
@@ -1,72 +0,0 @@
1
- import { z } from "zod";
2
- import { jsonResult, errorResult } from "../lib/tool-result.js";
3
- import { resolveProjectConfig, isErrorResult } from "../lib/require-config.js";
4
- import { brand } from "../brand.js";
5
- const ArgsSchema = z
6
- .object({
7
- task_id: z.uuid(),
8
- content: z
9
- .string()
10
- .trim()
11
- .min(1, "Comentário não pode estar vazio.")
12
- .max(5000, "Comentário não pode passar de 5000 caracteres."),
13
- project_id: z.uuid().optional(),
14
- })
15
- .strict();
16
- export const definition = {
17
- name: `${brand.toolPrefix}comment_task`,
18
- description: "Adiciona um comentário em uma tarefa. O comentário fica visível pros humanos na UI " +
19
- "junto com os outros comentários da task.",
20
- inputSchema: {
21
- type: "object",
22
- properties: {
23
- task_id: { type: "string", format: "uuid" },
24
- content: { type: "string", minLength: 1, maxLength: 5000 },
25
- project_id: {
26
- type: "string",
27
- format: "uuid",
28
- description: `Override do projeto. Se omitido, usa o projeto ativo (${brand.toolPrefix}set_project) ou o default.`,
29
- },
30
- },
31
- required: ["task_id", "content"],
32
- additionalProperties: false,
33
- },
34
- };
35
- /** Monta o registro de histórico do comentário, truncando o preview. Pura. */
36
- export function buildCommentHistoryEntry(taskId, userId, content) {
37
- return {
38
- task_id: taskId,
39
- user_id: userId,
40
- action: "commented",
41
- field: null,
42
- new_value: content.slice(0, 200),
43
- };
44
- }
45
- /** Monta o payload de resposta do comment_task. Pura. */
46
- export function buildCommentResult(comment) {
47
- return {
48
- comment_id: comment.id,
49
- task_id: comment.task_id,
50
- created_at: comment.created_at,
51
- };
52
- }
53
- export async function handler(args, ctx) {
54
- const parsed = ArgsSchema.safeParse(args);
55
- if (!parsed.success)
56
- return errorResult(`Argumento inválido: ${parsed.error.message}`);
57
- const { task_id, content } = parsed.data;
58
- const cfg = resolveProjectConfig(ctx, parsed.data.project_id);
59
- if (isErrorResult(cfg))
60
- return cfg;
61
- let comment;
62
- try {
63
- comment = await ctx.gateway.commentTask(task_id, cfg.project_id, ctx.user.id, content, buildCommentHistoryEntry(task_id, ctx.user.id, content));
64
- }
65
- catch (err) {
66
- return errorResult(err.message);
67
- }
68
- if (!comment)
69
- return errorResult("Tarefa não encontrada ou fora do projeto atual.");
70
- return jsonResult(buildCommentResult(comment));
71
- }
72
- //# sourceMappingURL=comment-task.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"comment-task.js","sourceRoot":"","sources":["../../src/tools/comment-task.ts"],"names":[],"mappings":"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"}
@@ -1,46 +0,0 @@
1
- import { z } from 'zod';
2
- import { jsonResult, errorResult } from '../lib/tool-result.js';
3
- import { resolveProjectConfig, isErrorResult } from '../lib/require-config.js';
4
- import { isoDate } from '../lib/dates.js';
5
- import { brand } from '../brand.js';
6
- import { projectIdProp } from './sprint-common.js';
7
- const ArgsSchema = z
8
- .object({
9
- name: z.string().trim().min(1).max(100),
10
- target_date: isoDate,
11
- description: z.string().optional(),
12
- project_id: z.uuid().optional(),
13
- })
14
- .strict();
15
- export const definition = {
16
- name: `${brand.toolPrefix}create_release`,
17
- description: 'Cria uma release (status planning) no projeto. target_date é obrigatória (YYYY-MM-DD).',
18
- inputSchema: {
19
- type: 'object',
20
- properties: {
21
- name: { type: 'string' },
22
- target_date: { type: 'string', description: 'YYYY-MM-DD.' },
23
- description: { type: 'string' },
24
- project_id: projectIdProp,
25
- },
26
- required: ['name', 'target_date'],
27
- additionalProperties: false,
28
- },
29
- };
30
- export async function handler(args, ctx) {
31
- const parsed = ArgsSchema.safeParse(args);
32
- if (!parsed.success)
33
- return errorResult(`Argumento inválido: ${parsed.error.message}`);
34
- const cfg = resolveProjectConfig(ctx, parsed.data.project_id);
35
- if (isErrorResult(cfg))
36
- return cfg;
37
- const { project_id: _p, ...rest } = parsed.data;
38
- try {
39
- const release = await ctx.gateway.createRelease({ ...rest, project_id: cfg.project_id, created_by: ctx.user.id });
40
- return jsonResult({ ok: true, release });
41
- }
42
- catch (err) {
43
- return errorResult(err.message);
44
- }
45
- }
46
- //# sourceMappingURL=create-release.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"create-release.js","sourceRoot":"","sources":["../../src/tools/create-release.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAE,oBAAoB,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAC/E,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC1C,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD,MAAM,UAAU,GAAG,CAAC;KACjB,MAAM,CAAC;IACN,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;IACvC,WAAW,EAAE,OAAO;IACpB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAClC,UAAU,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,QAAQ,EAAE;CAChC,CAAC;KACD,MAAM,EAAE,CAAC;AAEZ,MAAM,CAAC,MAAM,UAAU,GAAS;IAC9B,IAAI,EAAE,GAAG,KAAK,CAAC,UAAU,gBAAgB;IACzC,WAAW,EAAE,wFAAwF;IACrG,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YACxB,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,aAAa,EAAE;YAC3D,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YAC/B,UAAU,EAAE,aAAa;SAC1B;QACD,QAAQ,EAAE,CAAC,MAAM,EAAE,aAAa,CAAC;QACjC,oBAAoB,EAAE,KAAK;KAC5B;CACF,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,IAAa,EAAE,GAAgB;IAC3D,MAAM,MAAM,GAAG,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IAC1C,IAAI,CAAC,MAAM,CAAC,OAAO;QAAE,OAAO,WAAW,CAAC,uBAAuB,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;IACvF,MAAM,GAAG,GAAG,oBAAoB,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC9D,IAAI,aAAa,CAAC,GAAG,CAAC;QAAE,OAAO,GAAG,CAAC;IACnC,MAAM,EAAE,UAAU,EAAE,EAAE,EAAE,GAAG,IAAI,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC;IAChD,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,GAAG,IAAI,EAAE,UAAU,EAAE,GAAG,CAAC,UAAU,EAAE,UAAU,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;QAClH,OAAO,UAAU,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;IAC3C,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,WAAW,CAAE,GAAa,CAAC,OAAO,CAAC,CAAC;IAC7C,CAAC;AACH,CAAC"}
@@ -1,66 +0,0 @@
1
- import { z } from 'zod';
2
- import { jsonResult, errorResult } from '../lib/tool-result.js';
3
- import { resolveProjectConfig, isErrorResult } from '../lib/require-config.js';
4
- import { closeSprint } from '../lib/sprint-logic.js';
5
- import { todayStr, isoDate, dateRangeError } from '../lib/dates.js';
6
- import { brand } from '../brand.js';
7
- import { projectIdProp } from './sprint-common.js';
8
- const ArgsSchema = z
9
- .object({
10
- name: z.string().trim().min(1).max(100),
11
- start_date: isoDate.optional(),
12
- end_date: isoDate.optional(),
13
- replace_active: z.boolean().optional(),
14
- project_id: z.uuid().optional(),
15
- })
16
- .strict();
17
- export const definition = {
18
- name: `${brand.toolPrefix}create_sprint`,
19
- description: 'Cria uma sprint já ATIVA. Se o projeto já tem sprint ativa, falha dizendo qual — ' +
20
- 'passe replace_active=true pra encerrá-la (tasks não concluídas voltam pro backlog) e criar a nova.',
21
- inputSchema: {
22
- type: 'object',
23
- properties: {
24
- name: { type: 'string' },
25
- start_date: { type: 'string', description: 'YYYY-MM-DD. Default: hoje.' },
26
- end_date: { type: 'string', description: 'YYYY-MM-DD.' },
27
- replace_active: { type: 'boolean', description: 'Encerra a sprint ativa atual antes de criar. Default false.' },
28
- project_id: projectIdProp,
29
- },
30
- required: ['name'],
31
- additionalProperties: false,
32
- },
33
- };
34
- export async function handler(args, ctx) {
35
- const parsed = ArgsSchema.safeParse(args);
36
- if (!parsed.success)
37
- return errorResult(`Argumento inválido: ${parsed.error.message}`);
38
- const { name, replace_active } = parsed.data;
39
- const today = todayStr();
40
- const start = parsed.data.start_date ?? today;
41
- const end = parsed.data.end_date ?? null;
42
- const bad = dateRangeError(start, end);
43
- if (bad)
44
- return errorResult(bad);
45
- const cfg = resolveProjectConfig(ctx, parsed.data.project_id);
46
- if (isErrorResult(cfg))
47
- return cfg;
48
- try {
49
- const gw = ctx.gateway;
50
- const active = await gw.findSprint(cfg.project_id, 'active');
51
- let closed;
52
- if (active) {
53
- if (!replace_active) {
54
- return errorResult(`Já existe sprint ativa: "${active.name}" (${active.id}). Use replace_active=true pra encerrá-la ` +
55
- `e criar a nova, ou ${brand.toolPrefix}end_sprint antes.`);
56
- }
57
- closed = await closeSprint(gw, active, today);
58
- }
59
- const sprint = await gw.createSprint(cfg.project_id, name, start, end);
60
- return jsonResult({ ok: true, sprint, ...(closed && { closed_previous: closed }) });
61
- }
62
- catch (err) {
63
- return errorResult(err.message);
64
- }
65
- }
66
- //# sourceMappingURL=create-sprint.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"create-sprint.js","sourceRoot":"","sources":["../../src/tools/create-sprint.ts"],"names":[],"mappings":"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"}
@@ -1,174 +0,0 @@
1
- import { z } from 'zod';
2
- import { isoDate, dateRangeError } from '../lib/dates.js';
3
- import { jsonResult, errorResult } from '../lib/tool-result.js';
4
- import { resolveProjectConfig, isErrorResult } from '../lib/require-config.js';
5
- import { resolveTaskDeadline, SPRINT_DEADLINE_FALLBACK_DAYS } from '../lib/sprint-deadline.js';
6
- import { assertReleaseInProject } from '../lib/release-logic.js';
7
- import { brand } from '../brand.js';
8
- const TASK_STATUS = [
9
- 'backlog',
10
- 'todo',
11
- 'doing',
12
- 'code_review',
13
- 'rejected',
14
- 'qa',
15
- 'done',
16
- 'production',
17
- ];
18
- const TASK_PRIORITY = ['none', 'lowest', 'low', 'medium', 'high', 'urgent'];
19
- const TASK_TYPE = ['story', 'bug', 'task', 'epic', 'subtask', 'meeting'];
20
- const ArgsSchema = z
21
- .object({
22
- title: z.string().min(1).max(200),
23
- description: z.string().default(''),
24
- priority: z.enum(TASK_PRIORITY).default('none'),
25
- type: z.enum(TASK_TYPE).default('task'),
26
- status: z.enum(TASK_STATUS).default('todo'),
27
- start_date: isoDate.optional(),
28
- end_date: isoDate.optional(),
29
- sprint: z.string().default('active'),
30
- release: z.uuid().optional(),
31
- assignee_user_ids: z.array(z.uuid()).optional(),
32
- label_ids: z.array(z.uuid()).optional(),
33
- link_to_current_repository: z.boolean().default(true),
34
- additional_repository_ids: z.array(z.uuid()).optional(),
35
- project_id: z.uuid().optional(),
36
- })
37
- .strict();
38
- export const definition = {
39
- name: `${brand.toolPrefix}create_task`,
40
- description: 'Cria uma nova tarefa no projeto atual. Por padrão: status=todo, sprint=active, ' +
41
- 'type=task, assignee=você. Pra colocar no backlog fora de sprint, passe ' +
42
- 'status="backlog" e sprint="none". O reporter é sempre o usuário autenticado. ' +
43
- 'Tarefa em sprint SEMPRE tem prazo: ESTIME o "end_date" pelo tamanho do trabalho ' +
44
- `(hoje + ${SPRINT_DEADLINE_FALLBACK_DAYS} dias só é aplicado como fallback se você não informar, e vem em "warnings"). ` +
45
- '"start_date" (opcional) marca o início no cronograma e deve ser <= end_date. ' +
46
- 'Deixe FORA da sprint (sprint="none" + status="backlog") só quando for ideia, "um dia"/algum dia, ' +
47
- 'algo sem dono, ou o usuário pedir explicitamente; fora isso, fica na sprint ativa. ' +
48
- 'Backlog (sprint="none") segue livre de prazo. Se o projeto não tiver sprint ativa, ' +
49
- 'a tarefa nasce no backlog e avisa em "warnings" — criar nunca falha por falta de sprint.',
50
- inputSchema: {
51
- type: 'object',
52
- properties: {
53
- title: { type: 'string', minLength: 1, maxLength: 200 },
54
- description: { type: 'string' },
55
- priority: { type: 'string', enum: [...TASK_PRIORITY] },
56
- type: { type: 'string', enum: [...TASK_TYPE] },
57
- status: { type: 'string', enum: [...TASK_STATUS] },
58
- start_date: { type: 'string', description: 'Data ISO (YYYY-MM-DD), opcional. Deve ser <= end_date.' },
59
- end_date: {
60
- type: 'string',
61
- description: 'Data ISO (YYYY-MM-DD). ESTIME pelo tamanho do trabalho quando a tarefa entra em sprint; ' +
62
- `só se omitido vira o fallback hoje + ${SPRINT_DEADLINE_FALLBACK_DAYS} dias.`,
63
- },
64
- sprint: {
65
- type: 'string',
66
- description: '"active", "none" ou UUID. Default "active" — a tarefa entra na sprint corrente; sem sprint ativa, cai no backlog. ' +
67
- 'Use "none" (com status="backlog") só pra ideia, "um dia"/algum dia, algo sem dono ou pedido explícito. ' +
68
- 'Qualquer valor != "none" puxa "end_date" junto (default de prazo se você não informar).',
69
- },
70
- release: { type: 'string', format: 'uuid', description: 'UUID de uma release do mesmo projeto (list_releases).' },
71
- assignee_user_ids: { type: 'array', items: { type: 'string', format: 'uuid' } },
72
- label_ids: { type: 'array', items: { type: 'string', format: 'uuid' } },
73
- link_to_current_repository: {
74
- type: 'boolean',
75
- description: `Vincula automaticamente ao repositório do ${brand.projectConfigFile}. Default true.`,
76
- },
77
- additional_repository_ids: { type: 'array', items: { type: 'string', format: 'uuid' } },
78
- project_id: {
79
- type: 'string',
80
- format: 'uuid',
81
- description: `Override do projeto. Se omitido, usa o projeto ativo (${brand.toolPrefix}set_project) ou o default.`,
82
- },
83
- },
84
- required: ['title'],
85
- additionalProperties: false,
86
- },
87
- };
88
- /** Resolve assignees (default: o próprio usuário) e a lista deduplicada de repositórios a vincular. Pura. */
89
- export function resolveTaskLinks(input, repositoryId, userId) {
90
- const assigneeIds = input.assignee_user_ids ?? [userId];
91
- const repoIds = [];
92
- if (input.link_to_current_repository && repositoryId)
93
- repoIds.push(repositoryId);
94
- for (const r of input.additional_repository_ids ?? []) {
95
- if (!repoIds.includes(r))
96
- repoIds.push(r);
97
- }
98
- return { assigneeIds, repoIds };
99
- }
100
- /** Monta o payload de insert da task a partir do input + sprint já resolvida. Pura. */
101
- export function buildTaskInsertPayload(input, projectId, reporterId, sprintId, today) {
102
- const endDate = resolveTaskDeadline(sprintId, input.end_date, today);
103
- const rangeErr = dateRangeError(input.start_date, endDate);
104
- if (rangeErr)
105
- throw new Error(rangeErr);
106
- return {
107
- title: input.title,
108
- description: input.description,
109
- status: input.status,
110
- priority: input.priority,
111
- type: input.type,
112
- project_id: projectId,
113
- reporter_id: reporterId,
114
- sprint_id: sprintId,
115
- ...(input.release && { release_id: input.release }),
116
- start_date: input.start_date,
117
- end_date: endDate,
118
- };
119
- }
120
- /**
121
- * Avisos do que a tool decidiu sozinha: sprint pedida mas inexistente (nasceu no
122
- * backlog) e prazo derivado do default. Pura.
123
- */
124
- export function buildAutoDecisionWarnings(sprintInput, sprintId, endDateInput, endDate) {
125
- const warnings = [];
126
- if (sprintId === null && sprintInput !== 'none') {
127
- warnings.push('Projeto sem sprint ativa: a tarefa foi criada no backlog (sem sprint e sem prazo). ' +
128
- 'Pra colocar numa sprint depois, use update_task com "sprint" e "end_date".');
129
- }
130
- if (endDate && !endDateInput) {
131
- warnings.push(`Tarefa entrou em sprint sem "end_date": aplicado o prazo default de ${SPRINT_DEADLINE_FALLBACK_DAYS} dias (${endDate}).`);
132
- }
133
- return warnings;
134
- }
135
- /** Monta o payload de resposta a partir da task criada + vínculos + warnings. Pura. */
136
- export function buildCreateTaskResult(task, assigneeIds, labelIds, repoIds, warnings) {
137
- return {
138
- id: task.id,
139
- key: task.key,
140
- title: task.title,
141
- status: task.status,
142
- priority: task.priority,
143
- type: task.type,
144
- sprint_id: task.sprint_id,
145
- start_date: task.start_date,
146
- end_date: task.end_date,
147
- created_at: task.created_at,
148
- linked: { assignee_user_ids: assigneeIds, label_ids: labelIds, repository_ids: repoIds },
149
- warnings: warnings.length > 0 ? warnings : undefined,
150
- };
151
- }
152
- export async function handler(args, ctx) {
153
- const parsed = ArgsSchema.safeParse(args);
154
- if (!parsed.success)
155
- return errorResult(`Argumento inválido: ${parsed.error.message}`);
156
- const input = parsed.data;
157
- const cfg = resolveProjectConfig(ctx, input.project_id);
158
- if (isErrorResult(cfg))
159
- return cfg;
160
- try {
161
- if (input.release)
162
- await assertReleaseInProject(ctx.gateway, cfg.project_id, input.release);
163
- const sprintId = await ctx.gateway.resolveSprintId(cfg.project_id, input.sprint);
164
- const payload = buildTaskInsertPayload(input, cfg.project_id, ctx.user.id, sprintId);
165
- const { assigneeIds, repoIds } = resolveTaskLinks(input, cfg.repository_id, ctx.user.id);
166
- const autoDecisions = buildAutoDecisionWarnings(input.sprint, sprintId, input.end_date, payload.end_date ?? null);
167
- const { task, warnings } = await ctx.gateway.createTask(payload, { assigneeIds, labelIds: input.label_ids ?? [], repoIds }, ctx.user.id);
168
- return jsonResult(buildCreateTaskResult(task, assigneeIds, input.label_ids ?? [], repoIds, [...autoDecisions, ...warnings]));
169
- }
170
- catch (err) {
171
- return errorResult(err.message);
172
- }
173
- }
174
- //# sourceMappingURL=create-task.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"create-task.js","sourceRoot":"","sources":["../../src/tools/create-task.ts"],"names":[],"mappings":"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"}
@@ -1,63 +0,0 @@
1
- import { z } from 'zod';
2
- import { existsSync } from 'node:fs';
3
- import { jsonResult, errorResult } from '../lib/tool-result.js';
4
- import { startExec } from '../lib/exec-delegate.js';
5
- import { ENGINES, DEFAULT_ENGINE } from '../lib/exec-engines.js';
6
- import { brand } from '../brand.js';
7
- const ArgsSchema = z
8
- .object({
9
- worktree: z.string().min(1),
10
- instruction: z.string().min(1),
11
- engine: z.enum(ENGINES).optional(),
12
- })
13
- .strict();
14
- export const definition = {
15
- name: `${brand.cliToolPrefix}delegate_exec`,
16
- description: 'Delega a IMPLEMENTAÇÃO a um agente de execução novo (codex ou claude local, na assinatura — sem API) ' +
17
- 'num worktree já criado pelo /implement. Roda em background e, ao terminar, mede o resultado ' +
18
- '(tamanho de arquivo/função, lint, build, testes). NÃO julga qualidade e NÃO commita — o ' +
19
- `review fica com você (code-reviewer + harness). Consulte o resultado com \`${brand.cliToolPrefix}exec_status\`.`,
20
- inputSchema: {
21
- type: 'object',
22
- properties: {
23
- worktree: {
24
- type: 'string',
25
- description: 'Caminho absoluto do worktree onde implementar (criado pelo /implement).',
26
- },
27
- instruction: {
28
- type: 'string',
29
- description: 'O que implementar: o ticket + critérios de aceitação. Numa re-tentativa, inclua as ' +
30
- 'violações apontadas pelo review — o agente de execução é novo e não herda a conversa.',
31
- },
32
- engine: {
33
- type: 'string',
34
- enum: [...ENGINES],
35
- description: `Agente de execução a usar. Default: ${DEFAULT_ENGINE}.`,
36
- },
37
- },
38
- required: ['worktree', 'instruction'],
39
- additionalProperties: false,
40
- },
41
- };
42
- export async function handler(args, _ctx) {
43
- const parsed = ArgsSchema.safeParse(args);
44
- if (!parsed.success) {
45
- return errorResult(`Argumento inválido: ${parsed.error.message}`);
46
- }
47
- const { worktree, instruction, engine } = parsed.data;
48
- if (!existsSync(worktree)) {
49
- return errorResult(`Worktree não encontrado: ${worktree}`);
50
- }
51
- const job = startExec({ worktree, instruction, engine });
52
- if (job.state === 'failed') {
53
- return errorResult(job.error ?? 'falha ao iniciar a execução');
54
- }
55
- return jsonResult({
56
- job_id: job.id,
57
- state: job.state,
58
- engine: job.engine,
59
- worktree: job.worktree,
60
- hint: `Consulte com \`${brand.cliToolPrefix}exec_status\` até state=done|failed.`,
61
- });
62
- }
63
- //# sourceMappingURL=delegate-exec.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"delegate-exec.js","sourceRoot":"","sources":["../../src/tools/delegate-exec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAGrC,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACpD,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAEpC,MAAM,UAAU,GAAG,CAAC;KACjB,MAAM,CAAC;IACN,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC3B,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC9B,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE;CACnC,CAAC;KACD,MAAM,EAAE,CAAC;AAEZ,MAAM,CAAC,MAAM,UAAU,GAAS;IAC9B,IAAI,EAAE,GAAG,KAAK,CAAC,aAAa,eAAe;IAC3C,WAAW,EACT,uGAAuG;QACvG,8FAA8F;QAC9F,0FAA0F;QAC1F,8EAA8E,KAAK,CAAC,aAAa,gBAAgB;IACnH,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,QAAQ,EAAE;gBACR,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,yEAAyE;aACvF;YACD,WAAW,EAAE;gBACX,IAAI,EAAE,QAAQ;gBACd,WAAW,EACT,qFAAqF;oBACrF,uFAAuF;aAC1F;YACD,MAAM,EAAE;gBACN,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,CAAC,GAAG,OAAO,CAAC;gBAClB,WAAW,EAAE,uCAAuC,cAAc,GAAG;aACtE;SACF;QACD,QAAQ,EAAE,CAAC,UAAU,EAAE,aAAa,CAAC;QACrC,oBAAoB,EAAE,KAAK;KAC5B;CACF,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,IAAa,EAAE,IAAiB;IAC5D,MAAM,MAAM,GAAG,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IAC1C,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,OAAO,WAAW,CAAC,uBAAuB,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;IACpE,CAAC;IACD,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC;IACtD,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC1B,OAAO,WAAW,CAAC,4BAA4B,QAAQ,EAAE,CAAC,CAAC;IAC7D,CAAC;IAED,MAAM,GAAG,GAAG,SAAS,CAAC,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC,CAAC;IACzD,IAAI,GAAG,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC3B,OAAO,WAAW,CAAC,GAAG,CAAC,KAAK,IAAI,6BAA6B,CAAC,CAAC;IACjE,CAAC;IAED,OAAO,UAAU,CAAC;QAChB,MAAM,EAAE,GAAG,CAAC,EAAE;QACd,KAAK,EAAE,GAAG,CAAC,KAAK;QAChB,MAAM,EAAE,GAAG,CAAC,MAAM;QAClB,QAAQ,EAAE,GAAG,CAAC,QAAQ;QACtB,IAAI,EAAE,kBAAkB,KAAK,CAAC,aAAa,sCAAsC;KAClF,CAAC,CAAC;AACL,CAAC"}