推进 INI 面板 workflow overview embedding DOM contract

This commit is contained in:
2026-06-15 18:20:44 +08:00
parent f70fc09770
commit 3cfd4b371e
12 changed files with 207 additions and 12 deletions

View File

@@ -288,6 +288,9 @@
getWorkflowOverviewEmbeddingRenderState: (displayViewModel) => (
shellViewModel.createWorkflowOverviewEmbeddingRenderState(displayViewModel)
),
getWorkflowOverviewEmbeddingDomContract: (options) => (
shellViewModel.createWorkflowOverviewEmbeddingDomContract(options)
),
isSupportedShellSessionHandoffPackage: shellViewModel.isSupportedShellSessionHandoffPackage,
getLauncherLinks: () => shellViewModel.launcherLinks,
getControlPageApiMethods: () => shellViewModel.controlPage.browserApiMethods,

View File

@@ -162,6 +162,7 @@ export function createIniPanelLaunchApiManifest(entries = getVisibleIniPanelEntr
"getWorkflowOverviewEmbeddingReport",
"getWorkflowOverviewEmbeddingDisplayViewModel",
"getWorkflowOverviewEmbeddingRenderState",
"getWorkflowOverviewEmbeddingDomContract",
"isSupportedShellSessionHandoffPackage",
"getLauncherLinks",
"getControlPageApiMethods",
@@ -1942,6 +1943,32 @@ export function createIniPanelShellWorkflowOverviewEmbeddingRenderState(
};
}
export function createIniPanelShellWorkflowOverviewEmbeddingDomContract({
rowDatasetPrefix = "workflowOverviewEmbedding",
selectors = {},
} = {}) {
const mountSelector = selectors.mount ?? "[data-workflow-overview-embedding]";
const statusSelector = selectors.status ?? "[data-workflow-overview-embedding-status]";
const rowsSelector = selectors.rows ?? "[data-workflow-overview-embedding-rows]";
return {
apiName: "ini-panel-shell-workflow-overview-embedding-dom-contract",
contractVersion: 1,
requiredNodeIds: ["mount", "status", "rows"],
selectors: {
mount: mountSelector,
status: statusSelector,
rows: rowsSelector,
},
mountDatasetKeys: ["handoffPhase", "handoffReady", "handoffScope"],
rowDatasetPrefix,
rowDatasetKeys: {
term: [`${rowDatasetPrefix}Row`, `${rowDatasetPrefix}Status`],
detail: [`${rowDatasetPrefix}Value`, `${rowDatasetPrefix}Status`],
},
renderResultFields: ["rendered", "statusLine", "rowCount", "rowIds", "dataset"],
};
}
export function createIniPanelShellViewModel(entries = getVisibleIniPanelEntries()) {
const shellIntegrationManifest = createIniPanelShellIntegrationManifest(entries);
const shellIntegrationReadiness = createIniPanelShellIntegrationReadiness(shellIntegrationManifest);
@@ -2103,6 +2130,7 @@ export function createIniPanelShellViewModel(entries = getVisibleIniPanelEntries
createWorkflowOverviewEmbeddingReport: createIniPanelShellWorkflowOverviewEmbeddingReport,
createWorkflowOverviewEmbeddingDisplayViewModel: createIniPanelShellWorkflowOverviewEmbeddingDisplayViewModel,
createWorkflowOverviewEmbeddingRenderState: createIniPanelShellWorkflowOverviewEmbeddingRenderState,
createWorkflowOverviewEmbeddingDomContract: createIniPanelShellWorkflowOverviewEmbeddingDomContract,
isSupportedShellSessionHandoffPackage: isSupportedIniPanelShellSessionHandoffPackage,
controlPage: {
browserApiSchema: createControlPageBrowserApiSchema(),

View File

@@ -92,6 +92,7 @@
createIniPanelShellWorkflowOverviewEmbeddingReport,
createIniPanelShellWorkflowOverviewEmbeddingDisplayViewModel,
createIniPanelShellWorkflowOverviewEmbeddingRenderState,
createIniPanelShellWorkflowOverviewEmbeddingDomContract,
mountIniPanelShellWorkflowOverviewEmbedding,
renderIniPanelShellSessionHandoffWorkflowState,
mountIniPanelShellSessionHandoffWorkflow,
@@ -143,6 +144,9 @@
getWorkflowOverviewEmbeddingRenderState: (displayViewModel) => (
createIniPanelShellWorkflowOverviewEmbeddingRenderState(displayViewModel)
),
getWorkflowOverviewEmbeddingDomContract: (options) => (
createIniPanelShellWorkflowOverviewEmbeddingDomContract(options)
),
};
</script>
</body>