@noclaf/cli 0.7.0 → 0.9.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 (294) hide show
  1. package/README.md +26 -84
  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/client.js +0 -136
  20. package/dist/adapters/supabase/client.js.map +0 -1
  21. package/dist/adapters/supabase/context-gateway.js +0 -23
  22. package/dist/adapters/supabase/context-gateway.js.map +0 -1
  23. package/dist/adapters/supabase/gateway.js +0 -26
  24. package/dist/adapters/supabase/gateway.js.map +0 -1
  25. package/dist/adapters/supabase/release-gateway.js +0 -61
  26. package/dist/adapters/supabase/release-gateway.js.map +0 -1
  27. package/dist/adapters/supabase/sprint-gateway.js +0 -59
  28. package/dist/adapters/supabase/sprint-gateway.js.map +0 -1
  29. package/dist/adapters/supabase/task-gateway.js +0 -533
  30. package/dist/adapters/supabase/task-gateway.js.map +0 -1
  31. package/dist/auth.js +0 -141
  32. package/dist/auth.js.map +0 -1
  33. package/dist/cli/commands/auth.js +0 -127
  34. package/dist/cli/commands/auth.js.map +0 -1
  35. package/dist/cli/commands/clean.js +0 -120
  36. package/dist/cli/commands/clean.js.map +0 -1
  37. package/dist/cli/commands/completion.js +0 -114
  38. package/dist/cli/commands/completion.js.map +0 -1
  39. package/dist/cli/commands/exec.js +0 -69
  40. package/dist/cli/commands/exec.js.map +0 -1
  41. package/dist/cli/commands/init/analyze-step.js +0 -21
  42. package/dist/cli/commands/init/analyze-step.js.map +0 -1
  43. package/dist/cli/commands/init/apply-answers.js +0 -122
  44. package/dist/cli/commands/init/apply-answers.js.map +0 -1
  45. package/dist/cli/commands/init/apply-step.js +0 -165
  46. package/dist/cli/commands/init/apply-step.js.map +0 -1
  47. package/dist/cli/commands/init/auth-step.js +0 -48
  48. package/dist/cli/commands/init/auth-step.js.map +0 -1
  49. package/dist/cli/commands/init/boilerplate-step.js +0 -20
  50. package/dist/cli/commands/init/boilerplate-step.js.map +0 -1
  51. package/dist/cli/commands/init/clients-step.js +0 -78
  52. package/dist/cli/commands/init/clients-step.js.map +0 -1
  53. package/dist/cli/commands/init/context-step.js +0 -81
  54. package/dist/cli/commands/init/context-step.js.map +0 -1
  55. package/dist/cli/commands/init/describe-step.js +0 -68
  56. package/dist/cli/commands/init/describe-step.js.map +0 -1
  57. package/dist/cli/commands/init/index.js +0 -98
  58. package/dist/cli/commands/init/index.js.map +0 -1
  59. package/dist/cli/commands/init/mode.js +0 -18
  60. package/dist/cli/commands/init/mode.js.map +0 -1
  61. package/dist/cli/commands/init/progress.js +0 -60
  62. package/dist/cli/commands/init/progress.js.map +0 -1
  63. package/dist/cli/commands/init/project-step.js +0 -133
  64. package/dist/cli/commands/init/project-step.js.map +0 -1
  65. package/dist/cli/commands/init/provision-step.js +0 -103
  66. package/dist/cli/commands/init/provision-step.js.map +0 -1
  67. package/dist/cli/commands/map.js +0 -18
  68. package/dist/cli/commands/map.js.map +0 -1
  69. package/dist/cli/commands/plan.js +0 -45
  70. package/dist/cli/commands/plan.js.map +0 -1
  71. package/dist/cli/commands/skills.js +0 -23
  72. package/dist/cli/commands/skills.js.map +0 -1
  73. package/dist/cli/commands/sync.js +0 -319
  74. package/dist/cli/commands/sync.js.map +0 -1
  75. package/dist/cli/commands/validate-plan.js +0 -42
  76. package/dist/cli/commands/validate-plan.js.map +0 -1
  77. package/dist/cli/commands/wave.js +0 -57
  78. package/dist/cli/commands/wave.js.map +0 -1
  79. package/dist/cli/copy/auth.json +0 -6
  80. package/dist/cli/copy/flows.json +0 -6
  81. package/dist/cli/copy/init.json +0 -20
  82. package/dist/cli/copy/sync.json +0 -3
  83. package/dist/cli/copy.js +0 -23
  84. package/dist/cli/copy.js.map +0 -1
  85. package/dist/cli/flows/clients.js +0 -130
  86. package/dist/cli/flows/clients.js.map +0 -1
  87. package/dist/cli/flows/completion.js +0 -63
  88. package/dist/cli/flows/completion.js.map +0 -1
  89. package/dist/cli/flows/dependencies.js +0 -114
  90. package/dist/cli/flows/dependencies.js.map +0 -1
  91. package/dist/cli/flows/sections.js +0 -85
  92. package/dist/cli/flows/sections.js.map +0 -1
  93. package/dist/cli/flows/user-config.js +0 -37
  94. package/dist/cli/flows/user-config.js.map +0 -1
  95. package/dist/cli/ui/render.js +0 -239
  96. package/dist/cli/ui/render.js.map +0 -1
  97. package/dist/cli/ui/report.js +0 -130
  98. package/dist/cli/ui/report.js.map +0 -1
  99. package/dist/config.js +0 -289
  100. package/dist/config.js.map +0 -1
  101. package/dist/constants.js +0 -9
  102. package/dist/constants.js.map +0 -1
  103. package/dist/core/ports.js +0 -2
  104. package/dist/core/ports.js.map +0 -1
  105. package/dist/core/types.js +0 -5
  106. package/dist/core/types.js.map +0 -1
  107. package/dist/database.types.js +0 -11
  108. package/dist/database.types.js.map +0 -1
  109. package/dist/lib/active-project.js +0 -28
  110. package/dist/lib/active-project.js.map +0 -1
  111. package/dist/lib/autopull.js +0 -13
  112. package/dist/lib/autopull.js.map +0 -1
  113. package/dist/lib/boilerplate-scaffold.js +0 -65
  114. package/dist/lib/boilerplate-scaffold.js.map +0 -1
  115. package/dist/lib/boilerplates.js +0 -61
  116. package/dist/lib/boilerplates.js.map +0 -1
  117. package/dist/lib/calendar-logic.js +0 -59
  118. package/dist/lib/calendar-logic.js.map +0 -1
  119. package/dist/lib/calendar-write-logic.js +0 -6
  120. package/dist/lib/calendar-write-logic.js.map +0 -1
  121. package/dist/lib/client-configs.js +0 -191
  122. package/dist/lib/client-configs.js.map +0 -1
  123. package/dist/lib/client-install.js +0 -40
  124. package/dist/lib/client-install.js.map +0 -1
  125. package/dist/lib/colors.js +0 -92
  126. package/dist/lib/colors.js.map +0 -1
  127. package/dist/lib/cowork-extension.js +0 -143
  128. package/dist/lib/cowork-extension.js.map +0 -1
  129. package/dist/lib/dates.js +0 -21
  130. package/dist/lib/dates.js.map +0 -1
  131. package/dist/lib/dependencies.js +0 -145
  132. package/dist/lib/dependencies.js.map +0 -1
  133. package/dist/lib/dependency-install.js +0 -163
  134. package/dist/lib/dependency-install.js.map +0 -1
  135. package/dist/lib/duration.js +0 -5
  136. package/dist/lib/duration.js.map +0 -1
  137. package/dist/lib/exec-delegate.js +0 -218
  138. package/dist/lib/exec-delegate.js.map +0 -1
  139. package/dist/lib/exec-engines.js +0 -90
  140. package/dist/lib/exec-engines.js.map +0 -1
  141. package/dist/lib/exec-events.js +0 -87
  142. package/dist/lib/exec-events.js.map +0 -1
  143. package/dist/lib/exec-translators.js +0 -198
  144. package/dist/lib/exec-translators.js.map +0 -1
  145. package/dist/lib/file-merge.js +0 -33
  146. package/dist/lib/file-merge.js.map +0 -1
  147. package/dist/lib/git-exposure.js +0 -35
  148. package/dist/lib/git-exposure.js.map +0 -1
  149. package/dist/lib/harness.js +0 -127
  150. package/dist/lib/harness.js.map +0 -1
  151. package/dist/lib/hooks.js +0 -216
  152. package/dist/lib/hooks.js.map +0 -1
  153. package/dist/lib/patterns.js +0 -25
  154. package/dist/lib/patterns.js.map +0 -1
  155. package/dist/lib/pg-error.js +0 -53
  156. package/dist/lib/pg-error.js.map +0 -1
  157. package/dist/lib/plan-delegate.js +0 -117
  158. package/dist/lib/plan-delegate.js.map +0 -1
  159. package/dist/lib/project-context.js +0 -151
  160. package/dist/lib/project-context.js.map +0 -1
  161. package/dist/lib/prompts.js +0 -69
  162. package/dist/lib/prompts.js.map +0 -1
  163. package/dist/lib/provision-apply.js +0 -220
  164. package/dist/lib/provision-apply.js.map +0 -1
  165. package/dist/lib/provision-collect.js +0 -47
  166. package/dist/lib/provision-collect.js.map +0 -1
  167. package/dist/lib/provision.js +0 -45
  168. package/dist/lib/provision.js.map +0 -1
  169. package/dist/lib/release-logic.js +0 -10
  170. package/dist/lib/release-logic.js.map +0 -1
  171. package/dist/lib/repo-map.js +0 -176
  172. package/dist/lib/repo-map.js.map +0 -1
  173. package/dist/lib/require-config.js +0 -32
  174. package/dist/lib/require-config.js.map +0 -1
  175. package/dist/lib/rules.js +0 -146
  176. package/dist/lib/rules.js.map +0 -1
  177. package/dist/lib/sections.js +0 -89
  178. package/dist/lib/sections.js.map +0 -1
  179. package/dist/lib/skill-agent.js +0 -44
  180. package/dist/lib/skill-agent.js.map +0 -1
  181. package/dist/lib/skill-serve.js +0 -128
  182. package/dist/lib/skill-serve.js.map +0 -1
  183. package/dist/lib/skills-cache.js +0 -99
  184. package/dist/lib/skills-cache.js.map +0 -1
  185. package/dist/lib/skills.js +0 -237
  186. package/dist/lib/skills.js.map +0 -1
  187. package/dist/lib/sprint-deadline.js +0 -28
  188. package/dist/lib/sprint-deadline.js.map +0 -1
  189. package/dist/lib/sprint-logic.js +0 -31
  190. package/dist/lib/sprint-logic.js.map +0 -1
  191. package/dist/lib/targets.js +0 -150
  192. package/dist/lib/targets.js.map +0 -1
  193. package/dist/lib/task-history.js +0 -15
  194. package/dist/lib/task-history.js.map +0 -1
  195. package/dist/lib/telemetry.js +0 -51
  196. package/dist/lib/telemetry.js.map +0 -1
  197. package/dist/lib/tool-result.js +0 -15
  198. package/dist/lib/tool-result.js.map +0 -1
  199. package/dist/lib/validate-plan-delegate.js +0 -106
  200. package/dist/lib/validate-plan-delegate.js.map +0 -1
  201. package/dist/lib/version-check.js +0 -89
  202. package/dist/lib/version-check.js.map +0 -1
  203. package/dist/lib/wave-scheduler.js +0 -95
  204. package/dist/lib/wave-scheduler.js.map +0 -1
  205. package/dist/session-factory.js +0 -19
  206. package/dist/session-factory.js.map +0 -1
  207. package/dist/spinner.js +0 -12
  208. package/dist/spinner.js.map +0 -1
  209. package/dist/tools/activate-sprint.js +0 -44
  210. package/dist/tools/activate-sprint.js.map +0 -1
  211. package/dist/tools/add-checklist.js +0 -63
  212. package/dist/tools/add-checklist.js.map +0 -1
  213. package/dist/tools/add-holiday.js +0 -41
  214. package/dist/tools/add-holiday.js.map +0 -1
  215. package/dist/tools/add-home-office.js +0 -31
  216. package/dist/tools/add-home-office.js.map +0 -1
  217. package/dist/tools/add-vacation.js +0 -39
  218. package/dist/tools/add-vacation.js.map +0 -1
  219. package/dist/tools/attach-pr.js +0 -97
  220. package/dist/tools/attach-pr.js.map +0 -1
  221. package/dist/tools/comment-task.js +0 -72
  222. package/dist/tools/comment-task.js.map +0 -1
  223. package/dist/tools/create-release.js +0 -46
  224. package/dist/tools/create-release.js.map +0 -1
  225. package/dist/tools/create-sprint.js +0 -66
  226. package/dist/tools/create-sprint.js.map +0 -1
  227. package/dist/tools/create-task.js +0 -174
  228. package/dist/tools/create-task.js.map +0 -1
  229. package/dist/tools/delegate-exec.js +0 -63
  230. package/dist/tools/delegate-exec.js.map +0 -1
  231. package/dist/tools/end-allocation.js +0 -38
  232. package/dist/tools/end-allocation.js.map +0 -1
  233. package/dist/tools/end-sprint.js +0 -37
  234. package/dist/tools/end-sprint.js.map +0 -1
  235. package/dist/tools/end-task-allocation.js +0 -60
  236. package/dist/tools/end-task-allocation.js.map +0 -1
  237. package/dist/tools/exec-status.js +0 -45
  238. package/dist/tools/exec-status.js.map +0 -1
  239. package/dist/tools/finalize-release.js +0 -45
  240. package/dist/tools/finalize-release.js.map +0 -1
  241. package/dist/tools/get-active-allocation.js +0 -69
  242. package/dist/tools/get-active-allocation.js.map +0 -1
  243. package/dist/tools/get-calendar.js +0 -40
  244. package/dist/tools/get-calendar.js.map +0 -1
  245. package/dist/tools/get-context.js +0 -48
  246. package/dist/tools/get-context.js.map +0 -1
  247. package/dist/tools/get-sprint.js +0 -38
  248. package/dist/tools/get-sprint.js.map +0 -1
  249. package/dist/tools/get-task.js +0 -146
  250. package/dist/tools/get-task.js.map +0 -1
  251. package/dist/tools/index.js +0 -84
  252. package/dist/tools/index.js.map +0 -1
  253. package/dist/tools/list-my-allocations.js +0 -71
  254. package/dist/tools/list-my-allocations.js.map +0 -1
  255. package/dist/tools/list-projects.js +0 -38
  256. package/dist/tools/list-projects.js.map +0 -1
  257. package/dist/tools/list-releases.js +0 -32
  258. package/dist/tools/list-releases.js.map +0 -1
  259. package/dist/tools/list-sprints.js +0 -30
  260. package/dist/tools/list-sprints.js.map +0 -1
  261. package/dist/tools/list-tasks.js +0 -95
  262. package/dist/tools/list-tasks.js.map +0 -1
  263. package/dist/tools/move-task.js +0 -82
  264. package/dist/tools/move-task.js.map +0 -1
  265. package/dist/tools/plan.js +0 -56
  266. package/dist/tools/plan.js.map +0 -1
  267. package/dist/tools/record-delivery.js +0 -100
  268. package/dist/tools/record-delivery.js.map +0 -1
  269. package/dist/tools/remove-holiday.js +0 -31
  270. package/dist/tools/remove-holiday.js.map +0 -1
  271. package/dist/tools/remove-home-office.js +0 -32
  272. package/dist/tools/remove-home-office.js.map +0 -1
  273. package/dist/tools/remove-vacation.js +0 -31
  274. package/dist/tools/remove-vacation.js.map +0 -1
  275. package/dist/tools/set-project.js +0 -52
  276. package/dist/tools/set-project.js.map +0 -1
  277. package/dist/tools/set-review.js +0 -132
  278. package/dist/tools/set-review.js.map +0 -1
  279. package/dist/tools/sprint-common.js +0 -13
  280. package/dist/tools/sprint-common.js.map +0 -1
  281. package/dist/tools/start-allocation.js +0 -32
  282. package/dist/tools/start-allocation.js.map +0 -1
  283. package/dist/tools/start-task-allocation.js +0 -83
  284. package/dist/tools/start-task-allocation.js.map +0 -1
  285. package/dist/tools/update-release.js +0 -58
  286. package/dist/tools/update-release.js.map +0 -1
  287. package/dist/tools/update-sprint.js +0 -56
  288. package/dist/tools/update-sprint.js.map +0 -1
  289. package/dist/tools/update-task.js +0 -183
  290. package/dist/tools/update-task.js.map +0 -1
  291. package/dist/tools/validate-plan.js +0 -58
  292. package/dist/tools/validate-plan.js.map +0 -1
  293. package/dist/version.js +0 -16
  294. package/dist/version.js.map +0 -1
