Repository: cashapp/redwood
Pull request #612 (2022-12-09 15:20:27)

Rename flexbox artifact to match package name


Patch:
diff --git a/redwood-cli/build.gradle b/redwood-cli/build.gradle
index bf43020c7..15e69e217 100644
--- a/redwood-cli/build.gradle
+++ b/redwood-cli/build.gradle
@@ -10,7 +10,7 @@ application {
 }
 
 dependencies {
-  implementation projects.redwoodSchema
+  implementation projects.redwoodToolingSchema
   implementation libs.kotlinPoet
   implementation libs.lint.core
   implementation libs.clikt
diff --git a/redwood-cli/src/main/kotlin/app/cash/redwood/generator/GenerateCommand.kt b/redwood-cli/src/main/kotlin/app/cash/redwood/generator/GenerateCommand.kt
index ab0f0daad..265f85db8 100644
--- a/redwood-cli/src/main/kotlin/app/cash/redwood/generator/GenerateCommand.kt
+++ b/redwood-cli/src/main/kotlin/app/cash/redwood/generator/GenerateCommand.kt
@@ -20,7 +20,7 @@ import app.cash.redwood.generator.GenerateCommand.Type.ComposeProtocol
 import app.cash.redwood.generator.GenerateCommand.Type.LayoutModifiers
 import app.cash.redwood.generator.GenerateCommand.Type.Widget
 import app.cash.redwood.generator.GenerateCommand.Type.WidgetProtocol
-import app.cash.redwood.schema.parser.parseSchema
+import app.cash.redwood.tooling.schema.parseSchema
 import com.github.ajalt.clikt.core.CliktCommand
 import com.github.ajalt.clikt.parameters.arguments.argument
 import com.github.ajalt.clikt.parameters.arguments.help
diff --git a/redwood-cli/src/main/kotlin/app/cash/redwood/generator/composeGeneration.kt b/redwood-cli/src/main/kotlin/app/cash/redwood/generator/composeGeneration.kt
index 258bef1f8..ae9b26ca0 100644
--- a/redwood-cli/src/main/kotlin/app/cash/redwood/generator/composeGeneration.kt
+++ b/redwood-cli/src/main/kotlin/app/cash/redwood/generator/composeGeneration.kt
@@ -15,13 +15,13 @@
  */
 package app.cash.redwood.generator
 
-import app.cash.redwood.schema.parser.LayoutModifier
-import app.cash.redwood.schema.parser.ProtocolWidget.ProtocolTrait
-import app.cash.redwood.schema.parser.Schema
-import app.cash.redwood.schema.parser.Widget
-import app.cash.redwood.schema.parser.Widget.Children
-import app.cash.redwood.schema.parser.Widget.Event
-import app.cash.redwood.schema.parser.Widget.Property
+import app.cash.redwood.tooling.schema.LayoutModifier
+import app.cash.redwood.tooling.schema.ProtocolWidget.ProtocolTrait
+import app.cash.redwood.tooling.schema.Schema
+import app.cash.redwood.tooling.schema.Widget
+import app.cash.redwood.tooling.schema.Widget.Children
+import app.cash.redwood.tooling.schema.Widget.Event
+import app.cash.redwood.tooling.schema.Widget.Property
 import com.squareup.kotlinpoet.AnnotationSpec
 import com.squareup.kotlinpoet.ClassName
 import com.squareup.kotlinpoet.CodeBlock
diff --git a/redwood-cli/src/main/kotlin/app/cash/redwood/generator/diffConsumingGeneration.kt b/redwood-cli/src/main/kotlin/app/cash/redwood/generator/diffConsumingGeneration.kt
index 051338598..e2cd037f7 100644
--- a/redwood-cli/src/main/kotlin/app/cash/redwood/generator/diffConsumingGeneration.kt
+++ b/redwood-cli/src/main/kotlin/app/cash/redwood/generator/diffConsumingGeneration.kt
@@ -15,11 +15,11 @@
  */
 package app.cash.redwood.generator
 
-import app.cash.redwood.schema.parser.ProtocolSchema
-import app.cash.redwood.schema.parser.ProtocolWidget
-import app.cash.redwood.schema.parser.ProtocolWidget.ProtocolChildren
-import app.cash.redwood.schema.parser.ProtocolWidget.ProtocolEvent
-import app.cash.redwood.schema.parser.ProtocolWidget.ProtocolProperty
+import app.cash.redwood.tooling.schema.ProtocolSchema
+import app.cash.redwood.tooling.schema.ProtocolWidget
+import app.cash.redwood.tooling.schema.ProtocolWidget.ProtocolChildren
+import app.cash.redwood.tooling.schema.ProtocolWidget.ProtocolEvent
+import app.cash.redwood.tooling.schema.ProtocolWidget.ProtocolProperty
 import com.squareup.kotlinpoet.AnnotationSpec
 import com.squareup.kotlinpoet.ClassName
 import com.squareup.kotlinpoet.FileSpec
diff --git a/redwood-cli/src/main/kotlin/app/cash/redwood/generator/diffProducingGeneration.kt b/redwood-cli/src/main/kotlin/app/cash/redwood/generator/diffProducingGeneration.kt
index 46dd57319..f38953fd7 100644
--- a/redwood-cli/src/main/kotlin/app/cash/redwood/generator/diffProducingGeneration.kt
+++ b/redwood-cli/src/main/kotlin/app/cash/redwood/generator/diffProducingGeneration.kt
@@ -15,11 +15,11 @@
  */
 package app.cash.redwood.generator
 
-import app.cash.redwood.schema.parser.ProtocolSchema
-import app.cash.redwood.schema.parser.ProtocolWidget
-import app.cash.redwood.schema.parser.ProtocolWidget.ProtocolChildren
-import app.cash.redwood.schema.parser.ProtocolWidget.ProtocolEvent
-import app.cash.redwood.schema.parser.ProtocolWidget.ProtocolProperty
+import app.cash.redwood.tooling.schema.ProtocolSchema
+import app.cash.redwood.tooling.schema.ProtocolWidget
+import app.cash.redwood.tooling.schema.ProtocolWidget.ProtocolChildren
+import app.cash.redwood.tooling.schema.ProtocolWidget.ProtocolEvent
+import app.cash.redwood.tooling.schema.ProtocolWidget.ProtocolProperty
 import com.squareup.kotlinpoet.AnnotationSpec
 import com.squareup.kotlinpoet.CodeBlock
 import com.squareup.kotlinpoet.FileSpec
diff --git a/redwood-cli/src/main/kotlin/app/cash/redwood/generator/layoutModifierGeneration.kt b/redwood-cli/src/main/kotlin/app/cash/redwood/generator/layoutModifierGeneration.kt
index 14751f65c..928142ad0 100644
--- a/redwood-cli/src/main/kotlin/app/cash/redwood/generator/layoutModifierGeneration.kt
+++ b/redwood-cli/src/main/kotlin/app/cash/redwood/generator/layoutModifierGeneration.kt
@@ -15,8 +15,8 @@
  */
 package app.cash.redwood.generator
 
-import app.cash.redwood.schema.parser.LayoutModifier
-import app.cash.redwood.schema.parser.Schema
+import app.cash.redwood.tooling.schema.LayoutModifier
+import app.cash.redwood.tooling.schema.Schema
 import com.squareup.kotlinpoet.FileSpec
 import com.squareup.kotlinpoet.TypeSpec
 import com.squareup.kotlinpoet.asTypeName
diff --git a/redwood-cli/src/main/kotlin/app/cash/redwood/generator/sharedHelpers.kt b/redwood-cli/src/main/kotlin/app/cash/redwood/generator/sharedHelpers.kt
index 02286d027..5e09b0a06 100644
--- a/redwood-cli/src/main/kotlin/app/cash/redwood/generator/sharedHelpers.kt
+++ b/redwood-cli/src/main/kotlin/app/cash/redwood/generator/sharedHelpers.kt
@@ -15,12 +15,12 @@
  */
 package app.cash.redwood.generator
 
-import app.cash.redwood.schema.parser.LayoutModifier
-import app.cash.redwood.schema.parser.ProtocolLayoutModifier
-import app.cash.redwood.schema.parser.ProtocolSchema
-import app.cash.redwood.schema.parser.Schema
-import app.cash.redwood.schema.parser.Widget
-import app.cash.redwood.schema.parser.Widget.Event
+import app.cash.redwood.tooling.schema.LayoutModifier
+import app.cash.redwood.tooling.schema.ProtocolLayoutModifier
+import app.cash.redwood.tooling.schema.ProtocolSchema
+import app.cash.redwood.tooling.schema.Schema
+import app.cash.redwood.tooling.schema.Widget
+import app.cash.redwood.tooling.schema.Widget.Event
 import com.squareup.kotlinpoet.ANY
 import com.squareup.kotlinpoet.BOOLEAN
 import com.squareup.kotlinpoet.ClassName
diff --git a/redwood-cli/src/main/kotlin/app/cash/redwood/generator/widgetGeneration.kt b/redwood-cli/src/main/kotlin/app/cash/redwood/generator/widgetGeneration.kt
index 06297e260..05fcff15b 100644
--- a/redwood-cli/src/main/kotlin/app/cash/redwood/generator/widgetGeneration.kt
+++ b/redwood-cli/src/main/kotlin/app/cash/redwood/generator/widgetGeneration.kt
@@ -15,13 +15,13 @@
  */
 package app.cash.redwood.generator
 
-import app.cash.redwood.schema.parser.ProtocolWidget
-import app.cash.redwood.schema.parser.ProtocolWidget.ProtocolTrait
-import app.cash.redwood.schema.parser.Schema
-import app.cash.redwood.schema.parser.Widget
-import app.cash.redwood.schema.parser.Widget.Children
-import app.cash.redwood.schema.parser.Widget.Event
-import app.cash.redwood.schema.parser.Widget.Property
+import app.cash.redwood.tooling.schema.ProtocolWidget
+import app.cash.redwood.tooling.schema.ProtocolWidget.ProtocolTrait
+import app.cash.redwood.tooling.schema.Schema
+import app.cash.redwood.tooling.schema.Widget
+import app.cash.redwood.tooling.schema.Widget.Children
+import app.cash.redwood.tooling.schema.Widget.Event
+import app.cash.redwood.tooling.schema.Widget.Property
 import com.squareup.kotlinpoet.FileSpec
 import com.squareup.kotlinpoet.FunSpec
 import com.squareup.kotlinpoet.KModifier.ABSTRACT
diff --git a/redwood-flex-container/gradle.properties b/redwood-flex-container/gradle.properties
deleted file mode 100644
index 624d80441..000000000
--- a/redwood-flex-container/gradle.properties
+++ /dev/null
@@ -1,2 +0,0 @@
-POM_ARTIFACT_ID=redwood-flex-container
-POM_NAME=Redwood Flex Container
diff --git a/redwood-flex-container/build.gradle b/redwood-flexbox/build.gradle
similarity index 100%
rename from redwood-flex-container/build.gradle
rename to redwood-flexbox/build.gradle
diff --git a/redwood-flexbox/gradle.properties b/redwood-flexbox/gradle.properties
new file mode 100644
index 000000000..3bd734e89
--- /dev/null
+++ b/redwood-flexbox/gradle.properties
@@ -0,0 +1,2 @@
+POM_ARTIFACT_ID=redwood-flexbox
+POM_NAME=Redwood Flex Container
diff --git a/redwood-flex-container/src/commonMain/kotlin/app/cash/redwood/flexbox/FlexContainer.kt b/redwood-flexbox/src/commonMain/kotlin/app/cash/redwood/flexbox/FlexContainer.kt
similarity index 100%
rename from redwood-flex-container/src/commonMain/kotlin/app/cash/redwood/flexbox/FlexContainer.kt
rename to redwood-flexbox/src/commonMain/kotlin/app/cash/redwood/flexbox/FlexContainer.kt
diff --git a/redwood-flex-container/src/commonMain/kotlin/app/cash/redwood/flexbox/FlexItem.kt b/redwood-flexbox/src/commonMain/kotlin/app/cash/redwood/flexbox/FlexItem.kt
similarity index 100%
rename from redwood-flex-container/src/commonMain/kotlin/app/cash/redwood/flexbox/FlexItem.kt
rename to redwood-flexbox/src/commonMain/kotlin/app/cash/redwood/flexbox/FlexItem.kt
diff --git a/redwood-flex-container/src/commonMain/kotlin/app/cash/redwood/flexbox/FlexLine.kt b/redwood-flexbox/src/commonMain/kotlin/app/cash/redwood/flexbox/FlexLine.kt
similarity index 100%
rename from redwood-flex-container/src/commonMain/kotlin/app/cash/redwood/flexbox/FlexLine.kt
rename to redwood-flexbox/src/commonMain/kotlin/app/cash/redwood/flexbox/FlexLine.kt
diff --git a/redwood-flex-container/src/commonMain/kotlin/app/cash/redwood/flexbox/Measurable.kt b/redwood-flexbox/src/commonMain/kotlin/app/cash/redwood/flexbox/Measurable.kt
similarity index 100%
rename from redwood-flex-container/src/commonMain/kotlin/app/cash/redwood/flexbox/Measurable.kt
rename to redwood-flexbox/src/commonMain/kotlin/app/cash/redwood/flexbox/Measurable.kt
diff --git a/redwood-flex-container/src/commonMain/kotlin/app/cash/redwood/flexbox/Orientation.kt b/redwood-flexbox/src/commonMain/kotlin/app/cash/redwood/flexbox/Orientation.kt
similarity index 100%
rename from redwood-flex-container/src/commonMain/kotlin/app/cash/redwood/flexbox/Orientation.kt
rename to redwood-flexbox/src/commonMain/kotlin/app/cash/redwood/flexbox/Orientation.kt
diff --git a/redwood-flex-container/src/commonMain/kotlin/app/cash/redwood/flexbox/properties.kt b/redwood-flexbox/src/commonMain/kotlin/app/cash/redwood/flexbox/properties.kt
similarity index 100%
rename from redwood-flex-container/src/commonMain/kotlin/app/cash/redwood/flexbox/properties.kt
rename to redwood-flexbox/src/commonMain/kotlin/app/cash/redwood/flexbox/properties.kt
diff --git a/redwood-flex-container/src/commonMain/kotlin/app/cash/redwood/flexbox/utils.kt b/redwood-flexbox/src/commonMain/kotlin/app/cash/redwood/flexbox/utils.kt
similarity index 100%
rename from redwood-flex-container/src/commonMain/kotlin/app/cash/redwood/flexbox/utils.kt
rename to redwood-flexbox/src/commonMain/kotlin/app/cash/redwood/flexbox/utils.kt
diff --git a/redwood-flex-container/src/commonTest/kotlin/app/cash/redwood/flexbox/FlexContainerStringCanvasTest.kt b/redwood-flexbox/src/commonTest/kotlin/app/cash/redwood/flexbox/FlexContainerStringCanvasTest.kt
similarity index 100%
rename from redwood-flex-container/src/commonTest/kotlin/app/cash/redwood/flexbox/FlexContainerStringCanvasTest.kt
rename to redwood-flexbox/src/commonTest/kotlin/app/cash/redwood/flexbox/FlexContainerStringCanvasTest.kt
diff --git a/redwood-flex-container/src/commonTest/kotlin/app/cash/redwood/flexbox/FlexContainerTest.kt b/redwood-flexbox/src/commonTest/kotlin/app/cash/redwood/flexbox/FlexContainerTest.kt
similarity index 100%
rename from redwood-flex-container/src/commonTest/kotlin/app/cash/redwood/flexbox/FlexContainerTest.kt
rename to redwood-flexbox/src/commonTest/kotlin/app/cash/redwood/flexbox/FlexContainerTest.kt
diff --git a/redwood-flex-container/src/commonTest/kotlin/app/cash/redwood/flexbox/StringCanvas.kt b/redwood-flexbox/src/commonTest/kotlin/app/cash/redwood/flexbox/StringCanvas.kt
similarity index 100%
rename from redwood-flex-container/src/commonTest/kotlin/app/cash/redwood/flexbox/StringCanvas.kt
rename to redwood-flexbox/src/commonTest/kotlin/app/cash/redwood/flexbox/StringCanvas.kt
diff --git a/redwood-flex-container/src/commonTest/kotlin/app/cash/redwood/flexbox/StringWidget.kt b/redwood-flexbox/src/commonTest/kotlin/app/cash/redwood/flexbox/StringWidget.kt
similarity index 100%
rename from redwood-flex-container/src/commonTest/kotlin/app/cash/redwood/flexbox/StringWidget.kt
rename to redwood-flexbox/src/commonTest/kotlin/app/cash/redwood/flexbox/StringWidget.kt
diff --git a/redwood-gradle-plugin/build.gradle b/redwood-gradle-plugin/build.gradle
index 39766780b..2f2516e1f 100644
--- a/redwood-gradle-plugin/build.gradle
+++ b/redwood-gradle-plugin/build.gradle
@@ -73,13 +73,13 @@ test {
   dependsOn(':redwood-cli:publishAllPublicationsToLocalMavenRepository')
   dependsOn(':redwood-compose:publishAllPublicationsToLocalMavenRepository')
   dependsOn(':redwood-gradle-plugin:publishAllPublicationsToLocalMavenRepository')
-  dependsOn(':redwood-flex-container:publishAllPublicationsToLocalMavenRepository')
+  dependsOn(':redwood-flexbox:publishAllPublicationsToLocalMavenRepository')
   dependsOn(':redwood-protocol:publishAllPublicationsToLocalMavenRepository')
   dependsOn(':redwood-protocol-compose:publishAllPublicationsToLocalMavenRepository')
   dependsOn(':redwood-protocol-widget:publishAllPublicationsToLocalMavenRepository')
   dependsOn(':redwood-runtime:publishAllPublicationsToLocalMavenRepository')
   dependsOn(':redwood-schema:publishAllPublicationsToLocalMavenRepository')
-  dependsOn(':redwood-schema-annotations:publishAllPublicationsToLocalMavenRepository')
+  dependsOn(':redwood-tooling-schema:publishAllPublicationsToLocalMavenRepository')
   dependsOn(':redwood-widget:publishAllPublicationsToLocalMavenRepository')
 
   inputs.dir(project.file('src/test/fixture'))
diff --git a/redwood-layout-composeui/build.gradle b/redwood-layout-composeui/build.gradle
index 958a0e40c..9a387d8c1 100644
--- a/redwood-layout-composeui/build.gradle
+++ b/redwood-layout-composeui/build.gradle
@@ -9,7 +9,7 @@ apply plugin: 'org.jetbrains.dokka' // Must be applied here for publish plugin.
 
 dependencies {
   api projects.redwoodLayoutSchema.widget
-  implementation projects.redwoodFlexContainer
+  implementation projects.redwoodFlexbox
   implementation projects.redwoodWidgetCompose
   implementation libs.androidx.core
   implementation libs.androidx.compose.foundation
diff --git a/redwood-layout-schema/build.gradle b/redwood-layout-schema/build.gradle
index 1f32aacf2..b79fbea88 100644
--- a/redwood-layout-schema/build.gradle
+++ b/redwood-layout-schema/build.gradle
@@ -3,6 +3,6 @@ apply plugin: 'com.vanniktech.maven.publish'
 apply plugin: 'org.jetbrains.dokka' // Must be applied here for publish plugin.
 
 dependencies {
-  api projects.redwoodSchemaAnnotations
+  api projects.redwoodSchema
   api projects.redwoodLayoutApi
 }
diff --git a/redwood-layout-uiview/build.gradle b/redwood-layout-uiview/build.gradle
index df92d1382..b6a95eb27 100644
--- a/redwood-layout-uiview/build.gradle
+++ b/redwood-layout-uiview/build.gradle
@@ -14,7 +14,7 @@ kotlin {
       kotlin.srcDir(FlexboxHelpers.get(tasks, 'app.cash.redwood.layout.uiview'))
       dependencies {
         api projects.redwoodLayoutSchema.widget
-        implementation projects.redwoodFlexContainer
+        implementation projects.redwoodFlexbox
         implementation projects.redwoodWidgetCompose
       }
     }
diff --git a/redwood-layout-view/build.gradle b/redwood-layout-view/build.gradle
index 77650d18a..c548da5cd 100644
--- a/redwood-layout-view/build.gradle
+++ b/redwood-layout-view/build.gradle
@@ -9,7 +9,7 @@ apply plugin: 'org.jetbrains.dokka' // Must be applied here for publish plugin.
 
 dependencies {
   api projects.redwoodLayoutSchema.widget
-  implementation projects.redwoodFlexContainer
+  implementation projects.redwoodFlexbox
   implementation libs.androidx.core
   testImplementation projects.redwoodLayoutSharedTest
 }
diff --git a/redwood-schema-annotations/build.gradle b/redwood-schema-annotations/build.gradle
deleted file mode 100644
index 3acdc254c..000000000
--- a/redwood-schema-annotations/build.gradle
+++ /dev/null
@@ -1,7 +0,0 @@
-apply plugin: 'org.jetbrains.kotlin.multiplatform'
-apply plugin: 'com.vanniktech.maven.publish'
-apply plugin: 'org.jetbrains.dokka' // Must be applied here for publish plugin.
-
-kotlin {
-  apply from: "${rootDir}/addAllTargets.gradle"
-}
diff --git a/redwood-schema-annotations/gradle.properties b/redwood-schema-annotations/gradle.properties
deleted file mode 100644
index 04068eca6..000000000
--- a/redwood-schema-annotations/gradle.properties
+++ /dev/null
@@ -1,2 +0,0 @@
-POM_ARTIFACT_ID=redwood-schema-annotations
-POM_NAME=Redwood schema annotations
diff --git a/redwood-schema/build.gradle b/redwood-schema/build.gradle
index 6457dc851..3acdc254c 100644
--- a/redwood-schema/build.gradle
+++ b/redwood-schema/build.gradle
@@ -1,11 +1,7 @@
-apply plugin: 'java-library'
-apply plugin: 'org.jetbrains.kotlin.jvm'
+apply plugin: 'org.jetbrains.kotlin.multiplatform'
 apply plugin: 'com.vanniktech.maven.publish'
+apply plugin: 'org.jetbrains.dokka' // Must be applied here for publish plugin.
 
-dependencies {
-  api projects.redwoodSchemaAnnotations
-  api libs.kotlin.reflect
-
-  testImplementation libs.junit
-  testImplementation libs.truth
+kotlin {
+  apply from: "${rootDir}/addAllTargets.gradle"
 }
diff --git a/redwood-schema/gradle.properties b/redwood-schema/gradle.properties
index d9def2d25..aafbbb5bd 100644
--- a/redwood-schema/gradle.properties
+++ b/redwood-schema/gradle.properties
@@ -1,2 +1,2 @@
 POM_ARTIFACT_ID=redwood-schema
-POM_NAME=Redwood schema
+POM_NAME=Redwood schema annotations
diff --git a/redwood-schema-annotations/src/commonMain/kotlin/app/cash/redwood/schema/annotations.kt b/redwood-schema/src/commonMain/kotlin/app/cash/redwood/schema/annotations.kt
similarity index 100%
rename from redwood-schema-annotations/src/commonMain/kotlin/app/cash/redwood/schema/annotations.kt
rename to redwood-schema/src/commonMain/kotlin/app/cash/redwood/schema/annotations.kt
diff --git a/redwood-tooling-schema/build.gradle b/redwood-tooling-schema/build.gradle
new file mode 100644
index 000000000..00b470b39
--- /dev/null
+++ b/redwood-tooling-schema/build.gradle
@@ -0,0 +1,11 @@
+apply plugin: 'java-library'
+apply plugin: 'org.jetbrains.kotlin.jvm'
+apply plugin: 'com.vanniktech.maven.publish'
+
+dependencies {
+  api projects.redwoodSchema
+  api libs.kotlin.reflect
+
+  testImplementation libs.junit
+  testImplementation libs.truth
+}
diff --git a/redwood-tooling-schema/gradle.properties b/redwood-tooling-schema/gradle.properties
new file mode 100644
index 000000000..abcfde94a
--- /dev/null
+++ b/redwood-tooling-schema/gradle.properties
@@ -0,0 +1,2 @@
+POM_ARTIFACT_ID=redwood-tooling-schema
+POM_NAME=Redwood tooling: schema
diff --git a/redwood-schema/src/main/kotlin/app/cash/redwood/schema/parser/schema.kt b/redwood-tooling-schema/src/main/kotlin/app/cash/redwood/tooling/schema/schema.kt
similarity index 84%
rename from redwood-schema/src/main/kotlin/app/cash/redwood/schema/parser/schema.kt
rename to redwood-tooling-schema/src/main/kotlin/app/cash/redwood/tooling/schema/schema.kt
index 4b16740dc..5229ddf74 100644
--- a/redwood-schema/src/main/kotlin/app/cash/redwood/schema/parser/schema.kt
+++ b/redwood-tooling-schema/src/main/kotlin/app/cash/redwood/tooling/schema/schema.kt
@@ -13,9 +13,12 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package app.cash.redwood.schema.parser
+package app.cash.redwood.tooling.schema
 
-import app.cash.redwood.schema.parser.Widget.Trait
+import app.cash.redwood.tooling.schema.Widget.Children
+import app.cash.redwood.tooling.schema.Widget.Event
+import app.cash.redwood.tooling.schema.Widget.Property
+import app.cash.redwood.tooling.schema.Widget.Trait
 import kotlin.reflect.KClass
 import kotlin.reflect.KType
 
@@ -82,9 +85,9 @@ public interface ProtocolWidget : Widget {
   public sealed interface ProtocolTrait : Trait {
     public val tag: Int
   }
-  public interface ProtocolProperty : Widget.Property, ProtocolTrait
-  public interface ProtocolEvent : Widget.Event, ProtocolTrait
-  public interface ProtocolChildren : Widget.Children, ProtocolTrait
+  public interface ProtocolProperty : Property, ProtocolTrait
+  public interface ProtocolEvent : Event, ProtocolTrait
+  public interface ProtocolChildren : Children, ProtocolTrait
 }
 
 public interface ProtocolLayoutModifier : LayoutModifier {
diff --git a/redwood-schema/src/main/kotlin/app/cash/redwood/schema/parser/schemaClasses.kt b/redwood-tooling-schema/src/main/kotlin/app/cash/redwood/tooling/schema/schemaClasses.kt
similarity index 83%
rename from redwood-schema/src/main/kotlin/app/cash/redwood/schema/parser/schemaClasses.kt
rename to redwood-tooling-schema/src/main/kotlin/app/cash/redwood/tooling/schema/schemaClasses.kt
index 5e17a5f29..cd8c23bc8 100644
--- a/redwood-schema/src/main/kotlin/app/cash/redwood/schema/parser/schemaClasses.kt
+++ b/redwood-tooling-schema/src/main/kotlin/app/cash/redwood/tooling/schema/schemaClasses.kt
@@ -13,13 +13,13 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package app.cash.redwood.schema.parser
+package app.cash.redwood.tooling.schema
 
-import app.cash.redwood.schema.parser.LayoutModifier.Property
-import app.cash.redwood.schema.parser.ProtocolWidget.ProtocolChildren
-import app.cash.redwood.schema.parser.ProtocolWidget.ProtocolEvent
-import app.cash.redwood.schema.parser.ProtocolWidget.ProtocolProperty
-import app.cash.redwood.schema.parser.ProtocolWidget.ProtocolTrait
+import app.cash.redwood.tooling.schema.LayoutModifier.Property
+import app.cash.redwood.tooling.schema.ProtocolWidget.ProtocolChildren
+import app.cash.redwood.tooling.schema.ProtocolWidget.ProtocolEvent
+import app.cash.redwood.tooling.schema.ProtocolWidget.ProtocolProperty
+import app.cash.redwood.tooling.schema.ProtocolWidget.ProtocolTrait
 import kotlin.reflect.KClass
 import kotlin.reflect.KType
 
diff --git a/redwood-schema/src/main/kotlin/app/cash/redwood/schema/parser/schemaParser.kt b/redwood-tooling-schema/src/main/kotlin/app/cash/redwood/tooling/schema/schemaParser.kt
similarity index 98%
rename from redwood-schema/src/main/kotlin/app/cash/redwood/schema/parser/schemaParser.kt
rename to redwood-tooling-schema/src/main/kotlin/app/cash/redwood/tooling/schema/schemaParser.kt
index f99d5685f..28407aedb 100644
--- a/redwood-schema/src/main/kotlin/app/cash/redwood/schema/parser/schemaParser.kt
+++ b/redwood-tooling-schema/src/main/kotlin/app/cash/redwood/tooling/schema/schemaParser.kt
@@ -13,7 +13,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package app.cash.redwood.schema.parser
+package app.cash.redwood.tooling.schema
 
 import app.cash.redwood.schema.Children as ChildrenAnnotation
 import app.cash.redwood.schema.Default as DefaultAnnotation
@@ -21,8 +21,8 @@ import app.cash.redwood.schema.LayoutModifier as LayoutModifierAnnotation
 import app.cash.redwood.schema.Property as PropertyAnnotation
 import app.cash.redwood.schema.Schema as SchemaAnnotation
 import app.cash.redwood.schema.Widget as WidgetAnnotation
-import app.cash.redwood.schema.parser.ProtocolWidget.ProtocolChildren
-import app.cash.redwood.schema.parser.ProtocolWidget.ProtocolProperty
+import app.cash.redwood.tooling.schema.ProtocolWidget.ProtocolChildren
+import app.cash.redwood.tooling.schema.ProtocolWidget.ProtocolProperty
 import kotlin.reflect.KClass
 import kotlin.reflect.full.findAnnotation
 import kotlin.reflect.full.isSubtypeOf
diff --git a/redwood-treehouse-lazylayout-schema/build.gradle b/redwood-treehouse-lazylayout-schema/build.gradle
index cd07462a7..d617fc8d8 100644
--- a/redwood-treehouse-lazylayout-schema/build.gradle
+++ b/redwood-treehouse-lazylayout-schema/build.gradle
@@ -1,6 +1,6 @@
 apply plugin: 'org.jetbrains.kotlin.jvm'
 
 dependencies {
-  api projects.redwoodSchemaAnnotations
+  api projects.redwoodSchema
   api projects.redwoodTreehouseLazylayoutApi
 }
diff --git a/samples/counter/sunspot/build.gradle b/samples/counter/sunspot/build.gradle
index 0e7e68be5..30a4f82e6 100644
--- a/samples/counter/sunspot/build.gradle
+++ b/samples/counter/sunspot/build.gradle
@@ -1,5 +1,5 @@
 apply plugin: 'org.jetbrains.kotlin.jvm'
 
 dependencies {
-  api projects.redwoodSchemaAnnotations
+  api projects.redwoodSchema
 }
diff --git a/samples/emoji-search/schema/build.gradle b/samples/emoji-search/schema/build.gradle
index be3e0291d..03f622518 100644
--- a/samples/emoji-search/schema/build.gradle
+++ b/samples/emoji-search/schema/build.gradle
@@ -1,8 +1,8 @@
 apply plugin: 'org.jetbrains.kotlin.jvm'
 
 dependencies {
+  api projects.redwoodSchema
   api projects.redwoodLayoutSchema
-  api projects.redwoodSchemaAnnotations
   api projects.redwoodTreehouseLazylayoutSchema
   api projects.samples.emojiSearch.values
 }
diff --git a/settings.gradle b/settings.gradle
index e0faa25f6..bed7a5222 100644
--- a/settings.gradle
+++ b/settings.gradle
@@ -2,7 +2,7 @@ rootProject.name = 'redwood'
 
 include ':redwood-cli'
 include ':redwood-compose'
-include ':redwood-flex-container'
+include ':redwood-flexbox'
 include ':redwood-gradle-plugin'
 include ':redwood-layout-api'
 include ':redwood-layout-composeui'
@@ -17,7 +17,7 @@ include ':redwood-protocol-compose'
 include ':redwood-protocol-widget'
 include ':redwood-runtime'
 include ':redwood-schema'
-include ':redwood-schema-annotations'
+include ':redwood-tooling-schema'
 include ':redwood-treehouse'
 include ':redwood-treehouse-composeui'
 include ':redwood-treehouse-lazylayout-api'


Test patch:
diff --git a/redwood-cli/src/test/kotlin/app/cash/redwood/generator/ComposeGenerationTest.kt b/redwood-cli/src/test/kotlin/app/cash/redwood/generator/ComposeGenerationTest.kt
index 51fc0553f..49d1e0882 100644
--- a/redwood-cli/src/test/kotlin/app/cash/redwood/generator/ComposeGenerationTest.kt
+++ b/redwood-cli/src/test/kotlin/app/cash/redwood/generator/ComposeGenerationTest.kt
@@ -21,7 +21,7 @@ import app.cash.redwood.schema.Default
 import app.cash.redwood.schema.Property
 import app.cash.redwood.schema.Schema
 import app.cash.redwood.schema.Widget
-import app.cash.redwood.schema.parser.parseSchema
+import app.cash.redwood.tooling.schema.parseSchema
 import com.google.common.truth.Truth.assertThat
 import org.junit.Test
 
diff --git a/redwood-cli/src/test/kotlin/app/cash/redwood/generator/DiffConsumingGenerationTest.kt b/redwood-cli/src/test/kotlin/app/cash/redwood/generator/DiffConsumingGenerationTest.kt
index ce486e06c..cec16eaf6 100644
--- a/redwood-cli/src/test/kotlin/app/cash/redwood/generator/DiffConsumingGenerationTest.kt
+++ b/redwood-cli/src/test/kotlin/app/cash/redwood/generator/DiffConsumingGenerationTest.kt
@@ -18,7 +18,7 @@ package app.cash.redwood.generator
 import app.cash.redwood.schema.Property
 import app.cash.redwood.schema.Schema
 import app.cash.redwood.schema.Widget
-import app.cash.redwood.schema.parser.parseSchema
+import app.cash.redwood.tooling.schema.parseSchema
 import com.google.common.truth.Truth.assertThat
 import java.util.regex.Pattern
 import java.util.regex.Pattern.MULTILINE
diff --git a/redwood-cli/src/test/kotlin/app/cash/redwood/generator/DiffProducingGenerationTest.kt b/redwood-cli/src/test/kotlin/app/cash/redwood/generator/DiffProducingGenerationTest.kt
index 0e1d768a3..03e63a665 100644
--- a/redwood-cli/src/test/kotlin/app/cash/redwood/generator/DiffProducingGenerationTest.kt
+++ b/redwood-cli/src/test/kotlin/app/cash/redwood/generator/DiffProducingGenerationTest.kt
@@ -18,7 +18,7 @@ package app.cash.redwood.generator
 import app.cash.redwood.schema.Property
 import app.cash.redwood.schema.Schema
 import app.cash.redwood.schema.Widget
-import app.cash.redwood.schema.parser.parseSchema
+import app.cash.redwood.tooling.schema.parseSchema
 import com.google.common.truth.Truth.assertThat
 import org.junit.Test
 
diff --git a/redwood-cli/src/test/kotlin/app/cash/redwood/generator/LayoutModifierGenerationTest.kt b/redwood-cli/src/test/kotlin/app/cash/redwood/generator/LayoutModifierGenerationTest.kt
index 40e74f33c..52173d789 100644
--- a/redwood-cli/src/test/kotlin/app/cash/redwood/generator/LayoutModifierGenerationTest.kt
+++ b/redwood-cli/src/test/kotlin/app/cash/redwood/generator/LayoutModifierGenerationTest.kt
@@ -17,7 +17,7 @@ package app.cash.redwood.generator
 
 import app.cash.redwood.schema.LayoutModifier
 import app.cash.redwood.schema.Schema
-import app.cash.redwood.schema.parser.parseSchema
+import app.cash.redwood.tooling.schema.parseSchema
 import com.google.common.truth.Truth.assertThat
 import example.redwood.compose.TestScope
 import kotlin.time.Duration.Companion.minutes
diff --git a/redwood-cli/src/test/kotlin/app/cash/redwood/generator/WidgetGenerationTest.kt b/redwood-cli/src/test/kotlin/app/cash/redwood/generator/WidgetGenerationTest.kt
index d7a28b862..941f630e7 100644
--- a/redwood-cli/src/test/kotlin/app/cash/redwood/generator/WidgetGenerationTest.kt
+++ b/redwood-cli/src/test/kotlin/app/cash/redwood/generator/WidgetGenerationTest.kt
@@ -18,7 +18,7 @@ package app.cash.redwood.generator
 import app.cash.redwood.schema.Property
 import app.cash.redwood.schema.Schema
 import app.cash.redwood.schema.Widget
-import app.cash.redwood.schema.parser.parseSchema
+import app.cash.redwood.tooling.schema.parseSchema
 import com.google.common.truth.Truth.assertThat
 import org.junit.Test
 
diff --git a/redwood-gradle-plugin/src/test/fixture/compose-ui/schema/build.gradle b/redwood-gradle-plugin/src/test/fixture/compose-ui/schema/build.gradle
index 16ae2f5c0..39e9245e5 100644
--- a/redwood-gradle-plugin/src/test/fixture/compose-ui/schema/build.gradle
+++ b/redwood-gradle-plugin/src/test/fixture/compose-ui/schema/build.gradle
@@ -1,5 +1,5 @@
 apply plugin: 'org.jetbrains.kotlin.jvm'
 
 dependencies {
-  api "app.cash.redwood:redwood-schema-annotations:$redwoodVersion"
+  api "app.cash.redwood:redwood-schema:$redwoodVersion"
 }
diff --git a/redwood-gradle-plugin/src/test/fixture/protocol-no-layout-modifiers/build.gradle b/redwood-gradle-plugin/src/test/fixture/protocol-no-layout-modifiers/build.gradle
index 91b94bc56..e18433dbe 100644
--- a/redwood-gradle-plugin/src/test/fixture/protocol-no-layout-modifiers/build.gradle
+++ b/redwood-gradle-plugin/src/test/fixture/protocol-no-layout-modifiers/build.gradle
@@ -28,5 +28,5 @@ allprojects {
 apply plugin: 'org.jetbrains.kotlin.jvm'
 
 dependencies {
-  api "app.cash.redwood:redwood-schema-annotations:$redwoodVersion"
+  api "app.cash.redwood:redwood-schema:$redwoodVersion"
 }
diff --git a/redwood-gradle-plugin/src/test/fixture/schema-project-accessor/schema/build.gradle b/redwood-gradle-plugin/src/test/fixture/schema-project-accessor/schema/build.gradle
index 16ae2f5c0..39e9245e5 100644
--- a/redwood-gradle-plugin/src/test/fixture/schema-project-accessor/schema/build.gradle
+++ b/redwood-gradle-plugin/src/test/fixture/schema-project-accessor/schema/build.gradle
@@ -1,5 +1,5 @@
 apply plugin: 'org.jetbrains.kotlin.jvm'
 
 dependencies {
-  api "app.cash.redwood:redwood-schema-annotations:$redwoodVersion"
+  api "app.cash.redwood:redwood-schema:$redwoodVersion"
 }
diff --git a/redwood-gradle-plugin/src/test/fixture/schema-project-reference/schema/build.gradle b/redwood-gradle-plugin/src/test/fixture/schema-project-reference/schema/build.gradle
index 16ae2f5c0..39e9245e5 100644
--- a/redwood-gradle-plugin/src/test/fixture/schema-project-reference/schema/build.gradle
+++ b/redwood-gradle-plugin/src/test/fixture/schema-project-reference/schema/build.gradle
@@ -1,5 +1,5 @@
 apply plugin: 'org.jetbrains.kotlin.jvm'
 
 dependencies {
-  api "app.cash.redwood:redwood-schema-annotations:$redwoodVersion"
+  api "app.cash.redwood:redwood-schema:$redwoodVersion"
 }
diff --git a/redwood-layout-shared-test/build.gradle b/redwood-layout-shared-test/build.gradle
index cb9b854d9..74cdaba40 100644
--- a/redwood-layout-shared-test/build.gradle
+++ b/redwood-layout-shared-test/build.gradle
@@ -2,7 +2,7 @@ apply plugin: 'com.android.library'
 apply plugin: 'org.jetbrains.kotlin.android'
 
 dependencies {
-  api projects.redwoodFlexContainer
+  api projects.redwoodFlexbox
   api projects.redwoodLayoutApi
   api projects.redwoodLayoutSchema.layoutModifiers
   api projects.redwoodRuntime
diff --git a/redwood-schema/src/test/kotlin/app/cash/redwood/schema/parser/SchemaParserTest.kt b/redwood-tooling-schema/src/test/kotlin/app/cash/redwood/tooling/schema/SchemaParserTest.kt
similarity index 82%
rename from redwood-schema/src/test/kotlin/app/cash/redwood/schema/parser/SchemaParserTest.kt
rename to redwood-tooling-schema/src/test/kotlin/app/cash/redwood/tooling/schema/SchemaParserTest.kt
index 79769e794..bb3c1582a 100644
--- a/redwood-schema/src/test/kotlin/app/cash/redwood/schema/parser/SchemaParserTest.kt
+++ b/redwood-tooling-schema/src/test/kotlin/app/cash/redwood/tooling/schema/SchemaParserTest.kt
@@ -13,7 +13,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package app.cash.redwood.schema.parser
+package app.cash.redwood.tooling.schema
 
 import app.cash.redwood.schema.Children
 import app.cash.redwood.schema.LayoutModifier
@@ -21,7 +21,7 @@ import app.cash.redwood.schema.Property
 import app.cash.redwood.schema.Schema
 import app.cash.redwood.schema.Schema.Dependency
 import app.cash.redwood.schema.Widget
-import app.cash.redwood.schema.parser.Widget.Event
+import app.cash.redwood.tooling.schema.Widget.Event
 import com.google.common.truth.Truth.assertThat
 import kotlin.reflect.full.createType
 import org.junit.Test
@@ -35,7 +35,7 @@ class SchemaParserTest {
     assertThrows<IllegalArgumentException> {
       parseSchema(NonAnnotationSchema::class)
     }.hasMessageThat().isEqualTo(
-      "Schema app.cash.redwood.schema.parser.SchemaParserTest.NonAnnotationSchema missing @Schema annotation",
+      "Schema app.cash.redwood.tooling.schema.SchemaParserTest.NonAnnotationSchema missing @Schema annotation",
     )
   }
 
@@ -53,7 +53,7 @@ class SchemaParserTest {
     assertThrows<IllegalArgumentException> {
       parseSchema(NonAnnotatedWidgetSchema::class)
     }.hasMessageThat().isEqualTo(
-      "app.cash.redwood.schema.parser.SchemaParserTest.NonAnnotatedMember must be annotated with either @Widget or @LayoutModifier",
+      "app.cash.redwood.tooling.schema.SchemaParserTest.NonAnnotatedMember must be annotated with either @Widget or @LayoutModifier",
     )
   }
 
@@ -74,7 +74,7 @@ class SchemaParserTest {
     assertThrows<IllegalArgumentException> {
       parseSchema(DoubleAnnotatedWidgetSchema::class)
     }.hasMessageThat().isEqualTo(
-      "app.cash.redwood.schema.parser.SchemaParserTest.DoubleAnnotatedWidget must be annotated with either @Widget or @LayoutModifier",
+      "app.cash.redwood.tooling.schema.SchemaParserTest.DoubleAnnotatedWidget must be annotated with either @Widget or @LayoutModifier",
     )
   }
 
@@ -109,7 +109,7 @@ class SchemaParserTest {
       """
       |Schema @Widget tags must be unique
       |
-      |- @Widget(1): app.cash.redwood.schema.parser.SchemaParserTest.DuplicateWidgetTagA, app.cash.redwood.schema.parser.SchemaParserTest.DuplicateWidgetTagB
+      |- @Widget(1): app.cash.redwood.tooling.schema.SchemaParserTest.DuplicateWidgetTagA, app.cash.redwood.tooling.schema.SchemaParserTest.DuplicateWidgetTagB
       """.trimMargin(),
     )
   }
@@ -145,7 +145,7 @@ class SchemaParserTest {
       """
       |Schema @LayoutModifier tags must be unique
       |
-      |- @LayoutModifier(1): app.cash.redwood.schema.parser.SchemaParserTest.DuplicateLayoutModifierTagA, app.cash.redwood.schema.parser.SchemaParserTest.DuplicateLayoutModifierTagB
+      |- @LayoutModifier(1): app.cash.redwood.tooling.schema.SchemaParserTest.DuplicateLayoutModifierTagA, app.cash.redwood.tooling.schema.SchemaParserTest.DuplicateLayoutModifierTagB
       """.trimMargin(),
     )
   }
@@ -170,7 +170,7 @@ class SchemaParserTest {
       """
       |Schema contains repeated member
       |
-      |- app.cash.redwood.schema.parser.SchemaParserTest.RepeatedWidget
+      |- app.cash.redwood.tooling.schema.SchemaParserTest.RepeatedWidget
       """.trimMargin(),
     )
   }
@@ -194,7 +194,7 @@ class SchemaParserTest {
       parseSchema(DuplicatePropertyTagSchema::class)
     }.hasMessageThat().isEqualTo(
       """
-      |app.cash.redwood.schema.parser.SchemaParserTest.DuplicatePropertyTagWidget's @Property tags must be unique
+      |app.cash.redwood.tooling.schema.SchemaParserTest.DuplicatePropertyTagWidget's @Property tags must be unique
       |
       |- @Property(1): name, nickname
       """.trimMargin(),
@@ -220,7 +220,7 @@ class SchemaParserTest {
       parseSchema(DuplicateChildrenTagSchema::class)
     }.hasMessageThat().isEqualTo(
       """
-      |app.cash.redwood.schema.parser.SchemaParserTest.DuplicateChildrenTagWidget's @Children tags must be unique
+      |app.cash.redwood.tooling.schema.SchemaParserTest.DuplicateChildrenTagWidget's @Children tags must be unique
       |
       |- @Children(1): childrenA, childrenB
       """.trimMargin(),
@@ -245,7 +245,7 @@ class SchemaParserTest {
     assertThrows<IllegalArgumentException> {
       parseSchema(UnannotatedPrimaryParameterSchema::class)
     }.hasMessageThat().isEqualTo(
-      "Unannotated parameter \"unannotated\" on app.cash.redwood.schema.parser.SchemaParserTest.UnannotatedPrimaryParameterWidget",
+      "Unannotated parameter \"unannotated\" on app.cash.redwood.tooling.schema.SchemaParserTest.UnannotatedPrimaryParameterWidget",
     )
   }
 
@@ -265,7 +265,7 @@ class SchemaParserTest {
     assertThrows<IllegalArgumentException> {
       parseSchema(NonDataClassWidgetSchema::class)
     }.hasMessageThat().isEqualTo(
-      "@Widget app.cash.redwood.schema.parser.SchemaParserTest.NonDataClassWidget must be 'data' class or 'object'",
+      "@Widget app.cash.redwood.tooling.schema.SchemaParserTest.NonDataClassWidget must be 'data' class or 'object'",
     )
   }
 
@@ -285,7 +285,7 @@ class SchemaParserTest {
     assertThrows<IllegalArgumentException> {
       parseSchema(NonDataClassLayoutModifierSchema::class)
     }.hasMessageThat().isEqualTo(
-      "@LayoutModifier app.cash.redwood.schema.parser.SchemaParserTest.NonDataClassLayoutModifier must be 'data' class or 'object'",
+      "@LayoutModifier app.cash.redwood.tooling.schema.SchemaParserTest.NonDataClassLayoutModifier must be 'data' class or 'object'",
     )
   }
 
@@ -305,7 +305,7 @@ class SchemaParserTest {
     assertThrows<IllegalArgumentException> {
       parseSchema(InvalidChildrenTypeSchema::class)
     }.hasMessageThat().isEqualTo(
-      "@Children app.cash.redwood.schema.parser.SchemaParserTest.InvalidChildrenTypeWidget#children must be of type '() -> Unit'",
+      "@Children app.cash.redwood.tooling.schema.SchemaParserTest.InvalidChildrenTypeWidget#children must be of type '() -> Unit'",
     )
   }
 
@@ -325,7 +325,7 @@ class SchemaParserTest {
     assertThrows<IllegalArgumentException> {
       parseSchema(ChildrenArgumentsInvalidSchema::class)
     }.hasMessageThat().isEqualTo(
-      "@Children app.cash.redwood.schema.parser.SchemaParserTest.ChildrenArgumentsInvalidWidget#children lambda type must not have any arguments. " +
+      "@Children app.cash.redwood.tooling.schema.SchemaParserTest.ChildrenArgumentsInvalidWidget#children lambda type must not have any arguments. " +
         "Found: [kotlin.String]",
     )
   }
@@ -346,7 +346,7 @@ class SchemaParserTest {
     assertThrows<IllegalArgumentException> {
       parseSchema(ScopedChildrenArgumentsInvalidSchema::class)
     }.hasMessageThat().isEqualTo(
-      "@Children app.cash.redwood.schema.parser.SchemaParserTest.ScopedChildrenArgumentsInvalidWidget#children lambda type must not have any arguments. " +
+      "@Children app.cash.redwood.tooling.schema.SchemaParserTest.ScopedChildrenArgumentsInvalidWidget#children lambda type must not have any arguments. " +
         "Found: [kotlin.Int]",
     )
   }
@@ -367,7 +367,7 @@ class SchemaParserTest {
     assertThrows<IllegalArgumentException> {
       parseSchema(ScopedChildrenInvalidSchema::class)
     }.hasMessageThat().isEqualTo(
-      "@Children app.cash.redwood.schema.parser.SchemaParserTest.ScopedChildrenInvalidWidget#children lambda receiver can only be a class. " +
+      "@Children app.cash.redwood.tooling.schema.SchemaParserTest.ScopedChildrenInvalidWidget#children lambda receiver can only be a class. " +
         "Found: kotlin.collections.List<kotlin.Int>",
     )
   }
@@ -388,7 +388,7 @@ class SchemaParserTest {
     assertThrows<IllegalArgumentException> {
       parseSchema(ScopedChildrenTypeParameterInvalidSchema::class)
     }.hasMessageThat().isEqualTo(
-      "@Children app.cash.redwood.schema.parser.SchemaParserTest.ScopedChildrenTypeParameterInvalidWidget#children lambda receiver can only be a class. " +
+      "@Children app.cash.redwood.tooling.schema.SchemaParserTest.ScopedChildrenTypeParameterInvalidWidget#children lambda receiver can only be a class. " +
         "Found: T",
     )
   }
@@ -455,7 +455,7 @@ class SchemaParserTest {
     assertThrows<IllegalArgumentException> {
       parseSchema(EventArgumentsInvalidSchema::class)
     }.hasMessageThat().isEqualTo(
-      "@Property app.cash.redwood.schema.parser.SchemaParserTest.EventArgumentsInvalidWidget#tooManyArguments lambda type can only have zero or one arguments. " +
+      "@Property app.cash.redwood.tooling.schema.SchemaParserTest.EventArgumentsInvalidWidget#tooManyArguments lambda type can only have zero or one arguments. " +
         "Found: [kotlin.String, kotlin.Boolean, kotlin.Long]",
     )
   }
@@ -490,7 +490,7 @@ class SchemaParserTest {
     assertThrows<IllegalArgumentException> {
       parseSchema(OneMillionWidgetSchema::class)
     }.hasMessageThat().isEqualTo(
-      "@Widget app.cash.redwood.schema.parser.SchemaParserTest.OneMillionWidget " +
+      "@Widget app.cash.redwood.tooling.schema.SchemaParserTest.OneMillionWidget " +
         "tag must be in range [1, 1000000): 1000000",
     )
   }
@@ -509,7 +509,7 @@ class SchemaParserTest {
     assertThrows<IllegalArgumentException> {
       parseSchema(ZeroWidgetSchema::class)
     }.hasMessageThat().isEqualTo(
-      "@Widget app.cash.redwood.schema.parser.SchemaParserTest.ZeroWidget " +
+      "@Widget app.cash.redwood.tooling.schema.SchemaParserTest.ZeroWidget " +
         "tag must be in range [1, 1000000): 0",
     )
   }
@@ -530,7 +530,7 @@ class SchemaParserTest {
     assertThrows<IllegalArgumentException> {
       parseSchema(OneMillionLayoutModifierSchema::class)
     }.hasMessageThat().isEqualTo(
-      "@LayoutModifier app.cash.redwood.schema.parser.SchemaParserTest.OneMillionLayoutModifier " +
+      "@LayoutModifier app.cash.redwood.tooling.schema.SchemaParserTest.OneMillionLayoutModifier " +
         "tag must be in range [1, 1000000): 1000000",
     )
   }
@@ -551,7 +551,7 @@ class SchemaParserTest {
     assertThrows<IllegalArgumentException> {
       parseSchema(ZeroLayoutModifierSchema::class)
     }.hasMessageThat().isEqualTo(
-      "@LayoutModifier app.cash.redwood.schema.parser.SchemaParserTest.ZeroLayoutModifier " +
+      "@LayoutModifier app.cash.redwood.tooling.schema.SchemaParserTest.ZeroLayoutModifier " +
         "tag must be in range [1, 1000000): 0",
     )
   }
@@ -629,13 +629,13 @@ class SchemaParserTest {
     assertThrows<IllegalArgumentException> {
       parseSchema(SchemaDependencyTagTooHigh::class)
     }.hasMessageThat().isEqualTo(
-      "Dependency app.cash.redwood.schema.parser.SchemaParserTest.SchemaTag tag must be in range (0, 2000]: 2001",
+      "Dependency app.cash.redwood.tooling.schema.SchemaParserTest.SchemaTag tag must be in range (0, 2000]: 2001",
     )
 
     assertThrows<IllegalArgumentException> {
       parseSchema(SchemaDependencyTagTooLow::class)
     }.hasMessageThat().isEqualTo(
-      "Dependency app.cash.redwood.schema.parser.SchemaParserTest.SchemaTag tag must be in range (0, 2000]: 0",
+      "Dependency app.cash.redwood.tooling.schema.SchemaParserTest.SchemaTag tag must be in range (0, 2000]: 0",
     )
   }
 
@@ -661,7 +661,7 @@ class SchemaParserTest {
       """
       |Schema dependency tags must be unique
       |
-      |- Dependency tag 1: app.cash.redwood.schema.parser.SchemaParserTest.SchemaDuplicateDependencyTagA, app.cash.redwood.schema.parser.SchemaParserTest.SchemaDuplicateDependencyTagB
+      |- Dependency tag 1: app.cash.redwood.tooling.schema.SchemaParserTest.SchemaDuplicateDependencyTagA, app.cash.redwood.tooling.schema.SchemaParserTest.SchemaDuplicateDependencyTagB
       """.trimMargin(),
     )
   }
@@ -685,7 +685,7 @@ class SchemaParserTest {
       """
       |Schema contains repeated dependency
       |
-      |- app.cash.redwood.schema.parser.SchemaParserTest.SchemaDuplicateDependencyTypeOther
+      |- app.cash.redwood.tooling.schema.SchemaParserTest.SchemaDuplicateDependencyTypeOther
       """.trimMargin(),
     )
   }
@@ -713,7 +713,7 @@ class SchemaParserTest {
     assertThrows<IllegalArgumentException> {
       parseSchema(SchemaDependencyHasDependency::class)
     }.hasMessageThat().isEqualTo(
-      "Schema dependency app.cash.redwood.schema.parser.SchemaParserTest.SchemaDependencyHasDependencyA also has its own dependencies. " +
+      "Schema dependency app.cash.redwood.tooling.schema.SchemaParserTest.SchemaDependencyHasDependencyA also has its own dependencies. " +
         "For now, only a single level of dependencies is supported.",
     )
   }
@@ -743,7 +743,7 @@ class SchemaParserTest {
       """
       |Schema dependency tree contains duplicated widgets
       |
-      |- app.cash.redwood.schema.parser.SchemaParserTest.WidgetDuplicateAcrossDependencies: app.cash.redwood.schema.parser.SchemaWidgetDuplicateAcrossDependenciesA, app.cash.redwood.schema.parser.SchemaWidgetDuplicateAcrossDependenciesB
+      |- app.cash.redwood.tooling.schema.SchemaParserTest.WidgetDuplicateAcrossDependencies: app.cash.redwood.tooling.schema.SchemaWidgetDuplicateAcrossDependenciesA, app.cash.redwood.tooling.schema.SchemaWidgetDuplicateAcrossDependenciesB
       """.trimMargin(),
     )
   }
@@ -765,7 +765,7 @@ class SchemaParserTest {
       """
       |Schema dependency tree contains duplicated widgets
       |
-      |- app.cash.redwood.schema.parser.SchemaParserTest.WidgetDuplicateAcrossDependencies: app.cash.redwood.schema.parser.SchemaWidgetDuplicateInDependency, app.cash.redwood.schema.parser.SchemaWidgetDuplicateAcrossDependenciesA
+      |- app.cash.redwood.tooling.schema.SchemaParserTest.WidgetDuplicateAcrossDependencies: app.cash.redwood.tooling.schema.SchemaWidgetDuplicateInDependency, app.cash.redwood.tooling.schema.SchemaWidgetDuplicateAcrossDependenciesA
       """.trimMargin(),
     )
   }
@@ -784,7 +784,7 @@ class SchemaParserTest {
     assertThrows<IllegalArgumentException> {
       parseSchema(UnscopedModifierSchema::class)
     }.hasMessageThat().isEqualTo(
-      "@LayoutModifier app.cash.redwood.schema.parser.SchemaParserTest.UnscopedLayoutModifier " +
+      "@LayoutModifier app.cash.redwood.tooling.schema.SchemaParserTest.UnscopedLayoutModifier " +
         "must have at least one scope.",
     )
   }
diff --git a/redwood-schema/src/test/kotlin/app/cash/redwood/schema/parser/truth.kt b/redwood-tooling-schema/src/test/kotlin/app/cash/redwood/tooling/schema/truth.kt
similarity index 96%
rename from redwood-schema/src/test/kotlin/app/cash/redwood/schema/parser/truth.kt
rename to redwood-tooling-schema/src/test/kotlin/app/cash/redwood/tooling/schema/truth.kt
index f867ac400..8944aa570 100644
--- a/redwood-schema/src/test/kotlin/app/cash/redwood/schema/parser/truth.kt
+++ b/redwood-tooling-schema/src/test/kotlin/app/cash/redwood/tooling/schema/truth.kt
@@ -13,7 +13,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package app.cash.redwood.schema.parser
+package app.cash.redwood.tooling.schema
 
 import com.google.common.truth.Subject
 import com.google.common.truth.ThrowableSubject
diff --git a/test-schema/build.gradle b/test-schema/build.gradle
index 57cd44f20..1d47e7540 100644
--- a/test-schema/build.gradle
+++ b/test-schema/build.gradle
@@ -1,6 +1,6 @@
 apply plugin: 'org.jetbrains.kotlin.jvm'
 
 dependencies {
-  implementation projects.redwoodSchemaAnnotations
+  implementation projects.redwoodSchema
   implementation projects.redwoodLayoutSchema
 }