@payconductor/houndsman 0.12.0 → 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/README.md +23 -2
- package/package.json +1 -1
- package/src/cli/commands/compare-command.ts +112 -0
- package/src/cli/commands/context-command.ts +1 -0
- package/src/cli/commands/doctor-command.ts +22 -0
- package/src/cli/commands/findings-command.ts +11 -1
- package/src/cli/commands/hunt-command.ts +479 -0
- package/src/cli/commands/review-command.ts +58 -2
- package/src/cli/commands/status-command.ts +3 -2
- package/src/cli/help.ts +20 -3
- package/src/cli/index.ts +20 -3
- package/src/cli/progress.ts +50 -0
- package/src/core/ai/ai-client.ts +38 -2
- package/src/core/ai/ai-sdk-model-provider.ts +39 -0
- package/src/core/ai/features/brief-enricher.ts +1 -1
- package/src/core/ai/features/business-analyzer.ts +61 -0
- package/src/core/ai/features/business-summarizer.ts +44 -0
- package/src/core/ai/index.ts +14 -1
- package/src/core/ai/prompts/brief.ts +33 -7
- package/src/core/ai/prompts/business.ts +76 -0
- package/src/core/ai/provider-capabilities.ts +12 -0
- package/src/core/ai/schemas.ts +70 -2
- package/src/core/ai/types.ts +2 -0
- package/src/core/ai/usage-recorder.ts +53 -1
- package/src/core/brief.ts +246 -12
- package/src/core/builtins.ts +108 -0
- package/src/core/business-summary.ts +583 -0
- package/src/core/commands/compare.ts +233 -0
- package/src/core/commands/context.ts +6 -2
- package/src/core/commands/findings.ts +38 -30
- package/src/core/commands/review.ts +6 -0
- package/src/core/commands/scaffold.ts +38 -0
- package/src/core/commands/status.ts +9 -4
- package/src/core/compare.ts +243 -0
- package/src/core/concurrency.ts +30 -0
- package/src/core/config.ts +57 -1
- package/src/core/defaults.ts +63 -2
- package/src/core/domain/budget.ts +62 -4
- package/src/core/domain/classification.ts +12 -2
- package/src/core/engine/carryover.ts +4 -0
- package/src/core/engine/finalize-pipeline.ts +347 -0
- package/src/core/engine/prepare-pipeline.ts +1294 -0
- package/src/core/engine/review-context.ts +51 -0
- package/src/core/engine/review-options.ts +47 -0
- package/src/core/engine/review-scope.ts +106 -26
- package/src/core/engine/review-session.ts +18 -16
- package/src/core/engine/review-workspace.ts +14 -0
- package/src/core/engine/run-artifacts.ts +196 -0
- package/src/core/engine/run-format.ts +4 -0
- package/src/core/env.ts +14 -0
- package/src/core/findings-state.ts +13 -1
- package/src/core/github-review.ts +5 -2
- package/src/core/hunt/hunt-runner.ts +418 -0
- package/src/core/hunt/index.ts +61 -0
- package/src/core/hunt/maki-install.ts +331 -0
- package/src/core/hunt/maki-intent-prompt.ts +50 -0
- package/src/core/hunt/maki-model.ts +101 -0
- package/src/core/hunt/maki-prompt.ts +83 -0
- package/src/core/hunt/maki-release.ts +104 -0
- package/src/core/hunt/maki-runner.ts +276 -0
- package/src/core/hunt/pool.ts +8 -0
- package/src/core/logging/index.ts +7 -0
- package/src/core/logging/logger.ts +19 -0
- package/src/core/logging/progress.ts +366 -0
- package/src/core/orchestrator.ts +33 -1180
- package/src/core/paths.ts +6 -3
- package/src/core/pr-context.ts +2 -4
- package/src/core/prepare-report.ts +61 -0
- package/src/core/project-config.ts +46 -1
- package/src/core/propagation.ts +127 -0
- package/src/core/registry-check.ts +60 -21
- package/src/core/renderers/manifest-writer.ts +13 -0
- package/src/core/renderers/resume-renderer.ts +151 -11
- package/src/core/report-builder.ts +108 -278
- package/src/core/storage/file/file-storage.ts +7 -3
- package/src/core/storage/sqlite/mappers.ts +10 -0
- package/src/core/storage/sqlite/schema.ts +104 -23
- package/src/core/storage/sqlite/sqlite-storage.ts +22 -9
- package/src/core/storage/types.ts +17 -4
- package/src/core/storage/work-area.ts +59 -1
- package/src/core/types.ts +31 -0
- package/src/core/watchdog-registry.ts +21 -3
- package/src/index.ts +78 -4
- package/src/server/client/ArtifactsPanel.tsx +4 -2
- package/src/server/client/FindingCard.tsx +21 -1
- package/src/server/client/RunsSection.tsx +5 -0
- package/src/server/client/utils/constants.ts +21 -11
- package/src/server/client/utils/markdown.ts +1 -1
- package/src/server/client/utils/types.ts +14 -2
- package/src/server/run-repository.ts +35 -14
- package/src/server/styles.css +2 -0
- package/src/skill/OUTPUT-FORMAT.md +36 -10
- package/src/skill/README.md +30 -14
- package/src/skill/SETUP.md +22 -1
- package/src/skill/SKILL.md +17 -4
- package/src/skill/example-resume.md +43 -0
- package/src/skill/hunt.md +181 -58
- package/src/tests/__snapshots__/baseline.test.ts.snap +206 -178
- package/src/tests/ai-core.test.ts +84 -1
- package/src/tests/ai-features.test.ts +95 -4
- package/src/tests/baseline.test.ts +29 -121
- package/src/tests/brief-scope.test.ts +250 -0
- package/src/tests/business-summary.test.ts +258 -0
- package/src/tests/cli.test.ts +1 -0
- package/src/tests/compare.test.ts +233 -0
- package/src/tests/fixtures/fake-model-provider.ts +2 -1
- package/src/tests/hunt-cli.test.ts +185 -0
- package/src/tests/hunt-install.test.ts +153 -0
- package/src/tests/hunt-maki.test.ts +525 -0
- package/src/tests/markdown.test.ts +3 -3
- package/src/tests/progress.test.ts +145 -0
- package/src/tests/propagation.test.ts +119 -0
- package/src/tests/review-resume.test.ts +60 -1
- package/src/tests/review-scope.test.ts +90 -19
- package/src/tests/review-scripts.test.ts +106 -218
- package/src/tests/server.test.ts +7 -4
- package/src/tests/storage.test.ts +194 -9
- package/src/core/renderers/report-renderer.ts +0 -66
- package/src/skill/example-review.md +0 -66
|
@@ -1,66 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Renderização do relatório (biblioteca) — superfície OO sobre `report-builder`.
|
|
3
|
-
*
|
|
4
|
-
* O texto continua nas funções puras; a classe fixa o resolver de nomes e evita
|
|
5
|
-
* repetir a lista de argumentos no orquestrador.
|
|
6
|
-
*/
|
|
7
|
-
|
|
8
|
-
import type { JevCandidate } from "../jev";
|
|
9
|
-
import {
|
|
10
|
-
type ContextSummary,
|
|
11
|
-
type DomainReport,
|
|
12
|
-
type MergedFinding,
|
|
13
|
-
renderDomainReport,
|
|
14
|
-
renderReport,
|
|
15
|
-
type WatchdogNameResolver,
|
|
16
|
-
type WatchdogReport,
|
|
17
|
-
} from "../report-builder";
|
|
18
|
-
|
|
19
|
-
/** Renderiza o relatório consolidado e os relatórios por domínio. */
|
|
20
|
-
export class ReportRenderer {
|
|
21
|
-
private readonly nameOf: WatchdogNameResolver;
|
|
22
|
-
|
|
23
|
-
constructor(nameOf: WatchdogNameResolver) {
|
|
24
|
-
this.nameOf = nameOf;
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
/** Relatório consolidado (`review.md`). */
|
|
28
|
-
render(
|
|
29
|
-
branch: string,
|
|
30
|
-
reports: WatchdogReport[],
|
|
31
|
-
merged: MergedFinding[],
|
|
32
|
-
coverage: { classified?: Record<string, string[]> },
|
|
33
|
-
context?: ContextSummary | null,
|
|
34
|
-
candidates?: JevCandidate[],
|
|
35
|
-
domains: readonly DomainReport[] = [],
|
|
36
|
-
): string {
|
|
37
|
-
return renderReport(
|
|
38
|
-
branch,
|
|
39
|
-
reports,
|
|
40
|
-
merged,
|
|
41
|
-
coverage,
|
|
42
|
-
context,
|
|
43
|
-
candidates,
|
|
44
|
-
this.nameOf,
|
|
45
|
-
domains,
|
|
46
|
-
);
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
/** Relatório isolado de um watchdog (`review.<id>.md`). */
|
|
50
|
-
renderDomain(
|
|
51
|
-
branch: string,
|
|
52
|
-
report: WatchdogReport,
|
|
53
|
-
merged: MergedFinding[],
|
|
54
|
-
expectedFiles: number,
|
|
55
|
-
context?: ContextSummary | null,
|
|
56
|
-
): string {
|
|
57
|
-
return renderDomainReport(
|
|
58
|
-
branch,
|
|
59
|
-
report,
|
|
60
|
-
merged,
|
|
61
|
-
expectedFiles,
|
|
62
|
-
context,
|
|
63
|
-
this.nameOf,
|
|
64
|
-
);
|
|
65
|
-
}
|
|
66
|
-
}
|
|
@@ -1,66 +0,0 @@
|
|
|
1
|
-
# PR Review — feature/add-webhook-retry
|
|
2
|
-
|
|
3
|
-
**Data:** 2026-04-20
|
|
4
|
-
**Watchdogs ativos:** api-contracts, backend-architecture, payments-integrations, acquirer-integrations
|
|
5
|
-
**Achados:** 2 bloqueantes · 1 atenção · 1 sugestões · 1 nit
|
|
6
|
-
|
|
7
|
-
## Contexto da PR
|
|
8
|
-
**PR:** #482 Adicionar retry de webhooks — https://github.com/org/repo/pull/482
|
|
9
|
-
**Branch:** `feature/add-webhook-retry` → `main`
|
|
10
|
-
**Objetivo:** Tornar o envio de webhooks resiliente a falhas temporárias do destinatário.
|
|
11
|
-
**Motivação:** Webhooks com falha exigiam reenvio manual e causavam perda de eventos em integradores.
|
|
12
|
-
**Resumo das alterações:**
|
|
13
|
-
- Nova fila de retry para webhooks que falharam.
|
|
14
|
-
- Novo endpoint interno para reprocessar eventos manualmente.
|
|
15
|
-
- Registro de tentativas no handler de envio.
|
|
16
|
-
|
|
17
|
-
## Relatórios por domínio
|
|
18
|
-
|
|
19
|
-
| Watchdog | Achados | Revisados | Relatório |
|
|
20
|
-
|---|---|---|---|
|
|
21
|
-
| Arquitetura Backend | 2 | 3/3 | [`review.backend-architecture.md`](review.backend-architecture.md) |
|
|
22
|
-
| Pagamentos & Integrações | 1 | 4/4 | [`review.payments-integrations.md`](review.payments-integrations.md) |
|
|
23
|
-
| Acquirer Integrations | 2 | 3/4 | [`review.acquirer-integrations.md`](review.acquirer-integrations.md) |
|
|
24
|
-
|
|
25
|
-
## Cobertura
|
|
26
|
-
|
|
27
|
-
| Watchdog | Arquivos revisados | Findings |
|
|
28
|
-
|---|---|---|
|
|
29
|
-
| API & Contratos | 2 | 0 |
|
|
30
|
-
| Arquitetura Backend | 3 | 2 |
|
|
31
|
-
| Pagamentos & Integrações | 4 | 1 |
|
|
32
|
-
| Acquirer Integrations | 3/4 (faltam 1) | 2 |
|
|
33
|
-
|
|
34
|
-
## Conclusão
|
|
35
|
-
|
|
36
|
-
**Status:** ❌ Mudanças Necessárias
|
|
37
|
-
**Resumo:** 2 violações bloqueantes, 1 ponto de atenção, 1 sugestão e 1 nit.
|
|
38
|
-
|
|
39
|
-
## ❌ blocking
|
|
40
|
-
|
|
41
|
-
- **Webhook handler sem verifySignature** — `server/src/services/integrations/acquirer/webhook/handle-charge-event.ts:15` · _Acquirer Integrations, Pagamentos & Integrações_
|
|
42
|
-
Payload processado antes de validar a assinatura do provider.
|
|
43
|
-
**Ação:** Validar `verifyWebhookSignature(payload, signature, secret)` antes de qualquer efeito.
|
|
44
|
-
**Evidência:** `const event = JSON.parse(body)`
|
|
45
|
-
|
|
46
|
-
- **Promise não aguardada** — `server/src/services/webhook/webhook-retry-service.ts:92` · _Pagamentos & Integrações_
|
|
47
|
-
`updateWebhookStatus(id, 'failed')` sem `await` — status pode não persistir antes do retorno.
|
|
48
|
-
**Ação:** Adicionar `await`.
|
|
49
|
-
|
|
50
|
-
## ⚠️ attention
|
|
51
|
-
|
|
52
|
-
- **Retry sem backoff** — `server/src/services/webhook/webhook-retry-service.ts:55` · _Acquirer Integrations_
|
|
53
|
-
Retry com intervalo fixo de 1s.
|
|
54
|
-
**Ação:** Usar exponential backoff com jitter.
|
|
55
|
-
|
|
56
|
-
## 💡 suggestion
|
|
57
|
-
|
|
58
|
-
- **Complexidade** — `server/src/services/webhook/webhook-retry-service.ts:45-78` · _Arquitetura Backend_
|
|
59
|
-
`retryWithBackoff` com 6 níveis de indentação.
|
|
60
|
-
**Ação:** Extrair `calculateBackoffDelay(attempt, config)` e usar early returns.
|
|
61
|
-
|
|
62
|
-
## 🔎 nit
|
|
63
|
-
|
|
64
|
-
- **Ordem de membros** — `server/src/services/webhook/webhook-retry-service.ts:12` · _Arquitetura Backend_
|
|
65
|
-
Campo privado declarado antes do construtor público.
|
|
66
|
-
**Ação:** Reordenar membros (públicos primeiro).
|