Add async third-party vetting

Queue vetting on third_parties with PENDING, PROCESSING,
COMPLETED, and FAILED states. Expose enqueue and status through
GraphQL, MCP, CLI, and n8n, validate vet requests, tune the
worker via config, and poll the detail page while vetting runs.

Signed-off-by: Sacha Al Himdani <sacha@getprobo.com>
This commit is contained in:
Sacha Al Himdani
2026-05-27 13:34:49 +02:00
parent 1a71d15bc5
commit 6e7c96732f
59 changed files with 3251 additions and 520 deletions

View File

@@ -247,6 +247,36 @@ spec:
name: {{ include "probo.fullname" . }}
key: firecrawl-api-key
{{- end }}
# Third-Party Vetter Agent
{{- if .Values.probo.thirdPartyVetter.provider }}
- name: AGENT_THIRD_PARTY_VETTER_PROVIDER
value: {{ .Values.probo.thirdPartyVetter.provider | quote }}
{{- end }}
{{- if .Values.probo.thirdPartyVetter.modelName }}
- name: AGENT_THIRD_PARTY_VETTER_MODEL_NAME
value: {{ .Values.probo.thirdPartyVetter.modelName | quote }}
{{- end }}
{{- if .Values.probo.thirdPartyVetter.temperature }}
- name: AGENT_THIRD_PARTY_VETTER_TEMPERATURE
value: {{ .Values.probo.thirdPartyVetter.temperature | quote }}
{{- end }}
{{- if .Values.probo.thirdPartyVetter.maxTokens }}
- name: AGENT_THIRD_PARTY_VETTER_MAX_TOKENS
value: {{ .Values.probo.thirdPartyVetter.maxTokens | quote }}
{{- end }}
# Third-Party Vetting Worker
{{- if .Values.probo.thirdPartyVettingWorker.interval }}
- name: THIRD_PARTY_VETTING_INTERVAL
value: {{ .Values.probo.thirdPartyVettingWorker.interval | quote }}
{{- end }}
{{- if .Values.probo.thirdPartyVettingWorker.maxConcurrency }}
- name: THIRD_PARTY_VETTING_MAX_CONCURRENCY
value: {{ .Values.probo.thirdPartyVettingWorker.maxConcurrency | quote }}
{{- end }}
{{- if .Values.probo.thirdPartyVettingWorker.staleAfter }}
- name: THIRD_PARTY_VETTING_STALE_AFTER
value: {{ .Values.probo.thirdPartyVettingWorker.staleAfter | quote }}
{{- end }}
# Tracker Mapping Agent
{{- if .Values.probo.trackerMapping.provider }}
- name: AGENT_TRACKER_MAPPING_PROVIDER

View File

@@ -169,6 +169,19 @@ probo:
# agentTools:
# firecrawlApiKey: "CHANGE_ME_FIRECRAWL_API_KEY"
# Third-party vetter agent (optional, AI-powered third-party vetting)
# thirdPartyVetter:
# provider: "openai"
# modelName: "gpt-4o"
# temperature: "0.3"
# maxTokens: "8192"
# Third-party vetting worker tuning (optional; seconds for interval/staleAfter).
# thirdPartyVettingWorker:
# interval: 10
# maxConcurrency: 1
# staleAfter: 1500
# Tracker mapping agent (optional, auto-links tracker patterns to vendors)
# trackerMapping:
# provider: "openai"

View File

@@ -266,9 +266,24 @@ probo:
# Agent tools (optional, shared across agents)
agentTools:
# Firecrawl web search API key (used by tracker mapping and third-party assessor agents)
# Firecrawl web search API key (used by tracker mapping and third-party vetter agents)
firecrawlApiKey: ""
# Third-party vetter agent (optional, requires openai.apiKey or anthropic key)
thirdPartyVetter:
provider: ""
modelName: ""
temperature: ""
maxTokens: ""
# Third-party vetting background worker tuning (optional). interval and
# staleAfter are in seconds. Keep concurrency modest to stay under LLM
# rate limits and the database connection pool.
thirdPartyVettingWorker:
interval: 10
maxConcurrency: 1
staleAfter: 1500
# Tracker mapping agent (optional, requires openai.apiKey or anthropic key)
trackerMapping:
provider: ""