@noclaf/cli 0.4.14 → 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 (103) 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/flows/clients.js +27 -17
  20. package/dist/cli/flows/clients.js.map +1 -1
  21. package/dist/cli.js +5 -5
  22. package/dist/cli.js.map +1 -1
  23. package/dist/config.js +19 -11
  24. package/dist/config.js.map +1 -1
  25. package/dist/constants.js +7 -8
  26. package/dist/constants.js.map +1 -1
  27. package/dist/lib/autopull.js +13 -0
  28. package/dist/lib/autopull.js.map +1 -0
  29. package/dist/lib/client-configs.js +37 -25
  30. package/dist/lib/client-configs.js.map +1 -1
  31. package/dist/lib/cowork-extension.js +42 -30
  32. package/dist/lib/cowork-extension.js.map +1 -1
  33. package/dist/lib/dependencies.js +83 -247
  34. package/dist/lib/dependencies.js.map +1 -1
  35. package/dist/lib/dependency-install.js +163 -0
  36. package/dist/lib/dependency-install.js.map +1 -0
  37. package/dist/lib/exec-delegate.js +2 -2
  38. package/dist/lib/exec-delegate.js.map +1 -1
  39. package/dist/lib/exec-engines.js +7 -6
  40. package/dist/lib/exec-engines.js.map +1 -1
  41. package/dist/lib/provision-apply.js +214 -0
  42. package/dist/lib/provision-apply.js.map +1 -0
  43. package/dist/lib/provision-collect.js +47 -0
  44. package/dist/lib/provision-collect.js.map +1 -0
  45. package/dist/lib/provision.js +8 -253
  46. package/dist/lib/provision.js.map +1 -1
  47. package/dist/lib/require-config.js +3 -2
  48. package/dist/lib/require-config.js.map +1 -1
  49. package/dist/lib/skills-cache.js +9 -8
  50. package/dist/lib/skills-cache.js.map +1 -1
  51. package/dist/lib/skills.js +30 -16
  52. package/dist/lib/skills.js.map +1 -1
  53. package/dist/lib/telemetry.js +2 -1
  54. package/dist/lib/telemetry.js.map +1 -1
  55. package/dist/lib/version-check.js +3 -2
  56. package/dist/lib/version-check.js.map +1 -1
  57. package/dist/mcp-server.js +107 -79
  58. package/dist/mcp-server.js.map +1 -1
  59. package/dist/tools/comment-task.js +32 -32
  60. package/dist/tools/comment-task.js.map +1 -1
  61. package/dist/tools/create-task.js +92 -101
  62. package/dist/tools/create-task.js.map +1 -1
  63. package/dist/tools/delegate-exec.js +4 -3
  64. package/dist/tools/delegate-exec.js.map +1 -1
  65. package/dist/tools/end-allocation.js +19 -32
  66. package/dist/tools/end-allocation.js.map +1 -1
  67. package/dist/tools/end-task-allocation.js +17 -26
  68. package/dist/tools/end-task-allocation.js.map +1 -1
  69. package/dist/tools/exec-status.js +4 -3
  70. package/dist/tools/exec-status.js.map +1 -1
  71. package/dist/tools/get-active-allocation.js +53 -60
  72. package/dist/tools/get-active-allocation.js.map +1 -1
  73. package/dist/tools/get-context.js +4 -3
  74. package/dist/tools/get-context.js.map +1 -1
  75. package/dist/tools/get-task.js +144 -142
  76. package/dist/tools/get-task.js.map +1 -1
  77. package/dist/tools/list-my-allocations.js +35 -43
  78. package/dist/tools/list-my-allocations.js.map +1 -1
  79. package/dist/tools/list-projects.js +3 -2
  80. package/dist/tools/list-projects.js.map +1 -1
  81. package/dist/tools/list-tasks.js +117 -124
  82. package/dist/tools/list-tasks.js.map +1 -1
  83. package/dist/tools/move-task.js +37 -39
  84. package/dist/tools/move-task.js.map +1 -1
  85. package/dist/tools/plan.js +3 -2
  86. package/dist/tools/plan.js.map +1 -1
  87. package/dist/tools/record-delivery.js +4 -3
  88. package/dist/tools/record-delivery.js.map +1 -1
  89. package/dist/tools/set-project.js +9 -4
  90. package/dist/tools/set-project.js.map +1 -1
  91. package/dist/tools/start-allocation.js +16 -26
  92. package/dist/tools/start-allocation.js.map +1 -1
  93. package/dist/tools/start-task-allocation.js +72 -92
  94. package/dist/tools/start-task-allocation.js.map +1 -1
  95. package/dist/tools/update-task.js +149 -168
  96. package/dist/tools/update-task.js.map +1 -1
  97. package/dist/tools/validate-plan.js +3 -2
  98. package/dist/tools/validate-plan.js.map +1 -1
  99. package/package.json +1 -1
  100. package/dist/cli/commands/init.js +0 -336
  101. package/dist/cli/commands/init.js.map +0 -1
  102. package/dist/logo.js +0 -17
  103. package/dist/logo.js.map +0 -1
