feat(FN-3505): add node onboarding mapping flow with asset-gated bundling

- Add onboarding project-mapping API contracts and dashboard UI wiring in AddNodeModal/NodesView
- Persist node-to-project mappings with rollback-safe failure handling and expanded hook/API test coverage
- Document node onboarding mapping behavior in architecture and multi-project docs
- Add tsup bundle asset gates for openclaw bridge and droid runtime, with changesets and bundle output tests

Fusion-Task-Id: FN-3505
This commit is contained in:
Fusion
2026-05-07 19:29:52 -07:00
committed by gsxdsm
parent 9743dab1d9
commit faaa99e768
13 changed files with 453 additions and 25 deletions

View File

@@ -32,7 +32,7 @@ export function NodesView({ addToast, onClose }: NodesViewProps) {
patchDockerConfig,
fetchDockerDiff,
} = useNodes();
const { projects } = useProjects();
const { projects, refresh: refreshProjects } = useProjects();
const { syncStatusMap, pushSettings, pullSettings, syncAuth, trackNode, getAuthSyncState, getAuthProviders } = useNodeSettingsSync();
const {
dockerNodes,
@@ -74,7 +74,8 @@ export function NodesView({ addToast, onClose }: NodesViewProps) {
const handleRegister = useCallback(async (input: AddNodeInput) => {
await register(input);
}, [register]);
await refreshProjects();
}, [refreshProjects, register]);
const handleCreateDockerNode = useCallback(async (input: ManagedDockerNodeInput) => {
try {
@@ -249,6 +250,7 @@ export function NodesView({ addToast, onClose }: NodesViewProps) {
onClose={() => setAddModalOpen(false)}
onSubmit={handleRegister}
addToast={addToast}
projects={projects}
/>
<DockerNodeOnboardingModal