推进 INI 面板 workflow overview embedding mount DOM renderer

This commit is contained in:
2026-06-15 22:05:05 +08:00
parent 543609cbe7
commit 7a5aa23dbc
13 changed files with 236 additions and 8 deletions

View File

@@ -114,6 +114,7 @@
!launchApi?.getWorkflowOverviewEmbeddingMountRenderState ||
!launchApi?.getWorkflowOverviewEmbeddingMountDomContract ||
!launchApi?.getWorkflowOverviewEmbeddingMountDomReadiness ||
!launchApi?.renderWorkflowOverviewEmbeddingMountState ||
!launchApi?.isSupportedShellSessionHandoffPackage ||
!launchApi?.getLauncherLinks ||
!launchApi?.getControlPageApiMethods
@@ -649,7 +650,8 @@
!workflowOverviewApi?.getWorkflowOverviewEmbeddingMountDisplayViewModel ||
!workflowOverviewApi?.getWorkflowOverviewEmbeddingMountRenderState ||
!workflowOverviewApi?.getWorkflowOverviewEmbeddingMountDomContract ||
!workflowOverviewApi?.getWorkflowOverviewEmbeddingMountDomReadiness
!workflowOverviewApi?.getWorkflowOverviewEmbeddingMountDomReadiness ||
!workflowOverviewApi?.renderWorkflowOverviewEmbeddingMountState
) {
throw new Error("workflow overview API namespace did not expose shell helpers");
}

View File

