@noclaf/cli 0.4.13 → 0.4.15

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 (109) hide show
  1. package/dist/auth.js +2 -1
  2. package/dist/auth.js.map +1 -1
  3. package/dist/brand.js +82 -0
  4. package/dist/brand.js.map +1 -0
  5. package/dist/cli/commands/auth.js +91 -58
  6. package/dist/cli/commands/auth.js.map +1 -1
  7. package/dist/cli/commands/init/auth-step.js +48 -0
  8. package/dist/cli/commands/init/auth-step.js.map +1 -0
  9. package/dist/cli/commands/init/clients-step.js +76 -0
  10. package/dist/cli/commands/init/clients-step.js.map +1 -0
  11. package/dist/cli/commands/init/context-step.js +66 -0
  12. package/dist/cli/commands/init/context-step.js.map +1 -0
  13. package/dist/cli/commands/init/index.js +67 -0
  14. package/dist/cli/commands/init/index.js.map +1 -0
  15. package/dist/cli/commands/init/project-step.js +105 -0
  16. package/dist/cli/commands/init/project-step.js.map +1 -0
  17. package/dist/cli/commands/init/provision-step.js +76 -0
  18. package/dist/cli/commands/init/provision-step.js.map +1 -0
  19. package/dist/cli/commands/validate-plan.js +42 -0
  20. package/dist/cli/commands/validate-plan.js.map +1 -0
  21. package/dist/cli/flows/clients.js +27 -17
  22. package/dist/cli/flows/clients.js.map +1 -1
  23. package/dist/cli.js +7 -5
  24. package/dist/cli.js.map +1 -1
  25. package/dist/config.js +19 -11
  26. package/dist/config.js.map +1 -1
  27. package/dist/constants.js +7 -8
  28. package/dist/constants.js.map +1 -1
  29. package/dist/lib/autopull.js +13 -0
  30. package/dist/lib/autopull.js.map +1 -0
  31. package/dist/lib/client-configs.js +37 -25
  32. package/dist/lib/client-configs.js.map +1 -1
  33. package/dist/lib/cowork-extension.js +42 -30
  34. package/dist/lib/cowork-extension.js.map +1 -1
  35. package/dist/lib/dependencies.js +83 -247
  36. package/dist/lib/dependencies.js.map +1 -1
  37. package/dist/lib/dependency-install.js +163 -0
  38. package/dist/lib/dependency-install.js.map +1 -0
  39. package/dist/lib/exec-delegate.js +2 -2
  40. package/dist/lib/exec-delegate.js.map +1 -1
  41. package/dist/lib/exec-engines.js +7 -6
  42. package/dist/lib/exec-engines.js.map +1 -1
  43. package/dist/lib/provision-apply.js +214 -0
  44. package/dist/lib/provision-apply.js.map +1 -0
  45. package/dist/lib/provision-collect.js +47 -0
  46. package/dist/lib/provision-collect.js.map +1 -0
  47. package/dist/lib/provision.js +8 -253
  48. package/dist/lib/provision.js.map +1 -1
  49. package/dist/lib/require-config.js +3 -2
  50. package/dist/lib/require-config.js.map +1 -1
  51. package/dist/lib/skills-cache.js +9 -8
  52. package/dist/lib/skills-cache.js.map +1 -1
  53. package/dist/lib/skills.js +30 -16
  54. package/dist/lib/skills.js.map +1 -1
  55. package/dist/lib/telemetry.js +2 -1
  56. package/dist/lib/telemetry.js.map +1 -1
  57. package/dist/lib/validate-plan-delegate.js +105 -0
  58. package/dist/lib/validate-plan-delegate.js.map +1 -0
  59. package/dist/lib/version-check.js +3 -2
  60. package/dist/lib/version-check.js.map +1 -1
  61. package/dist/mcp-server.js +107 -79
  62. package/dist/mcp-server.js.map +1 -1
  63. package/dist/tools/comment-task.js +32 -32
  64. package/dist/tools/comment-task.js.map +1 -1
  65. package/dist/tools/create-task.js +92 -101
  66. package/dist/tools/create-task.js.map +1 -1
  67. package/dist/tools/delegate-exec.js +4 -3
  68. package/dist/tools/delegate-exec.js.map +1 -1
  69. package/dist/tools/end-allocation.js +19 -32
  70. package/dist/tools/end-allocation.js.map +1 -1
  71. package/dist/tools/end-task-allocation.js +17 -26
  72. package/dist/tools/end-task-allocation.js.map +1 -1
  73. package/dist/tools/exec-status.js +4 -3
  74. package/dist/tools/exec-status.js.map +1 -1
  75. package/dist/tools/get-active-allocation.js +53 -60
  76. package/dist/tools/get-active-allocation.js.map +1 -1
  77. package/dist/tools/get-context.js +4 -3
  78. package/dist/tools/get-context.js.map +1 -1
  79. package/dist/tools/get-task.js +144 -142
  80. package/dist/tools/get-task.js.map +1 -1
  81. package/dist/tools/index.js +2 -0
  82. package/dist/tools/index.js.map +1 -1
  83. package/dist/tools/list-my-allocations.js +35 -43
  84. package/dist/tools/list-my-allocations.js.map +1 -1
  85. package/dist/tools/list-projects.js +3 -2
  86. package/dist/tools/list-projects.js.map +1 -1
  87. package/dist/tools/list-tasks.js +117 -124
  88. package/dist/tools/list-tasks.js.map +1 -1
  89. package/dist/tools/move-task.js +37 -39
  90. package/dist/tools/move-task.js.map +1 -1
  91. package/dist/tools/plan.js +3 -2
  92. package/dist/tools/plan.js.map +1 -1
  93. package/dist/tools/record-delivery.js +4 -3
  94. package/dist/tools/record-delivery.js.map +1 -1
  95. package/dist/tools/set-project.js +9 -4
  96. package/dist/tools/set-project.js.map +1 -1
  97. package/dist/tools/start-allocation.js +16 -26
  98. package/dist/tools/start-allocation.js.map +1 -1
  99. package/dist/tools/start-task-allocation.js +72 -92
  100. package/dist/tools/start-task-allocation.js.map +1 -1
  101. package/dist/tools/update-task.js +149 -168
  102. package/dist/tools/update-task.js.map +1 -1
  103. package/dist/tools/validate-plan.js +58 -0
  104. package/dist/tools/validate-plan.js.map +1 -0
  105. package/package.json +1 -1
  106. package/dist/cli/commands/init.js +0 -336
  107. package/dist/cli/commands/init.js.map +0 -1
  108. package/dist/logo.js +0 -17
  109. package/dist/logo.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"set-project.js","sourceRoot":"","sources":["../../src/tools/set-project.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAE9D,MAAM,UAAU,GAAG,CAAC;KACjB,MAAM,CAAC;IACN,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE;CAC9B,CAAC;KACD,MAAM,EAAE,CAAC;AAEZ,MAAM,CAAC,MAAM,UAAU,GAAS;IAC9B,IAAI,EAAE,iBAAiB;IACvB,WAAW,EACT,iFAAiF;QACjF,uFAAuF;QACvF,+DAA+D;IACjE,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,yCAAyC,EAAE;SACvG;QACD,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,EAAE,CAAC;QACpB,OAAO,WAAW,CAAC,uBAAuB,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;IACpE,CAAC;IACD,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC;IAEnC,gFAAgF;IAChF,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,GAAG,CAAC,QAAQ;SACvC,IAAI,CAAC,UAAU,CAAC;SAChB,MAAM,CAAC,UAAU,CAAC;SAClB,EAAE,CAAC,IAAI,EAAE,UAAU,CAAC;SACpB,WAAW,EAAE,CAAC;IAEjB,IAAI,KAAK;QAAE,OAAO,WAAW,CAAC,4BAA4B,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;IAC3E,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,WAAW,CAAC,4EAA4E,CAAC,CAAC;IACnG,CAAC;IAED,kBAAkB,CAAC,UAAU,CAAC,CAAC;IAE/B,OAAO,UAAU,CAAC;QAChB,iBAAiB,EAAE,IAAI,CAAC,EAAE;QAC1B,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,OAAO,EAAE,0BAA0B,IAAI,CAAC,IAAI,IAAI;KACjD,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"set-project.js","sourceRoot":"","sources":["../../src/tools/set-project.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAEpC,MAAM,UAAU,GAAG,CAAC;KACjB,MAAM,CAAC;IACN,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE;CAC9B,CAAC;KACD,MAAM,EAAE,CAAC;AAEZ,MAAM,CAAC,MAAM,UAAU,GAAS;IAC9B,IAAI,EAAE,GAAG,KAAK,CAAC,UAAU,aAAa;IACtC,WAAW,EACT,iFAAiF;QACjF,uFAAuF;QACvF,kBAAkB,KAAK,CAAC,UAAU,8CAA8C;IAClF,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,UAAU,EAAE;gBACV,IAAI,EAAE,QAAQ;gBACd,MAAM,EAAE,MAAM;gBACd,WAAW,EAAE,uBAAuB,KAAK,CAAC,UAAU,iBAAiB;aACtE;SACF;QACD,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,EAAE,CAAC;QACpB,OAAO,WAAW,CAAC,uBAAuB,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;IACpE,CAAC;IACD,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC;IAEnC,gFAAgF;IAChF,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,GAAG,CAAC,QAAQ;SACvC,IAAI,CAAC,UAAU,CAAC;SAChB,MAAM,CAAC,UAAU,CAAC;SAClB,EAAE,CAAC,IAAI,EAAE,UAAU,CAAC;SACpB,WAAW,EAAE,CAAC;IAEjB,IAAI,KAAK;QAAE,OAAO,WAAW,CAAC,4BAA4B,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;IAC3E,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,WAAW,CAAC,2DAA2D,KAAK,CAAC,UAAU,kBAAkB,CAAC,CAAC;IACpH,CAAC;IAED,kBAAkB,CAAC,UAAU,CAAC,CAAC;IAE/B,OAAO,UAAU,CAAC;QAChB,iBAAiB,EAAE,IAAI,CAAC,EAAE;QAC1B,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,OAAO,EAAE,0BAA0B,IAAI,CAAC,IAAI,IAAI;KACjD,CAAC,CAAC;AACL,CAAC"}
@@ -1,7 +1,8 @@
1
1
  import { jsonResult, errorResult } from '../lib/tool-result.js';
2
2
  import { durationSeconds } from '../lib/duration.js';
3
+ import { brand } from '../brand.js';
3
4
  export const definition = {
4
- name: 'nos_start_allocation',
5
+ name: `${brand.toolPrefix}start_allocation`,
5
6
  description: 'Inicia uma alocação (bate o ponto) para o usuário atual. Se já existe uma alocação ' +
6
7
  'ativa, retorna ela sem criar duplicada.',
7
8
  inputSchema: {
@@ -10,36 +11,25 @@ export const definition = {
10
11
  additionalProperties: false,
11
12
  },
12
13
  };
14
+ /** Monta o payload de status de alocação (nova ou já ativa). Pura. */
15
+ export function formatAllocationStatus(row, alreadyActive) {
16
+ return {
17
+ allocation_id: row.id,
18
+ start_time: row.start_time,
19
+ elapsed_seconds: durationSeconds(row.start_time, null),
20
+ already_active: alreadyActive,
21
+ };
22
+ }
13
23
  export async function handler(_args, ctx) {
14
24
  const { supabase } = ctx;
15
- const activeRes = await supabase
16
- .from('allocations')
17
- .select('id, start_time')
18
- .eq('user_id', ctx.user.id)
19
- .is('end_time', null)
20
- .maybeSingle();
25
+ const activeRes = await supabase.from('allocations').select('id, start_time').eq('user_id', ctx.user.id).is('end_time', null).maybeSingle();
21
26
  if (activeRes.error)
22
27
  return errorResult(`Erro ao buscar alocação ativa: ${activeRes.error.message}`);
23
- if (activeRes.data) {
24
- return jsonResult({
25
- allocation_id: activeRes.data.id,
26
- start_time: activeRes.data.start_time,
27
- elapsed_seconds: durationSeconds(activeRes.data.start_time, null),
28
- already_active: true,
29
- });
30
- }
31
- const insertRes = await supabase
32
- .from('allocations')
33
- .insert({ user_id: ctx.user.id })
34
- .select('id, start_time')
35
- .single();
28
+ if (activeRes.data)
29
+ return jsonResult(formatAllocationStatus(activeRes.data, true));
30
+ const insertRes = await supabase.from('allocations').insert({ user_id: ctx.user.id }).select('id, start_time').single();
36
31
  if (insertRes.error)
37
32
  return errorResult(`Erro ao iniciar alocação: ${insertRes.error.message}`);
38
- return jsonResult({
39
- allocation_id: insertRes.data.id,
40
- start_time: insertRes.data.start_time,
41
- elapsed_seconds: durationSeconds(insertRes.data.start_time, null),
42
- already_active: false,
43
- });
33
+ return jsonResult(formatAllocationStatus(insertRes.data, false));
44
34
  }
45
35
  //# sourceMappingURL=start-allocation.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"start-allocation.js","sourceRoot":"","sources":["../../src/tools/start-allocation.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAErD,MAAM,CAAC,MAAM,UAAU,GAAS;IAC9B,IAAI,EAAE,sBAAsB;IAC5B,WAAW,EACT,qFAAqF;QACrF,yCAAyC;IAC3C,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE,EAAE;QACd,oBAAoB,EAAE,KAAK;KAC5B;CACF,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,KAAc,EAAE,GAAgB;IAC5D,MAAM,EAAE,QAAQ,EAAE,GAAG,GAAG,CAAC;IAEzB,MAAM,SAAS,GAAG,MAAM,QAAQ;SAC7B,IAAI,CAAC,aAAa,CAAC;SACnB,MAAM,CAAC,gBAAgB,CAAC;SACxB,EAAE,CAAC,SAAS,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;SAC1B,EAAE,CAAC,UAAU,EAAE,IAAI,CAAC;SACpB,WAAW,EAAE,CAAC;IACjB,IAAI,SAAS,CAAC,KAAK;QAAE,OAAO,WAAW,CAAC,kCAAkC,SAAS,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;IAErG,IAAI,SAAS,CAAC,IAAI,EAAE,CAAC;QACnB,OAAO,UAAU,CAAC;YAChB,aAAa,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE;YAChC,UAAU,EAAE,SAAS,CAAC,IAAI,CAAC,UAAU;YACrC,eAAe,EAAE,eAAe,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC;YACjE,cAAc,EAAE,IAAI;SACrB,CAAC,CAAC;IACL,CAAC;IAED,MAAM,SAAS,GAAG,MAAM,QAAQ;SAC7B,IAAI,CAAC,aAAa,CAAC;SACnB,MAAM,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;SAChC,MAAM,CAAC,gBAAgB,CAAC;SACxB,MAAM,EAAE,CAAC;IACZ,IAAI,SAAS,CAAC,KAAK;QAAE,OAAO,WAAW,CAAC,6BAA6B,SAAS,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;IAEhG,OAAO,UAAU,CAAC;QAChB,aAAa,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE;QAChC,UAAU,EAAE,SAAS,CAAC,IAAI,CAAC,UAAU;QACrC,eAAe,EAAE,eAAe,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC;QACjE,cAAc,EAAE,KAAK;KACtB,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"start-allocation.js","sourceRoot":"","sources":["../../src/tools/start-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,kBAAkB;IAC3C,WAAW,EACT,qFAAqF;QACrF,yCAAyC;IAC3C,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE,EAAE;QACd,oBAAoB,EAAE,KAAK;KAC5B;CACF,CAAC;AAEF,sEAAsE;AACtE,MAAM,UAAU,sBAAsB,CACpC,GAAuC,EACvC,aAAsB;IAEtB,OAAO;QACL,aAAa,EAAE,GAAG,CAAC,EAAE;QACrB,UAAU,EAAE,GAAG,CAAC,UAAU;QAC1B,eAAe,EAAE,eAAe,CAAC,GAAG,CAAC,UAAU,EAAE,IAAI,CAAC;QACtD,cAAc,EAAE,aAAa;KAC9B,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,KAAc,EAAE,GAAgB;IAC5D,MAAM,EAAE,QAAQ,EAAE,GAAG,GAAG,CAAC;IAEzB,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;IAC5I,IAAI,SAAS,CAAC,KAAK;QAAE,OAAO,WAAW,CAAC,kCAAkC,SAAS,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;IACrG,IAAI,SAAS,CAAC,IAAI;QAAE,OAAO,UAAU,CAAC,sBAAsB,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;IAEpF,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,MAAM,EAAE,CAAC;IACxH,IAAI,SAAS,CAAC,KAAK;QAAE,OAAO,WAAW,CAAC,6BAA6B,SAAS,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;IAEhG,OAAO,UAAU,CAAC,sBAAsB,CAAC,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;AACnE,CAAC"}
@@ -2,6 +2,7 @@ import { z } from 'zod';
2
2
  import { jsonResult, errorResult } from '../lib/tool-result.js';
3
3
  import { resolveProjectConfig, isErrorResult } from '../lib/require-config.js';
4
4
  import { durationSeconds } from '../lib/duration.js';
5
+ import { brand } from '../brand.js';
5
6
  const ArgsSchema = z
6
7
  .object({
7
8
  task_id: z.string().uuid(),
@@ -10,7 +11,7 @@ const ArgsSchema = z
10
11
  })
11
12
  .strict();
12
13
  export const definition = {
13
- name: 'nos_start_task_allocation',
14
+ name: `${brand.toolPrefix}start_task_allocation`,
14
15
  description: 'Começa a cronometrar tempo numa task específica. Se não há alocação ativa (ponto do dia), ' +
15
16
  'abre uma. Se já existe outra task_allocation ativa, fecha ela e abre essa — ' +
16
17
  'transição entre tasks é atômica, basta chamar isso na próxima task.',
@@ -22,120 +23,99 @@ export const definition = {
22
23
  project_id: {
23
24
  type: 'string',
24
25
  format: 'uuid',
25
- description: 'Override do projeto. Se omitido, usa o projeto ativo (nos_set_project) ou o default.',
26
+ description: `Override do projeto. Se omitido, usa o projeto ativo (${brand.toolPrefix}set_project) ou o default.`,
26
27
  },
27
28
  },
28
29
  required: ['task_id'],
29
30
  additionalProperties: false,
30
31
  },
31
32
  };
33
+ /** Monta o resumo da task_allocation anterior fechada, calculando a duração. Pura. */
34
+ export function buildClosedPreviousSummary(prev, closed, prevTaskKey) {
35
+ return {
36
+ task_allocation_id: prev.id,
37
+ task_id: prev.task_id,
38
+ task_key: prevTaskKey,
39
+ duration_seconds: durationSeconds(closed.start_time, closed.end_time),
40
+ };
41
+ }
42
+ /** Monta o payload de resposta do start_task_allocation. Pura. */
43
+ export function formatStartTaskAllocationResult(taskAllocation, task, closedPrevious, allocationWasCreated) {
44
+ return {
45
+ task_allocation_id: taskAllocation.id,
46
+ task: { id: task.id, key: task.key, title: task.title },
47
+ started_at: taskAllocation.start_time,
48
+ is_overtime: taskAllocation.is_overtime,
49
+ closed_previous: closedPrevious,
50
+ allocation_was_created: allocationWasCreated,
51
+ };
52
+ }
53
+ /** Garante uma allocation (ponto) ativa pro usuário — reaproveita ou cria. */
54
+ async function ensureActiveAllocation(supabase, userId) {
55
+ const activeAllocRes = await supabase.from('allocations').select('id').eq('user_id', userId).is('end_time', null).maybeSingle();
56
+ if (activeAllocRes.error)
57
+ return errorResult(`Erro ao buscar alocação ativa: ${activeAllocRes.error.message}`);
58
+ if (activeAllocRes.data)
59
+ return { allocationId: activeAllocRes.data.id, wasCreated: false };
60
+ const newAlloc = await supabase.from('allocations').insert({ user_id: userId }).select('id').single();
61
+ if (newAlloc.error)
62
+ return errorResult(`Erro ao iniciar alocação: ${newAlloc.error.message}`);
63
+ return { allocationId: newAlloc.data.id, wasCreated: true };
64
+ }
65
+ /** Fecha a task_allocation ativa anterior do usuário, se existir. */
66
+ async function closePreviousTaskAllocation(supabase, userId, now) {
67
+ const activeRes = await supabase
68
+ .from('task_allocations')
69
+ .select('id, task_id, start_time')
70
+ .eq('user_id', userId)
71
+ .is('end_time', null)
72
+ .maybeSingle();
73
+ if (activeRes.error)
74
+ return errorResult(`Erro ao buscar task_allocation ativa: ${activeRes.error.message}`);
75
+ if (!activeRes.data)
76
+ return null;
77
+ const prev = activeRes.data;
78
+ const closeRes = await supabase
79
+ .from('task_allocations')
80
+ .update({ end_time: now })
81
+ .eq('id', prev.id)
82
+ .select('id, start_time, end_time')
83
+ .single();
84
+ if (closeRes.error)
85
+ return errorResult(`Erro ao fechar task_allocation anterior: ${closeRes.error.message}`);
86
+ // Pega o key da task anterior pra retorno (best-effort)
87
+ const prevTask = await supabase.from('tasks').select('id, key').eq('id', prev.task_id).maybeSingle();
88
+ return buildClosedPreviousSummary(prev, closeRes.data, prevTask.data?.key ?? null);
89
+ }
32
90
  export async function handler(args, ctx) {
33
91
  const parsed = ArgsSchema.safeParse(args);
34
- if (!parsed.success) {
92
+ if (!parsed.success)
35
93
  return errorResult(`Argumento inválido: ${parsed.error.message}`);
36
- }
37
94
  const { task_id, is_overtime } = parsed.data;
38
95
  const cfg = resolveProjectConfig(ctx, parsed.data.project_id);
39
96
  if (isErrorResult(cfg))
40
97
  return cfg;
41
98
  const { supabase } = ctx;
42
99
  const now = new Date().toISOString();
43
- // Valida task no projeto
44
- const taskRes = await supabase
45
- .from('tasks')
46
- .select('id, key, title, project_id')
47
- .eq('id', task_id)
48
- .eq('project_id', cfg.project_id)
49
- .maybeSingle();
100
+ const taskRes = await supabase.from('tasks').select('id, key, title, project_id').eq('id', task_id).eq('project_id', cfg.project_id).maybeSingle();
50
101
  if (taskRes.error)
51
102
  return errorResult(`Erro ao buscar tarefa: ${taskRes.error.message}`);
52
- if (!taskRes.data) {
103
+ if (!taskRes.data)
53
104
  return errorResult('Tarefa não encontrada ou fora do projeto vinculado a este diretório.');
54
- }
55
105
  const task = taskRes.data;
56
- // Garante allocation ativa
57
- let allocationId;
58
- let allocationWasCreated = false;
59
- const activeAllocRes = await supabase
60
- .from('allocations')
61
- .select('id')
62
- .eq('user_id', ctx.user.id)
63
- .is('end_time', null)
64
- .maybeSingle();
65
- if (activeAllocRes.error) {
66
- return errorResult(`Erro ao buscar alocação ativa: ${activeAllocRes.error.message}`);
67
- }
68
- if (activeAllocRes.data) {
69
- allocationId = activeAllocRes.data.id;
70
- }
71
- else {
72
- const newAlloc = await supabase
73
- .from('allocations')
74
- .insert({ user_id: ctx.user.id })
75
- .select('id')
76
- .single();
77
- if (newAlloc.error)
78
- return errorResult(`Erro ao iniciar alocação: ${newAlloc.error.message}`);
79
- allocationId = newAlloc.data.id;
80
- allocationWasCreated = true;
81
- }
82
- // Fecha task_allocation ativa anterior (se existir)
83
- const activeTaskAllocRes = await supabase
84
- .from('task_allocations')
85
- .select('id, task_id, start_time')
86
- .eq('user_id', ctx.user.id)
87
- .is('end_time', null)
88
- .maybeSingle();
89
- if (activeTaskAllocRes.error) {
90
- return errorResult(`Erro ao buscar task_allocation ativa: ${activeTaskAllocRes.error.message}`);
91
- }
92
- let closedPrevious = null;
93
- if (activeTaskAllocRes.data) {
94
- const prev = activeTaskAllocRes.data;
95
- const closeRes = await supabase
96
- .from('task_allocations')
97
- .update({ end_time: now })
98
- .eq('id', prev.id)
99
- .select('id, start_time, end_time')
100
- .single();
101
- if (closeRes.error) {
102
- return errorResult(`Erro ao fechar task_allocation anterior: ${closeRes.error.message}`);
103
- }
104
- // Pega o key da task anterior pra retorno (best-effort)
105
- const prevTask = await supabase
106
- .from('tasks')
107
- .select('id, key')
108
- .eq('id', prev.task_id)
109
- .maybeSingle();
110
- closedPrevious = {
111
- task_allocation_id: prev.id,
112
- task_id: prev.task_id,
113
- task_key: prevTask.data?.key ?? null,
114
- duration_seconds: durationSeconds(closeRes.data.start_time, closeRes.data.end_time),
115
- };
116
- }
117
- // Insert nova task_allocation
106
+ const alloc = await ensureActiveAllocation(supabase, ctx.user.id);
107
+ if (isErrorResult(alloc))
108
+ return alloc;
109
+ const closedPrevious = await closePreviousTaskAllocation(supabase, ctx.user.id, now);
110
+ if (isErrorResult(closedPrevious))
111
+ return closedPrevious;
118
112
  const insertRes = await supabase
119
113
  .from('task_allocations')
120
- .insert({
121
- allocation_id: allocationId,
122
- task_id,
123
- user_id: ctx.user.id,
124
- start_time: now,
125
- is_overtime,
126
- })
114
+ .insert({ allocation_id: alloc.allocationId, task_id, user_id: ctx.user.id, start_time: now, is_overtime })
127
115
  .select('id, start_time, is_overtime')
128
116
  .single();
129
- if (insertRes.error) {
117
+ if (insertRes.error)
130
118
  return errorResult(`Erro ao iniciar task_allocation: ${insertRes.error.message}`);
131
- }
132
- return jsonResult({
133
- task_allocation_id: insertRes.data.id,
134
- task: { id: task.id, key: task.key, title: task.title },
135
- started_at: insertRes.data.start_time,
136
- is_overtime: insertRes.data.is_overtime,
137
- closed_previous: closedPrevious,
138
- allocation_was_created: allocationWasCreated,
139
- });
119
+ return jsonResult(formatStartTaskAllocationResult(insertRes.data, task, closedPrevious, alloc.wasCreated));
140
120
  }
141
121
  //# sourceMappingURL=start-task-allocation.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"start-task-allocation.js","sourceRoot":"","sources":["../../src/tools/start-task-allocation.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"start-task-allocation.js","sourceRoot":"","sources":["../../src/tools/start-task-allocation.ts"],"names":[],"mappings":"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"}