Appendix C — Data Dictionary
El data dictionary completo — cada field, cada type, cada constraint para las data structures que usa el lab.
TaskParsedQueryCandidateCandidateListSourceEvidenceEvidenceBundleReviewReviewSummaryPriceSnapshotPriceSeriesTranscriptTranscriptChunkPhaseResultPhaseStatus EnumMission State (phase.json)Phase RecordRequest JournalToken Pool StateCoordinator APIRequest: POST /v1/session/<id>/messageResponse: 200 OKScout APIRequest: POST /v1/missionsResponse: 200 OKConfiguration Filesopenclaw.jsontoken_pool_config.jsontools.jsonSee alsoPropósito
Este appendix es la referencia canónica para las data structures que usa el lab. Cada typed artifact, cada configuration file, cada log record y cada API request y response está documentado aquí.
El data dictionary es el companion de la página Artifacts y de la página External Providers → Request Journal.
Conventions
- Los field names van en
snake_case. - Los fields Required se marcan con
R. Los opcionales conO. - Los Types son tipos Python Pydantic-compatibles.
- Las Constraints se documentan cuando existen (min/max, regex, enum).
Research Framework Schemas
Task
La mission task. Producido por F0.
| Field | Type | Required | Constraints |
|---|---|---|---|
mission_id | string | R | UUID prefix o stable identifier. |
raw_query | string | R | La user query original, verbatim. |
parsed | ParsedQuery | R | |
created_at | datetime | R | UTC. |
config | object | O | Per-mission configuration. |
ParsedQuery
La mission query estructurada. Parte de Task.
| Field | Type | Required | Constraints |
|---|---|---|---|
topic | string | R | El primary research topic. |
location | string | null | O | El target location, si hay. |
period | string | null | O | El target date range o period. |
budget_max | float | null | O | El maximum budget, si hay. |
budget_currency | string | R | ISO 4217 currency code (default EUR). |
constraints | list[string] | O | Mission constraints adicionales. |
Candidate
Un potential match para una research query. Producido por F1.
| Field | Type | Required | Constraints |
|---|---|---|---|
id | string | R | UUID prefix. |
name | string | R | Display name. |
aliases | list[string] | O | Alternative names encontrados. |
category | string | R | hotel, restaurant, product, etc. |
source_ids | list[string] | R | Los Source.id values. |
metadata | object | O | Fields category-specific. |
confidence | float | R | 0.0 a 1.0. |
CandidateList
Una lista de candidates. Producida por F1.
| Field | Type | Required | Constraints |
|---|---|---|---|
mission_id | string | R | |
created_at | datetime | R | UTC. |
candidates | list[Candidate] | R | |
sources | list[Source] | R |
Source
Una referencia a una URL con metadata. Producido por cada phase que usa un adapter.
| Field | Type | Required | Constraints |
|---|---|---|---|
id | string | R | UUID prefix. |
title | string | R | El source title. |
url | string | R | La canonical source URL. |
publisher | string | R | El publisher o host. |
phase | string | R | La phase que produjo este source. |
retrieved_at | datetime | R | UTC. |
Evidence
Una pieza de evidence que sostiene un finding. Usado a lo largo de las phases.
| Field | Type | Required | Constraints |
|---|---|---|---|
id | string | R | UUID prefix. |
source_id | string | R | El Source.id que produjo este evidence. |
quote | string | R | El evidence text. |
context | string | O | El context en el que aparece el evidence. |
confidence | float | R | 0.0 a 1.0. |
EvidenceBundle
Una colección de evidence items.
| Field | Type | Required | Constraints |
|---|---|---|---|
mission_id | string | R | |
created_at | datetime | R | UTC. |
items | list[Evidence] | R |
Review
Una review individual.
| Field | Type | Required | Constraints |
|---|---|---|---|
id | string | R | UUID prefix. |
source_id | string | R | El Source.id. |
author | string | O | El nombre del reviewer (si está disponible). |
rating | float | O | 0.0 a 5.0. |
text | string | R | El review text. |
language | string | R | ISO 639-1 code. |
published_at | datetime | O | UTC. |
sentiment | object | O | Distribución positive, neutral, negative. |
ReviewSummary
Reviews agregadas. Producidas por F2.
| Field | Type | Required | Constraints |
|---|---|---|---|
candidate_id | string | R | El Candidate.id. |
total_reviews | integer | R | Non-negative. |
average_rating | float | null | O | 0.0 a 5.0. |
sentiment | object | O | Distribución de sentiment. |
topics | list[object] | O | Cada item: topic, count, sentiment. |
sources | list[Source] | R | Sources usadas para el summary. |
PriceSnapshot
Una price observation individual. Producida por F4.
| Field | Type | Required | Constraints |
|---|---|---|---|
candidate_id | string | R | El Candidate.id. |
price | float | R | Positive. |
currency | string | R | ISO 4217. |
observed_at | datetime | R | UTC. |
provider | string | R | El provider (p. ej., booking.com). |
url | string | O | La URL de la price observation. |
PriceSeries
Una serie de price observations. Producida por F4.
| Field | Type | Required | Constraints |
|---|---|---|---|
candidate_id | string | R | El Candidate.id. |
snapshots | list[PriceSnapshot] | R | |
min | float | null | O | Min price. |
max | float | null | O | Max price. |
median | float | null | O | Median price. |
trend | string | O | up, down, flat, unknown. |
sources | list[Source] | R | Sources usadas para la series. |
Transcript
Un video transcript. Producido por Y2.
| Field | Type | Required | Constraints |
|---|---|---|---|
video_id | string | R | YouTube video ID. |
url | string | R | Video URL. |
language | string | R | ISO 639-1 code. |
chunks | list[TranscriptChunk] | R | |
full_text | string | R | Plain text concatenado. |
source | string | R | youtube_transcript_api o yt_dlp. |
TranscriptChunk
Un chunk de un transcript.
| Field | Type | Required | Constraints |
|---|---|---|---|
start_s | float | R | Start time en segundos. |
end_s | float | R | End time en segundos. |
text | string | R | Chunk text. |
PhaseResult
El envelope para cada phase output.
| Field | Type | Required | Constraints |
|---|---|---|---|
phase | string | R | Phase identifier (p. ej., f1_candidates). |
status | PhaseStatus | R | Lifecycle status. |
started_at | datetime | null | O | UTC. |
ended_at | datetime | null | O | UTC. |
attempts | integer | O | Default 1. |
output_artifacts | list[string] | O | Artifact filenames producidos. |
errors | list[object] | O | Cada item: code, message, retryable. |
metadata | object | O | Metadata phase-specific. |
PhaseStatus Enum
| Value | Meaning |
|---|---|
pending | La phase no ha empezado aún. |
running | La phase se está ejecutando. |
succeeded | La phase terminó y produjo todos los expected outputs. |
succeeded_partial | La phase terminó pero faltan algunos outputs. |
failed_retryable | La phase falló pero se puede reintentar. |
failed_terminal | La phase falló y no se puede reintentar. |
skipped | La phase fue intencionalmente no ejecutada. |
blocked_missing_input | La phase no pudo empezar porque falta un input. |
stale | El input de la phase se actualizó después de que corrió. |
Mission State (phase.json)
El mission state. Lo escribe el orchestrator después de cada phase.
| Field | Type | Required | Constraints |
|---|---|---|---|
mission_id | string | R | |
status | string | R | running, paused, completed, failed. |
current_phase | string | null | O | La phase que está corriendo o acaba de terminar. |
phases | object | R | Keyed por phase name; cada value es un phase record. |
created_at | datetime | R | UTC. |
updated_at | datetime | R | UTC. |
Phase Record
| Field | Type | Required | Constraints |
|---|---|---|---|
status | PhaseStatus | R | |
started_at | datetime | null | O | UTC. |
ended_at | datetime | null | O | UTC. |
attempts | integer | O | Default 1. |
output_artifacts | list[string] | O | Artifact filenames producidos. |
error | object | O | code, message, retryable. |
Request Journal
El request journal record.
| Field | Type | Required | Constraints |
|---|---|---|---|
ts | datetime | R | UTC, ISO 8601 con millisecond precision. |
mission_id | string | R | |
phase | string | R | |
adapter | string | R | tavily, duckduckgo, google_search, youtube_transcript, yt_dlp, perplexity. |
action | string | R | search, transcript, synthesize, etc. |
token_name | string | null | O | El name del token usado. Nunca el value. |
request | object | R | Redacted si contiene personal data. |
response_summary | object | R | status, items, duration_ms, etc. |
result | string | R | succeeded, failed, partial. |
error | string | null | O | Error message si result es failed. |
cost | object | O | tokens, usd, etc., si aplica. |
Token Pool State
El token pool state record.
| Field | Type | Required | Constraints |
|---|---|---|---|
name | string | R | El friendly name del token. |
total_requests | integer | R | Cumulative. |
total_errors | integer | R | Cumulative. |
last_error | string | null | O | Sanitized error message. |
last_success_at | datetime | null | O | UTC. |
status | string | R | active, quota_exhausted, error. |
Coordinator API
La HTTP API del Coordinator. La API completa está en Coordinator → User interface.
Request: POST /v1/session/<id>/message
| Field | Type | Required | Constraints |
|---|---|---|---|
content | string | R | El message del usuario. |
attachments | list[object] | O | File attachments opcionales. |
Response: 200 OK
| Field | Type | Required | Constraints |
|---|---|---|---|
request_id | string | R | |
content | string | R | La response del Coordinator. |
attachments | list[object] | O | File attachments opcionales. |
agent_calls | list[object] | O | Las agent calls que se despacharon. |
Scout API
La HTTP API del Scout. La API completa está en Research Worker → Configuration.
Request: POST /v1/missions
| Field | Type | Required | Constraints |
|---|---|---|---|
mission_id | string | R | |
query | string | R | |
config | object | O | Per-mission configuration. |
Response: 200 OK
| Field | Type | Required | Constraints |
|---|---|---|---|
mission_id | string | R | |
status | string | R | accepted, rejected. |
report_path | string | O | Path al report (cuando termina). |
Configuration Files
openclaw.json
El main configuration file. Sanitized example:
token_pool_config.json
El token pool configuration.
| Field | Type | Required | Constraints |
|---|---|---|---|
providers | object | R | Keyed por provider name. |
providers.<name>.tokens | list[object] | R | Los tokens para el provider. |
providers.<name>.strategy | string | R | round-robin, weighted-round-robin, least-used, failover. |
tools.json
El tool registry para un proyecto.
| Field | Type | Required | Constraints |
|---|---|---|---|
version | string | R | Semantic version. |
tools | list[object] | R | Las tool entries. |
tools[].name | string | R | |
tools[].description | string | R | |
tools[].location | string | R | Path al entry point de la tool. |
tools[].status | string | R | ready, planned, deprecated. |
tools[].capabilities | list[string] | R | |
tools[].tags | list[string] | R |