@@ -120,6 +120,7 @@ TOOL_TABLE = browser-shell-tool.tbl
!launchApi?.getWorkflowOverviewEmbeddingMountRenderState ||
!launchApi?.getWorkflowOverviewEmbeddingMountDomContract ||
!launchApi?.getWorkflowOverviewEmbeddingMountDomReadiness ||
!launchApi?.renderWorkflowOverviewEmbeddingMountState ||
!launchApi?.isSupportedShellSessionHandoffPackage
) {
throw new Error("launch API namespace did not expose shell integration helpers");

View File

@@ -46,7 +46,8 @@
!workflowApi?.getWorkflowOverviewEmbeddingMountDisplayViewModel ||
!workflowApi?.getWorkflowOverviewEmbeddingMountRenderState ||
!workflowApi?.getWorkflowOverviewEmbeddingMountDomContract ||
!workflowApi?.getWorkflowOverviewEmbeddingMountDomReadiness
!workflowApi?.getWorkflowOverviewEmbeddingMountDomReadiness ||
!workflowApi?.renderWorkflowOverviewEmbeddingMountState
) {
throw new Error("workflow overview API namespace did not expose overview helpers");
}
@@ -142,8 +143,15 @@
embeddingMountStateNode.append(embeddingMountStatus, embeddingMountRows);
workflowDoc.body.append(embeddingMountStateNode);
const embeddingMountDomReadinessReady = workflowApi.getWorkflowOverviewEmbeddingMountDomReadiness();
const embeddingMountRenderResult = workflowApi.renderWorkflowOverviewEmbeddingMountState(
embeddingMountRenderState,
);
assertEqual(embeddingMountDomReadinessReady.ready, true, "workflow overview embedding mount ready DOM readiness");
assertEqual(embeddingMountDomReadinessReady.missing.join(","), "", "workflow overview embedding mount ready DOM missing");
assertEqual(embeddingMountRenderResult.rendered, true, "workflow overview embedding mount render result");
assertEqual(embeddingMountRenderResult.rowCount, 7, "workflow overview embedding mount render row count");
assertEqual(embeddingMountRenderResult.dataset.handoffScope, "workflow-overview-embedding-mount", "workflow overview embedding mount render scope");
assertEqual(embeddingMountStatus.textContent, embeddingMountRenderState.statusLine, "workflow overview embedding mount rendered status");
assertEqual(
workflowDoc.querySelector("[data-handoff-workflow]").dataset.handoffScope,
"workflow",

View File

@@ -51,6 +51,7 @@ import {
createIniPanelShellWorkflowOverviewEmbeddingMountRenderState,
createIniPanelShellWorkflowOverviewEmbeddingMountDomContract,
createIniPanelShellWorkflowOverviewEmbeddingMountDomReadiness,
renderIniPanelShellWorkflowOverviewEmbeddingMountState,
renderIniPanelShellSessionHandoffWorkflowState,
mountIniPanelShellSessionHandoffWorkflow,
renderIniPanelShellSessionHandoffMountState,
@@ -143,6 +144,7 @@ const requiredShellExports = [
"createIniPanelShellWorkflowOverviewEmbeddingMountRenderState",
"createIniPanelShellWorkflowOverviewEmbeddingMountDomContract",
"createIniPanelShellWorkflowOverviewEmbeddingMountDomReadiness",
"renderIniPanelShellWorkflowOverviewEmbeddingMountState",
"renderIniPanelShellSessionHandoffWorkflowState",
"mountIniPanelShellSessionHandoffWorkflow",
"renderIniPanelShellSessionHandoffMountState",
@@ -453,6 +455,7 @@ assert.match(shellText, /\bexport function createIniPanelShellWorkflowOverviewEm
assert.match(shellText, /\bexport function createIniPanelShellWorkflowOverviewEmbeddingMountRenderState\b/);
assert.match(shellText, /\bexport function createIniPanelShellWorkflowOverviewEmbeddingMountDomContract\b/);
assert.match(shellText, /\bexport function createIniPanelShellWorkflowOverviewEmbeddingMountDomReadiness\b/);
assert.match(shellText, /\bexport function renderIniPanelShellWorkflowOverviewEmbeddingMountState\b/);
assert.match(shellText, /\bexport function isSupportedIniPanelControlPageApiManifest\b/);
assert.match(shellText, /\bexport function isSupportedIniPanelLaunchApiManifest\b/);
assert.match(shellText, /\bexport function isSupportedIniPanelShellIntegrationManifest\b/);
@@ -492,6 +495,7 @@ assert.match(launchText, /\bgetWorkflowOverviewEmbeddingMountDisplayViewModel\b/
assert.match(launchText, /\bgetWorkflowOverviewEmbeddingMountRenderState\b/);
assert.match(launchText, /\bgetWorkflowOverviewEmbeddingMountDomContract\b/);
assert.match(launchText, /\bgetWorkflowOverviewEmbeddingMountDomReadiness\b/);
assert.match(launchText, /\brenderWorkflowOverviewEmbeddingMountState\b/);
assert.match(launchText, /\bisSupportedShellSessionHandoffPackage\b/);
assert.match(launchText, /\bdata-handoff-shell\b/);
assert.match(launchText, /\bdata-handoff-status\b/);
@@ -536,6 +540,7 @@ assert.match(docText, /\bcreateIniPanelShellWorkflowOverviewEmbeddingMountDispla
assert.match(docText, /\bcreateIniPanelShellWorkflowOverviewEmbeddingMountRenderState\b/);
assert.match(docText, /\bcreateIniPanelShellWorkflowOverviewEmbeddingMountDomContract\b/);
assert.match(docText, /\bcreateIniPanelShellWorkflowOverviewEmbeddingMountDomReadiness\b/);
assert.match(docText, /\brenderIniPanelShellWorkflowOverviewEmbeddingMountState\b/);
assert.match(docText, /\bisSupportedIniPanelControlPageApiManifest\b/);
assert.match(docText, /\bisSupportedIniPanelLaunchApiManifest\b/);
assert.match(docText, /\bisSupportedIniPanelShellIntegrationManifest\b/);
@@ -570,6 +575,7 @@ assert.match(docText, /\blinuxCncIniPanelLaunchApi\.getWorkflowOverviewEmbedding
assert.match(docText, /\blinuxCncIniPanelLaunchApi\.getWorkflowOverviewEmbeddingMountRenderState\b/);
assert.match(docText, /\blinuxCncIniPanelLaunchApi\.getWorkflowOverviewEmbeddingMountDomContract\b/);
assert.match(docText, /\blinuxCncIniPanelLaunchApi\.getWorkflowOverviewEmbeddingMountDomReadiness\b/);
assert.match(docText, /\blinuxCncIniPanelLaunchApi\.renderWorkflowOverviewEmbeddingMountState\b/);
assert.match(docText, /\blinuxCncIniPanelLaunchApi\.isSupportedShellSessionHandoffPackage\b/);
assert.match(docText, /\bdata-handoff-shell\b/);
assert.match(docText, /\bdata-handoff-status\b/);

View File

@@ -90,6 +90,7 @@ assert.deepEqual(manifest, {
"getWorkflowOverviewEmbeddingMountRenderState",
"getWorkflowOverviewEmbeddingMountDomContract",
"getWorkflowOverviewEmbeddingMountDomReadiness",
"renderWorkflowOverviewEmbeddingMountState",
"isSupportedShellSessionHandoffPackage",
"getLauncherLinks",
"getControlPageApiMethods",
@@ -244,6 +245,7 @@ assert.match(launchText, /\bgetWorkflowOverviewEmbeddingMountDisplayViewModel\b/
assert.match(launchText, /\bgetWorkflowOverviewEmbeddingMountRenderState\b/);
assert.match(launchText, /\bgetWorkflowOverviewEmbeddingMountDomContract\b/);
assert.match(launchText, /\bgetWorkflowOverviewEmbeddingMountDomReadiness\b/);
assert.match(launchText, /\brenderWorkflowOverviewEmbeddingMountState\b/);
assert.match(launchText, /\bisSupportedShellSessionHandoffPackage\b/);
assert.match(launchText, /\bdata-handoff-workflow\b/);
assert.match(launchText, /\bdata-handoff-workflow-status\b/);

View File

@@ -47,6 +47,7 @@ import {
createIniPanelShellWorkflowOverviewEmbeddingMountRenderState,
createIniPanelShellWorkflowOverviewEmbeddingMountDomContract,
createIniPanelShellWorkflowOverviewEmbeddingMountDomReadiness,
renderIniPanelShellWorkflowOverviewEmbeddingMountState,
renderIniPanelShellSessionHandoffWorkflowState,
mountIniPanelShellSessionHandoffWorkflow,
createIniPanelShellSessionHandoffPackageReport,
@@ -175,7 +176,7 @@ assert.deepEqual(readiness, {
counts: {
pages: 3,
launcherLinks: 3,
launchMethods: 53,
launchMethods: 54,
controlPageMethods: 11,
persistenceCapabilities: 3,
},
@@ -237,7 +238,7 @@ assert.deepEqual(handoffSummary, {
counts: {
pages: 3,
launcherLinks: 3,
launchMethods: 53,
launchMethods: 54,
controlPageMethods: 11,
persistenceCapabilities: 3,
},
@@ -804,6 +805,7 @@ assert.equal(typeof createIniPanelShellWorkflowOverviewEmbeddingMountDisplayView
assert.equal(typeof createIniPanelShellWorkflowOverviewEmbeddingMountRenderState, "function");
assert.equal(typeof createIniPanelShellWorkflowOverviewEmbeddingMountDomContract, "function");
assert.equal(typeof createIniPanelShellWorkflowOverviewEmbeddingMountDomReadiness, "function");
assert.equal(typeof renderIniPanelShellWorkflowOverviewEmbeddingMountState, "function");
assert.deepEqual(
createIniPanelShellWorkflowOverviewReadiness({
overviewApi: {
@@ -1232,7 +1234,7 @@ assert.deepEqual(createIniPanelShellIntegrationReadiness(blockedManifest), {
counts: {
pages: 3,
launcherLinks: 3,
launchMethods: 53,
launchMethods: 54,
controlPageMethods: 11,
persistenceCapabilities: 3,
},
@@ -1425,6 +1427,7 @@ assert.match(shellText, /\bexport function createIniPanelShellWorkflowOverviewEm
assert.match(shellText, /\bexport function createIniPanelShellWorkflowOverviewEmbeddingMountRenderState\b/);
assert.match(shellText, /\bexport function createIniPanelShellWorkflowOverviewEmbeddingMountDomContract\b/);
assert.match(shellText, /\bexport function createIniPanelShellWorkflowOverviewEmbeddingMountDomReadiness\b/);
assert.match(shellText, /\bexport function renderIniPanelShellWorkflowOverviewEmbeddingMountState\b/);
assert.match(shellText, /\bexport function createIniPanelShellSessionHandoffPackageRenderState\b/);
assert.match(shellText, /\bexport function createIniPanelShellSessionHandoffPackageSchema\b/);
assert.match(shellText, /\bexport function createIniPanelShellSessionHandoffRenderState\b/);
@@ -1473,6 +1476,7 @@ assert.match(docText, /\bcreateIniPanelShellWorkflowOverviewEmbeddingMountDispla
assert.match(docText, /\bcreateIniPanelShellWorkflowOverviewEmbeddingMountRenderState\b/);
assert.match(docText, /\bcreateIniPanelShellWorkflowOverviewEmbeddingMountDomContract\b/);
assert.match(docText, /\bcreateIniPanelShellWorkflowOverviewEmbeddingMountDomReadiness\b/);
assert.match(docText, /\brenderIniPanelShellWorkflowOverviewEmbeddingMountState\b/);
assert.match(docText, /\bcreateIniPanelShellSessionHandoffPackageRenderState\b/);
assert.match(docText, /\bcreateIniPanelShellSessionHandoffPackageSchema\b/);
assert.match(docText, /\bcreateIniPanelShellSessionHandoffRenderState\b/);

View File

@@ -47,6 +47,7 @@ import {
createIniPanelShellWorkflowOverviewEmbeddingMountRenderState,
createIniPanelShellWorkflowOverviewEmbeddingMountDomContract,
createIniPanelShellWorkflowOverviewEmbeddingMountDomReadiness,
renderIniPanelShellWorkflowOverviewEmbeddingMountState,
renderIniPanelShellSessionHandoffWorkflowState,
mountIniPanelShellSessionHandoffWorkflow,
renderIniPanelShellSessionHandoffMountState,
@@ -144,6 +145,7 @@ assert.equal(typeof createIniPanelShellWorkflowOverviewEmbeddingMountDisplayView
assert.equal(typeof createIniPanelShellWorkflowOverviewEmbeddingMountRenderState, "function");
assert.equal(typeof createIniPanelShellWorkflowOverviewEmbeddingMountDomContract, "function");
assert.equal(typeof createIniPanelShellWorkflowOverviewEmbeddingMountDomReadiness, "function");
assert.equal(typeof renderIniPanelShellWorkflowOverviewEmbeddingMountState, "function");
assert.equal(typeof renderIniPanelShellSessionHandoffWorkflowState, "function");
assert.equal(typeof mountIniPanelShellSessionHandoffWorkflow, "function");
assert.equal(typeof renderIniPanelShellSessionHandoffMountState, "function");
@@ -853,6 +855,10 @@ assert.equal(
shellViewModel.createWorkflowOverviewEmbeddingMountDomReadiness,
createIniPanelShellWorkflowOverviewEmbeddingMountDomReadiness,
);
assert.equal(
shellViewModel.renderWorkflowOverviewEmbeddingMountState,
renderIniPanelShellWorkflowOverviewEmbeddingMountState,
);
assert.equal(shellViewModel.createShellSessionHandoffPackageReport, createIniPanelShellSessionHandoffPackageReport);
assert.equal(shellViewModel.createShellSessionHandoffPackageSchema, createIniPanelShellSessionHandoffPackageSchema);
assert.equal(shellViewModel.isSupportedShellSessionHandoffPackage, isSupportedIniPanelShellSessionHandoffPackage);
@@ -1628,6 +1634,41 @@ assert.deepEqual(
contract: createIniPanelShellWorkflowOverviewEmbeddingMountDomContract(),
},
);
assert.deepEqual(
renderIniPanelShellWorkflowOverviewEmbeddingMountState(
createIniPanelShellWorkflowOverviewEmbeddingMountRenderState(
createIniPanelShellWorkflowOverviewEmbeddingMountDisplayViewModel(workflowOverviewEmbeddingMountResult),
),
{
documentRef: mountDocument,
mountNode,
statusNode: mountStatusNode,
rowsNode: mountRowsNode,
},
),
{
rendered: true,
statusLine: "Blocked: mount:blocked",
rowCount: 7,
rowIds: [
"mount-ready",
"dom-readiness",
"missing-dom",
"render-state",
"render-result",
"render-row-count",
"error",
],
dataset: {
handoffPhase: "blocked",
handoffReady: "false",
handoffScope: "workflow-overview-embedding-mount",
},
},
);
assert.equal(mountRowsNode.children[0].dataset.workflowOverviewEmbeddingMountRow, "mount-ready");
assert.equal(mountRowsNode.children[1].dataset.workflowOverviewEmbeddingMountValue, "mount-ready");
assert.equal(mountRowsNode.children[1].dataset.workflowOverviewEmbeddingMountStatus, "blocked");
assert.deepEqual(
mountIniPanelShellWorkflowOverviewEmbedding({ overviewApi: null }).readiness.missing,
shellViewModel.shellWorkflowOverviewContract.methodNames,