feat: add managed llm summaries and memory timeline
ci / verify (push) Canceled after 0s

This commit is contained in:
Codex Local
2026-08-30 10:51:32 +08:00
parent 47f8a164fa
commit 962dd1a063
22 changed files with 1417 additions and 86 deletions
+306
View File
@@ -37,6 +37,70 @@ export interface paths {
patch?: never;
trace?: never;
};
"/api/v1/content-models": {
parameters: {
query?: never;
header?: never;
path?: never;
cookie?: never;
};
get: operations["listContentModels"];
put?: never;
post: operations["createContentModel"];
delete?: never;
options?: never;
head?: never;
patch?: never;
trace?: never;
};
"/api/v1/content-models/{id}/test": {
parameters: {
query?: never;
header?: never;
path?: never;
cookie?: never;
};
get?: never;
put?: never;
post: operations["testContentModel"];
delete?: never;
options?: never;
head?: never;
patch?: never;
trace?: never;
};
"/api/v1/content-models/{id}/activate": {
parameters: {
query?: never;
header?: never;
path?: never;
cookie?: never;
};
get?: never;
put?: never;
post: operations["activateContentModel"];
delete?: never;
options?: never;
head?: never;
patch?: never;
trace?: never;
};
"/api/v1/content-models/{id}": {
parameters: {
query?: never;
header?: never;
path?: never;
cookie?: never;
};
get?: never;
put?: never;
post?: never;
delete: operations["revokeContentModel"];
options?: never;
head?: never;
patch?: never;
trace?: never;
};
"/api/v1/ops/config-versions": {
parameters: {
query?: never;
@@ -1892,6 +1956,24 @@ export interface paths {
patch?: never;
trace?: never;
};
"/api/v1/conversations/{id}/summaries:regenerate": {
parameters: {
query?: never;
header?: never;
path: {
id: components["parameters"]["ResourceID"];
};
cookie?: never;
};
get?: never;
put?: never;
post: operations["regenerateConversationSummary"];
delete?: never;
options?: never;
head?: never;
patch?: never;
trace?: never;
};
"/api/v1/subjects/{id}/stories": {
parameters: {
query?: never;
@@ -5259,6 +5341,48 @@ export interface components {
/** Format: date-time */
created_at: string;
};
ContentModel: {
/** Format: uuid */
id: string;
/** Format: uuid */
tenant_id: string;
display_name: string;
/** @enum {string} */
provider: "ark" | "openai_compatible";
/** Format: uri */
base_url: string;
model_id: string;
/** @description 仅包含掩码和密钥末四位。 */
credential_hint: string;
temperature: number;
max_tokens: number;
/** @enum {string} */
status: "inactive" | "active" | "revoked";
/** @enum {string} */
test_status: "untested" | "passed" | "failed";
/** Format: date-time */
last_tested_at?: string;
last_error_code?: string;
/** Format: date-time */
activated_at?: string;
/** Format: int64 */
version: number;
/** Format: date-time */
created_at: string;
/** Format: date-time */
updated_at: string;
};
CreateContentModelRequest: {
display_name: string;
/** @enum {string} */
provider: "ark" | "openai_compatible";
/** Format: uri */
base_url: string;
model_id: string;
api_key: string;
temperature: number;
max_tokens: number;
};
/** @enum {string} */
StoryStatus: "CANDIDATE" | "IN_REVIEW" | "CONFIRMED" | "REJECTED" | "SUPERSEDED";
StorySource: {
@@ -6104,6 +6228,25 @@ export interface components {
items: components["schemas"]["ConversationContentSummary"][];
};
};
ConversationSummaryRegenerationResponse: {
request_id: string;
data: {
/** Format: int64 */
generation_version: number;
/** @enum {string} */
status: "queued";
};
};
ContentModelResponse: {
request_id: string;
data: components["schemas"]["ContentModel"];
};
ContentModelListResponse: {
request_id: string;
data: {
items: components["schemas"]["ContentModel"][];
};
};
StoryResponse: {
request_id: string;
data: components["schemas"]["Story"];
@@ -6366,6 +6509,145 @@ export interface operations {
403: components["responses"]["AccessDeniedError"];
};
};
listContentModels: {
parameters: {
query?: never;
header: {
/** @description 待创建资源所属的公开客户组织编号,不能是数据库内部主键。 */
"X-Tenant-Id": components["parameters"]["RequiredTenantSelectionHeader"];
};
path?: never;
cookie?: never;
};
requestBody?: never;
responses: {
/** @description 当前账号空间可用的总结模型;不返回密钥明文 */
200: {
headers: {
[name: string]: unknown;
};
content: {
"application/json": components["schemas"]["ContentModelListResponse"];
};
};
403: components["responses"]["AccessDeniedError"];
};
};
createContentModel: {
parameters: {
query?: never;
header: {
/** @description 待创建资源所属的公开客户组织编号,不能是数据库内部主键。 */
"X-Tenant-Id": components["parameters"]["RequiredTenantSelectionHeader"];
};
path?: never;
cookie?: never;
};
requestBody: {
content: {
"application/json": components["schemas"]["CreateContentModelRequest"];
};
};
responses: {
/** @description 模型配置和加密凭据已保存 */
201: {
headers: {
ETag: components["headers"]["StrongETag"];
[name: string]: unknown;
};
content: {
"application/json": components["schemas"]["ContentModelResponse"];
};
};
400: components["responses"]["ValidationError"];
403: components["responses"]["AccessDeniedError"];
};
};
testContentModel: {
parameters: {
query?: never;
header: {
/** @description 待创建资源所属的公开客户组织编号,不能是数据库内部主键。 */
"X-Tenant-Id": components["parameters"]["RequiredTenantSelectionHeader"];
};
path: {
id: components["parameters"]["ResourceID"];
};
cookie?: never;
};
requestBody?: never;
responses: {
/** @description 使用无家庭数据的固定文本完成连通性测试 */
200: {
headers: {
ETag: components["headers"]["StrongETag"];
[name: string]: unknown;
};
content: {
"application/json": components["schemas"]["ContentModelResponse"];
};
};
403: components["responses"]["AccessDeniedError"];
};
};
activateContentModel: {
parameters: {
query?: never;
header: {
/** @description 待创建资源所属的公开客户组织编号,不能是数据库内部主键。 */
"X-Tenant-Id": components["parameters"]["RequiredTenantSelectionHeader"];
/** @description 最近一次读取返回的强ETag,不接受通配符或弱ETag。 */
"If-Match": components["parameters"]["IfMatchHeader"];
};
path: {
id: components["parameters"]["ResourceID"];
};
cookie?: never;
};
requestBody?: never;
responses: {
/** @description 已通过测试的模型成为该账号空间唯一活动总结模型 */
200: {
headers: {
ETag: components["headers"]["StrongETag"];
[name: string]: unknown;
};
content: {
"application/json": components["schemas"]["ContentModelResponse"];
};
};
409: components["responses"]["ConflictError"];
412: components["responses"]["VersionConflictError"];
};
};
revokeContentModel: {
parameters: {
query?: never;
header: {
/** @description 待创建资源所属的公开客户组织编号,不能是数据库内部主键。 */
"X-Tenant-Id": components["parameters"]["RequiredTenantSelectionHeader"];
/** @description 最近一次读取返回的强ETag,不接受通配符或弱ETag。 */
"If-Match": components["parameters"]["IfMatchHeader"];
};
path: {
id: components["parameters"]["ResourceID"];
};
cookie?: never;
};
requestBody?: never;
responses: {
/** @description 未激活配置已撤销且密钥材料已清除 */
200: {
headers: {
[name: string]: unknown;
};
content: {
"application/json": components["schemas"]["ContentModelResponse"];
};
};
409: components["responses"]["ConflictError"];
};
};
listOpsConfigVersions: {
parameters: {
query?: {
@@ -10534,6 +10816,30 @@ export interface operations {
403: components["responses"]["AccessDeniedError"];
};
};
regenerateConversationSummary: {
parameters: {
query?: never;
header?: never;
path: {
id: components["parameters"]["ResourceID"];
};
cookie?: never;
};
requestBody?: never;
responses: {
/** @description 已按当前激活模型排队生成新的版本化摘要 */
202: {
headers: {
[name: string]: unknown;
};
content: {
"application/json": components["schemas"]["ConversationSummaryRegenerationResponse"];
};
};
403: components["responses"]["AccessDeniedError"];
409: components["responses"]["ConflictError"];
};
};
listSubjectStories: {
parameters: {
query?: {