M1 (gateway core loop / text round-trip): - WS server (ws_server.py): bind, hello auth (constant-time), hello.ack, heartbeat, connection registry - pairing.py: token generation, pairing store, QR payload - adapter.py: send() -> message frame; inbound message.send -> MessageEvent -> handle_message - app: Connect screen, GatewayClient (connect + reconnect), ChatScreen send/render, SecureStore (Android/Desktop) - tests/ws_probe.py: probe harness driving a real turn M2 (streaming + reasoning + tools + commentary): - protocol.py: M2 frame types (message.start/update/stop, tool.start/progress/end, commentary) - adapter.py: per-chat turn-state machine; classify outbound into frames; _split_reasoning; tool-line parsing - reasoning in streaming: capture via on_stream_delta hook (kind=reasoning, gated by plugins.stream_reasoning_deltas) with a FIFO barrier, attach to message.stop - app: live streaming bubble, ReasoningBlock (collapse + copy), ToolCard (Everything/Truncated/Nothing), dimmed commentary, typing - docs/14-milestones.md: M1/M2 marked done; reasoning note corrected
43 lines
1.4 KiB
Kotlin
43 lines
1.4 KiB
Kotlin
plugins {
|
|
kotlin("multiplatform")
|
|
kotlin("plugin.serialization")
|
|
id("com.android.library")
|
|
id("org.jetbrains.compose")
|
|
id("org.jetbrains.kotlin.plugin.compose")
|
|
}
|
|
|
|
val composeVersion = "1.7.3"
|
|
val coroutinesVersion = "1.9.0"
|
|
val serializationVersion = "1.7.3"
|
|
val okhttpVersion = "4.12.0"
|
|
|
|
kotlin {
|
|
androidTarget()
|
|
jvm("desktop")
|
|
|
|
sourceSets {
|
|
commonMain.dependencies {
|
|
implementation("org.jetbrains.compose.runtime:runtime:$composeVersion")
|
|
implementation("org.jetbrains.compose.foundation:foundation:$composeVersion")
|
|
implementation("org.jetbrains.compose.material3:material3:$composeVersion")
|
|
implementation("org.jetbrains.compose.ui:ui:$composeVersion")
|
|
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:$coroutinesVersion")
|
|
implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:$serializationVersion")
|
|
// OkHttp is a JVM library; both targets here are JVM-based
|
|
// (androidTarget + jvm("desktop")), so it resolves on both.
|
|
implementation("com.squareup.okhttp3:okhttp:$okhttpVersion")
|
|
}
|
|
}
|
|
}
|
|
|
|
android {
|
|
namespace = "iris.shared"
|
|
compileSdk = 34
|
|
defaultConfig {
|
|
minSdk = 29
|
|
}
|
|
compileOptions {
|
|
sourceCompatibility = JavaVersion.VERSION_17
|
|
targetCompatibility = JavaVersion.VERSION_17
|
|
}
|
|
} |