@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.
- package/dist/auth.js +2 -1
- package/dist/auth.js.map +1 -1
- package/dist/brand.js +82 -0
- package/dist/brand.js.map +1 -0
- package/dist/cli/commands/auth.js +91 -58
- package/dist/cli/commands/auth.js.map +1 -1
- package/dist/cli/commands/init/auth-step.js +48 -0
- package/dist/cli/commands/init/auth-step.js.map +1 -0
- package/dist/cli/commands/init/clients-step.js +76 -0
- package/dist/cli/commands/init/clients-step.js.map +1 -0
- package/dist/cli/commands/init/context-step.js +66 -0
- package/dist/cli/commands/init/context-step.js.map +1 -0
- package/dist/cli/commands/init/index.js +67 -0
- package/dist/cli/commands/init/index.js.map +1 -0
- package/dist/cli/commands/init/project-step.js +105 -0
- package/dist/cli/commands/init/project-step.js.map +1 -0
- package/dist/cli/commands/init/provision-step.js +76 -0
- package/dist/cli/commands/init/provision-step.js.map +1 -0
- package/dist/cli/flows/clients.js +27 -17
- package/dist/cli/flows/clients.js.map +1 -1
- package/dist/cli.js +5 -5
- package/dist/cli.js.map +1 -1
- package/dist/config.js +19 -11
- package/dist/config.js.map +1 -1
- package/dist/constants.js +7 -8
- package/dist/constants.js.map +1 -1
- package/dist/lib/autopull.js +13 -0
- package/dist/lib/autopull.js.map +1 -0
- package/dist/lib/client-configs.js +37 -25
- package/dist/lib/client-configs.js.map +1 -1
- package/dist/lib/cowork-extension.js +42 -30
- package/dist/lib/cowork-extension.js.map +1 -1
- package/dist/lib/dependencies.js +83 -247
- package/dist/lib/dependencies.js.map +1 -1
- package/dist/lib/dependency-install.js +163 -0
- package/dist/lib/dependency-install.js.map +1 -0
- package/dist/lib/exec-delegate.js +2 -2
- package/dist/lib/exec-delegate.js.map +1 -1
- package/dist/lib/exec-engines.js +7 -6
- package/dist/lib/exec-engines.js.map +1 -1
- package/dist/lib/provision-apply.js +214 -0
- package/dist/lib/provision-apply.js.map +1 -0
- package/dist/lib/provision-collect.js +47 -0
- package/dist/lib/provision-collect.js.map +1 -0
- package/dist/lib/provision.js +8 -253
- package/dist/lib/provision.js.map +1 -1
- package/dist/lib/require-config.js +3 -2
- package/dist/lib/require-config.js.map +1 -1
- package/dist/lib/skills-cache.js +9 -8
- package/dist/lib/skills-cache.js.map +1 -1
- package/dist/lib/skills.js +30 -16
- package/dist/lib/skills.js.map +1 -1
- package/dist/lib/telemetry.js +2 -1
- package/dist/lib/telemetry.js.map +1 -1
- package/dist/lib/version-check.js +3 -2
- package/dist/lib/version-check.js.map +1 -1
- package/dist/mcp-server.js +107 -79
- package/dist/mcp-server.js.map +1 -1
- package/dist/tools/comment-task.js +32 -32
- package/dist/tools/comment-task.js.map +1 -1
- package/dist/tools/create-task.js +92 -101
- package/dist/tools/create-task.js.map +1 -1
- package/dist/tools/delegate-exec.js +4 -3
- package/dist/tools/delegate-exec.js.map +1 -1
- package/dist/tools/end-allocation.js +19 -32
- package/dist/tools/end-allocation.js.map +1 -1
- package/dist/tools/end-task-allocation.js +17 -26
- package/dist/tools/end-task-allocation.js.map +1 -1
- package/dist/tools/exec-status.js +4 -3
- package/dist/tools/exec-status.js.map +1 -1
- package/dist/tools/get-active-allocation.js +53 -60
- package/dist/tools/get-active-allocation.js.map +1 -1
- package/dist/tools/get-context.js +4 -3
- package/dist/tools/get-context.js.map +1 -1
- package/dist/tools/get-task.js +144 -142
- package/dist/tools/get-task.js.map +1 -1
- package/dist/tools/list-my-allocations.js +35 -43
- package/dist/tools/list-my-allocations.js.map +1 -1
- package/dist/tools/list-projects.js +3 -2
- package/dist/tools/list-projects.js.map +1 -1
- package/dist/tools/list-tasks.js +117 -124
- package/dist/tools/list-tasks.js.map +1 -1
- package/dist/tools/move-task.js +37 -39
- package/dist/tools/move-task.js.map +1 -1
- package/dist/tools/plan.js +3 -2
- package/dist/tools/plan.js.map +1 -1
- package/dist/tools/record-delivery.js +4 -3
- package/dist/tools/record-delivery.js.map +1 -1
- package/dist/tools/set-project.js +9 -4
- package/dist/tools/set-project.js.map +1 -1
- package/dist/tools/start-allocation.js +16 -26
- package/dist/tools/start-allocation.js.map +1 -1
- package/dist/tools/start-task-allocation.js +72 -92
- package/dist/tools/start-task-allocation.js.map +1 -1
- package/dist/tools/update-task.js +149 -168
- package/dist/tools/update-task.js.map +1 -1
- package/dist/tools/validate-plan.js +3 -2
- package/dist/tools/validate-plan.js.map +1 -1
- package/package.json +1 -1
- package/dist/cli/commands/init.js +0 -336
- package/dist/cli/commands/init.js.map +0 -1
- package/dist/logo.js +0 -17
- 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":"AAAA,OAAO,EAAE,YAAY,EAAE,WAAW,EAAwB,MAAM,yBAAyB,CAAC;AAC1F,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAC3D,OAAO,EAAE,CAAC,EAAE,GAAG,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,oBAAoB,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAC3E,OAAO,EAAE,KAAK,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAK9C;;;GAGG;AACH,MAAM,UAAU,uBAAuB,CAAC,aAA6B;IACnE,MAAM,OAAO,GAAG,IAAI,GAAG,EAAmB,CAAC;IAC3C,KAAK,MAAM,MAAM,IAAI,aAAa,EAAE,CAAC;QACnC,IAAI,MAAM,CAAC,UAAU,CAAC,aAAa,CAAC;YAAE,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QAChE,IAAI,MAAM,KAAK,cAAc;YAAE,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IAC1D,CAAC;IACD,IAAI,OAAO,CAAC,IAAI,KAAK,CAAC;QAAE,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;IAClD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,0EAA0E;AAC1E,MAAM,CAAC,KAAK,UAAU,eAAe;IACnC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,mBAAmB,EAAE,6BAA6B,CAAC,CAAC,CAAC;IAC9E,MAAM,YAAY,GAAG,YAAY,CAAC,0BAA0B,CAAC,CAAC;IAC9D,MAAM,OAAO,GAAG,MAAM,WAAW,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACnD,YAAY,CAAC,IAAI,EAAE,CAAC;IACpB,IAAI,OAAO,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;QAChC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,mCAAmC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;IACvF,CAAC;SAAM,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QACxC,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,oBAAoB,CAAC,CAAC,GAAG,CAAC,IAAI,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,GAAG,GAAG,CAAC,EAAE,CACpF,CAAC;IACJ,CAAC;AACH,CAAC;AAED,MAAM,UAAU,oBAAoB,CAClC,OAA6B,EAC7B,MAAqB,EACrB,OAA6B,EAC7B,SAAqC;IAErC,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAC/D,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,SAAS,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC;YAClE,oBAAoB,CAAC,MAAM,CAAC,CAAC;YAC7B,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE;gBACtB,IAAI,EAAE,WAAW;gBACjB,MAAM,EAAE,MAAM,CAAC,EAAE;gBACjB,QAAQ,EAAE,MAAM,CAAC,SAAS;gBAC1B,KAAK,EAAE,gBAAgB,CAAC,MAAM,CAAC,KAAK,EAAE,SAAS,CAAC;gBAChD,OAAO,EAAE,OAAO;aACjB,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CAAC,qDAAsD,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;QAC/F,CAAC;IACH,CAAC;AACH,CAAC;AAED,+EAA+E;AAC/E,MAAM,UAAU,kBAAkB,CAAC,OAA6B,EAAE,MAAqB;IACrF,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC;QAAE,OAAO;IACvC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,OAAO,EAAE,4BAA4B,CAAC,CAAC,CAAC;IACjE,IAAI,CAAC;QACH,eAAe,CACb,cAAc,CAAC;YACb,OAAO,EAAE,YAAY,CAAC,OAAO;YAC7B,SAAS,EAAE,MAAM,CAAC,SAAS;SAC5B,CAAC,CACH,CAAC;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,yCAA0C,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;IACnF,CAAC;AACH,CAAC"}
|
|
@@ -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(
|
|
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
|
-
|
|
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":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC/C,OAAO,EACL,mBAAmB,EACnB,kBAAkB,EAClB,gBAAgB,EAChB,mBAAmB,GACpB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,uBAAuB,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AAC7F,OAAO,EAAE,OAAO,EAAE,iBAAiB,EAAmB,MAAM,6BAA6B,CAAC;AAC1F,OAAO,EAAE,eAAe,
|
|
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 {
|
|
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(
|
|
19
|
-
.description(
|
|
18
|
+
.name(brand.name)
|
|
19
|
+
.description(`CLI do ${brand.productName} (${brand.productFullName})`)
|
|
20
20
|
.version(VERSION)
|
|
21
|
-
.addHelpText("beforeAll",
|
|
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,
|
|
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 =
|
|
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 =
|
|
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
|
-
|
|
97
|
-
|
|
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
|
-
|
|
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';
|
package/dist/config.js.map
CHANGED
|
@@ -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":"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"}
|
package/dist/constants.js
CHANGED
|
@@ -1,10 +1,9 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
export const
|
|
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 =
|
|
7
|
-
export const CREDENTIALS_FILE =
|
|
8
|
-
export const PROJECT_CONFIG_FILE =
|
|
9
|
-
export const PAT_REGEX =
|
|
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
|
package/dist/constants.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
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
|
-
|
|
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]: {
|
|
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.
|
|
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
|
-
|
|
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?.
|
|
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: {
|
|
107
|
+
env: { [envName('CLIENT')]: 'cowork' },
|
|
107
108
|
};
|
|
108
109
|
if (!existsSync(path)) {
|
|
109
|
-
writeJson(path, { mcpServers: {
|
|
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.
|
|
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?.
|
|
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,
|
|
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: {
|
|
171
|
+
const noclafEntry = { command: MCP_COMMAND, env: { [envName('CLIENT')]: 'codex' } };
|
|
149
172
|
if (!existsSync(path)) {
|
|
150
|
-
writeToml(path, { mcp_servers: {
|
|
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
|
|
162
|
-
|
|
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
|
}
|