nuxs-capsule 0.1.16 → 0.1.18
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/bin/nuxs-capsule.js +5 -1
- package/dist/scan.d.ts +42 -0
- package/dist/scan.d.ts.map +1 -0
- package/dist/scan.js +250 -0
- package/dist/scan.js.map +1 -0
- package/dist/setup.js +48 -12
- package/dist/setup.js.map +1 -1
- package/package.json +2 -1
package/bin/nuxs-capsule.js
CHANGED
|
@@ -17,11 +17,15 @@ if (cmd === 'install') {
|
|
|
17
17
|
if (result.pending > 0) {
|
|
18
18
|
console.log(`[nuxs-capsule] flushed: ${result.sent} sent, ${result.failed} failed, ${result.pending} pending`);
|
|
19
19
|
}
|
|
20
|
+
} else if (cmd === 'scan') {
|
|
21
|
+
// Detecta agentes locais e registra no painel
|
|
22
|
+
const { runScanCli } = await import('../dist/scan.js');
|
|
23
|
+
await runScanCli();
|
|
20
24
|
} else if (cmd === 'serve' || cmd === undefined) {
|
|
21
25
|
// Default: roda como MCP server (stdio)
|
|
22
26
|
await import('../dist/server.js');
|
|
23
27
|
} else {
|
|
24
28
|
console.error(`nuxs-capsule: comando desconhecido "${cmd}"`);
|
|
25
|
-
console.error('Use: install | setup | wrap | flush | serve');
|
|
29
|
+
console.error('Use: install | setup | wrap | flush | scan | serve');
|
|
26
30
|
process.exit(1);
|
|
27
31
|
}
|
package/dist/scan.d.ts
ADDED
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* scan.ts — Sprint 3 (28/Mai/2026)
|
|
3
|
+
*
|
|
4
|
+
* Detecta agentes IA neste PC via 4 vetores:
|
|
5
|
+
* 1. launchd plists (~/Library/LaunchAgents/*.plist) — macOS
|
|
6
|
+
* 2. systemd units (systemctl --user list-units) — Linux
|
|
7
|
+
* 3. processos rodando (ps aux) — Mac/Linux
|
|
8
|
+
* 4. configs conhecidas (~/.claude, ~/.cursor, ~/.aider, ~/.continue)
|
|
9
|
+
*
|
|
10
|
+
* Plus: npm globals com keywords AI.
|
|
11
|
+
*
|
|
12
|
+
* Retorna lista pra `nuxs-capsule scan` mostrar wizard + auto-register
|
|
13
|
+
* via /api/nuxs/agents/register cada detectado.
|
|
14
|
+
*/
|
|
15
|
+
export interface DetectedAgent {
|
|
16
|
+
kind: string;
|
|
17
|
+
label: string;
|
|
18
|
+
source: 'launchd' | 'systemd' | 'process' | 'config' | 'npm';
|
|
19
|
+
pid?: number;
|
|
20
|
+
config_path?: string;
|
|
21
|
+
binary_path?: string;
|
|
22
|
+
detail?: string;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* scanLocalAgents — entry point. Combina os 4 vetores + dedup por label.
|
|
26
|
+
*/
|
|
27
|
+
export declare function scanLocalAgents(): DetectedAgent[];
|
|
28
|
+
/**
|
|
29
|
+
* Registra todos os agentes detectados no backend Nuxs.
|
|
30
|
+
* Idempotente (backend faz upsert por fingerprint+kind+label).
|
|
31
|
+
*/
|
|
32
|
+
export declare function registerDetectedAgents(): Promise<{
|
|
33
|
+
ok: number;
|
|
34
|
+
failed: number;
|
|
35
|
+
agents: Array<{
|
|
36
|
+
label: string;
|
|
37
|
+
agent_id: string | null;
|
|
38
|
+
}>;
|
|
39
|
+
}>;
|
|
40
|
+
/** Comando CLI `nuxs-capsule scan`. Mostra wizard + auto-register. */
|
|
41
|
+
export declare function runScanCli(): Promise<void>;
|
|
42
|
+
//# sourceMappingURL=scan.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scan.d.ts","sourceRoot":"","sources":["../src/scan.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAOH,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,QAAQ,GAAG,KAAK,CAAC;IAC7D,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAgJD;;GAEG;AACH,wBAAgB,eAAe,IAAI,aAAa,EAAE,CAkBjD;AAED;;;GAGG;AACH,wBAAsB,sBAAsB,IAAI,OAAO,CAAC;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC,CAAA;CAAE,CAAC,CAkBjJ;AAED,sEAAsE;AACtE,wBAAsB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAmBhD"}
|
package/dist/scan.js
ADDED
|
@@ -0,0 +1,250 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* scan.ts — Sprint 3 (28/Mai/2026)
|
|
3
|
+
*
|
|
4
|
+
* Detecta agentes IA neste PC via 4 vetores:
|
|
5
|
+
* 1. launchd plists (~/Library/LaunchAgents/*.plist) — macOS
|
|
6
|
+
* 2. systemd units (systemctl --user list-units) — Linux
|
|
7
|
+
* 3. processos rodando (ps aux) — Mac/Linux
|
|
8
|
+
* 4. configs conhecidas (~/.claude, ~/.cursor, ~/.aider, ~/.continue)
|
|
9
|
+
*
|
|
10
|
+
* Plus: npm globals com keywords AI.
|
|
11
|
+
*
|
|
12
|
+
* Retorna lista pra `nuxs-capsule scan` mostrar wizard + auto-register
|
|
13
|
+
* via /api/nuxs/agents/register cada detectado.
|
|
14
|
+
*/
|
|
15
|
+
import { execSync } from 'node:child_process';
|
|
16
|
+
import { existsSync, readdirSync, readFileSync } from 'node:fs';
|
|
17
|
+
import { homedir, platform, hostname } from 'node:os';
|
|
18
|
+
import { join } from 'node:path';
|
|
19
|
+
// ─── 1. LAUNCHD (macOS) ────────────────────────────────────────────
|
|
20
|
+
function scanLaunchd() {
|
|
21
|
+
if (platform() !== 'darwin')
|
|
22
|
+
return [];
|
|
23
|
+
const dir = join(homedir(), 'Library', 'LaunchAgents');
|
|
24
|
+
if (!existsSync(dir))
|
|
25
|
+
return [];
|
|
26
|
+
const out = [];
|
|
27
|
+
let files = [];
|
|
28
|
+
try {
|
|
29
|
+
files = readdirSync(dir).filter((f) => f.endsWith('.plist'));
|
|
30
|
+
}
|
|
31
|
+
catch {
|
|
32
|
+
return [];
|
|
33
|
+
}
|
|
34
|
+
for (const file of files) {
|
|
35
|
+
const path = join(dir, file);
|
|
36
|
+
let content = '';
|
|
37
|
+
try {
|
|
38
|
+
content = readFileSync(path, 'utf8');
|
|
39
|
+
}
|
|
40
|
+
catch {
|
|
41
|
+
continue;
|
|
42
|
+
}
|
|
43
|
+
// Detecta kind por nome OU conteúdo
|
|
44
|
+
const lower = file.toLowerCase() + ' ' + content.toLowerCase();
|
|
45
|
+
let kind = null;
|
|
46
|
+
if (/flyone|fly\.plist/i.test(file))
|
|
47
|
+
kind = 'fly';
|
|
48
|
+
else if (/openclaw/.test(lower))
|
|
49
|
+
kind = 'openclaw';
|
|
50
|
+
else if (/hermes/.test(lower))
|
|
51
|
+
kind = 'hermes';
|
|
52
|
+
else if (/cursor/.test(lower))
|
|
53
|
+
kind = 'cursor';
|
|
54
|
+
else if (/anthropic|claude/i.test(lower))
|
|
55
|
+
kind = 'claude_agent';
|
|
56
|
+
else
|
|
57
|
+
continue;
|
|
58
|
+
// Extrai Label
|
|
59
|
+
const labelMatch = content.match(/<key>Label<\/key>\s*<string>([^<]+)<\/string>/);
|
|
60
|
+
const label = labelMatch?.[1] ?? file.replace('.plist', '');
|
|
61
|
+
out.push({
|
|
62
|
+
kind,
|
|
63
|
+
label,
|
|
64
|
+
source: 'launchd',
|
|
65
|
+
config_path: path,
|
|
66
|
+
detail: 'launchd agent'
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
return out;
|
|
70
|
+
}
|
|
71
|
+
// ─── 2. PROCESSOS rodando ──────────────────────────────────────────
|
|
72
|
+
function scanProcesses() {
|
|
73
|
+
const out = [];
|
|
74
|
+
let psOutput = '';
|
|
75
|
+
try {
|
|
76
|
+
psOutput = execSync('ps ax -o pid,command 2>/dev/null', { encoding: 'utf8', timeout: 5000 });
|
|
77
|
+
}
|
|
78
|
+
catch {
|
|
79
|
+
return out;
|
|
80
|
+
}
|
|
81
|
+
const lines = psOutput.split('\n').slice(1); // skip header
|
|
82
|
+
for (const line of lines) {
|
|
83
|
+
const trimmed = line.trim();
|
|
84
|
+
if (!trimmed)
|
|
85
|
+
continue;
|
|
86
|
+
const m = trimmed.match(/^(\d+)\s+(.+)$/);
|
|
87
|
+
if (!m)
|
|
88
|
+
continue;
|
|
89
|
+
const pid = parseInt(m[1], 10);
|
|
90
|
+
const cmd = m[2].toLowerCase();
|
|
91
|
+
// Identifica kind pelo command
|
|
92
|
+
let kind = null;
|
|
93
|
+
let label = null;
|
|
94
|
+
if (/claude.code|\.local\/share\/claude/.test(cmd) && !cmd.includes('bg-spare')) {
|
|
95
|
+
kind = 'claude_code';
|
|
96
|
+
label = `claude_code_${pid}`;
|
|
97
|
+
}
|
|
98
|
+
else if (/cursor.*\.app/.test(cmd)) {
|
|
99
|
+
kind = 'cursor';
|
|
100
|
+
label = `cursor_${pid}`;
|
|
101
|
+
}
|
|
102
|
+
else if (/aider/.test(cmd)) {
|
|
103
|
+
kind = 'aider';
|
|
104
|
+
label = `aider_${pid}`;
|
|
105
|
+
}
|
|
106
|
+
else if (/openclaw-bridge|openclaw\s/.test(cmd) && !cmd.includes('grep')) {
|
|
107
|
+
kind = 'openclaw';
|
|
108
|
+
label = `openclaw_${pid}`;
|
|
109
|
+
}
|
|
110
|
+
else if (/hermes-bridge|hermes\s/.test(cmd) && !cmd.includes('grep')) {
|
|
111
|
+
kind = 'hermes';
|
|
112
|
+
label = `hermes_${pid}`;
|
|
113
|
+
}
|
|
114
|
+
if (!kind || !label)
|
|
115
|
+
continue;
|
|
116
|
+
out.push({ kind, label, source: 'process', pid });
|
|
117
|
+
}
|
|
118
|
+
return out;
|
|
119
|
+
}
|
|
120
|
+
// ─── 3. CONFIGS conhecidas ─────────────────────────────────────────
|
|
121
|
+
function scanConfigs() {
|
|
122
|
+
const home = homedir();
|
|
123
|
+
const candidates = [
|
|
124
|
+
{ path: join(home, '.claude', 'settings.json'), kind: 'claude_code' },
|
|
125
|
+
{ path: join(home, '.cursor', 'settings.json'), kind: 'cursor' },
|
|
126
|
+
{ path: join(home, '.cursor', 'mcp.json'), kind: 'cursor' },
|
|
127
|
+
{ path: join(home, '.aider.conf.yml'), kind: 'aider' },
|
|
128
|
+
{ path: join(home, '.continue', 'config.json'), kind: 'continue' },
|
|
129
|
+
{ path: join(home, '.codeium', 'config.json'), kind: 'codeium' },
|
|
130
|
+
{ path: join(home, '.cline', 'config.json'), kind: 'cline' }
|
|
131
|
+
];
|
|
132
|
+
const out = [];
|
|
133
|
+
for (const c of candidates) {
|
|
134
|
+
if (!existsSync(c.path))
|
|
135
|
+
continue;
|
|
136
|
+
out.push({
|
|
137
|
+
kind: c.kind,
|
|
138
|
+
label: `${c.kind}_config`,
|
|
139
|
+
source: 'config',
|
|
140
|
+
config_path: c.path,
|
|
141
|
+
detail: 'config file present'
|
|
142
|
+
});
|
|
143
|
+
}
|
|
144
|
+
return out;
|
|
145
|
+
}
|
|
146
|
+
// ─── 4. NPM GLOBALS ────────────────────────────────────────────────
|
|
147
|
+
function scanNpmGlobals() {
|
|
148
|
+
const out = [];
|
|
149
|
+
let raw = '';
|
|
150
|
+
try {
|
|
151
|
+
raw = execSync('npm ls -g --depth=0 --parseable 2>/dev/null', { encoding: 'utf8', timeout: 8000 });
|
|
152
|
+
}
|
|
153
|
+
catch {
|
|
154
|
+
return out;
|
|
155
|
+
}
|
|
156
|
+
const lines = raw.split('\n').filter(Boolean);
|
|
157
|
+
for (const line of lines) {
|
|
158
|
+
const name = line.split('/').pop() ?? '';
|
|
159
|
+
let kind = null;
|
|
160
|
+
if (/^claude(-code)?$/i.test(name) || /@anthropic-ai\/claude-code/i.test(line))
|
|
161
|
+
kind = 'claude_code';
|
|
162
|
+
else if (/^aider/i.test(name))
|
|
163
|
+
kind = 'aider';
|
|
164
|
+
else if (/^continue/i.test(name))
|
|
165
|
+
kind = 'continue';
|
|
166
|
+
else if (/^cursor-cli/i.test(name))
|
|
167
|
+
kind = 'cursor_cli';
|
|
168
|
+
else
|
|
169
|
+
continue;
|
|
170
|
+
out.push({
|
|
171
|
+
kind,
|
|
172
|
+
label: `${kind}_npm`,
|
|
173
|
+
source: 'npm',
|
|
174
|
+
binary_path: line,
|
|
175
|
+
detail: 'npm global'
|
|
176
|
+
});
|
|
177
|
+
}
|
|
178
|
+
return out;
|
|
179
|
+
}
|
|
180
|
+
/**
|
|
181
|
+
* scanLocalAgents — entry point. Combina os 4 vetores + dedup por label.
|
|
182
|
+
*/
|
|
183
|
+
export function scanLocalAgents() {
|
|
184
|
+
const all = [
|
|
185
|
+
...scanLaunchd(),
|
|
186
|
+
...scanProcesses(),
|
|
187
|
+
...scanConfigs(),
|
|
188
|
+
...scanNpmGlobals()
|
|
189
|
+
];
|
|
190
|
+
// Dedup por (kind, label) — mantém o que tem mais info (pid > config > npm)
|
|
191
|
+
const score = { process: 4, launchd: 3, config: 2, npm: 1, systemd: 3 };
|
|
192
|
+
const map = new Map();
|
|
193
|
+
for (const a of all) {
|
|
194
|
+
const key = `${a.kind}:${a.label}`;
|
|
195
|
+
const existing = map.get(key);
|
|
196
|
+
if (!existing || (score[a.source] ?? 0) > (score[existing.source] ?? 0)) {
|
|
197
|
+
map.set(key, a);
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
return Array.from(map.values());
|
|
201
|
+
}
|
|
202
|
+
/**
|
|
203
|
+
* Registra todos os agentes detectados no backend Nuxs.
|
|
204
|
+
* Idempotente (backend faz upsert por fingerprint+kind+label).
|
|
205
|
+
*/
|
|
206
|
+
export async function registerDetectedAgents() {
|
|
207
|
+
const { registerAgent } = await import('./agents/register.js');
|
|
208
|
+
const detected = scanLocalAgents();
|
|
209
|
+
let ok = 0;
|
|
210
|
+
let failed = 0;
|
|
211
|
+
const agents = [];
|
|
212
|
+
for (const a of detected) {
|
|
213
|
+
const agentId = await registerAgent({
|
|
214
|
+
agent_kind: a.kind,
|
|
215
|
+
agent_label: a.label,
|
|
216
|
+
config_path: a.config_path,
|
|
217
|
+
binary_path: a.binary_path
|
|
218
|
+
});
|
|
219
|
+
if (agentId)
|
|
220
|
+
ok++;
|
|
221
|
+
else
|
|
222
|
+
failed++;
|
|
223
|
+
agents.push({ label: a.label, agent_id: agentId });
|
|
224
|
+
}
|
|
225
|
+
return { ok, failed, agents };
|
|
226
|
+
}
|
|
227
|
+
/** Comando CLI `nuxs-capsule scan`. Mostra wizard + auto-register. */
|
|
228
|
+
export async function runScanCli() {
|
|
229
|
+
console.log('\n🔍 Nuxs Capsule — Scan de agentes locais\n');
|
|
230
|
+
console.log(`Máquina: ${hostname()} (${platform()})\n`);
|
|
231
|
+
const detected = scanLocalAgents();
|
|
232
|
+
if (detected.length === 0) {
|
|
233
|
+
console.log('Nenhum agente IA detectado neste PC.\n');
|
|
234
|
+
return;
|
|
235
|
+
}
|
|
236
|
+
console.log(`Detectados ${detected.length} agentes:\n`);
|
|
237
|
+
for (let i = 0; i < detected.length; i++) {
|
|
238
|
+
const a = detected[i];
|
|
239
|
+
console.log(` [${i + 1}] ${a.kind.padEnd(14)} ${a.label.padEnd(30)} (${a.source})`);
|
|
240
|
+
if (a.config_path)
|
|
241
|
+
console.log(` config: ${a.config_path}`);
|
|
242
|
+
if (a.pid)
|
|
243
|
+
console.log(` PID: ${a.pid}`);
|
|
244
|
+
}
|
|
245
|
+
console.log('\nRegistrando todos no painel admin...');
|
|
246
|
+
const result = await registerDetectedAgents();
|
|
247
|
+
console.log(`\n✓ ${result.ok} agentes registrados, ${result.failed} falhas.`);
|
|
248
|
+
console.log('Veja em https://nuxs.ai/admin/capsule → aba "Agentes registrados"\n');
|
|
249
|
+
}
|
|
250
|
+
//# sourceMappingURL=scan.js.map
|
package/dist/scan.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scan.js","sourceRoot":"","sources":["../src/scan.ts"],"names":[],"mappings":"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"}
|
package/dist/setup.js
CHANGED
|
@@ -17,6 +17,7 @@ import { createInterface } from 'node:readline/promises';
|
|
|
17
17
|
import { execSync } from 'node:child_process';
|
|
18
18
|
import { ensureDir } from './lib/fileStat.js';
|
|
19
19
|
import { setLicenseKey } from './license/check.js';
|
|
20
|
+
import { scanLocalAgents, registerDetectedAgents } from './scan.js';
|
|
20
21
|
const NUXS_DIR = join(homedir(), '.nuxs');
|
|
21
22
|
const CACHE_DIR = join(NUXS_DIR, 'cache');
|
|
22
23
|
const CLAUDE_CONFIG = join(homedir(), '.claude', 'settings.json');
|
|
@@ -24,14 +25,24 @@ const CLAUDE_PROJECT_MCP = '.mcp.json';
|
|
|
24
25
|
const CURSOR_MCP = join(homedir(), '.cursor', 'mcp.json');
|
|
25
26
|
const INTERCEPT_BIN = join(homedir(), '.nuxs', 'bin', 'nuxs-capsule-intercept');
|
|
26
27
|
const SERVER_BIN = join(homedir(), '.nuxs', 'bin', 'nuxs-capsule');
|
|
28
|
+
function getVersion() {
|
|
29
|
+
try {
|
|
30
|
+
const pkgPath = new URL('../package.json', import.meta.url).pathname;
|
|
31
|
+
return JSON.parse(readFileSync(pkgPath, 'utf8')).version;
|
|
32
|
+
}
|
|
33
|
+
catch {
|
|
34
|
+
return 'unknown';
|
|
35
|
+
}
|
|
36
|
+
}
|
|
27
37
|
async function main() {
|
|
28
|
-
|
|
38
|
+
const v = getVersion();
|
|
39
|
+
console.log(`\n🟢 Nuxs Capsule Setup v${v}\n`);
|
|
29
40
|
ensureDir(NUXS_DIR);
|
|
30
41
|
ensureDir(CACHE_DIR);
|
|
31
42
|
ensureDir(join(NUXS_DIR, 'bin'));
|
|
32
43
|
// 1. License key
|
|
33
44
|
await setupLicense();
|
|
34
|
-
// 2. Detecta + configura agentes
|
|
45
|
+
// 2. Detecta + configura agentes (configs locais)
|
|
35
46
|
const configured = [];
|
|
36
47
|
if (existsSync(join(homedir(), '.claude'))) {
|
|
37
48
|
setupClaudeCode();
|
|
@@ -45,18 +56,43 @@ async function main() {
|
|
|
45
56
|
if (platform() !== 'win32') {
|
|
46
57
|
setupCronFlush();
|
|
47
58
|
}
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
59
|
+
// 4. SCAN: detecta TODOS os agentes locais (launchd/processos/configs/npm)
|
|
60
|
+
// e registra no backend automaticamente. 1 comando = tudo configurado.
|
|
61
|
+
console.log('→ Scan de agentes locais...');
|
|
62
|
+
let detectedCount = 0;
|
|
63
|
+
let registeredCount = 0;
|
|
64
|
+
try {
|
|
65
|
+
const detected = scanLocalAgents();
|
|
66
|
+
detectedCount = detected.length;
|
|
67
|
+
if (detected.length > 0) {
|
|
68
|
+
console.log(` Encontrados ${detected.length} agentes:`);
|
|
69
|
+
for (const a of detected) {
|
|
70
|
+
console.log(` - ${a.kind.padEnd(14)} ${a.label} (${a.source})`);
|
|
71
|
+
}
|
|
72
|
+
const result = await registerDetectedAgents();
|
|
73
|
+
registeredCount = result.ok;
|
|
74
|
+
console.log(` ✓ ${result.ok}/${detected.length} registrados no painel admin`);
|
|
75
|
+
}
|
|
76
|
+
else {
|
|
77
|
+
console.log(' Nenhum agente extra detectado.');
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
catch (err) {
|
|
81
|
+
console.log(` ⚠️ Scan falhou: ${err instanceof Error ? err.message : err}`);
|
|
82
|
+
}
|
|
83
|
+
if (configured.length === 0 && detectedCount === 0) {
|
|
84
|
+
console.log('\n⚠️ Nenhum agente IA detectado neste PC.');
|
|
85
|
+
console.log(' Instala Claude Code, Cursor, Aider, etc primeiro.\n');
|
|
51
86
|
}
|
|
52
87
|
else {
|
|
53
|
-
console.log(`\n✅
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
console.log('
|
|
59
|
-
console.log('
|
|
88
|
+
console.log(`\n✅ Setup completo:`);
|
|
89
|
+
if (configured.length > 0)
|
|
90
|
+
console.log(` • MCP+Hook configurado: ${configured.join(', ')}`);
|
|
91
|
+
if (registeredCount > 0)
|
|
92
|
+
console.log(` • ${registeredCount} agentes registrados no painel`);
|
|
93
|
+
console.log('\n📊 Veja teus agentes e cápsulas:');
|
|
94
|
+
console.log(' https://nuxs.ai/admin/capsule\n');
|
|
95
|
+
console.log('💡 Cron flush rodando a cada 1min. Reinicia teus agentes pra ativar MCP.\n');
|
|
60
96
|
}
|
|
61
97
|
}
|
|
62
98
|
async function setupLicense() {
|
package/dist/setup.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../src/setup.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAClE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC5C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../src/setup.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "nuxs-capsule",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.18",
|
|
4
4
|
"description": "Compressor universal pra agentes IA — Claude Code, Cursor, OpenClaw, Hermes. Camada invisível via MCP + Hook PreToolUse. Economiza 50-90% dos tokens.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"mcp",
|
|
@@ -38,6 +38,7 @@
|
|
|
38
38
|
"dev": "tsx watch src/server.ts",
|
|
39
39
|
"test": "vitest run",
|
|
40
40
|
"lint": "tsc --noEmit",
|
|
41
|
+
"postinstall": "node -e \"const v=require('./package.json').version;process.stderr.write('\\n \\u001b[32m\\u2713\\u001b[0m nuxs-capsule v'+v+' installed. Run \\u001b[1mnuxs-capsule scan\\u001b[0m to detect agents.\\n\\n')\"",
|
|
41
42
|
"compile:standalone": "bun build src/intercept.ts --compile --outfile bin/nuxs-capsule-intercept-bin"
|
|
42
43
|
},
|
|
43
44
|
"dependencies": {
|