feat: expose codex runtime lifecycle events

This commit is contained in:
AI Bot
2026-06-03 12:27:41 +08:00
parent f23ed9f188
commit b31238b6e2
12 changed files with 180 additions and 7 deletions

View File

@@ -1500,6 +1500,53 @@ function normalizeDiscoveryGuardianGovernanceSummary() {
};
}
function normalizeDiscoveryRuntimeEventSummary() {
const events = [
{ label: "进程输出", group: "process" },
{ label: "进程退出", group: "process" },
{ label: "原始响应完成", group: "rawResponse", rawResponse: true },
];
return {
eventCount: events.length,
processEventCount: events.filter((event) => event.group === "process").length,
rawResponseEventAvailable: events.some((event) => event.rawResponse === true),
notificationOnly: true,
labels: events.map((event) => event.label),
};
}
function normalizeDiscoveryExtensionEventSummary() {
const events = [
{ label: "Skill 变更", group: "skill", skillChange: true },
{ label: "插件安装", group: "plugin", pluginInstall: true },
];
return {
eventCount: events.length,
skillChangeEventAvailable: events.some((event) => event.skillChange === true),
pluginInstallEventAvailable: events.some((event) => event.pluginInstall === true),
notificationOnly: true,
labels: events.map((event) => event.label),
};
}
function normalizeDiscoveryThreadLifecycleEventSummary() {
const events = [
{ label: "线程启动", group: "start" },
{ label: "线程关闭", group: "close", close: true },
{ label: "已归档", group: "archive" },
{ label: "已恢复", group: "archive" },
{ label: "改名完成", group: "name", name: true },
];
return {
eventCount: events.length,
archiveEventCount: events.filter((event) => event.group === "archive").length,
nameEventAvailable: events.some((event) => event.name === true),
closeEventAvailable: events.some((event) => event.close === true),
notificationOnly: true,
labels: events.map((event) => event.label),
};
}
function normalizeDiscoveryPlugins(result) {
return asArray(result?.marketplaces)
.flatMap((marketplace) => asArray(marketplace?.plugins))
@@ -1997,6 +2044,9 @@ export async function discoverCodexAppServerCapabilities(runnerConfig) {
mcpGovernanceSummary: normalizeDiscoveryMcpGovernanceSummary(),
userInteractionGovernanceSummary: normalizeDiscoveryUserInteractionGovernanceSummary(),
guardianGovernanceSummary: normalizeDiscoveryGuardianGovernanceSummary(),
runtimeEventSummary: normalizeDiscoveryRuntimeEventSummary(),
extensionEventSummary: normalizeDiscoveryExtensionEventSummary(),
threadLifecycleEventSummary: normalizeDiscoveryThreadLifecycleEventSummary(),
errors: [
modelResult?.__bossError ? `model/list:${safeRuntimeDiagnosticText(modelResult.__bossError)}` : undefined,
providerCapabilities?.__bossError