@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,37 +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 } from '../lib/dates.js';
6
- import { brand } from '../brand.js';
7
- import { projectIdProp, sprintIdProp, sprintRef } from './sprint-common.js';
8
- const ArgsSchema = z.object({ sprint_id: sprintRef, project_id: z.uuid().optional() }).strict();
9
- export const definition = {
10
- name: `${brand.toolPrefix}end_sprint`,
11
- description: 'Encerra a sprint: tasks fora de done/production saem da sprint e voltam pro backlog; ' +
12
- 'done/production ficam. A sprint vira "encerrada" com end_date = hoje. Seguro de re-chamar.',
13
- inputSchema: {
14
- type: 'object',
15
- properties: { sprint_id: sprintIdProp, project_id: projectIdProp },
16
- required: ['sprint_id'],
17
- additionalProperties: false,
18
- },
19
- };
20
- export async function handler(args, ctx) {
21
- const parsed = ArgsSchema.safeParse(args);
22
- if (!parsed.success)
23
- return errorResult(`Argumento inválido: ${parsed.error.message}`);
24
- const cfg = resolveProjectConfig(ctx, parsed.data.project_id);
25
- if (isErrorResult(cfg))
26
- return cfg;
27
- try {
28
- const sprint = await ctx.gateway.findSprint(cfg.project_id, parsed.data.sprint_id);
29
- if (!sprint)
30
- return errorResult('Sprint não encontrada neste projeto.');
31
- return jsonResult({ ok: true, ...(await closeSprint(ctx.gateway, sprint, todayStr())) });
32
- }
33
- catch (err) {
34
- return errorResult(err.message);
35
- }
36
- }
37
- //# sourceMappingURL=end-sprint.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"end-sprint.js","sourceRoot":"","sources":["../../src/tools/end-sprint.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,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAE5E,MAAM,UAAU,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC;AAEhG,MAAM,CAAC,MAAM,UAAU,GAAS;IAC9B,IAAI,EAAE,GAAG,KAAK,CAAC,UAAU,YAAY;IACrC,WAAW,EACT,uFAAuF;QACvF,4FAA4F;IAC9F,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE,EAAE,SAAS,EAAE,YAAY,EAAE,UAAU,EAAE,aAAa,EAAE;QAClE,QAAQ,EAAE,CAAC,WAAW,CAAC;QACvB,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,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACnF,IAAI,CAAC,MAAM;YAAE,OAAO,WAAW,CAAC,sCAAsC,CAAC,CAAC;QACxE,OAAO,UAAU,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,CAAC,MAAM,WAAW,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;IAC3F,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,WAAW,CAAE,GAAa,CAAC,OAAO,CAAC,CAAC;IAC7C,CAAC;AACH,CAAC"}
@@ -1,60 +0,0 @@
1
- import { z } from 'zod';
2
- import { jsonResult, errorResult } from '../lib/tool-result.js';
3
- import { durationSeconds } from '../lib/duration.js';
4
- import { brand } from '../brand.js';
5
- const ArgsSchema = z.object({ task_id: z.uuid().optional() }).strict();
6
- export const definition = {
7
- name: `${brand.toolPrefix}end_task_allocation`,
8
- description: '[PARA TIMER DE TASK] Para a task_allocation ativa. A alocação principal (ponto do dia) ' +
9
- 'CONTINUA aberta. Use ao finalizar ou pausar uma task. ' +
10
- 'Com vários timers rodando ao mesmo tempo, informe `task_id` para dizer qual parar. ' +
11
- `Para encerrar o dia inteiro, use \`${brand.toolPrefix}end_allocation\`.`,
12
- inputSchema: {
13
- type: 'object',
14
- properties: {
15
- task_id: {
16
- type: 'string',
17
- format: 'uuid',
18
- description: 'Qual task parar. Opcional quando só há um timer rodando.',
19
- },
20
- },
21
- additionalProperties: false,
22
- },
23
- };
24
- /** Monta o payload de resposta do end_task_allocation. Pura. */
25
- export function formatEndTaskAllocationResult(closed, task) {
26
- return {
27
- task_allocation_id: closed.id,
28
- task,
29
- start_time: closed.start_time,
30
- end_time: closed.end_time,
31
- duration_seconds: durationSeconds(closed.start_time, closed.end_time),
32
- };
33
- }
34
- /** Mensagem de escolha quando há vários timers rodando e nenhum `task_id` foi dado. Pura. */
35
- export function formatAmbiguousMessage(open) {
36
- const lines = open.map((o) => `- ${o.task_key ?? o.task_id} — ${o.task_title ?? 'sem título'} (desde ${o.start_time})`);
37
- return [
38
- `Há ${open.length} tasks cronometrando ao mesmo tempo — informe \`task_id\` para dizer qual parar:`,
39
- ...lines,
40
- ].join('\n');
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
- let result;
47
- try {
48
- result = await ctx.gateway.endTaskAllocation(ctx.user.id, parsed.data.task_id);
49
- }
50
- catch (err) {
51
- return errorResult(err.message);
52
- }
53
- if (!result) {
54
- return errorResult(parsed.data.task_id ? 'Não há task_allocation ativa para essa task.' : 'Não há task_allocation ativa.');
55
- }
56
- if ('ambiguous' in result)
57
- return errorResult(formatAmbiguousMessage(result.ambiguous));
58
- return jsonResult(formatEndTaskAllocationResult(result.closed, result.task));
59
- }
60
- //# sourceMappingURL=end-task-allocation.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"end-task-allocation.js","sourceRoot":"","sources":["../../src/tools/end-task-allocation.ts"],"names":[],"mappings":"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"}
@@ -1,45 +0,0 @@
1
- import { z } from 'zod';
2
- import { jsonResult, errorResult } from '../lib/tool-result.js';
3
- import { getJob } from '../lib/exec-delegate.js';
4
- import { brand } from '../brand.js';
5
- const ArgsSchema = z.object({ job_id: z.string().min(1) }).strict();
6
- export const definition = {
7
- name: `${brand.cliToolPrefix}exec_status`,
8
- description: `Estado de uma execução delegada (\`${brand.cliToolPrefix}delegate_exec\`): running | done | failed, com o ` +
9
- 'resumo do agente, os arquivos alterados e os checks determinísticos (tamanho, lint, build, ' +
10
- 'testes) e os tokens gastos no run. Use os checks como FATOS na sua revisão — não gaste ' +
11
- 'ciclo revisando o mecânico.',
12
- inputSchema: {
13
- type: 'object',
14
- properties: {
15
- job_id: { type: 'string', description: `Id devolvido por \`${brand.cliToolPrefix}delegate_exec\`.` },
16
- },
17
- required: ['job_id'],
18
- additionalProperties: false,
19
- },
20
- };
21
- export async function handler(args, _ctx) {
22
- const parsed = ArgsSchema.safeParse(args);
23
- if (!parsed.success) {
24
- return errorResult(`Argumento inválido: ${parsed.error.message}`);
25
- }
26
- const job = getJob(parsed.data.job_id);
27
- if (!job)
28
- return errorResult(`Job não encontrado: ${parsed.data.job_id}`);
29
- const failing = Object.entries(job.checks)
30
- .filter(([, c]) => !c.ok)
31
- .map(([name]) => name);
32
- return jsonResult({
33
- id: job.id,
34
- state: job.state,
35
- worktree: job.worktree,
36
- exit_code: job.exitCode,
37
- changed: job.changed,
38
- checks: job.checks,
39
- tokens: job.tokens,
40
- failing_checks: failing,
41
- summary: job.summary,
42
- error: job.error,
43
- });
44
- }
45
- //# sourceMappingURL=exec-status.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"exec-status.js","sourceRoot":"","sources":["../../src/tools/exec-status.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AACjD,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAEpC,MAAM,UAAU,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC;AAEpE,MAAM,CAAC,MAAM,UAAU,GAAS;IAC9B,IAAI,EAAE,GAAG,KAAK,CAAC,aAAa,aAAa;IACzC,WAAW,EACT,sCAAsC,KAAK,CAAC,aAAa,mDAAmD;QAC5G,6FAA6F;QAC7F,yFAAyF;QACzF,6BAA6B;IAC/B,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,sBAAsB,KAAK,CAAC,aAAa,kBAAkB,EAAE;SACrG;QACD,QAAQ,EAAE,CAAC,QAAQ,CAAC;QACpB,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;IAED,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACvC,IAAI,CAAC,GAAG;QAAE,OAAO,WAAW,CAAC,uBAAuB,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;IAE1E,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC;SACvC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;SACxB,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC;IAEzB,OAAO,UAAU,CAAC;QAChB,EAAE,EAAE,GAAG,CAAC,EAAE;QACV,KAAK,EAAE,GAAG,CAAC,KAAK;QAChB,QAAQ,EAAE,GAAG,CAAC,QAAQ;QACtB,SAAS,EAAE,GAAG,CAAC,QAAQ;QACvB,OAAO,EAAE,GAAG,CAAC,OAAO;QACpB,MAAM,EAAE,GAAG,CAAC,MAAM;QAClB,MAAM,EAAE,GAAG,CAAC,MAAM;QAClB,cAAc,EAAE,OAAO;QACvB,OAAO,EAAE,GAAG,CAAC,OAAO;QACpB,KAAK,EAAE,GAAG,CAAC,KAAK;KACjB,CAAC,CAAC;AACL,CAAC"}
@@ -1,45 +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 { FINISHED_STATUSES } from '../core/types.js';
5
- import { brand } from '../brand.js';
6
- import { projectIdProp } from './sprint-common.js';
7
- const ArgsSchema = z
8
- .object({
9
- release_id: z.uuid(),
10
- mode: z.enum(['unlink_pending', 'keep']).default('unlink_pending'),
11
- project_id: z.uuid().optional(),
12
- })
13
- .strict();
14
- export const definition = {
15
- name: `${brand.toolPrefix}finalize_release`,
16
- description: 'Finaliza a release: status delivered + delivered_at. mode="unlink_pending" (default) desvincula as tasks ' +
17
- `NÃO concluídas (status fora de ${FINISHED_STATUSES.join('/')}); mode="keep" só finaliza e mantém todas vinculadas.`,
18
- inputSchema: {
19
- type: 'object',
20
- properties: { release_id: { type: 'string', format: 'uuid' }, mode: { type: 'string', enum: ['unlink_pending', 'keep'] }, project_id: projectIdProp },
21
- required: ['release_id'],
22
- additionalProperties: false,
23
- },
24
- };
25
- export async function handler(args, ctx) {
26
- const parsed = ArgsSchema.safeParse(args);
27
- if (!parsed.success)
28
- return errorResult(`Argumento inválido: ${parsed.error.message}`);
29
- const cfg = resolveProjectConfig(ctx, parsed.data.project_id);
30
- if (isErrorResult(cfg))
31
- return cfg;
32
- try {
33
- const cur = await ctx.gateway.findRelease(cfg.project_id, parsed.data.release_id);
34
- if (!cur)
35
- return errorResult('Release não encontrada neste projeto.');
36
- if (cur.status === 'delivered')
37
- return errorResult('Release já está entregue (delivered).');
38
- const release = await ctx.gateway.finalizeRelease(cur.id, parsed.data.mode === 'unlink_pending');
39
- return jsonResult({ ok: true, release });
40
- }
41
- catch (err) {
42
- return errorResult(err.message);
43
- }
44
- }
45
- //# sourceMappingURL=finalize-release.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"finalize-release.js","sourceRoot":"","sources":["../../src/tools/finalize-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,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD,MAAM,UAAU,GAAG,CAAC;KACjB,MAAM,CAAC;IACN,UAAU,EAAE,CAAC,CAAC,IAAI,EAAE;IACpB,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,gBAAgB,CAAC;IAClE,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,kBAAkB;IAC3C,WAAW,EACT,2GAA2G;QAC3G,kCAAkC,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,uDAAuD;IACtH,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE,EAAE,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,gBAAgB,EAAE,MAAM,CAAC,EAAE,EAAE,UAAU,EAAE,aAAa,EAAE;QACrJ,QAAQ,EAAE,CAAC,YAAY,CAAC;QACxB,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,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,GAAG,CAAC,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAClF,IAAI,CAAC,GAAG;YAAE,OAAO,WAAW,CAAC,uCAAuC,CAAC,CAAC;QACtE,IAAI,GAAG,CAAC,MAAM,KAAK,WAAW;YAAE,OAAO,WAAW,CAAC,uCAAuC,CAAC,CAAC;QAC5F,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,OAAO,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,KAAK,gBAAgB,CAAC,CAAC;QACjG,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,69 +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}get_active_allocation`,
6
- description: 'Retorna o estado atual de cronometragem do usuário: alocação ativa, task atual sendo ' +
7
- 'cronometrada, e segmentos por task na alocação atual.',
8
- inputSchema: {
9
- type: 'object',
10
- properties: {},
11
- additionalProperties: false,
12
- },
13
- };
14
- function taskInfoLookup(tasksById, projectsById) {
15
- return (taskId) => {
16
- const t = tasksById.get(taskId);
17
- return {
18
- id: taskId,
19
- key: t?.key ?? null,
20
- title: t?.title ?? null,
21
- project_name: t ? projectsById.get(t.project_id) ?? null : null,
22
- };
23
- };
24
- }
25
- /** Monta a resposta de alocação ativa: allocation, task ativa, segmentos e total do dia. Pura. */
26
- export function formatActiveAllocation(allocation, segmentRows, tasksById, projectsById) {
27
- const taskInfo = taskInfoLookup(tasksById, projectsById);
28
- const segments = segmentRows.map((s) => ({
29
- task_allocation_id: s.id,
30
- task: taskInfo(s.task_id),
31
- start_time: s.start_time,
32
- end_time: s.end_time,
33
- duration_seconds: durationSeconds(s.start_time, s.end_time),
34
- is_overtime: s.is_overtime,
35
- }));
36
- const activeSegment = segmentRows.find((s) => s.end_time === null);
37
- const activeTask = activeSegment
38
- ? {
39
- task_allocation_id: activeSegment.id,
40
- task: taskInfo(activeSegment.task_id),
41
- start_time: activeSegment.start_time,
42
- elapsed_seconds: durationSeconds(activeSegment.start_time, null),
43
- is_overtime: activeSegment.is_overtime,
44
- }
45
- : null;
46
- return {
47
- allocation: {
48
- id: allocation.id,
49
- start_time: allocation.start_time,
50
- elapsed_seconds: durationSeconds(allocation.start_time, null),
51
- },
52
- active_task: activeTask,
53
- segments,
54
- total_seconds_today: segments.reduce((acc, s) => acc + s.duration_seconds, 0),
55
- };
56
- }
57
- export async function handler(_args, ctx) {
58
- let data;
59
- try {
60
- data = await ctx.gateway.getActiveAllocation(ctx.user.id);
61
- }
62
- catch (err) {
63
- return errorResult(err.message);
64
- }
65
- if (!data)
66
- return jsonResult({ allocation: null, active_task: null, segments: [], total_seconds_today: 0 });
67
- return jsonResult(formatActiveAllocation(data.allocation, data.segments, data.tasksById, data.projectsById));
68
- }
69
- //# sourceMappingURL=get-active-allocation.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"get-active-allocation.js","sourceRoot":"","sources":["../../src/tools/get-active-allocation.ts"],"names":[],"mappings":"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"}
@@ -1,40 +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
- import { buildCalendar, eachDay } from '../lib/calendar-logic.js';
6
- const MAX_DAYS = 62;
7
- const ArgsSchema = z.object({ from: isoDate, to: isoDate }).strict();
8
- export const definition = {
9
- name: `${brand.toolPrefix}get_calendar`,
10
- description: 'Calendário pessoal: só os dias com eventos (feriados, meus prazos, férias, home office, releases, aniversários e tempo de casa). Máx. 62 dias.',
11
- inputSchema: {
12
- type: 'object',
13
- properties: {
14
- from: { type: 'string', description: 'Início (YYYY-MM-DD).' },
15
- to: { type: 'string', description: 'Fim (YYYY-MM-DD), >= from.' },
16
- },
17
- required: ['from', 'to'],
18
- additionalProperties: false,
19
- },
20
- };
21
- export async function handler(args, ctx) {
22
- const parsed = ArgsSchema.safeParse(args ?? {});
23
- if (!parsed.success)
24
- return errorResult(`Argumento inválido: ${parsed.error.message}`);
25
- const { from, to } = parsed.data;
26
- const bad = dateRangeError(from, to);
27
- if (bad)
28
- return errorResult(bad);
29
- if (eachDay(from, to).length > MAX_DAYS) {
30
- return errorResult(`Intervalo acima de ${MAX_DAYS} dias; divida em consultas menores (ex.: mês a mês).`);
31
- }
32
- try {
33
- const sources = await ctx.gateway.getCalendarSources(ctx.user.id, from, to);
34
- return jsonResult({ from, to, days: buildCalendar(from, to, sources) });
35
- }
36
- catch (err) {
37
- return errorResult(err.message);
38
- }
39
- }
40
- //# sourceMappingURL=get-calendar.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"get-calendar.js","sourceRoot":"","sources":["../../src/tools/get-calendar.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;AAC1D,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAElE,MAAM,QAAQ,GAAG,EAAE,CAAC;AACpB,MAAM,UAAU,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC;AAErE,MAAM,CAAC,MAAM,UAAU,GAAS;IAC9B,IAAI,EAAE,GAAG,KAAK,CAAC,UAAU,cAAc;IACvC,WAAW,EACT,gJAAgJ;IAClJ,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,sBAAsB,EAAE;YAC7D,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,4BAA4B,EAAE;SAClE;QACD,QAAQ,EAAE,CAAC,MAAM,EAAE,IAAI,CAAC;QACxB,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,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC;IACjC,MAAM,GAAG,GAAG,cAAc,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IACrC,IAAI,GAAG;QAAE,OAAO,WAAW,CAAC,GAAG,CAAC,CAAC;IACjC,IAAI,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,MAAM,GAAG,QAAQ,EAAE,CAAC;QACxC,OAAO,WAAW,CAAC,sBAAsB,QAAQ,sDAAsD,CAAC,CAAC;IAC3G,CAAC;IACD,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,OAAO,CAAC,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;QAC5E,OAAO,UAAU,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,aAAa,CAAC,IAAI,EAAE,EAAE,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC;IAC1E,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,WAAW,CAAE,GAAa,CAAC,OAAO,CAAC,CAAC;IAC7C,CAAC;AACH,CAAC"}
@@ -1,48 +0,0 @@
1
- import { z } from 'zod';
2
- import { jsonResult, errorResult } from '../lib/tool-result.js';
3
- import { ProjectContextError } from '../lib/project-context.js';
4
- import { resolveProjectConfig, isErrorResult } from '../lib/require-config.js';
5
- import { brand } from '../brand.js';
6
- const ArgsSchema = z
7
- .object({
8
- project_id: z.uuid().optional(),
9
- })
10
- .strict();
11
- export const definition = {
12
- name: `${brand.toolPrefix}get_context`,
13
- description: `Retorna o contexto completo do projeto ${brand.productName} ativo: dados do projeto, repositórios, ` +
14
- 'sprint ativa, membros e usuário autenticado. Use SEMPRE no início de uma conversa ' +
15
- 'pra entender em que projeto você está operando. Sem projeto selecionado, use ' +
16
- `\`${brand.toolPrefix}list_projects\` + \`${brand.toolPrefix}set_project\` antes.`,
17
- inputSchema: {
18
- type: 'object',
19
- properties: {
20
- project_id: {
21
- type: 'string',
22
- format: 'uuid',
23
- description: `Override do projeto. Se omitido, usa o projeto ativo (${brand.toolPrefix}set_project) ou o default.`,
24
- },
25
- },
26
- additionalProperties: false,
27
- },
28
- };
29
- export async function handler(args, ctx) {
30
- const parsed = ArgsSchema.safeParse(args);
31
- if (!parsed.success) {
32
- return errorResult(`Argumento inválido: ${parsed.error.message}`);
33
- }
34
- const cfg = resolveProjectConfig(ctx, parsed.data.project_id);
35
- if (isErrorResult(cfg))
36
- return cfg;
37
- try {
38
- const data = await ctx.gateway.getContext(cfg, ctx.user);
39
- return jsonResult(data);
40
- }
41
- catch (err) {
42
- if (err instanceof ProjectContextError) {
43
- return errorResult(err.message);
44
- }
45
- return errorResult(`Erro inesperado: ${err.message}`);
46
- }
47
- }
48
- //# sourceMappingURL=get-context.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"get-context.js","sourceRoot":"","sources":["../../src/tools/get-context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,EAAE,oBAAoB,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAC/E,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAEpC,MAAM,UAAU,GAAG,CAAC;KACjB,MAAM,CAAC;IACN,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,aAAa;IACtC,WAAW,EACT,0CAA0C,KAAK,CAAC,WAAW,0CAA0C;QACrG,oFAAoF;QACpF,+EAA+E;QAC/E,KAAK,KAAK,CAAC,UAAU,uBAAuB,KAAK,CAAC,UAAU,sBAAsB;IACpF,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,UAAU,EAAE;gBACV,IAAI,EAAE,QAAQ;gBACd,MAAM,EAAE,MAAM;gBACd,WAAW,EAAE,yDAAyD,KAAK,CAAC,UAAU,4BAA4B;aACnH;SACF;QACD,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,EAAE,CAAC;QACpB,OAAO,WAAW,CAAC,uBAAuB,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;IACpE,CAAC;IAED,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,IAAI,GAAG,MAAM,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;QACzD,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,GAAG,YAAY,mBAAmB,EAAE,CAAC;YACvC,OAAO,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAClC,CAAC;QACD,OAAO,WAAW,CAAC,oBAAqB,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;IACnE,CAAC;AACH,CAAC"}
@@ -1,38 +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 { summarizeSprintTasks } from '../lib/sprint-logic.js';
5
- import { todayStr } from '../lib/dates.js';
6
- import { brand } from '../brand.js';
7
- import { projectIdProp, sprintIdProp, sprintRef } from './sprint-common.js';
8
- const ArgsSchema = z.object({ sprint_id: sprintRef, project_id: z.uuid().optional() }).strict();
9
- export const definition = {
10
- name: `${brand.toolPrefix}get_sprint`,
11
- description: 'Detalha uma sprint: contagem de tasks por status e tasks vencidas ' +
12
- '(end_date < hoje e fora de done/production), com key/title/end_date.',
13
- inputSchema: {
14
- type: 'object',
15
- properties: { sprint_id: sprintIdProp, project_id: projectIdProp },
16
- required: ['sprint_id'],
17
- additionalProperties: false,
18
- },
19
- };
20
- export async function handler(args, ctx) {
21
- const parsed = ArgsSchema.safeParse(args);
22
- if (!parsed.success)
23
- return errorResult(`Argumento inválido: ${parsed.error.message}`);
24
- const cfg = resolveProjectConfig(ctx, parsed.data.project_id);
25
- if (isErrorResult(cfg))
26
- return cfg;
27
- try {
28
- const sprint = await ctx.gateway.findSprint(cfg.project_id, parsed.data.sprint_id);
29
- if (!sprint)
30
- return errorResult('Sprint não encontrada neste projeto.');
31
- const tasks = await ctx.gateway.listSprintTasks(sprint.id);
32
- return jsonResult({ sprint, ...summarizeSprintTasks(tasks, todayStr()) });
33
- }
34
- catch (err) {
35
- return errorResult(err.message);
36
- }
37
- }
38
- //# sourceMappingURL=get-sprint.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"get-sprint.js","sourceRoot":"","sources":["../../src/tools/get-sprint.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,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAE5E,MAAM,UAAU,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC;AAEhG,MAAM,CAAC,MAAM,UAAU,GAAS;IAC9B,IAAI,EAAE,GAAG,KAAK,CAAC,UAAU,YAAY;IACrC,WAAW,EACT,oEAAoE;QACpE,sEAAsE;IACxE,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE,EAAE,SAAS,EAAE,YAAY,EAAE,UAAU,EAAE,aAAa,EAAE;QAClE,QAAQ,EAAE,CAAC,WAAW,CAAC;QACvB,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,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACnF,IAAI,CAAC,MAAM;YAAE,OAAO,WAAW,CAAC,sCAAsC,CAAC,CAAC;QACxE,MAAM,KAAK,GAAG,MAAM,GAAG,CAAC,OAAO,CAAC,eAAe,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAC3D,OAAO,UAAU,CAAC,EAAE,MAAM,EAAE,GAAG,oBAAoB,CAAC,KAAK,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC;IAC5E,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,WAAW,CAAE,GAAa,CAAC,OAAO,CAAC,CAAC;IAC7C,CAAC;AACH,CAAC"}
@@ -1,146 +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
- project_id: z.uuid().optional(),
9
- })
10
- .strict();
11
- export const definition = {
12
- name: `${brand.toolPrefix}get_task`,
13
- description: 'Retorna detalhes completos de uma tarefa: descrição, assignees, checklist, comentários, ' +
14
- 'histórico recente, repositórios vinculados e labels.',
15
- inputSchema: {
16
- type: 'object',
17
- properties: {
18
- task_id: { type: 'string', format: 'uuid' },
19
- project_id: {
20
- type: 'string',
21
- format: 'uuid',
22
- description: `Override do projeto. Se omitido, usa o projeto ativo (${brand.toolPrefix}set_project) ou o default.`,
23
- },
24
- },
25
- required: ['task_id'],
26
- additionalProperties: false,
27
- },
28
- };
29
- /** Coleta os ids de usuário/repo/label referenciados pela task e suas relações. Pura. */
30
- export function collectRelatedIds(task, rows) {
31
- const userIds = new Set();
32
- for (const r of rows.assigneeRows)
33
- userIds.add(r.user_id);
34
- for (const c of rows.commentRows)
35
- userIds.add(c.author_id);
36
- for (const h of rows.historyRows)
37
- userIds.add(h.user_id);
38
- userIds.add(task.reporter_id);
39
- return {
40
- userIds: Array.from(userIds),
41
- repoIds: rows.repoRows.map((r) => r.repository_id),
42
- labelIds: rows.labelRows.map((l) => l.label_id),
43
- };
44
- }
45
- function formatTaskCore(task, profiles) {
46
- return {
47
- id: task.id,
48
- key: task.key,
49
- title: task.title,
50
- description: task.description,
51
- status: task.status,
52
- priority: task.priority,
53
- type: task.type,
54
- sprint_id: task.sprint_id,
55
- release_id: task.release_id,
56
- team: task.team,
57
- url: task.url,
58
- branch: task.branch,
59
- pr_url: task.pr_url,
60
- review_state: task.review_state,
61
- start_date: task.start_date,
62
- end_date: task.end_date,
63
- reporter: {
64
- user_id: task.reporter_id,
65
- full_name: profiles.get(task.reporter_id)?.full_name ?? null,
66
- username: profiles.get(task.reporter_id)?.username ?? null,
67
- },
68
- created_at: task.created_at,
69
- updated_at: task.updated_at,
70
- };
71
- }
72
- /** Monta o payload completo de detalhe da task a partir das linhas carregadas + refs resolvidas. Pura. */
73
- export function formatTaskDetail(task, rows, refs) {
74
- return {
75
- task: formatTaskCore(task, refs.profiles),
76
- assignees: rows.assigneeRows.map((a) => ({
77
- user_id: a.user_id,
78
- full_name: refs.profiles.get(a.user_id)?.full_name ?? null,
79
- username: refs.profiles.get(a.user_id)?.username ?? null,
80
- avatar_url: refs.profiles.get(a.user_id)?.avatar_url ?? null,
81
- })),
82
- checklists: rows.checklistRows.map((c) => ({
83
- id: c.id,
84
- title: c.title,
85
- icon: c.icon,
86
- order: c.order,
87
- items: c.items,
88
- })),
89
- comments: rows.commentRows.map((c) => ({
90
- id: c.id,
91
- content: c.content,
92
- created_at: c.created_at,
93
- updated_at: c.updated_at,
94
- author: {
95
- user_id: c.author_id,
96
- full_name: refs.profiles.get(c.author_id)?.full_name ?? null,
97
- username: refs.profiles.get(c.author_id)?.username ?? null,
98
- },
99
- })),
100
- history: rows.historyRows.map((h) => ({
101
- id: h.id,
102
- action: h.action,
103
- field: h.field,
104
- old_value: h.old_value,
105
- new_value: h.new_value,
106
- created_at: h.created_at,
107
- user: {
108
- user_id: h.user_id,
109
- full_name: refs.profiles.get(h.user_id)?.full_name ?? null,
110
- username: refs.profiles.get(h.user_id)?.username ?? null,
111
- },
112
- })),
113
- repositories: rows.repoRows.map((r) => ({
114
- id: r.repository_id,
115
- name: refs.reposById.get(r.repository_id)?.name ?? null,
116
- url: refs.reposById.get(r.repository_id)?.url ?? null,
117
- default_branch: refs.reposById.get(r.repository_id)?.default_branch ?? null,
118
- })),
119
- labels: rows.labelRows.map((l) => ({
120
- id: l.label_id,
121
- name: refs.labelsById.get(l.label_id)?.name ?? null,
122
- color: refs.labelsById.get(l.label_id)?.color ?? null,
123
- })),
124
- };
125
- }
126
- export async function handler(args, ctx) {
127
- const parsed = ArgsSchema.safeParse(args);
128
- if (!parsed.success)
129
- return errorResult(`Argumento inválido: ${parsed.error.message}`);
130
- const { task_id } = parsed.data;
131
- const cfg = resolveProjectConfig(ctx, parsed.data.project_id);
132
- if (isErrorResult(cfg))
133
- return cfg;
134
- try {
135
- const detail = await ctx.gateway.getTaskWithRelations(task_id, cfg.project_id);
136
- if (!detail)
137
- return errorResult('Tarefa não encontrada ou fora do projeto atual.');
138
- const { userIds, repoIds, labelIds } = collectRelatedIds(detail.task, detail.rows);
139
- const refs = await ctx.gateway.loadTaskRefs(userIds, repoIds, labelIds);
140
- return jsonResult(formatTaskDetail(detail.task, detail.rows, refs));
141
- }
142
- catch (err) {
143
- return errorResult(err.message);
144
- }
145
- }
146
- //# sourceMappingURL=get-task.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"get-task.js","sourceRoot":"","sources":["../../src/tools/get-task.ts"],"names":[],"mappings":"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"}