Skip to content

Latest commit

 

History

History
143 lines (121 loc) · 11.9 KB

File metadata and controls

143 lines (121 loc) · 11.9 KB

KNet Module Responsibility Index

This index links the ownership contract stored at every Gradle module root. A module's MODULE.md is the local source of truth for what that module owns, what it must not own, and its dependency direction. The target and implementation-plan documents are dated design/delivery records; current capability maturity comes from the runtime catalog and focused qualification documents. See Documentation map.

Gradle enforces four rules through verifyArchitectureFoundation:

  1. Every included module must have a root MODULE.md.
  2. Stable architecture modules may only use their approved direct project dependencies.
  3. UI production code cannot import concrete KNet runtimes/storage; the pure formatter library is the only explicit engine-package exception.
  4. Koin binding declarations may exist only in product-layer composition modules; reusable application, core, connectivity, data, engine, storage, and UI modules do not assemble the product.

Grouping projects

  • :products — executable product composition roots.
  • :connectivity — platform connectivity implementations.
  • :core — stable contracts and low-level utilities.
  • :data — platform data adapters.
  • :engine — independently testable runtime capabilities.
  • application — application-layer namespace for desktop and companion workflows.
  • :ui — presentation modules.
  • :ui:desktop — desktop presentation features.

Stable contracts and application boundary

  • :application:desktop — JVM desktop use cases and UI-neutral proxy/capture runtime contracts.
  • :application:companion — portable companion workflows and platform adapter contracts.
  • :core:companion — portable companion registration, connection, certificate, inspection, network, and failure models.
  • :core:traffic — canonical shared HTTP request, response, exchange, body-reference, and ingress models.
  • :core:connectivity — connectivity mechanism and setup contracts.
  • :core:domain — non-traffic feature domain contracts and use cases.
  • :core:http — outbound HTTP-client capability.
  • :core:identity — stable registered-device identity shared across transports.
  • :core:logger — shared logging facade.
  • :core:pairing — pairing, credential, scope, and trusted-device contracts.
  • :core:serialization — shared serialization configuration.

Runtime implementations and adapters

  • :connectivity:desktop — desktop connectivity mechanism implementations.
  • :connectivity:companion — shared bounded Ktor bootstrap/control transports, native Android/Darwin TLS enforcement, Android network/certificate/VPN lifecycle boundaries, iOS Network/Bonjour/certificate/Network Extension adapters, and authenticated mobile proxy transport boundaries.
  • :data:companion — versioned companion registration/credential adapters, invitation codec, shared control client, Android Keystore implementations, and iOS DataStore/Keychain adapters.
  • :data:desktop — desktop repository, capture-generation, registered-device, and mapping adapters.
  • :storage — durable desktop persistence, schema, and registered/trusted-device rows.
  • :engine:certificate — CA, certificate, key, and trust implementation.
  • :engine:formatter — bounded body formatting and derived views.
  • :engine:grpc — native gRPC framing, descriptors, reflection, inspection, breakpoints, and API Studio execution.
  • :engine:graphqlWebSocket — modern graphql-transport-ws envelope semantics, bounded operation correlation, presentation, breakpoints, identity, and API Studio execution.
  • :engine:sse — incremental Server-Sent Events parsing, live capture, Traffic decoding, HTTP response interpretation, and response-record breakpoints.
  • :engine:websocket — RFC 6455 handshake recognition, bounded frame/message inspection, message breakpoints, payload presentation, and API Studio execution.
  • :engine:interceptor — breakpoint interception, pre-pause capture admission, and typed mutation behavior.
  • :engine:protocol — protocol-specific parsers, asynchronous inspectors, and additive live-breakpoint extensions.
  • :engine:proxy — proxy transport, channel lifecycle, and one-shot exchange capture handoff.
  • :engine:script — sandboxed script runtimes.
  • :engine:session — canonical body-object file storage.
  • :engine:simulator — network condition simulation.

