rdstudio 0.2.0__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 (251) hide show
  1. rdstudio-0.2.0/.gitignore +35 -0
  2. rdstudio-0.2.0/LICENSE +21 -0
  3. rdstudio-0.2.0/PKG-INFO +201 -0
  4. rdstudio-0.2.0/README.md +188 -0
  5. rdstudio-0.2.0/pyproject.toml +43 -0
  6. rdstudio-0.2.0/src/rdstudio/__init__.py +3 -0
  7. rdstudio-0.2.0/src/rdstudio/_node/rdstudio.mjs +59351 -0
  8. rdstudio-0.2.0/src/rdstudio/brief.py +46 -0
  9. rdstudio-0.2.0/src/rdstudio/build.py +218 -0
  10. rdstudio-0.2.0/src/rdstudio/classify.py +131 -0
  11. rdstudio-0.2.0/src/rdstudio/cli.py +369 -0
  12. rdstudio-0.2.0/src/rdstudio/config.py +115 -0
  13. rdstudio-0.2.0/src/rdstudio/gitlog.py +92 -0
  14. rdstudio-0.2.0/src/rdstudio/launcher.py +63 -0
  15. rdstudio-0.2.0/src/rdstudio/learner.py +187 -0
  16. rdstudio-0.2.0/src/rdstudio/mcp_server.py +313 -0
  17. rdstudio-0.2.0/src/rdstudio/okf.py +775 -0
  18. rdstudio-0.2.0/src/rdstudio/procedures.py +233 -0
  19. rdstudio-0.2.0/src/rdstudio/references.py +228 -0
  20. rdstudio-0.2.0/src/rdstudio/reports.py +75 -0
  21. rdstudio-0.2.0/src/rdstudio/scaffold.py +227 -0
  22. rdstudio-0.2.0/src/rdstudio/scopes.py +162 -0
  23. rdstudio-0.2.0/src/rdstudio/search.py +149 -0
  24. rdstudio-0.2.0/src/rdstudio/serve.py +214 -0
  25. rdstudio-0.2.0/src/rdstudio/store.py +161 -0
  26. rdstudio-0.2.0/src/rdstudio/templates/agents/critic.md +20 -0
  27. rdstudio-0.2.0/src/rdstudio/templates/agents/librarian.md +21 -0
  28. rdstudio-0.2.0/src/rdstudio/templates/agents/searcher.md +21 -0
  29. rdstudio-0.2.0/src/rdstudio/templates/agents_section.md +31 -0
  30. rdstudio-0.2.0/src/rdstudio/templates/claude_section.md +3 -0
  31. rdstudio-0.2.0/src/rdstudio/templates/knowledge/overview.md +20 -0
  32. rdstudio-0.2.0/src/rdstudio/templates/knowledge/tasks/bootstrap-knowledge-base.md +45 -0
  33. rdstudio-0.2.0/src/rdstudio/templates/skills/decision/SKILL.md +47 -0
  34. rdstudio-0.2.0/src/rdstudio/templates/skills/handoff/SKILL.md +18 -0
  35. rdstudio-0.2.0/src/rdstudio/templates/skills/ingest-ref/SKILL.md +32 -0
  36. rdstudio-0.2.0/src/rdstudio/templates/skills/lint-okf/SKILL.md +15 -0
  37. rdstudio-0.2.0/src/rdstudio/templates/skills/promote/SKILL.md +25 -0
  38. rdstudio-0.2.0/src/rdstudio/templates/skills/question/SKILL.md +33 -0
  39. rdstudio-0.2.0/src/rdstudio/templates/skills/record-okf/SKILL.md +61 -0
  40. rdstudio-0.2.0/src/rdstudio/templates/skills/report/SKILL.md +46 -0
  41. rdstudio-0.2.0/src/rdstudio/templates/skills/report/template.html +74 -0
  42. rdstudio-0.2.0/src/rdstudio/templates/skills/search-okf/SKILL.md +36 -0
  43. rdstudio-0.2.0/src/rdstudio/templates/skills/task/SKILL.md +51 -0
  44. rdstudio-0.2.0/src/rdstudio/web/app.js +140 -0
  45. rdstudio-0.2.0/src/rdstudio/web/fonts.css +48 -0
  46. rdstudio-0.2.0/src/rdstudio/web/icon-192.png +0 -0
  47. rdstudio-0.2.0/src/rdstudio/web/icon-512.png +0 -0
  48. rdstudio-0.2.0/src/rdstudio/web/index.html +109 -0
  49. rdstudio-0.2.0/src/rdstudio/web/js/data.js +125 -0
  50. rdstudio-0.2.0/src/rdstudio/web/js/diagrams.js +116 -0
  51. rdstudio-0.2.0/src/rdstudio/web/js/graph.js +396 -0
  52. rdstudio-0.2.0/src/rdstudio/web/js/knowledge.js +212 -0
  53. rdstudio-0.2.0/src/rdstudio/web/js/layout-worker.js +15 -0
  54. rdstudio-0.2.0/src/rdstudio/web/js/layout.js +226 -0
  55. rdstudio-0.2.0/src/rdstudio/web/js/learn.js +83 -0
  56. rdstudio-0.2.0/src/rdstudio/web/js/map.js +1293 -0
  57. rdstudio-0.2.0/src/rdstudio/web/js/markdown.js +173 -0
  58. rdstudio-0.2.0/src/rdstudio/web/js/pages.js +219 -0
  59. rdstudio-0.2.0/src/rdstudio/web/js/procedures.js +262 -0
  60. rdstudio-0.2.0/src/rdstudio/web/js/settings.js +95 -0
  61. rdstudio-0.2.0/src/rdstudio/web/js/util.js +99 -0
  62. rdstudio-0.2.0/src/rdstudio/web/report.css +35 -0
  63. rdstudio-0.2.0/src/rdstudio/web/report.js +104 -0
  64. rdstudio-0.2.0/src/rdstudio/web/style.css +566 -0
  65. rdstudio-0.2.0/src/rdstudio/web/sw.js +166 -0
  66. rdstudio-0.2.0/src/rdstudio/web/themes/cyber.css +139 -0
  67. rdstudio-0.2.0/src/rdstudio/web/themes/map.css +133 -0
  68. rdstudio-0.2.0/src/rdstudio/web/themes/notebook.css +134 -0
  69. rdstudio-0.2.0/src/rdstudio/web/themes/space.css +135 -0
  70. rdstudio-0.2.0/src/rdstudio/web/themes/studio.css +110 -0
  71. rdstudio-0.2.0/src/rdstudio/web/vendor/d3.min.js +2 -0
  72. rdstudio-0.2.0/src/rdstudio/web/vendor/fonts/atkinson-hyperlegible-next-latin-ext-wght-italic.woff2 +0 -0
  73. rdstudio-0.2.0/src/rdstudio/web/vendor/fonts/atkinson-hyperlegible-next-latin-ext-wght-normal.woff2 +0 -0
  74. rdstudio-0.2.0/src/rdstudio/web/vendor/fonts/atkinson-hyperlegible-next-latin-wght-italic.woff2 +0 -0
  75. rdstudio-0.2.0/src/rdstudio/web/vendor/fonts/atkinson-hyperlegible-next-latin-wght-normal.woff2 +0 -0
  76. rdstudio-0.2.0/src/rdstudio/web/vendor/fonts/caveat-latin-wght-normal.woff2 +0 -0
  77. rdstudio-0.2.0/src/rdstudio/web/vendor/fonts/ibm-plex-mono-latin-400-normal.woff2 +0 -0
  78. rdstudio-0.2.0/src/rdstudio/web/vendor/fonts/ibm-plex-mono-latin-600-normal.woff2 +0 -0
  79. rdstudio-0.2.0/src/rdstudio/web/vendor/fonts/ibm-plex-sans-latin-wght-italic.woff2 +0 -0
  80. rdstudio-0.2.0/src/rdstudio/web/vendor/fonts/ibm-plex-sans-latin-wght-normal.woff2 +0 -0
  81. rdstudio-0.2.0/src/rdstudio/web/vendor/fonts/inter-latin-opsz-italic.woff2 +0 -0
  82. rdstudio-0.2.0/src/rdstudio/web/vendor/fonts/inter-latin-opsz-normal.woff2 +0 -0
  83. rdstudio-0.2.0/src/rdstudio/web/vendor/fonts/jetbrains-mono-latin-wght-italic.woff2 +0 -0
  84. rdstudio-0.2.0/src/rdstudio/web/vendor/fonts/jetbrains-mono-latin-wght-normal.woff2 +0 -0
  85. rdstudio-0.2.0/src/rdstudio/web/vendor/fonts/literata-latin-ext-opsz-italic.woff2 +0 -0
  86. rdstudio-0.2.0/src/rdstudio/web/vendor/fonts/literata-latin-ext-opsz-normal.woff2 +0 -0
  87. rdstudio-0.2.0/src/rdstudio/web/vendor/fonts/literata-latin-opsz-italic.woff2 +0 -0
  88. rdstudio-0.2.0/src/rdstudio/web/vendor/fonts/literata-latin-opsz-normal.woff2 +0 -0
  89. rdstudio-0.2.0/src/rdstudio/web/vendor/fonts/source-sans-3-latin-wght-italic.woff2 +0 -0
  90. rdstudio-0.2.0/src/rdstudio/web/vendor/fonts/source-sans-3-latin-wght-normal.woff2 +0 -0
  91. rdstudio-0.2.0/src/rdstudio/web/vendor/fonts/source-serif-4-latin-opsz-italic.woff2 +0 -0
  92. rdstudio-0.2.0/src/rdstudio/web/vendor/fonts/source-serif-4-latin-opsz-normal.woff2 +0 -0
  93. rdstudio-0.2.0/src/rdstudio/web/vendor/hljs/github-dark.min.css +10 -0
  94. rdstudio-0.2.0/src/rdstudio/web/vendor/hljs/github.min.css +10 -0
  95. rdstudio-0.2.0/src/rdstudio/web/vendor/hljs/highlight.min.js +1262 -0
  96. rdstudio-0.2.0/src/rdstudio/web/vendor/hljs/julia.min.js +18 -0
  97. rdstudio-0.2.0/src/rdstudio/web/vendor/hljs/latex.min.js +33 -0
  98. rdstudio-0.2.0/src/rdstudio/web/vendor/hljs/matlab.min.js +15 -0
  99. rdstudio-0.2.0/src/rdstudio/web/vendor/katex/auto-render.min.js +1 -0
  100. rdstudio-0.2.0/src/rdstudio/web/vendor/katex/fonts/KaTeX_AMS-Regular.woff2 +0 -0
  101. rdstudio-0.2.0/src/rdstudio/web/vendor/katex/fonts/KaTeX_Caligraphic-Bold.woff2 +0 -0
  102. rdstudio-0.2.0/src/rdstudio/web/vendor/katex/fonts/KaTeX_Caligraphic-Regular.woff2 +0 -0
  103. rdstudio-0.2.0/src/rdstudio/web/vendor/katex/fonts/KaTeX_Fraktur-Bold.woff2 +0 -0
  104. rdstudio-0.2.0/src/rdstudio/web/vendor/katex/fonts/KaTeX_Fraktur-Regular.woff2 +0 -0
  105. rdstudio-0.2.0/src/rdstudio/web/vendor/katex/fonts/KaTeX_Main-Bold.woff2 +0 -0
  106. rdstudio-0.2.0/src/rdstudio/web/vendor/katex/fonts/KaTeX_Main-BoldItalic.woff2 +0 -0
  107. rdstudio-0.2.0/src/rdstudio/web/vendor/katex/fonts/KaTeX_Main-Italic.woff2 +0 -0
  108. rdstudio-0.2.0/src/rdstudio/web/vendor/katex/fonts/KaTeX_Main-Regular.woff2 +0 -0
  109. rdstudio-0.2.0/src/rdstudio/web/vendor/katex/fonts/KaTeX_Math-BoldItalic.woff2 +0 -0
  110. rdstudio-0.2.0/src/rdstudio/web/vendor/katex/fonts/KaTeX_Math-Italic.woff2 +0 -0
  111. rdstudio-0.2.0/src/rdstudio/web/vendor/katex/fonts/KaTeX_SansSerif-Bold.woff2 +0 -0
  112. rdstudio-0.2.0/src/rdstudio/web/vendor/katex/fonts/KaTeX_SansSerif-Italic.woff2 +0 -0
  113. rdstudio-0.2.0/src/rdstudio/web/vendor/katex/fonts/KaTeX_SansSerif-Regular.woff2 +0 -0
  114. rdstudio-0.2.0/src/rdstudio/web/vendor/katex/fonts/KaTeX_Script-Regular.woff2 +0 -0
  115. rdstudio-0.2.0/src/rdstudio/web/vendor/katex/fonts/KaTeX_Size1-Regular.woff2 +0 -0
  116. rdstudio-0.2.0/src/rdstudio/web/vendor/katex/fonts/KaTeX_Size2-Regular.woff2 +0 -0
  117. rdstudio-0.2.0/src/rdstudio/web/vendor/katex/fonts/KaTeX_Size3-Regular.woff2 +0 -0
  118. rdstudio-0.2.0/src/rdstudio/web/vendor/katex/fonts/KaTeX_Size4-Regular.woff2 +0 -0
  119. rdstudio-0.2.0/src/rdstudio/web/vendor/katex/fonts/KaTeX_Typewriter-Regular.woff2 +0 -0
  120. rdstudio-0.2.0/src/rdstudio/web/vendor/katex/katex.min.css +1 -0
  121. rdstudio-0.2.0/src/rdstudio/web/vendor/katex/katex.min.js +1 -0
  122. rdstudio-0.2.0/src/rdstudio/web/vendor/licenses/atkinson-hyperlegible-next-OFL.txt +93 -0
  123. rdstudio-0.2.0/src/rdstudio/web/vendor/licenses/caveat-OFL.txt +93 -0
  124. rdstudio-0.2.0/src/rdstudio/web/vendor/licenses/d3-7.9.0.txt +13 -0
  125. rdstudio-0.2.0/src/rdstudio/web/vendor/licenses/highlightjs-cdn-assets-11.12.0.txt +29 -0
  126. rdstudio-0.2.0/src/rdstudio/web/vendor/licenses/ibm-plex-mono-OFL.txt +93 -0
  127. rdstudio-0.2.0/src/rdstudio/web/vendor/licenses/ibm-plex-sans-OFL.txt +93 -0
  128. rdstudio-0.2.0/src/rdstudio/web/vendor/licenses/inter-OFL.txt +93 -0
  129. rdstudio-0.2.0/src/rdstudio/web/vendor/licenses/jetbrains-mono-OFL.txt +93 -0
  130. rdstudio-0.2.0/src/rdstudio/web/vendor/licenses/katex-0.18.7.txt +21 -0
  131. rdstudio-0.2.0/src/rdstudio/web/vendor/licenses/literata-OFL.txt +93 -0
  132. rdstudio-0.2.0/src/rdstudio/web/vendor/licenses/markdown-it-15.0.2.txt +22 -0
  133. rdstudio-0.2.0/src/rdstudio/web/vendor/licenses/markdown-it-footnote-4.0.0.txt +22 -0
  134. rdstudio-0.2.0/src/rdstudio/web/vendor/licenses/markdown-it-texmath-1.0.0.txt +21 -0
  135. rdstudio-0.2.0/src/rdstudio/web/vendor/licenses/mermaid-12.0.0.txt +21 -0
  136. rdstudio-0.2.0/src/rdstudio/web/vendor/licenses/source-sans-3-OFL.txt +93 -0
  137. rdstudio-0.2.0/src/rdstudio/web/vendor/licenses/source-serif-4-OFL.txt +93 -0
  138. rdstudio-0.2.0/src/rdstudio/web/vendor/licenses/vega-6.4.0.txt +27 -0
  139. rdstudio-0.2.0/src/rdstudio/web/vendor/licenses/vega-embed-7.2.0.txt +27 -0
  140. rdstudio-0.2.0/src/rdstudio/web/vendor/licenses/vega-lite-6.4.3.txt +27 -0
  141. rdstudio-0.2.0/src/rdstudio/web/vendor/markdown-it-footnote.min.js +2 -0
  142. rdstudio-0.2.0/src/rdstudio/web/vendor/markdown-it.min.js +14 -0
  143. rdstudio-0.2.0/src/rdstudio/web/vendor/mermaid/chunks/mermaid.esm.min/abnfDiagram-DGLNOSUI.mjs +1 -0
  144. rdstudio-0.2.0/src/rdstudio/web/vendor/mermaid/chunks/mermaid.esm.min/architecture-7GRP2DOG-HF4J73XS.mjs +1 -0
  145. rdstudio-0.2.0/src/rdstudio/web/vendor/mermaid/chunks/mermaid.esm.min/architectureDiagram-IU6H5EVY.mjs +36 -0
  146. rdstudio-0.2.0/src/rdstudio/web/vendor/mermaid/chunks/mermaid.esm.min/blockDiagram-FSX6DT2V.mjs +140 -0
  147. rdstudio-0.2.0/src/rdstudio/web/vendor/mermaid/chunks/mermaid.esm.min/c4Diagram-YNRVYILN.mjs +38 -0
  148. rdstudio-0.2.0/src/rdstudio/web/vendor/mermaid/chunks/mermaid.esm.min/chunk-22SYA5HA.mjs +1 -0
  149. rdstudio-0.2.0/src/rdstudio/web/vendor/mermaid/chunks/mermaid.esm.min/chunk-2FTYKNOQ.mjs +1 -0
  150. rdstudio-0.2.0/src/rdstudio/web/vendor/mermaid/chunks/mermaid.esm.min/chunk-36VM3LGA.mjs +1 -0
  151. rdstudio-0.2.0/src/rdstudio/web/vendor/mermaid/chunks/mermaid.esm.min/chunk-3SEI7E7V.mjs +1 -0
  152. rdstudio-0.2.0/src/rdstudio/web/vendor/mermaid/chunks/mermaid.esm.min/chunk-3T2MNPEU.mjs +1 -0
  153. rdstudio-0.2.0/src/rdstudio/web/vendor/mermaid/chunks/mermaid.esm.min/chunk-44AU3KAP.mjs +174 -0
  154. rdstudio-0.2.0/src/rdstudio/web/vendor/mermaid/chunks/mermaid.esm.min/chunk-4MZOTL6B.mjs +1 -0
  155. rdstudio-0.2.0/src/rdstudio/web/vendor/mermaid/chunks/mermaid.esm.min/chunk-52IMQVNL.mjs +1 -0
  156. rdstudio-0.2.0/src/rdstudio/web/vendor/mermaid/chunks/mermaid.esm.min/chunk-5NYYYZGL.mjs +1 -0
  157. rdstudio-0.2.0/src/rdstudio/web/vendor/mermaid/chunks/mermaid.esm.min/chunk-BOZ75642.mjs +15 -0
  158. rdstudio-0.2.0/src/rdstudio/web/vendor/mermaid/chunks/mermaid.esm.min/chunk-CVBX6EWK.mjs +1 -0
  159. rdstudio-0.2.0/src/rdstudio/web/vendor/mermaid/chunks/mermaid.esm.min/chunk-D36F7FYG.mjs +14 -0
  160. rdstudio-0.2.0/src/rdstudio/web/vendor/mermaid/chunks/mermaid.esm.min/chunk-DEGLBX6O.mjs +213 -0
  161. rdstudio-0.2.0/src/rdstudio/web/vendor/mermaid/chunks/mermaid.esm.min/chunk-F6PIGZHG.mjs +1 -0
  162. rdstudio-0.2.0/src/rdstudio/web/vendor/mermaid/chunks/mermaid.esm.min/chunk-FE53TMRB.mjs +133 -0
  163. rdstudio-0.2.0/src/rdstudio/web/vendor/mermaid/chunks/mermaid.esm.min/chunk-FNR2RGIF.mjs +1 -0
  164. rdstudio-0.2.0/src/rdstudio/web/vendor/mermaid/chunks/mermaid.esm.min/chunk-GDOATIN3.mjs +32 -0
  165. rdstudio-0.2.0/src/rdstudio/web/vendor/mermaid/chunks/mermaid.esm.min/chunk-H7BX327W.mjs +2 -0
  166. rdstudio-0.2.0/src/rdstudio/web/vendor/mermaid/chunks/mermaid.esm.min/chunk-HI3EPXIC.mjs +2 -0
  167. rdstudio-0.2.0/src/rdstudio/web/vendor/mermaid/chunks/mermaid.esm.min/chunk-JCBDXJ5W.mjs +1 -0
  168. rdstudio-0.2.0/src/rdstudio/web/vendor/mermaid/chunks/mermaid.esm.min/chunk-JGXDHUYS.mjs +1 -0
  169. rdstudio-0.2.0/src/rdstudio/web/vendor/mermaid/chunks/mermaid.esm.min/chunk-L2B47AAZ.mjs +1 -0
  170. rdstudio-0.2.0/src/rdstudio/web/vendor/mermaid/chunks/mermaid.esm.min/chunk-LIEGGFIX.mjs +1 -0
  171. rdstudio-0.2.0/src/rdstudio/web/vendor/mermaid/chunks/mermaid.esm.min/chunk-LLWYPJEZ.mjs +1 -0
  172. rdstudio-0.2.0/src/rdstudio/web/vendor/mermaid/chunks/mermaid.esm.min/chunk-MFYRHTYG.mjs +1 -0
  173. rdstudio-0.2.0/src/rdstudio/web/vendor/mermaid/chunks/mermaid.esm.min/chunk-MIE3LDYP.mjs +1 -0
  174. rdstudio-0.2.0/src/rdstudio/web/vendor/mermaid/chunks/mermaid.esm.min/chunk-MLQVGYRW.mjs +1 -0
  175. rdstudio-0.2.0/src/rdstudio/web/vendor/mermaid/chunks/mermaid.esm.min/chunk-MNT3HHAC.mjs +1 -0
  176. rdstudio-0.2.0/src/rdstudio/web/vendor/mermaid/chunks/mermaid.esm.min/chunk-NRRTYJAG.mjs +1 -0
  177. rdstudio-0.2.0/src/rdstudio/web/vendor/mermaid/chunks/mermaid.esm.min/chunk-OCMJQKYE.mjs +10 -0
  178. rdstudio-0.2.0/src/rdstudio/web/vendor/mermaid/chunks/mermaid.esm.min/chunk-PKJCTQEK.mjs +339 -0
  179. rdstudio-0.2.0/src/rdstudio/web/vendor/mermaid/chunks/mermaid.esm.min/chunk-QADHU5CF.mjs +2 -0
  180. rdstudio-0.2.0/src/rdstudio/web/vendor/mermaid/chunks/mermaid.esm.min/chunk-QVIEFLGF.mjs +1 -0
  181. rdstudio-0.2.0/src/rdstudio/web/vendor/mermaid/chunks/mermaid.esm.min/chunk-QX7LGXZU.mjs +1 -0
  182. rdstudio-0.2.0/src/rdstudio/web/vendor/mermaid/chunks/mermaid.esm.min/chunk-R2KH53MI.mjs +1 -0
  183. rdstudio-0.2.0/src/rdstudio/web/vendor/mermaid/chunks/mermaid.esm.min/chunk-RXM7Z7NK.mjs +2 -0
  184. rdstudio-0.2.0/src/rdstudio/web/vendor/mermaid/chunks/mermaid.esm.min/chunk-S4TE5DX6.mjs +1 -0
  185. rdstudio-0.2.0/src/rdstudio/web/vendor/mermaid/chunks/mermaid.esm.min/chunk-SDIBIOXT.mjs +1 -0
  186. rdstudio-0.2.0/src/rdstudio/web/vendor/mermaid/chunks/mermaid.esm.min/chunk-TDFULVG6.mjs +1 -0
  187. rdstudio-0.2.0/src/rdstudio/web/vendor/mermaid/chunks/mermaid.esm.min/chunk-TECWHJ6D.mjs +62 -0
  188. rdstudio-0.2.0/src/rdstudio/web/vendor/mermaid/chunks/mermaid.esm.min/chunk-TINYC7RT.mjs +70 -0
  189. rdstudio-0.2.0/src/rdstudio/web/vendor/mermaid/chunks/mermaid.esm.min/chunk-V3KJR4XU.mjs +1 -0
  190. rdstudio-0.2.0/src/rdstudio/web/vendor/mermaid/chunks/mermaid.esm.min/chunk-VTMXW4ES.mjs +1 -0
  191. rdstudio-0.2.0/src/rdstudio/web/vendor/mermaid/chunks/mermaid.esm.min/chunk-Y5NT6LW5.mjs +88 -0
  192. rdstudio-0.2.0/src/rdstudio/web/vendor/mermaid/chunks/mermaid.esm.min/chunk-Y5O5OPKC.mjs +3 -0
  193. rdstudio-0.2.0/src/rdstudio/web/vendor/mermaid/chunks/mermaid.esm.min/chunk-YZG4BXY6.mjs +1 -0
  194. rdstudio-0.2.0/src/rdstudio/web/vendor/mermaid/chunks/mermaid.esm.min/chunk-ZZ52EIBP.mjs +1 -0
  195. rdstudio-0.2.0/src/rdstudio/web/vendor/mermaid/chunks/mermaid.esm.min/classDiagram-v2-VV4INRHB.mjs +217 -0
  196. rdstudio-0.2.0/src/rdstudio/web/vendor/mermaid/chunks/mermaid.esm.min/cose-bilkent-MSIMRU2B.mjs +1 -0
  197. rdstudio-0.2.0/src/rdstudio/web/vendor/mermaid/chunks/mermaid.esm.min/cynefin-OW5HDTMX-KMPDV6GS.mjs +1 -0
  198. rdstudio-0.2.0/src/rdstudio/web/vendor/mermaid/chunks/mermaid.esm.min/cynefinDiagram-KTGLXFXK.mjs +62 -0
  199. rdstudio-0.2.0/src/rdstudio/web/vendor/mermaid/chunks/mermaid.esm.min/dagre-QJJCSHY4.mjs +4 -0
  200. rdstudio-0.2.0/src/rdstudio/web/vendor/mermaid/chunks/mermaid.esm.min/diagram-2ZIM67RP.mjs +3 -0
  201. rdstudio-0.2.0/src/rdstudio/web/vendor/mermaid/chunks/mermaid.esm.min/diagram-FYHH5O6R.mjs +24 -0
  202. rdstudio-0.2.0/src/rdstudio/web/vendor/mermaid/chunks/mermaid.esm.min/diagram-LYLDACMS.mjs +200 -0
  203. rdstudio-0.2.0/src/rdstudio/web/vendor/mermaid/chunks/mermaid.esm.min/diagram-TYT3HRBC.mjs +24 -0
  204. rdstudio-0.2.0/src/rdstudio/web/vendor/mermaid/chunks/mermaid.esm.min/diagram-XVIN6YVD.mjs +30 -0
  205. rdstudio-0.2.0/src/rdstudio/web/vendor/mermaid/chunks/mermaid.esm.min/diagram-ZO2NLLYC.mjs +41 -0
  206. rdstudio-0.2.0/src/rdstudio/web/vendor/mermaid/chunks/mermaid.esm.min/ebnfDiagram-TU3FGH35.mjs +1 -0
  207. rdstudio-0.2.0/src/rdstudio/web/vendor/mermaid/chunks/mermaid.esm.min/elk-GHAXNSLK.mjs +27 -0
  208. rdstudio-0.2.0/src/rdstudio/web/vendor/mermaid/chunks/mermaid.esm.min/erDiagram-XID3VV23.mjs +99 -0
  209. rdstudio-0.2.0/src/rdstudio/web/vendor/mermaid/chunks/mermaid.esm.min/eventmodeling-NTZA5JFV-P5QJSWSK.mjs +1 -0
  210. rdstudio-0.2.0/src/rdstudio/web/vendor/mermaid/chunks/mermaid.esm.min/flowDiagram-WPHQAKTU.mjs +1 -0
  211. rdstudio-0.2.0/src/rdstudio/web/vendor/mermaid/chunks/mermaid.esm.min/ganttDiagram-QACGSKG6.mjs +292 -0
  212. rdstudio-0.2.0/src/rdstudio/web/vendor/mermaid/chunks/mermaid.esm.min/gitGraph-4MIJSDKK-V5NEQQYP.mjs +1 -0
  213. rdstudio-0.2.0/src/rdstudio/web/vendor/mermaid/chunks/mermaid.esm.min/gitGraphDiagram-EB76O4HC.mjs +106 -0
  214. rdstudio-0.2.0/src/rdstudio/web/vendor/mermaid/chunks/mermaid.esm.min/info-A6RAGUB7-IGBHH2L7.mjs +1 -0
  215. rdstudio-0.2.0/src/rdstudio/web/vendor/mermaid/chunks/mermaid.esm.min/infoDiagram-343ZKIDN.mjs +2 -0
  216. rdstudio-0.2.0/src/rdstudio/web/vendor/mermaid/chunks/mermaid.esm.min/ishikawaDiagram-UEEU5D75.mjs +70 -0
  217. rdstudio-0.2.0/src/rdstudio/web/vendor/mermaid/chunks/mermaid.esm.min/journeyDiagram-4QTZOVLF.mjs +139 -0
  218. rdstudio-0.2.0/src/rdstudio/web/vendor/mermaid/chunks/mermaid.esm.min/kanban-definition-VEJL4RG2.mjs +89 -0
  219. rdstudio-0.2.0/src/rdstudio/web/vendor/mermaid/chunks/mermaid.esm.min/katex-QVRI4OIV.mjs +257 -0
  220. rdstudio-0.2.0/src/rdstudio/web/vendor/mermaid/chunks/mermaid.esm.min/mindmap-definition-C5K5ZT7T.mjs +96 -0
  221. rdstudio-0.2.0/src/rdstudio/web/vendor/mermaid/chunks/mermaid.esm.min/packet-AYTQ26CC-PJTKDECJ.mjs +1 -0
  222. rdstudio-0.2.0/src/rdstudio/web/vendor/mermaid/chunks/mermaid.esm.min/pegDiagram-FHIILVJB.mjs +1 -0
  223. rdstudio-0.2.0/src/rdstudio/web/vendor/mermaid/chunks/mermaid.esm.min/pie-WAS4IAKB-U3JFQXZN.mjs +1 -0
  224. rdstudio-0.2.0/src/rdstudio/web/vendor/mermaid/chunks/mermaid.esm.min/pieDiagram-S76BU6V7.mjs +39 -0
  225. rdstudio-0.2.0/src/rdstudio/web/vendor/mermaid/chunks/mermaid.esm.min/quadrantDiagram-HZBLWUZE.mjs +7 -0
  226. rdstudio-0.2.0/src/rdstudio/web/vendor/mermaid/chunks/mermaid.esm.min/radar-RG4KPBEZ-7T2UW32D.mjs +1 -0
  227. rdstudio-0.2.0/src/rdstudio/web/vendor/mermaid/chunks/mermaid.esm.min/railroad-74A4TZTK-DZY7ARDL.mjs +1 -0
  228. rdstudio-0.2.0/src/rdstudio/web/vendor/mermaid/chunks/mermaid.esm.min/railroad-abnf-HS5TGJTU-LWS535ZK.mjs +1 -0
  229. rdstudio-0.2.0/src/rdstudio/web/vendor/mermaid/chunks/mermaid.esm.min/railroad-ebnf-LZEXJU2U-EA3S4ZFM.mjs +1 -0
  230. rdstudio-0.2.0/src/rdstudio/web/vendor/mermaid/chunks/mermaid.esm.min/railroad-peg-WCYAUIDC-DUKZONPX.mjs +1 -0
  231. rdstudio-0.2.0/src/rdstudio/web/vendor/mermaid/chunks/mermaid.esm.min/railroadDiagram-R6RP3MQ2.mjs +1 -0
  232. rdstudio-0.2.0/src/rdstudio/web/vendor/mermaid/chunks/mermaid.esm.min/requirementDiagram-SGBABQV6.mjs +84 -0
  233. rdstudio-0.2.0/src/rdstudio/web/vendor/mermaid/chunks/mermaid.esm.min/sankeyDiagram-IM6M5BOW.mjs +40 -0
  234. rdstudio-0.2.0/src/rdstudio/web/vendor/mermaid/chunks/mermaid.esm.min/sequenceDiagram-FGJOIFJ2.mjs +169 -0
  235. rdstudio-0.2.0/src/rdstudio/web/vendor/mermaid/chunks/mermaid.esm.min/sizeCapture-ERV5D3W5.mjs +1 -0
  236. rdstudio-0.2.0/src/rdstudio/web/vendor/mermaid/chunks/mermaid.esm.min/stateDiagram-v2-6KDGCZ5J.mjs +291 -0
  237. rdstudio-0.2.0/src/rdstudio/web/vendor/mermaid/chunks/mermaid.esm.min/swimlanes-OJBUSBEF.mjs +1 -0
  238. rdstudio-0.2.0/src/rdstudio/web/vendor/mermaid/chunks/mermaid.esm.min/swimlanesDiagram-LNXYTHDW.mjs +8 -0
  239. rdstudio-0.2.0/src/rdstudio/web/vendor/mermaid/chunks/mermaid.esm.min/timeline-definition-7G6YQRTY.mjs +120 -0
  240. rdstudio-0.2.0/src/rdstudio/web/vendor/mermaid/chunks/mermaid.esm.min/treeView-Q6P3EWNA-AABPVERA.mjs +1 -0
  241. rdstudio-0.2.0/src/rdstudio/web/vendor/mermaid/chunks/mermaid.esm.min/treemap-WGGIJYW6-F2JSY3V3.mjs +1 -0
  242. rdstudio-0.2.0/src/rdstudio/web/vendor/mermaid/chunks/mermaid.esm.min/usecaseDiagram-6Y6TMLBO.mjs +383 -0
  243. rdstudio-0.2.0/src/rdstudio/web/vendor/mermaid/chunks/mermaid.esm.min/vennDiagram-6RODYPCK.mjs +34 -0
  244. rdstudio-0.2.0/src/rdstudio/web/vendor/mermaid/chunks/mermaid.esm.min/wardley-WFR3VGLG-EIT5NWVN.mjs +1 -0
  245. rdstudio-0.2.0/src/rdstudio/web/vendor/mermaid/chunks/mermaid.esm.min/wardleyDiagram-RFZKLAPA.mjs +78 -0
  246. rdstudio-0.2.0/src/rdstudio/web/vendor/mermaid/chunks/mermaid.esm.min/xychartDiagram-TWWI2QJZ.mjs +7 -0
  247. rdstudio-0.2.0/src/rdstudio/web/vendor/mermaid/mermaid.esm.min.mjs +14 -0
  248. rdstudio-0.2.0/src/rdstudio/web/vendor/texmath.js +368 -0
  249. rdstudio-0.2.0/src/rdstudio/web/vendor/vega/vega-embed.min.js +7 -0
  250. rdstudio-0.2.0/src/rdstudio/web/vendor/vega/vega-lite.min.js +2 -0
  251. rdstudio-0.2.0/src/rdstudio/web/vendor/vega/vega.min.js +1 -0
