gadget/packages/api/src/index.ts
Rob Colbert e155a7ffcf Phase 2: SubProcess observability in DroneManager and DroneInspector
Adds real-time subprocess monitoring to the IDE via the callback-chain and
subscribe/broadcast socket patterns:

Shared types (packages/api):
- New subprocess.ts message types: SubProcessStat, RequestProcessStatsMessage,
  SubscribeDroneMessage, UnsubscribeDroneMessage
- New socket events in socket.ts: requestProcessStats, subscribeDrone,
  unsubscribeDrone (ClientToServer); drone:log, drone:status (ServerToClient)

Drone (gadget-drone):
- onRequestProcessStats handler calls SubProcessService.ps() + summarize(),
  returns typed SubProcessStat[] with status detection (exitCode/killed)

Backend routing (gadget-code):
- SocketService: getDroneSessionByRegistrationId(), droneMonitorIndex map,
  addDroneMonitor()/removeDroneMonitor()/broadcastToMonitors()
- CodeSession: requestProcessStats proxy, subscribeDrone/unsubscribeDrone
- DroneSession: broadcast drone:log + drone:status to monitor subscribers
  in addition to existing chat-session routing

Frontend socket layer:
- SocketClient: requestProcessStats(), subscribeDrone(), unsubscribeDrone()
- drone:log + drone:status events forwarded to event bus

Frontend components:
- LogRenderer — reusable log rendering core extracted from LogPanel
- SubProcessTable — btop-style process table with status dots
- DroneMonitorGauge — canvas oscilloscope waveform (studio-equipment aesthetic)
- DroneMonitor — 3-gauge container (CPU/red, NETWORK/cyan, FILE I/O/green)

Frontend pages:
- DroneManager: live log streaming, SubProcessTable, DroneMonitor gauges,
  1-second polling, auto-scroll log with pause-on-scroll-up
- Home/DroneInspector: process count summary, mini LogRenderer, navigate-to-manager link

Documentation:
- Updated gadget-drone/docs/subprocess.md Phase 2 section
- Updated gadget-code/docs/ui-design-guide.md Phase 2 section
- Updated docs/socket-protocol.md with new events, sequences, and patterns
2026-05-14 13:52:59 -04:00

43 lines
1.1 KiB
TypeScript

// src/index.ts
// Copyright (C) 2026 Robert Colbert <rob.colbert@openplatform.us>
// All Rights Reserved
export * from "./lib/gadget-id.ts";
export * from "./lib/component.ts";
export * from "./lib/log.ts";
export * from "./lib/log-transport.ts";
export * from "./lib/log-transport-console.ts";
export * from "./lib/log-transport-file.ts";
export * from "./lib/log-transport-socket.ts";
export * from "./lib/log-file.ts";
/*
* Data Model Interfaces
*/
export * from "./interfaces/ai-provider.ts";
export * from "./interfaces/chat-session.ts";
export * from "./interfaces/chat-turn.ts";
export * from "./interfaces/drone-monitor.ts";
export * from "./interfaces/drone-registration.ts";
export * from "./interfaces/ide-session.ts";
export * from "./interfaces/project.ts";
export * from "./interfaces/user.ts";
export * from "./interfaces/workspace.ts";
/*
* Socket.IO Interfaces
*/
export * from "./messages/ide.ts";
export * from "./messages/drone.ts";
export * from "./messages/subprocess.ts";
export * from "./messages/web.ts";
export * from "./messages/socket.ts";
/*
* Utilities - re-export types for cross-package usage
*/
export { Types } from "mongoose";