layerweave 0.7.9b1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (814) hide show
  1. layerweave-0.7.9b1/.github/workflows/publish-pypi.yml +58 -0
  2. layerweave-0.7.9b1/AGENTS.md +36 -0
  3. layerweave-0.7.9b1/LICENSE +21 -0
  4. layerweave-0.7.9b1/MANIFEST.in +21 -0
  5. layerweave-0.7.9b1/PKG-INFO +242 -0
  6. layerweave-0.7.9b1/README.en.md +222 -0
  7. layerweave-0.7.9b1/README.md +222 -0
  8. layerweave-0.7.9b1/THIRD_PARTY_NOTICES.md +474 -0
  9. layerweave-0.7.9b1/build_support.py +56 -0
  10. layerweave-0.7.9b1/distribution/PYPI_README.md +222 -0
  11. layerweave-0.7.9b1/distribution/demos.json +8 -0
  12. layerweave-0.7.9b1/distribution/npm/LICENSE +21 -0
  13. layerweave-0.7.9b1/distribution/npm/README.en.md +35 -0
  14. layerweave-0.7.9b1/distribution/npm/README.md +35 -0
  15. layerweave-0.7.9b1/distribution/npm/bin/layerweave.mjs +9 -0
  16. layerweave-0.7.9b1/distribution/npm/lib/launch.mjs +132 -0
  17. layerweave-0.7.9b1/distribution/npm/package.json +15 -0
  18. layerweave-0.7.9b1/distribution/npm/runtime.json +9 -0
  19. layerweave-0.7.9b1/distribution/npm/test/launch.test.mjs +61 -0
  20. layerweave-0.7.9b1/docs/FUTURE.md +36 -0
  21. layerweave-0.7.9b1/docs/README.md +35 -0
  22. layerweave-0.7.9b1/docs/architecture.md +55 -0
  23. layerweave-0.7.9b1/docs/build-with-layerweave/01-timeline.md +90 -0
  24. layerweave-0.7.9b1/docs/build-with-layerweave/02-ordered-metadata.md +111 -0
  25. layerweave-0.7.9b1/docs/build-with-layerweave/03-managed-tables.md +145 -0
  26. layerweave-0.7.9b1/docs/build-with-layerweave/04-composing-tools.md +79 -0
  27. layerweave-0.7.9b1/docs/build-with-layerweave/05-incremental-reading.md +58 -0
  28. layerweave-0.7.9b1/docs/build-with-layerweave/README.md +58 -0
  29. layerweave-0.7.9b1/docs/developer-conventions.md +130 -0
  30. layerweave-0.7.9b1/docs/documentation.md +77 -0
  31. layerweave-0.7.9b1/docs/examples.md +84 -0
  32. layerweave-0.7.9b1/docs/releasing.md +75 -0
  33. layerweave-0.7.9b1/docs/workflows/hand-drawn-video.md +104 -0
  34. layerweave-0.7.9b1/examples/__init__.py +1 -0
  35. layerweave-0.7.9b1/examples/all_layers.py +64 -0
  36. layerweave-0.7.9b1/examples/composition.py +49 -0
  37. layerweave-0.7.9b1/examples/config_help.py +18 -0
  38. layerweave-0.7.9b1/examples/crud.py +66 -0
  39. layerweave-0.7.9b1/examples/diagnostics.py +34 -0
  40. layerweave-0.7.9b1/examples/editing.py +59 -0
  41. layerweave-0.7.9b1/examples/exchange.py +37 -0
  42. layerweave-0.7.9b1/examples/feedback.py +30 -0
  43. layerweave-0.7.9b1/examples/first_batch.py +48 -0
  44. layerweave-0.7.9b1/examples/logical_references.py +78 -0
  45. layerweave-0.7.9b1/examples/mcp_extension/README.md +17 -0
  46. layerweave-0.7.9b1/examples/mcp_extension/pyproject.toml +14 -0
  47. layerweave-0.7.9b1/examples/mcp_extension/src/layerweave_demo_tools/__init__.py +1 -0
  48. layerweave-0.7.9b1/examples/mcp_extension/src/layerweave_demo_tools/commands.py +18 -0
  49. layerweave-0.7.9b1/examples/numbering.py +44 -0
  50. layerweave-0.7.9b1/examples/project_details.py +40 -0
  51. layerweave-0.7.9b1/examples/project_overview.py +34 -0
  52. layerweave-0.7.9b1/examples/read_write.py +53 -0
  53. layerweave-0.7.9b1/examples/requests/read-projects.json +4 -0
  54. layerweave-0.7.9b1/examples/review_history.py +40 -0
  55. layerweave-0.7.9b1/examples/second_batch.py +50 -0
  56. layerweave-0.7.9b1/examples/showcases/LICENSE +21 -0
  57. layerweave-0.7.9b1/examples/showcases/README.md +57 -0
  58. layerweave-0.7.9b1/examples/showcases/article-reading/README.md +139 -0
  59. layerweave-0.7.9b1/examples/showcases/article-reading/assets/argument-map.svg +28 -0
  60. layerweave-0.7.9b1/examples/showcases/article-reading/assets/article.md +52 -0
  61. layerweave-0.7.9b1/examples/showcases/article-reading/assets/cost-boundary.svg +22 -0
  62. layerweave-0.7.9b1/examples/showcases/article-reading/explore.py +72 -0
  63. layerweave-0.7.9b1/examples/showcases/article-reading/project.json +1803 -0
  64. layerweave-0.7.9b1/examples/showcases/code-navigation/README.md +178 -0
  65. layerweave-0.7.9b1/examples/showcases/code-navigation/project.json +3169 -0
  66. layerweave-0.7.9b1/examples/showcases/comic-creation/README.md +145 -0
  67. layerweave-0.7.9b1/examples/showcases/comic-creation/assets/SOURCE.md +10 -0
  68. layerweave-0.7.9b1/examples/showcases/comic-creation/assets/page-01.png +0 -0
  69. layerweave-0.7.9b1/examples/showcases/comic-creation/assets/page-01.svg +1 -0
  70. layerweave-0.7.9b1/examples/showcases/comic-creation/assets/page-02.png +0 -0
  71. layerweave-0.7.9b1/examples/showcases/comic-creation/assets/page-02.svg +1 -0
  72. layerweave-0.7.9b1/examples/showcases/comic-creation/assets/panel-01.svg +1 -0
  73. layerweave-0.7.9b1/examples/showcases/comic-creation/assets/panel-02.svg +1 -0
  74. layerweave-0.7.9b1/examples/showcases/comic-creation/assets/panel-03.svg +1 -0
  75. layerweave-0.7.9b1/examples/showcases/comic-creation/assets/panel-04.svg +1 -0
  76. layerweave-0.7.9b1/examples/showcases/comic-creation/assets/panel-05.svg +1 -0
  77. layerweave-0.7.9b1/examples/showcases/comic-creation/assets/panel-06.svg +1 -0
  78. layerweave-0.7.9b1/examples/showcases/comic-creation/assets/panel-07-draft.svg +1 -0
  79. layerweave-0.7.9b1/examples/showcases/comic-creation/assets/panel-07.svg +1 -0
  80. layerweave-0.7.9b1/examples/showcases/comic-creation/assets/panel-08.svg +1 -0
  81. layerweave-0.7.9b1/examples/showcases/comic-creation/edit-exercise.py +73 -0
  82. layerweave-0.7.9b1/examples/showcases/comic-creation/project.json +2392 -0
  83. layerweave-0.7.9b1/examples/showcases/comic-creation/read.html +1 -0
  84. layerweave-0.7.9b1/examples/showcases/course-learning/README.md +142 -0
  85. layerweave-0.7.9b1/examples/showcases/course-learning/assets/decoding-distributions.svg +49 -0
  86. layerweave-0.7.9b1/examples/showcases/course-learning/assets/two-step-tree.svg +35 -0
  87. layerweave-0.7.9b1/examples/showcases/course-learning/project.json +1190 -0
  88. layerweave-0.7.9b1/examples/showcases/donut-hole-h3/README.md +49 -0
  89. layerweave-0.7.9b1/examples/showcases/donut-hole-h3/assets/public/h3/svg/01.svg +1 -0
  90. layerweave-0.7.9b1/examples/showcases/donut-hole-h3/assets/public/h3/svg/10.svg +1 -0
  91. layerweave-0.7.9b1/examples/showcases/donut-hole-h3/assets/public/h3/svg/41.svg +1 -0
  92. layerweave-0.7.9b1/examples/showcases/donut-hole-h3/assets/public/h3/svg/46.svg +1 -0
  93. layerweave-0.7.9b1/examples/showcases/donut-hole-h3/assets/public/h3/svg/50.svg +1 -0
  94. layerweave-0.7.9b1/examples/showcases/donut-hole-h3/assets/public/h3/svg/55.svg +1 -0
  95. layerweave-0.7.9b1/examples/showcases/donut-hole-h3/assets/public/v9/0006.webp +0 -0
  96. layerweave-0.7.9b1/examples/showcases/donut-hole-h3/assets/public/v9/0007.webp +0 -0
  97. layerweave-0.7.9b1/examples/showcases/donut-hole-h3/assets/public/v9/0031.webp +0 -0
  98. layerweave-0.7.9b1/examples/showcases/donut-hole-h3/assets/public/v9/0032.webp +0 -0
  99. layerweave-0.7.9b1/examples/showcases/donut-hole-h3/assets/public/v9/0033.webp +0 -0
  100. layerweave-0.7.9b1/examples/showcases/donut-hole-h3/assets/public/v9/0034.webp +0 -0
  101. layerweave-0.7.9b1/examples/showcases/donut-hole-h3/assets/public/v9/0047.webp +0 -0
  102. layerweave-0.7.9b1/examples/showcases/donut-hole-h3/assets/stills//351/225/23402.webp +0 -0
  103. layerweave-0.7.9b1/examples/showcases/donut-hole-h3/assets/stills//351/225/23403.webp +0 -0
  104. layerweave-0.7.9b1/examples/showcases/donut-hole-h3/assets/stills//351/225/23404.webp +0 -0
  105. layerweave-0.7.9b1/examples/showcases/donut-hole-h3/assets/stills//351/225/23406.webp +0 -0
  106. layerweave-0.7.9b1/examples/showcases/donut-hole-h3/assets/stills//351/225/23407.webp +0 -0
  107. layerweave-0.7.9b1/examples/showcases/donut-hole-h3/assets/stills//351/225/23408.webp +0 -0
  108. layerweave-0.7.9b1/examples/showcases/donut-hole-h3/assets/stills//351/225/23409.webp +0 -0
  109. layerweave-0.7.9b1/examples/showcases/donut-hole-h3/assets/stills//351/225/23410.webp +0 -0
  110. layerweave-0.7.9b1/examples/showcases/donut-hole-h3/assets/stills//351/225/23411.webp +0 -0
  111. layerweave-0.7.9b1/examples/showcases/donut-hole-h3/assets/stills//351/225/23412.webp +0 -0
  112. layerweave-0.7.9b1/examples/showcases/donut-hole-h3/assets/stills//351/225/23414.webp +0 -0
  113. layerweave-0.7.9b1/examples/showcases/donut-hole-h3/assets/stills//351/225/23415.webp +0 -0
  114. layerweave-0.7.9b1/examples/showcases/donut-hole-h3/assets/stills//351/225/23416.webp +0 -0
  115. layerweave-0.7.9b1/examples/showcases/donut-hole-h3/assets/stills//351/225/23417.webp +0 -0
  116. layerweave-0.7.9b1/examples/showcases/donut-hole-h3/assets/stills//351/225/23418.webp +0 -0
  117. layerweave-0.7.9b1/examples/showcases/donut-hole-h3/assets/stills//351/225/23419.webp +0 -0
  118. layerweave-0.7.9b1/examples/showcases/donut-hole-h3/assets/stills//351/225/23420.webp +0 -0
  119. layerweave-0.7.9b1/examples/showcases/donut-hole-h3/assets/stills//351/225/23421.webp +0 -0
  120. layerweave-0.7.9b1/examples/showcases/donut-hole-h3/assets/stills//351/225/23422.webp +0 -0
  121. layerweave-0.7.9b1/examples/showcases/donut-hole-h3/assets/stills//351/225/23423.webp +0 -0
  122. layerweave-0.7.9b1/examples/showcases/donut-hole-h3/assets/stills//351/225/23424.webp +0 -0
  123. layerweave-0.7.9b1/examples/showcases/donut-hole-h3/assets/stills//351/225/23428.webp +0 -0
  124. layerweave-0.7.9b1/examples/showcases/donut-hole-h3/assets/stills//351/225/23429.webp +0 -0
  125. layerweave-0.7.9b1/examples/showcases/donut-hole-h3/assets/stills//351/225/23431.webp +0 -0
  126. layerweave-0.7.9b1/examples/showcases/donut-hole-h3/assets/stills//351/225/23432.webp +0 -0
  127. layerweave-0.7.9b1/examples/showcases/donut-hole-h3/assets/stills//351/225/23434.webp +0 -0
  128. layerweave-0.7.9b1/examples/showcases/donut-hole-h3/assets/stills//351/225/23438.webp +0 -0
  129. layerweave-0.7.9b1/examples/showcases/donut-hole-h3/assets/stills//351/225/23440.webp +0 -0
  130. layerweave-0.7.9b1/examples/showcases/donut-hole-h3/assets/stills//351/225/23442.webp +0 -0
  131. layerweave-0.7.9b1/examples/showcases/donut-hole-h3/assets/stills//351/225/23443.webp +0 -0
  132. layerweave-0.7.9b1/examples/showcases/donut-hole-h3/assets/stills//351/225/23444.webp +0 -0
  133. layerweave-0.7.9b1/examples/showcases/donut-hole-h3/assets/stills//351/225/23445.webp +0 -0
  134. layerweave-0.7.9b1/examples/showcases/donut-hole-h3/assets/stills//351/225/23447.webp +0 -0
  135. layerweave-0.7.9b1/examples/showcases/donut-hole-h3/assets/stills//351/225/23448.webp +0 -0
  136. layerweave-0.7.9b1/examples/showcases/donut-hole-h3/assets/stills//351/225/23449.webp +0 -0
  137. layerweave-0.7.9b1/examples/showcases/donut-hole-h3/assets/stills//351/225/23454.webp +0 -0
  138. layerweave-0.7.9b1/examples/showcases/donut-hole-h3/assets/stills//351/225/23456.webp +0 -0
  139. layerweave-0.7.9b1/examples/showcases/donut-hole-h3/assets/stills//351/225/23457.webp +0 -0
  140. layerweave-0.7.9b1/examples/showcases/donut-hole-h3/assets/stills//351/225/23458.webp +0 -0
  141. layerweave-0.7.9b1/examples/showcases/donut-hole-h3/assets/stills//351/225/23459.webp +0 -0
  142. layerweave-0.7.9b1/examples/showcases/donut-hole-h3/generation//346/217/220/347/244/272/350/257/215/02.txt +1 -0
  143. layerweave-0.7.9b1/examples/showcases/donut-hole-h3/generation//346/217/220/347/244/272/350/257/215/03.txt +1 -0
  144. layerweave-0.7.9b1/examples/showcases/donut-hole-h3/generation//346/217/220/347/244/272/350/257/215/04.txt +1 -0
  145. layerweave-0.7.9b1/examples/showcases/donut-hole-h3/generation//346/217/220/347/244/272/350/257/215/06.txt +1 -0
  146. layerweave-0.7.9b1/examples/showcases/donut-hole-h3/generation//346/217/220/347/244/272/350/257/215/07.txt +1 -0
  147. layerweave-0.7.9b1/examples/showcases/donut-hole-h3/generation//346/217/220/347/244/272/350/257/215/08.txt +1 -0
  148. layerweave-0.7.9b1/examples/showcases/donut-hole-h3/generation//346/217/220/347/244/272/350/257/215/09.txt +1 -0
  149. layerweave-0.7.9b1/examples/showcases/donut-hole-h3/generation//346/217/220/347/244/272/350/257/215/10.txt +1 -0
  150. layerweave-0.7.9b1/examples/showcases/donut-hole-h3/generation//346/217/220/347/244/272/350/257/215/10_/345/205/263/351/224/256/345/270/247.txt +1 -0
  151. layerweave-0.7.9b1/examples/showcases/donut-hole-h3/generation//346/217/220/347/244/272/350/257/215/11.txt +1 -0
  152. layerweave-0.7.9b1/examples/showcases/donut-hole-h3/generation//346/217/220/347/244/272/350/257/215/12.txt +1 -0
  153. layerweave-0.7.9b1/examples/showcases/donut-hole-h3/generation//346/217/220/347/244/272/350/257/215/14.txt +1 -0
  154. layerweave-0.7.9b1/examples/showcases/donut-hole-h3/generation//346/217/220/347/244/272/350/257/215/15.txt +1 -0
  155. layerweave-0.7.9b1/examples/showcases/donut-hole-h3/generation//346/217/220/347/244/272/350/257/215/16.txt +1 -0
  156. layerweave-0.7.9b1/examples/showcases/donut-hole-h3/generation//346/217/220/347/244/272/350/257/215/17.txt +1 -0
  157. layerweave-0.7.9b1/examples/showcases/donut-hole-h3/generation//346/217/220/347/244/272/350/257/215/18.txt +1 -0
  158. layerweave-0.7.9b1/examples/showcases/donut-hole-h3/generation//346/217/220/347/244/272/350/257/215/19.txt +1 -0
  159. layerweave-0.7.9b1/examples/showcases/donut-hole-h3/generation//346/217/220/347/244/272/350/257/215/20.txt +1 -0
  160. layerweave-0.7.9b1/examples/showcases/donut-hole-h3/generation//346/217/220/347/244/272/350/257/215/21.txt +1 -0
  161. layerweave-0.7.9b1/examples/showcases/donut-hole-h3/generation//346/217/220/347/244/272/350/257/215/22.txt +1 -0
  162. layerweave-0.7.9b1/examples/showcases/donut-hole-h3/generation//346/217/220/347/244/272/350/257/215/23.txt +1 -0
  163. layerweave-0.7.9b1/examples/showcases/donut-hole-h3/generation//346/217/220/347/244/272/350/257/215/24.txt +1 -0
  164. layerweave-0.7.9b1/examples/showcases/donut-hole-h3/generation//346/217/220/347/244/272/350/257/215/28.txt +1 -0
  165. layerweave-0.7.9b1/examples/showcases/donut-hole-h3/generation//346/217/220/347/244/272/350/257/215/29.txt +1 -0
  166. layerweave-0.7.9b1/examples/showcases/donut-hole-h3/generation//346/217/220/347/244/272/350/257/215/31.txt +1 -0
  167. layerweave-0.7.9b1/examples/showcases/donut-hole-h3/generation//346/217/220/347/244/272/350/257/215/32.txt +1 -0
  168. layerweave-0.7.9b1/examples/showcases/donut-hole-h3/generation//346/217/220/347/244/272/350/257/215/34.txt +1 -0
  169. layerweave-0.7.9b1/examples/showcases/donut-hole-h3/generation//346/217/220/347/244/272/350/257/215/38.txt +1 -0
  170. layerweave-0.7.9b1/examples/showcases/donut-hole-h3/generation//346/217/220/347/244/272/350/257/215/40.txt +1 -0
  171. layerweave-0.7.9b1/examples/showcases/donut-hole-h3/generation//346/217/220/347/244/272/350/257/215/42.txt +1 -0
  172. layerweave-0.7.9b1/examples/showcases/donut-hole-h3/generation//346/217/220/347/244/272/350/257/215/43.txt +1 -0
  173. layerweave-0.7.9b1/examples/showcases/donut-hole-h3/generation//346/217/220/347/244/272/350/257/215/44.txt +1 -0
  174. layerweave-0.7.9b1/examples/showcases/donut-hole-h3/generation//346/217/220/347/244/272/350/257/215/45.txt +1 -0
  175. layerweave-0.7.9b1/examples/showcases/donut-hole-h3/generation//346/217/220/347/244/272/350/257/215/47.txt +1 -0
  176. layerweave-0.7.9b1/examples/showcases/donut-hole-h3/generation//346/217/220/347/244/272/350/257/215/48.txt +1 -0
  177. layerweave-0.7.9b1/examples/showcases/donut-hole-h3/generation//346/217/220/347/244/272/350/257/215/49.txt +1 -0
  178. layerweave-0.7.9b1/examples/showcases/donut-hole-h3/generation//346/217/220/347/244/272/350/257/215/54.txt +1 -0
  179. layerweave-0.7.9b1/examples/showcases/donut-hole-h3/generation//346/217/220/347/244/272/350/257/215/56.txt +1 -0
  180. layerweave-0.7.9b1/examples/showcases/donut-hole-h3/generation//346/217/220/347/244/272/350/257/215/57.txt +1 -0
  181. layerweave-0.7.9b1/examples/showcases/donut-hole-h3/generation//346/217/220/347/244/272/350/257/215/58.txt +1 -0
  182. layerweave-0.7.9b1/examples/showcases/donut-hole-h3/generation//346/217/220/347/244/272/350/257/215/59.txt +1 -0
  183. layerweave-0.7.9b1/examples/showcases/donut-hole-h3/generation//347/224/237/346/210/220.py +124 -0
  184. layerweave-0.7.9b1/examples/showcases/donut-hole-h3/generation//351/225/234/345/244/264/350/241/250.py +109 -0
  185. layerweave-0.7.9b1/examples/showcases/donut-hole-h3/project.json +7570 -0
  186. layerweave-0.7.9b1/examples/showcases/donut-hole-h3/read.html +41 -0
  187. layerweave-0.7.9b1/examples/showcases/donut-hole-h3/source/index.html +11 -0
  188. layerweave-0.7.9b1/examples/showcases/donut-hole-h3/source/package.json +25 -0
  189. layerweave-0.7.9b1/examples/showcases/donut-hole-h3/source/scripts/capture.mjs +34 -0
  190. layerweave-0.7.9b1/examples/showcases/donut-hole-h3/source/scripts/capture_frames.mjs +38 -0
  191. layerweave-0.7.9b1/examples/showcases/donut-hole-h3/source/scripts/stills.mjs +47 -0
  192. layerweave-0.7.9b1/examples/showcases/donut-hole-h3/source/src/App.tsx +60 -0
  193. layerweave-0.7.9b1/examples/showcases/donut-hole-h3/source/src/core/anim.ts +23 -0
  194. layerweave-0.7.9b1/examples/showcases/donut-hole-h3/source/src/core/clock.tsx +49 -0
  195. layerweave-0.7.9b1/examples/showcases/donut-hole-h3/source/src/core/time.ts +61 -0
  196. layerweave-0.7.9b1/examples/showcases/donut-hole-h3/source/src/data/h3_shots.json +1 -0
  197. layerweave-0.7.9b1/examples/showcases/donut-hole-h3/source/src/data/stems.json +1 -0
  198. layerweave-0.7.9b1/examples/showcases/donut-hole-h3/source/src/data/timeline.json +12568 -0
  199. layerweave-0.7.9b1/examples/showcases/donut-hole-h3/source/src/data/v9_assets.json +65 -0
  200. layerweave-0.7.9b1/examples/showcases/donut-hole-h3/source/src/data/voice.json +1 -0
  201. layerweave-0.7.9b1/examples/showcases/donut-hole-h3/source/src/h3/index.tsx +169 -0
  202. layerweave-0.7.9b1/examples/showcases/donut-hole-h3/source/src/main.tsx +5 -0
  203. layerweave-0.7.9b1/examples/showcases/donut-hole-h3/source/src/styles.css +69 -0
  204. layerweave-0.7.9b1/examples/showcases/donut-hole-h3/source/src/ui/kit.tsx +15 -0
  205. layerweave-0.7.9b1/examples/showcases/donut-hole-h3/source/src/v10/kit.tsx +374 -0
  206. layerweave-0.7.9b1/examples/showcases/donut-hole-h3/source/tsconfig.json +15 -0
  207. layerweave-0.7.9b1/examples/showcases/donut-hole-h3/source/vite.config.ts +10 -0
  208. layerweave-0.7.9b1/examples/showcases/donut-hole-tegaki/README.md +53 -0
  209. layerweave-0.7.9b1/examples/showcases/donut-hole-tegaki/assets/character//345/245/271_/345/256/232-01_01_/346/255/243/351/235/242.png +0 -0
  210. layerweave-0.7.9b1/examples/showcases/donut-hole-tegaki/assets/character//345/245/271_/345/256/232-01_02_/345/233/233/345/210/206/344/271/213/344/270/211.png +0 -0
  211. layerweave-0.7.9b1/examples/showcases/donut-hole-tegaki/assets/character//345/245/271_/345/256/232-01_03_/344/276/247/351/235/242.png +0 -0
  212. layerweave-0.7.9b1/examples/showcases/donut-hole-tegaki/assets/character//345/245/271_/345/256/232-01_04_/350/203/214/351/235/242.png +0 -0
  213. layerweave-0.7.9b1/examples/showcases/donut-hole-tegaki/assets/preview/overview.jpg +0 -0
  214. layerweave-0.7.9b1/examples/showcases/donut-hole-tegaki/project.json +2858 -0
  215. layerweave-0.7.9b1/examples/showcases/donut-hole-tegaki/read.html +1 -0
  216. layerweave-0.7.9b1/examples/showcases/donut-hole-tegaki/source/index.html +11 -0
  217. layerweave-0.7.9b1/examples/showcases/donut-hole-tegaki/source/package.json +25 -0
  218. layerweave-0.7.9b1/examples/showcases/donut-hole-tegaki/source/scripts/capture.mjs +29 -0
  219. layerweave-0.7.9b1/examples/showcases/donut-hole-tegaki/source/scripts/capture_frames.mjs +38 -0
  220. layerweave-0.7.9b1/examples/showcases/donut-hole-tegaki/source/scripts/lip_patch.py +60 -0
  221. layerweave-0.7.9b1/examples/showcases/donut-hole-tegaki/source/scripts/prep_v9.py +57 -0
  222. layerweave-0.7.9b1/examples/showcases/donut-hole-tegaki/source/scripts/stills.mjs +42 -0
  223. layerweave-0.7.9b1/examples/showcases/donut-hole-tegaki/source/src/App.tsx +69 -0
  224. layerweave-0.7.9b1/examples/showcases/donut-hole-tegaki/source/src/core/anim.ts +23 -0
  225. layerweave-0.7.9b1/examples/showcases/donut-hole-tegaki/source/src/core/clock.tsx +49 -0
  226. layerweave-0.7.9b1/examples/showcases/donut-hole-tegaki/source/src/core/time.ts +61 -0
  227. layerweave-0.7.9b1/examples/showcases/donut-hole-tegaki/source/src/data/glyph_bold.json +1 -0
  228. layerweave-0.7.9b1/examples/showcases/donut-hole-tegaki/source/src/data/glyph_light.json +1 -0
  229. layerweave-0.7.9b1/examples/showcases/donut-hole-tegaki/source/src/data/ht_0054.json +1 -0
  230. layerweave-0.7.9b1/examples/showcases/donut-hole-tegaki/source/src/data/stems.json +1 -0
  231. layerweave-0.7.9b1/examples/showcases/donut-hole-tegaki/source/src/data/timeline.json +12568 -0
  232. layerweave-0.7.9b1/examples/showcases/donut-hole-tegaki/source/src/data/v9_assets.json +1343 -0
  233. layerweave-0.7.9b1/examples/showcases/donut-hole-tegaki/source/src/data/voice.json +1 -0
  234. layerweave-0.7.9b1/examples/showcases/donut-hole-tegaki/source/src/main.tsx +5 -0
  235. layerweave-0.7.9b1/examples/showcases/donut-hole-tegaki/source/src/styles.css +69 -0
  236. layerweave-0.7.9b1/examples/showcases/donut-hole-tegaki/source/src/ui/kit.tsx +15 -0
  237. layerweave-0.7.9b1/examples/showcases/donut-hole-tegaki/source/src/v10/GlyphWord.tsx +95 -0
  238. layerweave-0.7.9b1/examples/showcases/donut-hole-tegaki/source/src/v10/index.ts +9 -0
  239. layerweave-0.7.9b1/examples/showcases/donut-hole-tegaki/source/src/v10/kit.tsx +374 -0
  240. layerweave-0.7.9b1/examples/showcases/donut-hole-tegaki/source/src/v10/parts.tsx +37 -0
  241. layerweave-0.7.9b1/examples/showcases/donut-hole-tegaki/source/src/v10/s1.tsx +304 -0
  242. layerweave-0.7.9b1/examples/showcases/donut-hole-tegaki/source/src/v10/s2.tsx +305 -0
  243. layerweave-0.7.9b1/examples/showcases/donut-hole-tegaki/source/src/v10/s3.tsx +340 -0
  244. layerweave-0.7.9b1/examples/showcases/donut-hole-tegaki/source/src/v10/s4.tsx +465 -0
  245. layerweave-0.7.9b1/examples/showcases/donut-hole-tegaki/source/tsconfig.json +15 -0
  246. layerweave-0.7.9b1/examples/showcases/donut-hole-tegaki/source/vite.config.ts +9 -0
  247. layerweave-0.7.9b1/examples/showcases/fiction-writing/README.md +188 -0
  248. layerweave-0.7.9b1/examples/showcases/fiction-writing/assets/story.md +137 -0
  249. layerweave-0.7.9b1/examples/showcases/fiction-writing/project.json +1122 -0
  250. layerweave-0.7.9b1/examples/showcases/information-investigation/README.md +98 -0
  251. layerweave-0.7.9b1/examples/showcases/information-investigation/project.json +3331 -0
  252. layerweave-0.7.9b1/examples/showcases/information-investigation/sources.md +124 -0
  253. layerweave-0.7.9b1/examples/showcases/information-investigation/walkthrough.py +147 -0
  254. layerweave-0.7.9b1/examples/showcases/interactive-story/README.md +97 -0
  255. layerweave-0.7.9b1/examples/showcases/interactive-story/paths.md +68 -0
  256. layerweave-0.7.9b1/examples/showcases/interactive-story/project.json +1269 -0
  257. layerweave-0.7.9b1/examples/showcases/late-bloom-scroll/README.md +70 -0
  258. layerweave-0.7.9b1/examples/showcases/late-bloom-scroll/assets/collaboration-notes.md +15 -0
  259. layerweave-0.7.9b1/examples/showcases/late-bloom-scroll/assets/long-scroll.html +592 -0
  260. layerweave-0.7.9b1/examples/showcases/late-bloom-scroll/assets/long-scroll.svg +560 -0
  261. layerweave-0.7.9b1/examples/showcases/late-bloom-scroll/assets/overview.html +5 -0
  262. layerweave-0.7.9b1/examples/showcases/late-bloom-scroll/assets/overview.svg +560 -0
  263. layerweave-0.7.9b1/examples/showcases/late-bloom-scroll/assets/screenshots/frame-autumn.png +0 -0
  264. layerweave-0.7.9b1/examples/showcases/late-bloom-scroll/assets/screenshots/frame-spring.png +0 -0
  265. layerweave-0.7.9b1/examples/showcases/late-bloom-scroll/assets/screenshots/full-view.png +0 -0
  266. layerweave-0.7.9b1/examples/showcases/late-bloom-scroll/assets/screenshots/view-notes.png +0 -0
  267. layerweave-0.7.9b1/examples/showcases/late-bloom-scroll/project.json +1375 -0
  268. layerweave-0.7.9b1/examples/showcases/late-bloom-scroll/scenes/scene-1.svg +200 -0
  269. layerweave-0.7.9b1/examples/showcases/late-bloom-scroll/scenes/scene-2.svg +96 -0
  270. layerweave-0.7.9b1/examples/showcases/late-bloom-scroll/scenes/scene-3.svg +226 -0
  271. layerweave-0.7.9b1/examples/showcases/late-bloom-scroll/scenes/scene-4.svg +77 -0
  272. layerweave-0.7.9b1/examples/showcases/requirements-design/README.md +176 -0
  273. layerweave-0.7.9b1/examples/showcases/requirements-design/assets/01-availability.svg +8 -0
  274. layerweave-0.7.9b1/examples/showcases/requirements-design/assets/02-confirm.svg +8 -0
  275. layerweave-0.7.9b1/examples/showcases/requirements-design/assets/03-my-booking.svg +8 -0
  276. layerweave-0.7.9b1/examples/showcases/requirements-design/assets/README.md +9 -0
  277. layerweave-0.7.9b1/examples/showcases/requirements-design/project.json +1740 -0
  278. layerweave-0.7.9b1/examples/showcases/translation-review/README.md +150 -0
  279. layerweave-0.7.9b1/examples/showcases/translation-review/assets/source-en.md +22 -0
  280. layerweave-0.7.9b1/examples/showcases/translation-review/assets/translation-zh-initial.md +22 -0
  281. layerweave-0.7.9b1/examples/showcases/translation-review/assets/translation-zh.md +22 -0
  282. layerweave-0.7.9b1/examples/showcases/translation-review/explore.py +135 -0
  283. layerweave-0.7.9b1/examples/showcases/translation-review/project.json +2334 -0
  284. layerweave-0.7.9b1/examples/subtrees.py +49 -0
  285. layerweave-0.7.9b1/examples/sync_and_refresh.py +48 -0
  286. layerweave-0.7.9b1/examples/text.py +40 -0
  287. layerweave-0.7.9b1/examples/title.py +47 -0
  288. layerweave-0.7.9b1/examples/tool_tables.py +62 -0
  289. layerweave-0.7.9b1/examples/versions.py +24 -0
  290. layerweave-0.7.9b1/frontend/view/AGENTS.md +19 -0
  291. layerweave-0.7.9b1/frontend/view/example-plugin/plugin.js +96 -0
  292. layerweave-0.7.9b1/frontend/view/index.html +12 -0
  293. layerweave-0.7.9b1/frontend/view/package-lock.json +1460 -0
  294. layerweave-0.7.9b1/frontend/view/package.json +28 -0
  295. layerweave-0.7.9b1/frontend/view/src/App.tsx +76 -0
  296. layerweave-0.7.9b1/frontend/view/src/Header.tsx +92 -0
  297. layerweave-0.7.9b1/frontend/view/src/PluginManager.tsx +147 -0
  298. layerweave-0.7.9b1/frontend/view/src/actions.ts +190 -0
  299. layerweave-0.7.9b1/frontend/view/src/api.ts +52 -0
  300. layerweave-0.7.9b1/frontend/view/src/camera.ts +256 -0
  301. layerweave-0.7.9b1/frontend/view/src/canvas/BoardNode.tsx +293 -0
  302. layerweave-0.7.9b1/frontend/view/src/canvas/BoardSizing.tsx +75 -0
  303. layerweave-0.7.9b1/frontend/view/src/canvas/Flow.tsx +196 -0
  304. layerweave-0.7.9b1/frontend/view/src/canvas/Media.tsx +122 -0
  305. layerweave-0.7.9b1/frontend/view/src/canvas/ObjectBlock.tsx +79 -0
  306. layerweave-0.7.9b1/frontend/view/src/canvas/RelationEdge.tsx +19 -0
  307. layerweave-0.7.9b1/frontend/view/src/canvas/TrackMedia.tsx +395 -0
  308. layerweave-0.7.9b1/frontend/view/src/canvas/Waveform.tsx +88 -0
  309. layerweave-0.7.9b1/frontend/view/src/canvas/__tests__/TrackMedia.test.ts +296 -0
  310. layerweave-0.7.9b1/frontend/view/src/canvas/__tests__/Waveform.test.ts +42 -0
  311. layerweave-0.7.9b1/frontend/view/src/canvas/__tests__/capture.test.ts +52 -0
  312. layerweave-0.7.9b1/frontend/view/src/canvas/__tests__/drag.test.ts +75 -0
  313. layerweave-0.7.9b1/frontend/view/src/canvas/__tests__/imageCache.test.ts +46 -0
  314. layerweave-0.7.9b1/frontend/view/src/canvas/__tests__/mediaGeometry.test.ts +24 -0
  315. layerweave-0.7.9b1/frontend/view/src/canvas/__tests__/mediaLifecycle.test.ts +75 -0
  316. layerweave-0.7.9b1/frontend/view/src/canvas/__tests__/mediaQueue.test.ts +103 -0
  317. layerweave-0.7.9b1/frontend/view/src/canvas/__tests__/mediaUrl.test.ts +53 -0
  318. layerweave-0.7.9b1/frontend/view/src/canvas/dragState.ts +34 -0
  319. layerweave-0.7.9b1/frontend/view/src/canvas/drop.ts +29 -0
  320. layerweave-0.7.9b1/frontend/view/src/canvas/imageCache.ts +60 -0
  321. layerweave-0.7.9b1/frontend/view/src/canvas/mediaGeometry.ts +22 -0
  322. layerweave-0.7.9b1/frontend/view/src/canvas/mediaQueue.ts +70 -0
  323. layerweave-0.7.9b1/frontend/view/src/canvas/mediaUrl.ts +7 -0
  324. layerweave-0.7.9b1/frontend/view/src/canvas/relations.ts +51 -0
  325. layerweave-0.7.9b1/frontend/view/src/capture.ts +51 -0
  326. layerweave-0.7.9b1/frontend/view/src/i18n/__tests__/language.test.ts +66 -0
  327. layerweave-0.7.9b1/frontend/view/src/i18n/core.ts +16 -0
  328. layerweave-0.7.9b1/frontend/view/src/i18n/en.json +435 -0
  329. layerweave-0.7.9b1/frontend/view/src/i18n/index.ts +38 -0
  330. layerweave-0.7.9b1/frontend/view/src/i18n/store.ts +4 -0
  331. layerweave-0.7.9b1/frontend/view/src/i18n/types.ts +10 -0
  332. layerweave-0.7.9b1/frontend/view/src/i18n/zh.json +435 -0
  333. layerweave-0.7.9b1/frontend/view/src/main.tsx +8 -0
  334. layerweave-0.7.9b1/frontend/view/src/model/__tests__/content.test.ts +225 -0
  335. layerweave-0.7.9b1/frontend/view/src/model/__tests__/fixtures.ts +52 -0
  336. layerweave-0.7.9b1/frontend/view/src/model/__tests__/incremental.test.ts +79 -0
  337. layerweave-0.7.9b1/frontend/view/src/model/__tests__/layout.test.ts +109 -0
  338. layerweave-0.7.9b1/frontend/view/src/model/__tests__/model.test.ts +134 -0
  339. layerweave-0.7.9b1/frontend/view/src/model/__tests__/sharedLayout.test.ts +50 -0
  340. layerweave-0.7.9b1/frontend/view/src/model/__tests__/sync.test.ts +175 -0
  341. layerweave-0.7.9b1/frontend/view/src/model/__tests__/tree.test.ts +65 -0
  342. layerweave-0.7.9b1/frontend/view/src/model/__tests__/units.test.ts +44 -0
  343. layerweave-0.7.9b1/frontend/view/src/model/boardStyle.ts +47 -0
  344. layerweave-0.7.9b1/frontend/view/src/model/changes.ts +33 -0
  345. layerweave-0.7.9b1/frontend/view/src/model/dropRule.ts +34 -0
  346. layerweave-0.7.9b1/frontend/view/src/model/gaps.ts +46 -0
  347. layerweave-0.7.9b1/frontend/view/src/model/incremental.ts +46 -0
  348. layerweave-0.7.9b1/frontend/view/src/model/kinds.ts +12 -0
  349. layerweave-0.7.9b1/frontend/view/src/model/labels.ts +37 -0
  350. layerweave-0.7.9b1/frontend/view/src/model/layoutOps.ts +131 -0
  351. layerweave-0.7.9b1/frontend/view/src/model/link.ts +39 -0
  352. layerweave-0.7.9b1/frontend/view/src/model/model.ts +290 -0
  353. layerweave-0.7.9b1/frontend/view/src/model/navigate.ts +54 -0
  354. layerweave-0.7.9b1/frontend/view/src/model/notes.ts +73 -0
  355. layerweave-0.7.9b1/frontend/view/src/model/optimistic.ts +35 -0
  356. layerweave-0.7.9b1/frontend/view/src/model/syncGate.ts +26 -0
  357. layerweave-0.7.9b1/frontend/view/src/model/tree.ts +75 -0
  358. layerweave-0.7.9b1/frontend/view/src/model/units.ts +47 -0
  359. layerweave-0.7.9b1/frontend/view/src/params.ts +13 -0
  360. layerweave-0.7.9b1/frontend/view/src/plugin/Pager.tsx +29 -0
  361. layerweave-0.7.9b1/frontend/view/src/plugin/__tests__/pager.test.ts +18 -0
  362. layerweave-0.7.9b1/frontend/view/src/plugin/__tests__/plan.test.ts +36 -0
  363. layerweave-0.7.9b1/frontend/view/src/plugin/__tests__/slots.test.ts +28 -0
  364. layerweave-0.7.9b1/frontend/view/src/plugin/host.ts +93 -0
  365. layerweave-0.7.9b1/frontend/view/src/plugin/plan.ts +25 -0
  366. layerweave-0.7.9b1/frontend/view/src/plugin/registry.ts +90 -0
  367. layerweave-0.7.9b1/frontend/view/src/plugin/slots.tsx +37 -0
  368. layerweave-0.7.9b1/frontend/view/src/preferences.ts +7 -0
  369. layerweave-0.7.9b1/frontend/view/src/side/Card.tsx +78 -0
  370. layerweave-0.7.9b1/frontend/view/src/side/ChangesPanel.tsx +65 -0
  371. layerweave-0.7.9b1/frontend/view/src/side/NotesPanel.tsx +206 -0
  372. layerweave-0.7.9b1/frontend/view/src/side/NowPanel.tsx +67 -0
  373. layerweave-0.7.9b1/frontend/view/src/side/SidePanel.tsx +45 -0
  374. layerweave-0.7.9b1/frontend/view/src/side/WalkPanel.tsx +101 -0
  375. layerweave-0.7.9b1/frontend/view/src/store.ts +171 -0
  376. layerweave-0.7.9b1/frontend/view/src/styles.css +362 -0
  377. layerweave-0.7.9b1/frontend/view/src/sync.ts +386 -0
  378. layerweave-0.7.9b1/frontend/view/src/tree/LayerTree.tsx +110 -0
  379. layerweave-0.7.9b1/frontend/view/src/types.ts +194 -0
  380. layerweave-0.7.9b1/frontend/view/tools/copy-locales.mjs +4 -0
  381. layerweave-0.7.9b1/frontend/view/tools/export-plugin-sdk.mjs +51 -0
  382. layerweave-0.7.9b1/frontend/view/tools/third-party-notices.mjs +47 -0
  383. layerweave-0.7.9b1/frontend/view/tsconfig.json +25 -0
  384. layerweave-0.7.9b1/frontend/view/vite.config.ts +23 -0
  385. layerweave-0.7.9b1/pyproject.toml +53 -0
  386. layerweave-0.7.9b1/setup.cfg +4 -0
  387. layerweave-0.7.9b1/setup.py +9 -0
  388. layerweave-0.7.9b1/src/layerweave/__init__.py +4 -0
  389. layerweave-0.7.9b1/src/layerweave/__main__.py +5 -0
  390. layerweave-0.7.9b1/src/layerweave/component.toml +5 -0
  391. layerweave-0.7.9b1/src/layerweave/configs/README.md +15 -0
  392. layerweave-0.7.9b1/src/layerweave/configs/layers/README.md +41 -0
  393. layerweave-0.7.9b1/src/layerweave/configs/layers/active.toml +27 -0
  394. layerweave-0.7.9b1/src/layerweave/configs/layers/audio.toml +27 -0
  395. layerweave-0.7.9b1/src/layerweave/configs/layers/base.toml +47 -0
  396. layerweave-0.7.9b1/src/layerweave/configs/layers/image.toml +28 -0
  397. layerweave-0.7.9b1/src/layerweave/configs/layers/model.toml +25 -0
  398. layerweave-0.7.9b1/src/layerweave/configs/layers/movie.toml +31 -0
  399. layerweave-0.7.9b1/src/layerweave/configs/layers/note.toml +27 -0
  400. layerweave-0.7.9b1/src/layerweave/configs/layers/text.toml +29 -0
  401. layerweave-0.7.9b1/src/layerweave/configs/logging/README.md +7 -0
  402. layerweave-0.7.9b1/src/layerweave/configs/logging/diagnostics.toml +29 -0
  403. layerweave-0.7.9b1/src/layerweave/configs/objects/README.md +11 -0
  404. layerweave-0.7.9b1/src/layerweave/configs/objects/active.toml +34 -0
  405. layerweave-0.7.9b1/src/layerweave/configs/objects/audio.toml +32 -0
  406. layerweave-0.7.9b1/src/layerweave/configs/objects/base.toml +46 -0
  407. layerweave-0.7.9b1/src/layerweave/configs/objects/image.toml +32 -0
  408. layerweave-0.7.9b1/src/layerweave/configs/objects/model.toml +34 -0
  409. layerweave-0.7.9b1/src/layerweave/configs/objects/movie.toml +32 -0
  410. layerweave-0.7.9b1/src/layerweave/configs/objects/note.toml +29 -0
  411. layerweave-0.7.9b1/src/layerweave/configs/objects/text.toml +32 -0
  412. layerweave-0.7.9b1/src/layerweave/configs/objects/title.toml +16 -0
  413. layerweave-0.7.9b1/src/layerweave/core/README.md +9 -0
  414. layerweave-0.7.9b1/src/layerweave/core/__init__.py +15 -0
  415. layerweave-0.7.9b1/src/layerweave/core/encapsulation.py +55 -0
  416. layerweave-0.7.9b1/src/layerweave/core/identity.py +11 -0
  417. layerweave-0.7.9b1/src/layerweave/core/values.py +12 -0
  418. layerweave-0.7.9b1/src/layerweave/models/README.md +30 -0
  419. layerweave-0.7.9b1/src/layerweave/models/__init__.py +17 -0
  420. layerweave-0.7.9b1/src/layerweave/models/layers/__init__.py +15 -0
  421. layerweave-0.7.9b1/src/layerweave/models/layers/active.py +7 -0
  422. layerweave-0.7.9b1/src/layerweave/models/layers/audio.py +7 -0
  423. layerweave-0.7.9b1/src/layerweave/models/layers/base.py +20 -0
  424. layerweave-0.7.9b1/src/layerweave/models/layers/image.py +7 -0
  425. layerweave-0.7.9b1/src/layerweave/models/layers/model.py +7 -0
  426. layerweave-0.7.9b1/src/layerweave/models/layers/movie.py +7 -0
  427. layerweave-0.7.9b1/src/layerweave/models/layers/text.py +7 -0
  428. layerweave-0.7.9b1/src/layerweave/models/objects/__init__.py +15 -0
  429. layerweave-0.7.9b1/src/layerweave/models/objects/active.py +7 -0
  430. layerweave-0.7.9b1/src/layerweave/models/objects/audio.py +7 -0
  431. layerweave-0.7.9b1/src/layerweave/models/objects/base.py +19 -0
  432. layerweave-0.7.9b1/src/layerweave/models/objects/image.py +7 -0
  433. layerweave-0.7.9b1/src/layerweave/models/objects/model.py +7 -0
  434. layerweave-0.7.9b1/src/layerweave/models/objects/movie.py +7 -0
  435. layerweave-0.7.9b1/src/layerweave/models/objects/text.py +7 -0
  436. layerweave-0.7.9b1/src/layerweave/models/objects/title.py +7 -0
  437. layerweave-0.7.9b1/src/layerweave/support/API.md +167 -0
  438. layerweave-0.7.9b1/src/layerweave/support/DIAGNOSTICS.md +50 -0
  439. layerweave-0.7.9b1/src/layerweave/support/README.md +18 -0
  440. layerweave-0.7.9b1/src/layerweave/support/__init__.py +1 -0
  441. layerweave-0.7.9b1/src/layerweave/support/api.py +65 -0
  442. layerweave-0.7.9b1/src/layerweave/support/channel.py +35 -0
  443. layerweave-0.7.9b1/src/layerweave/support/cli.py +47 -0
  444. layerweave-0.7.9b1/src/layerweave/support/command_schema.py +61 -0
  445. layerweave-0.7.9b1/src/layerweave/support/command_sources.py +59 -0
  446. layerweave-0.7.9b1/src/layerweave/support/commands.py +142 -0
  447. layerweave-0.7.9b1/src/layerweave/support/configuration/README.md +69 -0
  448. layerweave-0.7.9b1/src/layerweave/support/configuration/__init__.py +1 -0
  449. layerweave-0.7.9b1/src/layerweave/support/configuration/loader.py +164 -0
  450. layerweave-0.7.9b1/src/layerweave/support/diagnostics.py +95 -0
  451. layerweave-0.7.9b1/src/layerweave/support/feedback.py +100 -0
  452. layerweave-0.7.9b1/src/layerweave/support/numbering/README.md +125 -0
  453. layerweave-0.7.9b1/src/layerweave/support/numbering/__init__.py +5 -0
  454. layerweave-0.7.9b1/src/layerweave/support/numbering/registry.py +139 -0
  455. layerweave-0.7.9b1/src/layerweave/support/numbering/service.py +71 -0
  456. layerweave-0.7.9b1/src/layerweave/support/numbering/state.py +138 -0
  457. layerweave-0.7.9b1/src/layerweave/support/operation.py +32 -0
  458. layerweave-0.7.9b1/src/layerweave/support/paths.py +8 -0
  459. layerweave-0.7.9b1/src/layerweave/support/positions.py +83 -0
  460. layerweave-0.7.9b1/src/layerweave/support/providers.py +39 -0
  461. layerweave-0.7.9b1/src/layerweave/support/records.py +46 -0
  462. layerweave-0.7.9b1/src/layerweave/support/storage/README.md +18 -0
  463. layerweave-0.7.9b1/src/layerweave/support/storage/SCHEMA.md +113 -0
  464. layerweave-0.7.9b1/src/layerweave/support/storage/__init__.py +1 -0
  465. layerweave-0.7.9b1/src/layerweave/support/storage/assembly.py +61 -0
  466. layerweave-0.7.9b1/src/layerweave/support/storage/change_feed.py +39 -0
  467. layerweave-0.7.9b1/src/layerweave/support/storage/crud.py +236 -0
  468. layerweave-0.7.9b1/src/layerweave/support/storage/database.py +86 -0
  469. layerweave-0.7.9b1/src/layerweave/support/storage/details.py +89 -0
  470. layerweave-0.7.9b1/src/layerweave/support/storage/errors.py +116 -0
  471. layerweave-0.7.9b1/src/layerweave/support/storage/journal.py +48 -0
  472. layerweave-0.7.9b1/src/layerweave/support/storage/log_reader.py +40 -0
  473. layerweave-0.7.9b1/src/layerweave/support/storage/models.py +67 -0
  474. layerweave-0.7.9b1/src/layerweave/support/storage/queries.py +80 -0
  475. layerweave-0.7.9b1/src/layerweave/support/storage/references.py +41 -0
  476. layerweave-0.7.9b1/src/layerweave/support/storage/restoration.py +41 -0
  477. layerweave-0.7.9b1/src/layerweave/support/storage/save.py +153 -0
  478. layerweave-0.7.9b1/src/layerweave/support/storage/schema.sql +95 -0
  479. layerweave-0.7.9b1/src/layerweave/support/storage/snapshot.py +12 -0
  480. layerweave-0.7.9b1/src/layerweave/support/storage/tables.py +244 -0
  481. layerweave-0.7.9b1/src/layerweave/support/transaction.py +152 -0
  482. layerweave-0.7.9b1/src/layerweave/support/values.py +2 -0
  483. layerweave-0.7.9b1/src/layerweave/tool/README.md +100 -0
  484. layerweave-0.7.9b1/src/layerweave/tool/__init__.py +1 -0
  485. layerweave-0.7.9b1/src/layerweave/tool/builtin/README.md +19 -0
  486. layerweave-0.7.9b1/src/layerweave/tool/builtin/__init__.py +1 -0
  487. layerweave-0.7.9b1/src/layerweave/tool/builtin/developer/README.md +67 -0
  488. layerweave-0.7.9b1/src/layerweave/tool/builtin/developer/SKILLS.md +74 -0
  489. layerweave-0.7.9b1/src/layerweave/tool/builtin/developer/TOOL_TYPES.md +57 -0
  490. layerweave-0.7.9b1/src/layerweave/tool/builtin/developer/__init__.py +1 -0
  491. layerweave-0.7.9b1/src/layerweave/tool/builtin/developer/database/__init__.py +1 -0
  492. layerweave-0.7.9b1/src/layerweave/tool/builtin/developer/database/cli.py +41 -0
  493. layerweave-0.7.9b1/src/layerweave/tool/builtin/developer/database/component.toml +5 -0
  494. layerweave-0.7.9b1/src/layerweave/tool/builtin/developer/keys/README.md +150 -0
  495. layerweave-0.7.9b1/src/layerweave/tool/builtin/developer/keys/__init__.py +1 -0
  496. layerweave-0.7.9b1/src/layerweave/tool/builtin/developer/keys/cli.py +146 -0
  497. layerweave-0.7.9b1/src/layerweave/tool/builtin/developer/keys/component.toml +5 -0
  498. layerweave-0.7.9b1/src/layerweave/tool/builtin/developer/keys/example.json +9 -0
  499. layerweave-0.7.9b1/src/layerweave/tool/builtin/developer/keys/service.py +164 -0
  500. layerweave-0.7.9b1/src/layerweave/tool/builtin/developer/skills/__init__.py +1 -0
  501. layerweave-0.7.9b1/src/layerweave/tool/builtin/developer/skills/cli.py +197 -0
  502. layerweave-0.7.9b1/src/layerweave/tool/builtin/developer/skills/component.toml +5 -0
  503. layerweave-0.7.9b1/src/layerweave/tool/builtin/developer/versions/README.md +84 -0
  504. layerweave-0.7.9b1/src/layerweave/tool/builtin/developer/versions/__init__.py +4 -0
  505. layerweave-0.7.9b1/src/layerweave/tool/builtin/developer/versions/cli.py +83 -0
  506. layerweave-0.7.9b1/src/layerweave/tool/builtin/developer/versions/component.toml +5 -0
  507. layerweave-0.7.9b1/src/layerweave/tool/builtin/developer/versions/discovery.py +72 -0
  508. layerweave-0.7.9b1/src/layerweave/tool/builtin/developer/versions/service.py +91 -0
  509. layerweave-0.7.9b1/src/layerweave/tool/builtin/shared/__init__.py +1 -0
  510. layerweave-0.7.9b1/src/layerweave/tool/builtin/shared/help/COMMANDS.md +75 -0
  511. layerweave-0.7.9b1/src/layerweave/tool/builtin/shared/help/CONFIG_HELP.md +95 -0
  512. layerweave-0.7.9b1/src/layerweave/tool/builtin/shared/help/README.md +22 -0
  513. layerweave-0.7.9b1/src/layerweave/tool/builtin/shared/help/__init__.py +1 -0
  514. layerweave-0.7.9b1/src/layerweave/tool/builtin/shared/help/catalog.py +180 -0
  515. layerweave-0.7.9b1/src/layerweave/tool/builtin/shared/help/command_help.py +72 -0
  516. layerweave-0.7.9b1/src/layerweave/tool/builtin/shared/help/component.toml +5 -0
  517. layerweave-0.7.9b1/src/layerweave/tool/builtin/shared/help/config_help.py +244 -0
  518. layerweave-0.7.9b1/src/layerweave/tool/builtin/shared/help/help_data.py +106 -0
  519. layerweave-0.7.9b1/src/layerweave/tool/builtin/shared/launcher/README.md +45 -0
  520. layerweave-0.7.9b1/src/layerweave/tool/builtin/shared/launcher/__init__.py +1 -0
  521. layerweave-0.7.9b1/src/layerweave/tool/builtin/shared/launcher/__main__.py +100 -0
  522. layerweave-0.7.9b1/src/layerweave/tool/builtin/shared/launcher/catalog.py +105 -0
  523. layerweave-0.7.9b1/src/layerweave/tool/builtin/shared/launcher/component.toml +5 -0
  524. layerweave-0.7.9b1/src/layerweave/tool/builtin/shared/launcher/projects.py +83 -0
  525. layerweave-0.7.9b1/src/layerweave/tool/builtin/shared/mcp/README.md +236 -0
  526. layerweave-0.7.9b1/src/layerweave/tool/builtin/shared/mcp/__init__.py +14 -0
  527. layerweave-0.7.9b1/src/layerweave/tool/builtin/shared/mcp/__main__.py +56 -0
  528. layerweave-0.7.9b1/src/layerweave/tool/builtin/shared/mcp/catalog.py +204 -0
  529. layerweave-0.7.9b1/src/layerweave/tool/builtin/shared/mcp/component.toml +5 -0
  530. layerweave-0.7.9b1/src/layerweave/tool/builtin/shared/mcp/example.json +10 -0
  531. layerweave-0.7.9b1/src/layerweave/tool/builtin/shared/mcp/materials.py +72 -0
  532. layerweave-0.7.9b1/src/layerweave/tool/builtin/shared/mcp/results.py +185 -0
  533. layerweave-0.7.9b1/src/layerweave/tool/builtin/shared/mcp/runtime.py +368 -0
  534. layerweave-0.7.9b1/src/layerweave/tool/builtin/shared/mcp/server.py +133 -0
  535. layerweave-0.7.9b1/src/layerweave/tool/builtin/shared/mcp/settings.py +68 -0
  536. layerweave-0.7.9b1/src/layerweave/tool/builtin/usage/CRUD.md +152 -0
  537. layerweave-0.7.9b1/src/layerweave/tool/builtin/usage/EDITING.md +239 -0
  538. layerweave-0.7.9b1/src/layerweave/tool/builtin/usage/GUIDE.md +357 -0
  539. layerweave-0.7.9b1/src/layerweave/tool/builtin/usage/HISTORY.md +130 -0
  540. layerweave-0.7.9b1/src/layerweave/tool/builtin/usage/README.md +85 -0
  541. layerweave-0.7.9b1/src/layerweave/tool/builtin/usage/SUBTREES.md +88 -0
  542. layerweave-0.7.9b1/src/layerweave/tool/builtin/usage/__init__.py +1 -0
  543. layerweave-0.7.9b1/src/layerweave/tool/builtin/usage/editing/IMPLEMENTATION.md +35 -0
  544. layerweave-0.7.9b1/src/layerweave/tool/builtin/usage/editing/TREES.md +27 -0
  545. layerweave-0.7.9b1/src/layerweave/tool/builtin/usage/editing/__init__.py +1 -0
  546. layerweave-0.7.9b1/src/layerweave/tool/builtin/usage/editing/_plan.py +59 -0
  547. layerweave-0.7.9b1/src/layerweave/tool/builtin/usage/editing/_records.py +61 -0
  548. layerweave-0.7.9b1/src/layerweave/tool/builtin/usage/editing/component.toml +5 -0
  549. layerweave-0.7.9b1/src/layerweave/tool/builtin/usage/editing/gaps.py +122 -0
  550. layerweave-0.7.9b1/src/layerweave/tool/builtin/usage/editing/objects.py +158 -0
  551. layerweave-0.7.9b1/src/layerweave/tool/builtin/usage/editing/positions.py +260 -0
  552. layerweave-0.7.9b1/src/layerweave/tool/builtin/usage/editing/split.py +71 -0
  553. layerweave-0.7.9b1/src/layerweave/tool/builtin/usage/editing/subtrees.py +95 -0
  554. layerweave-0.7.9b1/src/layerweave/tool/builtin/usage/editing/timeline.py +263 -0
  555. layerweave-0.7.9b1/src/layerweave/tool/builtin/usage/editing/transfer.py +68 -0
  556. layerweave-0.7.9b1/src/layerweave/tool/builtin/usage/editing/transfer_objects.py +57 -0
  557. layerweave-0.7.9b1/src/layerweave/tool/builtin/usage/editing/tree_service.py +263 -0
  558. layerweave-0.7.9b1/src/layerweave/tool/builtin/usage/editing/upsert.py +149 -0
  559. layerweave-0.7.9b1/src/layerweave/tool/builtin/usage/exchange/DEVELOPMENT.md +70 -0
  560. layerweave-0.7.9b1/src/layerweave/tool/builtin/usage/exchange/FORMAT.md +152 -0
  561. layerweave-0.7.9b1/src/layerweave/tool/builtin/usage/exchange/README.md +117 -0
  562. layerweave-0.7.9b1/src/layerweave/tool/builtin/usage/exchange/__init__.py +15 -0
  563. layerweave-0.7.9b1/src/layerweave/tool/builtin/usage/exchange/cli.py +291 -0
  564. layerweave-0.7.9b1/src/layerweave/tool/builtin/usage/exchange/component.toml +5 -0
  565. layerweave-0.7.9b1/src/layerweave/tool/builtin/usage/exchange/exporting.py +139 -0
  566. layerweave-0.7.9b1/src/layerweave/tool/builtin/usage/exchange/files.py +61 -0
  567. layerweave-0.7.9b1/src/layerweave/tool/builtin/usage/exchange/format.py +73 -0
  568. layerweave-0.7.9b1/src/layerweave/tool/builtin/usage/exchange/importing.py +358 -0
  569. layerweave-0.7.9b1/src/layerweave/tool/builtin/usage/exchange/templates/hand-drawn-video.json +339 -0
  570. layerweave-0.7.9b1/src/layerweave/tool/builtin/usage/exchange/templates/storyboard.json +175 -0
  571. layerweave-0.7.9b1/src/layerweave/tool/builtin/usage/exchange/templates/subtitles.json +17 -0
  572. layerweave-0.7.9b1/src/layerweave/tool/builtin/usage/history/__init__.py +1 -0
  573. layerweave-0.7.9b1/src/layerweave/tool/builtin/usage/history/cli.py +102 -0
  574. layerweave-0.7.9b1/src/layerweave/tool/builtin/usage/history/component.toml +5 -0
  575. layerweave-0.7.9b1/src/layerweave/tool/builtin/usage/history/service.py +83 -0
  576. layerweave-0.7.9b1/src/layerweave/tool/builtin/usage/query/__init__.py +1 -0
  577. layerweave-0.7.9b1/src/layerweave/tool/builtin/usage/query/_hierarchy.py +24 -0
  578. layerweave-0.7.9b1/src/layerweave/tool/builtin/usage/query/component.toml +5 -0
  579. layerweave-0.7.9b1/src/layerweave/tool/builtin/usage/query/find_objects.py +68 -0
  580. layerweave-0.7.9b1/src/layerweave/tool/builtin/usage/query/free_ranges.py +103 -0
  581. layerweave-0.7.9b1/src/layerweave/tool/builtin/usage/query/project_details.py +115 -0
  582. layerweave-0.7.9b1/src/layerweave/tool/builtin/usage/query/project_overview.py +78 -0
  583. layerweave-0.7.9b1/src/layerweave/tool/builtin/usage/query/relations.py +58 -0
  584. layerweave-0.7.9b1/src/layerweave/tool/builtin/usage/query/walk.py +106 -0
  585. layerweave-0.7.9b1/src/layerweave/tool/builtin/usage/records/__init__.py +1 -0
  586. layerweave-0.7.9b1/src/layerweave/tool/builtin/usage/records/cli.py +133 -0
  587. layerweave-0.7.9b1/src/layerweave/tool/builtin/usage/records/component.toml +5 -0
  588. layerweave-0.7.9b1/src/layerweave/tool/builtin/usage/records/dispatch.py +95 -0
  589. layerweave-0.7.9b1/src/layerweave/tool/builtin/usage/records/save.py +14 -0
  590. layerweave-0.7.9b1/src/layerweave/tool/builtin/usage/text/__init__.py +1 -0
  591. layerweave-0.7.9b1/src/layerweave/tool/builtin/usage/text/collect.py +107 -0
  592. layerweave-0.7.9b1/src/layerweave/tool/builtin/usage/text/component.toml +5 -0
  593. layerweave-0.7.9b1/src/layerweave/tool/builtin/usage/undo/IMPLEMENTATION.md +33 -0
  594. layerweave-0.7.9b1/src/layerweave/tool/builtin/usage/undo/__init__.py +1 -0
  595. layerweave-0.7.9b1/src/layerweave/tool/builtin/usage/undo/cli.py +59 -0
  596. layerweave-0.7.9b1/src/layerweave/tool/builtin/usage/undo/component.toml +5 -0
  597. layerweave-0.7.9b1/src/layerweave/tool/builtin/usage/undo/service.py +149 -0
  598. layerweave-0.7.9b1/src/layerweave/tool/builtin/usage/validation/README.md +19 -0
  599. layerweave-0.7.9b1/src/layerweave/tool/builtin/usage/validation/RULES.md +137 -0
  600. layerweave-0.7.9b1/src/layerweave/tool/builtin/usage/validation/__init__.py +2 -0
  601. layerweave-0.7.9b1/src/layerweave/tool/builtin/usage/validation/cli.py +62 -0
  602. layerweave-0.7.9b1/src/layerweave/tool/builtin/usage/validation/component.toml +5 -0
  603. layerweave-0.7.9b1/src/layerweave/tool/builtin/usage/validation/declarations.py +33 -0
  604. layerweave-0.7.9b1/src/layerweave/tool/builtin/usage/validation/recheck.py +41 -0
  605. layerweave-0.7.9b1/src/layerweave/tool/builtin/usage/validation/registry.py +50 -0
  606. layerweave-0.7.9b1/src/layerweave/tool/builtin/usage/validation/rules/__init__.py +1 -0
  607. layerweave-0.7.9b1/src/layerweave/tool/builtin/usage/validation/rules/binds.py +17 -0
  608. layerweave-0.7.9b1/src/layerweave/tool/builtin/usage/validation/rules/fields.py +74 -0
  609. layerweave-0.7.9b1/src/layerweave/tool/builtin/usage/validation/rules/layers.py +89 -0
  610. layerweave-0.7.9b1/src/layerweave/tool/builtin/usage/validation/rules/objects.py +21 -0
  611. layerweave-0.7.9b1/src/layerweave/tool/builtin/usage/validation/runner.py +231 -0
  612. layerweave-0.7.9b1/src/layerweave/tool/builtin/view/DEVELOPMENT.md +108 -0
  613. layerweave-0.7.9b1/src/layerweave/tool/builtin/view/GUIDE.md +189 -0
  614. layerweave-0.7.9b1/src/layerweave/tool/builtin/view/INCREMENTAL.md +123 -0
  615. layerweave-0.7.9b1/src/layerweave/tool/builtin/view/LANGUAGES.md +69 -0
  616. layerweave-0.7.9b1/src/layerweave/tool/builtin/view/PERFORMANCE.md +149 -0
  617. layerweave-0.7.9b1/src/layerweave/tool/builtin/view/PLUGINS.md +168 -0
  618. layerweave-0.7.9b1/src/layerweave/tool/builtin/view/README.md +44 -0
  619. layerweave-0.7.9b1/src/layerweave/tool/builtin/view/__init__.py +2 -0
  620. layerweave-0.7.9b1/src/layerweave/tool/builtin/view/at.py +230 -0
  621. layerweave-0.7.9b1/src/layerweave/tool/builtin/view/bench.py +773 -0
  622. layerweave-0.7.9b1/src/layerweave/tool/builtin/view/component.toml +5 -0
  623. layerweave-0.7.9b1/src/layerweave/tool/builtin/view/data.py +390 -0
  624. layerweave-0.7.9b1/src/layerweave/tool/builtin/view/documents.py +44 -0
  625. layerweave-0.7.9b1/src/layerweave/tool/builtin/view/fold.py +186 -0
  626. layerweave-0.7.9b1/src/layerweave/tool/builtin/view/frame.py +89 -0
  627. layerweave-0.7.9b1/src/layerweave/tool/builtin/view/i18n.py +58 -0
  628. layerweave-0.7.9b1/src/layerweave/tool/builtin/view/incremental.py +62 -0
  629. layerweave-0.7.9b1/src/layerweave/tool/builtin/view/layout-defaults.json +1 -0
  630. layerweave-0.7.9b1/src/layerweave/tool/builtin/view/layout.py +466 -0
  631. layerweave-0.7.9b1/src/layerweave/tool/builtin/view/layout_geometry.py +166 -0
  632. layerweave-0.7.9b1/src/layerweave/tool/builtin/view/layout_store.py +94 -0
  633. layerweave-0.7.9b1/src/layerweave/tool/builtin/view/locales/en.json +435 -0
  634. layerweave-0.7.9b1/src/layerweave/tool/builtin/view/locales/zh.json +435 -0
  635. layerweave-0.7.9b1/src/layerweave/tool/builtin/view/mcp.py +70 -0
  636. layerweave-0.7.9b1/src/layerweave/tool/builtin/view/note.py +484 -0
  637. layerweave-0.7.9b1/src/layerweave/tool/builtin/view/notes/__init__.py +6 -0
  638. layerweave-0.7.9b1/src/layerweave/tool/builtin/view/notes/models.py +15 -0
  639. layerweave-0.7.9b1/src/layerweave/tool/builtin/view/notes/reads.py +32 -0
  640. layerweave-0.7.9b1/src/layerweave/tool/builtin/view/plugin_manifest.py +158 -0
  641. layerweave-0.7.9b1/src/layerweave/tool/builtin/view/plugin_market.py +345 -0
  642. layerweave-0.7.9b1/src/layerweave/tool/builtin/view/plugin_store.py +147 -0
  643. layerweave-0.7.9b1/src/layerweave/tool/builtin/view/plugins.py +337 -0
  644. layerweave-0.7.9b1/src/layerweave/tool/builtin/view/screenshot.py +500 -0
  645. layerweave-0.7.9b1/src/layerweave/tool/builtin/view/sdk/host-api-3/canvas/Media.d.ts +38 -0
  646. layerweave-0.7.9b1/src/layerweave/tool/builtin/view/sdk/host-api-3/canvas/Waveform.d.ts +14 -0
  647. layerweave-0.7.9b1/src/layerweave/tool/builtin/view/sdk/host-api-3/canvas/imageCache.d.ts +19 -0
  648. layerweave-0.7.9b1/src/layerweave/tool/builtin/view/sdk/host-api-3/canvas/mediaUrl.d.ts +1 -0
  649. layerweave-0.7.9b1/src/layerweave/tool/builtin/view/sdk/host-api-3/i18n/types.d.ts +19 -0
  650. layerweave-0.7.9b1/src/layerweave/tool/builtin/view/sdk/host-api-3/index.d.ts +3 -0
  651. layerweave-0.7.9b1/src/layerweave/tool/builtin/view/sdk/host-api-3/model/kinds.d.ts +5 -0
  652. layerweave-0.7.9b1/src/layerweave/tool/builtin/view/sdk/host-api-3/model/model.d.ts +126 -0
  653. layerweave-0.7.9b1/src/layerweave/tool/builtin/view/sdk/host-api-3/model/units.d.ts +11 -0
  654. layerweave-0.7.9b1/src/layerweave/tool/builtin/view/sdk/host-api-3/plugin/Pager.d.ts +13 -0
  655. layerweave-0.7.9b1/src/layerweave/tool/builtin/view/sdk/host-api-3/plugin/host.d.ts +80 -0
  656. layerweave-0.7.9b1/src/layerweave/tool/builtin/view/sdk/host-api-3/snapshot.json +6 -0
  657. layerweave-0.7.9b1/src/layerweave/tool/builtin/view/sdk/host-api-3/types.d.ts +272 -0
  658. layerweave-0.7.9b1/src/layerweave/tool/builtin/view/server.py +409 -0
  659. layerweave-0.7.9b1/src/layerweave/tool/builtin/view/state.py +117 -0
  660. layerweave-0.7.9b1/src/layerweave/tool/builtin/view/tables.py +108 -0
  661. layerweave-0.7.9b1/src/layerweave/tool/builtin/view/walk.py +284 -0
  662. layerweave-0.7.9b1/src/layerweave/tool/builtin/view/web/assets/index-DQQk37Kj.css +1 -0
  663. layerweave-0.7.9b1/src/layerweave/tool/builtin/view/web/assets/index-Dx0OF4OV.js +28 -0
  664. layerweave-0.7.9b1/src/layerweave/tool/builtin/view/web/index.html +13 -0
  665. layerweave-0.7.9b1/src/layerweave/tool/skills/layers/active/puppet-motion/SKILL.md +51 -0
  666. layerweave-0.7.9b1/src/layerweave/tool/skills/layers/active/puppet-motion/assets/Puppet.tsx +132 -0
  667. layerweave-0.7.9b1/src/layerweave/tool/skills/layers/audio/audio-cues/SKILL.md +38 -0
  668. layerweave-0.7.9b1/src/layerweave/tool/skills/layers/audio/audio-cues/requirements.txt +6 -0
  669. layerweave-0.7.9b1/src/layerweave/tool/skills/layers/audio/audio-cues/scripts/cues.py +134 -0
  670. layerweave-0.7.9b1/src/layerweave/tool/skills/layers/image/image-generate/SKILL.md +40 -0
  671. layerweave-0.7.9b1/src/layerweave/tool/skills/layers/image/image-generate/references/sketch-guide.md +27 -0
  672. layerweave-0.7.9b1/src/layerweave/tool/skills/layers/image/image-generate/scripts/client.py +94 -0
  673. layerweave-0.7.9b1/src/layerweave/tool/skills/layers/image/image-generate/scripts/generate.py +74 -0
  674. layerweave-0.7.9b1/src/layerweave/tool/skills/layers/image/image-generate/scripts/models.py +29 -0
  675. layerweave-0.7.9b1/src/layerweave/tool/skills/layers/image/image-halftone/SKILL.md +37 -0
  676. layerweave-0.7.9b1/src/layerweave/tool/skills/layers/image/image-halftone/requirements.txt +2 -0
  677. layerweave-0.7.9b1/src/layerweave/tool/skills/layers/image/image-halftone/scripts/halftone.py +75 -0
  678. layerweave-0.7.9b1/src/layerweave/tool/skills/layers/image/image-halftone/scripts/halftone_grid.py +50 -0
  679. layerweave-0.7.9b1/src/layerweave/tool/skills/layers/movie/remotion-animate/SKILL.md +55 -0
  680. layerweave-0.7.9b1/src/layerweave/tool/skills/layers/movie/remotion-animate/assets/template/package.json +25 -0
  681. layerweave-0.7.9b1/src/layerweave/tool/skills/layers/movie/remotion-animate/assets/template/public/media/README.md +5 -0
  682. layerweave-0.7.9b1/src/layerweave/tool/skills/layers/movie/remotion-animate/assets/template/remotion.config.ts +10 -0
  683. layerweave-0.7.9b1/src/layerweave/tool/skills/layers/movie/remotion-animate/assets/template/scripts/render.mjs +46 -0
  684. layerweave-0.7.9b1/src/layerweave/tool/skills/layers/movie/remotion-animate/assets/template/scripts/stills.mjs +38 -0
  685. layerweave-0.7.9b1/src/layerweave/tool/skills/layers/movie/remotion-animate/assets/template/src/Film.tsx +45 -0
  686. layerweave-0.7.9b1/src/layerweave/tool/skills/layers/movie/remotion-animate/assets/template/src/Root.tsx +17 -0
  687. layerweave-0.7.9b1/src/layerweave/tool/skills/layers/movie/remotion-animate/assets/template/src/index.ts +4 -0
  688. layerweave-0.7.9b1/src/layerweave/tool/skills/layers/movie/remotion-animate/assets/template/src/scenes/Dots.tsx +29 -0
  689. layerweave-0.7.9b1/src/layerweave/tool/skills/layers/movie/remotion-animate/assets/template/src/scenes/Intro.tsx +21 -0
  690. layerweave-0.7.9b1/src/layerweave/tool/skills/layers/movie/remotion-animate/assets/template/src/time.ts +44 -0
  691. layerweave-0.7.9b1/src/layerweave/tool/skills/layers/movie/remotion-animate/assets/template/src/ui/Layer.tsx +47 -0
  692. layerweave-0.7.9b1/src/layerweave/tool/skills/layers/movie/remotion-animate/assets/template/src/ui/Subtitles.tsx +54 -0
  693. layerweave-0.7.9b1/src/layerweave/tool/skills/layers/movie/remotion-animate/assets/template/tsconfig.json +17 -0
  694. layerweave-0.7.9b1/src/layerweave/tool/skills/layers/movie/remotion-animate/references/patterns.md +31 -0
  695. layerweave-0.7.9b1/src/layerweave/tool/skills/layers/movie/video-generate/SKILL.md +48 -0
  696. layerweave-0.7.9b1/src/layerweave/tool/skills/layers/movie/video-generate/requirements.txt +1 -0
  697. layerweave-0.7.9b1/src/layerweave/tool/skills/layers/movie/video-generate/scripts/video.py +196 -0
  698. layerweave-0.7.9b1/src/layerweave/tool/skills/layers/movie/video-master/SKILL.md +49 -0
  699. layerweave-0.7.9b1/src/layerweave/tool/skills/layers/movie/video-timing/SKILL.md +75 -0
  700. layerweave-0.7.9b1/src/layerweave/tool/skills/layers/movie/video-timing/requirements.txt +4 -0
  701. layerweave-0.7.9b1/src/layerweave/tool/skills/layers/movie/video-timing/scripts/actors.py +163 -0
  702. layerweave-0.7.9b1/src/layerweave/tool/skills/layers/movie/video-timing/scripts/durtable.py +105 -0
  703. layerweave-0.7.9b1/src/layerweave/tool/skills/layers/movie/video-timing/scripts/keys.py +149 -0
  704. layerweave-0.7.9b1/src/layerweave/tool/skills/layers/movie/video-timing/scripts/review.py +156 -0
  705. layerweave-0.7.9b1/src/layerweave/tool/skills/layers/movie/video-timing/scripts/xsheet.py +107 -0
  706. layerweave-0.7.9b1/src/layerweave/tool/skills/layers/movie/video-verify/SKILL.md +28 -0
  707. layerweave-0.7.9b1/src/layerweave/tool/skills/layers/movie/video-verify/requirements.txt +3 -0
  708. layerweave-0.7.9b1/src/layerweave/tool/skills/layers/movie/video-verify/scripts/verify.py +120 -0
  709. layerweave-0.7.9b1/src/layerweave/tool/skills/layers/text/glyph-deform/SKILL.md +47 -0
  710. layerweave-0.7.9b1/src/layerweave/tool/skills/layers/text/glyph-deform/assets/GlyphStudy.example.tsx +50 -0
  711. layerweave-0.7.9b1/src/layerweave/tool/skills/layers/text/glyph-deform/assets/GlyphWord.tsx +95 -0
  712. layerweave-0.7.9b1/src/layerweave/tool/skills/layers/text/glyph-deform/references/techniques.md +24 -0
  713. layerweave-0.7.9b1/src/layerweave/tool/skills/layers/text/glyph-deform/requirements.txt +1 -0
  714. layerweave-0.7.9b1/src/layerweave/tool/skills/layers/text/glyph-deform/scripts/build_glyph_shapes.py +195 -0
  715. layerweave-0.7.9b1/src/layerweave/tool/skills/layers/text/text-normalize/SKILL.md +37 -0
  716. layerweave-0.7.9b1/src/layerweave/tool/skills/layers/text/text-normalize/scripts/normalize_text.py +20 -0
  717. layerweave-0.7.9b1/src/layerweave/tool/skills/layers/text/text-redacted-layout/SKILL.md +45 -0
  718. layerweave-0.7.9b1/src/layerweave/tool/skills/layers/text/text-redacted-layout/requirements.txt +4 -0
  719. layerweave-0.7.9b1/src/layerweave/tool/skills/layers/text/text-redacted-layout/scripts/find_hardcoded_text.py +48 -0
  720. layerweave-0.7.9b1/src/layerweave/tool/skills/layers/text/text-redacted-layout/scripts/make_redacted_font.py +39 -0
  721. layerweave-0.7.9b1/src/layerweave/tool/skills/layers/text/text-redacted-layout/scripts/text_flicker.py +47 -0
  722. layerweave-0.7.9b1/src/layerweave/tool/skills/scenarios/README.md +7 -0
  723. layerweave-0.7.9b1/src/layerweave.egg-info/PKG-INFO +242 -0
  724. layerweave-0.7.9b1/src/layerweave.egg-info/SOURCES.txt +812 -0
  725. layerweave-0.7.9b1/src/layerweave.egg-info/dependency_links.txt +1 -0
  726. layerweave-0.7.9b1/src/layerweave.egg-info/entry_points.txt +3 -0
  727. layerweave-0.7.9b1/src/layerweave.egg-info/requires.txt +9 -0
  728. layerweave-0.7.9b1/src/layerweave.egg-info/top_level.txt +1 -0
  729. layerweave-0.7.9b1/tests/README.md +28 -0
  730. layerweave-0.7.9b1/tests/__init__.py +1 -0
  731. layerweave-0.7.9b1/tests/_support/__init__.py +1 -0
  732. layerweave-0.7.9b1/tests/_support/distribution.py +11 -0
  733. layerweave-0.7.9b1/tests/_support/exchangefixture.py +52 -0
  734. layerweave-0.7.9b1/tests/_support/mcpfixture.py +33 -0
  735. layerweave-0.7.9b1/tests/_support/namespace.py +147 -0
  736. layerweave-0.7.9b1/tests/_support/paths.py +3 -0
  737. layerweave-0.7.9b1/tests/architecture/__init__.py +0 -0
  738. layerweave-0.7.9b1/tests/architecture/test_architecture.py +481 -0
  739. layerweave-0.7.9b1/tests/architecture/test_namespace.py +52 -0
  740. layerweave-0.7.9b1/tests/architecture/test_public_surface.py +33 -0
  741. layerweave-0.7.9b1/tests/architecture/test_tool_layout.py +79 -0
  742. layerweave-0.7.9b1/tests/fixtures/view-layout-geometry.json +251 -0
  743. layerweave-0.7.9b1/tests/fixtures/view-plugin/parts/label.js +1 -0
  744. layerweave-0.7.9b1/tests/fixtures/view-plugin/plugin.js +11 -0
  745. layerweave-0.7.9b1/tests/foundation/__init__.py +0 -0
  746. layerweave-0.7.9b1/tests/foundation/test_change_feed.py +133 -0
  747. layerweave-0.7.9b1/tests/foundation/test_change_values.py +114 -0
  748. layerweave-0.7.9b1/tests/foundation/test_configuration.py +95 -0
  749. layerweave-0.7.9b1/tests/foundation/test_crud.py +334 -0
  750. layerweave-0.7.9b1/tests/foundation/test_declaration_hints.py +119 -0
  751. layerweave-0.7.9b1/tests/foundation/test_deferred_references.py +81 -0
  752. layerweave-0.7.9b1/tests/foundation/test_encapsulation_identity.py +170 -0
  753. layerweave-0.7.9b1/tests/foundation/test_feedback.py +218 -0
  754. layerweave-0.7.9b1/tests/foundation/test_interface_composition.py +312 -0
  755. layerweave-0.7.9b1/tests/foundation/test_io.py +265 -0
  756. layerweave-0.7.9b1/tests/foundation/test_io_efficiency.py +116 -0
  757. layerweave-0.7.9b1/tests/foundation/test_logical_references.py +342 -0
  758. layerweave-0.7.9b1/tests/foundation/test_migration.py +57 -0
  759. layerweave-0.7.9b1/tests/foundation/test_missing_fields_precision.py +176 -0
  760. layerweave-0.7.9b1/tests/foundation/test_numbering.py +336 -0
  761. layerweave-0.7.9b1/tests/foundation/test_reporting_precision.py +217 -0
  762. layerweave-0.7.9b1/tests/foundation/test_storage_schema.py +151 -0
  763. layerweave-0.7.9b1/tests/foundation/test_tool_tables.py +312 -0
  764. layerweave-0.7.9b1/tests/mcp/__init__.py +0 -0
  765. layerweave-0.7.9b1/tests/mcp/test_installation.py +77 -0
  766. layerweave-0.7.9b1/tests/mcp/test_pagination.py +225 -0
  767. layerweave-0.7.9b1/tests/mcp/test_runtime.py +318 -0
  768. layerweave-0.7.9b1/tests/mcp/test_schema_compatibility.py +96 -0
  769. layerweave-0.7.9b1/tests/mcp/test_usability.py +187 -0
  770. layerweave-0.7.9b1/tests/packaging/__init__.py +0 -0
  771. layerweave-0.7.9b1/tests/packaging/check_launcher.py +62 -0
  772. layerweave-0.7.9b1/tests/packaging/check_mcp_wheel.py +103 -0
  773. layerweave-0.7.9b1/tests/packaging/check_sdist.py +61 -0
  774. layerweave-0.7.9b1/tests/packaging/check_wheel.py +138 -0
  775. layerweave-0.7.9b1/tests/tools/__init__.py +0 -0
  776. layerweave-0.7.9b1/tests/tools/test_cli_encoding.py +95 -0
  777. layerweave-0.7.9b1/tests/tools/test_command_help.py +194 -0
  778. layerweave-0.7.9b1/tests/tools/test_config_help.py +282 -0
  779. layerweave-0.7.9b1/tests/tools/test_exchange.py +436 -0
  780. layerweave-0.7.9b1/tests/tools/test_exchange_compact.py +73 -0
  781. layerweave-0.7.9b1/tests/tools/test_free_ranges.py +126 -0
  782. layerweave-0.7.9b1/tests/tools/test_gap_and_undo_regressions.py +307 -0
  783. layerweave-0.7.9b1/tests/tools/test_history_tools.py +397 -0
  784. layerweave-0.7.9b1/tests/tools/test_keys.py +224 -0
  785. layerweave-0.7.9b1/tests/tools/test_launcher.py +194 -0
  786. layerweave-0.7.9b1/tests/tools/test_object_transfer.py +191 -0
  787. layerweave-0.7.9b1/tests/tools/test_object_workflows.py +252 -0
  788. layerweave-0.7.9b1/tests/tools/test_optional_help.py +244 -0
  789. layerweave-0.7.9b1/tests/tools/test_position_workflows.py +317 -0
  790. layerweave-0.7.9b1/tests/tools/test_project_details.py +348 -0
  791. layerweave-0.7.9b1/tests/tools/test_project_overview.py +152 -0
  792. layerweave-0.7.9b1/tests/tools/test_skill_install.py +188 -0
  793. layerweave-0.7.9b1/tests/tools/test_skill_video.py +243 -0
  794. layerweave-0.7.9b1/tests/tools/test_subtree_tools.py +337 -0
  795. layerweave-0.7.9b1/tests/tools/test_sync_queries.py +230 -0
  796. layerweave-0.7.9b1/tests/tools/test_timeline_tools.py +244 -0
  797. layerweave-0.7.9b1/tests/tools/test_transfer_tools.py +220 -0
  798. layerweave-0.7.9b1/tests/tools/test_validation.py +262 -0
  799. layerweave-0.7.9b1/tests/tools/test_versions.py +282 -0
  800. layerweave-0.7.9b1/tests/view/__init__.py +0 -0
  801. layerweave-0.7.9b1/tests/view/test_documents.py +101 -0
  802. layerweave-0.7.9b1/tests/view/test_layout_browser.py +115 -0
  803. layerweave-0.7.9b1/tests/view/test_layout_shared.py +210 -0
  804. layerweave-0.7.9b1/tests/view/test_view.py +917 -0
  805. layerweave-0.7.9b1/tests/view/test_view_bench.py +263 -0
  806. layerweave-0.7.9b1/tests/view/test_view_incremental.py +158 -0
  807. layerweave-0.7.9b1/tests/view/test_view_interaction.py +170 -0
  808. layerweave-0.7.9b1/tests/view/test_view_language_browser.py +118 -0
  809. layerweave-0.7.9b1/tests/view/test_view_languages.py +87 -0
  810. layerweave-0.7.9b1/tests/view/test_view_plugin_browser.py +68 -0
  811. layerweave-0.7.9b1/tests/view/test_view_plugins.py +247 -0
  812. layerweave-0.7.9b1/tests/view/test_view_quality.py +311 -0
  813. layerweave-0.7.9b1/tests/view/test_view_thumbnail_quality.py +70 -0
  814. layerweave-0.7.9b1/tests/view/test_view_tree.py +132 -0