@@ -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"}
@@ -1,38 +0,0 @@
1
- import { jsonResult, errorResult } from '../lib/tool-result.js';
2
- import { durationSeconds } from '../lib/duration.js';
3
- import { brand } from '../brand.js';
4
- export const definition = {
5
- name: `${brand.toolPrefix}end_allocation`,
6
- description: '[ENCERRA O DIA] Bate ponto de SAÍDA do usuário e fecha qualquer task_allocation aberta. ' +
7
- '⚠️ Use SOMENTE quando o usuário indicar explicitamente fim de expediente ' +
8
- '("encerrar dia", "bati ponto", "saí"). Para parar APENAS o timer de uma task ' +
9
- `sem encerrar o dia, use \`${brand.toolPrefix}end_task_allocation\`.`,
10
- inputSchema: {
11
- type: 'object',
12
- properties: {},
13
- additionalProperties: false,
14
- },
15
- };
16
- /** Monta o payload de resposta do end_allocation. Pura. */
17
- export function formatEndAllocationResult(closed, closedTaskAllocationsCount) {
18
- return {
19
- allocation_id: closed.id,
20
- start_time: closed.start_time,
21
- end_time: closed.end_time,
22
- duration_seconds: durationSeconds(closed.start_time, closed.end_time),
23
- closed_task_allocations: closedTaskAllocationsCount,
24
- };
25
- }
26
- export async function handler(_args, ctx) {
27
- let result;
28
- try {
29
- result = await ctx.gateway.endAllocation(ctx.user.id);
30
- }
31
- catch (err) {
32
- return errorResult(err.message);
33
- }
34
- if (!result)
35
- return errorResult('Não há alocação ativa para encerrar.');
36
- return jsonResult(formatEndAllocationResult(result.closed, result.closedTaskAllocations));
37
- }
38
- //# sourceMappingURL=end-allocation.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"end-allocation.js","sourceRoot":"","sources":["../../src/tools/end-allocation.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAEpC,MAAM,CAAC,MAAM,UAAU,GAAS;IAC9B,IAAI,EAAE,GAAG,KAAK,CAAC,UAAU,gBAAgB;IACzC,WAAW,EACT,0FAA0F;QAC1F,2EAA2E;QAC3E,+EAA+E;QAC/E,6BAA6B,KAAK,CAAC,UAAU,wBAAwB;IACvE,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE,EAAE;QACd,oBAAoB,EAAE,KAAK;KAC5B;CACF,CAAC;AAEF,2DAA2D;AAC3D,MAAM,UAAU,yBAAyB,CACvC,MAAmE,EACnE,0BAAkC;IAElC,OAAO;QACL,aAAa,EAAE,MAAM,CAAC,EAAE;QACxB,UAAU,EAAE,MAAM,CAAC,UAAU;QAC7B,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,gBAAgB,EAAE,eAAe,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,QAAQ,CAAC;QACrE,uBAAuB,EAAE,0BAA0B;KACpD,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,KAAc,EAAE,GAAgB;IAC5D,IAAI,MAAM,CAAC;IACX,IAAI,CAAC;QACH,MAAM,GAAG,MAAM,GAAG,CAAC,OAAO,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACxD,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,WAAW,CAAE,GAAa,CAAC,OAAO,CAAC,CAAC;IAC7C,CAAC;IACD,IAAI,CAAC,MAAM;QAAE,OAAO,WAAW,CAAC,sCAAsC,CAAC,CAAC;IACxE,OAAO,UAAU,CAAC,yBAAyB,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,qBAAqB,CAAC,CAAC,CAAC;AAC5F,CAAC"}