@@ -0,0 +1,105 @@
1
+ import { select, input } from "../../../lib/prompts.js";
2
+ import { sectionTitle } from "../../../lib/colors.js";
3
+ import { startSpinner } from "../../../spinner.js";
4
+ import { UUID_REGEX } from "../../../config.js";
5
+ import { listMemberProjects } from "../../../lib/project-context.js";
6
+ import { initCopy } from "../../copy.js";
7
+ const MANUAL_PROJECT = "__manual__";
8
+ const NO_REPO = "__none__";
9
+ /** Busca os projetos dos quais o usuário é membro; sai do processo se a busca
10
+ * falhar ou se a lista vier vazia (nada pra vincular). */
11
+ export async function fetchMemberProjectsStep(supabase, userId) {
12
+ const projectsSpinner = startSpinner("Buscando seus projetos...");
13
+ let projects;
14
+ try {
15
+ projects = await listMemberProjects(supabase, userId);
16
+ }
17
+ catch (err) {
18
+ projectsSpinner.fail(`Erro ao buscar projetos: ${err.message}`);
19
+ process.exit(1);
20
+ }
21
+ projectsSpinner.stop();
22
+ if (projects.length === 0) {
23
+ console.error("Você não é membro de nenhum projeto. Peça a um admin pra te adicionar.");
24
+ process.exit(1);
25
+ }
26
+ return projects;
27
+ }
28
+ /**
29
+ * Dado o id escolhido/digitado e a lista de projetos do usuário, resolve o
30
+ * projeto selecionado. Cai num objeto sintético `{id, name: id}` quando o id
31
+ * não está na lista (ex.: colado manualmente).
32
+ */
33
+ export function resolveSelectedProject(projectId, projects) {
34
+ return projects.find((p) => p.id === projectId) ?? { id: projectId, name: projectId };
35
+ }
36
+ /** Prompt de escolha do projeto — lista os projetos do usuário + opção de digitar um id manualmente. */
37
+ export async function pickProject(projects) {
38
+ let projectId = await select({
39
+ message: initCopy.pickProject,
40
+ choices: [
41
+ ...projects.map((p) => ({ name: p.name, value: p.id })),
42
+ { name: initCopy.manualProjectChoice, value: MANUAL_PROJECT },
43
+ ],
44
+ });
45
+ if (projectId === MANUAL_PROJECT) {
46
+ projectId = await input({
47
+ message: initCopy.manualProjectPrompt,
48
+ validate: (value) => UUID_REGEX.test(value.trim()) || initCopy.manualProjectInvalid,
49
+ });
50
+ projectId = projectId.trim();
51
+ }
52
+ return resolveSelectedProject(projectId, projects);
53
+ }
54
+ /** Traduz a escolha do prompt de repositório pro `repository_id` persistido. */
55
+ export function resolveRepositoryChoice(choice) {
56
+ return choice === NO_REPO ? null : choice;
57
+ }
58
+ /** Busca os repositórios do projeto e, se houver algum, oferece vincular um (ou nenhum). */
59
+ export async function pickRepository(supabase, projectId) {
60
+ const reposSpinner = startSpinner("Buscando repositórios...");
61
+ const reposResult = await supabase
62
+ .from("repositories")
63
+ .select("id, name")
64
+ .eq("project_id", projectId)
65
+ .order("name");
66
+ if (reposResult.error) {
67
+ reposSpinner.fail(`Erro ao buscar repositórios: ${reposResult.error.message}`);
68
+ process.exit(1);
69
+ }
70
+ reposSpinner.stop();
71
+ const repos = reposResult.data ?? [];
72
+ if (repos.length === 0)
73
+ return null;
74
+ const choice = await select({
75
+ message: initCopy.linkRepo,
76
+ choices: [
77
+ { name: initCopy.noRepoChoice, value: NO_REPO },
78
+ ...repos.map((r) => ({ name: r.name, value: r.id })),
79
+ ],
80
+ });
81
+ return resolveRepositoryChoice(choice);
82
+ }
83
+ /** Monta o `ProjectConfig` base a partir do projeto e (opcional) repositório escolhidos. */
84
+ export function buildBaseConfig(projectId, repositoryId) {
85
+ const config = { project_id: projectId };
86
+ if (repositoryId)
87
+ config.repository_id = repositoryId;
88
+ return config;
89
+ }
90
+ /** Prompt de IDE — habilita integrações específicas de editor no resto do CLI. */
91
+ export async function pickIde() {
92
+ console.log("");
93
+ console.log(sectionTitle("IDE", "habilita integrações de editor"));
94
+ return select({
95
+ message: "Qual IDE você usa? Isso habilita integrações — ex.: o /implement " +
96
+ "registra o worktree criado no editor (VS Code: adiciona ao Source Control; " +
97
+ "Xcode: abre o projeto em janela própria). Mais integrações no futuro.",
98
+ choices: [
99
+ { name: "VS Code", value: "vscode" },
100
+ { name: "Xcode", value: "xcode" },
101
+ { name: "Outra", value: "other" },
102
+ ],
103
+ });
104
+ }
105
+ //# sourceMappingURL=project-step.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project-step.js","sourceRoot":"","sources":["../../../../src/cli/commands/init/project-step.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,76 @@
1
+ import { claudeTarget, codexTarget } from "../../../lib/targets.js";
2
+ import { provision } from "../../../lib/provision.js";
3
+ import { provisionHooks } from "../../../lib/hooks.js";
4
+ import { fetchSkills } from "../../../lib/skills-cache.js";
5
+ import { c, sym, sectionTitle } from "../../../lib/colors.js";
6
+ import { startSpinner } from "../../../spinner.js";
7
+ import { printProvisionResult, printHookResult } from "../../ui/render.js";
8
+ import { track, provisionedItems } from "../../../lib/telemetry.js";
9
+ import { VERSION } from "../../../version.js";
10
+ /**
11
+ * claude-code-* → ~/.claude (nativo); codex-global → ~/.codex (traduzido pra
12
+ * skills). Sem nenhuma escolha desses dois, cai no default (~/.claude).
13
+ */
14
+ export function resolveProvisionTargets(clientConfigs) {
15
+ const targets = new Set();
16
+ for (const choice of clientConfigs) {
17
+ if (choice.startsWith("claude-code"))
18
+ targets.add(claudeTarget);
19
+ if (choice === "codex-global")
20
+ targets.add(codexTarget);
21
+ }
22
+ if (targets.size === 0)
23
+ targets.add(claudeTarget);
24
+ return targets;
25
+ }
26
+ /** Baixa o repo aberto de skills pro cache local antes de provisionar. */
27
+ export async function fetchSkillsStep() {
28
+ console.log("");
29
+ console.log(sectionTitle("Skills & commands", "provisionando pros clientes"));
30
+ const fetchSpinner = startSpinner("Baixando skills do repo…");
31
+ const fetched = await fetchSkills({ force: true });
32
+ fetchSpinner.stop();
33
+ if (fetched.status === "failed") {
34
+ console.error(` ${c.red(sym.err)} não consegui baixar as skills: ${fetched.error}`);
35
+ }
36
+ else if (fetched.status === "fetched") {
37
+ console.log(` ${c.green(sym.ok)} skills baixadas ${c.dim(`(${fetched.repo}@${fetched.ref})`)}`);
38
+ }
39
+ }
40
+ export function provisionTargetsStep(targets, config, session, uidByName) {
41
+ for (const target of targets) {
42
+ console.log("");
43
+ console.log(` ${c.magenta(sym.dot)} ${c.bold(target.label)}`);
44
+ try {
45
+ const result = provision({ target, selection: config.selection });
46
+ printProvisionResult(result);
47
+ track(session.supabase, {
48
+ type: "provision",
49
+ client: target.id,
50
+ sections: config.selection,
51
+ items: provisionedItems(result.files, uidByName),
52
+ version: VERSION,
53
+ });
54
+ }
55
+ catch (err) {
56
+ console.error(`[aviso] Não consegui sincronizar skills/commands: ${err.message}`);
57
+ }
58
+ }
59
+ }
60
+ /** Hooks (só Claude Code): registra os gatilhos no ~/.claude/settings.json. */
61
+ export function provisionHooksStep(targets, config) {
62
+ if (!targets.has(claudeTarget))
63
+ return;
64
+ console.log("");
65
+ console.log(sectionTitle("Hooks", "registrando no Claude Code"));
66
+ try {
67
+ printHookResult(provisionHooks({
68
+ surface: claudeTarget.surface,
69
+ selection: config.selection,
70
+ }));
71
+ }
72
+ catch (err) {
73
+ console.error(`[aviso] Não consegui registrar hooks: ${err.message}`);
74
+ }
75
+ }
76
+ //# sourceMappingURL=provision-step.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provision-step.js","sourceRoot":"","sources":["../../../../src/cli/commands/init/provision-step.ts"],"names":[],"mappings":"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"}
@@ -8,6 +8,7 @@ import { startSpinner } from "../../spinner.js";
8
8
  import { c, sym, cmd, link, box, sectionTitle } from "../../lib/colors.js";
