Files
amcs/ui/src/types.ts
Hein 537e65ea6d
Some checks failed
CI / build-and-test (push) Failing after -30m49s
feat(ui): implement public status endpoint and update UI components
* add public status handler and response types
* modify status API to restrict access and update client tracking
* adjust UI components to display public status information
* update routing to include public status endpoint
2026-04-27 00:23:06 +02:00

224 lines
4.2 KiB
TypeScript

export type AccessEntry = {
key_id: string;
last_accessed_at: string;
last_path: string;
remote_addr: string;
user_agent: string;
request_count: number;
};
export type RequestAggregate = {
key: string;
request_count: number;
};
export type AccessMetrics = {
total_requests: number;
unique_principals: number;
unique_ips: number;
unique_agents: number;
unique_tools: number;
top_ips: RequestAggregate[];
top_agents: RequestAggregate[];
top_tools: RequestAggregate[];
};
export type StatusResponse = {
title: string;
description: string;
version: string;
build_date: string;
commit: string;
connected_count: number;
total_known: number;
connected_window: string;
oauth_enabled: boolean;
entries: AccessEntry[];
metrics: AccessMetrics;
};
export type PublicStatusClient = {
key_id: string;
request_count: number;
last_accessed_at: string;
};
export type PublicStatusResponse = {
connected_count: number;
connected_window: string;
entries: PublicStatusClient[];
};
export type NavItem = {
id: string;
label: string;
description: string;
disabled?: boolean;
};
export type ShellPage = 'dashboard' | 'projects' | 'thoughts' | 'learnings' | 'skills' | 'guardrails' | 'files' | 'maintenance';
export type Project = {
id: string;
name: string;
description: string;
created_at: string;
last_active_at: string;
};
export type ProjectSummary = Project & {
thought_count: number;
};
export type ThoughtMetadata = {
people: string[];
action_items: string[];
dates_mentioned: string[];
topics: string[];
type: string;
source: string;
metadata_status: string;
metadata_error?: string;
attachments?: ThoughtAttachment[];
};
export type ThoughtAttachment = {
file_id: string;
name: string;
media_type: string;
kind?: string;
size_bytes: number;
sha256?: string;
};
export type Thought = {
id: string;
guid?: string;
content: string;
metadata: ThoughtMetadata;
project_id?: string;
archived_at?: string;
created_at: string;
updated_at: string;
};
export type ThoughtLink = {
id: number;
from_id: number;
to_id: number;
relation: string;
created_at: string;
};
export type SearchResult = {
id: string;
content: string;
metadata: ThoughtMetadata;
similarity: number;
created_at: string;
};
export type AgentSkill = {
id: string;
name: string;
description: string;
content: string;
tags: string[];
created_at: string;
updated_at: string;
};
export type AgentGuardrail = {
id: string;
name: string;
description: string;
content: string;
severity: 'low' | 'medium' | 'high' | 'critical';
tags: string[];
created_at: string;
updated_at: string;
};
export type StoredFile = {
id: string;
thought_id?: string;
project_id?: string;
name: string;
media_type: string;
kind: string;
size_bytes: number;
sha256: string;
created_at: string;
updated_at: string;
};
export type ThoughtStats = {
total_count: number;
type_counts: Record<string, number>;
top_topics: { key: string; count: number }[];
top_people: { key: string; count: number }[];
};
export type Learning = {
id: string;
summary: string;
details: string;
category: string;
area: string;
status: string;
priority: string;
confidence: string;
action_required: boolean;
source_type?: string;
source_ref?: string;
tags?: string;
project_id?: string;
related_thought_id?: string;
related_skill_id?: string;
reviewed_at?: string;
reviewed_by?: string;
created_at: string;
updated_at: string;
};
export type MaintenanceTask = {
id: string;
name: string;
category?: string;
priority: string;
frequency_days?: number;
next_due?: string;
last_completed?: string;
notes?: string;
created_at: string;
updated_at: string;
};
export type MaintenanceLog = {
id: string;
task_id: string;
completed_at: string;
performed_by?: string;
cost?: number;
notes?: string;
next_action?: string;
};
export type BackfillResult = {
model: string;
scanned: number;
embedded: number;
skipped: number;
failed: number;
dry_run: boolean;
};
export type MetadataRetryResult = {
scanned: number;
retried: number;
updated: number;
skipped: number;
failed: number;
dry_run: boolean;
};