@noclaf/cli 0.4.14 → 0.4.16
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 +76 -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 +103 -0
- package/dist/cli/commands/init/provision-step.js.map +1 -0
- package/dist/cli/commands/sync.js +65 -26
- package/dist/cli/commands/sync.js.map +1 -1
- package/dist/cli/flows/clients.js +27 -17
- package/dist/cli/flows/clients.js.map +1 -1
- package/dist/cli/ui/report.js +117 -0
- package/dist/cli/ui/report.js.map +1 -0
- 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,117 @@
|
|
|
1
|
+
import { select } from "../../lib/prompts.js";
|
|
2
|
+
import { c, sym } from "../../lib/colors.js";
|
|
3
|
+
/**
|
|
4
|
+
* Captura o que `fn` imprimiria via `console.log` num array de linhas — deixa reusar os
|
|
5
|
+
* `print*` existentes como fonte do detalhe, sem reescrevê-los.
|
|
6
|
+
*/
|
|
7
|
+
export function capture(fn) {
|
|
8
|
+
const lines = [];
|
|
9
|
+
const orig = console.log;
|
|
10
|
+
console.log = (...args) => {
|
|
11
|
+
lines.push(args.map((a) => String(a)).join(" "));
|
|
12
|
+
};
|
|
13
|
+
try {
|
|
14
|
+
fn();
|
|
15
|
+
}
|
|
16
|
+
finally {
|
|
17
|
+
console.log = orig;
|
|
18
|
+
}
|
|
19
|
+
return lines;
|
|
20
|
+
}
|
|
21
|
+
export class SyncReport {
|
|
22
|
+
sections = [];
|
|
23
|
+
add(section) {
|
|
24
|
+
this.sections.push(section);
|
|
25
|
+
}
|
|
26
|
+
/** Adiciona uma seção cujo detalhe vem da saída capturada de `fn`. */
|
|
27
|
+
addCaptured(meta, fn) {
|
|
28
|
+
this.add({ ...meta, lines: capture(fn) });
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
/** Resumo + status de um resultado de provisionamento (usado por sync e init). */
|
|
32
|
+
export function summarizeProvision(files) {
|
|
33
|
+
const n = (a) => files.filter((f) => f.action === a).length;
|
|
34
|
+
const werr = n("write-error");
|
|
35
|
+
const conflict = n("skip-conflict");
|
|
36
|
+
const parts = [`${n("create")} criados`, `${n("update")} atualizados`];
|
|
37
|
+
if (n("prune"))
|
|
38
|
+
parts.push(`${n("prune")} removidos`);
|
|
39
|
+
if (conflict)
|
|
40
|
+
parts.push(`${conflict} conflito`);
|
|
41
|
+
if (werr)
|
|
42
|
+
parts.push(`${werr} erro`);
|
|
43
|
+
return {
|
|
44
|
+
status: werr > 0 ? "error" : conflict > 0 ? "warn" : "ok",
|
|
45
|
+
summary: parts.join(" · "),
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
function icon(status) {
|
|
49
|
+
return status === "ok"
|
|
50
|
+
? c.green(sym.ok)
|
|
51
|
+
: status === "warn"
|
|
52
|
+
? c.yellow(sym.warn)
|
|
53
|
+
: c.red(sym.err);
|
|
54
|
+
}
|
|
55
|
+
function headline(s) {
|
|
56
|
+
return ` ${icon(s.status)} ${c.bold(s.title)} ${c.dim(`· ${s.summary}`)}`;
|
|
57
|
+
}
|
|
58
|
+
/** Resolve o modo: `--verbose`/`--quiet` mandam; senão TTY → resumo, não-TTY → plano. */
|
|
59
|
+
export function resolveReportMode(opts) {
|
|
60
|
+
if (opts.verbose)
|
|
61
|
+
return "verbose";
|
|
62
|
+
if (opts.quiet)
|
|
63
|
+
return "quiet";
|
|
64
|
+
return process.stdout.isTTY ? "summary" : "plain";
|
|
65
|
+
}
|
|
66
|
+
/** Imprime o report conforme o modo. */
|
|
67
|
+
export function renderReport(report, mode) {
|
|
68
|
+
if (report.sections.length === 0)
|
|
69
|
+
return;
|
|
70
|
+
console.log("");
|
|
71
|
+
if (mode === "verbose" || mode === "plain") {
|
|
72
|
+
for (const s of report.sections) {
|
|
73
|
+
console.log(headline(s));
|
|
74
|
+
for (const l of s.lines)
|
|
75
|
+
console.log(l);
|
|
76
|
+
}
|
|
77
|
+
return;
|
|
78
|
+
}
|
|
79
|
+
// summary / quiet: uma linha por seção; no summary, expande as que não estão ok.
|
|
80
|
+
for (const s of report.sections) {
|
|
81
|
+
console.log(headline(s));
|
|
82
|
+
if (mode === "summary" && s.status !== "ok")
|
|
83
|
+
for (const l of s.lines)
|
|
84
|
+
console.log(l);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
const DONE = "__done__";
|
|
88
|
+
/**
|
|
89
|
+
* Menu navegável pós-resumo (só TTY): o usuário escolhe uma seção pra ver o detalhe e
|
|
90
|
+
* volta ao menu; "seguir" continua o fluxo. É o "ir pro lado e ver as outras infos".
|
|
91
|
+
*/
|
|
92
|
+
export async function browseReport(report) {
|
|
93
|
+
if (!process.stdout.isTTY || report.sections.length === 0)
|
|
94
|
+
return;
|
|
95
|
+
for (;;) {
|
|
96
|
+
const choice = await select({
|
|
97
|
+
message: "Ver o detalhe de alguma seção? (↑/↓ navega, enter abre)",
|
|
98
|
+
choices: [
|
|
99
|
+
{ name: c.dim("▶ seguir"), value: DONE },
|
|
100
|
+
...report.sections.map((s) => ({
|
|
101
|
+
name: `${icon(s.status)} ${s.title} ${c.dim(`— ${s.summary}`)}`,
|
|
102
|
+
value: s.id,
|
|
103
|
+
})),
|
|
104
|
+
],
|
|
105
|
+
});
|
|
106
|
+
if (choice === DONE)
|
|
107
|
+
return;
|
|
108
|
+
const sec = report.sections.find((s) => s.id === choice);
|
|
109
|
+
if (sec) {
|
|
110
|
+
console.log("");
|
|
111
|
+
for (const l of sec.lines)
|
|
112
|
+
console.log(l);
|
|
113
|
+
console.log("");
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
//# sourceMappingURL=report.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"report.js","sourceRoot":"","sources":["../../../src/cli/ui/report.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC9C,OAAO,EAAE,CAAC,EAAE,GAAG,EAAE,MAAM,qBAAqB,CAAC;AAsB7C;;;GAGG;AACH,MAAM,UAAU,OAAO,CAAC,EAAc;IACpC,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC;IACzB,OAAO,CAAC,GAAG,GAAG,CAAC,GAAG,IAAe,EAAE,EAAE;QACnC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IACnD,CAAC,CAAC;IACF,IAAI,CAAC;QACH,EAAE,EAAE,CAAC;IACP,CAAC;YAAS,CAAC;QACT,OAAO,CAAC,GAAG,GAAG,IAAI,CAAC;IACrB,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,OAAO,UAAU;IACZ,QAAQ,GAAkB,EAAE,CAAC;IAEtC,GAAG,CAAC,OAAoB;QACtB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC9B,CAAC;IAED,sEAAsE;IACtE,WAAW,CACT,IAA2E,EAC3E,EAAc;QAEd,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAC5C,CAAC;CACF;AAED,kFAAkF;AAClF,MAAM,UAAU,kBAAkB,CAChC,KAA2B;IAE3B,MAAM,CAAC,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;IACpE,MAAM,IAAI,GAAG,CAAC,CAAC,aAAa,CAAC,CAAC;IAC9B,MAAM,QAAQ,GAAG,CAAC,CAAC,eAAe,CAAC,CAAC;IACpC,MAAM,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;IACvE,IAAI,CAAC,CAAC,OAAO,CAAC;QAAE,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;IACtD,IAAI,QAAQ;QAAE,KAAK,CAAC,IAAI,CAAC,GAAG,QAAQ,WAAW,CAAC,CAAC;IACjD,IAAI,IAAI;QAAE,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,OAAO,CAAC,CAAC;IACrC,OAAO;QACL,MAAM,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI;QACzD,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;KAC3B,CAAC;AACJ,CAAC;AAED,SAAS,IAAI,CAAC,MAAqB;IACjC,OAAO,MAAM,KAAK,IAAI;QACpB,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;QACjB,CAAC,CAAC,MAAM,KAAK,MAAM;YACjB,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;YACpB,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACvB,CAAC;AAED,SAAS,QAAQ,CAAC,CAAc;IAC9B,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;AAC7E,CAAC;AAED,yFAAyF;AACzF,MAAM,UAAU,iBAAiB,CAAC,IAA4C;IAC5E,IAAI,IAAI,CAAC,OAAO;QAAE,OAAO,SAAS,CAAC;IACnC,IAAI,IAAI,CAAC,KAAK;QAAE,OAAO,OAAO,CAAC;IAC/B,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC;AACpD,CAAC;AAED,wCAAwC;AACxC,MAAM,UAAU,YAAY,CAAC,MAAkB,EAAE,IAAgB;IAC/D,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO;IACzC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAEhB,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;QAC3C,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;YAChC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;YACzB,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK;gBAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAC1C,CAAC;QACD,OAAO;IACT,CAAC;IAED,iFAAiF;IACjF,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;QAChC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;QACzB,IAAI,IAAI,KAAK,SAAS,IAAI,CAAC,CAAC,MAAM,KAAK,IAAI;YAAE,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK;gBAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACvF,CAAC;AACH,CAAC;AAED,MAAM,IAAI,GAAG,UAAU,CAAC;AAExB;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,MAAkB;IACnD,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO;IAElE,SAAS,CAAC;QACR,MAAM,MAAM,GAAG,MAAM,MAAM,CAAS;YAClC,OAAO,EAAE,yDAAyD;YAClE,OAAO,EAAE;gBACP,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE;gBACxC,GAAG,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;oBAC7B,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE;oBAC/D,KAAK,EAAE,CAAC,CAAC,EAAE;iBACZ,CAAC,CAAC;aACJ;SACF,CAAC,CAAC;QACH,IAAI,MAAM,KAAK,IAAI;YAAE,OAAO;QAC5B,MAAM,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,CAAC;QACzD,IAAI,GAAG,EAAE,CAAC;YACR,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAChB,KAAK,MAAM,CAAC,IAAI,GAAG,CAAC,KAAK;gBAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YAC1C,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;AACH,CAAC"}
|
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
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client-configs.js","sourceRoot":"","sources":["../../src/lib/client-configs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"client-configs.js","sourceRoot":"","sources":["../../src/lib/client-configs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACvF,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAE7C,MAAM,WAAW,GAAG,KAAK,CAAC,UAAU,CAAC;AAcrC;;;GAGG;AACH,SAAS,YAAY,CAAC,IAAY;IAChC,IAAI,CAAC;QACH,OAAO,QAAQ,CAAC,IAAI,CAAmC,CAAC;IAC1D,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CACb,WAAW,IAAI,0BAA2B,GAAa,CAAC,OAAO,KAAK;YAClE,4CAA4C,CAC/C,CAAC;IACJ,CAAC;AACH,CAAC;AAED,SAAS,oBAAoB,CAC3B,IAAY,EACZ,OAAiC;IAEjC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QACtB,SAAS,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE,EAAE,OAAO,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,CAAC;QACnF,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;IACrC,CAAC;IAED,MAAM,QAAQ,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,CAA4B,CAAC;IACvE,MAAM,IAAI,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,CAA+C,CAAC;IACrF,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;IAEzC,IAAI,OAAO,IAAI,OAAO,CAAC,OAAO,KAAK,WAAW,EAAE,CAAC;QAC/C,OAAO,EAAE,MAAM,EAAE,oBAAoB,EAAE,IAAI,EAAE,CAAC;IAChD,CAAC;IAED,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;IAChC,MAAM,IAAI,GAAG;QACX,GAAG,QAAQ;QACX,CAAC,OAAO,CAAC,EAAE;YACT,GAAG,IAAI;YACP,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE,EAAE,OAAO,EAAE,WAAW,EAAE;SAC/C;KACF,CAAC;IACF,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACtB,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;AAC7C,CAAC;AAED,MAAM,UAAU,uBAAuB;IACrC,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,eAAe,CAAC,CAAC;IACzD,OAAO,oBAAoB,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;AAClD,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,GAAW;IAC/C,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;IACpC,OAAO,oBAAoB,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;AAClD,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,GAAW;IAC3C,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;IAC9C,OAAO,oBAAoB,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;AAC/C,CAAC;AAED,8EAA8E;AAC9E,4EAA4E;AAC5E,8EAA8E;AAE9E,uFAAuF;AACvF,MAAM,UAAU,eAAe;IAC7B,IAAI,OAAO,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAClC,OAAO,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,qBAAqB,EAAE,QAAQ,CAAC,CAAC;IACrE,CAAC;IACD,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;QACjC,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,SAAS,CAAC,EAAE,QAAQ,CAAC,CAAC;IACtF,CAAC;IACD,OAAO,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;AAC9C,CAAC;AAED,MAAM,UAAU,gBAAgB;IAC9B,OAAO,IAAI,CAAC,eAAe,EAAE,EAAE,4BAA4B,CAAC,CAAC;AAC/D,CAAC;AAED,gFAAgF;AAChF,MAAM,UAAU,kBAAkB;IAChC,OAAO,UAAU,CAAC,eAAe,EAAE,CAAC,CAAC;AACvC,CAAC;AAED,iEAAiE;AACjE,MAAM,UAAU,gBAAgB;IAC9B,MAAM,IAAI,GAAG,gBAAgB,EAAE,CAAC;IAChC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,KAAK,CAAC;IACpC,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,CAA6C,CAAC;QACpF,OAAO,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC;IACxD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,oFAAoF;AACpF,SAAS,eAAe;IACtB,MAAM,IAAI,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,eAAe;IACrE,OAAO,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,eAAe,CAAC,CAAC,CAAC,yBAAyB;AACrE,CAAC;AAQD;;;;;;;;GAQG;AACH,MAAM,UAAU,mBAAmB;IACjC,MAAM,IAAI,GAAG,gBAAgB,EAAE,CAAC;IAChC,MAAM,KAAK,GAAgB;QACzB,OAAO,EAAE,OAAO,CAAC,QAAQ;QACzB,IAAI,EAAE,CAAC,eAAe,EAAE,CAAC;QACzB,GAAG,EAAE,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,EAAE,QAAQ,EAAE;KACvC,CAAC;IAEF,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QACtB,SAAS,CAAC,IAAI,EAAE,EAAE,UAAU,EAAE,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;QACjE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;IACrC,CAAC;IAED,MAAM,QAAQ,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,CAA4B,CAAC;IACvE,MAAM,IAAI,GAAG,CAAC,QAAQ,CAAC,UAAU,IAAI,EAAE,CAA4C,CAAC;IACpF,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;IAEzC,IACE,OAAO;QACP,OAAO,CAAC,OAAO,KAAK,KAAK,CAAC,OAAO;QACjC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QACrC,OAAO,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,KAAK,QAAQ,EAC7C,CAAC;QACD,OAAO,EAAE,MAAM,EAAE,oBAAoB,EAAE,IAAI,EAAE,CAAC;IAChD,CAAC;IAED,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;IAChC,SAAS,CAAC,IAAI,EAAE,EAAE,GAAG,QAAQ,EAAE,UAAU,EAAE,EAAE,GAAG,IAAI,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;IACvF,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;AAC7C,CAAC;AAYD,SAAS,kBAAkB;IACzB,OAAO,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,eAAe,CAAC,CAAC;AACrD,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,IAAI,GAAG,kBAAkB,EAAE;IAC1D,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IACxE,MAAM,IAAI,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,CAAsC,CAAC;IAC7E,MAAM,KAAK,GAAG,IAAI,CAAC,mBAAmB,CAAC;IACvC,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,KAAK,KAAK,EAAE,CAAC;AACnD,CAAC;AAED,gFAAgF;AAChF,yEAAyE;AACzE,MAAM,UAAU,mBAAmB,CAAC,IAAI,GAAG,kBAAkB,EAAE;IAC7D,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;IAChC,MAAM,QAAQ,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC1D,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACrD,SAAS,CAAC,IAAI,EAAE,EAAE,GAAG,QAAQ,EAAE,mBAAmB,EAAE,KAAK,EAAE,CAAC,CAAC;IAC7D,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;AAClE,CAAC;AAOD;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAC7B,QAAiC,EACjC,WAA6D;IAE7D,MAAM,OAAO,GAAG,CAAC,QAAQ,CAAC,WAAW,IAAI,EAAE,CAAiD,CAAC;IAC7F,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;IAE5C,MAAM,iBAAiB,GAAG,OAAO,CAC/B,OAAO,IAAI,OAAO,CAAC,OAAO,KAAK,WAAW,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,KAAK,OAAO,CAC3F,CAAC;IAEF,MAAM,IAAI,GAA4B;QACpC,GAAG,QAAQ;QACX,WAAW,EAAE;YACX,GAAG,OAAO;YACV,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE;gBACpB,GAAG,OAAO;gBACV,GAAG,WAAW;gBACd,GAAG,EAAE,EAAE,GAAG,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,EAAE,OAAO,EAAE;aACvD;SACF;KACF,CAAC;IACF,OAAO,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAAC;AACrC,CAAC;AAED,MAAM,UAAU,kBAAkB;IAChC,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC;IAEtD,6EAA6E;IAC7E,4EAA4E;IAC5E,MAAM,WAAW,GAAG,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,EAAE,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,CAAC;IAEpF,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QACtB,SAAS,CAAC,IAAI,EAAE,EAAE,WAAW,EAAE,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE,WAAW,EAAE,EAAE,CAAC,CAAC;QACxE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;IACrC,CAAC;IAED,IAAI,QAAiC,CAAC;IACtC,IAAI,CAAC;QACH,QAAQ,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,CAA4B,CAAC;IAC/D,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CACb,WAAW,IAAI,0BAA2B,GAAa,CAAC,OAAO,KAAK;YAClE,4CAA4C,CAC/C,CAAC;IACJ,CAAC;IAED,MAAM,EAAE,iBAAiB,EAAE,IAAI,EAAE,GAAG,eAAe,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;IAC3E,IAAI,iBAAiB;QAAE,OAAO,EAAE,MAAM,EAAE,oBAAoB,EAAE,IAAI,EAAE,CAAC;IAErE,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;IAChC,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACtB,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;AAC7C,CAAC"}
|
|
@@ -6,6 +6,7 @@ import { homedir } from "node:os";
|
|
|
6
6
|
import { spawn } from "node:child_process";
|
|
7
7
|
import { VERSION } from "../version.js";
|
|
8
8
|
import { toolDefinitions } from "../tools/index.js";
|
|
9
|
+
import { brand } from "../brand.js";
|
|
9
10
|
/**
|
|
10
11
|
* Raiz do pacote instalado (onde ficam `dist/` e `node_modules/`).
|
|
11
12
|
* Este módulo compila para dist/lib/cowork-extension.js, então sobe dois níveis.
|
|
@@ -14,15 +15,49 @@ function packageRoot() {
|
|
|
14
15
|
const here = dirname(fileURLToPath(import.meta.url)); // .../dist/lib
|
|
15
16
|
return join(here, "..", "..");
|
|
16
17
|
}
|
|
17
|
-
/**
|
|
18
|
-
|
|
19
|
-
|
|
18
|
+
/** Nome + descrição normalizada (espaços colapsados, até 160 chars — limite do MCPB). */
|
|
19
|
+
function mapCoworkTools(tools) {
|
|
20
|
+
return tools.map((t) => ({
|
|
20
21
|
name: t.name,
|
|
21
22
|
description: (t.description ?? "")
|
|
22
23
|
.replace(/\s+/g, " ")
|
|
23
24
|
.trim()
|
|
24
25
|
.slice(0, 160),
|
|
25
26
|
}));
|
|
27
|
+
}
|
|
28
|
+
/** Bloco `server` do manifest: como o Claude Desktop sobe o servidor MCP do noclaf. */
|
|
29
|
+
function buildCoworkServerConfig() {
|
|
30
|
+
return {
|
|
31
|
+
type: "node",
|
|
32
|
+
entry_point: "dist/mcp-server.js",
|
|
33
|
+
mcp_config: {
|
|
34
|
+
command: "node",
|
|
35
|
+
args: ["${__dirname}/dist/mcp-server.js"],
|
|
36
|
+
env: {
|
|
37
|
+
NOCLAF_PAT: '${user_config.pat}',
|
|
38
|
+
NOCLAF_PROJECT_ID: '${user_config.project_id}',
|
|
39
|
+
NOCLAF_REPOSITORY_ID: '${user_config.repository_id}',
|
|
40
|
+
// Cowork ignora ~/.claude → o servidor pula o auto-pull e entrega as skills
|
|
41
|
+
// por resources + prompts.
|
|
42
|
+
NOCLAF_CLIENT: 'cowork',
|
|
43
|
+
},
|
|
44
|
+
},
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
/** Bloco `user_config` do manifest: campos que o app pede na instalação (o PAT). */
|
|
48
|
+
function buildCoworkUserConfig() {
|
|
49
|
+
return {
|
|
50
|
+
pat: {
|
|
51
|
+
type: "string",
|
|
52
|
+
title: "NOS Personal Access Token (PAT)",
|
|
53
|
+
description: `PAT do ${brand.productName} (formato ${brand.patPrefix}…), gerado em ${brand.webUrl}/profile#mcp. O projeto é escolhido por sessão com as tools ${brand.toolPrefix}list_projects / ${brand.toolPrefix}set_project — não há nada de projeto para configurar aqui.`,
|
|
54
|
+
sensitive: true,
|
|
55
|
+
required: true,
|
|
56
|
+
},
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
/** Gera o objeto manifest.json (spec MCPB) para a versão atual. */
|
|
60
|
+
export function buildCoworkManifest() {
|
|
26
61
|
return {
|
|
27
62
|
manifest_version: "0.2",
|
|
28
63
|
name: "noclaf-cli",
|
|
@@ -35,32 +70,9 @@ export function buildCoworkManifest() {
|
|
|
35
70
|
documentation: "https://github.com/Falcao-Tech/noclaf-cli#readme",
|
|
36
71
|
support: "https://github.com/Falcao-Tech/noclaf-cli/issues",
|
|
37
72
|
keywords: ["mcp", "noclaf", "nos", "tasks", "kanban", "time-tracking"],
|
|
38
|
-
server:
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
mcp_config: {
|
|
42
|
-
command: "node",
|
|
43
|
-
args: ["${__dirname}/dist/mcp-server.js"],
|
|
44
|
-
env: {
|
|
45
|
-
NOCLAF_PAT: '${user_config.pat}',
|
|
46
|
-
NOCLAF_PROJECT_ID: '${user_config.project_id}',
|
|
47
|
-
NOCLAF_REPOSITORY_ID: '${user_config.repository_id}',
|
|
48
|
-
// Cowork ignora ~/.claude → o servidor pula o auto-pull e entrega as skills
|
|
49
|
-
// por resources + prompts.
|
|
50
|
-
NOCLAF_CLIENT: 'cowork',
|
|
51
|
-
},
|
|
52
|
-
},
|
|
53
|
-
},
|
|
54
|
-
user_config: {
|
|
55
|
-
pat: {
|
|
56
|
-
type: "string",
|
|
57
|
-
title: "NOS Personal Access Token (PAT)",
|
|
58
|
-
description: "PAT do NOS (formato noc_…), gerado em https://nos.noclaf.com.br/profile#mcp. O projeto é escolhido por sessão com as tools nos_list_projects / nos_set_project — não há nada de projeto para configurar aqui.",
|
|
59
|
-
sensitive: true,
|
|
60
|
-
required: true,
|
|
61
|
-
},
|
|
62
|
-
},
|
|
63
|
-
tools,
|
|
73
|
+
server: buildCoworkServerConfig(),
|
|
74
|
+
user_config: buildCoworkUserConfig(),
|
|
75
|
+
tools: mapCoworkTools(toolDefinitions),
|
|
64
76
|
compatibility: {
|
|
65
77
|
platforms: ["darwin", "win32", "linux"],
|
|
66
78
|
runtimes: { node: ">=20.0.0" },
|
|
@@ -97,7 +109,7 @@ export function generateCoworkExtension(outputDir = defaultOutputDir()) {
|
|
|
97
109
|
const distDir = join(root, "dist");
|
|
98
110
|
const nodeModulesDir = join(root, "node_modules");
|
|
99
111
|
if (!existsSync(distDir)) {
|
|
100
|
-
throw new Error(`Não encontrei dist/ em ${root}. Reinstale o pacote (npm i -g
|
|
112
|
+
throw new Error(`Não encontrei dist/ em ${root}. Reinstale o pacote (npm i -g ${brand.packageName}).`);
|
|
101
113
|
}
|
|
102
114
|
const manifest = buildCoworkManifest();
|
|
103
115
|
const zip = new AdmZip();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cowork-extension.js","sourceRoot":"","sources":["../../src/lib/cowork-extension.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,SAAS,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAChE,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"cowork-extension.js","sourceRoot":"","sources":["../../src/lib/cowork-extension.ts"],"names":[],"mappings":"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"}
|