9
9
  import { printInstallResult } from "../ui/render.js";
10
10
  import { flowsCopy, fmt } from "../copy.js";
11
+ import { brand } from "../../brand.js";
11
12
  /**
12
13
  * Verificação inicial do `init`: confere se **Codex** e **Claude Code** estão instalados —
13
14
  * um por vez — e, se faltar, oferece instalar via `npm i -g` [y/N] (com o comando + docs à
@@ -61,9 +62,32 @@ function coworkManualInstall() {
61
62
  `${c.dim(outputPath)}\n\n` +
62
63
  `${c.bold("Instalar no Claude Desktop:")}\n` +
63
64
  `${c.dim('Configurações → Extensões → avançadas → "Extension Developer" →')}\n` +
64
- `${c.dim('"Install Extension…" → selecione o .mcpb e cole seu PAT (noc_…).')}`, { borderColor: "yellow", title: "Cowork (manual)" }));
65
+ `${c.dim(`"Install Extension…" → selecione o .mcpb e cole seu PAT (${brand.patPrefix}…).`)}`, { borderColor: "yellow", title: "Cowork (manual)" }));
65
66
  revealInFileManager(outputPath.replace(/[^/\\]+$/, ""));
66
67
  }
68
+ /**
69
+ * Tenta ativar o Cowork escrevendo o config direto (precisa de login salvo).
70
+ * Retorna `true` se conseguiu (nada mais a fazer); `false` se precisa cair pro
71
+ * fallback manual (sem credenciais, ou a escrita direta falhou).
72
+ */
73
+ function tryActivateCoworkDirect(creds) {
74
+ if (!creds) {
75
+ console.log(` ${c.dim("sem login salvo — pela extensão você cola o PAT na hora da instalação.")}`);
76
+ return false;
77
+ }
78
+ try {
79
+ const result = installCoworkGlobal();
80
+ printInstallResult("Claude Desktop (Cowork)", result);
81
+ console.log(box(`${c.green(sym.ok)} ${c.bold("conector noclaf ativado no Claude Desktop")}\n` +
82
+ `${c.dim("reinicie o app pra carregar. Projeto é por sessão:")}\n` +
83
+ `${cmd(`${brand.toolPrefix}list_projects`)} ${c.dim("→")} ${cmd(`${brand.toolPrefix}set_project`)}`, { borderColor: "green", title: "Cowork" }));
84
+ return true;
85
+ }
86
+ catch (err) {
87
+ console.log(` ${c.yellow(sym.warn)} ${c.dim("não consegui aplicar o config direto:")} ${err.message}`);
88
+ return false;
89
+ }
90
+ }
67
91
  /** Ativa o conector no Claude Desktop escrevendo o config direto; cai pro `.mcpb` manual se falhar ou faltar login. */
