@nimbuslab/cli 0.13.6 → 0.14.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +86 -23
- package/package.json +1 -1
- package/src/commands/create.ts +28 -18
- package/src/commands/lola.ts +67 -2
- package/src/index.ts +2 -2
package/dist/index.js
CHANGED
|
@@ -150,7 +150,7 @@ var require_src = __commonJS((exports, module) => {
|
|
|
150
150
|
var require_package = __commonJS((exports, module) => {
|
|
151
151
|
module.exports = {
|
|
152
152
|
name: "@nimbuslab/cli",
|
|
153
|
-
version: "0.
|
|
153
|
+
version: "0.14.0",
|
|
154
154
|
description: "CLI para criar projetos nimbuslab",
|
|
155
155
|
type: "module",
|
|
156
156
|
bin: {
|
|
@@ -1328,15 +1328,18 @@ async function promptConfig(initialName, flags) {
|
|
|
1328
1328
|
console.log();
|
|
1329
1329
|
console.log(import_picocolors3.default.dim(" nimbus-core: Motor para projetos externos (stealth mode)"));
|
|
1330
1330
|
console.log();
|
|
1331
|
-
const
|
|
1332
|
-
message: "Create
|
|
1333
|
-
|
|
1331
|
+
const repoOption = await ve({
|
|
1332
|
+
message: "Create repository for this project?",
|
|
1333
|
+
options: [
|
|
1334
|
+
{ value: "github", label: "GitHub (nimbuslab, private)", hint: "recommended" },
|
|
1335
|
+
{ value: "none", label: "No repository", hint: "just local" }
|
|
1336
|
+
]
|
|
1334
1337
|
});
|
|
1335
|
-
if (pD(
|
|
1336
|
-
return
|
|
1338
|
+
if (pD(repoOption))
|
|
1339
|
+
return repoOption;
|
|
1337
1340
|
const clientRepo = await he({
|
|
1338
|
-
message: "Client repo URL (
|
|
1339
|
-
placeholder: "git@github.com:client/repo.git"
|
|
1341
|
+
message: "Client repo URL (to clone in workspace):",
|
|
1342
|
+
placeholder: "git@github.com:client/repo.git ou Azure DevOps URL"
|
|
1340
1343
|
});
|
|
1341
1344
|
if (pD(clientRepo))
|
|
1342
1345
|
return clientRepo;
|
|
@@ -1346,7 +1349,7 @@ async function promptConfig(initialName, flags) {
|
|
|
1346
1349
|
monorepo: false,
|
|
1347
1350
|
git: true,
|
|
1348
1351
|
install: false,
|
|
1349
|
-
github:
|
|
1352
|
+
github: repoOption === "github",
|
|
1350
1353
|
githubOrg: "nimbuslab",
|
|
1351
1354
|
githubDescription: `nimbus-core for ${name} - external project`,
|
|
1352
1355
|
theme: "dark",
|
|
@@ -1359,7 +1362,8 @@ async function promptConfig(initialName, flags) {
|
|
|
1359
1362
|
railwayToken: "",
|
|
1360
1363
|
stagingUrl: "",
|
|
1361
1364
|
productionUrl: "",
|
|
1362
|
-
customTemplate:
|
|
1365
|
+
customTemplate: null,
|
|
1366
|
+
clientRepoUrl: clientRepo || null
|
|
1363
1367
|
};
|
|
1364
1368
|
}
|
|
1365
1369
|
let monorepo = false;
|
|
@@ -1688,11 +1692,17 @@ async function createProject(config) {
|
|
|
1688
1692
|
s.stop("Error cloning template");
|
|
1689
1693
|
throw new Error(`Failed to clone template ${templateRepo}. Check your connection or repository access.`);
|
|
1690
1694
|
}
|
|
1691
|
-
if (config.type === "nimbus-core" && config.
|
|
1692
|
-
const clientRepoUrl = config.
|
|
1695
|
+
if (config.type === "nimbus-core" && config.clientRepoUrl) {
|
|
1696
|
+
const clientRepoUrl = config.clientRepoUrl;
|
|
1693
1697
|
s.start(`Cloning client repo in workspace...`);
|
|
1694
1698
|
try {
|
|
1695
|
-
|
|
1699
|
+
let projectName = "client-project";
|
|
1700
|
+
if (clientRepoUrl.includes("visualstudio.com") || clientRepoUrl.includes("dev.azure.com")) {
|
|
1701
|
+
const parts = clientRepoUrl.split("/");
|
|
1702
|
+
projectName = parts[parts.length - 1] || "client-project";
|
|
1703
|
+
} else {
|
|
1704
|
+
projectName = clientRepoUrl.split("/").pop()?.replace(".git", "") || "client-project";
|
|
1705
|
+
}
|
|
1696
1706
|
await $2`git clone ${clientRepoUrl} ${config.name}/workspace/${projectName}`.quiet();
|
|
1697
1707
|
s.stop(`Client repo cloned: workspace/${projectName}`);
|
|
1698
1708
|
} catch (error) {
|
|
@@ -1870,13 +1880,8 @@ function showNextSteps(config) {
|
|
|
1870
1880
|
console.log();
|
|
1871
1881
|
console.log(import_picocolors3.default.dim(" nimbus-core: Motor para projetos externos"));
|
|
1872
1882
|
console.log();
|
|
1873
|
-
console.log(import_picocolors3.default.dim(" Para clonar repo do cliente:"));
|
|
1874
|
-
console.log(` ${import_picocolors3.default.cyan("cd")} workspace`);
|
|
1875
|
-
console.log(` ${import_picocolors3.default.cyan("git clone")} <repo-do-cliente>`);
|
|
1876
|
-
console.log();
|
|
1877
1883
|
console.log(import_picocolors3.default.dim(" Para usar a Lola:"));
|
|
1878
|
-
console.log(` ${import_picocolors3.default.cyan("
|
|
1879
|
-
console.log(` ${import_picocolors3.default.cyan("claude --append-system-prompt-file .claude/agents/lola.md")}`);
|
|
1884
|
+
console.log(` ${import_picocolors3.default.cyan("lola")}`);
|
|
1880
1885
|
console.log();
|
|
1881
1886
|
console.log(import_picocolors3.default.yellow(" STEALTH MODE: Commits sem mencao a nimbuslab/Lola/IA"));
|
|
1882
1887
|
console.log();
|
|
@@ -2475,6 +2480,53 @@ var HOME = homedir();
|
|
|
2475
2480
|
var LOLA_DIR = join3(HOME, ".lola");
|
|
2476
2481
|
var LOLA_REPO = "git@github.com:nimbuslab/lola.git";
|
|
2477
2482
|
var USER_MEMORY = join3(HOME, ".claude", "USER_MEMORY.md");
|
|
2483
|
+
var LOLA_MEMORY_URL = "https://lola.nimbuslab.com.br/sse";
|
|
2484
|
+
var LOLA_MEMORY_NAME = "lola-memory";
|
|
2485
|
+
async function installLolaMemoryMCP() {
|
|
2486
|
+
console.log();
|
|
2487
|
+
console.log(import_picocolors7.default.cyan(" Configurando lola-memory MCP..."));
|
|
2488
|
+
const claudeCheck = Bun.spawnSync(["which", "claude"], { stdout: "pipe" });
|
|
2489
|
+
if (claudeCheck.exitCode !== 0) {
|
|
2490
|
+
console.log(import_picocolors7.default.yellow(" Claude CLI nao encontrado, pulando MCP"));
|
|
2491
|
+
console.log(import_picocolors7.default.dim(" Instale o Claude CLI e rode 'nimbus lola install' novamente"));
|
|
2492
|
+
return;
|
|
2493
|
+
}
|
|
2494
|
+
const mcpList = Bun.spawnSync(["claude", "mcp", "list"], { stdout: "pipe", stderr: "pipe" });
|
|
2495
|
+
const mcpOutput = mcpList.stdout.toString();
|
|
2496
|
+
if (mcpOutput.includes(LOLA_MEMORY_NAME)) {
|
|
2497
|
+
console.log(import_picocolors7.default.green(" MCP lola-memory ja configurado"));
|
|
2498
|
+
return;
|
|
2499
|
+
}
|
|
2500
|
+
console.log(import_picocolors7.default.dim(" Adicionando MCP lola-memory..."));
|
|
2501
|
+
const result = Bun.spawnSync([
|
|
2502
|
+
"claude",
|
|
2503
|
+
"mcp",
|
|
2504
|
+
"add",
|
|
2505
|
+
"-t",
|
|
2506
|
+
"sse",
|
|
2507
|
+
"-s",
|
|
2508
|
+
"user",
|
|
2509
|
+
LOLA_MEMORY_NAME,
|
|
2510
|
+
"--",
|
|
2511
|
+
"bunx",
|
|
2512
|
+
"mcp-remote",
|
|
2513
|
+
LOLA_MEMORY_URL
|
|
2514
|
+
], {
|
|
2515
|
+
stdout: "inherit",
|
|
2516
|
+
stderr: "inherit"
|
|
2517
|
+
});
|
|
2518
|
+
if (result.exitCode !== 0) {
|
|
2519
|
+
console.log(import_picocolors7.default.yellow(" Erro ao adicionar MCP, pode ser adicionado manualmente:"));
|
|
2520
|
+
console.log(import_picocolors7.default.dim(` claude mcp add -t sse -s user ${LOLA_MEMORY_NAME} -- bunx mcp-remote ${LOLA_MEMORY_URL}`));
|
|
2521
|
+
return;
|
|
2522
|
+
}
|
|
2523
|
+
console.log(import_picocolors7.default.green(" MCP lola-memory instalado!"));
|
|
2524
|
+
console.log();
|
|
2525
|
+
console.log(import_picocolors7.default.dim(" Comandos disponiveis:"));
|
|
2526
|
+
console.log(import_picocolors7.default.dim(' remember "query" - Buscar conhecimento'));
|
|
2527
|
+
console.log(import_picocolors7.default.dim(' learn "content" - Salvar conhecimento'));
|
|
2528
|
+
console.log(import_picocolors7.default.dim(" memory_stats - Ver estatisticas"));
|
|
2529
|
+
}
|
|
2478
2530
|
async function installLola() {
|
|
2479
2531
|
console.log();
|
|
2480
2532
|
console.log(import_picocolors7.default.cyan(" Lola - Code Agent da nimbuslab"));
|
|
@@ -2596,6 +2648,7 @@ fi
|
|
|
2596
2648
|
console.log(import_picocolors7.default.green(" Script lola ja existe"));
|
|
2597
2649
|
}
|
|
2598
2650
|
}
|
|
2651
|
+
await installLolaMemoryMCP();
|
|
2599
2652
|
const claudeDir = join3(HOME, ".claude");
|
|
2600
2653
|
if (!existsSync2(USER_MEMORY)) {
|
|
2601
2654
|
console.log();
|
|
@@ -2644,7 +2697,11 @@ lola_profile: millennial
|
|
|
2644
2697
|
console.log();
|
|
2645
2698
|
console.log(import_picocolors7.default.bold(" Para usar a Lola:"));
|
|
2646
2699
|
console.log(import_picocolors7.default.dim(" lola ") + import_picocolors7.default.white("# Iniciar sessao"));
|
|
2647
|
-
console.log(
|
|
2700
|
+
console.log();
|
|
2701
|
+
console.log(import_picocolors7.default.bold(" lola-memory (conhecimento compartilhado):"));
|
|
2702
|
+
console.log(import_picocolors7.default.dim(' remember "query" ') + import_picocolors7.default.white("# Buscar conhecimento"));
|
|
2703
|
+
console.log(import_picocolors7.default.dim(' learn "content" ') + import_picocolors7.default.white("# Salvar conhecimento"));
|
|
2704
|
+
console.log(import_picocolors7.default.dim(" memory_stats ") + import_picocolors7.default.white("# Ver estatisticas"));
|
|
2648
2705
|
console.log();
|
|
2649
2706
|
console.log(import_picocolors7.default.bold(" Para mudar perfil, edite ~/.claude/USER_MEMORY.md:"));
|
|
2650
2707
|
console.log(import_picocolors7.default.dim(" lola_profile: millennial|genz|profissional|nerd|chill"));
|
|
@@ -2996,7 +3053,7 @@ function showLolaHelp() {
|
|
|
2996
3053
|
console.log(import_picocolors7.default.bold(" Uso:") + " nimbus lola [subcomando]");
|
|
2997
3054
|
console.log();
|
|
2998
3055
|
console.log(import_picocolors7.default.bold(" Subcomandos:"));
|
|
2999
|
-
console.log(import_picocolors7.default.dim(" install ") + import_picocolors7.default.white("Instalar/atualizar Lola"));
|
|
3056
|
+
console.log(import_picocolors7.default.dim(" install ") + import_picocolors7.default.white("Instalar/atualizar Lola + MCP"));
|
|
3000
3057
|
console.log(import_picocolors7.default.dim(" sync ") + import_picocolors7.default.white("Alias para install"));
|
|
3001
3058
|
console.log(import_picocolors7.default.dim(" onboard ") + import_picocolors7.default.white("Configurar perfil (novos devs)"));
|
|
3002
3059
|
console.log(import_picocolors7.default.dim(" quiz ") + import_picocolors7.default.white("Quiz sobre a nimbuslab"));
|
|
@@ -3009,6 +3066,12 @@ function showLolaHelp() {
|
|
|
3009
3066
|
console.log(import_picocolors7.default.dim(" $ nimbus lola quiz"));
|
|
3010
3067
|
console.log(import_picocolors7.default.dim(' $ nimbus lola suggest "adicionar suporte a X"'));
|
|
3011
3068
|
console.log();
|
|
3069
|
+
console.log(import_picocolors7.default.bold(" lola-memory (dentro do Claude):"));
|
|
3070
|
+
console.log(import_picocolors7.default.dim(' remember "query" ') + import_picocolors7.default.white("Buscar conhecimento"));
|
|
3071
|
+
console.log(import_picocolors7.default.dim(' learn "content" ') + import_picocolors7.default.white("Salvar conhecimento"));
|
|
3072
|
+
console.log(import_picocolors7.default.dim(" memory_stats ") + import_picocolors7.default.white("Ver estatisticas"));
|
|
3073
|
+
console.log(import_picocolors7.default.dim(" get_context ") + import_picocolors7.default.white("Perfil + memorias recentes"));
|
|
3074
|
+
console.log();
|
|
3012
3075
|
}
|
|
3013
3076
|
|
|
3014
3077
|
// src/index.ts
|
|
@@ -3051,8 +3114,8 @@ function showUpdateNotice(latestVersion) {
|
|
|
3051
3114
|
const maxLen = Math.max(line1.length, line2.length);
|
|
3052
3115
|
const border = "\u2500".repeat(maxLen + 2);
|
|
3053
3116
|
console.log(import_picocolors8.default.yellow(` \u250C${border}\u2510`));
|
|
3054
|
-
console.log(import_picocolors8.default.yellow(` \u2502`) + import_picocolors8.default.white(line1.padEnd(maxLen +
|
|
3055
|
-
console.log(import_picocolors8.default.yellow(` \u2502`) + import_picocolors8.default.cyan(line2.padEnd(maxLen +
|
|
3117
|
+
console.log(import_picocolors8.default.yellow(` \u2502`) + import_picocolors8.default.white(line1.padEnd(maxLen + 2)) + import_picocolors8.default.yellow(`\u2502`));
|
|
3118
|
+
console.log(import_picocolors8.default.yellow(` \u2502`) + import_picocolors8.default.cyan(line2.padEnd(maxLen + 2)) + import_picocolors8.default.yellow(`\u2502`));
|
|
3056
3119
|
console.log(import_picocolors8.default.yellow(` \u2514${border}\u2518`));
|
|
3057
3120
|
console.log();
|
|
3058
3121
|
}
|
package/package.json
CHANGED
package/src/commands/create.ts
CHANGED
|
@@ -196,6 +196,8 @@ interface ProjectConfig {
|
|
|
196
196
|
productionUrl: string
|
|
197
197
|
// Template customizado
|
|
198
198
|
customTemplate: string | null
|
|
199
|
+
// nimbus-core: URL do repo do cliente
|
|
200
|
+
clientRepoUrl?: string | null
|
|
199
201
|
}
|
|
200
202
|
|
|
201
203
|
interface CreateFlags {
|
|
@@ -547,17 +549,20 @@ async function promptConfig(initialName?: string, flags?: CreateFlags): Promise<
|
|
|
547
549
|
console.log(pc.dim(" nimbus-core: Motor para projetos externos (stealth mode)"))
|
|
548
550
|
console.log()
|
|
549
551
|
|
|
550
|
-
//
|
|
551
|
-
const
|
|
552
|
-
message: "Create
|
|
553
|
-
|
|
552
|
+
// Perguntar se quer criar repo (GitHub ou nenhum)
|
|
553
|
+
const repoOption = await p.select({
|
|
554
|
+
message: "Create repository for this project?",
|
|
555
|
+
options: [
|
|
556
|
+
{ value: "github", label: "GitHub (nimbuslab, private)", hint: "recommended" },
|
|
557
|
+
{ value: "none", label: "No repository", hint: "just local" },
|
|
558
|
+
],
|
|
554
559
|
})
|
|
555
|
-
if (p.isCancel(
|
|
560
|
+
if (p.isCancel(repoOption)) return repoOption
|
|
556
561
|
|
|
557
562
|
// Perguntar URL do repo do cliente para clonar no workspace
|
|
558
563
|
const clientRepo = await p.text({
|
|
559
|
-
message: "Client repo URL (
|
|
560
|
-
placeholder: "git@github.com:client/repo.git",
|
|
564
|
+
message: "Client repo URL (to clone in workspace):",
|
|
565
|
+
placeholder: "git@github.com:client/repo.git ou Azure DevOps URL",
|
|
561
566
|
})
|
|
562
567
|
if (p.isCancel(clientRepo)) return clientRepo
|
|
563
568
|
|
|
@@ -567,7 +572,7 @@ async function promptConfig(initialName?: string, flags?: CreateFlags): Promise<
|
|
|
567
572
|
monorepo: false,
|
|
568
573
|
git: true, // sempre init git
|
|
569
574
|
install: false, // nimbus-core não tem package.json
|
|
570
|
-
github:
|
|
575
|
+
github: repoOption === "github",
|
|
571
576
|
githubOrg: "nimbuslab", // sempre na org nimbuslab
|
|
572
577
|
githubDescription: `nimbus-core for ${name} - external project`,
|
|
573
578
|
theme: "dark" as const,
|
|
@@ -580,7 +585,8 @@ async function promptConfig(initialName?: string, flags?: CreateFlags): Promise<
|
|
|
580
585
|
railwayToken: "",
|
|
581
586
|
stagingUrl: "",
|
|
582
587
|
productionUrl: "",
|
|
583
|
-
customTemplate:
|
|
588
|
+
customTemplate: null, // não usa template customizado
|
|
589
|
+
clientRepoUrl: (clientRepo as string) || null, // URL do cliente separada
|
|
584
590
|
}
|
|
585
591
|
}
|
|
586
592
|
|
|
@@ -972,11 +978,20 @@ async function createProject(config: ProjectConfig) {
|
|
|
972
978
|
}
|
|
973
979
|
|
|
974
980
|
// nimbus-core: clone client repo in workspace if provided
|
|
975
|
-
if (config.type === "nimbus-core" && config.
|
|
976
|
-
const clientRepoUrl = config.
|
|
981
|
+
if (config.type === "nimbus-core" && config.clientRepoUrl) {
|
|
982
|
+
const clientRepoUrl = config.clientRepoUrl
|
|
977
983
|
s.start(`Cloning client repo in workspace...`)
|
|
978
984
|
try {
|
|
979
|
-
|
|
985
|
+
// Extrair nome do projeto da URL (funciona com GitHub, GitLab, Azure DevOps)
|
|
986
|
+
let projectName = "client-project"
|
|
987
|
+
if (clientRepoUrl.includes("visualstudio.com") || clientRepoUrl.includes("dev.azure.com")) {
|
|
988
|
+
// Azure DevOps: serel@vs-ssh.visualstudio.com:v3/serel/Project/Repo
|
|
989
|
+
const parts = clientRepoUrl.split("/")
|
|
990
|
+
projectName = parts[parts.length - 1] || "client-project"
|
|
991
|
+
} else {
|
|
992
|
+
// GitHub/GitLab: git@github.com:org/repo.git
|
|
993
|
+
projectName = clientRepoUrl.split("/").pop()?.replace(".git", "") || "client-project"
|
|
994
|
+
}
|
|
980
995
|
await $`git clone ${clientRepoUrl} ${config.name}/workspace/${projectName}`.quiet()
|
|
981
996
|
s.stop(`Client repo cloned: workspace/${projectName}`)
|
|
982
997
|
} catch (error) {
|
|
@@ -1204,13 +1219,8 @@ function showNextSteps(config: ProjectConfig) {
|
|
|
1204
1219
|
console.log()
|
|
1205
1220
|
console.log(pc.dim(" nimbus-core: Motor para projetos externos"))
|
|
1206
1221
|
console.log()
|
|
1207
|
-
console.log(pc.dim(" Para clonar repo do cliente:"))
|
|
1208
|
-
console.log(` ${pc.cyan("cd")} workspace`)
|
|
1209
|
-
console.log(` ${pc.cyan("git clone")} <repo-do-cliente>`)
|
|
1210
|
-
console.log()
|
|
1211
1222
|
console.log(pc.dim(" Para usar a Lola:"))
|
|
1212
|
-
console.log(` ${pc.cyan("
|
|
1213
|
-
console.log(` ${pc.cyan("claude --append-system-prompt-file .claude/agents/lola.md")}`)
|
|
1223
|
+
console.log(` ${pc.cyan("lola")}`)
|
|
1214
1224
|
console.log()
|
|
1215
1225
|
console.log(pc.yellow(" STEALTH MODE: Commits sem mencao a nimbuslab/Lola/IA"))
|
|
1216
1226
|
console.log()
|
package/src/commands/lola.ts
CHANGED
|
@@ -8,6 +8,58 @@ const HOME = homedir()
|
|
|
8
8
|
const LOLA_DIR = join(HOME, ".lola")
|
|
9
9
|
const LOLA_REPO = "git@github.com:nimbuslab/lola.git"
|
|
10
10
|
const USER_MEMORY = join(HOME, ".claude", "USER_MEMORY.md")
|
|
11
|
+
const LOLA_MEMORY_URL = "https://lola.nimbuslab.com.br/sse"
|
|
12
|
+
const LOLA_MEMORY_NAME = "lola-memory"
|
|
13
|
+
|
|
14
|
+
async function installLolaMemoryMCP(): Promise<void> {
|
|
15
|
+
console.log()
|
|
16
|
+
console.log(pc.cyan(" Configurando lola-memory MCP..."))
|
|
17
|
+
|
|
18
|
+
// Verificar se claude CLI existe
|
|
19
|
+
const claudeCheck = Bun.spawnSync(["which", "claude"], { stdout: "pipe" })
|
|
20
|
+
if (claudeCheck.exitCode !== 0) {
|
|
21
|
+
console.log(pc.yellow(" Claude CLI nao encontrado, pulando MCP"))
|
|
22
|
+
console.log(pc.dim(" Instale o Claude CLI e rode 'nimbus lola install' novamente"))
|
|
23
|
+
return
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
// Verificar se MCP já está configurado
|
|
27
|
+
const mcpList = Bun.spawnSync(["claude", "mcp", "list"], { stdout: "pipe", stderr: "pipe" })
|
|
28
|
+
const mcpOutput = mcpList.stdout.toString()
|
|
29
|
+
|
|
30
|
+
if (mcpOutput.includes(LOLA_MEMORY_NAME)) {
|
|
31
|
+
console.log(pc.green(" MCP lola-memory ja configurado"))
|
|
32
|
+
return
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
// Adicionar MCP lola-memory
|
|
36
|
+
console.log(pc.dim(" Adicionando MCP lola-memory..."))
|
|
37
|
+
|
|
38
|
+
const result = Bun.spawnSync([
|
|
39
|
+
"claude", "mcp", "add",
|
|
40
|
+
"-t", "sse",
|
|
41
|
+
"-s", "user",
|
|
42
|
+
LOLA_MEMORY_NAME,
|
|
43
|
+
"--",
|
|
44
|
+
"bunx", "mcp-remote", LOLA_MEMORY_URL
|
|
45
|
+
], {
|
|
46
|
+
stdout: "inherit",
|
|
47
|
+
stderr: "inherit",
|
|
48
|
+
})
|
|
49
|
+
|
|
50
|
+
if (result.exitCode !== 0) {
|
|
51
|
+
console.log(pc.yellow(" Erro ao adicionar MCP, pode ser adicionado manualmente:"))
|
|
52
|
+
console.log(pc.dim(` claude mcp add -t sse -s user ${LOLA_MEMORY_NAME} -- bunx mcp-remote ${LOLA_MEMORY_URL}`))
|
|
53
|
+
return
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
console.log(pc.green(" MCP lola-memory instalado!"))
|
|
57
|
+
console.log()
|
|
58
|
+
console.log(pc.dim(" Comandos disponiveis:"))
|
|
59
|
+
console.log(pc.dim(" remember \"query\" - Buscar conhecimento"))
|
|
60
|
+
console.log(pc.dim(" learn \"content\" - Salvar conhecimento"))
|
|
61
|
+
console.log(pc.dim(" memory_stats - Ver estatisticas"))
|
|
62
|
+
}
|
|
11
63
|
|
|
12
64
|
async function installLola(): Promise<void> {
|
|
13
65
|
console.log()
|
|
@@ -162,6 +214,9 @@ fi
|
|
|
162
214
|
}
|
|
163
215
|
}
|
|
164
216
|
|
|
217
|
+
// Instalar MCP lola-memory
|
|
218
|
+
await installLolaMemoryMCP()
|
|
219
|
+
|
|
165
220
|
// Verificar USER_MEMORY.md
|
|
166
221
|
const claudeDir = join(HOME, ".claude")
|
|
167
222
|
if (!existsSync(USER_MEMORY)) {
|
|
@@ -217,7 +272,11 @@ lola_profile: millennial
|
|
|
217
272
|
console.log()
|
|
218
273
|
console.log(pc.bold(" Para usar a Lola:"))
|
|
219
274
|
console.log(pc.dim(" lola ") + pc.white("# Iniciar sessao"))
|
|
220
|
-
console.log(
|
|
275
|
+
console.log()
|
|
276
|
+
console.log(pc.bold(" lola-memory (conhecimento compartilhado):"))
|
|
277
|
+
console.log(pc.dim(" remember \"query\" ") + pc.white("# Buscar conhecimento"))
|
|
278
|
+
console.log(pc.dim(" learn \"content\" ") + pc.white("# Salvar conhecimento"))
|
|
279
|
+
console.log(pc.dim(" memory_stats ") + pc.white("# Ver estatisticas"))
|
|
221
280
|
console.log()
|
|
222
281
|
console.log(pc.bold(" Para mudar perfil, edite ~/.claude/USER_MEMORY.md:"))
|
|
223
282
|
console.log(pc.dim(" lola_profile: millennial|genz|profissional|nerd|chill"))
|
|
@@ -620,7 +679,7 @@ function showLolaHelp() {
|
|
|
620
679
|
console.log(pc.bold(" Uso:") + " nimbus lola [subcomando]")
|
|
621
680
|
console.log()
|
|
622
681
|
console.log(pc.bold(" Subcomandos:"))
|
|
623
|
-
console.log(pc.dim(" install ") + pc.white("Instalar/atualizar Lola"))
|
|
682
|
+
console.log(pc.dim(" install ") + pc.white("Instalar/atualizar Lola + MCP"))
|
|
624
683
|
console.log(pc.dim(" sync ") + pc.white("Alias para install"))
|
|
625
684
|
console.log(pc.dim(" onboard ") + pc.white("Configurar perfil (novos devs)"))
|
|
626
685
|
console.log(pc.dim(" quiz ") + pc.white("Quiz sobre a nimbuslab"))
|
|
@@ -633,4 +692,10 @@ function showLolaHelp() {
|
|
|
633
692
|
console.log(pc.dim(" $ nimbus lola quiz"))
|
|
634
693
|
console.log(pc.dim(" $ nimbus lola suggest \"adicionar suporte a X\""))
|
|
635
694
|
console.log()
|
|
695
|
+
console.log(pc.bold(" lola-memory (dentro do Claude):"))
|
|
696
|
+
console.log(pc.dim(" remember \"query\" ") + pc.white("Buscar conhecimento"))
|
|
697
|
+
console.log(pc.dim(" learn \"content\" ") + pc.white("Salvar conhecimento"))
|
|
698
|
+
console.log(pc.dim(" memory_stats ") + pc.white("Ver estatisticas"))
|
|
699
|
+
console.log(pc.dim(" get_context ") + pc.white("Perfil + memorias recentes"))
|
|
700
|
+
console.log()
|
|
636
701
|
}
|
package/src/index.ts
CHANGED
|
@@ -58,8 +58,8 @@ function showUpdateNotice(latestVersion: string) {
|
|
|
58
58
|
const border = "─".repeat(maxLen + 2)
|
|
59
59
|
|
|
60
60
|
console.log(pc.yellow(` ┌${border}┐`))
|
|
61
|
-
console.log(pc.yellow(` │`) + pc.white(line1.padEnd(maxLen +
|
|
62
|
-
console.log(pc.yellow(` │`) + pc.cyan(line2.padEnd(maxLen +
|
|
61
|
+
console.log(pc.yellow(` │`) + pc.white(line1.padEnd(maxLen + 2)) + pc.yellow(`│`))
|
|
62
|
+
console.log(pc.yellow(` │`) + pc.cyan(line2.padEnd(maxLen + 2)) + pc.yellow(`│`))
|
|
63
63
|
console.log(pc.yellow(` └${border}┘`))
|
|
64
64
|
console.log()
|
|
65
65
|
}
|