Files
code-graph/src/modules/project-api.ts

632 lines
26 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import { createQueryApi } from '@kevisual/query/api';
import { query } from '@/modules/query.ts';
const api = {
"project": {
/**
* 注册并启动项目监控:开始监听项目目录的文件变更,并将所有文件全量同步到 Meilisearch 搜索索引
*
* @param data - Request parameters
* @param data.filepath - {string} 项目根目录的绝对路径,必填
* @param data.repo - {string} 代码仓库标识,用于搜索结果展示和过滤,格式如 owner/repo例如 kevisual/cnb选填默认自动从 git 配置读取)
* @param data.name - {string} 项目显示名称,用于搜索结果展示,选填(默认使用目录名)
* @param data.type - {string} 项目类型,filepath或cnb-repo,默认为filepath
*/
"add": {
"path": "project",
"key": "add",
"description": "注册并启动项目监控:开始监听项目目录的文件变更,并将所有文件全量同步到 Meilisearch 搜索索引",
"metadata": {
"args": {
"filepath": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "string",
"description": "项目根目录的绝对路径,必填"
},
"repo": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"description": "代码仓库标识,用于搜索结果展示和过滤,格式如 owner/repo例如 kevisual/cnb选填默认自动从 git 配置读取)",
"type": "string",
"optional": true
},
"name": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"description": "项目显示名称,用于搜索结果展示,选填(默认使用目录名)",
"type": "string",
"optional": true
},
"type": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"description": "项目类型,filepath或cnb-repo,默认为filepath",
"type": "string",
"optional": true
}
},
"url": "/root/v1/cnb-dev",
"source": "query-proxy-api"
}
},
/**
* 移除项目:停止文件变更监听,并清除该项目在 Meilisearch 索引中的所有数据
*
* @param data - Request parameters
* @param data.filepath - {string (minLength: 1)} 要移除的项目根目录绝对路径,必填
*/
"remove": {
"path": "project",
"key": "remove",
"description": "移除项目:停止文件变更监听,并清除该项目在 Meilisearch 索引中的所有数据",
"metadata": {
"args": {
"filepath": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "string",
"minLength": 1,
"description": "要移除的项目根目录绝对路径,必填"
}
},
"url": "/root/v1/cnb-dev",
"source": "query-proxy-api"
}
},
/**
* 暂停项目的文件变更监听,暂停后文件修改将不再实时同步;可通过 add 接口重新启动监听
*
* @param data - Request parameters
* @param data.filepath - {string (minLength: 1)} 要暂停监听的项目根目录绝对路径,必填
*/
"stop": {
"path": "project",
"key": "stop",
"description": "暂停项目的文件变更监听,暂停后文件修改将不再实时同步;可通过 add 接口重新启动监听",
"metadata": {
"args": {
"filepath": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "string",
"minLength": 1,
"description": "要暂停监听的项目根目录绝对路径,必填"
}
},
"url": "/root/v1/cnb-dev",
"source": "query-proxy-api"
}
},
/**
* 获取指定项目的详细信息,包括路径、仓库名称、项目名称及当前监听状态等
*
* @param data - Request parameters
* @param data.filepath - {string (minLength: 1)} 要查询的项目根目录绝对路径,必填
*/
"get": {
"path": "project",
"key": "get",
"description": "获取指定项目的详细信息,包括路径、仓库名称、项目名称及当前监听状态等",
"metadata": {
"args": {
"filepath": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "string",
"minLength": 1,
"description": "要查询的项目根目录绝对路径,必填"
}
},
"url": "/root/v1/cnb-dev",
"source": "query-proxy-api"
}
},
/**
* 列出所有已注册的项目及其当前运行状态(路径、仓库名称、监听是否活跃等)
*/
"list": {
"path": "project",
"key": "list",
"description": "列出所有已注册的项目及其当前运行状态(路径、仓库名称、监听是否活跃等)",
"metadata": {
"url": "/root/v1/cnb-dev",
"source": "query-proxy-api"
}
},
/**
* 更新项目的自定义描述信息name / title / tags / summary / description / link用于丰富项目元数据以便更好地展示和检索
*
* @param data - Request parameters
* @param data.filepath - {string (minLength: 1)} 要更新的项目根目录绝对路径,必填
* @param data.name - {string} 项目显示名称,选填
* @param data.title - {string} 项目标题,用于展示,选填
* @param data.tags - {array} 项目标签列表,用于分类过滤,选填
* @param data.summary - {string} 项目摘要,简短描述项目用途,选填
* @param data.description - {string} 项目详细描述,选填
* @param data.link - {string} 项目关联的外部链接(如官网、文档等),选填
*/
"update": {
"path": "project",
"key": "update",
"description": "更新项目的自定义描述信息name / title / tags / summary / description / link用于丰富项目元数据以便更好地展示和检索",
"metadata": {
"args": {
"filepath": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "string",
"minLength": 1,
"description": "要更新的项目根目录绝对路径,必填"
},
"name": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"description": "项目显示名称,选填",
"type": "string",
"optional": true
},
"title": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"description": "项目标题,用于展示,选填",
"type": "string",
"optional": true
},
"tags": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"description": "项目标签列表,用于分类过滤,选填",
"type": "array",
"items": {
"type": "string"
},
"optional": true
},
"summary": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"description": "项目摘要,简短描述项目用途,选填",
"type": "string",
"optional": true
},
"description": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"description": "项目详细描述,选填",
"type": "string",
"optional": true
},
"link": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"description": "项目关联的外部链接(如官网、文档等),选填",
"type": "string",
"optional": true
}
},
"url": "/root/v1/cnb-dev",
"source": "query-proxy-api"
}
},
/**
* 初始化项目,通过root目录搜索当前有git的项目列表并将其注册到系统中
*
* @param data - Request parameters
* @param data.rootPath - {string} 搜索项目的根目录绝对路径,默认为 /workspace/projects
*/
"init": {
"path": "project",
"key": "init",
"description": "初始化项目,通过root目录搜索当前有git的项目列表并将其注册到系统中",
"metadata": {
"args": {
"rootPath": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"description": "搜索项目的根目录绝对路径,默认为 /workspace/projects",
"type": "string",
"optional": true
}
},
"url": "/root/v1/cnb-dev",
"source": "query-proxy-api"
}
},
/**
* 列出当前工作区已注册的项目
*
* @param data - Request parameters
* @param data.rootPath - {string} 项目根目录绝对路径,默认为 /workspace/projects指定后只列出该目录下的项目
*/
"list-projects": {
"path": "project",
"key": "list-projects",
"description": "列出当前工作区已注册的项目",
"metadata": {
"args": {
"rootPath": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"description": "项目根目录绝对路径,默认为 /workspace/projects指定后只列出该目录下的项目",
"type": "string",
"optional": true
}
},
"url": "/root/v1/cnb-dev",
"source": "query-proxy-api"
}
},
/**
* clone 一个项目到projects目录下并注册到系统中。
*
* @param data - Request parameters
* @param data.filepath - {string} 新项目根目录的绝对路径,默认在 /workspace/projects 下以仓库名创建子目录
* @param data.repo - {string} 代码仓库标识,用于搜索结果展示和过滤,格式如 owner/repo例如 kevisual/cnb必填
*/
"clone-cnb": {
"path": "project",
"key": "clone-cnb",
"description": "clone 一个项目到projects目录下并注册到系统中。",
"metadata": {
"args": {
"filepath": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"description": "新项目根目录的绝对路径,默认在 /workspace/projects 下以仓库名创建子目录",
"type": "string",
"optional": true
},
"repo": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "string",
"description": "代码仓库标识,用于搜索结果展示和过滤,格式如 owner/repo例如 kevisual/cnb必填"
}
},
"url": "/root/v1/cnb-dev",
"source": "query-proxy-api"
}
}
},
"project-search": {
/**
* 在已索引的项目文件中执行全文搜索,支持按仓库、目录、标签等字段过滤,以及自定义排序和数量限制
*
* @param data - Request parameters
* @param data.q - {string} 搜索关键词,选填;留空或不传则返回全部文件
* @param data.filepath - {string} 按文件绝对路径过滤,选填
* @param data.repo - {string} 按代码仓库标识过滤(如 owner/repo选填
* @param data.title - {string} 按人工标注的标题字段过滤,选填
* @param data.tags - {array} 按人工标注的标签列表过滤,选填
* @param data.summary - {string} 按人工标注的摘要字段过滤,选填
* @param data.description - {string} 按人工标注的描述字段过滤,选填
* @param data.link - {string} 按人工标注的外部链接字段过滤,选填
* @param data.sort - {array} 排序规则数组,格式为 ["字段:asc"] 或 ["字段:desc"],选填,当 q 为空时默认为 ["projectPath:asc"]
* @param data.limit - {number} 返回结果数量上限,选填,当 q 为空时默认为 1000
* @param data.getContent - {boolean} 是否返回文件内容,默认为 false如果为 true则在结果中包含 content 字段,内容以 base64 编码返回,适用于前端预览或下载场景
* @param data.projects - {array} 按项目名称列表过滤,选填,默认不穿,只过滤当前工作区的项目
*/
"files": {
"path": "project-search",
"key": "files",
"description": "在已索引的项目文件中执行全文搜索,支持按仓库、目录、标签等字段过滤,以及自定义排序和数量限制",
"metadata": {
"args": {
"q": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"description": "搜索关键词,选填;留空或不传则返回全部文件",
"type": "string",
"optional": true
},
"filepath": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"description": "按文件绝对路径过滤,选填",
"type": "string",
"optional": true
},
"repo": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"description": "按代码仓库标识过滤(如 owner/repo选填",
"type": "string",
"optional": true
},
"title": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"description": "按人工标注的标题字段过滤,选填",
"type": "string",
"optional": true
},
"tags": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"description": "按人工标注的标签列表过滤,选填",
"type": "array",
"items": {
"type": "string"
},
"optional": true
},
"summary": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"description": "按人工标注的摘要字段过滤,选填",
"type": "string",
"optional": true
},
"description": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"description": "按人工标注的描述字段过滤,选填",
"type": "string",
"optional": true
},
"link": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"description": "按人工标注的外部链接字段过滤,选填",
"type": "string",
"optional": true
},
"sort": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"description": "排序规则数组,格式为 [\"字段:asc\"] 或 [\"字段:desc\"],选填,当 q 为空时默认为 [\"projectPath:asc\"]",
"type": "array",
"items": {
"type": "string"
},
"optional": true
},
"limit": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"description": "返回结果数量上限,选填,当 q 为空时默认为 1000",
"type": "number",
"optional": true
},
"getContent": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"description": "是否返回文件内容,默认为 false如果为 true则在结果中包含 content 字段,内容以 base64 编码返回,适用于前端预览或下载场景",
"type": "boolean",
"optional": true
},
"projects": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"description": "按项目名称列表过滤,选填,默认不穿,只过滤当前工作区的项目",
"type": "array",
"items": {
"type": "string"
},
"optional": true
}
},
"url": "/root/v1/cnb-dev",
"source": "query-proxy-api"
}
},
/**
* 在已索引的项目文件中执行全文搜索,支持按仓库、目录、标签等字段过滤,以及自定义排序和数量限制
*
* @param data - Request parameters
* @param data.q - {string} 搜索关键词,选填;留空或不传则返回全部文件
* @param data.projectPath - {string} 按项目根目录路径过滤,仅返回该项目下的文件,必填
* @param data.filepath - {string} 按文件绝对路径过滤,选填
* @param data.repo - {string} 按代码仓库标识过滤(如 owner/repo选填
* @param data.title - {string} 按人工标注的标题字段过滤,选填
* @param data.tags - {array} 按人工标注的标签列表过滤,选填
* @param data.summary - {string} 按人工标注的摘要字段过滤,选填
* @param data.description - {string} 按人工标注的描述字段过滤,选填
* @param data.link - {string} 按人工标注的外部链接字段过滤,选填
* @param data.sort - {array} 排序规则数组,格式为 ["字段:asc"] 或 ["字段:desc"],选填,当 q 为空时默认为 ["projectPath:asc"]
* @param data.limit - {number} 返回结果数量上限,选填,当 q 为空时默认为 1000
* @param data.getContent - {boolean} 是否返回文件内容,默认为 false如果为 true则在结果中包含 content 字段,内容以 base64 编码返回,适用于前端预览或下载场景
*/
"search": {
"path": "project-search",
"key": "search",
"description": "在已索引的项目文件中执行全文搜索,支持按仓库、目录、标签等字段过滤,以及自定义排序和数量限制",
"metadata": {
"args": {
"q": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"description": "搜索关键词,选填;留空或不传则返回全部文件",
"type": "string",
"optional": true
},
"projectPath": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "string",
"description": "按项目根目录路径过滤,仅返回该项目下的文件,必填"
},
"filepath": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"description": "按文件绝对路径过滤,选填",
"type": "string",
"optional": true
},
"repo": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"description": "按代码仓库标识过滤(如 owner/repo选填",
"type": "string",
"optional": true
},
"title": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"description": "按人工标注的标题字段过滤,选填",
"type": "string",
"optional": true
},
"tags": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"description": "按人工标注的标签列表过滤,选填",
"type": "array",
"items": {
"type": "string"
},
"optional": true
},
"summary": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"description": "按人工标注的摘要字段过滤,选填",
"type": "string",
"optional": true
},
"description": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"description": "按人工标注的描述字段过滤,选填",
"type": "string",
"optional": true
},
"link": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"description": "按人工标注的外部链接字段过滤,选填",
"type": "string",
"optional": true
},
"sort": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"description": "排序规则数组,格式为 [\"字段:asc\"] 或 [\"字段:desc\"],选填,当 q 为空时默认为 [\"projectPath:asc\"]",
"type": "array",
"items": {
"type": "string"
},
"optional": true
},
"limit": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"description": "返回结果数量上限,选填,当 q 为空时默认为 1000",
"type": "number",
"optional": true
},
"getContent": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"description": "是否返回文件内容,默认为 false如果为 true则在结果中包含 content 字段,内容以 base64 编码返回,适用于前端预览或下载场景",
"type": "boolean",
"optional": true
}
},
"url": "/root/v1/cnb-dev",
"source": "query-proxy-api"
}
}
},
"project-file": {
/**
* 读取指定路径的项目文件内容,以 base64 格式返回,适用于前端预览或下载场景
*
* @param data - Request parameters
* @param data.filepath - {string (minLength: 1)} 要读取的文件绝对路径,必填
*/
"get": {
"path": "project-file",
"key": "get",
"description": "读取指定路径的项目文件内容,以 base64 格式返回,适用于前端预览或下载场景",
"metadata": {
"args": {
"filepath": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "string",
"minLength": 1,
"description": "要读取的文件绝对路径,必填"
}
},
"url": "/root/v1/cnb-dev",
"source": "query-proxy-api"
}
},
/**
* 将 base64 编码的内容写入指定文件路径,用于更新或创建文件
*
* @param data - Request parameters
* @param data.filepath - {string (minLength: 1)} 要写入的文件绝对路径,必填
* @param data.content - {string (minLength: 1)} 文件内容的 base64 编码,必填
*/
"update-content": {
"path": "project-file",
"key": "update-content",
"description": "将 base64 编码的内容写入指定文件路径,用于更新或创建文件",
"metadata": {
"args": {
"filepath": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "string",
"minLength": 1,
"description": "要写入的文件绝对路径,必填"
},
"content": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "string",
"minLength": 1,
"description": "文件内容的 base64 编码,必填"
}
},
"url": "/root/v1/cnb-dev",
"source": "query-proxy-api"
}
},
/**
* 更新指定文件的自定义描述信息title / tags / summary / description / link用于人工标注和补充文件元数据
*
* @param data - Request parameters
* @param data.filepath - {string (minLength: 1)} 要更新的文件绝对路径,必填
* @param data.title - {string} 文件标题,用于展示和搜索,选填
* @param data.tags - {array} 文件标签列表,用于分类过滤,选填
* @param data.summary - {string} 文件摘要,简短描述文件内容,选填
* @param data.description - {string} 文件详细描述,选填
* @param data.link - {string} 与文件关联的外部链接如文档、Issue 等),选填
*/
"update": {
"path": "project-file",
"key": "update",
"description": "更新指定文件的自定义描述信息title / tags / summary / description / link用于人工标注和补充文件元数据",
"metadata": {
"args": {
"filepath": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "string",
"minLength": 1,
"description": "要更新的文件绝对路径,必填"
},
"title": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"description": "文件标题,用于展示和搜索,选填",
"type": "string",
"optional": true
},
"tags": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"description": "文件标签列表,用于分类过滤,选填",
"type": "array",
"items": {
"type": "string"
},
"optional": true
},
"summary": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"description": "文件摘要,简短描述文件内容,选填",
"type": "string",
"optional": true
},
"description": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"description": "文件详细描述,选填",
"type": "string",
"optional": true
},
"link": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"description": "与文件关联的外部链接如文档、Issue 等),选填",
"type": "string",
"optional": true
}
},
"url": "/root/v1/cnb-dev",
"source": "query-proxy-api"
}
},
/**
* 从搜索索引中删除指定路径的文件记录,文件本身不受影响
*
* @param data - Request parameters
* @param data.filepath - {string (minLength: 1)} 要删除的文件绝对路径,必填
*/
"delete": {
"path": "project-file",
"key": "delete",
"description": "从搜索索引中删除指定路径的文件记录,文件本身不受影响",
"metadata": {
"args": {
"filepath": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "string",
"minLength": 1,
"description": "要删除的文件绝对路径,必填"
}
},
"url": "/root/v1/cnb-dev",
"source": "query-proxy-api"
}
}
}
} as const;
const queryApi = createQueryApi({ api, query });
export { queryApi };