@@ -0,0 +1,58 @@
1
+ name: Publish verified Python release
2
+
3
+ on:
4
+ workflow_dispatch:
5
+ inputs:
6
+ tag:
7
+ description: GitHub release tag containing the already-tested distributions
8
+ required: true
9
+ default: v0.7.9b1
10
+
11
+ permissions:
12
+ contents: read
13
+
14
+ jobs:
15
+ publish:
16
+ runs-on: ubuntu-latest
17
+ environment: pypi
18
+ permissions:
19
+ contents: read
20
+ id-token: write
21
+ steps:
22
+ - name: Download the tested distributions
23
+ env:
24
+ GH_TOKEN: ${{ github.token }}
25
+ RELEASE_TAG: ${{ inputs.tag }}
26
+ run: |
27
+ mkdir downloads dist
28
+ gh release download "$RELEASE_TAG" --repo "$GITHUB_REPOSITORY" --dir downloads \
29
+ --pattern '*.whl' --pattern '*.tar.gz' --pattern SHA256SUMS
30
+ python3 - <<'PY'
31
+ import hashlib
32
+ import os
33
+ from pathlib import Path
34
+ import re
35
+ import shutil
36
+
37
+ tag = os.environ["RELEASE_TAG"]
38
+ if not re.fullmatch(r"v\d+\.\d+\.\d+(?:(?:a|b|rc)\d+)?", tag):
39
+ raise SystemExit("Expected a version tag such as v0.7.9b1")
40
+ version = tag[1:]
41
+ source = Path("downloads")
42
+ checksums = {}
43
+ for line in (source / "SHA256SUMS").read_text().splitlines():
44
+ checksum, filename = line.split(maxsplit=1)
45
+ checksums[filename] = checksum
46
+ for name in (f"layerweave-{version}-py3-none-any.whl", f"layerweave-{version}.tar.gz"):
47
+ file = source / name
48
+ digest = hashlib.sha256(file.read_bytes()).hexdigest()
49
+ if checksums.get(name) != digest:
50
+ raise SystemExit("Missing or mismatched checksum: " + name)
51
+ shutil.copy2(file, Path("dist") / name)
52
+ print("Verified", name, digest)
53
+ PY
54
+ - name: Publish with PyPI Trusted Publishing
55
+ uses: pypa/gh-action-pypi-publish@7245906fb61fa33a13554f9d5fb856fe61758086
56
+ with:
57
+ packages-dir: dist/
58
+ print-hash: true
@@ -0,0 +1,36 @@
1
+ # 开发约定
2
+
3
+ 本文件用于维护 LayerWeave 自身源码。先按任务选择入口:
4
+
5
+ - 操作项目内容:读[使用入口](src/layerweave/tool/builtin/usage/README.md),按需查询命令与配置 help。
6
+ - 接入 MCP 或维护命令暴露:读[MCP](src/layerweave/tool/builtin/shared/mcp/README.md),参数以工具自身 input_schema 为准,direct/routed 共用绑定。
7
+ - 在自己的工程中开发工具或插件:读[扩展指南](docs/build-with-layerweave/README.md),复用公共接口。
8
+ - 修改本仓库的实现:遵循下列约定和[开发指南](docs/developer-conventions.md)。
9
+
10
+ 使用软件或编写外部扩展时,无需执行本仓库的源码维护流程;扩展代码纳入本仓库时再遵循相应约定。
11
+
12
+ ## 定位代码
13
+
14
+ - `src/layerweave/core`、`models`:抽象结构和封装类。
15
+ - `src/layerweave/support`:存储、配置、发号、事务与公共接口。
16
+ - `src/layerweave/tool/builtin`:可独立增减的内部工具;`tool/skills`:供 AI 使用的外置技能。
17
+ - `frontend/view`:网页源码;进入该目录前读其 AGENTS.md。
18
+ - `tests`、`examples`:回归测试和可运行示例。
19
+
20
+ 按任务阅读[文档入口](docs/README.md)。环境与命令见[开发指南](docs/developer-conventions.md),依赖边界见[架构](docs/architecture.md)。
21
+
22
+ ## 修改原则
23
+
24
+ - 依赖方向为工具 → 支撑 → 核心。完整工具包携带自己的业务辅助代码,不引用其他可卸载包的私有实现。
25
+ - 业务数据写入经过 `transaction` / `run_operation`;组合写入使用同一写会话。表通过 `register_tables` 声明,自动发号通过支撑 `allocate`。不直接提交 SQL 或拼装修改日志。
26
+ - 一份封装 TOML 对应一个 Python 类,保留 layers/objects 分区与 config_ref。构造和赋值不自动检查内容。
27
+ - 内容检测可选;归属、父链无环等结构保证由支撑层负责,不能依赖检测工具。
28
+ - 保留无关改动、用户数据库、技能及本地配置。测试使用临时数据;密钥不进入版本控制。
29
+ - 优先搜索 src/layerweave、frontend/view、tests、examples、docs。scratch、output 是本地材料,不作为现行实现依据,不为整理目录而清空。
30
+ - 视图继续在 visualization 分支维护,main 保持无 GUI 依赖。
31
+
32
+ ## 验证与文档
33
+
34
+ 先运行受影响检查;持久化、执行入口或模块路径变化需完整 Python 回归,打包资源变化需普通安装验收。具体命令见开发指南。
35
+
36
+ README 介绍项目和上手方式;AGENTS.md 维护工作约定;详细接口说明留在对应模块。公开文档描述当前行为,不加入本次会话、实施过程、测试汇报或内部交接链接。文档调整核对链接与示例,按[文档约定](docs/documentation.md)维护。
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 LayerWeave contributors
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,21 @@
1
+ include README.md README.en.md AGENTS.md LICENSE THIRD_PARTY_NOTICES.md pyproject.toml
2
+ include setup.py build_support.py
3
+ include .github/workflows/publish-pypi.yml
4
+ graft distribution
5
+ prune distribution/npm/node_modules
6
+ global-exclude *.tgz
7
+ graft src/layerweave
8
+ graft docs
9
+ graft examples
10
+ graft tests
11
+ graft frontend/view
12
+ prune frontend/view/node_modules
13
+ prune frontend/view/.vite
14
+ prune frontend/view/coverage
15
+ global-exclude *.py[cod] .DS_Store .env .env.* keys.local.json keys.json .keys.local.json.*.tmp *.sqlite3 *.sqlite3-* *.db *.log
16
+
17
+ # 案例数据与小素材进入源码包;完整制作媒体不分发。
18
+ recursive-exclude examples/showcases *.mp4 *.webm *.mov *.mkv *.avi *.mp3 *.wav *.flac
19
+ prune examples/showcases/*/source/node_modules
20
+ prune examples/showcases/*/source/dist
21
+ prune examples/showcases/*/__pycache__
@@ -0,0 +1,242 @@
1
+ Metadata-Version: 2.4
2
+ Name: layerweave
3
+ Version: 0.7.9b1
4
+ Summary: Layers, objects and composable tools for AI workflows
5
+ License-Expression: MIT AND ISC AND BSD-3-Clause
6
+ Project-URL: Repository, https://github.com/aceddad/LayerWeave
7
+ Project-URL: Gitee, https://gitee.com/emotion1354414/layer-weave
8
+ Requires-Python: >=3.11
9
+ Description-Content-Type: text/markdown
10
+ License-File: LICENSE
11
+ License-File: THIRD_PARTY_NOTICES.md
12
+ Provides-Extra: mcp
13
+ Requires-Dist: mcp<3,>=2.3; extra == "mcp"
14
+ Requires-Dist: jsonschema<5,>=4.23; extra == "mcp"
15
+ Provides-Extra: dev
16
+ Requires-Dist: build>=1.2; extra == "dev"
17
+ Requires-Dist: setuptools>=77.0.3; extra == "dev"
18
+ Requires-Dist: wheel; extra == "dev"
19
+ Dynamic: license-file
20
+
21
+ # LayerWeave
22
+
23
+ **简体中文** | [English](https://github.com/aceddad/LayerWeave/blob/v0.7.9b1/README.en.md)
24
+
25
+ [GitHub](https://github.com/aceddad/LayerWeave/tree/visualization) · [Gitee](https://gitee.com/emotion1354414/layer-weave/tree/visualization) · [内核开发分支](https://github.com/aceddad/LayerWeave/tree/main)
26
+
27
+ **0.7.9b1 公开预览版 · Windows**
28
+
29
+ **少分心:只看相关的那一段,只做眼前的那一件事。**
30
+
31
+ LayerWeave 是一个面向人和 AI 的信息管理工具。它把文字、素材引用和批注放在按时间或顺序排列的轴上,用层级和关联组织起来,让参与者随时能找到"此刻、这里"相关的全部内容。
32
+
33
+ 本分支展示基于 LayerWeave 内核开发的上层应用,视图本身也是一个内置工具包。内置工具展示如何复用内核,独立视图插件展示如何在应用之上继续扩展;这些实现均可直接使用,也欢迎作为你和 AI 开发新工具、新应用的参考。
34
+
35
+ 它的设计理念只有一条:**降低注意力的分散。** 一个任务里,真正需要思考的往往只是其中一小块,而大量注意力被花在找东西、对位置、记改动、解释"我说的是哪里"上。LayerWeave 把这些事交给工具:
36
+
37
+ - AI 只读取这一段时间里的相关内容,不必每次读完整个项目;
38
+ - 人在画面上指一下,不必反复描述是哪一段、哪个镜头;
39
+ - 修改意见留在具体内容旁边,等对方有空再处理,不打断正在做的事;
40
+ - 开发新功能时,可以复用存储、编号、改动记录和撤销,把精力放在这个功能本身。
41
+
42
+ 做法是**组合**与**信息管理**。组合让每一部分都小而单一:对象放进层,层组成树,彼此用关联连接;核心只管最基本的结构,查询、编辑、视图、技能、插件都是可以加上、拿掉或替换的部件。拆得越细,信息也越分散,信息管理就把这些零散的块按时间、顺序和关联重新串起来,需要哪一块都能直接找到。于是不论处理信息还是开发功能,每次都可以优先处理当前这一小块。
43
+
44
+ 下面分四部分说明它怎样做到这些。
45
+
46
+ ## 一、信息管理:把同一时刻的事放在一起看
47
+
48
+ 内容放在一条条轴上:视频和歌曲按秒,文章按段落,漫画按页和格,课程按学习步骤。轴上的每一项都是一个有身份的对象;对象分属不同的层,层又组成树,共用同一时间尺度的"镜头说明""素材""台词"可以在同一时刻对照。段落、页码与秒不会自动换算;批注自身按条目顺序保存,通过关联和区间指向被评论的内容。对象之间用关联连接:这一镜依据哪段故事,这句结论引用了哪条证据,这条意见针对的是哪一秒。
49
+
50
+ 这样一来,检查某一刻就不必到处翻找。问一句"30–35 秒这里有什么",就能一次拿到这段时间里每一层的内容、它们之间的关联、已有的批注,以及哪些轨道在这里是空着的。要追问原因,就沿关联往下查;要改,就按对象身份定向修改,而不是整段重写。改动都有记录,可以查历史,也可以撤销。
51
+
52
+ 时间不是唯一的排法。按段落、页码或阅读顺序排列时,同样可以选中一段,沿关联找到对应的证据、配图和讨论。[十二个案例](https://github.com/aceddad/LayerWeave/blob/v0.7.9b1/examples/showcases/README.md)用这套结构分别处理了分镜、手书、文章精读、小说、漫画、课程、调查、互动故事、需求、翻译审校和代码梳理。
53
+
54
+ ## 二、AI 友好:查得到、看得见、听得懂反馈
55
+
56
+ LayerWeave 从一开始就是为 AI 使用而设计的。所有能力都可以通过 Python、CLI 或 MCP 调用;AI 先用 `layerweave_help` 查有哪些工具、参数怎么填,再针对具体目标操作,不必一次读完整个项目。每次操作都会返回结构化的结果:写入了什么、有没有问题、编号是多少。
57
+
58
+ 一次实际的工作大概是这样的。你说:"30–35 秒这里不太连贯,看一下。"
59
+
60
+ 1. 你在画布上圈出 30–35 秒,或者把当前视图的链接发给 AI。
61
+ 2. AI 读取这段时间里各层的内容、关联和批注。
62
+ 3. AI 按同一范围截一张图,对照画面和数据,判断问题出在哪个对象。
63
+ 4. AI 沿关联往回查:这一镜依据哪段故事,用了哪个素材,之前有没有人讨论过。
64
+ 5. 找到要改的对象后定向修改,再读取或截图复查。
65
+ 6. 没处理完的地方写成批注留下,下次接着做。
66
+
67
+ 支撑这些步骤的工具:
68
+
69
+ | 工具 | 做什么 |
70
+ |---|---|
71
+ | `view_state` | 读取视图当前的状态:在看哪个项目和画板、选中了什么、播放头在哪 |
72
+ | `view_at` | 读取某一刻或某一段里各层的内容、关联和批注;不指定范围时,读用户正在看的位置 |
73
+ | `view_screenshot` | 截取画布、指定范围、某条批注指向的位置,或已安装插件的页面;可以直接按视图链接定位 |
74
+ | `view_walk` | 从一个对象、层或批注出发,沿关联逐步展开,可限制方向、深度和数量 |
75
+ | `view_note` | 留言、回复、改指向,标记已读和已处理;查询还有哪些在等自己处理 |
76
+ | `view_layout` | 查询和调整画板的位置、尺寸和拼接 |
77
+
78
+ 截图给的是画面,查询给的是对象身份、正文和关联;两者通过同一个项目、同一组选中对象和同一段范围对应起来。
79
+
80
+ 人给 AI 的反馈也因此更准确。与其在对话里描述"大概在中间偏后、那个转场的地方",不如直接把批注挂在那个对象或那几秒上;AI 读到批注时就知道它指的是什么,还能顺着之前的批注和回复,追溯这个问题的来龙去脉。
81
+
82
+ 几点说明:看懂画面靠的是有视觉能力的 AI,LayerWeave 本身不做以图搜图或图像识别;截图工具会另开一个只读页面来拍,不会改动你正在看的视图,拍的也只是 LayerWeave 自己的页面;什么时候去读批注、由哪个 AI 处理,由调用方决定,LayerWeave 不自带多 Agent 调度或定时唤醒。详见[给 AI 用的视图工具](https://github.com/aceddad/LayerWeave/blob/v0.7.9b1/src/layerweave/tool/builtin/view/GUIDE.md#%E7%BB%99-ai-%E7%94%A8)。
83
+
84
+ ## 三、开发友好:让 AI 专心做一件事
85
+
86
+ 方便开发是 LayerWeave 最初的设计目的之一。需要一个新功能时,AI 或开发者可以把精力放在功能本身,直接复用保存、编号、事务、改动记录、历史和撤销等通用能力。
87
+
88
+ 比如你已经给角色和镜头建了关联,想要一份"每个角色出现在哪些镜头"的汇总。写一个小工具直接查询现有项目就行;保存结果时,它沿用项目已有的读写和改动记录,写错了也能撤销。
89
+
90
+ 常见的扩展方式:
91
+
92
+ - **用现有结构:** 通过 Python 接口读写层、对象和关联,按位置、区间或子树查询。
93
+ - **加自己的类型:** 新增层或对象类型,同时提供 Python 类和 TOML 声明。
94
+ - **加自己的数据表:** 工具自己的表不必套用层和对象的结构,声明之后同样进入改动记录,可以查历史、可以撤销。
95
+ - **组合已有工具:** 在同一个事务里调用多个工具,任何一步失败都整体回滚。
96
+ - **做专用界面:** 编写视图插件,在画布之外提供自己的页面。
97
+
98
+ 批注就是这样做出来的:`Note` 继承了普通的文字对象,回复用关联表达,已读状态和共享排版放在视图工具自己的表里。不用改动原有结构,就长出了一套协作功能。
99
+
100
+ 这就是组合的好处:新功能可以复用已有的部件,把精力放在相关接口和自身逻辑上。
101
+
102
+ 整体很轻。核心和基础支撑仅依赖 Python 标准库,约三千行 Python;MCP 和部分技能另有可选依赖。具体操作都放在可以替换的工具包里,不需要的可以不装,底层读写也可以直接嵌进你自己的 Python 工程。
103
+
104
+ 从[扩展指南](https://github.com/aceddad/LayerWeave/blob/v0.7.9b1/docs/build-with-layerweave/README.md)选一种最小接入方式开始;[工具自有表的可运行示例](https://github.com/aceddad/LayerWeave/blob/v0.7.9b1/examples/tool_tables.py)演示了新工具怎样共用记录、历史与撤销;逐个接口见[公共 API](https://github.com/aceddad/LayerWeave/blob/v0.7.9b1/src/layerweave/support/API.md),整体设计见[架构说明](https://github.com/aceddad/LayerWeave/blob/v0.7.9b1/docs/architecture.md)。
105
+
106
+ ## 四、视觉层:人和 AI 共用的窗口
107
+
108
+ 前三部分不必打开画布也能用。视觉层是在同一份数据上加的一扇窗:人在这里看、指、留言,AI 在这里截图、读取人正在看的位置。
109
+
110
+ - **随时看 AI 干到哪了。** 画布每两秒同步一次项目的变化,AI 写入的内容很快就会出现在对应的时间位置上,可以边看边指出问题。
111
+ - **异步留言,不打断 AI。** 看到问题就把批注挂在那里,AI 手上的工作可以先做完,之后再按批注逐条处理、回复、标记完成。
112
+ - **顺着线索追查。** 从一个对象出发,沿关系线看到它的依据、素材和讨论;也可以找对象、看改动、一览全部素材。
113
+ - **检查结果。** AI 做完后,在画布上对照时间轴看整体效果,和 AI 看到的是同一份内容。
114
+
115
+ [晚开的花](https://github.com/aceddad/LayerWeave/blob/v0.7.9b1/examples/showcases/late-bloom-scroll/README.md)展示了这种协作:四个 AI 各画一幕动态 SVG,通过 32 条批注互相核对接缝、配色和改动,最后拼成一幅 9600×1400 的长卷。
116
+
117
+ 网页支持中文和英文。官方插件(一览、接缝、预览、网页)独立选装,不装插件也能用。
118
+
119
+ ## 从案例开始看
120
+
121
+ | 案例 | 规模 | 可以看到什么 |
122
+ |---|---|---|
123
+ | [文章解析](https://github.com/aceddad/LayerWeave/blob/v0.7.9b1/examples/showcases/article-reading/README.md) · **推荐入门** | 8 个根层、32 个对象、68 条关联 | 一篇约 1,350 字的原创中文短论与逐段解读并排;从一个论点出发,沿关联找到证据、配图和讨论;附五条可直接运行的阅读路线 |
124
+ | [动态分镜与 H3](https://github.com/aceddad/LayerWeave/blob/v0.7.9b1/examples/showcases/donut-hole-h3/README.md) | 30 层、228 个对象、210 条关联 | 一首歌的 60 个镜头,连到段落和实现方式;使用生成素材的镜头还可追溯片段静帧与所用模型,也能看到多个镜头怎样共用同一段素材 |
125
+ | [手书制作](https://github.com/aceddad/LayerWeave/blob/v0.7.9b1/examples/showcases/donut-hole-tegaki/README.md) | 29 层、101 个对象、43 条关联 | 同一首歌的另一种做法:听感与故事、14 段画面设计、对应的实现方式和角色设定,附 32 个时刻的总览图 |
126
+ | [晚开的花](https://github.com/aceddad/LayerWeave/blob/v0.7.9b1/examples/showcases/late-bloom-scroll/README.md) | 4 层、37 个对象,其中 32 条批注 | 四个 AI 通过批注协作完成长卷;附可直接用浏览器打开的动态预览 |
127
+
128
+ 文章解析的正文是案例作者原创的中文短论,不是外部文章的全文或译文;查看引用的外部原文时需要联网。手书和 H3 是"无视频阅读版":公开包用静帧展示结构和画面,不附歌曲和视频,所以不能下载后直接重新生成整部影片。
129
+
130
+ 另外八个案例覆盖小说创作、漫画创作、课程学习、信息调查、互动故事、需求设计、翻译审校和代码梳理。十二个案例合计 125 层、691 个对象、927 条关联,完整清单和准备方法见[案例目录](https://github.com/aceddad/LayerWeave/blob/v0.7.9b1/examples/showcases/README.md)。
131
+
132
+ ## 现在有什么
133
+
134
+ | 部分 | 0.7.8 的内容 |
135
+ |---|---|
136
+ | 内部命令 | 47 个,分布在 16 个工具包:统一启动、查询、按区间编辑、复制与迁移、JSON 交换、复查、历史与撤销、视图等 |
137
+ | 技能材料 | 12 份,供 AI 按需阅读(分轨卡点、出图、网点、视频生成与核验、动作参考、字形变形等);它们是说明和脚本,不会自动执行 |
138
+ | 视图 | 0.31.0,网页支持中文和英文;四个官方插件独立选装 |
139
+ | 接入方式 | Python、CLI 和可选的 MCP;MCP 默认提供 4 个通用入口,另加 inbox、reply、screenshot 三个快捷入口 |
140
+ | 起始模板 | 字幕、分镜、手书三种,结构可以自由增减 |
141
+
142
+ 图片、音频和视频通过文件路径或链接引用,不会搬进项目数据库;生成和处理这些媒体,由调用方、技能或外部工具完成。
143
+
144
+ ## Windows 快速开始
145
+
146
+ 在你选定的工作目录打开 PowerShell,选择一种入口即可。
147
+
148
+ 已有 [uv](https://docs.astral.sh/uv/getting-started/installation/):
149
+
150
+ ```powershell
151
+ uvx layerweave@0.7.9b1 demo
152
+ ```
153
+
154
+ 已有 Node.js 20+ / npm(Windows x64):
155
+
156
+ ```powershell
157
+ npx --yes layerweave@0.7.9-beta.1 demo
158
+ ```
159
+
160
+ 两种入口使用同一套 Python 实现,都会准备文章解析案例并打开浏览器。uv 管理 Python 环境;npm 入口会在需要时自动准备 uv 与独立 Python 3.11。首次安装需要联网;使用 uv 路径不需要 Node。
161
+
162
+ 默认项目保存在 `./layerweave-demo/article-reading`。再次运行同一条命令会保留对象、批注、布局和素材修改。终端持续运行服务,Ctrl+C 停止;`--no-browser` 只打印访问地址。
163
+
164
+ 把命令末尾的 `demo` 换成以下参数,即可使用其他入口:
165
+
166
+ | 参数 | 用途 |
167
+ |---|---|
168
+ | `demo --list` | 列出十二个案例 |
169
+ | `demo comic-creation --dir ./my-comic` | 按需下载并打开漫画案例 |
170
+ | `view ./project.sqlite3` | 打开已有数据库;可加 `--project 1` 选择项目 |
171
+ | `new ./my-project --template subtitles` | 从字幕模板创建自己的项目 |
172
+ | `help project_overview` | 查看对应工具的详细说明 |
173
+
174
+ 文章解析随包提供,其他案例第一次需要时下载并缓存。数据放在自己的工作目录,缓存清理不会删除项目。详细参数见[统一启动入口](https://github.com/aceddad/LayerWeave/blob/v0.7.9b1/src/layerweave/tool/builtin/shared/launcher/README.md),各场景见[案例目录](https://github.com/aceddad/LayerWeave/blob/v0.7.9b1/examples/showcases/README.md)。
175
+
176
+ ### 安装到自己的 Python 环境
177
+
178
+ 需要在脚本中导入 LayerWeave,或希望固定一个开发环境时:
179
+
180
+ ```powershell
181
+ uv venv --python 3.11 .venv
182
+ uv pip install --python .venv/Scripts/python.exe "layerweave[mcp]==0.7.9b1"
183
+ ```
184
+
185
+ `[mcp]` 是可选的 AI 接入依赖;只用 Python/CLI 时可以去掉。也可以下载 [GitHub Release 中的 wheel、源码包与 npm 包](https://github.com/aceddad/LayerWeave/releases/tag/v0.7.9b1),按启动器说明使用本地文件。wheel 已构建好,安装 LayerWeave 本身不需要 setuptools;运行依赖仍可能需要联网。
186
+
187
+ 普通数据管理与文章案例不需要 Key、FFmpeg 或官方视图插件。FFmpeg 由用户选装,用于服务端抽帧、缩略图和波形等;AI 截图需要 Chrome、Edge 或 Chromium。详见[FFmpeg 说明](https://github.com/aceddad/LayerWeave/blob/v0.7.9b1/src/layerweave/tool/builtin/view/GUIDE.md#%E9%80%89%E8%A3%85-ffmpeg)。四个官方插件仍独立选装。
188
+
189
+ ## 连接 AI / MCP
190
+
191
+ 在项目工作目录保存一份 `mcp.json`,workspace 写实际的绝对路径:
192
+
193
+ ```json
194
+ {"workspace": "D:/my-project"}
195
+ ```
196
+
197
+ 使用上面的独立 Python 环境时,在支持 stdio MCP 的客户端里这样配置:
198
+
199
+ ```json
200
+ {
201
+ "mcpServers": {
202
+ "layerweave": {
203
+ "command": "D:/my-project/.venv/Scripts/python.exe",
204
+ "args": ["-X", "utf8", "-m", "layerweave.tool.builtin.shared.mcp", "--config", "D:/my-project/mcp.json"]
205
+ }
206
+ }
207
+ }
208
+ ```
209
+
210
+ 把解释器和配置文件的路径换成实际位置;配置写在哪里由各客户端决定。AI 可以先调用 `layerweave_help` 查有哪些能力,再针对具体目标操作,不必每次读完整个项目。数据库和项目编号可以每次调用时传入,也可以设默认值,见[MCP 说明](https://github.com/aceddad/LayerWeave/blob/v0.7.9b1/src/layerweave/tool/builtin/shared/mcp/README.md)。
211
+
212
+ 只需要 MCP 的话,也可以让 uvx 一条命令准备好环境并启动服务:
213
+
214
+ ```powershell
215
+ uvx --python 3.11 --from "layerweave[mcp]==0.7.9b1" layerweave-mcp --config ./mcp.json
216
+ ```
217
+
218
+ 这条命令会持续运行一个 stdio 服务,通常交给 MCP 客户端托管;它不会打开网页。客户端中的配置文件请用绝对路径,完整例子见 MCP 说明;`--from` 也可改成已下载的本地 wheel。
219
+
220
+ ## 查找工具与文档
221
+
222
+ ```powershell
223
+ .venv/Scripts/python.exe -X utf8 -m layerweave.tool.builtin.shared.help.command_help
224
+ .venv/Scripts/python.exe -X utf8 -m layerweave.tool.builtin.shared.help.config_help
225
+ ```
226
+
227
+ `command_help` 列出当前安装的命令和调用示例,`config_help` 说明各种层和对象的用途、字段与封装关系。
228
+
229
+ - [使用入口](https://github.com/aceddad/LayerWeave/blob/v0.7.9b1/src/layerweave/tool/builtin/usage/README.md):从任务出发选工具,查看输入、输出和示例。
230
+ - [JSON 交换与模板](https://github.com/aceddad/LayerWeave/blob/v0.7.9b1/src/layerweave/tool/builtin/usage/exchange/README.md):批量操作和场景起点。
231
+ - [视图与插件](https://github.com/aceddad/LayerWeave/blob/v0.7.9b1/src/layerweave/tool/builtin/view/README.md):界面操作;[官方插件仓库](https://github.com/aceddad/layerweave-plugins)独立选装,不装插件也能用。
232
+ - [源码开发](https://github.com/aceddad/LayerWeave/blob/v0.7.9b1/docs/developer-conventions.md)、[完整示例](https://github.com/aceddad/LayerWeave/blob/v0.7.9b1/docs/examples.md)、[文档目录](https://github.com/aceddad/LayerWeave/blob/v0.7.9b1/docs/README.md)。
233
+
234
+ `visualization` 是完整版本;`main` 是不含视图的开发源码,保留直接的 Python/CLI 入口,与完整版共用核心、支撑和非视图工具。视图、MCP 服务和发行封装在完整分支维护。命令里的 `-X utf8` 是为了让中文 Windows 的管道输出不乱码,详见[编码说明](https://github.com/aceddad/LayerWeave/blob/v0.7.9b1/src/layerweave/tool/builtin/usage/README.md#%E5%91%BD%E4%BB%A4%E8%A1%8C%E7%BC%96%E7%A0%81)。
235
+
236
+ ## AI 协作开发
237
+
238
+ 项目由维护者主导设计与维护,Astra(Codex)与 Claude 协助本分支的开发、测试与文档整理。
239
+
240
+ ## 许可证
241
+
242
+ LayerWeave 本身采用 [MIT](https://github.com/aceddad/LayerWeave/blob/v0.7.9b1/LICENSE)。网页里的第三方组件保留各自的许可,见[第三方声明](https://github.com/aceddad/LayerWeave/blob/v0.7.9b1/THIRD_PARTY_NOTICES.md)。独立插件、技能和外部服务遵循各自的说明。
@@ -0,0 +1,222 @@
1
+ # LayerWeave
2
+
3
+ [简体中文](README.md) | **English**
4
+
5
+ [GitHub](https://github.com/aceddad/LayerWeave/tree/visualization) · [Gitee](https://gitee.com/emotion1354414/layer-weave/tree/visualization) · [Kernel development branch](https://github.com/aceddad/LayerWeave/tree/main)
6
+
7
+ **0.7.9b1 public preview · Windows**
8
+
9
+ **Fewer distractions: look only at the part that matters, and do only the task at hand.**
10
+
11
+ LayerWeave is an information management tool for people and AI. It places text, media references, and comments on axes ordered by time or sequence, organizes them with layers and relationships, and lets every participant find everything relevant to "this moment, right here."
12
+
13
+ This branch demonstrates an application built on the LayerWeave kernel; the view itself is a built-in tool package. The built-in tools show how to reuse the kernel, and the separate view plugins show how to extend the application further. These implementations are ready to use and serve as references for you and your agents to build new tools and applications.
14
+
15
+ It follows one design principle: **reduce scattered attention.** In most tasks, only a small part needs real thought, yet much of the attention goes into finding things, matching positions, tracking changes, and explaining which part you meant. LayerWeave hands that work to tools:
16
+
17
+ - An AI reads only the relevant content for a given span of time, instead of the whole project every time.
18
+ - A person points at the screen instead of describing which section or which shot again and again.
19
+ - Feedback stays next to the content it concerns and waits until the other side is ready, without interrupting their current work.
20
+ - When building a new feature, reuse storage, numbering, change records, and undo to keep attention on the feature itself.
21
+
22
+ The method is **composition** together with **information management**. Composition keeps every part small and single-purpose: objects sit in layers, layers form a tree, and relationships connect them; the core handles only the basic structure, while queries, editing, the view, skills, and plugins are parts you can add, remove, or replace. The finer things are split, the more scattered the information becomes, so information management ties those pieces back together by time, sequence, and relationship, and any piece can be found directly. Whether working through information or building a feature, you can focus on the part at hand.
23
+
24
+ The four parts below explain how.
25
+
26
+ ## 1. Information management: see everything at the same moment together
27
+
28
+ Content sits on axes: videos and songs by the second, articles by paragraph, comics by page and panel, courses by learning step. Each item on an axis is an object with its own identity. Objects belong to layers, and layers form a tree; tracks such as shot notes, media, and dialogue can be compared at the same moment when they share a time scale. Paragraph numbers, page numbers, and seconds are not automatically converted. Comments are stored in sequence and point to the content they discuss through relationships and ranges. Relationships connect objects: which story beat a shot is based on, which piece of evidence a conclusion cites, which second a piece of feedback is about.
29
+
30
+ Checking a moment no longer means searching everywhere. Ask "what is at seconds 30–35?" and you get every layer's content in that span, the relationships between items, existing comments, and which tracks are empty there. To find out why, follow the relationships; to change something, edit that object by its identity instead of rewriting the whole section. Every change is recorded, with history and undo.
31
+
32
+ Time is not the only order. When content follows paragraphs, pages, or reading order, you can still select a passage and follow its relationships to evidence, illustrations, and discussion. The [twelve examples](examples/showcases/README.md) use this same structure for storyboards, hand-drawn MVs, close reading, fiction, comics, courses, research, interactive stories, requirements, translation review, and code navigation.
33
+
34
+ ## 2. AI-friendly: easy to query, easy to see, clear feedback
35
+
36
+ LayerWeave was designed for AI use from the start. Every capability is available through Python, the CLI, or MCP. An AI starts with `layerweave_help` to learn which tools exist and how to fill in their parameters, then works on specific targets without reading the whole project. Each operation returns a structured result: what was written, whether there were issues, and the resulting identifiers.
37
+
38
+ A real task looks roughly like this. You write: "Seconds 30–35 feel disjointed. Take a look."
39
+
40
+ 1. You select seconds 30–35 on the canvas, or send the AI a link to your current view.
41
+ 2. The AI reads each layer's content, relationships, and comments in that span.
42
+ 3. It captures a screenshot of the same range and compares the picture with the data to find the object at fault.
43
+ 4. It follows relationships back: which story beat the shot is based on, which asset it uses, whether anyone has discussed it before.
44
+ 5. It edits that object, then reads or captures the range again to check the result.
45
+ 6. Anything left open is written down as a comment for next time.
46
+
47
+ The tools behind these steps:
48
+
49
+ | Tool | What it does |
50
+ |---|---|
51
+ | `view_state` | Reads the current view: which project and board, what is selected, where the playhead is |
52
+ | `view_at` | Reads each layer's content, relationships, and comments at a moment or over a range; without a range, it reads where the user is looking |
53
+ | `view_screenshot` | Captures the canvas, a given range, the target of a comment, or an installed plugin page; can locate the area directly from a view link |
54
+ | `view_walk` | Follows relationships step by step from an object, layer, or comment, with limits on direction, depth, and count |
55
+ | `view_note` | Adds, replies to, retargets, and marks comments as read or resolved; finds what is still waiting for you |
56
+ | `view_layout` | Reads and adjusts board positions, sizes, and joins |
57
+
58
+ Screenshots supply the visuals; queries supply object identities, text, and relationships. The shared project, selected objects, and position range connect the two.
59
+
60
+ This also makes human feedback more precise. Instead of describing "somewhere past the middle, around that transition" in a chat, attach a comment to that object or those seconds. When the AI reads the comment, it knows exactly what it refers to, and it can follow earlier comments and replies to see how the issue developed.
61
+
62
+ A few notes: understanding images is the job of an AI with vision capabilities, and LayerWeave itself does not do image search or image recognition. The screenshot tool opens a separate read-only page, so it never changes the view you are using, and it captures only LayerWeave's own pages. When comments are read and which AI handles them is up to the caller; LayerWeave does not include a multi-agent scheduler or timed wake-ups. See [view tools for AI (Chinese)](src/layerweave/tool/builtin/view/GUIDE.md#给-ai-用).
63
+
64
+ ## 3. Developer-friendly: let the AI focus on one task
65
+
66
+ Making development easy was one of LayerWeave's original goals. When a new feature is needed, an AI or developer can focus on that feature and reuse existing support for saving, numbering, transactions, change records, history, and undo.
67
+
68
+ Suppose you have linked characters to shots and want a summary of where each character appears. Write a small tool that queries the existing project. When it saves results, it reuses the project's read/write operations and change records, so mistakes can be undone.
69
+
70
+ Common ways to extend it:
71
+
72
+ - **Use the existing structures:** read and write layers, objects, and relationships through Python; query by position, range, or subtree.
73
+ - **Add your own types:** define new layer or object types with a Python class and a TOML declaration.
74
+ - **Add your own tables:** a tool's tables need not follow the layer/object structure; once declared, they join the change records and support history and undo.
75
+ - **Compose existing tools:** call several tools in one transaction; if any step fails, the whole operation rolls back.
76
+ - **Build a dedicated interface:** write a view plugin that provides its own pages beyond the canvas.
77
+
78
+ Comments were built exactly this way: `Note` extends the ordinary text object, replies are relationships, and read states and the shared layout live in the view tool's own tables. A full collaboration feature grew out of the existing structure without changing it.
79
+
80
+ This is what composition makes possible: a new feature can reuse existing parts, letting you focus on the relevant interfaces and its own logic.
81
+
82
+ It is also light. Its core and support layer use only Python's standard library and come to roughly three thousand lines of Python; MCP and some skills have their own optional dependencies. Concrete operations live in replaceable tool packages; you can leave out the ones you don't need and embed the underlying data operations in your own Python application.
83
+
84
+ Pick a minimal integration path in the [extension guide](docs/build-with-layerweave/README.md). The [tool-owned table example](examples/tool_tables.py) shows how a new tool shares records, history, and undo; individual calls are in the [public API](src/layerweave/support/API.md), and the overall design is in the [architecture notes](docs/architecture.md). These detailed guides are in Chinese.
85
+
86
+ ## 4. The visual layer: a window shared by people and AI
87
+
88
+ The first three parts work without opening the canvas. The visual layer is a window onto the same data: people look, point, and comment there, while the AI captures screenshots and reads where the person is looking.
89
+
90
+ - **See how far the AI has got.** The canvas syncs project changes every two seconds, so content the AI writes soon appears at its place on the timeline, and you can point out problems as you watch.
91
+ - **Comment without interrupting.** When you spot an issue, attach a comment there. The AI can finish what it is doing, then work through the comments, reply, and mark them resolved.
92
+ - **Follow the trail.** Start from an object and follow relationship lines to its sources, assets, and discussion; search for objects, review changes, or browse all assets at once.
93
+ - **Review the result.** When the AI is done, check the whole piece against the timeline on the canvas, looking at the same content the AI sees.
94
+
95
+ [Late Bloom](examples/showcases/late-bloom-scroll/README.md) shows this kind of collaboration: four AIs each painted one scene as an animated SVG, checked seams, colors, and changes through 32 comments, and joined them into a 9600×1400 scroll.
96
+
97
+ The web interface supports Chinese and English. The official plugins (overview, seams, preview, web) are installed separately, and the canvas works without any.
98
+
99
+ ## Start with an example
100
+
101
+ | Example | Size | What you can see |
102
+ |---|---|---|
103
+ | [Article reading](examples/showcases/article-reading/README.md) · **recommended start** | 8 root layers, 32 objects, 68 relationships | An original Chinese essay of about 1,350 characters beside its paragraph-by-paragraph interpretation; start from a claim and follow relationships to evidence, illustrations, and discussion; five runnable reading tasks |
104
+ | [Storyboard and H3](examples/showcases/donut-hole-h3/README.md) | 30 layers, 228 objects, 210 relationships | The 60 shots of a song, linked to sections and implementation notes; shots using generated media also lead to clip stills and the model used, showing how several shots share one asset |
105
+ | [Hand-drawn MV](examples/showcases/donut-hole-tegaki/README.md) | 29 layers, 101 objects, 43 relationships | Another approach to the same song: listening notes and story, picture design for 14 sections with matching implementation notes, character sheets, and an overview of 32 moments |
106
+ | [Late Bloom](examples/showcases/late-bloom-scroll/README.md) | 4 layers, 37 objects including 32 comments | Four AIs collaborating through comments on one scroll; includes an animated preview that opens directly in a browser |
107
+
108
+ The article in the reading example is an original Chinese essay written for the example, not the full text or a translation of the external articles; opening those sources needs internet access. The hand-drawn and H3 examples are "no-video reading editions": the public package shows their structure and visuals through stills, without the song or video files, so the films cannot be regenerated from the download alone.
109
+
110
+ Eight more examples cover fiction writing, comics, course study, research, interactive stories, requirements design, translation review, and code navigation. Together the twelve examples contain 125 layers, 691 objects, and 927 relationships; see the [example directory](examples/showcases/README.md) for the full list and setup. Their content and detailed guides are currently in Chinese.
111
+
112
+ ## What's included
113
+
114
+ | Part | In 0.7.8 |
115
+ |---|---|
116
+ | Internal commands | 47 across 16 tool packages: unified startup, querying, range editing, copying and transfer, JSON exchange, checks, history and undo, the view, and more |
117
+ | Skill materials | 12 for AI to read as needed (stems and cue sheets, image generation, halftones, video generation and verification, motion reference, glyph deformation, and more); they are instructions and scripts and never run on their own |
118
+ | View | 0.31.0, with a Chinese and English web interface; four official plugins are installed separately |
119
+ | Integration | Python, CLI, and optional MCP; by default MCP exposes 4 general entry points plus three shortcuts: inbox, reply, and screenshot |
120
+ | Starter templates | Subtitles, storyboard, and hand-drawn MV; their structure can be freely adapted |
121
+
122
+ Images, audio, and video are referenced by file path or URL and are not copied into the project database. Generating and processing media is done by the caller, skills, or external tools.
123
+
124
+ ## Windows quick start
125
+
126
+ Open PowerShell in your chosen working directory and choose either entry point.
127
+
128
+ With [uv](https://docs.astral.sh/uv/getting-started/installation/):
129
+
130
+ ```powershell
131
+ uvx layerweave@0.7.9b1 demo
132
+ ```
133
+
134
+ With Node.js 20+ / npm on Windows x64:
135
+
136
+ ```powershell
137
+ npx --yes layerweave@0.7.9-beta.1 demo
138
+ ```
139
+
140
+ Both entry points use the same Python implementation, prepare the article-reading example, and open your browser. uv manages Python; the npm entry point automatically prepares uv and an independent Python 3.11 when needed. Initial setup needs internet access. The uv route does not require Node.
141
+
142
+ The project lives in `./layerweave-demo/article-reading`. Running the same command again preserves objects, comments, layout, and media edits. Keep the terminal running while using the view; Ctrl+C stops the server. Use `--no-browser` to print the URL without opening a browser.
143
+
144
+ Replace the final `demo` argument with one of these:
145
+
146
+ | Arguments | Purpose |
147
+ |---|---|
148
+ | `demo --list` | List all twelve examples |
149
+ | `demo comic-creation --dir ./my-comic` | Download and open the comic example on demand |
150
+ | `view ./project.sqlite3` | Open an existing database; optionally select a project with `--project 1` |
151
+ | `new ./my-project --template subtitles` | Create a project from the subtitles template |
152
+ | `help project_overview` | Read the tool's detailed help |
153
+
154
+ Article reading is bundled; other examples download and cache on first use. Projects live in your working directory, so clearing caches does not delete them. See the [launcher guide (Chinese)](src/layerweave/tool/builtin/shared/launcher/README.md), [npm guide](distribution/npm/README.en.md), and [example directory](examples/showcases/README.md).
155
+
156
+ ### Install into your own Python environment
157
+
158
+ For scripts that import LayerWeave, or a persistent development environment:
159
+
160
+ ```powershell
161
+ uv venv --python 3.11 .venv
162
+ uv pip install --python .venv/Scripts/python.exe "layerweave[mcp]==0.7.9b1"
163
+ ```
164
+
165
+ `[mcp]` adds the optional AI integration dependencies; omit it for Python/CLI-only use. The wheel, source archive, and npm package are also available on the [GitHub Release page](https://github.com/aceddad/LayerWeave/releases/tag/v0.7.9b1) for installation from local files. Installing LayerWeave itself from a wheel does not require setuptools; runtime dependencies may still need downloading.
166
+
167
+ Ordinary data management and article reading need no API key, FFmpeg, or official view plugin. FFmpeg is optional for server-side frame extraction, thumbnails, and waveforms. AI screenshots require Chrome, Edge, or Chromium. See the [FFmpeg guide (Chinese)](src/layerweave/tool/builtin/view/GUIDE.md#选装-ffmpeg). Official view plugins remain separately installed.
168
+
169
+ ## Connect an AI / MCP client
170
+
171
+ Save an `mcp.json` in your project working directory, with workspace set to its actual absolute path:
172
+
173
+ ```json
174
+ {"workspace": "D:/my-project"}
175
+ ```
176
+
177
+ When using the Python environment created above, configure a stdio MCP client as follows:
178
+
179
+ ```json
180
+ {
181
+ "mcpServers": {
182
+ "layerweave": {
183
+ "command": "D:/my-project/.venv/Scripts/python.exe",
184
+ "args": ["-X", "utf8", "-m", "layerweave.tool.builtin.shared.mcp", "--config", "D:/my-project/mcp.json"]
185
+ }
186
+ }
187
+ }
188
+ ```
189
+
190
+ Replace the interpreter and configuration paths with your actual locations; where this configuration goes depends on the client. An AI can call `layerweave_help` first to see what is available, then work on specific targets without reading the whole project each time. Pass the database and project ID per call, or configure defaults; see the [MCP guide (Chinese)](src/layerweave/tool/builtin/shared/mcp/README.md).
191
+
192
+ For MCP-only use, uvx can prepare the environment and start the service in one command:
193
+
194
+ ```powershell
195
+ uvx --python 3.11 --from "layerweave[mcp]==0.7.9b1" layerweave-mcp --config ./mcp.json
196
+ ```
197
+
198
+ This runs a persistent stdio service, normally managed by an MCP client; it does not open the web view. Use an absolute configuration-file path in your client; the MCP guide includes a full example. You can also point `--from` at a downloaded local wheel.
199
+
200
+ ## Find tools and documentation
201
+
202
+ ```powershell
203
+ .venv/Scripts/python.exe -X utf8 -m layerweave.tool.builtin.shared.help.command_help
204
+ .venv/Scripts/python.exe -X utf8 -m layerweave.tool.builtin.shared.help.config_help
205
+ ```
206
+
207
+ `command_help` lists the installed commands with call examples; `config_help` explains what each layer and object type is for, its fields, and how types build on each other. The detailed guides below are currently in Chinese, as are CLI/help descriptions and bundled templates; machine-readable field and command names are unchanged.
208
+
209
+ - [Usage guide](src/layerweave/tool/builtin/usage/README.md): start from a task, choose a tool, and inspect its inputs, outputs, and examples.
210
+ - [JSON exchange and templates](src/layerweave/tool/builtin/usage/exchange/README.md): batch operations and starting structures.
211
+ - [View and plugins](src/layerweave/tool/builtin/view/README.md): interface usage. [Official plugins](https://github.com/aceddad/layerweave-plugins) are installed separately; the canvas works with none.
212
+ - [Source development](docs/developer-conventions.md), [runnable examples](docs/examples.md), and [documentation index](docs/README.md).
213
+
214
+ `visualization` is the complete version. `main` contains the development sources without the view, keeps direct Python/CLI entry points, and shares the core, support layer, and non-visual tools. The view, MCP service, and release packaging are maintained on the complete branch. Commands use `-X utf8` so piped output stays readable on Chinese Windows; see the [encoding notes (Chinese)](src/layerweave/tool/builtin/usage/README.md#命令行编码).
215
+
216
+ ## AI-assisted development
217
+
218
+ The maintainer leads the project's design and maintenance. Astra (Codex) and Claude assisted with development, testing, and documentation on this branch.
219
+
220
+ ## License
221
+
222
+ LayerWeave itself is licensed under [MIT](LICENSE). Bundled web components keep their own licenses; see [third-party notices](THIRD_PARTY_NOTICES.md). Separate plugins, skills, and external services follow their own terms.