@seedgrid/ai-toolkit 0.3.0 → 0.3.1

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/README.md CHANGED
@@ -4,7 +4,17 @@ Fonte versionada de **agentes (papéis), skills, regras, templates, referências
4
4
 
5
5
  O toolkit **não** é um orquestrador de modelos: não chama APIs da OpenAI ou da Anthropic, não guarda credenciais e não escolhe fornecedores. Ele instala instruções e configurações; a ferramenta de IA executa e coordena o trabalho.
6
6
 
7
- > Estado: versão 0.3.0 (pacote e conteúdo), pronta para publicar no npm como `@seedgrid/ai-toolkit`. Licença MIT. O pacote ainda **não foi publicado** no npm e o repositório GitHub ainda não existe.
7
+ > Pacote público no npm como `@seedgrid/ai-toolkit` (licença MIT); código em https://github.com/SeedGrid/seedgrid-ai. A versão do pacote e a do conteúdo instalado são a mesma.
8
+
9
+ ## Instalação rápida
10
+
11
+ ```bash
12
+ npx @seedgrid/ai-toolkit@latest install # uma vez por máquina: instala o comando seedgrid-ai (npm install -g)
13
+ cd /caminho/do/projeto
14
+ seedgrid-ai init # instala o toolkit no projeto
15
+ ```
16
+
17
+ Depois é só `seedgrid-ai update`, `seedgrid-ai status`, `seedgrid-ai doctor`, `seedgrid-ai review` etc. (`seedgrid-ai --help` lista tudo). Sem instalar o comando, qualquer comando também funciona com `npx @seedgrid/ai-toolkit <comando>`. Abra uma **sessão nova** do Claude Code ou do Codex depois de instalar no projeto.
8
18
 
9
19
  ## O que é instalado
10
20
 
@@ -66,6 +76,7 @@ seedgrid-ai init --target both --mode shared
66
76
  ## Comandos
67
77
 
68
78
  ```bash
79
+ seedgrid-ai install # instala o comando seedgrid-ai na máquina (npm install -g)
69
80
  seedgrid-ai init --target both --mode shared # padrão; idempotente
70
81
  seedgrid-ai init --target both --mode native # também registra subagentes nativos
71
82
  seedgrid-ai init --source ./seedgridKB --dry-run # fonte local (desenvolvimento), só o plano
@@ -118,15 +129,15 @@ Seleção de papéis e delegação são comportamentos orientados por instruçõ
118
129
 
119
130
  ## Uso via npm
120
131
 
121
- Depois que a versão for publicada:
122
-
123
132
  ```bash
133
+ npx @seedgrid/ai-toolkit@latest install # instala o comando seedgrid-ai nesta máquina (uma vez; repita para atualizar o comando)
124
134
  cd /caminho/do/projeto
125
- npx @seedgrid/ai-toolkit@0.2.0 init --target both # primeira instalação
126
- npx @seedgrid/ai-toolkit@latest update # traz o conteúdo da versão mais recente
135
+ seedgrid-ai init --target both # primeira instalação no projeto
136
+ seedgrid-ai update # leva o projeto ao conteúdo da versão do comando instalado
137
+ npx @seedgrid/ai-toolkit@latest update # ou: usa a versão mais recente sem instalar nada
127
138
  ```
128
139
 
129
- Ou instale o comando globalmente: `npm i -g @seedgrid/ai-toolkit` e use `seedgrid-ai`. Se houver versão mais nova publicada, `init`, `update` e `status` avisam e, no terminal, perguntam se devem usá-la (`[Y/n]`); desative com `--no-update-check`. Detalhes em [docs/instalacao.md](docs/instalacao.md#aviso-de-versão-nova). O pacote leva o CLI compilado e o conteúdo; a versão do pacote identifica o conteúdo instalado, e `update` nunca baixa conteúdo por conta própria. Faça commit do resultado no projeto: o restante da equipe recebe tudo pelo Git, sem rodar o CLI.
140
+ `install` executa `npm install -g @seedgrid/ai-toolkit@<versão deste CLI>` e confere se `seedgrid-ai` ficou no PATH; não toca em nenhum projeto (`--dry-run` mostra o comando). Se der erro de permissão, configure um prefixo global do npm para o seu usuário ou continue usando `npx`. Se houver versão mais nova publicada, `init`, `update` e `status` avisam e, no terminal, perguntam se devem usá-la (`[Y/n]`); desative com `--no-update-check`. Detalhes em [docs/instalacao.md](docs/instalacao.md#aviso-de-versão-nova). O pacote leva o CLI compilado e o conteúdo; a versão do pacote identifica o conteúdo instalado, e `update` nunca baixa conteúdo por conta própria. Faça commit do resultado no projeto: o restante da equipe recebe tudo pelo Git, sem rodar o CLI.
130
141
 
131
142
  ## Repositório e publicação
132
143
 
package/dist/cli.js CHANGED
@@ -7,15 +7,18 @@ import { doctorCommand } from './commands/doctor.js';
7
7
  import { initCommand } from './commands/init.js';
8
8
  import { removeCommand } from './commands/remove.js';
9
9
  import { reviewCommand } from './commands/review.js';
10
+ import { selfInstallCommand } from './commands/selfinstall.js';
10
11
  import { statusCommand } from './commands/status.js';
11
12
  import { updateCommand } from './commands/update.js';
12
13
  import { validateCommand } from './commands/validate.js';
13
14
  import { cliVersion } from './core/env.js';
15
+ import { TOOL_NAME } from './core/lock.js';
14
16
  import { ToolkitError } from './core/types.js';
15
17
  import { checkLatest, confirm, isInteractive, npxCommandLine, runPublishedVersion, } from './core/updates.js';
16
18
  const HELP = `seedgrid-ai — instala o SeedGrid AI Toolkit em projetos locais (Claude Code e Codex)
