Some checks failed
CI / build-and-test (push) Failing after -30m49s
* 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
224 lines
4.2 KiB
TypeScript
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;
|
|
};
|