@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,69 +0,0 @@
1
- import { text, password as clackPassword, confirm as clackConfirm, select as clackSelect, multiselect, isCancel, cancel, } from '@clack/prompts';
2
- /**
3
- * Wrapper drop-in do `@clack/prompts` com a MESMA assinatura que o CLI já usava
4
- * do `@inquirer/prompts` — então trocar o cliente de prompts é só mudar o import.
5
- *
6
- * Extras que o clack traz de graça: gutter `│`, símbolos `◇/◆/✓`, e cancelamento
7
- * (Ctrl-C) tratado de forma central por `unwrap()` (encerra limpo em vez de stack).
8
- */
9
- /** Encerra limpo se o usuário cancelar (Ctrl-C) qualquer prompt. */
10
- function unwrap(value) {
11
- if (isCancel(value)) {
12
- cancel('Operação cancelada.');
13
- process.exit(130);
14
- }
15
- return value;
16
- }
17
- /**
18
- * Converte o `validate` do inquirer (`(v: string) => true | string`) pro do clack
19
- * (`Validate<string>` = `(v: string | undefined) => string | undefined`).
20
- */
21
- function adaptValidate(validate) {
22
- if (!validate)
23
- return undefined;
24
- return (value) => {
25
- const result = validate(value ?? '');
26
- return result === true ? undefined : result || undefined;
27
- };
28
- }
29
- export async function password(opts) {
30
- return unwrap(await clackPassword({
31
- message: opts.message,
32
- mask: opts.mask,
33
- validate: adaptValidate(opts.validate),
34
- }));
35
- }
36
- export async function input(opts) {
37
- return unwrap(await text({
38
- message: opts.message,
39
- initialValue: opts.default,
40
- validate: adaptValidate(opts.validate),
41
- }));
42
- }
43
- export async function confirm(opts) {
44
- return unwrap(await clackConfirm({ message: opts.message, initialValue: opts.default }));
45
- }
46
- export async function select(opts) {
47
- const options = opts.choices.map((ch) => ({
48
- value: ch.value,
49
- label: ch.name,
50
- hint: ch.description,
51
- }));
52
- return unwrap(await clackSelect({ message: opts.message, options: options, initialValue: opts.default }));
53
- }
54
- /** Sentinela da opção "Todos" — `Symbol` não colide com nenhum valor real de `T`. */
55
- const SELECT_ALL = Symbol("select-all");
56
- export async function checkbox(opts) {
57
- const withAll = Boolean(opts.all) && opts.choices.length > 1;
58
- const allLabel = typeof opts.all === "string" ? opts.all : "Todos";
59
- const options = [
60
- ...(withAll ? [{ value: SELECT_ALL, label: allLabel, hint: "marca tudo" }] : []),
61
- ...opts.choices.map((ch) => ({ value: ch.value, label: ch.name, hint: ch.description })),
62
- ];
63
- const picked = unwrap(await multiselect({ message: opts.message, options: options, required: false }));
64
- if (withAll && picked.includes(SELECT_ALL)) {
65
- return opts.choices.map((ch) => ch.value);
66
- }
67
- return picked.filter((v) => v !== SELECT_ALL);
68
- }
69
- //# sourceMappingURL=prompts.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"prompts.js","sourceRoot":"","sources":["../../src/lib/prompts.ts"],"names":[],"mappings":"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"}
@@ -1,220 +0,0 @@
1
- import { existsSync, readFileSync, writeFileSync, mkdirSync, rmSync, lstatSync, readlinkSync } from "node:fs";
2
- import { createHash } from "node:crypto";
3
- import { homedir } from "node:os";
4
- import { dirname, join, resolve } from "node:path";
5
- import { VERSION } from "../version.js";
6
- import { brand } from "../brand.js";
7
- /**
8
- * Motor do provisionamento: hash/manifesto (`.noclaf-provision.json`), escrita
9
- * idempotente e poda do que o noclaf gravou. `provision.ts` monta a lista e chama
10
- * `applyProvision`; `uninstallProvision` desfaz pelo mesmo manifesto.
11
- */
12
- export const MANIFEST_NAME = ".noclaf-provision.json";
13
- export function defaultTargetDir() {
14
- return join(homedir(), ".claude");
15
- }
16
- function sha256(buf) {
17
- return createHash("sha256").update(buf).digest("hex");
18
- }
19
- function readManifest(path) {
20
- if (!existsSync(path))
21
- return null;
22
- try {
23
- const parsed = JSON.parse(readFileSync(path, "utf-8"));
24
- if (parsed && typeof parsed === "object" && parsed.files)
25
- return parsed;
26
- }
27
- catch {
28
- // manifesto corrompido → trata como ausente e reconstrói
29
- }
30
- return null;
31
- }
32
- /**
33
- * Se um componente de `dir` é symlink com alvo inexistente (dotfiles gerenciando
34
- * `~/.claude`), materializa o alvo em vez de deixar o `mkdir -p` estourar ENOENT.
35
- * Retorna `true` se materializou algo. Escrever depois grava através do link.
36
- */
37
- function materializeDanglingLink(dir) {
38
- let cursor = dir;
39
- for (;;) {
40
- let info;
41
- try {
42
- info = lstatSync(cursor);
43
- }
44
- catch {
45
- // cursor não existe (parent pendurado) → sobe um nível.
46
- const parent = dirname(cursor);
47
- if (parent === cursor)
48
- return false;
49
- cursor = parent;
50
- continue;
51
- }
52
- if (info.isSymbolicLink()) {
53
- const target = resolve(dirname(cursor), readlinkSync(cursor));
54
- if (existsSync(target))
55
- return false; // link ok — o ENOENT veio de outro lugar
56
- mkdirSync(target, { recursive: true });
57
- return true;
58
- }
59
- return false; // cursor existe e é real → não há link pendurado acima
60
- }
61
- }
62
- /** `mkdir -p` tolerante a symlinks pendurados de dotfiles (ver acima). */
63
- export function ensureDir(dir) {
64
- for (let attempt = 0; attempt < 40; attempt++) {
65
- try {
66
- mkdirSync(dir, { recursive: true });
67
- return;
68
- }
69
- catch (err) {
70
- if (err.code !== "ENOENT")
71
- throw err;
72
- if (!materializeDanglingLink(dir))
73
- throw err;
74
- }
75
- }
76
- mkdirSync(dir, { recursive: true });
77
- }
78
- function writeFile(targetAbs, content) {
79
- ensureDir(dirname(targetAbs));
80
- writeFileSync(targetAbs, content);
81
- }
82
- /**
83
- * Núcleo do provisionamento: aplica `docs` no destino, idempotente e não-destrutivo
84
- * via manifesto. Retorna o plano por arquivo.
85
- */
86
- export function applyProvision(docs, options = {}) {
87
- const dryRun = options.dryRun ?? false;
88
- const force = options.force ?? false;
89
- const prune = options.prune ?? true;
90
- const targetDir = options.targetDir ?? defaultTargetDir();
91
- const manifestPath = join(targetDir, MANIFEST_NAME);
92
- const oldFiles = readManifest(manifestPath)?.files ?? {};
93
- const files = docs.map((d) => ({
94
- relPath: d.relPath,
95
- content: d.content,
96
- hash: sha256(d.content),
97
- }));
98
- const incomingSet = new Set(files.map((f) => f.relPath));
99
- const results = [];
100
- const newFiles = {};
101
- for (const f of files) {
102
- const targetAbs = join(targetDir, f.relPath);
103
- // Um arquivo problemático (ex.: symlink de dotfiles quebrado) vira um resultado
104
- // `write-error` e a sincronização segue — nunca aborta o resto por causa de um.
105
- try {
106
- if (!existsSync(targetAbs)) {
107
- if (!dryRun)
108
- writeFile(targetAbs, f.content);
109
- results.push({ relPath: f.relPath, action: "create" });
110
- newFiles[f.relPath] = f.hash;
111
- continue;
112
- }
113
- const existingHash = sha256(readFileSync(targetAbs));
114
- if (existingHash === f.hash) {
115
- results.push({ relPath: f.relPath, action: "unchanged" });
116
- newFiles[f.relPath] = f.hash;
117
- continue;
118
- }
119
- // Divergente. Só atualizamos se o arquivo era nosso e o worker não mexeu,
120
- // ou se ele pediu --force.
121
- const wasOursUntouched = oldFiles[f.relPath] === existingHash;
122
- if (wasOursUntouched || force) {
123
- if (!dryRun)
124
- writeFile(targetAbs, f.content);
125
- results.push({
126
- relPath: f.relPath,
127
- action: "update",
128
- detail: wasOursUntouched
129
- ? undefined
130
- : "forçado sobre arquivo divergente",
131
- });
132
- newFiles[f.relPath] = f.hash;
133
- }
134
- else {
135
- results.push({
136
- relPath: f.relPath,
137
- action: "skip-conflict",
138
- detail: oldFiles[f.relPath] !== undefined
139
- ? "editado localmente"
140
- : "arquivo de terceiros",
141
- });
142
- // Não reivindica propriedade: fica de fora do novo manifesto.
143
- }
144
- }
145
- catch (err) {
146
- results.push({
147
- relPath: f.relPath,
148
- action: "write-error",
149
- detail: err.message,
150
- });
151
- }
152
- }
153
- // Prune: o que era nosso mas não veio nesta fonte.
154
- if (prune) {
155
- for (const [relPath, oldHash] of Object.entries(oldFiles)) {
156
- if (incomingSet.has(relPath))
157
- continue;
158
- // Ainda existe no bundle (só foi filtrado pela seleção neste run) → NÃO poda;
159
- // mantém no manifesto pra não perder a propriedade em runs futuros.
160
- if (options.keep?.has(relPath)) {
161
- newFiles[relPath] = oldHash;
162
- continue;
163
- }
164
- const targetAbs = join(targetDir, relPath);
165
- if (!existsSync(targetAbs))
166
- continue;
167
- const existingHash = sha256(readFileSync(targetAbs));
168
- if (existingHash === oldHash) {
169
- if (!dryRun)
170
- rmSync(targetAbs);
171
- results.push({ relPath, action: "prune" });
172
- }
173
- else {
174
- results.push({
175
- relPath,
176
- action: "prune-kept",
177
- detail: "modificado localmente — mantido",
178
- });
179
- }
180
- }
181
- }
182
- if (!dryRun) {
183
- const manifest = {
184
- version: VERSION,
185
- generator: brand.packageName,
186
- files: newFiles,
187
- };
188
- mkdirSync(targetDir, { recursive: true });
189
- writeFileSync(manifestPath, JSON.stringify(manifest, null, 2) + "\n", "utf-8");
190
- }
191
- return { targetDir, version: VERSION, dryRun, files: results };
192
- }
193
- /** Remove só o que o noclaf instalou (conforme o manifesto), preservando edições locais. */
194
- export function uninstallProvision(options = {}) {
195
- const dryRun = options.dryRun ?? false;
196
- const targetDir = options.targetDir ?? defaultTargetDir();
197
- const manifestPath = join(targetDir, MANIFEST_NAME);
198
- const manifest = readManifest(manifestPath);
199
- const removed = [];
200
- const kept = [];
201
- if (manifest) {
202
- for (const [relPath, hash] of Object.entries(manifest.files)) {
203
- const targetAbs = join(targetDir, relPath);
204
- if (!existsSync(targetAbs))
205
- continue;
206
- if (sha256(readFileSync(targetAbs)) === hash) {
207
- if (!dryRun)
208
- rmSync(targetAbs);
209
- removed.push(relPath);
210
- }
211
- else {
212
- kept.push(relPath);
213
- }
214
- }
215
- if (!dryRun && existsSync(manifestPath))
216
- rmSync(manifestPath);
217
- }
218
- return { targetDir, removed, kept, dryRun };
219
- }
220
- //# sourceMappingURL=provision-apply.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"provision-apply.js","sourceRoot":"","sources":["../../src/lib/provision-apply.ts"],"names":[],"mappings":"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"}
@@ -1,47 +0,0 @@
1
- import { existsSync, readFileSync, readdirSync } from "node:fs";
2
- import { join, relative, sep } from "node:path";
3
- /**
4
- * Coleta os arquivos sincronizáveis do pacote `@noclaf/skills` (commands/skills/
5
- * agents) como uma lista em memória — a fonte que `provision()` filtra/achata
6
- * (via `sections.ts`) e passa pro motor de aplicação (`provision-apply.ts`).
7
- */
8
- /** Subpastas do pacote `@noclaf/skills` espelhadas em `~/.claude`. */
9
- const SYNCED_SUBDIRS = ["commands", "skills", "agents"];
10
- /** Basenames que nunca são copiados pro destino (READMEs são só do repo). */
11
- const IGNORED_BASENAMES = new Set([".gitkeep", ".DS_Store", "README.md"]);
12
- /** Lista arquivos sob `dir` recursivamente, paths relativos a `dir` em estilo POSIX. */
13
- function listFilesRecursive(dir) {
14
- const out = [];
15
- const walk = (abs) => {
16
- for (const entry of readdirSync(abs, { withFileTypes: true })) {
17
- if (entry.name === ".DS_Store")
18
- continue;
19
- const childAbs = join(abs, entry.name);
20
- if (entry.isDirectory())
21
- walk(childAbs);
22
- else if (entry.isFile())
23
- out.push(relative(dir, childAbs).split(sep).join("/"));
24
- }
25
- };
26
- walk(dir);
27
- return out;
28
- }
29
- /** Coleta os arquivos sincronizáveis do pacote (só as subpastas conhecidas). */
30
- export function collectSkillFiles(dir) {
31
- const files = [];
32
- for (const sub of SYNCED_SUBDIRS) {
33
- const subDir = join(dir, sub);
34
- if (!existsSync(subDir))
35
- continue;
36
- for (const rel of listFilesRecursive(subDir)) {
37
- const base = rel.split("/").pop() ?? rel;
38
- if (IGNORED_BASENAMES.has(base))
39
- continue;
40
- const abs = join(subDir, rel);
41
- const content = readFileSync(abs);
42
- files.push({ relPath: `${sub}/${rel}`, content });
43
- }
44
- }
45
- return files;
46
- }
47
- //# sourceMappingURL=provision-collect.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"provision-collect.js","sourceRoot":"","sources":["../../src/lib/provision-collect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAChE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAEhD;;;;GAIG;AAEH,sEAAsE;AACtE,MAAM,cAAc,GAAG,CAAC,UAAU,EAAE,QAAQ,EAAE,QAAQ,CAAU,CAAC;AAEjE,6EAA6E;AAC7E,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAAC,CAAC,UAAU,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC,CAAC;AAO1E,wFAAwF;AACxF,SAAS,kBAAkB,CAAC,GAAW;IACrC,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,MAAM,IAAI,GAAG,CAAC,GAAW,EAAQ,EAAE;QACjC,KAAK,MAAM,KAAK,IAAI,WAAW,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;YAC9D,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW;gBAAE,SAAS;YACzC,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;YACvC,IAAI,KAAK,CAAC,WAAW,EAAE;gBAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;iBACnC,IAAI,KAAK,CAAC,MAAM,EAAE;gBACrB,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QAC3D,CAAC;IACH,CAAC,CAAC;IACF,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,OAAO,GAAG,CAAC;AACb,CAAC;AAED,gFAAgF;AAChF,MAAM,UAAU,iBAAiB,CAAC,GAAW;IAC3C,MAAM,KAAK,GAAgB,EAAE,CAAC;IAC9B,KAAK,MAAM,GAAG,IAAI,cAAc,EAAE,CAAC;QACjC,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QAC9B,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;YAAE,SAAS;QAClC,KAAK,MAAM,GAAG,IAAI,kBAAkB,CAAC,MAAM,CAAC,EAAE,CAAC;YAC7C,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,GAAG,CAAC;YACzC,IAAI,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC;gBAAE,SAAS;YAC1C,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;YAC9B,MAAM,OAAO,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;YAClC,KAAK,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,GAAG,GAAG,IAAI,GAAG,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;QACpD,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
@@ -1,45 +0,0 @@
1
- import { existsSync } from "node:fs";
2
- import { brand } from "../brand.js";
3
- import { claudeTarget } from "./targets.js";
4
- import { filterDocsForSurface, skillsDir } from "./skills.js";
5
- import { filterForSelection, flattenSelection } from "./sections.js";
6
- import { collectSkillFiles } from "./provision-collect.js";
7
- import { applyProvision } from "./provision-apply.js";
8
- /**
9
- * Provisiona skills/commands/agents do noclaf (o MCP não grava em `~/.claude`; a CLI
10
- * `sync`/`init` chama `provision()`). Idempotente via manifesto. Coleta em
11
- * `provision-collect.ts`, motor em `provision-apply.ts` — ambos reexportados daqui.
12
- */
13
- /**
14
- * Copia/atualiza o conteúdo do pacote `@noclaf/skills` no destino.
15
- * (`noclaf sync` / `noclaf init`.)
16
- */
17
- export function provision(options = {}) {
18
- const target = options.target ?? claudeTarget;
19
- const dir = options.skillsDir ?? skillsDir();
20
- if (!existsSync(dir)) {
21
- throw new Error(`Pacote de skills não encontrado em ${dir}. Instale/publique ${brand.skillsPackage}.`);
22
- }
23
- const rawDocs = collectSkillFiles(dir).map((f) => ({
24
- relPath: f.relPath,
25
- content: f.content,
26
- }));
27
- // Todos os paths on-disk possíveis do bundle (sem o filtro de seleção). O prune só
28
- // remove o que NÃO está aqui — o que saiu do bundle de verdade —, nunca o que foi só
29
- // filtrado pela seleção deste run. Sem isso o auto-pull de um repo com seleção estreita
30
- // apagava `/implement` & cia. do `~/.claude` global.
31
- const keep = new Set(target
32
- .mapDocs(filterDocsForSurface(flattenSelection(rawDocs), target.surface))
33
- .map((d) => d.relPath));
34
- const scoped = filterForSelection(rawDocs, options.selection);
35
- const flat = flattenSelection(scoped);
36
- const visible = filterDocsForSurface(flat, target.surface);
37
- const docs = target.mapDocs(visible);
38
- return applyProvision(docs, {
39
- ...options,
40
- keep,
41
- targetDir: options.targetDir ?? target.targetDir(),
42
- });
43
- }
44
- export { MANIFEST_NAME, applyProvision, ensureDir, uninstallProvision, } from "./provision-apply.js";
45
- //# sourceMappingURL=provision.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"provision.js","sourceRoot":"","sources":["../../src/lib/provision.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,EAAE,YAAY,EAAwB,MAAM,cAAc,CAAC;AAClE,OAAO,EAAE,oBAAoB,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC9D,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAkB,MAAM,eAAe,CAAC;AACrF,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,cAAc,EAA+C,MAAM,sBAAsB,CAAC;AAEnG;;;;GAIG;AAEH;;;GAGG;AACH,MAAM,UAAU,SAAS,CACvB,UAAkF,EAAE;IAEpF,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,YAAY,CAAC;IAC9C,MAAM,GAAG,GAAG,OAAO,CAAC,SAAS,IAAI,SAAS,EAAE,CAAC;IAC7C,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACrB,MAAM,IAAI,KAAK,CACb,sCAAsC,GAAG,sBAAsB,KAAK,CAAC,aAAa,GAAG,CACtF,CAAC;IACJ,CAAC;IACD,MAAM,OAAO,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACjD,OAAO,EAAE,CAAC,CAAC,OAAO;QAClB,OAAO,EAAE,CAAC,CAAC,OAAO;KACnB,CAAC,CAAC,CAAC;IAEJ,mFAAmF;IACnF,qFAAqF;IACrF,wFAAwF;IACxF,qDAAqD;IACrD,MAAM,IAAI,GAAG,IAAI,GAAG,CAClB,MAAM;SACH,OAAO,CAAC,oBAAoB,CAAC,gBAAgB,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;SACxE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CACzB,CAAC;IAEF,MAAM,MAAM,GAAG,kBAAkB,CAAC,OAAO,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;IAC9D,MAAM,IAAI,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC;IACtC,MAAM,OAAO,GAAG,oBAAoB,CAAC,IAAI,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;IAC3D,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACrC,OAAO,cAAc,CAAC,IAAI,EAAE;QAC1B,GAAG,OAAO;QACV,IAAI;QACJ,SAAS,EAAE,OAAO,CAAC,SAAS,IAAI,MAAM,CAAC,SAAS,EAAE;KACnD,CAAC,CAAC;AACL,CAAC;AAED,OAAO,EACL,aAAa,EACb,cAAc,EACd,SAAS,EACT,kBAAkB,GAOnB,MAAM,sBAAsB,CAAC"}
@@ -1,10 +0,0 @@
1
- import { z } from 'zod';
2
- /** Status aceitos no update; `delivered` só via finalize. */
3
- export const UPDATABLE_RELEASE_STATUS = z.enum(['planning', 'in_progress', 'cancelled']);
4
- /** Garante que a release é do projeto; erro acionável senão. */
5
- export async function assertReleaseInProject(gw, projectId, releaseId) {
6
- if (!(await gw.findRelease(projectId, releaseId))) {
7
- throw new Error('Release não encontrada neste projeto. Use list_releases pra ver os ids válidos.');
8
- }
9
- }
10
- //# sourceMappingURL=release-logic.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"release-logic.js","sourceRoot":"","sources":["../../src/lib/release-logic.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,6DAA6D;AAC7D,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,aAAa,EAAE,WAAW,CAAC,CAAC,CAAC;AAEzF,gEAAgE;AAChE,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAAC,EAAuC,EAAE,SAAiB,EAAE,SAAiB;IACxH,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,WAAW,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,EAAE,CAAC;QAClD,MAAM,IAAI,KAAK,CAAC,iFAAiF,CAAC,CAAC;IACrG,CAAC;AACH,CAAC"}
@@ -1,176 +0,0 @@
1
- import { spawnSync } from 'node:child_process';
2
- import { existsSync, readFileSync, mkdirSync, writeFileSync } from 'node:fs';
3
- import { dirname, join } from 'node:path';
4
- import { ensureGitignored, GITIGNORE_GENERATED_SUFFIX } from '../config.js';
5
- /**
6
- * Índice estrutural do repo — irmão do `detect-patterns`, mas **sem IA**: um artefato
7
- * gerado deterministicamente (mesma entrada → mesma saída) que os agentes **grepam** pra
8
- * achar onde as coisas vivem, em vez de abrir arquivos inteiros. Regerado no `sync`.
9
- */
10
- export const MAP_REL = 'docs/_map.md';
11
- /** Símbolos "públicos" por stack. Regex leve — o objetivo é localizar, não parsear. */
12
- const EXTRACTORS = {
13
- ts: [
14
- /^export\s+(?:default\s+)?(?:async\s+)?(?:abstract\s+)?(?:function|class|const|let|type|interface|enum)\s+([A-Za-z_$][\w$]*)/gm,
15
- ],
16
- py: [/^(?:def|class)\s+([A-Za-z_]\w*)/gm],
17
- swift: [
18
- /^(?:public|open)\s+(?:final\s+)?(?:func|class|struct|enum|protocol|actor|var|let)\s+([A-Za-z_]\w*)/gm,
19
- ],
20
- go: [/^func\s+(?:\([^)]*\)\s*)?([A-Z]\w*)/gm, /^type\s+([A-Z]\w*)/gm],
21
- rs: [/^pub\s+(?:async\s+)?(?:fn|struct|enum|trait|const|type|mod)\s+([A-Za-z_]\w*)/gm],
22
- };
23
- const STACK_BY_EXT = {
24
- ts: 'ts',
25
- tsx: 'ts',
26
- js: 'ts',
27
- jsx: 'ts',
28
- mjs: 'ts',
29
- py: 'py',
30
- swift: 'swift',
31
- go: 'go',
32
- rs: 'rs',
33
- };
34
- /** Teto de símbolos por arquivo: o map é índice, não dump — estourar reintroduz o custo. */
35
- const MAX_SYMBOLS = 12;
36
- const COMMENT = /^\s*(?:\/\/+|\/\*+|\*+\/?|#+|"""|''')\s*/;
37
- const SHEBANG = /^#!/;
38
- // Banner de licença/pragma/TODO não descreve o arquivo — propósito vazio é melhor que errado.
39
- const NON_PROSE = /^(?:copyright\b|\(c\)|licen[sc]|spdx-|all rights reserved|@ts-|eslint-|prettier-|todo:|fixme:|noqa|-\*-)/i;
40
- const CLOSER = /(?:\*+\/|"""|''')\s*$/;
41
- // Só declaração em coluna 0 encerra a busca — o corpo indentado de um `import {` multilinha não.
42
- const DECL = /^(?:export|declare|def|class|func|fn|pub|type|interface|enum|const|let|var|function|struct|impl|actor|protocol|public|open|extension|private|internal|final|async|@)\b/;
43
- function isComment(line) {
44
- return !SHEBANG.test(line) && COMMENT.test(line);
45
- }
46
- function stackOf(path) {
47
- const ext = path.split('.').pop() ?? '';
48
- return path.includes('.test.') || path.includes('.spec.') ? null : (STACK_BY_EXT[ext] ?? null);
49
- }
50
- /**
51
- * Propósito = o doc de cabeçalho do arquivo, juntado até a 1ª frase. Banner de licença é
52
- * pulado; bloco colado numa declaração documenta o símbolo, não o arquivo — aí devolve vazio.
53
- */
54
- function purposeOf(source) {
55
- const lines = source.split('\n', 40);
56
- for (let i = 0; i < lines.length; i++) {
57
- if (DECL.test(lines[i]))
58
- return '';
59
- if (!isComment(lines[i]))
60
- continue;
61
- const prose = [];
62
- for (; i < lines.length && isComment(lines[i]); i++) {
63
- const part = lines[i].replace(COMMENT, '').replace(CLOSER, '').trim();
64
- if (part)
65
- prose.push(part);
66
- }
67
- const text = prose.join(' ');
68
- // Licença/pragma em bloco próprio: pula e segue procurando o doc de verdade.
69
- if (NON_PROSE.test(text)) {
70
- i--;
71
- continue;
72
- }
73
- // Bloco colado numa declaração documenta **aquele símbolo**, não o arquivo.
74
- if ((lines[i] ?? '').trim())
75
- return '';
76
- const end = text.indexOf('. ');
77
- const sentence = end < 0 ? text : text.slice(0, end + 1);
78
- return sentence.split(/\s+/).length >= 3 ? sentence : '';
79
- }
80
- return '';
81
- }
82
- function symbolsOf(source, stack) {
83
- const found = [];
84
- for (const re of EXTRACTORS[stack] ?? []) {
85
- for (const match of source.matchAll(re)) {
86
- const name = match[1];
87
- if (name && !found.includes(name))
88
- found.push(name);
89
- }
90
- }
91
- return found;
92
- }
93
- /** `git ls-files` é a lista de fontes: já respeita o .gitignore e sai ordenada. */
94
- function trackedFiles(cwd) {
95
- const r = spawnSync('git', ['ls-files', '-z'], { cwd, encoding: 'utf8' });
96
- if (r.error || r.status !== 0)
97
- return null;
98
- return (r.stdout ?? '').split('\0').filter(Boolean).sort();
99
- }
100
- /** `null` = o repo não pôde ser listado (sem git) — diferente de "listou e não achou fonte". */
101
- export function collectEntries(cwd) {
102
- const tracked = trackedFiles(cwd);
103
- if (!tracked)
104
- return null;
105
- const entries = [];
106
- for (const path of tracked) {
107
- const stack = stackOf(path);
108
- if (!stack)
109
- continue;
110
- let source;
111
- try {
112
- source = readFileSync(join(cwd, path), 'utf8');
113
- }
114
- catch {
115
- continue;
116
- }
117
- const symbols = symbolsOf(source, stack);
118
- const purpose = purposeOf(source);
119
- if (symbols.length || purpose)
120
- entries.push({ path, purpose, symbols });
121
- }
122
- return entries;
123
- }
124
- function renderLine(entry) {
125
- const name = entry.path.split('/').pop() ?? entry.path;
126
- const parts = [`- \`${name}\``];
127
- if (entry.purpose)
128
- parts.push(`— ${entry.purpose}`);
129
- const shown = entry.symbols.slice(0, MAX_SYMBOLS);
130
- // Corte explícito: num índice grepado, silêncio no fim da linha lê como "não existe".
131
- const rest = entry.symbols.length - shown.length;
132
- const more = rest > 0 ? ` +${rest}` : '';
133
- if (shown.length)
134
- parts.push(`· ${shown.map((s) => `\`${s}\``).join(', ')}${more}`);
135
- return parts.join(' ');
136
- }
137
- export function renderMap(entries) {
138
- const byDir = new Map();
139
- for (const entry of entries) {
140
- const dir = dirname(entry.path);
141
- byDir.set(dir, [...(byDir.get(dir) ?? []), entry]);
142
- }
143
- const lines = [
144
- `<!-- Gerado por \`noclaf map\`/\`sync\`. Determinístico e descartável: NÃO edite à mão. -->`,
145
- '# Repo map',
146
- '',
147
- 'Índice `arquivo → símbolos exportados`. **Grepe aqui** pra localizar antes de abrir arquivo.',
148
- ];
149
- for (const [dir, group] of byDir) {
150
- lines.push('', `## ${dir}`, ...group.map(renderLine));
151
- }
152
- return `${lines.join('\n')}\n`;
153
- }
154
- /** Gera/regenera o `docs/_map.md`. Best-effort: nunca lança, nunca bloqueia o loop. */
155
- export function generateRepoMap(cwd) {
156
- try {
157
- const entries = collectEntries(cwd);
158
- if (!entries)
159
- return { action: 'empty', entries: 0 };
160
- const target = join(cwd, MAP_REL);
161
- const content = renderMap(entries);
162
- const existed = existsSync(target);
163
- const same = existed && readFileSync(target, 'utf8') === content;
164
- if (!same) {
165
- mkdirSync(dirname(target), { recursive: true });
166
- writeFileSync(target, content, 'utf8');
167
- }
168
- // Artefato gerado: se versionado, apodreceria entre um `sync` e o próximo.
169
- ensureGitignored(MAP_REL, cwd, GITIGNORE_GENERATED_SUFFIX);
170
- return { action: same ? 'unchanged' : existed ? 'updated' : 'created', entries: entries.length };
171
- }
172
- catch {
173
- return { action: 'empty', entries: 0 };
174
- }
175
- }
176
- //# sourceMappingURL=repo-map.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"repo-map.js","sourceRoot":"","sources":["../../src/lib/repo-map.ts"],"names":[],"mappings":"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"}
@@ -1,32 +0,0 @@
1
- import { UUID_REGEX } from '../config.js';
2
- import { errorResult } from './tool-result.js';
3
- import { loadActiveProjectId } from './active-project.js';
4
- import { brand } from '../brand.js';
5
- /**
6
- * Resolve o projeto efetivo de uma chamada, na ordem:
7
- * 1. project_id explícito passado na tool (override por chamada)
8
- * 2. projeto ativo da sessão (`nos_set_project`, só em memória)
9
- * 3. default do ambiente/arquivo (NOCLAF_PROJECT_ID / noclaf.json)
10
- *
11
- * O repository_id default só é aplicado quando o projeto resolvido é o mesmo do
12
- * default — evita herdar um repositório de outro projeto.
13
- */
14
- export function resolveProjectConfig(ctx, explicitProjectId) {
15
- const projectId = explicitProjectId ?? loadActiveProjectId() ?? ctx.config?.project_id;
16
- if (!projectId) {
17
- return errorResult(`Nenhum projeto selecionado. Use \`${brand.toolPrefix}list_projects\` para ver os seus e ` +
18
- `\`${brand.toolPrefix}set_project\` para escolher um (ou passe \`project_id\` direto na chamada).`);
19
- }
20
- if (!UUID_REGEX.test(projectId)) {
21
- return errorResult(`project_id inválido (UUID esperado): ${projectId}`);
22
- }
23
- const config = { project_id: projectId };
24
- if (projectId === ctx.config?.project_id && ctx.config?.repository_id) {
25
- config.repository_id = ctx.config.repository_id;
26
- }
27
- return config;
28
- }
29
- export function isErrorResult(value) {
30
- return typeof value === 'object' && value !== null && 'isError' in value;
31
- }
32
- //# sourceMappingURL=require-config.js.map