Add architecture package and application skeleton

This commit is contained in:
2026-07-03 21:09:47 +03:00
parent 7d6cc1c83e
commit ce2b263e52
47 changed files with 2377 additions and 53 deletions
+158
View File
@@ -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)`