CxWebApp/swift-app/Sources/CxWebAppMac/CxLLMSidebar.swift
cx-git-agent b55680ffbf
Some checks are pending
build-and-push / image (push) Waiting to run
feat(swift-app): rebuild share/cxai-mac as native CxAI ADE 1.2.0
- Package.swift: add CxARA (via CxLLM-SDK) and CxDrive (via new CxLLM-Drive
  package dep) so the native shell links every mac-app-shaped module
  exported by the CxLLM-SDK and CxLLM-Drive families.
- Sidebar: surface .repair (CxARA) and .drive (CxDrive) alongside the
  existing Web/Chat/Agent/MCP/Models/Code/AWS/Git/LangBridge/Telemetry
  tabs, with matching SF Symbols.
- scripts/build-mac-bundle.sh: end-to-end pipeline (release build, .app
  bundle with rebranded Info.plist studio.cxai.ade 1.2.0, ad-hoc codesign,
  tar.gz, hdiutil UDZO dmg, publish to share/cxai-mac, write
  build-info.json with sha256/sizes/modules/git sha).
- Makefile targets: swift-app 'make rebuild-mac', CxWebApp root
  'make rebuild-mac'.
- share/cxai-mac: replace Tauri 0- share/cxai-mac: replace Tauri 0- share/cxai-mac: replace Tauri 0- share/cxai-mac: replace Tauri 0- share/cxai-mac: replace Tauri 0- share/cxai-mac: replace Tauri 0- share/cxai-mac: replace Tauri 0- share/cxai-mac: replace Tauri 0- share/cxai-mac: replace Tauri 0- dge- share/cxai-mac: replace Tauri 0- share/cxai-mac: replace Tauri 0- share/AR- share/cxai-mac: replace Tauri 0- share/cxai-mac: replace Ter refere- share/cxai-mac: replace Tauri 0- origin main 2>&1 | tail -5
2026-05-17 16:26:39 -05:00

98 lines
3.7 KiB
Swift

// CxLLMSidebar sidebar navigation for the CxLLM module surface, alongside the WebView.
// Phase 4 wiring: each section imports its CxLLM-SDK module and renders a status card.
// Real per-module UI lands in Phase 3.
import SwiftUI
import CxCode
import CxAWS
import CxGit
import CxAgent
import CxMCP
import CxModels
import CxChat
import CxInstrument
import CxLangBridge
import CxARA
import CxDrive
enum SidebarItem: String, Identifiable, CaseIterable, Hashable {
case web = "Web"
case chat = "Chat"
case agent = "Agent"
case mcp = "MCP"
case models = "Models"
case code = "Code"
case aws = "AWS"
case drive = "Drive"
case git = "Git"
case bridge = "LangBridge"
case repair = "Repair"
case telemetry = "Telemetry"
var id: String { rawValue }
var systemImage: String {
switch self {
case .web: return "globe"
case .chat: return "bubble.left.and.bubble.right"
case .agent: return "person.crop.square.filled.and.at.rectangle"
case .mcp: return "antenna.radiowaves.left.and.right"
case .models: return "cube.transparent"
case .code: return "chevron.left.forwardslash.chevron.right"
case .aws: return "cloud"
case .drive: return "externaldrive"
case .git: return "arrow.triangle.branch"
case .bridge: return "link"
case .repair: return "wrench.and.screwdriver"
case .telemetry: return "waveform.path.ecg"
}
}
}
struct CxLLMSectionView: View {
let item: SidebarItem
var body: some View {
VStack(alignment: .leading, spacing: 16) {
Label(item.rawValue, systemImage: item.systemImage)
.font(.title)
Divider()
switch item {
case .chat: moduleCard(name: "CxChat", version: "seed")
case .agent: moduleCard(name: "CxAgent", version: "seed")
case .mcp: moduleCard(name: "CxMCP", version: "seed")
case .models: moduleCard(name: "CxModels", version: "seed")
case .code: moduleCard(name: "CxCode", version: "seed")
case .aws: moduleCard(name: "CxAWS", version: "seed")
case .drive: moduleCard(name: "CxDrive", version: "seed")
case .git: moduleCard(name: "CxGit", version: "seed")
case .bridge: moduleCard(name: "CxLangBridge", version: "seed")
case .repair: moduleCard(name: "CxARA", version: "seed")
case .telemetry: moduleCard(name: "CxInstrument", version: "seed")
case .web: EmptyView()
}
Spacer()
}
.padding(24)
.frame(maxWidth: .infinity, maxHeight: .infinity, alignment: .topLeading)
}
@ViewBuilder
private func moduleCard(name: String, version: String) -> some View {
VStack(alignment: .leading, spacing: 8) {
Text(name).font(.headline)
Text("Imported from CxLLM-SDK. Phase 3 will replace this card with the real UI surface.")
.font(.callout).foregroundStyle(.secondary)
HStack(spacing: 12) {
Text("module").font(.caption2).foregroundStyle(.tertiary)
Text(name).font(.caption.monospaced())
Text("").font(.caption2).foregroundStyle(.tertiary)
Text("v\(version)").font(.caption.monospaced())
}
.padding(.top, 4)
}
.padding(16)
.background(.quaternary.opacity(0.4), in: RoundedRectangle(cornerRadius: 10))
}
}