Files
Agent-System/web/src/api/projectDocuments.ts
T

55 lines
1.4 KiB
TypeScript

/** 项目工作流受控文档 API */
import { getBearerAuthHeaders } from './authHeaders';
export type WorkflowDocumentSummary = {
doc_id: string;
project_id: number;
task_key: string;
title: string;
lifecycle_state: string;
is_template_only: boolean;
content_sha256?: string;
work_dir?: string;
version?: number;
updated_at?: string;
lease_holder_type?: 'squad' | 'human' | '';
lease_holder_id?: string;
lease_expires_at?: string;
lease_heartbeat_at?: string;
};
export type ControlledDocumentContent = {
doc_id: string;
version: number;
content_sha256: string;
markdown: string;
is_template_only: boolean;
};
export async function listProjectWorkflowDocuments(
projectId: number,
): Promise<WorkflowDocumentSummary[]> {
const resp = await fetch(
`/api/v1/projects/${projectId}/documents?category=workflow`,
{ headers: getBearerAuthHeaders() },
);
if (!resp.ok) {
throw new Error(`list project workflow documents failed: ${resp.status}`);
}
const data = await resp.json();
return Array.isArray(data) ? data : [];
}
export async function fetchControlledDocumentContent(
docId: string,
): Promise<ControlledDocumentContent> {
const resp = await fetch(`/api/v1/docgov/documents/${encodeURIComponent(docId)}/content`, {
headers: getBearerAuthHeaders(),
});
if (!resp.ok) {
throw new Error(`fetch controlled document content failed: ${resp.status}`);
}
return resp.json();
}