feat(ql3): add explicit cluster observation console

This commit is contained in:
whyour
2026-08-16 06:09:54 +08:00
parent fba8dfb602
commit 7955d55629
20 changed files with 1881 additions and 877 deletions
@@ -53,7 +53,7 @@ test('binds the live image gate to native and container-published loopback', ()
const source = fs.readFileSync(script, 'utf8');
assert.match(source, /function runConsoleContract\(image\)/);
assert.match(source, /\[facade, 'copilot-console'/);
assert.match(source, /body\.includes\('Cluster field console'\)/);
assert.match(source, /body\.includes\('Cluster field ledger'\)/);
assert.match(source, /runConsoleContract\(image\);/);
assert.match(source, /consoleLoopback: true/);
assert.match(source, /consoleAssets: true/);
@@ -25,7 +25,21 @@ test('keeps the QingLong 3.0 Copilot Console independent and read-only', () => {
component: 'cluster-copilot-console',
owner: '@qinglong/cluster-admin',
lifecycle: 'operator-workstation-loopback',
operations: ['inspect', 'output'],
operations: [
'inspect',
'output',
'run_list',
'run_read',
'run_event_list',
'run_step_list',
'task_list',
'task_read',
'workflow_list',
'workflow_run_list',
'workflow_run_read',
'workflow_event_list',
'workflow_step_list',
],
legacyUiCoupled: false,
kubernetesResident: false,
assetCount: 3,
@@ -47,11 +61,7 @@ test('rejects a remote listener or mutation vocabulary', () => {
root,
readFile: intercept(
'packages/ql3-cluster-admin/src/copilot-console/contracts.ts',
(source) =>
source.replace(
"'inspect' | 'output'",
"'inspect' | 'output' | 'cancel'",
),
(source) => source.replace("'output',", "'output', 'cancel',"),
),
});
assert.equal(listener.compatible, false);
@@ -127,8 +137,7 @@ test('rejects coupling into the legacy UI or Kubernetes workloads', () => {
(source) => source + '\n// ql3-copilot-console\n',
),
});
const kubernetesTarget =
'deploy/kubernetes/ql3-cluster/base/deployment.yaml';
const kubernetesTarget = 'deploy/kubernetes/ql3-cluster/base/deployment.yaml';
const kubernetes = auditClusterCopilotConsole({
root,
readFile: intercept(