暴露 workflow overview 发布 artifact 校验 API

This commit is contained in:
2026-06-16 09:46:29 +08:00
parent 7177a29fc6
commit 23f337834b
15 changed files with 300 additions and 2 deletions

View File

@@ -31,6 +31,10 @@ import {
import {
createMachineSessionPersistenceSummary,
} from "./panel-state-summary.js";
import {
createProjectReleaseReadinessArtifactValidation,
parseProjectReleaseReadinessArtifactJson,
} from "../../sdk/src/project-release-readiness.js";
export {
controlPageStatusText,
createControlPageRefreshState,
@@ -72,6 +76,10 @@ export {
createMachineSessionWorkflowOverview,
createMachineSessionWorkflowStatus,
} from "./panel-state-summary.js";
export {
createProjectReleaseReadinessArtifactValidation,
parseProjectReleaseReadinessArtifactJson,
} from "../../sdk/src/project-release-readiness.js";
export function getVisibleIniPanelEntries() {
return getIniPanelEntryManifest();
@@ -1865,6 +1873,7 @@ export function createIniPanelShellWorkflowOverviewContract() {
"getWorkflowOverviewSessionReadinessReport",
"getWorkflowOverviewApiSurfaceInventory",
"getWorkflowOverviewPersistenceSummary",
"validateWorkflowOverviewReleaseReadinessArtifactJson",
"getWorkflowOverviewDomContract",
"getWorkflowOverviewDomReadiness",
"renderWorkflowOverview",
@@ -1874,6 +1883,46 @@ export function createIniPanelShellWorkflowOverviewContract() {
};
}
export function validateIniPanelShellWorkflowOverviewReleaseReadinessArtifactJson(artifactJson) {
try {
const artifact = parseProjectReleaseReadinessArtifactJson(artifactJson);
const validation = createProjectReleaseReadinessArtifactValidation(artifact);
return {
apiName: "ini-panel-shell-workflow-overview-release-readiness-artifact-validation",
validationVersion: 1,
phase: validation.ready ? "ready" : "blocked",
ready: validation.ready,
missing: [...validation.missing],
error: null,
artifactApiName: validation.artifactApiName,
artifactVersion: validation.artifactVersion,
gateCount: validation.gateCount,
validation,
rows: [...validation.rows],
};
} catch (error) {
return {
apiName: "ini-panel-shell-workflow-overview-release-readiness-artifact-validation",
validationVersion: 1,
phase: "blocked",
ready: false,
missing: ["artifact-json"],
error: error?.message ?? "Unable to parse release readiness artifact JSON",
artifactApiName: null,
artifactVersion: null,
gateCount: 0,
validation: null,
rows: [
{
id: "artifact-json",
label: "Readiness artifact JSON",
value: "blocked",
},
],
};
}
}
export function createIniPanelShellWorkflowOverviewReadiness({
overviewApi = null,
contract = createIniPanelShellWorkflowOverviewContract(),

View File

@@ -105,6 +105,7 @@
createIniPanelShellWorkflowOverviewEmbeddingMountDomReadiness,
renderIniPanelShellWorkflowOverviewEmbeddingMountState,
mountIniPanelShellWorkflowOverviewEmbeddingMountState,
validateIniPanelShellWorkflowOverviewReleaseReadinessArtifactJson,
renderIniPanelShellSessionHandoffWorkflowState,
mountIniPanelShellSessionHandoffWorkflow,
} from "./ui-shell.js";
@@ -133,6 +134,9 @@
getWorkflowOverviewPersistenceSummary: (options) => (
createMachineSessionPersistenceSummary(options)
),
validateWorkflowOverviewReleaseReadinessArtifactJson: (artifactJson) => (
validateIniPanelShellWorkflowOverviewReleaseReadinessArtifactJson(artifactJson)
),
getWorkflowOverviewDomContract: (options) => (
createIniPanelShellSessionHandoffWorkflowDomContract(options)
),