apiario 0.7.0 → 0.8.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/cli.js CHANGED
@@ -1,11 +1,14 @@
1
1
  #!/usr/bin/env node
2
- import { AuthStorage, ModelRegistry, InteractiveMode, runPrintMode, createAgentSessionRuntime, createAgentSessionFromServices, createAgentSessionServices, SessionManager, } from "@earendil-works/pi-coding-agent";
2
+ import { AuthStorage, ModelRegistry, InteractiveMode, runPrintMode, createAgentSessionRuntime, createAgentSessionFromServices, createAgentSessionServices, SessionManager, createSyntheticSourceInfo, } from "@earendil-works/pi-coding-agent";
3
3
  import { resolveApiKey, runSetupWizard } from "./auth.js";
4
4
  import { resolveModels, mapToProviderModelConfigs, sortModelsByPriority, } from "./provider.js";
5
5
  import { API_BASE_URL, apiClientHeaders } from "./client.js";
6
6
  import localizationExtension from "./extensions/localization.js";
7
+ import subagentExtension from "./extensions/subagent/index.js";
7
8
  import { homedir } from "os";
8
- import { join } from "path";
9
+ import { join, dirname } from "path";
10
+ import { readFileSync, existsSync, readdirSync } from "fs";
11
+ import { fileURLToPath } from "url";
9
12
  // ---------------------------------------------------------------------------
10
13
  // Monkey-patch: traduz seções de startup do pi.dev para pt-BR
11
14
  // ---------------------------------------------------------------------------
