暴露 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

@@ -82,6 +82,7 @@ import {
saveTextFile,
sessionSnapshotPath,
toolTablePath,
validateIniPanelShellWorkflowOverviewReleaseReadinessArtifactJson,
validateSessionSnapshot,
} from "./src/index.js";
```
@@ -263,6 +264,9 @@ for external browser shells:
read-only `persistence-summary` row.
- `createIniPanelShellWorkflowOverviewContract()` for discovering the workflow
overview iframe API contract.
- `validateIniPanelShellWorkflowOverviewReleaseReadinessArtifactJson()` for the
read-only workflow overview artifact validation wrapper exposed by
`workflow-overview.html`.
- `createIniPanelShellApiSurfaceInventory()` for a machine-readable inventory
of launch, control-page, workflow overview, persistence, and session
readiness report API counts, including persistence summary row counts.

View File

@@ -113,4 +113,5 @@ export {
renderIniPanelShellSessionHandoffMountState,
renderIniPanelShellWorkflowOverviewEmbeddingMountState,
renderIniPanelShellWorkflowOverviewEmbeddingState,
validateIniPanelShellWorkflowOverviewReleaseReadinessArtifactJson,
} from "../../ui/ini-panel/ui-shell.js";

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)
),