17
19
 
18
20
  Comandos:
21
+ install Instala o comando seedgrid-ai nesta máquina (npm install -g), para usar sem npx; não altera nenhum projeto
19
22
  init Instala o toolkit (regras, papéis, skills, base de conhecimento) no projeto; idempotente
20
23
  update Leva o projeto ao conteúdo da versão do CLI em execução (use npx @seedgrid/ai-toolkit@latest para a mais nova)
21
24
  status Mostra versões, opções e divergências da instalação
@@ -26,6 +29,7 @@ Comandos:
26
29
  help Mostra esta ajuda
27
30
 
28
31
  Uso:
32
+ seedgrid-ai install [--dry-run]
29
33
  seedgrid-ai init [--target claude|codex|both] [--mode shared|native] [--source <pasta>] [--dry-run]
30
34
  seedgrid-ai update [--target ...] [--mode ...] [--source <pasta>] [--dry-run]
31
35
  seedgrid-ai status
@@ -46,10 +50,12 @@ Opções comuns:
46
50
  --no-update-check Não consulta o npm por versões mais novas (também: SEEDGRID_AI_NO_UPDATE_CHECK=1)
47
51
  --version, --help
48
52
 
53
+ Primeira vez: npx @seedgrid/ai-toolkit@latest install (depois use seedgrid-ai init, update, ... sem npx)
49
54
  Padrões do init: --target both --mode shared (ou as opções do lock existente).
50
55
  Em terminal interativo, init/update/status perguntam se devem usar uma versão mais nova publicada no npm.