@@ -121,11 +124,115 @@ catch {
121
124
  // ---------------------------------------------------------------------------
122
125
  // Constants
123
126
  // ---------------------------------------------------------------------------
127
+ const __filename = fileURLToPath(import.meta.url);
128
+ const __dirname = dirname(__filename);
129
+ // PKG_ROOT resolve para a raiz do pacote npm: dist/cli.js → join("dist", "..")
130
+ // Funciona porque tsconfig.json usa rootDir: "src" e outDir: "dist"
131
+ const PKG_ROOT = join(__dirname, "..");
124
132
  const AGENT_DIR = join(homedir(), ".config", "apiario");
125
133
  // ---------------------------------------------------------------------------
126
- // Main
134
+ // Skills empacotadas
127
135
  // ---------------------------------------------------------------------------
136
+ /**
137
+ * Carrega skills empacotadas do diretório skills/ na raiz do pacote npm.
138
+ * Cada subdiretório dentro de skills/ que contenha um SKILL.md com
139
+ * frontmatter YAML válido é convertido em um objeto Skill.
140
+ *
141
+ * Falhas de leitura ou parse resultam em null (skill ignorada
142
+ * silenciosamente), sem crashar o startup.
143
+ *
144
+ * Retorna array vazio se skills/ não existir ou estiver vazio.
145
+ */
146
+ function loadBundledSkills() {
147
+ const skillsDir = join(PKG_ROOT, "skills");
148
+ if (!existsSync(skillsDir))
149
+ return [];
150
+ return readdirSync(skillsDir, { withFileTypes: true })
151
+ .filter((d) => d.isDirectory())
152
+ .map((d) => {
153
+ try {
154
+ const skillDir = join(skillsDir, d.name);
155
+ const skillMd = join(skillDir, "SKILL.md");
156
+ if (!existsSync(skillMd))
157
+ return null;
158
+ const content = readFileSync(skillMd, "utf-8");
159
+ const fmMatch = content.match(/^---\r?\n([\s\S]*?)\r?\n---/);
160
+ if (!fmMatch)
161
+ return null;
162
+ const fm = fmMatch[1];
163
+ const nameMatch = fm.match(/^name:\s*(.+)$/m);
164
+ const descMatch = fm.match(/^description:\s*(.+)$/m);
165
+ return {
166
+ name: nameMatch?.[1]?.trim() ?? d.name,
167
+ description: descMatch?.[1]?.trim() ?? "",
168
+ filePath: skillMd,
169
+ baseDir: skillDir,
170
+ sourceInfo: createSyntheticSourceInfo(skillMd, {
171
+ source: "apiario",
172
+ }),
173
+ disableModelInvocation: false,
174
+ };
175
+ }
176
+ catch {
177
+ // Arquivo corrompido ou sem permissão — ignora silenciosamente
178
+ return null;
179
+ }
180
+ })
181
+ .filter((s) => s !== null);
182
+ }
183
+ function parseJsonModeFlags() {
184
+ const args = process.argv.slice(2);
185
+ const modeIndex = args.indexOf("--mode");
186
+ const isJsonMode = modeIndex >= 0 && args[modeIndex + 1] === "json";
187
+ const getValue = (flag) => {
188
+ const idx = args.indexOf(flag);
189
+ return idx >= 0 && idx + 1 < args.length
190
+ ? args[idx + 1]
191
+ : undefined;
192
+ };
193
+ const appendSystemPrompt = [];
194
+ for (let i = 0; i < args.length; i++) {
195
+ if (args[i] === "--append-system-prompt" &&
196
+ i + 1 < args.length) {
197
+ appendSystemPrompt.push(args[i + 1]);
198
+ }
199
+ }
200
+ // Coleta argumentos posicionais (mensagens)
201
+ const messages = [];
202
+ let seenModeFlag = false;
203
+ for (let i = 0; i < args.length; i++) {
204
+ if (args[i] === "--mode") {
205
+ seenModeFlag = true;
206
+ i++; // pula o valor
207
+ continue;
208
+ }
209
+ if (args[i] === "--model" || args[i] === "--tools") {
210
+ i++; // pula o valor
211
+ continue;
212
+ }
213
+ if (args[i] === "--append-system-prompt") {
214
+ i++; // pula o valor
215
+ continue;
216
+ }
217
+ if (args[i] === "--no-session" || args[i] === "--mode") {
218
+ continue;
219
+ }
220
+ if (args[i].startsWith("--"))
221
+ continue;
222
+ messages.push(args[i]);
223
+ }
224
+ return {
225
+ isJsonMode,
226
+ modelFlag: getValue("--model"),
227
+ toolsFlag: getValue("--tools"),
228
+ appendSystemPrompt,
229
+ noSession: args.includes("--no-session"),
230
+ messages,
231
+ };
232
+ }
128
233
  async function main() {
234
+ // ── 0. Parse CLI flags ────────────────────────────────────────
235
+ const jsonFlags = parseJsonModeFlags();
129
236
  // ── 1. Resolve API key ──────────────────────────────────────────────
130
237
  let apiKey = resolveApiKey();
131
238
  if (!apiKey) {
@@ -169,13 +276,31 @@ async function main() {
169
276
  authStorage,
170
277
  modelRegistry,
171
278
  resourceLoaderOptions: {
172
- extensionFactories: [localizationExtension],
279
+ extensionFactories: [localizationExtension, subagentExtension],
280
+ skillsOverride: (current) => {
281
+ const bundled = loadBundledSkills();
282
+ // Skills locais do usuário têm prioridade (first-wins)
283
+ const existingNames = new Set(current.skills.map((s) => s.name));
284
+ const filteredBundled = bundled.filter((s) => !existingNames.has(s.name));
285
+ return {
286
+ skills: [...current.skills, ...filteredBundled],
287
+ diagnostics: current.diagnostics,
288
+ };
289
+ },
290
+ appendSystemPrompt: jsonFlags.isJsonMode
291
+ ? jsonFlags.appendSystemPrompt
292
+ : undefined,
173
293
  },
174
294
  });
175
295
  const allModels = modelRegistry
176
296
  .getAll()
177
297
  .filter((m) => m.provider === "apiario");
178
- const defaultModel = allModels.find((m) => m.id === "deepseek/deepseek-v4-flash") ??
298
+ // Se --model foi passado, tenta encontrar o modelo específico
299
+ const modelOverride = jsonFlags.isJsonMode && jsonFlags.modelFlag
300
+ ? allModels.find((m) => m.id === jsonFlags.modelFlag)
301
+ : undefined;
302
+ const defaultModel = modelOverride ??
303
+ allModels.find((m) => m.id === "deepseek/deepseek-v4-flash") ??
179
304
  allModels[0];
180
305
  const sessionResult = await createAgentSessionFromServices({
181
306
  services,
@@ -190,13 +315,57 @@ async function main() {
190
315
  };
191
316
  };
192
317
  const cwd = process.cwd();
318
+ // ── 5. JSON mode ──────────────────────────────────────────────────
319
+ if (jsonFlags.isJsonMode) {
320
+ const stdin = await readStdin();
321
+ // Se --no-session, usa session em memória
322
+ const sessionManager = jsonFlags.noSession
323
+ ? SessionManager.inMemory(cwd)
324
+ : await SessionManager.create(cwd);
325
+ const runtime = await createAgentSessionRuntime(createRuntime, {
326
+ cwd,
327
+ agentDir: AGENT_DIR,
328
+ sessionManager,
329
+ });
330
+ // Tenta parsear stdin como JSON para extrair mensagens
331
+ let initialMessage;
332
+ let initialMessages;
333
+ if (stdin.trim()) {
334
+ try {
335
+ const input = JSON.parse(stdin.trim());
336
+ if (input.messages && input.messages.length > 0) {
337
+ initialMessages = input.messages.map((m) => `${m.role}: ${m.content}`);
338
+ }
339
+ else if (Array.isArray(stdin)) {
340
+ initialMessages = stdin;
341
+ }
342
+ else {
343
+ initialMessage = stdin.trim();
344
+ }
345
+ }
346
+ catch {
347
+ // Não é JSON — usa como texto simples
348
+ initialMessage = stdin.trim() || jsonFlags.messages.join(" ");
349
+ }
350
+ }
351
+ else if (jsonFlags.messages.length > 0) {
352
+ initialMessage = jsonFlags.messages.join(" ");
353
+ }
354
+ await runPrintMode(runtime, {
355
+ mode: "json",
356
+ messages: initialMessages,
357
+ initialMessage,
358
+ });
359
+ return;
360
+ }
361
+ // ── 6. Session normal ─────────────────────────────────────────────
193
362
  const sessionManager = await SessionManager.create(cwd);
194
363
  const runtime = await createAgentSessionRuntime(createRuntime, {
195
364
  cwd,
196
365
  agentDir: AGENT_DIR,
197
366
  sessionManager,
198
367
  });
199
- // ── 5. Detect TTY and launch mode ──────────────────────────────────
368
+ // ── 7. Detect TTY and launch mode ─────────────────────────────────
200
369
  const isTTY = process.stdout.isTTY && !process.env.PIPESTART;
201
370
  if (isTTY) {
202
371
  const interactiveMode = new InteractiveMode(runtime);
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "apiario",
3
- "version": "0.7.0",
3
+ "version": "0.8.0",
4
4
  "description": "CLI Harness — pi.dev TUI wrapper for Apiário Dev API",
5
5
  "type": "module",
6
6
  "bin": {
@@ -24,6 +24,7 @@
24
24
  "node": ">=20.6.0"
25
25
  },
26
26
  "files": [
27
- "dist"
27
+ "dist",
28
+ "skills"
28
29
  ]
29
30
  }
@@ -0,0 +1,203 @@
1
+ ---
2
+ name: git-worktree
3
+ description: Isola todas as alterações de código em um git worktree separado, protegendo a branch atual de mudanças durante a implementação de features ou correções
4
+ compatibility: Requer git >= 2.5 (git worktree add) e permissão de escrita no sistema de arquivos
5
+ ---
6
+
7
+ # Git Worktree
8
+
9
+ ## Visão Geral
10
+
11
+ Garante que o trabalho aconteça em um workspace isolado. Prefere ferramentas nativas de worktree da plataforma. Usa `git worktree` manual como fallback apenas quando não há ferramenta nativa disponível.
12
+
13
+ **Princípio central:** Detecte isolamento existente primeiro. Use ferramentas nativas. Depois fallback para git. Nunca lute contra o harness.
14
+
15
+ **Anuncie no início:** "Estou usando a skill git-worktree para configurar um workspace isolado."
16
+
17
+ ## Passo 0: Detectar Isolamento Existente
18
+
19
+ **Antes de criar qualquer coisa, verifique se você já está em um workspace isolado.**
20
+
21
+ ```bash
22
+ GIT_DIR=$(cd "$(git rev-parse --git-dir)" 2>/dev/null && pwd -P)
23
+ GIT_COMMON=$(cd "$(git rev-parse --git-common-dir)" 2>/dev/null && pwd -P)
24
+ BRANCH=$(git branch --show-current)
25
+ ```
26
+
27
+ **Proteção contra submodules:** `GIT_DIR != GIT_COMMON` também é verdadeiro dentro de submodules. Antes de concluir "já estou em um worktree", verifique se não está em um submodule:
28
+
29
+ ```bash
30
+ # Se retornar um caminho, você está em um submodule — trate como repositório normal
31
+ git rev-parse --show-superproject-working-tree 2>/dev/null
32
+ ```
33
+
34
+ **Se `GIT_DIR != GIT_COMMON` (e não for submodule):** Você já está em um worktree vinculado. Pule para o Passo 2 (Configuração do Projeto). NÃO crie outro worktree.
35
+
36
+ Reporte o estado da branch:
37
+ - Em uma branch: "Já estou em workspace isolado em `<caminho>` na branch `<nome>`."
38
+ - HEAD detached: "Já estou em workspace isolado em `<caminho>` (HEAD detached, gerenciado externamente). Criação de branch necessária no final."
39
+
40
+ **Se `GIT_DIR == GIT_COMMON` (ou em submodule):** Você está em um checkout normal do repositório.
41
+
42
+ O usuário já indicou sua preferência de worktree nas instruções? Se não, peça consentimento antes de criar um worktree:
43
+
44
+ > "Gostaria que eu configurasse um worktree isolado? Isso protege sua branch atual de alterações."
45
+
46
+ Respeite qualquer preferência já declarada sem perguntar novamente. Se o usuário recusar, trabalhe no diretório atual e pule para o Passo 2.
47
+
48
+ ## Passo 1: Criar Workspace Isolado
49
+
50
+ **Você tem dois mecanismos. Tente nesta ordem.**
51
+
52
+ ### 1a. Ferramentas Nativas de Worktree (preferido)
53
+
54
+ O usuário pediu um workspace isolado (consentimento do Passo 0). Você já tem uma forma de criar worktree? Pode ser uma ferramenta com nome `EnterWorktree`, `WorktreeCreate`, um comando `/worktree` ou uma flag `--worktree`. Se tiver, use e pule para o Passo 2.
55
+
56
+ Ferramentas nativas cuidam da colocação do diretório, criação da branch e limpeza automaticamente. Usar `git worktree add` quando você tem uma ferramenta nativa cria estado fantasma que seu harness não consegue ver ou gerenciar.
57
+
58
+ Só prossiga para o Passo 1b se não tiver ferramenta nativa de worktree disponível.
59
+
60
+ ### 1b. Git Worktree Fallback
61
+
62
+ **Use apenas se o Passo 1a não se aplicar** — você não tem ferramenta nativa de worktree disponível. Crie um worktree manualmente usando git.
63
+
64
+ #### Seleção de Diretório
65
+
66
+ Siga esta ordem de prioridade. Preferência explícita do usuário sempre vence estado observado do filesystem.
67
+
68
+ 1. **Verifique suas instruções para uma preferência de diretório de worktree declarada.** Se o usuário já especificou uma, use sem perguntar.
69
+
70
+ 2. **Verifique se existe um diretório de worktree local do projeto:**
71
+ ```bash
72
+ ls -d .worktrees 2>/dev/null # Preferido (oculto)
73
+ ls -d worktrees 2>/dev/null # Alternativa
74
+ ```
75
+ Se encontrado, use. Se ambos existirem, `.worktrees` vence.
76
+
77
+ 3. **Se não houver outra orientação disponível**, use `.worktrees/` na raiz do projeto como padrão.
78
+
79
+ #### Verificação de Segurança (apenas diretórios locais do projeto)
80
+
81
+ **DEVE verificar se o diretório está no .gitignore antes de criar worktree:**
82
+
83
+ ```bash
84
+ git check-ignore -q .worktrees 2>/dev/null || git check-ignore -q worktrees 2>/dev/null
85
+ ```
86
+
87
+ **Se NÃO estiver ignorado:** Adicione ao .gitignore, faça commit da mudança, então prossiga.
88
+
89
+ **Por que é crítico:** Previne que conteúdo do worktree seja acidentalmente commitado ao repositório.
90
+
91
+ #### Criar o Worktree
92
+
93
+ ```bash
94
+ # Determine o caminho baseado na localização escolhida
95
+ caminho="$LOCALIZACAO/$NOME_DA_BRANCH"
96
+
97
+ git worktree add "$caminho" -b "$NOME_DA_BRANCH"
98
+ cd "$caminho"
99
+ ```
100
+
101
+ **Sandbox fallback:** Se `git worktree add` falhar com erro de permissão (negação do sandbox), informe que o sandbox bloqueou a criação do worktree e que você está trabalhando no diretório atual. Então execute setup e testes de baseline no lugar.
102
+
103
+ ## Passo 2: Configuração do Projeto
104
+
105
+ Auto-detecte e execute o setup apropriado:
106
+
107
+ ```bash
108
+ # Node.js
109
+ if [ -f package.json ]; then npm install; fi
110
+
111
+ # Rust
112
+ if [ -f Cargo.toml ]; then cargo build; fi
113
+
114
+ # Python
115
+ if [ -f requirements.txt ]; then pip install -r requirements.txt; fi
116
+ if [ -f pyproject.toml ]; then poetry install; fi
117
+
118
+ # Go
119
+ if [ -f go.mod ]; then go mod download; fi
120
+ ```
121
+
122
+ ## Passo 3: Verificar Baseline Limpo
123
+
124
+ Execute testes para garantir que o workspace começa limpo:
125
+
126
+ ```bash
127
+ # Use o comando apropriado para o projeto
128
+ npm test / cargo test / pytest / go test ./...
129
+ ```
130
+
131
+ **Se os testes falharem:** Reporte as falhas, pergunte se deve prosseguir ou investigar.
132
+
133
+ **Se os testes passarem:** Reporte pronto.
134
+
135
+ ### Relatório
136
+
137
+ ```
138
+ Worktree pronto em <caminho-completo>
139
+ Testes passando (<N> testes, 0 falhas)
140
+ Pronto para implementar <nome-da-feature>
141
+ ```
142
+
143
+ ## Tabela de Referência Rápida
144
+
145
+ | Situação | Ação |
146
+ |----------|------|
147
+ | Já em worktree vinculado | Pule criação (Passo 0) |
148
+ | Em submodule | Trate como repositório normal (guarda do Passo 0) |
149
+ | Ferramenta nativa de worktree disponível | Use (Passo 1a) |
150
+ | Sem ferramenta nativa | Fallback git worktree (Passo 1b) |
151
+ | `.worktrees/` existe | Use (verifique se ignorado) |
152
+ | `worktrees/` existe | Use (verifique se ignorado) |
153
+ | Ambos existem | Use `.worktrees/` |
154
+ | Nenhum existe | Verifique instruções, depois padrão `.worktrees/` |
155
+ | Diretório não ignorado | Adicione ao .gitignore + commit |
156
+ | Erro de permissão ao criar | Sandbox fallback, trabalhe no lugar |
157
+ | Testes falham no baseline | Reporte falhas + pergunte |
158
+ | Sem package.json/Cargo.toml | Pule instalação de dependências |
159
+
160
+ ## Erros Comuns
161
+
162
+ ### Lutando contra o harness
163
+
164
+ - **Problema:** Usar `git worktree add` quando a plataforma já oferece isolamento
165
+ - **Correção:** Passo 0 detecta isolamento existente. Passo 1a delega para ferramentas nativas.
166
+
167
+ ### Pulando detecção
168
+
169
+ - **Problema:** Criar worktree aninhado dentro de um worktree existente
170
+ - **Correção:** Sempre execute o Passo 0 antes de criar qualquer coisa
171
+
172
+ ### Pulando verificação de ignorado
173
+
174
+ - **Problema:** Conteúdo do worktree fica rastreado, poluindo git status
175
+ - **Correção:** Sempre use `git check-ignore` antes de criar worktree local do projeto
176
+
177
+ ### Assumindo localização do diretório
178
+
179
+ - **Problema:** Cria inconsistência, viola convenções do projeto
180
+ - **Correção:** Siga prioridade: instruções explícitas > diretório local existente do projeto > padrão
181
+
182
+ ### Prosseguindo com testes falhando
183
+
184
+ - **Problema:** Não é possível distinguir novos bugs de problemas pré-existentes
185
+ - **Correção:** Reporte falhas, obtenha permissão explícita para prosseguir
186
+
187
+ ## Bandeiras Vermelhas
188
+
189
+ **Nunca:**
190
+ - Crie worktree quando o Passo 0 detecta isolamento existente
191
+ - Use `git worktree add` quando você tem ferramenta nativa de worktree (ex.: `EnterWorktree`). Este é o erro #1 — se você tem, use-a.
192
+ - Pule o Passo 1a indo direto para comandos git do Passo 1b
193
+ - Crie worktree sem verificar se o diretório está ignorado (local do projeto)
194
+ - Pule verificação de baseline de testes
195
+ - Prossiga com testes falhando sem perguntar
196
+
197
+ **Sempre:**
198
+ - Execute detecção do Passo 0 primeiro
199
+ - Prefira ferramentas nativas sobre fallback git
200
+ - Siga prioridade de diretório: instruções explícitas > diretório local existente do projeto > padrão
201
+ - Verifique se o diretório está ignorado para diretórios locais do projeto
202
+ - Auto-detecte e execute setup do projeto
203
+ - Verifique baseline limpo de testes