@nectarcrm/ccx 0.4.1 → 0.4.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/bin/ccx.js +7 -15
  2. package/package.json +1 -1
package/bin/ccx.js CHANGED
@@ -16,7 +16,7 @@
16
16
  // (terminal, VS Code, JetBrains) usa essa conta. Claudes já abertos continuam na anterior.
17
17
  // O vigia roda sozinho a cada 5 min: avisa o app, atualiza o token se o admin trocou
18
18
  // e tira a conta se o acesso for removido. Os tokens gastos vão pro app pela telemetria.
19
- // O vigia também roda o sync, então o resumo dos projetos chega sozinho.
19
+ // O resumo dos projetos só vai pro app quando você roda ccx sync.
20
20
 
21
21
  import { execFileSync } from 'node:child_process'
22
22
  import { appendFileSync, chmodSync, closeSync, existsSync, mkdirSync, openSync, readdirSync, readFileSync, readSync, rmSync, statSync, writeFileSync } from 'node:fs'
@@ -211,8 +211,9 @@ function installAgent() {
211
211
  return true
212
212
  }
213
213
  if (WIN) {
214
+ // node.exe é app de console: direto pelo Agendador abre uma janela a cada rodada. O conhost --headless roda sem janela.
214
215
  execFileSync('schtasks', ['/Create', '/F', '/SC', 'MINUTE', '/MO', String(AGENT_MINUTES), '/TN', AGENT_ID,
215
- '/TR', `"${process.execPath}" "${SELF}" vigia`], { stdio: 'ignore' })
216
+ '/TR', `conhost.exe --headless "${process.execPath}" "${SELF}" vigia`], { stdio: 'ignore' })
216
217
  return true
217
218
  }
218
219
  return installLinuxAgent()
@@ -243,8 +244,6 @@ async function agentOnce() {
243
244
  writeJson(APP, removeAccount(app))
244
245
  return log('login vencido: conta tirada deste computador')
245
246
  }
246
- try { await sync(app, key, true) }
247
- catch (e) { log(`sync falhou: ${e.message}`) }
248
247
  const r = await api(app, key, 'POST', '/api/cli/heartbeat', { account_id: app.account?.id ?? null }, 20_000)
249
248
  if (r.status === 401) {
250
249
  writeJson(APP, removeAccount(app))
@@ -378,7 +377,7 @@ function addToDay(days, e) {
378
377
  return key
379
378
  }
380
379
 
381
- // Só um sync por vez (o vigia pode rodar junto com o login). Trava velha (sync que caiu) é ignorada.
380
+ // Só um sync por vez (dois ccx sync ao mesmo tempo). Trava velha (sync que caiu) é ignorada.
382
381
  function takeLock() {
383
382
  mkdirSync(DIR, { recursive: true })
384
383
  try { closeSync(openSync(SYNC_LOCK, 'wx')); return true }
@@ -389,8 +388,8 @@ function takeLock() {
389
388
  }
390
389
  }
391
390
 
392
- async function sync(app, key, quiet = false) {
393
- const say = msg => { if (!quiet) process.stderr.write(msg) }
391
+ async function sync(app, key) {
392
+ const say = msg => process.stderr.write(msg)
394
393
  if (!takeLock()) return say('Outro sync já está rodando. Tente de novo daqui a pouco.\n')
395
394
  try {
396
395
  let state = readJson(SYNC_STATE, {})
@@ -563,7 +562,7 @@ async function doctor() {
563
562
  }
564
563
  else ok('Telemetria ligada (tokens vão pro painel)')
565
564
  if (agentInstalled()) ok(`Vigia instalado (roda a cada ${AGENT_MINUTES} min)`)
566
- else aviso('O vigia não está instalado: token novo e sync não chegam sozinhos', 'ccx (escolha a conta de novo)')
565
+ else aviso('O vigia não está instalado: token novo e acesso removido não chegam sozinhos', 'ccx (escolha a conta de novo)')
567
566
  // Só o que deu errado nas últimas 24 h (o log tem a data no começo de cada linha)
568
567
  const dayAgo = new Date(Date.now() - 86_400_000).toISOString()
569
568
  const lastErr = existsSync(LOG) && readFileSync(LOG, 'utf8').trim().split('\n').filter(l => l >= dayAgo && /falhou|removid|vencid/.test(l)).pop()
@@ -740,10 +739,3 @@ if (cmd === 'status') {
740
739
 
741
740
  // `ccx`, `ccx login ...` (depois de autorizar) ou `ccx <conta>`
742
741
  await useAccount(app, key, cmd && cmd !== 'login' ? cmd : await chooseAccount(app, key))
743
-
744
- // Logo depois do login, manda o resumo das sessões (as próximas vão pelo vigia)
745
- if (cmd === 'login') {
746
- console.error('')
747
- try { await sync(app, key) }
748
- catch (e) { console.error(c(33, `\nO sync falhou (${e.message}). Tente: ccx sync`)) }
749
- }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nectarcrm/ccx",
3
- "version": "0.4.1",
3
+ "version": "0.4.2",
4
4
  "description": "Escolhe qual conta Claude este computador usa, conectado ao app Contas Claude da Nectar.",
5
5
  "type": "module",
6
6
  "bin": { "ccx": "bin/ccx.js" },