51
56
  Conflitos abortam a operação inteira (código de saída 2); nada é sobrescrito.`;
52
57
  const COMMANDS = {
58
+ install: { handler: selfInstallCommand, allowed: ['dry-run'] },
53
59
  init: { handler: initCommand, allowed: ['target', 'mode', 'source', 'dry-run'] },
54
60
  update: { handler: updateCommand, allowed: ['target', 'mode', 'source', 'dry-run'] },
55
61
  status: { handler: statusCommand, allowed: [] },
@@ -174,7 +180,7 @@ export async function main(argv) {
174
180
  }
175
181
  }
176
182
  function updateNotice(info, args) {
177
- return `Aviso: versão ${info.latest} disponível no npm (este CLI: ${info.current}). Para usá-la: ${npxCommandLine(info.latest, args)}`;
183
+ return `Aviso: versão ${info.latest} disponível no npm (este CLI: ${info.current}). Para usá-la: ${npxCommandLine(info.latest, args)}. Para atualizar o comando seedgrid-ai instalado na máquina: npx ${TOOL_NAME}@latest install`;
178
184
  }
179
185
  /** Repassa o comando para a versão publicada mais nova. */
180
186
  async function delegate(info, args) {
@@ -0,0 +1,63 @@
1
+ import { exec } from 'node:child_process';
2
+ import { cliVersion } from '../core/env.js';
3
+ import { TOOL_NAME } from '../core/lock.js';
4
+ import { EXIT_ERROR, EXIT_OK } from './common.js';
5
+ /** Executa um comando fixo (sem entrada do usuário) e devolve o resultado. shell é necessário para npm.cmd no Windows. */
6
+ function runFixed(command, timeoutMs) {
7
+ return new Promise((resolve) => {
8
+ const child = exec(command, { timeout: timeoutMs, windowsHide: true, maxBuffer: 16 * 1024 * 1024 }, (err, stdout, stderr) => {
9
+ const e = err;
10
+ resolve({ code: e ? (typeof e.code === 'number' ? e.code : null) : 0, stdout: stdout.toString(), stderr: stderr.toString() });
11
+ });
12
+ child.stdin?.end();
13
+ });
14
+ }
15
+ /**
16
+ * Instala o comando `seedgrid-ai` na máquina (npm install -g), na versão deste CLI.
17
+ * Depois, os demais comandos ficam disponíveis sem npx. Não toca em nenhum projeto.
18
+ */
19
+ export async function selfInstallCommand(opts) {
20
+ const version = cliVersion();
21
+ const command = `npm install -g ${TOOL_NAME}@${version}`;
22
+ const base = { command: 'install', version, npmCommand: command };
23
+ if (opts.dryRun) {
24
+ return {
25
+ exitCode: EXIT_OK,
26
+ report: { ...base, dryRun: true },
27
+ lines: [`Executaria: ${command}`, 'Nada foi instalado (--dry-run).'],
28
+ };
29
+ }
30
+ const run = opts.npmRunner ?? runFixed;
31
+ const result = await run(command, 5 * 60 * 1000);
32
+ if (result.code !== 0) {
33
+ const detail = (result.stderr.trim() || result.stdout.trim() || '(sem saída)').split('\n').slice(-8).join('\n');
34
+ return {
35
+ exitCode: EXIT_ERROR,
36
+ report: { ...base, ok: false, code: result.code, stderr: result.stderr },
37
+ lines: [
38
+ `Não foi possível instalar com "${command}" (código ${result.code ?? 'desconhecido'}).`,
39
+ detail,
40
+ '',
41
+ 'Se for permissão, configure um prefixo global do npm para o seu usuário ou rode o terminal com a permissão necessária.',
42
+ 'Sem instalar, você ainda pode usar: npx @seedgrid/ai-toolkit <comando>',
43
+ ],
44
+ };
45
+ }
46
+ const check = await run('seedgrid-ai --version', 30 * 1000);
47
+ const found = check.code === 0 && check.stdout.trim() === version;
48
+ return {
49
+ exitCode: EXIT_OK,
50
+ report: { ...base, ok: true, onPath: found },
51
+ lines: [
52
+ `Instalado: ${TOOL_NAME}@${version} (comando seedgrid-ai).`,
53
+ found
54
+ ? 'O comando já está disponível neste terminal.'
55
+ : 'Se "seedgrid-ai" não for reconhecido, abra um novo terminal ou confira se a pasta global do npm (npm prefix -g) está no PATH.',
56
+ '',
57
+ 'Próximos passos, na pasta do projeto:',
58
+ ' seedgrid-ai init # instala o toolkit no projeto',
59
+ ' seedgrid-ai --help # lista todos os comandos',
60
+ `Para atualizar o próprio comando no futuro: npx ${TOOL_NAME}@latest install`,
61
+ ],
62
+ };
63
+ }
package/docs/formato.md CHANGED
@@ -57,7 +57,7 @@ Arquivos e pastas que começam com ponto são ignorados.
57
57
  ```json
58
58
  {
59
59
  "schemaVersion": 2,
60
- "contentVersion": "0.3.0",
60
+ "contentVersion": "0.3.1",
61
61
  "toolkitBase": "SeedGrid/Toolkit",
62
62
  "components": [
63
63
  { "id": "agents", "type": "agents", "files": ["agents/arquiteto.md"] },
@@ -1,6 +1,6 @@
1
1
  # Instalação em projetos
2
2
 
3
- Os exemplos usam `seedgrid-ai`. Sem `npm link`, troque por `node <pasta-do-toolkit>/dist/cli.js`.
3
+ Os exemplos usam o comando `seedgrid-ai`. Para tê-lo na máquina: `npx @seedgrid/ai-toolkit@latest install` (executa `npm install -g`, uma vez; repita para atualizar o comando). Sem instalar, troque `seedgrid-ai` por `npx @seedgrid/ai-toolkit`; em desenvolvimento do toolkit, por `node <pasta-do-toolkit>/dist/cli.js`.
4
4
 
5
5
  ## Primeira instalação
6
6
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@seedgrid/ai-toolkit",
3
- "version": "0.3.0",
3
+ "version": "0.3.1",
4
4
  "description": "Instala agentes, skills, regras, templates e referências versionados em projetos locais para Claude Code e Codex.",
5
5
  "type": "module",
6
6
  "license": "MIT",