Add architecture package and application skeleton
This commit is contained in:
@@ -0,0 +1,158 @@
|
||||
# Persistent Storage Schema Draft
|
||||
|
||||
## Database Target
|
||||
|
||||
- production: PostgreSQL
|
||||
- local development: SQLite
|
||||
|
||||
## Tables
|
||||
|
||||
### projects
|
||||
|
||||
- `project_id` pk
|
||||
- `name`
|
||||
- `config_blob`
|
||||
- `created_at`
|
||||
- `updated_at`
|
||||
|
||||
### conversations
|
||||
|
||||
- `conversation_id` pk
|
||||
- `project_id`
|
||||
- `title`
|
||||
- `created_at`
|
||||
- `updated_at`
|
||||
|
||||
### messages
|
||||
|
||||
- `message_id` pk
|
||||
- `conversation_id`
|
||||
- `role`
|
||||
- `content`
|
||||
- `attachments_json`
|
||||
- `created_at`
|
||||
|
||||
### tasks
|
||||
|
||||
- `task_id` pk
|
||||
- `project_id`
|
||||
- `conversation_id`
|
||||
- `goal`
|
||||
- `inputs_json`
|
||||
- `status`
|
||||
- `requested_mode`
|
||||
- `effective_mode`
|
||||
- `current_node_id`
|
||||
- `result_summary_json`
|
||||
- `created_at`
|
||||
- `updated_at`
|
||||
|
||||
### task_graphs
|
||||
|
||||
- `task_id` pk
|
||||
- `graph_version`
|
||||
- `graph_metadata_json`
|
||||
- `created_at`
|
||||
|
||||
### task_nodes
|
||||
|
||||
- `node_id` pk
|
||||
- `task_id`
|
||||
- `node_type`
|
||||
- `status`
|
||||
- `input_json`
|
||||
- `output_json`
|
||||
- `dependencies_json`
|
||||
- `assigned_runner`
|
||||
- `attempts`
|
||||
- `retryable`
|
||||
- `timeout_ms`
|
||||
- `created_at`
|
||||
- `updated_at`
|
||||
|
||||
### task_events
|
||||
|
||||
- `event_id` pk
|
||||
- `task_id`
|
||||
- `conversation_id`
|
||||
- `node_id`
|
||||
- `event_type`
|
||||
- `correlation_id`
|
||||
- `causation_id`
|
||||
- `payload_json`
|
||||
- `occurred_at`
|
||||
|
||||
### confirmations
|
||||
|
||||
- `confirmation_id` pk
|
||||
- `task_id`
|
||||
- `node_id`
|
||||
- `status`
|
||||
- `scope`
|
||||
- `decision_json`
|
||||
- `preview_json`
|
||||
- `comment`
|
||||
- `created_at`
|
||||
- `resolved_at`
|
||||
|
||||
### worker_sessions
|
||||
|
||||
- `session_id` pk
|
||||
- `worker_id`
|
||||
- `name`
|
||||
- `machine`
|
||||
- `os`
|
||||
- `version`
|
||||
- `status`
|
||||
- `capabilities_json`
|
||||
- `last_heartbeat_at`
|
||||
- `current_task_id`
|
||||
- `connected_at`
|
||||
- `disconnected_at`
|
||||
|
||||
### model_invocations
|
||||
|
||||
- `invocation_id` pk
|
||||
- `task_id`
|
||||
- `node_id`
|
||||
- `slot`
|
||||
- `provider`
|
||||
- `model`
|
||||
- `status`
|
||||
- `request_json`
|
||||
- `response_json`
|
||||
- `usage_json`
|
||||
- `fallback_from_invocation_id`
|
||||
- `created_at`
|
||||
|
||||
### tool_invocations
|
||||
|
||||
- `invocation_id` pk
|
||||
- `task_id`
|
||||
- `node_id`
|
||||
- `source_type`
|
||||
- `source_id`
|
||||
- `tool_name`
|
||||
- `status`
|
||||
- `request_json`
|
||||
- `response_json`
|
||||
- `created_at`
|
||||
|
||||
### artifacts
|
||||
|
||||
- `artifact_id` pk
|
||||
- `task_id`
|
||||
- `node_id`
|
||||
- `artifact_type`
|
||||
- `storage_uri`
|
||||
- `metadata_json`
|
||||
- `created_at`
|
||||
|
||||
## Required Indexes
|
||||
|
||||
- `tasks(status, updated_at)`
|
||||
- `task_nodes(task_id, status)`
|
||||
- `task_events(task_id, occurred_at)`
|
||||
- `confirmations(status, created_at)`
|
||||
- `worker_sessions(status, last_heartbeat_at)`
|
||||
|
||||
Reference in New Issue
Block a user