Commit Graph

15 Commits

Author SHA1 Message Date
Bryan Frimin
619ec7b882 Add AI-powered evidence description generation
Introduce a background worker that automatically generates
compliance-focused descriptions for uploaded evidence files
using configurable LLM providers. Descriptions are surfaced
across all interfaces: GraphQL API, MCP API, CLI, and the
console UI.

Key changes:
- Multi-provider LLM config with per-agent settings (pointer
  types for Temperature/MaxTokens to preserve zero values)
- Evidence description worker with bounded concurrency
- EvidenceDescriptionStatus typed enum with PostgreSQL enum type
- New `prb evidence` CLI commands (list, view, delete)
- Evidence description displayed in console table and preview
- Migration only marks evidences without files as completed

Signed-off-by: Bryan Frimin <bryan@getprobo.com>
2026-03-26 14:32:41 +01:00
Sacha Al Himdani
8c02c53315 Update copyright headers across all Go files
Signed-off-by: Sacha Al Himdani <sacha@getprobo.com>
2026-03-25 17:38:32 +01:00
Sacha Al Himdani
16b966b8fb Fix multiline function call style violations
Expand mixed inline/multiline function calls so each argument
is on its own line, matching the one-argument-per-line rule.

Signed-off-by: Sacha Al Himdani <sacha@getprobo.com>
2026-03-17 15:59:26 +01:00
Bryan Frimin
6a77d42dd6 Style
Signed-off-by: Bryan Frimin <bryan@getprobo.com>
2026-03-16 00:28:47 +01:00
Bryan Frimin
d01ee914c1 Style
Signed-off-by: Bryan Frimin <bryan@getprobo.com>
2026-03-13 20:00:22 +01:00
Bryan Frimin
cb6189d7ac Close inner stream before finalizing trace span
Signed-off-by: Bryan Frimin <bryan@getprobo.com>
2026-03-13 19:40:54 +01:00
Bryan Frimin
91be6dcbfb Preserve extra JSON Schema fields in Anthropic tools
buildTools was only copying "properties" and "required" into
ToolInputSchemaParam, silently dropping root-level constraints
like additionalProperties and $defs. Forward them through the
SDK's ExtraFields map so the full schema reaches the API.

Signed-off-by: Bryan Frimin <bryan@getprobo.com>
2026-03-13 19:36:44 +01:00
Bryan Frimin
2df9a3fe59 Propagate model through streamed responses
StreamAccumulator never set its model field, so
Response().Model was always empty for streamed
completions. Add a Model field to stream events
and populate it in all three providers (OpenAI,
Anthropic, Bedrock).

Signed-off-by: Bryan Frimin <bryan@getprobo.com>
2026-03-13 19:17:17 +01:00
Bryan Frimin
9e842b8ef3 Map missing model settings to OpenAI API params
FrequencyPenalty, PresencePenalty, and ParallelToolCalls were
present on ChatCompletionRequest but never forwarded in
buildParams, so agent-level settings configured via functional
options were silently ignored for the OpenAI provider.

Signed-off-by: Bryan Frimin <bryan@getprobo.com>
2026-03-13 19:07:56 +01:00
Bryan Frimin
659ff1e845 Honor JSONSchema.Strict in OpenAI response format
buildResponseFormat was hardcoding strict: true instead of
reading rf.JSONSchema.Strict, making it impossible to request
non-strict JSON-schema output.

Signed-off-by: Bryan Frimin <bryan@getprobo.com>
2026-03-13 19:02:12 +01:00
Bryan Frimin
3b9a13b5d9 Only advance streamed tool-call index for tool-use blocks
Incrementing toolIndex on every ContentBlockStop caused it to drift
when non-tool blocks (e.g. text) preceded tool-use blocks, making
Bedrock tool calls disappear from the accumulated response.

Track whether the current content block is a tool-use block and only
bump the index when a tool-use block ends.

Signed-off-by: Bryan Frimin <bryan@getprobo.com>
2026-03-13 18:26:38 +01:00
Bryan Frimin
356de5ab19 Fix Bedrock ToolChoiceNone still sending tool definitions
Signed-off-by: Bryan Frimin <bryan@getprobo.com>
2026-03-13 18:20:22 +01:00
Bryan Frimin
0670f581da Skip empty text block in Anthropic tool-only assistant turns
Signed-off-by: Bryan Frimin <bryan@getprobo.com>
2026-03-13 18:19:57 +01:00
Bryan Frimin
9fd251ee5d Add agent library
Signed-off-by: Bryan Frimin <bryan@getprobo.com>
2026-03-13 17:21:43 +01:00
Bryan Frimin
158c36d9ab Add LLM interface
Signed-off-by: Bryan Frimin <bryan@getprobo.com>
2026-03-13 17:21:43 +01:00