Files
makelore/shared/data-service.ts

125 lines
2.8 KiB
TypeScript

export type DataServiceUsage = {
document_count: number;
total_bytes: number;
};
export type DataServiceCollection = {
name: string;
document_count: number;
total_bytes: number;
created_at: string;
};
export type DataServiceLimits = {
max_collections: number;
max_documents: number;
max_total_bytes: number;
max_document_bytes: number;
list_default_limit: number;
list_max_limit: number;
list_max_data_bytes: number;
mutations_per_minute: number;
};
export type DataServiceInstanceState = {
instance_id: string;
project_id: string;
collections: DataServiceCollection[];
usage: DataServiceUsage;
limits: DataServiceLimits;
created_at: string;
updated_at: string;
};
export type DataServiceInstanceList = {
items: DataServiceInstanceState[];
total: number;
instance_limit: number;
};
export type DataServiceCollectionRemoval = {
removed: boolean;
usage: DataServiceUsage;
};
export type DataServiceInstanceRemoval = {
removed: boolean;
};
export type DataServiceDocument = {
id: string;
data: Record<string, unknown>;
revision: number;
created_at: string;
updated_at: string;
};
export type DataServiceDocumentList = {
items: DataServiceDocument[];
next_cursor: string | null;
limit: number;
};
export type DataServiceErrorContext = Record<string, string | number>;
export const DATA_SERVICE_PI_TOOL_NAMES = [
'data_service_configure',
'data_service_inspect',
'data_service_list_projects',
'data_service_get_document',
'data_service_list_documents',
'data_service_put_document',
'data_service_delete_document',
'data_service_remove_collection',
'data_service_reset',
'data_service_remove_project',
] as const;
export type DataServicePiToolName = (typeof DATA_SERVICE_PI_TOOL_NAMES)[number];
export type DataServiceHostResult<T> = {
success: boolean;
status: number;
code: string | null;
error: string | null;
retryable: boolean;
retry_after_seconds?: number;
context?: DataServiceErrorContext;
data: T | null;
};
export type DataServiceToolData =
| DataServiceInstanceState
| DataServiceInstanceList
| DataServiceDocument
| DataServiceDocumentList
| DataServiceCollectionRemoval
| DataServiceInstanceRemoval;
export type DataServiceToolDetailsV1 = DataServiceHostResult<DataServiceToolData> & {
schema: 'data-service.v1';
operation: DataServicePiToolName;
};
export type DataServicePutDocumentInput = {
collection: string;
document_id: string;
data: Record<string, unknown>;
if_revision?: number;
};
export type DataServiceDocumentTargetInput = {
collection: string;
document_id: string;
if_revision?: number;
};
export type DataServiceCollectionTargetInput = {
collection: string;
confirmed: true;
};
export type DataServiceConfirmationInput = {
confirmed: true;
};