Shared presentation foundation

  • :ui:core — Compose Multiplatform design system, resources, and adaptive components for JVM desktop, Android, and iOS.

Desktop presentation

Companion presentation

  • :ui:companion:presentation — framework-neutral companion state, actions, native effects, and lifecycle-owned shared ViewModel for Android and iOS.
  • :ui:companion:sharedUi — Compose Multiplatform companion screens, responsive layout, and shared UI resources hosted by platform products using the :ui:core theme.

Composition and test support

  • :products:desktop — sole desktop Koin binding/composition root and process lifecycle owner; bindings are grouped by feature under di/.
  • :products:companion:androidApp — installable Android companion APK, manifest, thin Compose host lifecycle, Android companion composition root, VpnService, and camera/effect ownership.
  • :products:companion:iosApp — installable SwiftUI iOS shell, Kotlin/Native composition framework, AVFoundation scanner, and Apple Network Extension entry point.
  • :products:companion:iosPacketTunnel — lean Kotlin/Native packet-tunnel runtime owning validated start options, pinned desktop TLS, local SOCKS5 forwarding, NetworkExtension settings, and the hev engine lifecycle.
  • :testingServer — deterministic integration-test server.

Shared HTTP model rule

HttpRequestSnapshot, HttpResponseSnapshot, and HttpExchangeSnapshot in :core:traffic are the immutable feature-facing records. Traffic UI, API Studio execution results, breakpoints, storage adapters, exports, scripts, and remote APIs share them. Feature-specific mutable concerns remain separate:

  • API Studio uses a request draft and converts it to a snapshot for execution.
  • Breakpoints express edits as typed patches over a snapshot.
  • Traffic UI stores selection/filter/presentation state, not a duplicate exchange.
  • Body bytes are obtained through a body store using BodyRef, not embedded in every model copy.

Production consumers include paged Traffic list/detail, API Studio direct recording and replay preparation, breakpoints, semantic inspectors, storage, and paired ingress. :data:desktop maps current-schema Room records to canonical exchanges and registered identities, returns bounded previews through :application:desktop, and adapts concrete runtimes to application contracts. Breakpoint persistence stores a generic protocol ID/payload envelope and never branches on GraphQL or future formats. The canonical writer/body/query stack is the sole traffic authority. Ordinary proxy traffic streams; Traffic Start/Stop attaches or detaches a versioned capture target while the listener and Wi-Fi forwarding remain stable. Detached writers drain through one bounded owner. Enabled request or response breakpoints request bounded aggregation, but capture pause bypasses and releases breakpoint decisions without changing that pipeline shape.

Current target ownership

The proxy defaults to loopback and strict upstream TLS, enforces timeout/connection policy, orders HTTP/1 exchanges, multiplexes isolated experimental HTTP/2 streams, streams both directions, and owns deterministic startup/shutdown. Application services independently own proxy lifecycle, capture attachment, breakpoints, connectivity, pairing, certificates, inspection, script execution, traffic paging, clear, and recording. The dedicated setup listeners, authenticated companion-ready gateway, and automatically managed open-client Wi-Fi gateway live in :connectivity:desktop; none is inserted into the proxy pipeline. HTTP/2, native gRPC, and HTTP/1.1 WebSocket capture, modern graphql-transport-ws semantic inspection/breakpoints/API Studio, and native gRPC remain EXPERIMENTAL pending external platform/device and release-soak qualification. Legacy graphql-ws, HTTP/3, WebSocket over HTTP/2, and relay remain unavailable. Android Companion and Android VPN inspection are EXPERIMENTAL after a manual physical-device end-to-end smoke test. The iOS/iPadOS companion app is EXPERIMENTAL, while physical iOS packet-tunnel inspection remains UNAVAILABLE pending entitlement-signed device qualification. ADB reverse code remains an isolated desktop connectivity adapter; it is not presented as a supported KNet Companion traffic path in the public product documentation.