68
92
  export async function activateCowork(opts) {
69
93
  if (!coworkAppInstalled()) {
@@ -73,22 +97,8 @@ export async function activateCowork(opts) {
73
97
  return;
74
98
  }
75
99
  const creds = await loadCredentials();
76
- if (creds) {
77
- try {
78
- const result = installCoworkGlobal();
79
- printInstallResult("Claude Desktop (Cowork)", result);
80
- console.log(box(`${c.green(sym.ok)} ${c.bold("conector noclaf ativado no Claude Desktop")}\n` +
81
- `${c.dim("reinicie o app pra carregar. Projeto é por sessão:")}\n` +
82
- `${cmd("nos_list_projects")} ${c.dim("→")} ${cmd("nos_set_project")}`, { borderColor: "green", title: "Cowork" }));
83
- return;
84
- }
85
- catch (err) {
86
- console.log(` ${c.yellow(sym.warn)} ${c.dim("não consegui aplicar o config direto:")} ${err.message}`);
87
- }
88
- }
89
- else {
90
- console.log(` ${c.dim("sem login salvo — pela extensão você cola o PAT na hora da instalação.")}`);
91
- }
100
+ if (tryActivateCoworkDirect(creds))
101
+ return;
92
102
  // Fallback manual (app instalado mas escrita direta falhou, ou sem login).
93
103
  const goManual = opts.assumeYes === true ||
94
104
  (opts.interactive &&
@@ -1 +1 @@
1
- {"version":3,"file":"clients.js","sourceRoot":"","sources":["../../../src/cli/flows/clients.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"clients.js","sourceRoot":"","sources":["../../../src/cli/flows/clients.ts"],"names":[],"mappings":"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"}
package/dist/cli.js CHANGED
@@ -1,10 +1,10 @@
1
1
  #!/usr/bin/env node
2
2
  import { Command } from "commander";
3
3
  import { VERSION } from "./version.js";
4
- import { LOGO } from "./logo.js";
4
+ import { brand } from "./brand.js";
5
5
  import { notifyCliIfUpdate } from "./lib/version-check.js";
6
6
  import { registerAuthCommands } from "./cli/commands/auth.js";
7
- import { registerInitCommand } from "./cli/commands/init.js";
7
+ import { registerInitCommand } from "./cli/commands/init/index.js";
8
8
  import { registerSyncCommand } from "./cli/commands/sync.js";
9
9
  import { registerSkillsCommands } from "./cli/commands/skills.js";
10
10
  import { registerCleanCommand } from "./cli/commands/clean.js";
@@ -15,10 +15,10 @@ import { registerCompletionCommand } from "./cli/commands/completion.js";
15
15
  notifyCliIfUpdate();
16
16
  const program = new Command();
17
17
  program
18
- .name("noclaf")
19
- .description("CLI do NOS (Noclaf Operation System)")
18
+ .name(brand.name)
19
+ .description(`CLI do ${brand.productName} (${brand.productFullName})`)
20
20
  .version(VERSION)
21
- .addHelpText("beforeAll", LOGO);
21
+ .addHelpText("beforeAll", brand.logo);
22
22
  registerAuthCommands(program);
23
23
  registerInitCommand(program);
24
24
  registerSyncCommand(program);
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EAAE,2BAA2B,EAAE,MAAM,iCAAiC,CAAC;AAC9E,OAAO,EAAE,yBAAyB,EAAE,MAAM,8BAA8B,CAAC;AAEzE,iBAAiB,EAAE,CAAC;AAEpB,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAC9B,OAAO;KACJ,IAAI,CAAC,QAAQ,CAAC;KACd,WAAW,CAAC,sCAAsC,CAAC;KACnD,OAAO,CAAC,OAAO,CAAC;KAChB,WAAW,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;AAElC,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAC9B,mBAAmB,CAAC,OAAO,CAAC,CAAC;AAC7B,mBAAmB,CAAC,OAAO,CAAC,CAAC;AAC7B,sBAAsB,CAAC,OAAO,CAAC,CAAC;AAChC,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAC9B,mBAAmB,CAAC,OAAO,CAAC,CAAC;AAC7B,mBAAmB,CAAC,OAAO,CAAC,CAAC;AAC7B,2BAA2B,CAAC,OAAO,CAAC,CAAC;AACrC,yBAAyB,CAAC,OAAO,CAAC,CAAC;AAEnC,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;IAC7C,OAAO,CAAC,KAAK,CAAC,SAAU,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;IACjD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EAAE,2BAA2B,EAAE,MAAM,iCAAiC,CAAC;AAC9E,OAAO,EAAE,yBAAyB,EAAE,MAAM,8BAA8B,CAAC;AAEzE,iBAAiB,EAAE,CAAC;AAEpB,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAC9B,OAAO;KACJ,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;KAChB,WAAW,CAAC,UAAU,KAAK,CAAC,WAAW,KAAK,KAAK,CAAC,eAAe,GAAG,CAAC;KACrE,OAAO,CAAC,OAAO,CAAC;KAChB,WAAW,CAAC,WAAW,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;AAExC,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAC9B,mBAAmB,CAAC,OAAO,CAAC,CAAC;AAC7B,mBAAmB,CAAC,OAAO,CAAC,CAAC;AAC7B,sBAAsB,CAAC,OAAO,CAAC,CAAC;AAChC,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAC9B,mBAAmB,CAAC,OAAO,CAAC,CAAC;AAC7B,mBAAmB,CAAC,OAAO,CAAC,CAAC;AAC7B,2BAA2B,CAAC,OAAO,CAAC,CAAC;AACrC,yBAAyB,CAAC,OAAO,CAAC,CAAC;AAEnC,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;IAC7C,OAAO,CAAC,KAAK,CAAC,SAAU,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;IACjD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
package/dist/config.js CHANGED
@@ -1,6 +1,7 @@
1
1
  import { readFileSync, writeFileSync, existsSync } from 'node:fs';
2
2
  import { join, isAbsolute, dirname } from 'node:path';
3
3
  import { PROJECT_CONFIG_FILE } from './constants.js';
4
+ import { env } from './brand.js';
4
5
  import { DEV_ROLE, GENERAL } from './lib/sections.js';
5
6
  /** Parse leniente do bloco `selection` do noclaf.json. */
6
7
  function parseSelection(value) {
@@ -77,14 +78,14 @@ export function findProjectConfigPath(cwd = process.cwd()) {
77
78
  * Retorna null se NOCLAF_PROJECT_ID não estiver definido.
78
79
  */
79
80
  function loadProjectConfigFromEnv() {
80
- const projectId = process.env.NOCLAF_PROJECT_ID?.trim();
81
+ const projectId = env('PROJECT_ID')?.trim();
81
82
  if (!projectId)
82
83
  return null;
83
84
  if (!UUID_REGEX.test(projectId)) {
84
85
  throw new Error('NOCLAF_PROJECT_ID não é um UUID válido.');
85
86
  }
86
87
  const config = { project_id: projectId };
87
- const repositoryId = process.env.NOCLAF_REPOSITORY_ID?.trim();
88
+ const repositoryId = env('REPOSITORY_ID')?.trim();
88
89
  if (repositoryId) {
89
90
  if (!UUID_REGEX.test(repositoryId)) {
90
91
  throw new Error('NOCLAF_REPOSITORY_ID deve ser um UUID válido.');
@@ -93,14 +94,8 @@ function loadProjectConfigFromEnv() {
93
94
  }
94
95
  return config;
95
96
  }
96
- export function loadProjectConfig(cwd = process.cwd()) {
97
- // Precedência pro ambiente (Desktop Extension / Cowork não têm noclaf.json no cwd).
98
- const envConfig = loadProjectConfigFromEnv();
99
- if (envConfig)
100
- return envConfig;
101
- const path = findProjectConfigPath(cwd);
102
- if (!path)
103
- return null;
97
+ /** Lê e faz `JSON.parse` do `noclaf.json` em `path` — erros viram mensagens com o nome do arquivo. */
98
+ function readProjectConfigFile(path) {
104
99
  let raw;
105
100
  try {
106
101
  raw = readFileSync(path, 'utf8');
@@ -118,7 +113,10 @@ export function loadProjectConfig(cwd = process.cwd()) {
118
113
  if (!parsed || typeof parsed !== 'object') {
119
114
  throw new Error(`${PROJECT_CONFIG_FILE} deve conter um objeto JSON.`);
120
115
  }
121
- const obj = parsed;
116
+ return parsed;
117
+ }
118
+ /** Valida e monta o `ProjectConfig` a partir do objeto já parseado do `noclaf.json`. */
119
+ function shapeProjectConfig(obj) {
122
120
  const projectId = obj.project_id;
123
121
  if (typeof projectId !== 'string' || !UUID_REGEX.test(projectId)) {
124
122
  throw new Error(`${PROJECT_CONFIG_FILE}: campo "project_id" ausente ou não é um UUID válido.`);
@@ -144,6 +142,16 @@ export function loadProjectConfig(cwd = process.cwd()) {
144
142
  }
145
143
  return config;
146
144
  }
145
+ export function loadProjectConfig(cwd = process.cwd()) {
146
+ // Precedência pro ambiente (Desktop Extension / Cowork não têm noclaf.json no cwd).
147
+ const envConfig = loadProjectConfigFromEnv();
148
+ if (envConfig)
149
+ return envConfig;
150
+ const path = findProjectConfigPath(cwd);
151
+ if (!path)
152
+ return null;
153
+ return shapeProjectConfig(readProjectConfigFile(path));
154
+ }
147
155
  export function writeProjectConfig(config, cwd = process.cwd()) {
148
156
  const path = getProjectConfigPath(cwd);
149
157
  const content = JSON.stringify(config, null, 2) + '\n';
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAClE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAE,GAAG,EAAE,MAAM,YAAY,CAAC;AACjC,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAkB,MAAM,mBAAmB,CAAC;AActE,0DAA0D;AAC1D,SAAS,cAAc,CAAC,KAAc;IACpC,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,SAAS,CAAC;IAC1D,MAAM,CAAC,GAAG,KAA8C,CAAC;IACzD,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC;QAClC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;QAC3E,CAAC,CAAC,EAAE,CAAC;IACP,MAAM,MAAM,GAA2B,EAAE,CAAC;IAC1C,IAAI,CAAC,CAAC,MAAM,IAAI,OAAO,CAAC,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC7C,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,MAAiC,CAAC,EAAE,CAAC;YAChF,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE;gBAAE,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;QAC7E,CAAC;IACH,CAAC;IACD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IAC7E,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;AAC3B,CAAC;AAED;;;;;GAKG;AACH,SAAS,sBAAsB,CAAC,GAA4B;IAC1D,MAAM,GAAG,GAAG,GAAG,CAAC,QAAgE,CAAC;IACjF,MAAM,QAAQ,GAAG,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,CAA4B,CAAC;IAC9D,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ;QAAE,OAAO,SAAS,CAAC;IACtD,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;IACjE,IAAI,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC;QAAE,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACzD,IAAI,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC;QAAE,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IACzD,MAAM,MAAM,GAA2B,EAAE,CAAC;IAC1C,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;IAC3D,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;QACvB,IAAI,OAAO,CAAC,KAAK,QAAQ;YAAE,SAAS;QACpC,MAAM,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;QAC1B,MAAM,CAAC,CAAC,CAAC,GAAG,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;IACjF,CAAC;IACD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IAC7E,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;AAC3B,CAAC;AAED,MAAM,CAAC,MAAM,UAAU,GAAG,iEAAiE,CAAC;AAE5F,MAAM,UAAU,oBAAoB,CAAC,MAAc,OAAO,CAAC,GAAG,EAAE;IAC9D,OAAO,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,mBAAmB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,GAAG,EAAE,mBAAmB,CAAC,CAAC;AAC1G,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,qBAAqB,CAAC,MAAc,OAAO,CAAC,GAAG,EAAE;IAC/D,IAAI,GAAG,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,GAAG,CAAC,CAAC;IAC3D,SAAS,CAAC;QACR,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,mBAAmB,CAAC,CAAC;QACjD,IAAI,UAAU,CAAC,SAAS,CAAC;YAAE,OAAO,SAAS,CAAC;QAC5C,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;QAC5B,IAAI,MAAM,KAAK,GAAG;YAAE,OAAO,IAAI,CAAC;QAChC,GAAG,GAAG,MAAM,CAAC;IACf,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,SAAS,wBAAwB;IAC/B,MAAM,SAAS,GAAG,GAAG,CAAC,YAAY,CAAC,EAAE,IAAI,EAAE,CAAC;IAC5C,IAAI,CAAC,SAAS;QAAE,OAAO,IAAI,CAAC;IAE5B,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;QAChC,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;IAC7D,CAAC;IAED,MAAM,MAAM,GAAkB,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC;IACxD,MAAM,YAAY,GAAG,GAAG,CAAC,eAAe,CAAC,EAAE,IAAI,EAAE,CAAC;IAClD,IAAI,YAAY,EAAE,CAAC;QACjB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC;YACnC,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;QACnE,CAAC;QACD,MAAM,CAAC,aAAa,GAAG,YAAY,CAAC;IACtC,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,sGAAsG;AACtG,SAAS,qBAAqB,CAAC,IAAY;IACzC,IAAI,GAAW,CAAC;IAChB,IAAI,CAAC;QACH,GAAG,GAAG,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACnC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,wBAAwB,mBAAmB,KAAM,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;IAC5F,CAAC;IAED,IAAI,MAAe,CAAC;IACpB,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC3B,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,GAAG,mBAAmB,0BAA2B,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;IAC5F,CAAC;IAED,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC1C,MAAM,IAAI,KAAK,CAAC,GAAG,mBAAmB,8BAA8B,CAAC,CAAC;IACxE,CAAC;IACD,OAAO,MAAiC,CAAC;AAC3C,CAAC;AAED,wFAAwF;AACxF,SAAS,kBAAkB,CAAC,GAA4B;IACtD,MAAM,SAAS,GAAG,GAAG,CAAC,UAAU,CAAC;IACjC,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;QACjE,MAAM,IAAI,KAAK,CAAC,GAAG,mBAAmB,uDAAuD,CAAC,CAAC;IACjG,CAAC;IAED,MAAM,YAAY,GAAG,GAAG,CAAC,aAAa,CAAC;IACvC,IACE,YAAY,KAAK,SAAS;QAC1B,YAAY,KAAK,IAAI;QACrB,CAAC,OAAO,YAAY,KAAK,QAAQ,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,EACpE,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,GAAG,mBAAmB,yDAAyD,CAAC,CAAC;IACnG,CAAC;IAED,MAAM,MAAM,GAAkB,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC;IACxD,IAAI,OAAO,YAAY,KAAK,QAAQ,EAAE,CAAC;QACrC,MAAM,CAAC,aAAa,GAAG,YAAY,CAAC;IACtC,CAAC;SAAM,IAAI,YAAY,KAAK,IAAI,EAAE,CAAC;QACjC,MAAM,CAAC,aAAa,GAAG,IAAI,CAAC;IAC9B,CAAC;IACD,MAAM,SAAS,GAAG,cAAc,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,sBAAsB,CAAC,GAAG,CAAC,CAAC;IAC/E,IAAI,SAAS;QAAE,MAAM,CAAC,SAAS,GAAG,SAAS,CAAC;IAC5C,IAAI,GAAG,CAAC,GAAG,KAAK,QAAQ,IAAI,GAAG,CAAC,GAAG,KAAK,OAAO,IAAI,GAAG,CAAC,GAAG,KAAK,OAAO,EAAE,CAAC;QACvE,MAAM,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC;IACvB,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,MAAc,OAAO,CAAC,GAAG,EAAE;IAC3D,oFAAoF;IACpF,MAAM,SAAS,GAAG,wBAAwB,EAAE,CAAC;IAC7C,IAAI,SAAS;QAAE,OAAO,SAAS,CAAC;IAEhC,MAAM,IAAI,GAAG,qBAAqB,CAAC,GAAG,CAAC,CAAC;IACxC,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IAEvB,OAAO,kBAAkB,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC,CAAC;AACzD,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,MAAqB,EAAE,MAAc,OAAO,CAAC,GAAG,EAAE;IACnF,MAAM,IAAI,GAAG,oBAAoB,CAAC,GAAG,CAAC,CAAC;IACvC,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC;IACvD,aAAa,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;AACvC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAC9B,QAAgB,mBAAmB,EACnC,MAAc,OAAO,CAAC,GAAG,EAAE;IAE3B,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC;IAC9C,MAAM,OAAO,GAAG,UAAU,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACrF,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IAC1D,IAAI,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IAE5C,MAAM,GAAG,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;IACtE,MAAM,KAAK,GAAG,GAAG,GAAG,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,wCAAwC,KAAK,IAAI,CAAC;IACvG,aAAa,CAAC,aAAa,EAAE,OAAO,GAAG,KAAK,EAAE,MAAM,CAAC,CAAC;IACtD,OAAO,OAAO,CAAC;AACjB,CAAC"}
package/dist/constants.js CHANGED
@@ -1,10 +1,9 @@
1
- import { homedir } from 'node:os';
2
- import { join } from 'node:path';
3
- export const SUPABASE_URL = 'https://wdshvtlsjoegjvmpqobx.supabase.co';
4
- export const SUPABASE_ANON_KEY = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6Indkc2h2dGxzam9lZ2p2bXBxb2J4Iiwicm9sZSI6ImFub24iLCJpYXQiOjE3NzU3NDA4OTQsImV4cCI6MjA5MTMxNjg5NH0.4wlAsT_D5gDiBQ19WA-q5zu105fT9TsD1NKI_tGQt-4';
1
+ import { brand, homePath, patRegex } from './brand.js';
2
+ export const SUPABASE_URL = brand.supabaseUrl;
3
+ export const SUPABASE_ANON_KEY = brand.supabaseAnonKey;
5
4
  export const TOKEN_EXCHANGE_URL = `${SUPABASE_URL}/functions/v1/mcp-token-exchange`;
6
- export const CREDENTIALS_DIR = join(homedir(), '.noclaf');
7
- export const CREDENTIALS_FILE = join(CREDENTIALS_DIR, 'credentials.json');
8
- export const PROJECT_CONFIG_FILE = 'noclaf.json';
9
- export const PAT_REGEX = /^noc_[a-f0-9]{64}$/;
5
+ export const CREDENTIALS_DIR = homePath();
6
+ export const CREDENTIALS_FILE = homePath('credentials.json');
7
+ export const PROJECT_CONFIG_FILE = brand.projectConfigFile;
8
+ export const PAT_REGEX = patRegex;
10
9
  //# sourceMappingURL=constants.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,MAAM,CAAC,MAAM,YAAY,GAAG,0CAA0C,CAAC;AACvE,MAAM,CAAC,MAAM,iBAAiB,GAC5B,kNAAkN,CAAC;AAErN,MAAM,CAAC,MAAM,kBAAkB,GAAG,GAAG,YAAY,kCAAkC,CAAC;AAEpF,MAAM,CAAC,MAAM,eAAe,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,CAAC,CAAC;AAC1D,MAAM,CAAC,MAAM,gBAAgB,GAAG,IAAI,CAAC,eAAe,EAAE,kBAAkB,CAAC,CAAC;AAE1E,MAAM,CAAC,MAAM,mBAAmB,GAAG,aAAa,CAAC;AAEjD,MAAM,CAAC,MAAM,SAAS,GAAG,oBAAoB,CAAC"}
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEvD,MAAM,CAAC,MAAM,YAAY,GAAG,KAAK,CAAC,WAAW,CAAC;AAC9C,MAAM,CAAC,MAAM,iBAAiB,GAAG,KAAK,CAAC,eAAe,CAAC;AAEvD,MAAM,CAAC,MAAM,kBAAkB,GAAG,GAAG,YAAY,kCAAkC,CAAC;AAEpF,MAAM,CAAC,MAAM,eAAe,GAAG,QAAQ,EAAE,CAAC;AAC1C,MAAM,CAAC,MAAM,gBAAgB,GAAG,QAAQ,CAAC,kBAAkB,CAAC,CAAC;AAE7D,MAAM,CAAC,MAAM,mBAAmB,GAAG,KAAK,CAAC,iBAAiB,CAAC;AAE3D,MAAM,CAAC,MAAM,SAAS,GAAG,QAAQ,CAAC"}
@@ -0,0 +1,13 @@
1
+ import { claudeTarget, codexTarget } from './targets.js';
2
+ /** Decide se o auto-pull deve rodar. Pura: Cowork recebe skills via
3
+ * resources/prompts (não arquivo nativo) e o usuário pode desligar explicitamente. */
4
+ export function shouldRunAutoPull(client, autoPullFlag) {
5
+ const isCowork = client === 'cowork';
6
+ return !isCowork && autoPullFlag !== '0' && autoPullFlag !== 'false';
7
+ }
8
+ /** Cliente nativo do worker: Codex escreve `~/.codex` (skills traduzidas),
9
+ * qualquer outro cai pro Claude Code (`~/.claude`). */
10
+ export function pickProvisionTarget(client) {
11
+ return client === 'codex' ? codexTarget : claudeTarget;
12
+ }
13
+ //# sourceMappingURL=autopull.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"autopull.js","sourceRoot":"","sources":["../../src/lib/autopull.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,WAAW,EAAwB,MAAM,cAAc,CAAC;AAE/E;sFACsF;AACtF,MAAM,UAAU,iBAAiB,CAAC,MAA0B,EAAE,YAAgC;IAC5F,MAAM,QAAQ,GAAG,MAAM,KAAK,QAAQ,CAAC;IACrC,OAAO,CAAC,QAAQ,IAAI,YAAY,KAAK,GAAG,IAAI,YAAY,KAAK,OAAO,CAAC;AACvE,CAAC;AAED;uDACuD;AACvD,MAAM,UAAU,mBAAmB,CAAC,MAA0B;IAC5D,OAAO,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,YAAY,CAAC;AACzD,CAAC"}
@@ -3,7 +3,8 @@ import { homedir } from 'node:os';
3
3
  import { join, dirname } from 'node:path';
4
4
  import { fileURLToPath } from 'node:url';
5
5
  import { backupFile, readJson, writeJson, readToml, writeToml } from './file-merge.js';
6
- const MCP_COMMAND = 'noclaf-cli';
6
+ import { brand, envName } from '../brand.js';
7
+ const MCP_COMMAND = brand.mcpBinName;
7
8
  /**
8
9
  * Lê o JSON do path; se for malformado, lança erro com mensagem clara
9
10
  * apontando que o user deve consertar à mão.
@@ -19,12 +20,12 @@ function readJsonSafe(path) {
19
20
  }
20
21
  function ensureMcpServersJson(path, rootKey) {
21
22
  if (!existsSync(path)) {
22
- writeJson(path, { [rootKey]: { noclaf: { command: MCP_COMMAND } } });
23
+ writeJson(path, { [rootKey]: { [brand.mcpServerKey]: { command: MCP_COMMAND } } });
23
24
  return { status: 'created', path };
24
25
  }
25
26
  const existing = (readJsonSafe(path) ?? {});
26
27
  const root = (existing[rootKey] ?? {});
27
- const current = root.noclaf;
28
+ const current = root[brand.mcpServerKey];
28
29
  if (current && current.command === MCP_COMMAND) {
29
30
  return { status: 'already_configured', path };
30
31
  }
@@ -33,7 +34,7 @@ function ensureMcpServersJson(path, rootKey) {
33
34
  ...existing,
34
35
  [rootKey]: {
35
36
  ...root,
36
- noclaf: { command: MCP_COMMAND },
37
+ [brand.mcpServerKey]: { command: MCP_COMMAND },
37
38
  },
38
39
  };
39
40
  writeJson(path, next);
@@ -78,7 +79,7 @@ export function coworkConfigured() {
78
79
  return false;
79
80
  try {
80
81
  const json = (readJsonSafe(path) ?? {});
81
- return Boolean(json.mcpServers?.noclaf);
82
+ return Boolean(json.mcpServers?.[brand.mcpServerKey]);
82
83
  }
83
84
  catch {
84
85
  return false;
@@ -103,23 +104,23 @@ export function installCoworkGlobal() {
103
104
  const entry = {
104
105
  command: process.execPath,
105
106
  args: [mcpServerJsPath()],
106
- env: { NOCLAF_CLIENT: 'cowork' },
107
+ env: { [envName('CLIENT')]: 'cowork' },
107
108
  };
108
109
  if (!existsSync(path)) {
109
- writeJson(path, { mcpServers: { noclaf: entry } });
110
+ writeJson(path, { mcpServers: { [brand.mcpServerKey]: entry } });
110
111
  return { status: 'created', path };
111
112
  }
112
113
  const existing = (readJsonSafe(path) ?? {});
113
114
  const root = (existing.mcpServers ?? {});
114
- const current = root.noclaf;
115
+ const current = root[brand.mcpServerKey];
115
116
  if (current &&
116
117
  current.command === entry.command &&
117
118
  current.args?.[0] === entry.args?.[0] &&
118
- current.env?.NOCLAF_CLIENT === 'cowork') {
119
+ current.env?.[envName('CLIENT')] === 'cowork') {
119
120
  return { status: 'already_configured', path };
120
121
  }
121
122
  const backup = backupFile(path);
122
- writeJson(path, { ...existing, mcpServers: { ...root, noclaf: entry } });
123
+ writeJson(path, { ...existing, mcpServers: { ...root, [brand.mcpServerKey]: entry } });
123
124
  return { status: 'updated', path, backup };
124
125
  }
125
126
  function claudeSettingsPath() {
@@ -141,13 +142,35 @@ export function disableCoAuthoredBy(path = claudeSettingsPath()) {
141
142
  writeJson(path, { ...existing, includeCoAuthoredBy: false });
142
143
  return { status: exists ? 'updated' : 'created', path, backup };
143
144
  }
145
+ /**
146
+ * Decide se o `noclaf` já está OK no TOML e monta o próximo objeto se precisar
147
+ * atualizar (pura, sem IO). Já-OK só se command bate E env NOCLAF_CLIENT=codex já
148
+ * existe — senão atualiza (instalações antigas ganham o env no próximo run).
149
+ */
150
+ export function planCodexUpdate(existing, noclafEntry) {
151
+ const servers = (existing.mcp_servers ?? {});
152
+ const current = servers[brand.mcpServerKey];
153
+ const alreadyConfigured = Boolean(current && current.command === MCP_COMMAND && current.env?.[envName('CLIENT')] === 'codex');
154
+ const next = {
155
+ ...existing,
156
+ mcp_servers: {
157
+ ...servers,
158
+ [brand.mcpServerKey]: {
159
+ ...current,
160
+ ...noclafEntry,
161
+ env: { ...current?.env, [envName('CLIENT')]: 'codex' },
162
+ },
163
+ },
164
+ };
165
+ return { alreadyConfigured, next };
166
+ }
144
167
  export function installCodexGlobal() {
145
168
  const path = join(homedir(), '.codex', 'config.toml');
146
169
  // `NOCLAF_CLIENT=codex` avisa o servidor MCP a (1) provisionar/auto-pull pra
147
170
  // `~/.codex` (skills + prompts) e (2) filtrar os docs pelo surface `codex`.
148
- const noclafEntry = { command: MCP_COMMAND, env: { NOCLAF_CLIENT: 'codex' } };
171
+ const noclafEntry = { command: MCP_COMMAND, env: { [envName('CLIENT')]: 'codex' } };
149
172
  if (!existsSync(path)) {
150
- writeToml(path, { mcp_servers: { noclaf: noclafEntry } });
173
+ writeToml(path, { mcp_servers: { [brand.mcpServerKey]: noclafEntry } });
151
174
  return { status: 'created', path };
152
175
  }
153
176
  let existing;
@@ -158,21 +181,10 @@ export function installCodexGlobal() {
158
181
  throw new Error(`Arquivo ${path} contém TOML inválido (${err.message}). ` +
159
182
  `Conserte ou apague antes de rodar de novo.`);
160
183
  }
161
- const servers = (existing.mcp_servers ?? {});
162
- const current = servers.noclaf;
163
- // Já configurado só se o comando bate E o env NOCLAF_CLIENT=codex já está lá —
164
- // senão atualiza (instalações antigas ganham o env no próximo run).
165
- if (current && current.command === MCP_COMMAND && current.env?.NOCLAF_CLIENT === 'codex') {
184
+ const { alreadyConfigured, next } = planCodexUpdate(existing, noclafEntry);
185
+ if (alreadyConfigured)
166
186
  return { status: 'already_configured', path };
167
- }
168
187
  const backup = backupFile(path);
169
- const next = {
170
- ...existing,
171
- mcp_servers: {
172
- ...servers,
173
- noclaf: { ...current, ...noclafEntry, env: { ...current?.env, NOCLAF_CLIENT: 'codex' } },
174
- },
175
- };
176
188
  writeToml(path, next);
177
189
  return { status: 'updated', path, backup };
178
190
  }