From fdf844f4d7ab3129e4e5cb1f654f8cd75fa872fb Mon Sep 17 00:00:00 2001 From: rcourtman Date: Sat, 21 Mar 2026 13:09:08 +0000 Subject: [PATCH] Retire UnifiedAgents compatibility shim --- .../v6/internal/subsystems/agent-lifecycle.md | 54 +++++++++---------- .../v6/internal/subsystems/api-contracts.md | 42 +++++++-------- .../v6/internal/subsystems/registry.json | 22 ++------ .../src/components/Settings/UnifiedAgents.tsx | 6 --- ...frastructureOperationsController.test.tsx} | 16 +++--- .../monitoredSystemModelGuardrails.test.ts | 2 +- frontend-modern/vite.config.ts | 2 +- .../canonical_completion_guard_test.py | 20 +++---- .../release_control/subsystem_lookup_test.py | 20 +++---- 9 files changed, 82 insertions(+), 102 deletions(-) delete mode 100644 frontend-modern/src/components/Settings/UnifiedAgents.tsx rename frontend-modern/src/components/Settings/__tests__/{UnifiedAgents.test.tsx => InfrastructureOperationsController.test.tsx} (99%) diff --git a/docs/release-control/v6/internal/subsystems/agent-lifecycle.md b/docs/release-control/v6/internal/subsystems/agent-lifecycle.md index 667fb9558..dc27286a4 100644 --- a/docs/release-control/v6/internal/subsystems/agent-lifecycle.md +++ b/docs/release-control/v6/internal/subsystems/agent-lifecycle.md @@ -52,25 +52,24 @@ management, and fleet control surfaces. 28. `frontend-modern/src/components/Settings/useInfrastructureOperationsState.tsx` 29. `frontend-modern/src/components/Settings/useInfrastructureSettingsState.ts` 30. `frontend-modern/src/components/Settings/useProxmoxDirectWorkspaceState.ts` -31. `frontend-modern/src/components/Settings/UnifiedAgents.tsx` -32. `frontend-modern/src/components/Settings/NodeModal.tsx` -33. `frontend-modern/src/components/Settings/NodeModalAuthenticationSection.tsx` -34. `frontend-modern/src/components/Settings/NodeModalBasicInfoSection.tsx` -35. `frontend-modern/src/components/Settings/nodeModalModel.ts` -36. `frontend-modern/src/components/Settings/NodeModalMonitoringSection.tsx` -37. `frontend-modern/src/components/Settings/NodeModalSetupGuideSection.tsx` -38. `frontend-modern/src/components/Settings/NodeModalStatusFooter.tsx` -39. `frontend-modern/src/components/Settings/useNodeModalState.ts` -40. `frontend-modern/src/components/SetupWizard/SetupCompletionPanel.tsx` -41. `frontend-modern/src/components/Infrastructure/deploy/ResultsStep.tsx` -42. `frontend-modern/src/utils/agentProfilesPresentation.ts` -43. `frontend-modern/src/utils/agentInstallCommand.ts` -44. `frontend-modern/src/api/nodes.ts` -45. `frontend-modern/src/components/Settings/InfrastructureInstallerSection.tsx` -46. `frontend-modern/src/components/Settings/InfrastructureInventorySection.tsx` -47. `frontend-modern/src/components/Settings/InfrastructureActiveRowDetails.tsx` -48. `frontend-modern/src/components/Settings/InfrastructureIgnoredRowDetails.tsx` -49. `frontend-modern/src/components/Settings/InfrastructureStopMonitoringDialog.tsx` +31. `frontend-modern/src/components/Settings/NodeModal.tsx` +32. `frontend-modern/src/components/Settings/NodeModalAuthenticationSection.tsx` +33. `frontend-modern/src/components/Settings/NodeModalBasicInfoSection.tsx` +34. `frontend-modern/src/components/Settings/nodeModalModel.ts` +35. `frontend-modern/src/components/Settings/NodeModalMonitoringSection.tsx` +36. `frontend-modern/src/components/Settings/NodeModalSetupGuideSection.tsx` +37. `frontend-modern/src/components/Settings/NodeModalStatusFooter.tsx` +38. `frontend-modern/src/components/Settings/useNodeModalState.ts` +39. `frontend-modern/src/components/SetupWizard/SetupCompletionPanel.tsx` +40. `frontend-modern/src/components/Infrastructure/deploy/ResultsStep.tsx` +41. `frontend-modern/src/utils/agentProfilesPresentation.ts` +42. `frontend-modern/src/utils/agentInstallCommand.ts` +43. `frontend-modern/src/api/nodes.ts` +44. `frontend-modern/src/components/Settings/InfrastructureInstallerSection.tsx` +45. `frontend-modern/src/components/Settings/InfrastructureInventorySection.tsx` +46. `frontend-modern/src/components/Settings/InfrastructureActiveRowDetails.tsx` +47. `frontend-modern/src/components/Settings/InfrastructureIgnoredRowDetails.tsx` +48. `frontend-modern/src/components/Settings/InfrastructureStopMonitoringDialog.tsx` ## Shared Boundaries @@ -85,15 +84,14 @@ management, and fleet control surfaces. 9. `frontend-modern/src/components/Settings/NodeModalMonitoringSection.tsx` shared with `api-contracts`: the node setup monitoring section is both an agent lifecycle control surface and a shared API-backed install/setup contract boundary. 10. `frontend-modern/src/components/Settings/NodeModalSetupGuideSection.tsx` shared with `api-contracts`: the node setup guide section is both an agent lifecycle control surface and a shared API-backed install/setup contract boundary. 11. `frontend-modern/src/components/Settings/NodeModalStatusFooter.tsx` shared with `api-contracts`: the node setup status/footer section is both an agent lifecycle control surface and a shared API-backed install/setup contract boundary. -12. `frontend-modern/src/components/Settings/UnifiedAgents.tsx` shared with `api-contracts`: the UnifiedAgents module is a compatibility shim for the canonical infrastructure operations controller and remains on the same shared agent lifecycle and API contract boundary while the old module path exists. -13. `frontend-modern/src/components/Settings/useInfrastructureOperationsState.tsx` shared with `api-contracts`: the shared infrastructure operations state hook is both an agent fleet lifecycle control surface and an API token, lookup, assignment, and reporting/install contract boundary. -14. `frontend-modern/src/components/Settings/useNodeModalState.ts` shared with `api-contracts`: the node setup modal state hook is both an agent lifecycle control surface and a shared API-backed install/setup contract boundary. -15. `frontend-modern/src/utils/agentInstallCommand.ts` shared with `api-contracts`: the shared frontend install-command helper is both an agent lifecycle control surface and a canonical API/install transport contract boundary. -16. `internal/api/agent_install_command_shared.go` shared with `api-contracts`: agent install command assembly is both an agent lifecycle control surface and a canonical API payload contract boundary. -17. `internal/api/config_setup_handlers.go` shared with `api-contracts`: auto-register and setup handlers are both an agent lifecycle control surface and a canonical API payload contract boundary. -18. `internal/api/unified_agent.go` shared with `api-contracts`: unified agent download and installer handlers are both an agent lifecycle control surface and a canonical API payload contract boundary. -19. `scripts/install.ps1` shared with `deployment-installability`: the Windows installer is both a deployment installability entry point and a canonical agent lifecycle runtime continuity boundary. -20. `scripts/install.sh` shared with `deployment-installability`: the shell installer is both a deployment installability entry point and a canonical agent lifecycle runtime continuity boundary. +12. `frontend-modern/src/components/Settings/useInfrastructureOperationsState.tsx` shared with `api-contracts`: the shared infrastructure operations state hook is both an agent fleet lifecycle control surface and an API token, lookup, assignment, and reporting/install contract boundary. +13. `frontend-modern/src/components/Settings/useNodeModalState.ts` shared with `api-contracts`: the node setup modal state hook is both an agent lifecycle control surface and a shared API-backed install/setup contract boundary. +14. `frontend-modern/src/utils/agentInstallCommand.ts` shared with `api-contracts`: the shared frontend install-command helper is both an agent lifecycle control surface and a canonical API/install transport contract boundary. +15. `internal/api/agent_install_command_shared.go` shared with `api-contracts`: agent install command assembly is both an agent lifecycle control surface and a canonical API payload contract boundary. +16. `internal/api/config_setup_handlers.go` shared with `api-contracts`: auto-register and setup handlers are both an agent lifecycle control surface and a canonical API payload contract boundary. +17. `internal/api/unified_agent.go` shared with `api-contracts`: unified agent download and installer handlers are both an agent lifecycle control surface and a canonical API payload contract boundary. +18. `scripts/install.ps1` shared with `deployment-installability`: the Windows installer is both a deployment installability entry point and a canonical agent lifecycle runtime continuity boundary. +19. `scripts/install.sh` shared with `deployment-installability`: the shell installer is both a deployment installability entry point and a canonical agent lifecycle runtime continuity boundary. ## Extension Points diff --git a/docs/release-control/v6/internal/subsystems/api-contracts.md b/docs/release-control/v6/internal/subsystems/api-contracts.md index 95d5ac1f9..38f38b368 100644 --- a/docs/release-control/v6/internal/subsystems/api-contracts.md +++ b/docs/release-control/v6/internal/subsystems/api-contracts.md @@ -33,22 +33,21 @@ Own canonical runtime payload shapes between backend and frontend. 10. `frontend-modern/src/components/Settings/infrastructureOperationsModel.tsx` 11. `frontend-modern/src/components/Settings/useAPITokenManagerState.ts` 12. `frontend-modern/src/components/Settings/useInfrastructureOperationsState.tsx` -13. `frontend-modern/src/components/Settings/UnifiedAgents.tsx` -14. `frontend-modern/src/components/Settings/NodeModal.tsx` -15. `frontend-modern/src/components/Settings/NodeModalAuthenticationSection.tsx` -16. `frontend-modern/src/components/Settings/NodeModalBasicInfoSection.tsx` -17. `frontend-modern/src/components/Settings/nodeModalModel.ts` -18. `frontend-modern/src/components/Settings/NodeModalMonitoringSection.tsx` -19. `frontend-modern/src/components/Settings/NodeModalSetupGuideSection.tsx` -20. `frontend-modern/src/components/Settings/NodeModalStatusFooter.tsx` -21. `frontend-modern/src/components/Settings/useNodeModalState.ts` -22. `frontend-modern/src/utils/agentInstallCommand.ts` -23. `frontend-modern/src/api/nodes.ts` -24. `frontend-modern/src/api/license.ts` -25. `frontend-modern/src/api/monitoredSystemLedger.ts` -26. `frontend-modern/src/api/resources.ts` -27. `frontend-modern/src/api/monitoring.ts` -28. `internal/api/monitored_system_ledger.go` +13. `frontend-modern/src/components/Settings/NodeModal.tsx` +14. `frontend-modern/src/components/Settings/NodeModalAuthenticationSection.tsx` +15. `frontend-modern/src/components/Settings/NodeModalBasicInfoSection.tsx` +16. `frontend-modern/src/components/Settings/nodeModalModel.ts` +17. `frontend-modern/src/components/Settings/NodeModalMonitoringSection.tsx` +18. `frontend-modern/src/components/Settings/NodeModalSetupGuideSection.tsx` +19. `frontend-modern/src/components/Settings/NodeModalStatusFooter.tsx` +20. `frontend-modern/src/components/Settings/useNodeModalState.ts` +21. `frontend-modern/src/utils/agentInstallCommand.ts` +22. `frontend-modern/src/api/nodes.ts` +23. `frontend-modern/src/api/license.ts` +24. `frontend-modern/src/api/monitoredSystemLedger.ts` +25. `frontend-modern/src/api/resources.ts` +26. `frontend-modern/src/api/monitoring.ts` +27. `internal/api/monitored_system_ledger.go` ## Shared Boundaries @@ -70,12 +69,11 @@ Own canonical runtime payload shapes between backend and frontend. 16. `frontend-modern/src/components/Settings/NodeModalMonitoringSection.tsx` shared with `agent-lifecycle`: the node setup monitoring section is both an agent lifecycle control surface and a shared API-backed install/setup contract boundary. 17. `frontend-modern/src/components/Settings/NodeModalSetupGuideSection.tsx` shared with `agent-lifecycle`: the node setup guide section is both an agent lifecycle control surface and a shared API-backed install/setup contract boundary. 18. `frontend-modern/src/components/Settings/NodeModalStatusFooter.tsx` shared with `agent-lifecycle`: the node setup status/footer section is both an agent lifecycle control surface and a shared API-backed install/setup contract boundary. -19. `frontend-modern/src/components/Settings/UnifiedAgents.tsx` shared with `agent-lifecycle`: the UnifiedAgents module is a compatibility shim for the canonical infrastructure operations controller and remains on the same shared agent lifecycle and API contract boundary while the old module path exists. -20. `frontend-modern/src/components/Settings/useAPITokenManagerState.ts` shared with `security-privacy`: the API token settings state hook is both a security/privacy control surface and a canonical API payload contract boundary. -21. `frontend-modern/src/components/Settings/useInfrastructureOperationsState.tsx` shared with `agent-lifecycle`: the shared infrastructure operations state hook is both an agent fleet lifecycle control surface and an API token, lookup, assignment, and reporting/install contract boundary. -22. `frontend-modern/src/components/Settings/useNodeModalState.ts` shared with `agent-lifecycle`: the node setup modal state hook is both an agent lifecycle control surface and a shared API-backed install/setup contract boundary. -23. `frontend-modern/src/utils/agentInstallCommand.ts` shared with `agent-lifecycle`: the shared frontend install-command helper is both an agent lifecycle control surface and a canonical API/install transport contract boundary. -24. `internal/api/agent_install_command_shared.go` shared with `agent-lifecycle`: agent install command assembly is both an agent lifecycle control surface and a canonical API payload contract boundary. +19. `frontend-modern/src/components/Settings/useAPITokenManagerState.ts` shared with `security-privacy`: the API token settings state hook is both a security/privacy control surface and a canonical API payload contract boundary. +20. `frontend-modern/src/components/Settings/useInfrastructureOperationsState.tsx` shared with `agent-lifecycle`: the shared infrastructure operations state hook is both an agent fleet lifecycle control surface and an API token, lookup, assignment, and reporting/install contract boundary. +21. `frontend-modern/src/components/Settings/useNodeModalState.ts` shared with `agent-lifecycle`: the node setup modal state hook is both an agent lifecycle control surface and a shared API-backed install/setup contract boundary. +22. `frontend-modern/src/utils/agentInstallCommand.ts` shared with `agent-lifecycle`: the shared frontend install-command helper is both an agent lifecycle control surface and a canonical API/install transport contract boundary. +23. `internal/api/agent_install_command_shared.go` shared with `agent-lifecycle`: agent install command assembly is both an agent lifecycle control surface and a canonical API payload contract boundary. 20. `internal/api/ai_handler.go` shared with `ai-runtime`: Pulse Assistant handlers are both an AI runtime control surface and a canonical API payload contract boundary. 21. `internal/api/ai_handlers.go` shared with `ai-runtime`: AI settings and remediation handlers are both an AI runtime control surface and a canonical API payload contract boundary. 22. `internal/api/ai_intelligence_handlers.go` shared with `ai-runtime`: AI intelligence handlers are both an AI runtime control surface and a canonical API payload contract boundary. diff --git a/docs/release-control/v6/internal/subsystems/registry.json b/docs/release-control/v6/internal/subsystems/registry.json index 9e5a50879..9196cdd19 100644 --- a/docs/release-control/v6/internal/subsystems/registry.json +++ b/docs/release-control/v6/internal/subsystems/registry.json @@ -201,14 +201,6 @@ "security-privacy" ] }, - { - "path": "frontend-modern/src/components/Settings/UnifiedAgents.tsx", - "rationale": "the UnifiedAgents module is a compatibility shim for the canonical infrastructure operations controller and remains on the same shared agent lifecycle and API contract boundary while the old module path exists", - "subsystems": [ - "agent-lifecycle", - "api-contracts" - ] - }, { "path": "frontend-modern/src/components/Settings/useAPITokenManagerState.ts", "rationale": "the API token settings state hook is both a security/privacy control surface and a canonical API payload contract boundary", @@ -437,7 +429,6 @@ "frontend-modern/src/components/Settings/proxmoxSettingsModel.ts", "frontend-modern/src/components/Settings/ProxmoxSettingsPanel.tsx", "frontend-modern/src/components/Settings/SettingsSectionNav.tsx", - "frontend-modern/src/components/Settings/UnifiedAgents.tsx", "frontend-modern/src/components/Settings/useAgentProfilesPanelState.ts", "frontend-modern/src/components/Settings/useInfrastructureOperationsState.tsx", "frontend-modern/src/components/Settings/useInfrastructureSettingsState.ts", @@ -653,7 +644,6 @@ "frontend-modern/src/components/Settings/InfrastructureOperationsController.tsx", "frontend-modern/src/components/Settings/infrastructureOperationsModel.tsx", "frontend-modern/src/components/Settings/InfrastructureStopMonitoringDialog.tsx", - "frontend-modern/src/components/Settings/UnifiedAgents.tsx", "frontend-modern/src/components/Settings/useInfrastructureOperationsState.tsx" ], "allow_same_subsystem_tests": false, @@ -661,8 +651,8 @@ "exact_files": [ "frontend-modern/src/api/__tests__/agentProfiles.test.ts", "frontend-modern/src/api/__tests__/monitoring.test.ts", - "frontend-modern/src/components/Settings/__tests__/InfrastructureOperationsModel.test.tsx", - "frontend-modern/src/components/Settings/__tests__/UnifiedAgents.test.tsx" + "frontend-modern/src/components/Settings/__tests__/InfrastructureOperationsController.test.tsx", + "frontend-modern/src/components/Settings/__tests__/InfrastructureOperationsModel.test.tsx" ] }, { @@ -691,10 +681,10 @@ "allow_same_subsystem_tests": false, "test_prefixes": [], "exact_files": [ + "frontend-modern/src/components/Settings/__tests__/InfrastructureOperationsController.test.tsx", "frontend-modern/src/components/Settings/__tests__/InfrastructureWorkspace.test.tsx", "frontend-modern/src/components/Settings/__tests__/monitoredSystemModelGuardrails.test.ts", "frontend-modern/src/components/Settings/__tests__/settingsArchitecture.test.ts", - "frontend-modern/src/components/Settings/__tests__/UnifiedAgents.test.tsx", "frontend-modern/src/utils/__tests__/frontendResourceTypeBoundaries.test.ts" ] } @@ -889,7 +879,6 @@ "frontend-modern/src/components/Settings/NodeModalMonitoringSection.tsx", "frontend-modern/src/components/Settings/NodeModalSetupGuideSection.tsx", "frontend-modern/src/components/Settings/NodeModalStatusFooter.tsx", - "frontend-modern/src/components/Settings/UnifiedAgents.tsx", "frontend-modern/src/components/Settings/useAPITokenManagerState.ts", "frontend-modern/src/components/Settings/useInfrastructureOperationsState.tsx", "frontend-modern/src/components/Settings/useNodeModalState.ts", @@ -1127,7 +1116,6 @@ "match_files": [ "frontend-modern/src/components/Settings/InfrastructureOperationsController.tsx", "frontend-modern/src/components/Settings/infrastructureOperationsModel.tsx", - "frontend-modern/src/components/Settings/UnifiedAgents.tsx", "frontend-modern/src/components/Settings/useInfrastructureOperationsState.tsx" ], "allow_same_subsystem_tests": false, @@ -1136,8 +1124,8 @@ "frontend-modern/src/api/__tests__/agentProfiles.test.ts", "frontend-modern/src/api/__tests__/monitoring.test.ts", "frontend-modern/src/api/__tests__/security.test.ts", - "frontend-modern/src/components/Settings/__tests__/InfrastructureOperationsModel.test.tsx", - "frontend-modern/src/components/Settings/__tests__/UnifiedAgents.test.tsx" + "frontend-modern/src/components/Settings/__tests__/InfrastructureOperationsController.test.tsx", + "frontend-modern/src/components/Settings/__tests__/InfrastructureOperationsModel.test.tsx" ] } ] diff --git a/frontend-modern/src/components/Settings/UnifiedAgents.tsx b/frontend-modern/src/components/Settings/UnifiedAgents.tsx deleted file mode 100644 index 79a6450f6..000000000 --- a/frontend-modern/src/components/Settings/UnifiedAgents.tsx +++ /dev/null @@ -1,6 +0,0 @@ -export { - InfrastructureOperationsController, - InfrastructureOperationsController as UnifiedAgents, -} from './InfrastructureOperationsController'; - -export type { InfrastructureOperationsControllerProps as UnifiedAgentsProps } from './InfrastructureOperationsController'; diff --git a/frontend-modern/src/components/Settings/__tests__/UnifiedAgents.test.tsx b/frontend-modern/src/components/Settings/__tests__/InfrastructureOperationsController.test.tsx similarity index 99% rename from frontend-modern/src/components/Settings/__tests__/UnifiedAgents.test.tsx rename to frontend-modern/src/components/Settings/__tests__/InfrastructureOperationsController.test.tsx index 87194024e..ec59c2275 100644 --- a/frontend-modern/src/components/Settings/__tests__/UnifiedAgents.test.tsx +++ b/frontend-modern/src/components/Settings/__tests__/InfrastructureOperationsController.test.tsx @@ -3,7 +3,7 @@ import { render, fireEvent, screen, waitFor, cleanup, within } from '@solidjs/te import { createSignal } from 'solid-js'; import { createStore } from 'solid-js/store'; import { Router, Route } from '@solidjs/router'; -import { UnifiedAgents } from '../UnifiedAgents'; +import { InfrastructureOperationsController } from '../InfrastructureOperationsController'; import infrastructureInstallPanelSource from '../InfrastructureInstallPanel.tsx?raw'; import infrastructureInstallerSectionSource from '../InfrastructureInstallerSection.tsx?raw'; import infrastructureOperationsControllerSource from '../InfrastructureOperationsController.tsx?raw'; @@ -51,7 +51,7 @@ const refetchResourcesMock = vi.fn(); const [mockResources, setMockResources] = createSignal([]); let securityStatusResponse = { requiresAuth: true, apiTokenConfigured: false }; -describe('UnifiedAgents ownership guardrails', () => { +describe('InfrastructureOperationsController ownership guardrails', () => { it('routes controller and workspace panels through the shared infrastructure operations state owner', () => { expect(infrastructureOperationsControllerSource).toContain('InfrastructureOperationsStateProvider'); expect(infrastructureOperationsControllerSource).toContain('InfrastructureInstallerSection'); @@ -502,7 +502,7 @@ const setupComponent = ( return render(() => ( - } /> + } /> )); }; @@ -523,7 +523,7 @@ const setupWithResources = (resources: any[], connectedInfrastructure: Connected return render(() => ( - } /> + } /> )); }; @@ -577,7 +577,7 @@ afterEach(() => { vi.unstubAllGlobals(); }); -describe('UnifiedAgents token generation', () => { +describe('InfrastructureOperationsController token generation', () => { it('renders the token generation UI when auth is required', async () => { setupComponent(); @@ -623,7 +623,7 @@ describe('UnifiedAgents token generation', () => { }); }); -describe('UnifiedAgents agent lookup', () => { +describe('InfrastructureOperationsController agent lookup', () => { it('performs agent lookup and displays results', async () => { createTokenMock.mockResolvedValue({ token: 'token-123', @@ -726,7 +726,7 @@ describe('UnifiedAgents agent lookup', () => { }); }); -describe('UnifiedAgents managed agents table', () => { +describe('InfrastructureOperationsController managed agents table', () => { it('displays agents in the table', async () => { const host = createAgent({ hostname: 'test-server.local', displayName: 'Test Server' }); setupComponent([host]); @@ -2133,7 +2133,7 @@ describe('UnifiedAgents managed agents table', () => { }); }); -describe('UnifiedAgents platform commands', () => { +describe('InfrastructureOperationsController platform commands', () => { it('shows installation commands for all platforms after token generation', async () => { createTokenMock.mockResolvedValue({ token: 'test-token', diff --git a/frontend-modern/src/components/Settings/__tests__/monitoredSystemModelGuardrails.test.ts b/frontend-modern/src/components/Settings/__tests__/monitoredSystemModelGuardrails.test.ts index 570383664..d117c33b9 100644 --- a/frontend-modern/src/components/Settings/__tests__/monitoredSystemModelGuardrails.test.ts +++ b/frontend-modern/src/components/Settings/__tests__/monitoredSystemModelGuardrails.test.ts @@ -261,7 +261,7 @@ describe('monitored-system model guardrails', () => { expect(apiTokenPresentationSource).toContain('export function getAPITokensLoadErrorMessage'); }); - it('keeps UnifiedAgents free of v5 merge-workaround patterns', () => { + it('keeps infrastructure operations free of v5 merge-workaround patterns', () => { expect(infrastructureOperationsStateSource).not.toContain('previousHostTypes'); expect(infrastructureOperationsStateSource).not.toContain('const allHosts = createMemo('); expect(infrastructureOperationsSource).toContain('@/utils/unifiedAgentStatusPresentation'); diff --git a/frontend-modern/vite.config.ts b/frontend-modern/vite.config.ts index 9218b7bd9..bd911df6d 100644 --- a/frontend-modern/vite.config.ts +++ b/frontend-modern/vite.config.ts @@ -241,7 +241,7 @@ export default defineConfig({ if (/Security|RolesPanel|UserAssignmentsPanel|APIAccessPanel|APITokenManager|ChangePasswordModal|QuickSecuritySetup/.test(id)) { return 'settings-auth'; } - if (/Audit|ProLicensePanel|GeneralSettingsPanel|NetworkSettingsPanel|UpdatesSettingsPanel|RecoverySettingsPanel|UnifiedAgents/.test(id)) { + if (/Audit|ProLicensePanel|GeneralSettingsPanel|NetworkSettingsPanel|UpdatesSettingsPanel|RecoverySettingsPanel/.test(id)) { return 'settings-admin'; } if (/Settings\.tsx|SettingsSectionNav|ResourcePicker|SuggestProfileModal/.test(id)) { diff --git a/scripts/release_control/canonical_completion_guard_test.py b/scripts/release_control/canonical_completion_guard_test.py index e9e81c4b6..bf4c82332 100644 --- a/scripts/release_control/canonical_completion_guard_test.py +++ b/scripts/release_control/canonical_completion_guard_test.py @@ -1771,9 +1771,9 @@ class CanonicalCompletionGuardTest(unittest.TestCase): ], ) - def test_unified_agent_settings_change_requires_lifecycle_and_api_contracts(self): + def test_infrastructure_operations_controller_change_requires_lifecycle_and_api_contracts(self): required = infer_impacted_subsystems( - ["frontend-modern/src/components/Settings/UnifiedAgents.tsx"] + ["frontend-modern/src/components/Settings/InfrastructureOperationsController.tsx"] ) self.assertEqual(set(required), {"agent-lifecycle", "api-contracts"}) @@ -1784,7 +1784,7 @@ class CanonicalCompletionGuardTest(unittest.TestCase): ) self.assertEqual( lifecycle["touched_runtime_files"], - ["frontend-modern/src/components/Settings/UnifiedAgents.tsx"], + ["frontend-modern/src/components/Settings/InfrastructureOperationsController.tsx"], ) self.assertEqual( lifecycle["verification_requirements"], @@ -1793,15 +1793,15 @@ class CanonicalCompletionGuardTest(unittest.TestCase): "id": "unified-agent-settings-surface", "label": "unified agent settings lifecycle proof", "touched_runtime_files": [ - "frontend-modern/src/components/Settings/UnifiedAgents.tsx" + "frontend-modern/src/components/Settings/InfrastructureOperationsController.tsx" ], "allow_same_subsystem_tests": False, "test_prefixes": [], "exact_files": [ "frontend-modern/src/api/__tests__/agentProfiles.test.ts", "frontend-modern/src/api/__tests__/monitoring.test.ts", + "frontend-modern/src/components/Settings/__tests__/InfrastructureOperationsController.test.tsx", "frontend-modern/src/components/Settings/__tests__/InfrastructureOperationsModel.test.tsx", - "frontend-modern/src/components/Settings/__tests__/UnifiedAgents.test.tsx", ], } ], @@ -1814,7 +1814,7 @@ class CanonicalCompletionGuardTest(unittest.TestCase): ) self.assertEqual( api_contracts["touched_runtime_files"], - ["frontend-modern/src/components/Settings/UnifiedAgents.tsx"], + ["frontend-modern/src/components/Settings/InfrastructureOperationsController.tsx"], ) self.assertEqual( api_contracts["verification_requirements"], @@ -1823,7 +1823,7 @@ class CanonicalCompletionGuardTest(unittest.TestCase): "id": "unified-agent-settings-surface", "label": "infrastructure operations API proof", "touched_runtime_files": [ - "frontend-modern/src/components/Settings/UnifiedAgents.tsx" + "frontend-modern/src/components/Settings/InfrastructureOperationsController.tsx" ], "allow_same_subsystem_tests": False, "test_prefixes": [], @@ -1831,8 +1831,8 @@ class CanonicalCompletionGuardTest(unittest.TestCase): "frontend-modern/src/api/__tests__/agentProfiles.test.ts", "frontend-modern/src/api/__tests__/monitoring.test.ts", "frontend-modern/src/api/__tests__/security.test.ts", + "frontend-modern/src/components/Settings/__tests__/InfrastructureOperationsController.test.tsx", "frontend-modern/src/components/Settings/__tests__/InfrastructureOperationsModel.test.tsx", - "frontend-modern/src/components/Settings/__tests__/UnifiedAgents.test.tsx", ], } ], @@ -1860,8 +1860,8 @@ class CanonicalCompletionGuardTest(unittest.TestCase): "allow_same_subsystem_tests": False, "test_prefixes": [], "exact_files": [ + "frontend-modern/src/components/Settings/__tests__/InfrastructureOperationsController.test.tsx", "frontend-modern/src/components/Settings/__tests__/InfrastructureWorkspace.test.tsx", - "frontend-modern/src/components/Settings/__tests__/UnifiedAgents.test.tsx", "frontend-modern/src/components/Settings/__tests__/monitoredSystemModelGuardrails.test.ts", "frontend-modern/src/components/Settings/__tests__/settingsArchitecture.test.ts", "frontend-modern/src/utils/__tests__/frontendResourceTypeBoundaries.test.ts", @@ -1924,8 +1924,8 @@ class CanonicalCompletionGuardTest(unittest.TestCase): "exact_files": [ "frontend-modern/src/api/__tests__/agentProfiles.test.ts", "frontend-modern/src/api/__tests__/monitoring.test.ts", + "frontend-modern/src/components/Settings/__tests__/InfrastructureOperationsController.test.tsx", "frontend-modern/src/components/Settings/__tests__/InfrastructureOperationsModel.test.tsx", - "frontend-modern/src/components/Settings/__tests__/UnifiedAgents.test.tsx", ], } ], diff --git a/scripts/release_control/subsystem_lookup_test.py b/scripts/release_control/subsystem_lookup_test.py index d150ffd33..87316448f 100644 --- a/scripts/release_control/subsystem_lookup_test.py +++ b/scripts/release_control/subsystem_lookup_test.py @@ -1321,8 +1321,8 @@ class SubsystemLookupTest(unittest.TestCase): self.assertEqual( match["verification_requirement"]["exact_files"], [ + "frontend-modern/src/components/Settings/__tests__/InfrastructureOperationsController.test.tsx", "frontend-modern/src/components/Settings/__tests__/InfrastructureWorkspace.test.tsx", - "frontend-modern/src/components/Settings/__tests__/UnifiedAgents.test.tsx", "frontend-modern/src/components/Settings/__tests__/monitoredSystemModelGuardrails.test.ts", "frontend-modern/src/components/Settings/__tests__/settingsArchitecture.test.ts", "frontend-modern/src/utils/__tests__/frontendResourceTypeBoundaries.test.ts", @@ -1357,8 +1357,8 @@ class SubsystemLookupTest(unittest.TestCase): self.assertEqual( match["verification_requirement"]["exact_files"], [ + "frontend-modern/src/components/Settings/__tests__/InfrastructureOperationsController.test.tsx", "frontend-modern/src/components/Settings/__tests__/InfrastructureWorkspace.test.tsx", - "frontend-modern/src/components/Settings/__tests__/UnifiedAgents.test.tsx", "frontend-modern/src/components/Settings/__tests__/monitoredSystemModelGuardrails.test.ts", "frontend-modern/src/components/Settings/__tests__/settingsArchitecture.test.ts", "frontend-modern/src/utils/__tests__/frontendResourceTypeBoundaries.test.ts", @@ -1397,8 +1397,8 @@ class SubsystemLookupTest(unittest.TestCase): self.assertEqual( match["verification_requirement"]["exact_files"], [ + "frontend-modern/src/components/Settings/__tests__/InfrastructureOperationsController.test.tsx", "frontend-modern/src/components/Settings/__tests__/InfrastructureWorkspace.test.tsx", - "frontend-modern/src/components/Settings/__tests__/UnifiedAgents.test.tsx", "frontend-modern/src/components/Settings/__tests__/monitoredSystemModelGuardrails.test.ts", "frontend-modern/src/components/Settings/__tests__/settingsArchitecture.test.ts", "frontend-modern/src/utils/__tests__/frontendResourceTypeBoundaries.test.ts", @@ -1433,8 +1433,8 @@ class SubsystemLookupTest(unittest.TestCase): self.assertEqual( match["verification_requirement"]["exact_files"], [ + "frontend-modern/src/components/Settings/__tests__/InfrastructureOperationsController.test.tsx", "frontend-modern/src/components/Settings/__tests__/InfrastructureWorkspace.test.tsx", - "frontend-modern/src/components/Settings/__tests__/UnifiedAgents.test.tsx", "frontend-modern/src/components/Settings/__tests__/monitoredSystemModelGuardrails.test.ts", "frontend-modern/src/components/Settings/__tests__/settingsArchitecture.test.ts", "frontend-modern/src/utils/__tests__/frontendResourceTypeBoundaries.test.ts", @@ -2330,8 +2330,10 @@ class SubsystemLookupTest(unittest.TestCase): ], ) - def test_lookup_paths_assigns_unified_agents_to_shared_agent_lifecycle_and_api_contracts(self) -> None: - result = lookup_paths(["frontend-modern/src/components/Settings/UnifiedAgents.tsx"]) + def test_lookup_paths_assigns_infrastructure_operations_controller_to_shared_agent_lifecycle_and_api_contracts(self) -> None: + result = lookup_paths( + ["frontend-modern/src/components/Settings/InfrastructureOperationsController.tsx"] + ) self.assertEqual(result["unowned_runtime_files"], []) self.assertEqual( {item["subsystem"] for item in result["impacted_subsystems"]}, @@ -2365,8 +2367,8 @@ class SubsystemLookupTest(unittest.TestCase): "frontend-modern/src/api/__tests__/agentProfiles.test.ts", "frontend-modern/src/api/__tests__/monitoring.test.ts", "frontend-modern/src/api/__tests__/security.test.ts", + "frontend-modern/src/components/Settings/__tests__/InfrastructureOperationsController.test.tsx", "frontend-modern/src/components/Settings/__tests__/InfrastructureOperationsModel.test.tsx", - "frontend-modern/src/components/Settings/__tests__/UnifiedAgents.test.tsx", ], ) @@ -2384,8 +2386,8 @@ class SubsystemLookupTest(unittest.TestCase): [ "frontend-modern/src/api/__tests__/agentProfiles.test.ts", "frontend-modern/src/api/__tests__/monitoring.test.ts", + "frontend-modern/src/components/Settings/__tests__/InfrastructureOperationsController.test.tsx", "frontend-modern/src/components/Settings/__tests__/InfrastructureOperationsModel.test.tsx", - "frontend-modern/src/components/Settings/__tests__/UnifiedAgents.test.tsx", ], ) @@ -2420,8 +2422,8 @@ class SubsystemLookupTest(unittest.TestCase): [ "frontend-modern/src/api/__tests__/agentProfiles.test.ts", "frontend-modern/src/api/__tests__/monitoring.test.ts", + "frontend-modern/src/components/Settings/__tests__/InfrastructureOperationsController.test.tsx", "frontend-modern/src/components/Settings/__tests__/InfrastructureOperationsModel.test.tsx", - "frontend-modern/src/components/Settings/__tests__/UnifiedAgents.test.tsx", ], )