@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,45 +0,0 @@
1
- import { existsSync } from "node:fs";
2
- import { runPlan } from "../../lib/plan-delegate.js";
3
- import { ENGINES, PLAN_ENGINE, parseEngine } from "../../lib/exec-engines.js";
4
- /**
5
- * Superfície de CLI do planejamento headless — mesmo contrato do `exec`:
6
- * **stdout = JSON**, **stderr = log ao vivo**, **exit ≠ 0 = falha**.
7
- */
8
- function emit(payload) {
9
- process.stdout.write(`${JSON.stringify(payload, null, 2)}\n`);
10
- }
11
- export function registerPlanCommand(program) {
12
- program
13
- .command("plan")
14
- .description("Roda o engine pensante sobre o projeto e escreve/refina o .noclaf/plan.md. " +
15
- "Não toca código. stdout = JSON do resultado; stderr = log ao vivo.")
16
- .requiredOption("--instruction <texto>", "a ideia ou o ajuste a planejar")
17
- .option("--project <path>", "raiz do projeto onde vive o .noclaf/plan.md", process.cwd())
18
- .option("--engine <engine>", `agente pensante (${ENGINES.join(" | ")})`, PLAN_ENGINE)
19
- .option("--quiet", "não streama o log do agente no stderr")
20
- .action(async (opts) => {
21
- const engine = parseEngine(opts.engine, PLAN_ENGINE);
22
- if (!engine) {
23
- emit({
24
- error: `engine inválido: ${opts.engine} — suportados: ${ENGINES.join(", ")}`,
25
- });
26
- process.exitCode = 1;
27
- return;
28
- }
29
- if (!existsSync(opts.project)) {
30
- emit({ error: `projeto não encontrado: ${opts.project}` });
31
- process.exitCode = 1;
32
- return;
33
- }
34
- const result = await runPlan({
35
- project: opts.project,
36
- instruction: opts.instruction,
37
- engine,
38
- echo: opts.quiet !== true,
39
- });
40
- emit(result);
41
- if (!result.ok)
42
- process.exitCode = 1;
43
- });
44
- }
45
- //# sourceMappingURL=plan.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"plan.js","sourceRoot":"","sources":["../../../src/cli/commands/plan.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AACrD,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAE9E;;;GAGG;AAEH,SAAS,IAAI,CAAC,OAAgB;IAC5B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;AAChE,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,OAAgB;IAClD,OAAO;SACJ,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CACV,6EAA6E;QAC3E,oEAAoE,CACvE;SACA,cAAc,CAAC,uBAAuB,EAAE,gCAAgC,CAAC;SACzE,MAAM,CAAC,kBAAkB,EAAE,6CAA6C,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC;SACxF,MAAM,CACL,mBAAmB,EACnB,oBAAoB,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAC1C,WAAW,CACZ;SACA,MAAM,CAAC,SAAS,EAAE,uCAAuC,CAAC;SAC1D,MAAM,CACL,KAAK,EAAE,IAKN,EAAE,EAAE;QACH,MAAM,MAAM,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;QACrD,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,IAAI,CAAC;gBACH,KAAK,EAAE,oBAAoB,IAAI,CAAC,MAAM,kBAAkB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;aAC7E,CAAC,CAAC;YACH,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;YACrB,OAAO;QACT,CAAC;QACD,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YAC9B,IAAI,CAAC,EAAE,KAAK,EAAE,2BAA2B,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;YAC3D,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;YACrB,OAAO;QACT,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC;YAC3B,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,MAAM;YACN,IAAI,EAAE,IAAI,CAAC,KAAK,KAAK,IAAI;SAC1B,CAAC,CAAC;QAEH,IAAI,CAAC,MAAM,CAAC,CAAC;QACb,IAAI,CAAC,MAAM,CAAC,EAAE;YAAE,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;IACvC,CAAC,CACF,CAAC;AACN,CAAC"}
@@ -1,23 +0,0 @@
1
- import { brand } from "../../brand.js";
2
- import { readSkillDocs } from "../../lib/skills.js";
3
- export function registerSkillsCommands(program) {
4
- const skills = program
5
- .command("skills")
6
- .description(`Skills, commands e agents do ${brand.name} (lidos do repo aberto via cache)`);
7
- skills
8
- .command("status")
9
- .description(`Lista os docs do repo de skills (cache local ~/${brand.homeDirName}/skills)`)
10
- .action(() => {
11
- try {
12
- const docs = readSkillDocs();
13
- console.log(`Skills: ${docs.length} docs`);
14
- for (const d of docs)
15
- console.log(` ${d.type.padEnd(10)} ${d.path}`);
16
- }
17
- catch (err) {
18
- console.error(`[erro] ${err.message}`);
19
- process.exit(1);
20
- }
21
- });
22
- }
23
- //# sourceMappingURL=skills.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"skills.js","sourceRoot":"","sources":["../../../src/cli/commands/skills.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEpD,MAAM,UAAU,sBAAsB,CAAC,OAAgB;IACrD,MAAM,MAAM,GAAG,OAAO;SACnB,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,gCAAgC,KAAK,CAAC,IAAI,mCAAmC,CAAC,CAAC;IAE9F,MAAM;SACH,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,kDAAkD,KAAK,CAAC,WAAW,UAAU,CAAC;SAC1F,MAAM,CAAC,GAAG,EAAE;QACX,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,aAAa,EAAE,CAAC;YAC7B,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,CAAC,MAAM,OAAO,CAAC,CAAC;YAC3C,KAAK,MAAM,CAAC,IAAI,IAAI;gBAAE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QACxE,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CAAC,UAAW,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;YAClD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
@@ -1,319 +0,0 @@
1
- import { brand } from "../../brand.js";
2
- import { spawnSync } from "node:child_process";
3
- import { confirm } from "../../lib/prompts.js";
4
- import { loadProjectConfig } from "../../config.js";
5
- import { createAuthenticatedClient } from "../../adapters/supabase/client.js";
6
- import { checkForUpdate } from "../../lib/version-check.js";
7
- import { uninstallProvision, provision } from "../../lib/provision.js";
8
- import { provisionHooks, uninstallHooks } from "../../lib/hooks.js";
9
- import { readDependencies, skillIdMap } from "../../lib/skills.js";
10
- import { fetchSkills } from "../../lib/skills-cache.js";
11
- import { concatenateRules, concatenateReviewCriteria, collectRuleSkills } from "../../lib/rules.js";
12
- import { writeRepoHarness } from "../../lib/harness.js";
13
- import { patternsExist, runPatternsAnalysis } from "../../lib/patterns.js";
14
- import { offerShellCompletion } from "../flows/completion.js";
15
- import { ensureUserConfig } from "../flows/user-config.js";
16
- import { fetchProjectContext, buildProjectOverview } from "../../lib/project-context.js";
17
- import { startSpinner } from "../../spinner.js";
18
- import { track, provisionedItems, flushTelemetry } from "../../lib/telemetry.js";
19
- import { VERSION } from "../../version.js";
20
- import { claudeTarget, detectConfiguredTargets } from "../../lib/targets.js";
21
- import { gitExposedRoot } from "../../lib/git-exposure.js";
22
- import { coworkConfigured, installCoworkGlobal } from "../../lib/client-configs.js";
23
- import { c, sym, cmd, box, sectionTitle, clearScreen } from "../../lib/colors.js";
24
- import { printProvisionResult, printHookResult, printHarnessResult } from "../ui/render.js";
25
- import { SyncReport, renderReport, browseReport, resolveReportMode, summarizeProvision, } from "../ui/report.js";
26
- import { offerDependencyInstall, offerRuleSkills } from "../flows/dependencies.js";
27
- import { offerDisableCoAuthoredBy } from "../flows/clients.js";
28
- import { syncCopy } from "../copy.js";
29
- export function registerSyncCommand(program) {
30
- program
31
- .command("sync")
32
- .description("Instala/atualiza skills, commands e agents nos clientes configurados, a partir do bundle (idempotente); checa atualização do pacote")
33
- .option("--dry-run", "mostra o que mudaria, sem escrever nada")
34
- .option("--force", "sobrescreve arquivos divergentes de mesmo nome")
35
- .option("--no-prune", "mantém arquivos que saíram do bundle")
36
- .option("--uninstall", "remove os arquivos que o noclaf instalou")
37
- .option("--no-install-deps", "não oferece instalar as libs externas requeridas")
38
- .option("-y, --yes", "aprova automaticamente a instalação das libs (não-interativo)")
39
- .option("--reanalyze", "re-roda a análise de patterns (regera docs/_patterns.md) mesmo se já existir")
40
- .option("--verbose", "expande todos os detalhes inline (sem resumo/menu)")
41
- .option("--quiet", "só o resumo de uma linha por seção")
42
- .action(async (opts) => {
43
- try {
44
- // `NOCLAF_SKIP_UPDATE` marca o re-exec pós-atualização — evita qualquer loop.
45
- const upd = process.env.NOCLAF_SKIP_UPDATE ? null : await checkForUpdate();
46
- if (upd?.hasUpdate) {
47
- console.log("");
48
- console.log(box(`${c.yellow(sym.warn)} ${c.bold(`nova versão do ${brand.name}`)} ` +
49
- `${c.dim(upd.current)} ${c.dim(sym.arrow)} ${c.green(upd.latest)}\n` +
50
- `${c.dim("atualizar:")} ${cmd(`npm install -g ${upd.name}@latest`)}`, { borderColor: "yellow", title: "atualização" }));
51
- const interactive = Boolean(process.stdout.isTTY);
52
- const doUpdate = !opts.dryRun &&
53
- (opts.yes === true ||
54
- (interactive &&
55
- (await confirm({
56
- message: syncCopy.update.confirm,
57
- default: true,
58
- }))));
59
- if (doUpdate) {
60
- console.log(` ${c.dim(`${sym.gear} rodando…`)}`);
61
- const res = spawnSync("npm", ["install", "-g", `${upd.name}@latest`], { stdio: "inherit" });
62
- if (res.status === 0) {
63
- // Segue o sync na versão nova: re-executa o mesmo comando no lugar de
64
- // pedir pro usuário rodar de novo (o binário global já foi trocado).
65
- console.log(` ${c.green(`${sym.ok} atualizado pra ${upd.latest}`)} ${c.dim("— seguindo o sync na versão nova…")}`);
66
- const again = spawnSync(process.execPath, [process.argv[1], ...process.argv.slice(2)], { stdio: "inherit", env: { ...process.env, NOCLAF_SKIP_UPDATE: "1" } });
67
- process.exit(again.status ?? 0);
68
- }
69
- console.log(` ${c.red(`${sym.err} falha ao atualizar`)} ${c.dim("— seguindo com a versão atual.")}`);
70
- }
71
- }
72
- const mode = resolveReportMode(opts);
73
- const report = new SyncReport();
74
- // Puxa a versão mais recente do repo aberto de skills pro cache local
75
- // (~/.noclaf/skills). É a fonte que `provision`/`readDependencies` leem.
76
- if (!opts.dryRun) {
77
- const sp = startSpinner("Atualizando skills do repo…");
78
- const fetched = await fetchSkills({ force: true });
79
- sp.stop();
80
- if (fetched.status === "fetched") {
81
- report.add({
82
- id: "fetch",
83
- title: "Skills",
84
- status: "ok",
85
- summary: `atualizadas (${fetched.repo}@${fetched.ref})`,
86
- lines: [],
87
- });
88
- }
89
- else if (fetched.status === "cached") {
90
- report.add({
91
- id: "fetch",
92
- title: "Skills",
93
- status: "warn",
94
- summary: "usando cache local" + (fetched.error ? " (fetch falhou)" : ""),
95
- lines: fetched.error ? [` ${c.dim(fetched.error)}`] : [],
96
- });
97
- }
98
- else {
99
- console.error(` ${c.red(sym.err)} não consegui obter as skills: ${fetched.error}`);
100
- process.exit(1);
101
- }
102
- }
103
- const detected = detectConfiguredTargets();
104
- const targets = detected.length > 0 ? detected : [claudeTarget];
105
- if (opts.uninstall) {
106
- for (const target of targets) {
107
- console.log("");
108
- console.log(` ${c.magenta(sym.dot)} ${c.bold(target.label)}`);
109
- const result = uninstallProvision({
110
- targetDir: target.targetDir(),
111
- dryRun: opts.dryRun,
112
- });
113
- for (const rel of result.removed)
114
- console.log(` [-] ${rel}`);
115
- for (const rel of result.kept)
116
- console.log(` [!] ${rel} (modificado localmente — mantido)`);
117
- const prefix = result.dryRun ? "[dry-run] " : "";
118
- console.log(`${prefix}${result.removed.length} removidos · ${result.kept.length} preservados → ${result.targetDir}`);
119
- if (target === claudeTarget) {
120
- const h = uninstallHooks({ dryRun: opts.dryRun });
121
- if (h.removedScripts.length > 0)
122
- console.log(` [-] hooks: ${h.removedScripts.join(", ")}`);
123
- }
124
- }
125
- return;
126
- }
127
- let config = null;
128
- try {
129
- config = loadProjectConfig();
130
- }
131
- catch {
132
- /* sem noclaf.json / inválido → provisiona tudo */
133
- }
134
- const selection = config?.selection;
135
- // Split de config: migra o formato antigo + garante o noclaf.user.json (prefs).
136
- if (!opts.dryRun) {
137
- await ensureUserConfig({
138
- interactive: Boolean(process.stdout.isTTY),
139
- hasRepoConfig: Boolean(config),
140
- });
141
- }
142
- // Sessão best-effort — telemetria de adoção + overview do NOS (não bloqueia).
143
- let session = null;
144
- let telemetry = null;
145
- if (!opts.dryRun) {
146
- try {
147
- session = await createAuthenticatedClient();
148
- telemetry = session.supabase;
149
- }
150
- catch {
151
- /* sem login → sem telemetria/overview */
152
- }
153
- }
154
- const uidByName = skillIdMap();
155
- // ---- Fase informativa: coleta cada etapa como seção (não imprime na hora) ----
156
- for (const target of targets) {
157
- const result = provision({
158
- target,
159
- selection,
160
- dryRun: opts.dryRun,
161
- force: opts.force,
162
- prune: opts.prune,
163
- });
164
- const { status, summary } = summarizeProvision(result.files);
165
- report.addCaptured({ id: `prov-${target.id}`, title: target.label, status, summary }, () => printProvisionResult(result));
166
- // Destino dentro de um repo git e sem gitignore: as skills somem sozinhas
167
- // no próximo `git clean`/`checkout` do repo. Avisa uma vez, com a saída.
168
- const exposed = gitExposedRoot(result.targetDir, result.files.filter((f) => f.action !== "prune").map((f) => f.relPath));
169
- if (exposed) {
170
- report.add({
171
- id: `git-${target.id}`,
172
- title: `${target.label} · repo git`,
173
- status: "warn",
174
- summary: "arquivos expostos a git clean/checkout",
175
- lines: [
176
- ` ${c.dim("destino dentro de")} ${exposed}`,
177
- ` ${c.dim("um")} ${cmd("git clean -fd")} ${c.dim("ou")} ${cmd("git checkout")} ${c.dim("apaga/reverte o que o noclaf grava.")}`,
178
- ` ${c.dim("ignore os paths provisionados no .gitignore do repo pra parar de perdê-los.")}`,
179
- ],
180
- });
181
- }
182
- track(telemetry, {
183
- type: "provision",
184
- client: target.id,
185
- sections: selection,
186
- items: provisionedItems(result.files, uidByName),
187
- version: VERSION,
188
- });
189
- // Hooks (só Claude Code): registra os gatilhos no settings.json.
190
- if (target === claudeTarget) {
191
- const h = provisionHooks({
192
- surface: claudeTarget.surface,
193
- selection,
194
- dryRun: opts.dryRun,
195
- });
196
- report.addCaptured({ id: "hooks", title: "Hooks", status: "ok", summary: `${h.installed.length} hooks` }, () => printHookResult(h));
197
- }
198
- }
199
- // Reafirma o config do Cowork (idempotente).
200
- if (!opts.dryRun && coworkConfigured()) {
201
- const result = installCoworkGlobal();
202
- if (result.status === "updated") {
203
- report.add({
204
- id: "cowork",
205
- title: "Claude Desktop (Cowork)",
206
- status: "ok",
207
- summary: "config atualizado — reinicie o app",
208
- lines: [` ${c.dim(result.path)}`],
209
- });
210
- }
211
- }
212
- // Harness no repo (rules + AGENTS.md + CLAUDE.md). Idempotente.
213
- if (!opts.dryRun && config) {
214
- let overview = "";
215
- if (session) {
216
- try {
217
- overview = buildProjectOverview(await fetchProjectContext(session.supabase, config, session.user));
218
- }
219
- catch {
220
- /* sem contexto → não toca o bloco de overview */
221
- }
222
- }
223
- try {
224
- const sel = config.selection ?? { roles: [], stacks: {} };
225
- const h = writeRepoHarness(process.cwd(), {
226
- rulesMarkdown: concatenateRules(sel),
227
- reviewMarkdown: concatenateReviewCriteria(sel),
228
- overview,
229
- });
230
- const changed = [h.rules, h.review, h.agents, h.claude, h.map].some((a) => a !== "unchanged" && a !== "empty");
231
- report.addCaptured({
232
- id: "harness",
233
- title: "Harness (repo)",
234
- status: "ok",
235
- summary: changed ? `rules ${h.rules} · review ${h.review} · AGENTS ${h.agents} · map ${h.map}` : "sem mudanças",
236
- }, () => printHarnessResult(h));
237
- }
238
- catch (err) {
239
- report.add({
240
- id: "harness",
241
- title: "Harness (repo)",
242
- status: "warn",
243
- summary: "pulado",
244
- lines: [` ${c.dim(err.message)}`],
245
- });
246
- }
247
- }
248
- // ---- Render do resumo + menu navegável (só no modo interativo) ----
249
- // Limpa a tela (TTY) pra o resumo aparecer sem o "lixo" das etapas acima.
250
- clearScreen();
251
- renderReport(report, mode, "Sync");
252
- if (mode === "summary")
253
- await browseReport(report);
254
- // ---- Fase de ações: ofertas [y/N] (patterns, deps, completion) ----
255
- console.log("");
256
- console.log(sectionTitle("Ações", "instalações e ajustes"));
257
- // Patterns (IA): auto no 1º sync (com [y/N]) ou via --reanalyze; skip-if-exists.
258
- if (!opts.dryRun && config) {
259
- const cwd = process.cwd();
260
- if (opts.reanalyze || !patternsExist(cwd)) {
261
- const interactive = Boolean(process.stdout.isTTY);
262
- let approved = opts.yes === true || opts.reanalyze === true;
263
- if (!approved && interactive) {
264
- approved = await confirm({
265
- message: "Analisar o repo agora e gerar docs/_patterns.md? (roda claude/codex headless)",
266
- default: true,
267
- });
268
- }
269
- if (approved) {
270
- console.log(` ${c.dim(`${sym.gear} analisando patterns…`)}`);
271
- const out = runPatternsAnalysis(cwd);
272
- if (!out.ran) {
273
- console.log(` ${c.yellow(sym.warn)} ${c.dim(out.reason ?? "análise não rodou")}`);
274
- }
275
- else {
276
- console.log(out.ok
277
- ? ` ${c.green(sym.ok)} docs/_patterns.md ${c.dim(`(${out.agent})`)}`
278
- : ` ${c.red(sym.err)} ${c.dim(`análise falhou (${out.agent})`)}`);
279
- }
280
- }
281
- else {
282
- console.log(` ${c.dim("patterns pulado — rode")} ${cmd(`${brand.name} sync --reanalyze`)} ${c.dim("depois.")}`);
283
- }
284
- }
285
- }
286
- if (!opts.dryRun &&
287
- Boolean(process.stdout.isTTY) &&
288
- targets.includes(claudeTarget)) {
289
- await offerDisableCoAuthoredBy();
290
- }
291
- // Oferece instalar as libs externas do pacote. Em --dry-run só lista.
292
- await offerDependencyInstall(readDependencies(selection), {
293
- interactive: Boolean(process.stdout.isTTY),
294
- assumeYes: opts.yes,
295
- enabled: opts.installDeps !== false && !opts.dryRun,
296
- });
297
- // Skills recomendadas (skills.sh) das stacks do noclaf.json.
298
- await offerRuleSkills(collectRuleSkills(config?.selection ?? { roles: [], stacks: {} }), {
299
- interactive: Boolean(process.stdout.isTTY),
300
- assumeYes: opts.yes,
301
- enabled: opts.installDeps !== false && !opts.dryRun,
302
- });
303
- // Valida o autocomplete do shell; se faltar, prompta (só interativo).
304
- if (!opts.dryRun) {
305
- await offerShellCompletion({
306
- interactive: Boolean(process.stdout.isTTY),
307
- assumeYes: opts.yes,
308
- });
309
- }
310
- // Garante que os eventos de telemetria saiam antes do processo encerrar.
311
- await flushTelemetry();
312
- }
313
- catch (err) {
314
- console.error(`[erro] ${err.message}`);
315
- process.exit(1);
316
- }
317
- });
318
- }
319
- //# sourceMappingURL=sync.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sync.js","sourceRoot":"","sources":["../../../src/cli/commands/sync.ts"],"names":[],"mappings":"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"}
@@ -1,42 +0,0 @@
1
- import { existsSync } from "node:fs";
2
- import { runValidatePlan } from "../../lib/validate-plan-delegate.js";
3
- import { ENGINES, PLAN_ENGINE, parseEngine } from "../../lib/exec-engines.js";
4
- /**
5
- * Superfície de CLI da triagem — mesmo contrato do `plan`/`exec`:
6
- * **stdout = JSON**, **stderr = log ao vivo**, **exit ≠ 0 = falha**.
7
- */
8
- function emit(payload) {
9
- process.stdout.write(`${JSON.stringify(payload, null, 2)}\n`);
10
- }
11
- export function registerValidatePlanCommand(program) {
12
- program
13
- .command("validate-plan")
14
- .description("Lê o .noclaf/plan.md e roda o engine pensante para julgar se o plano precisa de " +
15
- "uma spec antes de implementar. stdout = JSON { ok, needsSpec, reason, suggestedSlug?, engine }; " +
16
- "stderr = log. suggestedSlug (slug do worktree) só sai quando needsSpec.")
17
- .option("--project <path>", "raiz do projeto onde vive o .noclaf/plan.md", process.cwd())
18
- .option("--engine <engine>", `agente pensante (${ENGINES.join(" | ")})`, PLAN_ENGINE)
19
- .option("--quiet", "não streama o log do agente no stderr")
20
- .action(async (opts) => {
21
- const engine = parseEngine(opts.engine, PLAN_ENGINE);
22
- if (!engine) {
23
- emit({ ok: false, error: `engine inválido: ${opts.engine} — suportados: ${ENGINES.join(", ")}` });
24
- process.exitCode = 1;
25
- return;
26
- }
27
- if (!existsSync(opts.project)) {
28
- emit({ ok: false, error: `projeto não encontrado: ${opts.project}` });
29
- process.exitCode = 1;
30
- return;
31
- }
32
- const result = await runValidatePlan({
33
- project: opts.project,
34
- engine,
35
- echo: opts.quiet !== true,
36
- });
37
- emit(result);
38
- if (!result.ok)
39
- process.exitCode = 1;
40
- });
41
- }
42
- //# sourceMappingURL=validate-plan.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"validate-plan.js","sourceRoot":"","sources":["../../../src/cli/commands/validate-plan.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,eAAe,EAAE,MAAM,qCAAqC,CAAC;AACtE,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAE9E;;;GAGG;AAEH,SAAS,IAAI,CAAC,OAAgB;IAC5B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;AAChE,CAAC;AAED,MAAM,UAAU,2BAA2B,CAAC,OAAgB;IAC1D,OAAO;SACJ,OAAO,CAAC,eAAe,CAAC;SACxB,WAAW,CACV,kFAAkF;QAChF,kGAAkG;QAClG,yEAAyE,CAC5E;SACA,MAAM,CAAC,kBAAkB,EAAE,6CAA6C,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC;SACxF,MAAM,CAAC,mBAAmB,EAAE,oBAAoB,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,WAAW,CAAC;SACpF,MAAM,CAAC,SAAS,EAAE,uCAAuC,CAAC;SAC1D,MAAM,CACL,KAAK,EAAE,IAA2D,EAAE,EAAE;QACpE,MAAM,MAAM,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;QACrD,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,IAAI,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,oBAAoB,IAAI,CAAC,MAAM,kBAAkB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;YAClG,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;YACrB,OAAO;QACT,CAAC;QACD,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YAC9B,IAAI,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,2BAA2B,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;YACtE,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;YACrB,OAAO;QACT,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC;YACnC,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,MAAM;YACN,IAAI,EAAE,IAAI,CAAC,KAAK,KAAK,IAAI;SAC1B,CAAC,CAAC;QAEH,IAAI,CAAC,MAAM,CAAC,CAAC;QACb,IAAI,CAAC,MAAM,CAAC,EAAE;YAAE,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;IACvC,CAAC,CACF,CAAC;AACN,CAAC"}
@@ -1,57 +0,0 @@
1
- import { readFileSync } from "node:fs";
2
- import { dirname, resolve } from "node:path";
3
- import { findProjectConfigPath, readUserConfig } from "../../config.js";
4
- import { clampParallelism, DEFAULT_MAX_PARALLELISM, nextWave, parseTickets, waitingTickets, } from "../../lib/wave-scheduler.js";
5
- function emit(payload) {
6
- process.stdout.write(`${JSON.stringify(payload, null, 2)}\n`);
7
- }
8
- /** `--parallel` vence; senão o `max_parallelism` do `noclaf.user.json` da raiz; senão o default. */
9
- function resolveParallelism(project) {
10
- const configPath = findProjectConfigPath(project);
11
- const root = configPath ? dirname(configPath) : project;
12
- return clampParallelism(readUserConfig(root).max_parallelism ?? DEFAULT_MAX_PARALLELISM);
13
- }
14
- function runWave(ticketsPath, opts) {
15
- const path = resolve(ticketsPath);
16
- if (opts.parallel !== undefined && !Number.isFinite(Number(opts.parallel))) {
17
- return { ok: false, error: `--parallel inválido: ${opts.parallel} — informe um número` };
18
- }
19
- let markdown;
20
- try {
21
- markdown = readFileSync(path, "utf8");
22
- }
23
- catch (err) {
24
- return { ok: false, error: `doc de tickets ilegível: ${path} — ${err.message}` };
25
- }
26
- const all = parseTickets(markdown);
27
- if (all.length === 0) {
28
- return { ok: false, error: `nenhum ticket (\`## T-N · título\`) em ${path}` };
29
- }
30
- const maxParallelism = opts.parallel === undefined
31
- ? resolveParallelism(opts.project)
32
- : clampParallelism(Number(opts.parallel));
33
- const wave = nextWave(all, maxParallelism);
34
- return {
35
- ok: true,
36
- maxParallelism,
37
- wave: wave.map(({ id, title, files }) => ({ id, title, files })),
38
- waiting: waitingTickets(all, wave),
39
- done: all.filter((t) => t.done).map((t) => t.id),
40
- };
41
- }
42
- export function registerWaveCommand(program) {
43
- program
44
- .command("wave <tickets>")
45
- .description("Calcula a próxima wave do DAG de um doc de tickets (docs/tickets/<x>.md): o frontier " +
46
- "(bloqueadores todos done), limitado ao paralelismo e sem dois tickets tocando o mesmo " +
47
- "arquivo. stdout = JSON { ok, maxParallelism, wave, waiting, done }.")
48
- .option("--parallel <n>", "teto de executores concorrentes (default: noclaf.user.json ou 3)")
49
- .option("--project <path>", "raiz do projeto de onde ler o noclaf.user.json", process.cwd())
50
- .action((tickets, opts) => {
51
- const result = runWave(tickets, opts);
52
- emit(result);
53
- if (!result.ok)
54
- process.exitCode = 1;
55
- });
56
- }
57
- //# sourceMappingURL=wave.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"wave.js","sourceRoot":"","sources":["../../../src/cli/commands/wave.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,qBAAqB,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACxE,OAAO,EACL,gBAAgB,EAChB,uBAAuB,EACvB,QAAQ,EACR,YAAY,EACZ,cAAc,GAEf,MAAM,6BAA6B,CAAC;AAmBrC,SAAS,IAAI,CAAC,OAAgB;IAC5B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;AAChE,CAAC;AAED,oGAAoG;AACpG,SAAS,kBAAkB,CAAC,OAAe;IACzC,MAAM,UAAU,GAAG,qBAAqB,CAAC,OAAO,CAAC,CAAC;IAClD,MAAM,IAAI,GAAG,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;IACxD,OAAO,gBAAgB,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,eAAe,IAAI,uBAAuB,CAAC,CAAC;AAC3F,CAAC;AAED,SAAS,OAAO,CAAC,WAAmB,EAAE,IAAiB;IACrD,MAAM,IAAI,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IAClC,IAAI,IAAI,CAAC,QAAQ,KAAK,SAAS,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC;QAC3E,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,wBAAwB,IAAI,CAAC,QAAQ,sBAAsB,EAAE,CAAC;IAC3F,CAAC;IAED,IAAI,QAAgB,CAAC;IACrB,IAAI,CAAC;QACH,QAAQ,GAAG,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACxC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,4BAA4B,IAAI,MAAO,GAAa,CAAC,OAAO,EAAE,EAAE,CAAC;IAC9F,CAAC;IAED,MAAM,GAAG,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC;IACnC,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACrB,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,0CAA0C,IAAI,EAAE,EAAE,CAAC;IAChF,CAAC;IAED,MAAM,cAAc,GAClB,IAAI,CAAC,QAAQ,KAAK,SAAS;QACzB,CAAC,CAAC,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC;QAClC,CAAC,CAAC,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC9C,MAAM,IAAI,GAAG,QAAQ,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;IAC3C,OAAO;QACL,EAAE,EAAE,IAAI;QACR,cAAc;QACd,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;QAChE,OAAO,EAAE,cAAc,CAAC,GAAG,EAAE,IAAI,CAAC;QAClC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACjD,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,OAAgB;IAClD,OAAO;SACJ,OAAO,CAAC,gBAAgB,CAAC;SACzB,WAAW,CACV,uFAAuF;QACrF,wFAAwF;QACxF,qEAAqE,CACxE;SACA,MAAM,CAAC,gBAAgB,EAAE,kEAAkE,CAAC;SAC5F,MAAM,CAAC,kBAAkB,EAAE,gDAAgD,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC;SAC3F,MAAM,CAAC,CAAC,OAAe,EAAE,IAAiB,EAAE,EAAE;QAC7C,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QACtC,IAAI,CAAC,MAAM,CAAC,CAAC;QACb,IAAI,CAAC,MAAM,CAAC,EAAE;YAAE,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;IACvC,CAAC,CAAC,CAAC;AACP,CAAC"}
@@ -1,6 +0,0 @@
1
- {
2
- "login": {
3
- "patPrompt": "Cole o seu PAT:",
4
- "patInvalid": "Token inválido. Formato esperado: noc_ + 64 caracteres hexadecimais."
5
- }
6
- }
@@ -1,6 +0,0 @@
1
- {
2
- "installDep": "Instalar {title}?",
3
- "installClient": "Instalar {label} agora?",
4
- "coworkManual": "Instalar manualmente (gera o .mcpb + passos)?",
5
- "disableCoAuthored": "Desligar isso globalmente? (includeCoAuthoredBy=false)"
6
- }
@@ -1,20 +0,0 @@
1
- {
2
- "overwrite": "Já existe um noclaf.json aqui. Sobrescrever?",
3
- "patPrompt": "Cole o seu PAT:",
4
- "patInvalid": "Token inválido. Formato esperado: noc_ + 64 caracteres hexadecimais.",
5
- "pickProject": "Escolha o projeto:",
6
- "manualProjectChoice": "(digitar UUID manualmente)",
7
- "manualProjectPrompt": "Cole o UUID do projeto:",
8
- "manualProjectInvalid": "UUID inválido. Formato: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
9
- "linkRepo": "Vincular a um repositório?",
10
- "noRepoChoice": "(nenhum — não vincular a repositório específico)",
11
- "analyzePrompt": "Analisar o repositório pra pré-preencher o harness (specs, rules)?",
12
- "clientsPrompt": "Configurar clientes MCP? (espaço pra marcar, enter pra confirmar)",
13
- "clientChoices": {
14
- "claudeGlobal": "Claude Code — pra mim, todos os projetos (~/.claude/settings.json)",
15
- "codexGlobal": "Codex CLI — pra mim, todos os projetos (~/.codex/config.toml)",
16
- "cowork": "Claude Desktop / Cowork — ativa o conector no app",
17
- "claudeRepo": "Claude Code — só este repo, vai pro git (.mcp.json)",
18
- "vscodeRepo": "VS Code Copilot — só este repo, vai pro git (.vscode/mcp.json)"
19
- }
20
- }
@@ -1,3 +0,0 @@
1
- {
2
- "update": { "confirm": "Atualizar agora?" }
3
- }
package/dist/cli/copy.js DELETED
@@ -1,23 +0,0 @@
1
- import { readFileSync } from "node:fs";
2
- import { fileURLToPath } from "node:url";
3
- import { dirname, join } from "node:path";
4
- /**
5
- * Copy (textos de prompt em pt-BR) mora em JSON sob `copy/`, separado da lógica.
6
- * Lido em runtime relativo a este módulo — mesma convenção de `version.ts`/`skills.ts`
7
- * (compila pra `dist/cli/copy.js`; os JSON são copiados pra `dist/cli/copy/` no build).
8
- * ponytail: sem validação em runtime — os JSON são versionados e publicados junto
9
- * ao pacote; a tipagem via interface + cast é o contrato.
10
- */
11
- function loadCopy(name) {
12
- const here = dirname(fileURLToPath(import.meta.url));
13
- return JSON.parse(readFileSync(join(here, "copy", `${name}.json`), "utf-8"));
14
- }
15
- export const authCopy = loadCopy("auth");
16
- export const initCopy = loadCopy("init");
17
- export const syncCopy = loadCopy("sync");
18
- export const flowsCopy = loadCopy("flows");
19
- /** Interpola `{chave}` num template de copy. */
20
- export function fmt(template, vars) {
21
- return template.replace(/\{(\w+)\}/g, (_, k) => vars[k] ?? `{${k}}`);
22
- }
23
- //# sourceMappingURL=copy.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"copy.js","sourceRoot":"","sources":["../../src/cli/copy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAE1C;;;;;;GAMG;AACH,SAAS,QAAQ,CAAI,IAAY;IAC/B,MAAM,IAAI,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IACrD,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,OAAO,CAAC,EAAE,OAAO,CAAC,CAAM,CAAC;AACpF,CAAC;AAmCD,MAAM,CAAC,MAAM,QAAQ,GAAG,QAAQ,CAAW,MAAM,CAAC,CAAC;AACnD,MAAM,CAAC,MAAM,QAAQ,GAAG,QAAQ,CAAW,MAAM,CAAC,CAAC;AACnD,MAAM,CAAC,MAAM,QAAQ,GAAG,QAAQ,CAAW,MAAM,CAAC,CAAC;AACnD,MAAM,CAAC,MAAM,SAAS,GAAG,QAAQ,CAAY,OAAO,CAAC,CAAC;AAEtD,gDAAgD;AAChD,MAAM,UAAU,GAAG,CAAC,QAAgB,EAAE,IAA4B;IAChE,OAAO,QAAQ,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC;AACvE,CAAC"}