@@ -0,0 +1,35 @@
1
+ # Python
2
+ __pycache__/
3
+ *.py[cod]
4
+ .venv/
5
+ *.egg-info/
6
+ dist/
7
+ build/
8
+
9
+ # Local reference papers (downloaded copies; not redistributed)
10
+ reference/papers/
11
+
12
+ # Editor / OS
13
+ .DS_Store
14
+ *.swp
15
+
16
+ # rdstudio build output
17
+ .rdstudio/
18
+
19
+ # Benchmark bundles and results (bench/run.py)
20
+ .bench/
21
+
22
+ # TypeScript packages
23
+ node_modules/
24
+
25
+ # The bundled Node command line, built at release (npm run bundle --workspace rdstudio)
26
+ src/rdstudio/_node/
27
+
28
+ # Release staging (mise run release:npm, and the release workflow)
29
+ .release/
30
+ npm-dist/
31
+ # The SvelteKit app
32
+ app/.svelte-kit/
33
+ app/build/
34
+ app/static/
35
+ # openapi.json and src/lib/api/ are generated (npm run generate) but committed, so builds need no server.
rdstudio-0.2.0/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Lachlan Stewart
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,201 @@
1
+ Metadata-Version: 2.5
2
+ Name: rdstudio
3
+ Version: 0.2.0
4
+ Summary: Agentic research and development studio: OKF knowledge bundles, a read-only dashboard, MCP and skills.
5
+ Author: Lachlan Stewart
6
+ License-File: LICENSE
7
+ Requires-Python: >=3.11
8
+ Requires-Dist: markdown-it-py>=4.2.0
9
+ Requires-Dist: mcp>=2.2.0
10
+ Requires-Dist: nodejs-wheel-binaries>=24.19
11
+ Requires-Dist: pyyaml>=6.0.3
12
+ Description-Content-Type: text/markdown
13
+
14
+ # rdstudio
15
+
16
+ A knowledge base, dashboard and agent toolkit for research projects, which you
17
+ add to any repository. You and your agents write notes, decisions, tasks and
18
+ procedures as markdown in `knowledge/`, and a local dashboard lets you browse
19
+ them.
20
+
21
+ **[See a live preview](https://lachlanjs.github.io/rdstudio/)**: the dashboard
22
+ for rdstudio's own knowledge base, rebuilt on every push to `main`.
23
+
24
+ ## Requirements
25
+
26
+ - Python 3.11+ and [uv](https://docs.astral.sh/uv/)
27
+ - git
28
+ - An agent harness: [Claude Code](https://claude.com/claude-code) and
29
+ [OpenCode](https://opencode.ai) are set up automatically; others that read
30
+ `AGENTS.md` and support MCP can use the same files
31
+
32
+ ## Install
33
+
34
+ ```bash
35
+ uv tool install rdstudio # from PyPI; `uv tool upgrade rdstudio` later
36
+ ```
37
+
38
+ or, with Node 24 or later, `npm install -g rdstudio` (or run it without
39
+ installing: `npx rdstudio init`). Either way you get the same program: its
40
+ command line runs on Node, which the Python package brings along as a
41
+ dependency, so there is nothing else to install. `rdstudio-py` runs the older
42
+ Python command line, which does the same things, while it lasts.
43
+
44
+ To work on rdstudio itself, clone the repository, run `mise run setup`, then
45
+ `uv tool install --editable . --force` inside it. Releases are made by pushing
46
+ a version tag (see `knowledge/procedures/release.md`).
47
+
48
+ ## Use it in a project
49
+
50
+ ```bash
51
+ cd my-project
52
+ rdstudio init --human human:<your-name>
53
+ rdstudio serve # dashboard at http://localhost:8000
54
+ ```
55
+
56
+ `init` writes `AGENTS.md` (with `CLAUDE.md` importing it), skills in
57
+ `.claude/skills/`, subagents for both harnesses, and MCP settings in `.mcp.json`
58
+ and `opencode.json`. Then open Claude Code or OpenCode in the project and ask
59
+ it to work through the bootstrap task. The agent agrees a structure for the
60
+ knowledge base with you and fills in the first notes.
61
+
62
+ ## Everyday commands
63
+
64
+ ```bash
65
+ rdstudio verify <concept-id> # mark a note as checked by you
66
+ rdstudio check # check the knowledge base's format
67
+ rdstudio path <concept-id> # what to read first, from links rated "requires"
68
+ rdstudio --help # everything else
69
+ ```
70
+
71
+ ## Open the dashboard on your other devices
72
+
73
+ Keep `rdstudio serve` on localhost and let Tailscale put it on your tailnet
74
+ over HTTPS, where only your devices can reach it (and a phone can install it as
75
+ a full-screen app):
76
+
77
+ ```bash
78
+ rdstudio serve --port 8003
79
+ tailscale serve --bg --https=8003 http://127.0.0.1:8003
80
+ # open https://<machine>.<tailnet>.ts.net:8003/ on any device signed in to your tailnet
81
+ ```
82
+
83
+ `--bg` keeps it across restarts; `tailscale serve --https=8003 off` removes it.
84
+ Use one port per project. `rdstudio serve --host 0.0.0.0` also works, but
85
+ serves plain HTTP to your whole network.
86
+
87
+ Over HTTPS (or on localhost) the dashboard keeps a copy of itself and of the
88
+ notes in the browser: after the first visit it reopens at once, even over a
89
+ slow tunnel, and it can be read offline. Only changed notes are fetched again.
90
+ Add `?nosw` to the address to bypass the copy.
91
+
92
+ ## Optional
93
+
94
+ - **Global knowledge base** shared across projects: `rdstudio global init ~/knowledge`
95
+ - **papis references:** add this to `rdstudio.toml`:
96
+
97
+ ```toml
98
+ [references]
99
+ backend = "papis"
100
+ library = "<library name>"
101
+ ```
102
+
103
+ - **Map settings:** the Map tab's Tuning panel adjusts layout and routing;
104
+ put values you like under `[map]` in `rdstudio.toml` to make them the
105
+ project's defaults (see `knowledge/design/map-view.md`).
106
+ - **Learner record:** a private record of what you study, kept outside the
107
+ project (`rdstudio learner` shows where). Off until you add this to
108
+ `~/.config/rdstudio/config.toml`:
109
+
110
+ ```toml
111
+ [learner]
112
+ enabled = true
113
+ # path = "~/knowledge/learning" # optional: somewhere versioned and private
114
+ ```
115
+
116
+ - **Static site:** `rdstudio export <dir>` writes a snapshot that any static
117
+ host can serve (see below).
118
+
119
+ ## Publish to GitHub Pages
120
+
121
+ Anything you publish is public, including commit authors and messages in the
122
+ Changes tab.
123
+
124
+ 1. In the repository's settings on GitHub, open **Pages** and set the source to
125
+ **GitHub Actions**.
126
+ 2. Add `.github/workflows/knowledge-pages.yml`:
127
+
128
+ ```yaml
129
+ name: Publish knowledge dashboard
130
+ on:
131
+ push:
132
+ branches: [main]
133
+ workflow_dispatch:
134
+ permissions:
135
+ contents: read
136
+ pages: write
137
+ id-token: write
138
+ concurrency:
139
+ group: pages
140
+ cancel-in-progress: true
141
+ jobs:
142
+ build:
143
+ runs-on: ubuntu-latest
144
+ steps:
145
+ - uses: actions/checkout@v7
146
+ with:
147
+ fetch-depth: 0 # full history, for the Changes tab
148
+ - uses: astral-sh/setup-uv@v7
149
+ - run: uvx --from git+https://github.com/lachlanjs/rdstudio@v0.1.0 rdstudio export _site
150
+ - uses: actions/upload-pages-artifact@v5
151
+ with:
152
+ path: _site
153
+ deploy:
154
+ needs: build
155
+ runs-on: ubuntu-latest
156
+ environment:
157
+ name: github-pages
158
+ url: ${{ steps.deployment.outputs.page_url }}
159
+ steps:
160
+ - id: deployment
161
+ uses: actions/deploy-pages@v5
162
+ ```
163
+
164
+ If rdstudio is a dev dependency of the project, use `uv run rdstudio export
165
+ _site` instead of the `uvx` line. For other static hosts, run the same export
166
+ and upload `_site/`.
167
+
168
+ ## Develop rdstudio
169
+
170
+ Tasks live in `mise.toml`; run them with `mise run <task>` (`mise tasks` lists
171
+ them), or run the command each one names.
172
+
173
+ ```sh
174
+ mise run setup # Node 24 (mise), Python and npm dependencies, Chromium for the benchmarks
175
+ mise run test # the Python tests, then the TypeScript packages
176
+ mise run core:test # the TypeScript core against the conformance fixtures
177
+ mise run core:agree ~/notes/knowledge # do the Python and TypeScript cores agree on a bundle?
178
+ mise run bench # load and map benchmarks, written to .bench/results/
179
+ mise run bench:compare .bench/results/a.json .bench/results/b.json
180
+ mise run bench:synth field /tmp/field # a synthetic project of about 1,300 notes
181
+ ```
182
+
183
+ The benchmarks build and serve the differential geometry test bed (set
184
+ `RDSTUDIO_BENCH_DG` to its folder) and synthetic projects from one subject up
185
+ to a whole field, then time the first map and a fixed pan and zoom in headless
186
+ Chromium, as a desktop and as a phone. Compare any change that could affect
187
+ speed against a baseline. The platform plan is in
188
+ `knowledge/design/platform.md`.
189
+
190
+ The TypeScript core (`packages/core`) and command line (`packages/cli`) are
191
+ replacing the Python ones; `fixtures/` holds the contract both keep (see
192
+ `fixtures/README.md`), and `mise run agree` runs every comparison between the
193
+ two: the core on real bundles, every command's output, every file `build`,
194
+ `export` and `init` write, the notes after the same writes, and the MCP
195
+ server's tools and replies. In a checkout, `rdstudio` runs the TypeScript
196
+ sources directly; `mise run bundle` builds the single file a release ships.
197
+
198
+ ## Licence
199
+
200
+ MIT. The bundled libraries and fonts keep their own licences, which are in
201
+ `src/rdstudio/web/vendor/licenses/`.
@@ -0,0 +1,188 @@
1
+ # rdstudio
2
+
3
+ A knowledge base, dashboard and agent toolkit for research projects, which you
4
+ add to any repository. You and your agents write notes, decisions, tasks and
5
+ procedures as markdown in `knowledge/`, and a local dashboard lets you browse
6
+ them.
7
+
8
+ **[See a live preview](https://lachlanjs.github.io/rdstudio/)**: the dashboard
9
+ for rdstudio's own knowledge base, rebuilt on every push to `main`.
10
+
11
+ ## Requirements
12
+
13
+ - Python 3.11+ and [uv](https://docs.astral.sh/uv/)
14
+ - git
15
+ - An agent harness: [Claude Code](https://claude.com/claude-code) and
16
+ [OpenCode](https://opencode.ai) are set up automatically; others that read
17
+ `AGENTS.md` and support MCP can use the same files
18
+
19
+ ## Install
20
+
21
+ ```bash
22
+ uv tool install rdstudio # from PyPI; `uv tool upgrade rdstudio` later
23
+ ```
24
+
25
+ or, with Node 24 or later, `npm install -g rdstudio` (or run it without
26
+ installing: `npx rdstudio init`). Either way you get the same program: its
27
+ command line runs on Node, which the Python package brings along as a
28
+ dependency, so there is nothing else to install. `rdstudio-py` runs the older
29
+ Python command line, which does the same things, while it lasts.
30
+
31
+ To work on rdstudio itself, clone the repository, run `mise run setup`, then
32
+ `uv tool install --editable . --force` inside it. Releases are made by pushing
33
+ a version tag (see `knowledge/procedures/release.md`).
34
+
35
+ ## Use it in a project
36
+
37
+ ```bash
38
+ cd my-project
39
+ rdstudio init --human human:<your-name>
40
+ rdstudio serve # dashboard at http://localhost:8000
41
+ ```
42
+
43
+ `init` writes `AGENTS.md` (with `CLAUDE.md` importing it), skills in
44
+ `.claude/skills/`, subagents for both harnesses, and MCP settings in `.mcp.json`
45
+ and `opencode.json`. Then open Claude Code or OpenCode in the project and ask
46
+ it to work through the bootstrap task. The agent agrees a structure for the
47
+ knowledge base with you and fills in the first notes.
48
+
49
+ ## Everyday commands
50
+
51
+ ```bash
52
+ rdstudio verify <concept-id> # mark a note as checked by you
53
+ rdstudio check # check the knowledge base's format
54
+ rdstudio path <concept-id> # what to read first, from links rated "requires"
55
+ rdstudio --help # everything else
56
+ ```
57
+
58
+ ## Open the dashboard on your other devices
59
+
60
+ Keep `rdstudio serve` on localhost and let Tailscale put it on your tailnet
61
+ over HTTPS, where only your devices can reach it (and a phone can install it as
62
+ a full-screen app):
63
+
64
+ ```bash
65
+ rdstudio serve --port 8003
66
+ tailscale serve --bg --https=8003 http://127.0.0.1:8003
67
+ # open https://<machine>.<tailnet>.ts.net:8003/ on any device signed in to your tailnet
68
+ ```
69
+
70
+ `--bg` keeps it across restarts; `tailscale serve --https=8003 off` removes it.
71
+ Use one port per project. `rdstudio serve --host 0.0.0.0` also works, but
72
+ serves plain HTTP to your whole network.
73
+
74
+ Over HTTPS (or on localhost) the dashboard keeps a copy of itself and of the
75
+ notes in the browser: after the first visit it reopens at once, even over a
76
+ slow tunnel, and it can be read offline. Only changed notes are fetched again.
77
+ Add `?nosw` to the address to bypass the copy.
78
+
79
+ ## Optional
80
+
81
+ - **Global knowledge base** shared across projects: `rdstudio global init ~/knowledge`
82
+ - **papis references:** add this to `rdstudio.toml`:
83
+
84
+ ```toml
85
+ [references]
86
+ backend = "papis"
87
+ library = "<library name>"
88
+ ```
89
+
90
+ - **Map settings:** the Map tab's Tuning panel adjusts layout and routing;
91
+ put values you like under `[map]` in `rdstudio.toml` to make them the
92
+ project's defaults (see `knowledge/design/map-view.md`).
93
+ - **Learner record:** a private record of what you study, kept outside the
94
+ project (`rdstudio learner` shows where). Off until you add this to
95
+ `~/.config/rdstudio/config.toml`:
96
+
97
+ ```toml
98
+ [learner]
99
+ enabled = true
100
+ # path = "~/knowledge/learning" # optional: somewhere versioned and private
101
+ ```
102
+
103
+ - **Static site:** `rdstudio export <dir>` writes a snapshot that any static
104
+ host can serve (see below).
105
+
106
+ ## Publish to GitHub Pages
107
+
108
+ Anything you publish is public, including commit authors and messages in the
109
+ Changes tab.
110
+
111
+ 1. In the repository's settings on GitHub, open **Pages** and set the source to
112
+ **GitHub Actions**.
113
+ 2. Add `.github/workflows/knowledge-pages.yml`:
114
+
115
+ ```yaml
116
+ name: Publish knowledge dashboard
117
+ on:
118
+ push:
119
+ branches: [main]
120
+ workflow_dispatch:
121
+ permissions:
122
+ contents: read
123
+ pages: write
124
+ id-token: write
125
+ concurrency:
126
+ group: pages
127
+ cancel-in-progress: true
128
+ jobs:
129
+ build:
130
+ runs-on: ubuntu-latest
131
+ steps:
132
+ - uses: actions/checkout@v7
133
+ with:
134
+ fetch-depth: 0 # full history, for the Changes tab
135
+ - uses: astral-sh/setup-uv@v7
136
+ - run: uvx --from git+https://github.com/lachlanjs/rdstudio@v0.1.0 rdstudio export _site
137
+ - uses: actions/upload-pages-artifact@v5
138
+ with:
139
+ path: _site
140
+ deploy:
141
+ needs: build
142
+ runs-on: ubuntu-latest
143
+ environment:
144
+ name: github-pages
145
+ url: ${{ steps.deployment.outputs.page_url }}
146
+ steps:
147
+ - id: deployment
148
+ uses: actions/deploy-pages@v5
149
+ ```
150
+
151
+ If rdstudio is a dev dependency of the project, use `uv run rdstudio export
152
+ _site` instead of the `uvx` line. For other static hosts, run the same export
153
+ and upload `_site/`.
154
+
155
+ ## Develop rdstudio
156
+
157
+ Tasks live in `mise.toml`; run them with `mise run <task>` (`mise tasks` lists
158
+ them), or run the command each one names.
159
+
160
+ ```sh
161
+ mise run setup # Node 24 (mise), Python and npm dependencies, Chromium for the benchmarks
162
+ mise run test # the Python tests, then the TypeScript packages
163
+ mise run core:test # the TypeScript core against the conformance fixtures
164
+ mise run core:agree ~/notes/knowledge # do the Python and TypeScript cores agree on a bundle?
165
+ mise run bench # load and map benchmarks, written to .bench/results/
166
+ mise run bench:compare .bench/results/a.json .bench/results/b.json
167
+ mise run bench:synth field /tmp/field # a synthetic project of about 1,300 notes
168
+ ```
169
+
170
+ The benchmarks build and serve the differential geometry test bed (set
171
+ `RDSTUDIO_BENCH_DG` to its folder) and synthetic projects from one subject up
172
+ to a whole field, then time the first map and a fixed pan and zoom in headless
173
+ Chromium, as a desktop and as a phone. Compare any change that could affect
174
+ speed against a baseline. The platform plan is in
175
+ `knowledge/design/platform.md`.
176
+
177
+ The TypeScript core (`packages/core`) and command line (`packages/cli`) are
178
+ replacing the Python ones; `fixtures/` holds the contract both keep (see
179
+ `fixtures/README.md`), and `mise run agree` runs every comparison between the
180
+ two: the core on real bundles, every command's output, every file `build`,
181
+ `export` and `init` write, the notes after the same writes, and the MCP
182
+ server's tools and replies. In a checkout, `rdstudio` runs the TypeScript
183
+ sources directly; `mise run bundle` builds the single file a release ships.
184
+
185
+ ## Licence
186
+
187
+ MIT. The bundled libraries and fonts keep their own licences, which are in
188
+ `src/rdstudio/web/vendor/licenses/`.
@@ -0,0 +1,43 @@
1
+ [project]
2
+ name = "rdstudio"
3
+ version = "0.2.0"
4
+ description = "Agentic research and development studio: OKF knowledge bundles, a read-only dashboard, MCP and skills."
5
+ readme = "README.md"
6
+ requires-python = ">=3.11"
7
+ authors = [{ name = "Lachlan Stewart" }]
8
+ dependencies = [
9
+ "markdown-it-py>=4.2.0",
10
+ "mcp>=2.2.0",
11
+ "nodejs-wheel-binaries>=24.19",
12
+ "pyyaml>=6.0.3",
13
+ ]
14
+
15
+ [project.scripts]
16
+ rdstudio = "rdstudio.launcher:main" # the Node command line (see launcher.py)
17
+ rdstudio-py = "rdstudio.cli:main" # the Python one, while it lasts
18
+
19
+ [build-system]
20
+ requires = ["hatchling"]
21
+ build-backend = "hatchling.build"
22
+
23
+ [tool.hatch.build.targets.wheel]
24
+ packages = ["src/rdstudio"]
25
+ # The bundled Node program is built at release (npm run bundle) and not committed.
26
+ artifacts = ["src/rdstudio/_node/*.mjs"]
27
+
28
+ [tool.hatch.build.targets.sdist]
29
+ # Only the Python package (the TypeScript sources are on GitHub and npm), and
30
+ # the bundle, since uv builds the wheel from this archive.
31
+ only-include = ["src/rdstudio", "README.md", "LICENSE"]
32
+ artifacts = ["src/rdstudio/_node/*.mjs"]
33
+
34
+ [tool.pytest.ini_options]
35
+ testpaths = ["tests"]
36
+
37
+ [dependency-groups]
38
+ bench = [
39
+ "playwright>=1.63.0",
40
+ ]
41
+ dev = [
42
+ "pytest>=9.1.1",
43
+ ]
@@ -0,0 +1,3 @@
1
+ """rdstudio: an agentic research and development studio built on OKF."""
2
+
3
+ __version__ = "0.2.0"