feat: surface codex app server hook governance
This commit is contained in:
@@ -1221,6 +1221,30 @@ function normalizeDiscoverySkillExtraRootsSummary(roots, result) {
|
||||
};
|
||||
}
|
||||
|
||||
function normalizeDiscoveryHookSummary(result) {
|
||||
const entries = asArray(result?.data);
|
||||
const hooks = entries.flatMap((entry) => asArray(entry?.hooks));
|
||||
const eventNames = Array.from(
|
||||
new Set(hooks.map((hook) => safeProgressText(hook?.eventName, 80)).filter(Boolean)),
|
||||
).sort();
|
||||
const handlerTypes = Array.from(
|
||||
new Set(hooks.map((hook) => safeProgressText(hook?.handlerType, 80)).filter(Boolean)),
|
||||
).sort();
|
||||
return {
|
||||
workspaceCount: entries.length,
|
||||
hookCount: hooks.length,
|
||||
enabledHookCount: hooks.filter((hook) => hook?.enabled !== false).length,
|
||||
managedHookCount: hooks.filter((hook) => Boolean(hook?.isManaged)).length,
|
||||
trustedHookCount: hooks.filter((hook) => safeProgressText(hook?.trustStatus, 40) === "trusted").length,
|
||||
modifiedHookCount: hooks.filter((hook) => safeProgressText(hook?.trustStatus, 40) === "modified").length,
|
||||
untrustedHookCount: hooks.filter((hook) => safeProgressText(hook?.trustStatus, 40) === "untrusted").length,
|
||||
warningCount: entries.reduce((sum, entry) => sum + asArray(entry?.warnings).length, 0),
|
||||
errorCount: entries.reduce((sum, entry) => sum + asArray(entry?.errors).length, 0),
|
||||
eventNames: eventNames.slice(0, 12),
|
||||
handlerTypes: handlerTypes.slice(0, 12),
|
||||
};
|
||||
}
|
||||
|
||||
function normalizeDiscoveryPlugins(result) {
|
||||
return asArray(result?.marketplaces)
|
||||
.flatMap((marketplace) => asArray(marketplace?.plugins))
|
||||
@@ -1618,6 +1642,7 @@ export async function discoverCodexAppServerCapabilities(runnerConfig) {
|
||||
modelResult,
|
||||
providerCapabilities,
|
||||
skillsResult,
|
||||
hooksResult,
|
||||
pluginResult,
|
||||
appsResult,
|
||||
experimentalFeaturesResult,
|
||||
@@ -1635,6 +1660,7 @@ export async function discoverCodexAppServerCapabilities(runnerConfig) {
|
||||
safeRequest(request, "model/list", { includeHidden: false, limit }),
|
||||
safeRequest(request, "modelProvider/capabilities/read", {}),
|
||||
safeRequest(request, "skills/list", { cwds: [cwd], forceReload: false }),
|
||||
safeRequest(request, "hooks/list", { cwds: [cwd] }),
|
||||
safeRequest(request, "plugin/list", { cwds: [cwd] }),
|
||||
safeRequest(request, "app/list", { limit }),
|
||||
safeRequest(request, "experimentalFeature/list", { limit }),
|
||||
@@ -1698,6 +1724,7 @@ export async function discoverCodexAppServerCapabilities(runnerConfig) {
|
||||
configRequirements: normalizeDiscoveryConfigRequirements(configRequirementsResult),
|
||||
externalAgentMigration: normalizeDiscoveryExternalAgentMigration(externalAgentConfigResult),
|
||||
skillExtraRootsSummary: normalizeDiscoverySkillExtraRootsSummary(skillExtraRoots, skillExtraRootsResult),
|
||||
hookSummary: normalizeDiscoveryHookSummary(hooksResult),
|
||||
threadSummary,
|
||||
threadTurnSummary: normalizeDiscoveryThreadTurnSummary(threadTurnResults, limit),
|
||||
errors: [
|
||||
@@ -1709,6 +1736,7 @@ export async function discoverCodexAppServerCapabilities(runnerConfig) {
|
||||
skillExtraRootsResult?.__bossError
|
||||
? `skills/extraRoots/set:${safeRuntimeDiagnosticText(skillExtraRootsResult.__bossError)}`
|
||||
: undefined,
|
||||
hooksResult?.__bossError ? `hooks/list:${safeRuntimeDiagnosticText(hooksResult.__bossError)}` : undefined,
|
||||
pluginResult?.__bossError ? `plugin/list:${safeRuntimeDiagnosticText(pluginResult.__bossError)}` : undefined,
|
||||
appsResult?.__bossError ? `app/list:${safeRuntimeDiagnosticText(appsResult.__bossError)}` : undefined,
|
||||
experimentalFeaturesResult?.__bossError
|
||||
|
||||
Reference in New Issue
Block a user