research-copilot 0.1.0

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 (395) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +190 -0
  3. package/app/build/icon.icns +0 -0
  4. package/app/build/icon.ico +0 -0
  5. package/app/build/icon.png +0 -0
  6. package/app/out/main/index.mjs +6719 -0
  7. package/app/out/preload/index.js +141 -0
  8. package/app/out/renderer/assets/Inter-Variable-Latin-8kRkwJBP.woff2 +0 -0
  9. package/app/out/renderer/assets/Inter-Variable-LatinExt-B_-bZUTo.woff2 +0 -0
  10. package/app/out/renderer/assets/KaTeX_AMS-Regular-BQhdFMY1.woff2 +0 -0
  11. package/app/out/renderer/assets/KaTeX_AMS-Regular-DMm9YOAa.woff +0 -0
  12. package/app/out/renderer/assets/KaTeX_AMS-Regular-DRggAlZN.ttf +0 -0
  13. package/app/out/renderer/assets/KaTeX_Caligraphic-Bold-ATXxdsX0.ttf +0 -0
  14. package/app/out/renderer/assets/KaTeX_Caligraphic-Bold-BEiXGLvX.woff +0 -0
  15. package/app/out/renderer/assets/KaTeX_Caligraphic-Bold-Dq_IR9rO.woff2 +0 -0
  16. package/app/out/renderer/assets/KaTeX_Caligraphic-Regular-CTRA-rTL.woff +0 -0
  17. package/app/out/renderer/assets/KaTeX_Caligraphic-Regular-Di6jR-x-.woff2 +0 -0
  18. package/app/out/renderer/assets/KaTeX_Caligraphic-Regular-wX97UBjC.ttf +0 -0
  19. package/app/out/renderer/assets/KaTeX_Fraktur-Bold-BdnERNNW.ttf +0 -0
  20. package/app/out/renderer/assets/KaTeX_Fraktur-Bold-BsDP51OF.woff +0 -0
  21. package/app/out/renderer/assets/KaTeX_Fraktur-Bold-CL6g_b3V.woff2 +0 -0
  22. package/app/out/renderer/assets/KaTeX_Fraktur-Regular-CB_wures.ttf +0 -0
  23. package/app/out/renderer/assets/KaTeX_Fraktur-Regular-CTYiF6lA.woff2 +0 -0
  24. package/app/out/renderer/assets/KaTeX_Fraktur-Regular-Dxdc4cR9.woff +0 -0
  25. package/app/out/renderer/assets/KaTeX_Main-Bold-Cx986IdX.woff2 +0 -0
  26. package/app/out/renderer/assets/KaTeX_Main-Bold-Jm3AIy58.woff +0 -0
  27. package/app/out/renderer/assets/KaTeX_Main-Bold-waoOVXN0.ttf +0 -0
  28. package/app/out/renderer/assets/KaTeX_Main-BoldItalic-DxDJ3AOS.woff2 +0 -0
  29. package/app/out/renderer/assets/KaTeX_Main-BoldItalic-DzxPMmG6.ttf +0 -0
  30. package/app/out/renderer/assets/KaTeX_Main-BoldItalic-SpSLRI95.woff +0 -0
  31. package/app/out/renderer/assets/KaTeX_Main-Italic-3WenGoN9.ttf +0 -0
  32. package/app/out/renderer/assets/KaTeX_Main-Italic-BMLOBm91.woff +0 -0
  33. package/app/out/renderer/assets/KaTeX_Main-Italic-NWA7e6Wa.woff2 +0 -0
  34. package/app/out/renderer/assets/KaTeX_Main-Regular-B22Nviop.woff2 +0 -0
  35. package/app/out/renderer/assets/KaTeX_Main-Regular-Dr94JaBh.woff +0 -0
  36. package/app/out/renderer/assets/KaTeX_Main-Regular-ypZvNtVU.ttf +0 -0
  37. package/app/out/renderer/assets/KaTeX_Math-BoldItalic-B3XSjfu4.ttf +0 -0
  38. package/app/out/renderer/assets/KaTeX_Math-BoldItalic-CZnvNsCZ.woff2 +0 -0
  39. package/app/out/renderer/assets/KaTeX_Math-BoldItalic-iY-2wyZ7.woff +0 -0
  40. package/app/out/renderer/assets/KaTeX_Math-Italic-DA0__PXp.woff +0 -0
  41. package/app/out/renderer/assets/KaTeX_Math-Italic-flOr_0UB.ttf +0 -0
  42. package/app/out/renderer/assets/KaTeX_Math-Italic-t53AETM-.woff2 +0 -0
  43. package/app/out/renderer/assets/KaTeX_SansSerif-Bold-CFMepnvq.ttf +0 -0
  44. package/app/out/renderer/assets/KaTeX_SansSerif-Bold-D1sUS0GD.woff2 +0 -0
  45. package/app/out/renderer/assets/KaTeX_SansSerif-Bold-DbIhKOiC.woff +0 -0
  46. package/app/out/renderer/assets/KaTeX_SansSerif-Italic-C3H0VqGB.woff2 +0 -0
  47. package/app/out/renderer/assets/KaTeX_SansSerif-Italic-DN2j7dab.woff +0 -0
  48. package/app/out/renderer/assets/KaTeX_SansSerif-Italic-YYjJ1zSn.ttf +0 -0
  49. package/app/out/renderer/assets/KaTeX_SansSerif-Regular-BNo7hRIc.ttf +0 -0
  50. package/app/out/renderer/assets/KaTeX_SansSerif-Regular-CS6fqUqJ.woff +0 -0
  51. package/app/out/renderer/assets/KaTeX_SansSerif-Regular-DDBCnlJ7.woff2 +0 -0
  52. package/app/out/renderer/assets/KaTeX_Script-Regular-C5JkGWo-.ttf +0 -0
  53. package/app/out/renderer/assets/KaTeX_Script-Regular-D3wIWfF6.woff2 +0 -0
  54. package/app/out/renderer/assets/KaTeX_Script-Regular-D5yQViql.woff +0 -0
  55. package/app/out/renderer/assets/KaTeX_Size1-Regular-C195tn64.woff +0 -0
  56. package/app/out/renderer/assets/KaTeX_Size1-Regular-Dbsnue_I.ttf +0 -0
  57. package/app/out/renderer/assets/KaTeX_Size1-Regular-mCD8mA8B.woff2 +0 -0
  58. package/app/out/renderer/assets/KaTeX_Size2-Regular-B7gKUWhC.ttf +0 -0
  59. package/app/out/renderer/assets/KaTeX_Size2-Regular-Dy4dx90m.woff2 +0 -0
  60. package/app/out/renderer/assets/KaTeX_Size2-Regular-oD1tc_U0.woff +0 -0
  61. package/app/out/renderer/assets/KaTeX_Size3-Regular-CTq5MqoE.woff +0 -0
  62. package/app/out/renderer/assets/KaTeX_Size3-Regular-DgpXs0kz.ttf +0 -0
  63. package/app/out/renderer/assets/KaTeX_Size4-Regular-BF-4gkZK.woff +0 -0
  64. package/app/out/renderer/assets/KaTeX_Size4-Regular-DWFBv043.ttf +0 -0
  65. package/app/out/renderer/assets/KaTeX_Size4-Regular-Dl5lxZxV.woff2 +0 -0
  66. package/app/out/renderer/assets/KaTeX_Typewriter-Regular-C0xS9mPB.woff +0 -0
  67. package/app/out/renderer/assets/KaTeX_Typewriter-Regular-CO6r4hn1.woff2 +0 -0
  68. package/app/out/renderer/assets/KaTeX_Typewriter-Regular-D3Ib7_Hf.ttf +0 -0
  69. package/app/out/renderer/assets/MilkdownMarkdownEditor-bLPxrCVb.js +89821 -0
  70. package/app/out/renderer/assets/MilkdownMarkdownEditor-tTNRIB2K.css +2555 -0
  71. package/app/out/renderer/assets/Tableau10-BqnYsPR6.js +9 -0
  72. package/app/out/renderer/assets/apl-fqmucPXA.js +140 -0
  73. package/app/out/renderer/assets/arc-J47ePHZ2.js +132 -0
  74. package/app/out/renderer/assets/array-DgktLKBx.js +6 -0
  75. package/app/out/renderer/assets/asciiarmor-DucZyvP0.js +56 -0
  76. package/app/out/renderer/assets/asn1-BnOEsgAm.js +144 -0
  77. package/app/out/renderer/assets/asterisk-QAlztEwS.js +345 -0
  78. package/app/out/renderer/assets/blockDiagram-c4efeb88-5uRQXgQJ.js +1817 -0
  79. package/app/out/renderer/assets/brainfuck-DZVCuF_t.js +53 -0
  80. package/app/out/renderer/assets/c4Diagram-c83219d4-C4iCTPEL.js +2464 -0
  81. package/app/out/renderer/assets/channel-ZAmhHE3g.js +7 -0
  82. package/app/out/renderer/assets/classDiagram-beda092f-7NOZxq_W.js +357 -0
  83. package/app/out/renderer/assets/classDiagram-v2-2358418a-5fPT-cUH.js +291 -0
  84. package/app/out/renderer/assets/clike-xqXYL6ge.js +805 -0
  85. package/app/out/renderer/assets/clojure-BhXMqnxz.js +849 -0
  86. package/app/out/renderer/assets/clone-CsnzsYXQ.js +8 -0
  87. package/app/out/renderer/assets/cmake-BGaNd9E7.js +71 -0
  88. package/app/out/renderer/assets/cobol-4yqQntpt.js +120 -0
  89. package/app/out/renderer/assets/coffeescript-D2dXvhEc.js +308 -0
  90. package/app/out/renderer/assets/commonlisp-CF_VNHQR.js +130 -0
  91. package/app/out/renderer/assets/createText-1719965b-Cji7KN4K.js +4904 -0
  92. package/app/out/renderer/assets/crystal-DyuLTqLs.js +398 -0
  93. package/app/out/renderer/assets/css-c-jst79C.js +1783 -0
  94. package/app/out/renderer/assets/cypher-Dlu_3r4V.js +121 -0
  95. package/app/out/renderer/assets/d-UURgV0Ux.js +179 -0
  96. package/app/out/renderer/assets/diff-B_Bi2Crb.js +25 -0
  97. package/app/out/renderer/assets/dockerfile-Bvk733Ga.js +201 -0
  98. package/app/out/renderer/assets/dtd-Dy74G54E.js +114 -0
  99. package/app/out/renderer/assets/dylan-TSb-Nfix.js +314 -0
  100. package/app/out/renderer/assets/ebnf-DAomQUbD.js +139 -0
  101. package/app/out/renderer/assets/ecl-B59qGGVg.js +178 -0
  102. package/app/out/renderer/assets/edges-96097737-CD0EvAZQ.js +1844 -0
  103. package/app/out/renderer/assets/eiffel-Dze7nlu3.js +134 -0
  104. package/app/out/renderer/assets/elm-DG7jkhNZ.js +176 -0
  105. package/app/out/renderer/assets/erDiagram-0228fc6a-DRYXBpi7.js +1321 -0
  106. package/app/out/renderer/assets/erlang-BO6gOnGA.js +674 -0
  107. package/app/out/renderer/assets/factor-CMxFHDqz.js +65 -0
  108. package/app/out/renderer/assets/fcl-CDDUNjTj.js +141 -0
  109. package/app/out/renderer/assets/flowDb-c6c81e3f-CuoIN-Cy.js +1713 -0
  110. package/app/out/renderer/assets/flowDiagram-50d868cf-CPWPLOml.js +1272 -0
  111. package/app/out/renderer/assets/flowDiagram-v2-4f6560a1-C_R12s4S.js +33 -0
  112. package/app/out/renderer/assets/flowchart-elk-definition-6af322e1-BdKUSFpi.js +92921 -0
  113. package/app/out/renderer/assets/forth-B9D2JCeE.js +116 -0
  114. package/app/out/renderer/assets/fortran-CAG2BFbe.js +467 -0
  115. package/app/out/renderer/assets/ganttDiagram-a2739b55-ygqT5HlG.js +3399 -0
  116. package/app/out/renderer/assets/gas-d3KEcW3x.js +294 -0
  117. package/app/out/renderer/assets/gherkin-DhZlEZiy.js +115 -0
  118. package/app/out/renderer/assets/gitGraphDiagram-82fe8481-D97GT4iA.js +1791 -0
  119. package/app/out/renderer/assets/graph-DpC13d95.js +1237 -0
  120. package/app/out/renderer/assets/groovy-CpwJiBl7.js +223 -0
  121. package/app/out/renderer/assets/haskell-BlGBCCe3.js +459 -0
  122. package/app/out/renderer/assets/haxe-7MlzfeYV.js +514 -0
  123. package/app/out/renderer/assets/http-BqypyemW.js +79 -0
  124. package/app/out/renderer/assets/idl-4HIGJlDI.js +985 -0
  125. package/app/out/renderer/assets/index-4-ziknCv.js +292 -0
  126. package/app/out/renderer/assets/index-5325376f-Bbs7Fbqr.js +663 -0
  127. package/app/out/renderer/assets/index-B2jip-rk.js +2489 -0
  128. package/app/out/renderer/assets/index-BKTVfokE.js +312 -0
  129. package/app/out/renderer/assets/index-BiJbFgVG.js +118 -0
  130. package/app/out/renderer/assets/index-Bn433Fat.js +83 -0
  131. package/app/out/renderer/assets/index-BqDyyRCx.js +39679 -0
  132. package/app/out/renderer/assets/index-BzFMeMPn.js +158 -0
  133. package/app/out/renderer/assets/index-C-_uCjZJ.css +2701 -0
  134. package/app/out/renderer/assets/index-C1ithNW1.js +1765 -0
  135. package/app/out/renderer/assets/index-CAJkRYkO.js +407 -0
  136. package/app/out/renderer/assets/index-CleO0-yj.js +690 -0
  137. package/app/out/renderer/assets/index-Cq4MH3sY.js +1020 -0
  138. package/app/out/renderer/assets/index-CtA0Xj22.js +705 -0
  139. package/app/out/renderer/assets/index-CvAZkqBZ.js +83 -0
  140. package/app/out/renderer/assets/index-D3UDN-5c.js +152 -0
  141. package/app/out/renderer/assets/index-D4F9R5ao.js +179 -0
  142. package/app/out/renderer/assets/index-D6RguhZ5.js +328 -0
  143. package/app/out/renderer/assets/index-DnEowqXv.js +386 -0
  144. package/app/out/renderer/assets/index-K8c8Mqdy.js +98 -0
  145. package/app/out/renderer/assets/index-Kh14gO6K.js +62 -0
  146. package/app/out/renderer/assets/index-WFd2jRnA.js +333 -0
  147. package/app/out/renderer/assets/index-WgMfkRFp.js +313 -0
  148. package/app/out/renderer/assets/index-Y4lKyF6t.js +1042 -0
  149. package/app/out/renderer/assets/index-fx307_f1.js +643 -0
  150. package/app/out/renderer/assets/infoDiagram-8eee0895-ptaVSwzq.js +511 -0
  151. package/app/out/renderer/assets/init-ZxktEp_H.js +16 -0
  152. package/app/out/renderer/assets/javascript-C3MnDRiU.js +994 -0
  153. package/app/out/renderer/assets/journeyDiagram-c64418c1-aloEGOQp.js +1184 -0
  154. package/app/out/renderer/assets/julia-Bs6JJhYG.js +407 -0
  155. package/app/out/renderer/assets/layout-ZeuHE_aY.js +2217 -0
  156. package/app/out/renderer/assets/line-CAgaGl-S.js +45 -0
  157. package/app/out/renderer/assets/linear-DIg7lTe1.js +539 -0
  158. package/app/out/renderer/assets/livescript-DmzgM3Yt.js +296 -0
  159. package/app/out/renderer/assets/lua-8cJgIlqe.js +256 -0
  160. package/app/out/renderer/assets/mathematica-DNLOL9PQ.js +110 -0
  161. package/app/out/renderer/assets/mbox-Ga7d4MMN.js +117 -0
  162. package/app/out/renderer/assets/mindmap-definition-8da855dc-B8XVoUxz.js +36054 -0
  163. package/app/out/renderer/assets/mirc-Dma3B8rS.js +107 -0
  164. package/app/out/renderer/assets/mllike-DHn7xckP.js +334 -0
  165. package/app/out/renderer/assets/modelica-0d55jYY0.js +147 -0
  166. package/app/out/renderer/assets/mscgen-DdqZYINH.js +135 -0
  167. package/app/out/renderer/assets/mumps-Btr8VblO.js +93 -0
  168. package/app/out/renderer/assets/nginx-DTDtBDVN.js +141 -0
  169. package/app/out/renderer/assets/nsis-3zG7tgur.js +62 -0
  170. package/app/out/renderer/assets/ntriples-CvgOYMpL.js +153 -0
  171. package/app/out/renderer/assets/octave-DYBj3-tl.js +200 -0
  172. package/app/out/renderer/assets/ordinal-DSZU4PqD.js +76 -0
  173. package/app/out/renderer/assets/oz-R_e8WMIi.js +231 -0
  174. package/app/out/renderer/assets/pascal-GD8iposT.js +105 -0
  175. package/app/out/renderer/assets/path-Cp2qmpkd.js +109 -0
  176. package/app/out/renderer/assets/perl-DL9mHpoi.js +1105 -0
  177. package/app/out/renderer/assets/pieDiagram-a8764435-DlwoeBU2.js +770 -0
  178. package/app/out/renderer/assets/pig-C_4T4YIV.js +101 -0
  179. package/app/out/renderer/assets/powershell-B0suO7Vd.js +328 -0
  180. package/app/out/renderer/assets/properties-BR-vP1aU.js +58 -0
  181. package/app/out/renderer/assets/protobuf-BxgpyhoW.js +77 -0
  182. package/app/out/renderer/assets/pug-By0kVCfm.js +405 -0
  183. package/app/out/renderer/assets/puppet-Bdao66PW.js +137 -0
  184. package/app/out/renderer/assets/python-CvWbmiX4.js +427 -0
  185. package/app/out/renderer/assets/q-CrbCVq4a.js +131 -0
  186. package/app/out/renderer/assets/quadrantDiagram-1e28029f-BaSi1XB4.js +1200 -0
  187. package/app/out/renderer/assets/r-V7nswm59.js +170 -0
  188. package/app/out/renderer/assets/requirementDiagram-08caed73-D3EFyegZ.js +1092 -0
  189. package/app/out/renderer/assets/rpm-C-DLY-If.js +109 -0
  190. package/app/out/renderer/assets/ruby-JDKLJNK0.js +330 -0
  191. package/app/out/renderer/assets/sankeyDiagram-a04cb91d-Cv44AsnM.js +1174 -0
  192. package/app/out/renderer/assets/sas-D2UG-yhZ.js +207 -0
  193. package/app/out/renderer/assets/scheme-BKzrkGJD.js +222 -0
  194. package/app/out/renderer/assets/sequenceDiagram-c5b8d532-CuUBu-x4.js +3337 -0
  195. package/app/out/renderer/assets/shell-BlsXDxCn.js +222 -0
  196. package/app/out/renderer/assets/sieve-CjwBwOY5.js +135 -0
  197. package/app/out/renderer/assets/simple-mode-DMneyfDu.js +130 -0
  198. package/app/out/renderer/assets/smalltalk-BOIGQuhN.js +121 -0
  199. package/app/out/renderer/assets/solr-CwD7U71z.js +69 -0
  200. package/app/out/renderer/assets/sparql-DYskk2vE.js +249 -0
  201. package/app/out/renderer/assets/spreadsheet-Bgtt3oLP.js +87 -0
  202. package/app/out/renderer/assets/sql-BSrOzCRI.js +354 -0
  203. package/app/out/renderer/assets/stateDiagram-1ecb1508-BOU34Zp4.js +454 -0
  204. package/app/out/renderer/assets/stateDiagram-v2-c2b004d7-BgRoffou.js +326 -0
  205. package/app/out/renderer/assets/stex-B6LNC55o.js +231 -0
  206. package/app/out/renderer/assets/styles-b4e223ce-BMr9TPuj.js +1483 -0
  207. package/app/out/renderer/assets/styles-ca3715f6-DgbNw99p.js +1363 -0
  208. package/app/out/renderer/assets/styles-d45a18b0-DtRYKYKf.js +574 -0
  209. package/app/out/renderer/assets/stylus-BkS-boTH.js +565 -0
  210. package/app/out/renderer/assets/svgDrawCommon-b86b1483-Bein03PD.js +100 -0
  211. package/app/out/renderer/assets/swift-FRZi1uvB.js +291 -0
  212. package/app/out/renderer/assets/tcl-CUcaCdmq.js +114 -0
  213. package/app/out/renderer/assets/textile-BnFpjsrl.js +414 -0
  214. package/app/out/renderer/assets/tiddlywiki-CjprD-Qp.js +218 -0
  215. package/app/out/renderer/assets/tiki-B4EPSQ1G.js +265 -0
  216. package/app/out/renderer/assets/timeline-definition-faaaa080-BlWpLE_4.js +1212 -0
  217. package/app/out/renderer/assets/toml-BOuWGMcf.js +76 -0
  218. package/app/out/renderer/assets/troff-E1bJ0PPL.js +61 -0
  219. package/app/out/renderer/assets/ttcn-cfg-Dc39-fIP.js +133 -0
  220. package/app/out/renderer/assets/ttcn-tKd4HLu4.js +192 -0
  221. package/app/out/renderer/assets/turtle-Dq7-1WAf.js +124 -0
  222. package/app/out/renderer/assets/vb-Dp90gtsv.js +196 -0
  223. package/app/out/renderer/assets/vbscript-CI6_mxxU.js +479 -0
  224. package/app/out/renderer/assets/velocity-BwIZK1TH.js +149 -0
  225. package/app/out/renderer/assets/verilog-DDCYnHN8.js +430 -0
  226. package/app/out/renderer/assets/vhdl-DCkMIyT9.js +158 -0
  227. package/app/out/renderer/assets/webidl-BTLTThCm.js +204 -0
  228. package/app/out/renderer/assets/xquery-BgiOC5Ce.js +525 -0
  229. package/app/out/renderer/assets/xychartDiagram-f5964ef8-Bhga-YXm.js +1799 -0
  230. package/app/out/renderer/assets/yacas-b5lAVEIl.js +130 -0
  231. package/app/out/renderer/assets/z80-BZV19vqv.js +93 -0
  232. package/app/out/renderer/index.html +13 -0
  233. package/app/out/skills/community-builtin/README.md +29 -0
  234. package/app/out/skills/community-builtin/document-docx/SKILL.md +44 -0
  235. package/app/out/skills/community-builtin/document-docx/scripts/docx-to-markdown.sh +20 -0
  236. package/app/out/skills/community-builtin/document-docx/scripts/extract-docx-text.sh +28 -0
  237. package/app/out/skills/community-builtin/document-docx/scripts/init-docx-template.sh +32 -0
  238. package/app/out/skills/community-builtin/document-docx/scripts/setup-docx-tools.sh +10 -0
  239. package/app/out/skills/community-builtin/markitdown/SKILL.md +105 -0
  240. package/app/out/skills/community-builtin/markitdown/scripts/batch-convert.sh +40 -0
  241. package/app/out/skills/community-builtin/markitdown/scripts/convert-file.sh +24 -0
  242. package/app/out/skills/community-builtin/markitdown/scripts/setup-markitdown.sh +10 -0
  243. package/app/out/skills/community-builtin/repo-quick-audit/SKILL.md +27 -0
  244. package/app/out/skills/community-builtin/repo-quick-audit/scripts/audit-basics.sh +19 -0
  245. package/app/out/skills/research-pilot-default-project-skills/README.md +23 -0
  246. package/app/out/skills/research-pilot-default-project-skills/citation-management/SKILL.md +39 -0
  247. package/app/out/skills/research-pilot-default-project-skills/citation-management/scripts/doi-to-bibtex.sh +25 -0
  248. package/app/out/skills/research-pilot-default-project-skills/citation-management/scripts/normalize-bibtex-keys.sh +51 -0
  249. package/app/out/skills/research-pilot-default-project-skills/citation-management/scripts/setup-citation-tools.sh +10 -0
  250. package/app/out/skills/research-pilot-default-project-skills/citation-management/scripts/validate-bib.sh +31 -0
  251. package/app/out/skills/research-pilot-default-project-skills/matplotlib/SKILL.md +34 -0
  252. package/app/out/skills/research-pilot-default-project-skills/matplotlib/references/api_reference.md +412 -0
  253. package/app/out/skills/research-pilot-default-project-skills/matplotlib/references/common_issues.md +563 -0
  254. package/app/out/skills/research-pilot-default-project-skills/matplotlib/references/plot_types.md +476 -0
  255. package/app/out/skills/research-pilot-default-project-skills/matplotlib/references/styling_guide.md +589 -0
  256. package/app/out/skills/research-pilot-default-project-skills/matplotlib/references/subagent_quickstart.md +30 -0
  257. package/app/out/skills/research-pilot-default-project-skills/matplotlib/scripts/plot_template.py +401 -0
  258. package/app/out/skills/research-pilot-default-project-skills/matplotlib/scripts/style_configurator.py +409 -0
  259. package/app/out/skills/research-pilot-default-project-skills/research-grants/SKILL.md +38 -0
  260. package/app/out/skills/research-pilot-default-project-skills/research-grants/scripts/check-grant-compliance.sh +40 -0
  261. package/app/out/skills/research-pilot-default-project-skills/research-grants/scripts/grant-summary-card.sh +32 -0
  262. package/app/out/skills/research-pilot-default-project-skills/research-grants/scripts/init-grant-structure.sh +70 -0
  263. package/app/package.json +77 -0
  264. package/bin/cli.mjs +56 -0
  265. package/lib/README.md +145 -0
  266. package/lib/skills/_generated.ts +13 -0
  267. package/lib/skills/builtin/brainstorming-research-ideas/SKILL.md +280 -0
  268. package/lib/skills/builtin/coding/SKILL.md +114 -0
  269. package/lib/skills/builtin/creative-thinking-for-research/SKILL.md +273 -0
  270. package/lib/skills/builtin/matplotlib/SKILL.md +361 -0
  271. package/lib/skills/builtin/matplotlib/references/api_reference.md +412 -0
  272. package/lib/skills/builtin/matplotlib/references/common_issues.md +563 -0
  273. package/lib/skills/builtin/matplotlib/references/plot_types.md +476 -0
  274. package/lib/skills/builtin/matplotlib/references/styling_guide.md +589 -0
  275. package/lib/skills/builtin/matplotlib/scripts/plot_template.py +401 -0
  276. package/lib/skills/builtin/matplotlib/scripts/style_configurator.py +409 -0
  277. package/lib/skills/builtin/paper-writing/SKILL.md +554 -0
  278. package/lib/skills/builtin/paper-writing/references/checklists.md +524 -0
  279. package/lib/skills/builtin/paper-writing/references/citation-workflow.md +562 -0
  280. package/lib/skills/builtin/paper-writing/references/reviewer-guidelines.md +462 -0
  281. package/lib/skills/builtin/paper-writing/references/sources.md +189 -0
  282. package/lib/skills/builtin/paper-writing/references/systems-conferences.md +260 -0
  283. package/lib/skills/builtin/paper-writing/references/writing-guide.md +476 -0
  284. package/lib/skills/builtin/paper-writing/templates/README.md +408 -0
  285. package/lib/skills/builtin/paper-writing/templates/aaai2026/README.md +534 -0
  286. package/lib/skills/builtin/paper-writing/templates/aaai2026/aaai2026-unified-supp.tex +144 -0
  287. package/lib/skills/builtin/paper-writing/templates/aaai2026/aaai2026-unified-template.tex +952 -0
  288. package/lib/skills/builtin/paper-writing/templates/aaai2026/aaai2026.bib +111 -0
  289. package/lib/skills/builtin/paper-writing/templates/aaai2026/aaai2026.bst +1493 -0
  290. package/lib/skills/builtin/paper-writing/templates/aaai2026/aaai2026.sty +315 -0
  291. package/lib/skills/builtin/paper-writing/templates/acl/README.md +50 -0
  292. package/lib/skills/builtin/paper-writing/templates/acl/acl.sty +312 -0
  293. package/lib/skills/builtin/paper-writing/templates/acl/acl_latex.tex +377 -0
  294. package/lib/skills/builtin/paper-writing/templates/acl/acl_lualatex.tex +101 -0
  295. package/lib/skills/builtin/paper-writing/templates/acl/acl_natbib.bst +1940 -0
  296. package/lib/skills/builtin/paper-writing/templates/acl/anthology.bib.txt +26 -0
  297. package/lib/skills/builtin/paper-writing/templates/acl/custom.bib +70 -0
  298. package/lib/skills/builtin/paper-writing/templates/acl/formatting.md +326 -0
  299. package/lib/skills/builtin/paper-writing/templates/asplos2027/main.tex +459 -0
  300. package/lib/skills/builtin/paper-writing/templates/asplos2027/references.bib +135 -0
  301. package/lib/skills/builtin/paper-writing/templates/colm2025/README.md +3 -0
  302. package/lib/skills/builtin/paper-writing/templates/colm2025/colm2025_conference.bib +11 -0
  303. package/lib/skills/builtin/paper-writing/templates/colm2025/colm2025_conference.bst +1440 -0
  304. package/lib/skills/builtin/paper-writing/templates/colm2025/colm2025_conference.pdf +0 -0
  305. package/lib/skills/builtin/paper-writing/templates/colm2025/colm2025_conference.sty +218 -0
  306. package/lib/skills/builtin/paper-writing/templates/colm2025/colm2025_conference.tex +305 -0
  307. package/lib/skills/builtin/paper-writing/templates/colm2025/fancyhdr.sty +485 -0
  308. package/lib/skills/builtin/paper-writing/templates/colm2025/math_commands.tex +508 -0
  309. package/lib/skills/builtin/paper-writing/templates/colm2025/natbib.sty +1246 -0
  310. package/lib/skills/builtin/paper-writing/templates/iclr2026/fancyhdr.sty +485 -0
  311. package/lib/skills/builtin/paper-writing/templates/iclr2026/iclr2026_conference.bib +24 -0
  312. package/lib/skills/builtin/paper-writing/templates/iclr2026/iclr2026_conference.bst +1440 -0
  313. package/lib/skills/builtin/paper-writing/templates/iclr2026/iclr2026_conference.pdf +0 -0
  314. package/lib/skills/builtin/paper-writing/templates/iclr2026/iclr2026_conference.sty +246 -0
  315. package/lib/skills/builtin/paper-writing/templates/iclr2026/iclr2026_conference.tex +414 -0
  316. package/lib/skills/builtin/paper-writing/templates/iclr2026/math_commands.tex +508 -0
  317. package/lib/skills/builtin/paper-writing/templates/iclr2026/natbib.sty +1246 -0
  318. package/lib/skills/builtin/paper-writing/templates/icml2026/algorithm.sty +79 -0
  319. package/lib/skills/builtin/paper-writing/templates/icml2026/algorithmic.sty +201 -0
  320. package/lib/skills/builtin/paper-writing/templates/icml2026/example_paper.bib +75 -0
  321. package/lib/skills/builtin/paper-writing/templates/icml2026/example_paper.pdf +0 -0
  322. package/lib/skills/builtin/paper-writing/templates/icml2026/example_paper.tex +662 -0
  323. package/lib/skills/builtin/paper-writing/templates/icml2026/fancyhdr.sty +864 -0
  324. package/lib/skills/builtin/paper-writing/templates/icml2026/icml2026.bst +1443 -0
  325. package/lib/skills/builtin/paper-writing/templates/icml2026/icml2026.sty +767 -0
  326. package/lib/skills/builtin/paper-writing/templates/icml2026/icml_numpapers.pdf +0 -0
  327. package/lib/skills/builtin/paper-writing/templates/neurips2025/Makefile +36 -0
  328. package/lib/skills/builtin/paper-writing/templates/neurips2025/extra_pkgs.tex +53 -0
  329. package/lib/skills/builtin/paper-writing/templates/neurips2025/main.tex +38 -0
  330. package/lib/skills/builtin/paper-writing/templates/neurips2025/neurips.sty +382 -0
  331. package/lib/skills/builtin/paper-writing/templates/nsdi2027/main.tex +426 -0
  332. package/lib/skills/builtin/paper-writing/templates/nsdi2027/references.bib +151 -0
  333. package/lib/skills/builtin/paper-writing/templates/nsdi2027/usenix-2020-09.sty +83 -0
  334. package/lib/skills/builtin/paper-writing/templates/osdi2026/main.tex +429 -0
  335. package/lib/skills/builtin/paper-writing/templates/osdi2026/references.bib +150 -0
  336. package/lib/skills/builtin/paper-writing/templates/osdi2026/usenix-2020-09.sty +83 -0
  337. package/lib/skills/builtin/paper-writing/templates/sosp2026/main.tex +532 -0
  338. package/lib/skills/builtin/paper-writing/templates/sosp2026/references.bib +148 -0
  339. package/lib/skills/builtin/research-grants/SKILL.md +958 -0
  340. package/lib/skills/builtin/research-grants/assets/budget_justification_template.md +453 -0
  341. package/lib/skills/builtin/research-grants/assets/nih_specific_aims_template.md +166 -0
  342. package/lib/skills/builtin/research-grants/assets/nsf_project_summary_template.md +92 -0
  343. package/lib/skills/builtin/research-grants/references/README.md +285 -0
  344. package/lib/skills/builtin/research-grants/references/broader_impacts.md +392 -0
  345. package/lib/skills/builtin/research-grants/references/darpa_guidelines.md +636 -0
  346. package/lib/skills/builtin/research-grants/references/doe_guidelines.md +586 -0
  347. package/lib/skills/builtin/research-grants/references/nih_guidelines.md +851 -0
  348. package/lib/skills/builtin/research-grants/references/nsf_guidelines.md +570 -0
  349. package/lib/skills/builtin/research-grants/references/nstc_guidelines.md +733 -0
  350. package/lib/skills/builtin/research-grants/references/specific_aims_guide.md +458 -0
  351. package/lib/skills/builtin/rewrite-humanize/SKILL.md +116 -0
  352. package/lib/skills/builtin/rewrite-humanize/references/cs-venue-tone.md +57 -0
  353. package/lib/skills/builtin/rewrite-humanize/references/lexicon.md +50 -0
  354. package/lib/skills/builtin/scholar-evaluation/SKILL.md +300 -0
  355. package/lib/skills/builtin/scholar-evaluation/references/evaluation_framework.md +663 -0
  356. package/lib/skills/builtin/scholar-evaluation/scripts/calculate_scores.py +379 -0
  357. package/lib/skills/builtin/scientific-schematics/SKILL.md +603 -0
  358. package/lib/skills/builtin/scientific-schematics/references/QUICK_REFERENCE.md +182 -0
  359. package/lib/skills/builtin/scientific-schematics/references/README.md +292 -0
  360. package/lib/skills/builtin/scientific-schematics/references/best_practices.md +560 -0
  361. package/lib/skills/builtin/scientific-schematics/scripts/__pycache__/generate_schematic.cpython-312.pyc +0 -0
  362. package/lib/skills/builtin/scientific-schematics/scripts/__pycache__/generate_schematic_ai.cpython-312.pyc +0 -0
  363. package/lib/skills/builtin/scientific-schematics/scripts/example_usage.sh +85 -0
  364. package/lib/skills/builtin/scientific-schematics/scripts/generate_schematic.py +141 -0
  365. package/lib/skills/builtin/scientific-schematics/scripts/generate_schematic_ai.py +910 -0
  366. package/lib/skills/builtin/scientific-visualization/SKILL.md +749 -0
  367. package/lib/skills/builtin/scientific-visualization/assets/color_palettes.py +197 -0
  368. package/lib/skills/builtin/scientific-visualization/assets/nature.mplstyle +63 -0
  369. package/lib/skills/builtin/scientific-visualization/assets/presentation.mplstyle +61 -0
  370. package/lib/skills/builtin/scientific-visualization/assets/publication.mplstyle +68 -0
  371. package/lib/skills/builtin/scientific-visualization/references/color_palettes.md +348 -0
  372. package/lib/skills/builtin/scientific-visualization/references/journal_requirements.md +320 -0
  373. package/lib/skills/builtin/scientific-visualization/references/matplotlib_examples.md +620 -0
  374. package/lib/skills/builtin/scientific-visualization/references/publication_guidelines.md +205 -0
  375. package/lib/skills/builtin/scientific-visualization/scripts/figure_export.py +343 -0
  376. package/lib/skills/builtin/scientific-visualization/scripts/style_presets.py +416 -0
  377. package/lib/skills/builtin/scientific-writing/SKILL.md +745 -0
  378. package/lib/skills/builtin/scientific-writing/assets/REPORT_FORMATTING_GUIDE.md +574 -0
  379. package/lib/skills/builtin/scientific-writing/assets/scientific_report.sty +606 -0
  380. package/lib/skills/builtin/scientific-writing/assets/scientific_report_template.tex +449 -0
  381. package/lib/skills/builtin/scientific-writing/references/citation_styles.md +720 -0
  382. package/lib/skills/builtin/scientific-writing/references/figures_tables.md +806 -0
  383. package/lib/skills/builtin/scientific-writing/references/imrad_structure.md +686 -0
  384. package/lib/skills/builtin/scientific-writing/references/professional_report_formatting.md +664 -0
  385. package/lib/skills/builtin/scientific-writing/references/reporting_guidelines.md +748 -0
  386. package/lib/skills/builtin/scientific-writing/references/writing_principles.md +824 -0
  387. package/lib/skills/builtin/seaborn/SKILL.md +674 -0
  388. package/lib/skills/builtin/seaborn/references/examples.md +822 -0
  389. package/lib/skills/builtin/seaborn/references/function_reference.md +770 -0
  390. package/lib/skills/builtin/seaborn/references/objects_interface.md +964 -0
  391. package/lib/skills/data-analysis/SKILL.md +285 -0
  392. package/lib/skills/generate-skill-content.mjs +58 -0
  393. package/lib/skills/index.ts +34 -0
  394. package/lib/skills/loader.ts +452 -0
  395. package/package.json +62 -0
@@ -0,0 +1,663 @@
1
+ import { i as isUndefined, G as Graph } from "./graph-DpC13d95.js";
2
+ import { m as map, l as layout } from "./layout-ZeuHE_aY.js";
3
+ import { c as clone } from "./clone-CsnzsYXQ.js";
4
+ import { i as insertMarkers$1, u as updateNodeBounds, s as setNodeElem, c as insertNode, b as insertEdgeLabel, g as getSubGraphTitleMargins, d as positionNode, a as insertEdge, p as positionEdgeLabel, e as intersectRect$1, f as createLabel$1, h as clear$1$1, j as clear$2 } from "./edges-96097737-CD0EvAZQ.js";
5
+ import { v as log$1, r as getConfig, S as evaluate, u as select } from "./MilkdownMarkdownEditor-bLPxrCVb.js";
6
+ import { c as createText } from "./createText-1719965b-Cji7KN4K.js";
7
+ function write(g) {
8
+ var json = {
9
+ options: {
10
+ directed: g.isDirected(),
11
+ multigraph: g.isMultigraph(),
12
+ compound: g.isCompound()
13
+ },
14
+ nodes: writeNodes(g),
15
+ edges: writeEdges(g)
16
+ };
17
+ if (!isUndefined(g.graph())) {
18
+ json.value = clone(g.graph());
19
+ }
20
+ return json;
21
+ }
22
+ function writeNodes(g) {
23
+ return map(g.nodes(), function(v) {
24
+ var nodeValue = g.node(v);
25
+ var parent = g.parent(v);
26
+ var node = { v };
27
+ if (!isUndefined(nodeValue)) {
28
+ node.value = nodeValue;
29
+ }
30
+ if (!isUndefined(parent)) {
31
+ node.parent = parent;
32
+ }
33
+ return node;
34
+ });
35
+ }
36
+ function writeEdges(g) {
37
+ return map(g.edges(), function(e) {
38
+ var edgeValue = g.edge(e);
39
+ var edge = { v: e.v, w: e.w };
40
+ if (!isUndefined(e.name)) {
41
+ edge.name = e.name;
42
+ }
43
+ if (!isUndefined(edgeValue)) {
44
+ edge.value = edgeValue;
45
+ }
46
+ return edge;
47
+ });
48
+ }
49
+ let clusterDb = {};
50
+ let descendants = {};
51
+ let parents = {};
52
+ const clear$1 = () => {
53
+ descendants = {};
54
+ parents = {};
55
+ clusterDb = {};
56
+ };
57
+ const isDescendant = (id, ancestorId) => {
58
+ log$1.trace("In isDescendant", ancestorId, " ", id, " = ", descendants[ancestorId].includes(id));
59
+ if (descendants[ancestorId].includes(id)) {
60
+ return true;
61
+ }
62
+ return false;
63
+ };
64
+ const edgeInCluster = (edge, clusterId) => {
65
+ log$1.info("Descendants of ", clusterId, " is ", descendants[clusterId]);
66
+ log$1.info("Edge is ", edge);
67
+ if (edge.v === clusterId) {
68
+ return false;
69
+ }
70
+ if (edge.w === clusterId) {
71
+ return false;
72
+ }
73
+ if (!descendants[clusterId]) {
74
+ log$1.debug("Tilt, ", clusterId, ",not in descendants");
75
+ return false;
76
+ }
77
+ return descendants[clusterId].includes(edge.v) || isDescendant(edge.v, clusterId) || isDescendant(edge.w, clusterId) || descendants[clusterId].includes(edge.w);
78
+ };
79
+ const copy = (clusterId, graph, newGraph, rootId) => {
80
+ log$1.warn(
81
+ "Copying children of ",
82
+ clusterId,
83
+ "root",
84
+ rootId,
85
+ "data",
86
+ graph.node(clusterId),
87
+ rootId
88
+ );
89
+ const nodes = graph.children(clusterId) || [];
90
+ if (clusterId !== rootId) {
91
+ nodes.push(clusterId);
92
+ }
93
+ log$1.warn("Copying (nodes) clusterId", clusterId, "nodes", nodes);
94
+ nodes.forEach((node) => {
95
+ if (graph.children(node).length > 0) {
96
+ copy(node, graph, newGraph, rootId);
97
+ } else {
98
+ const data = graph.node(node);
99
+ log$1.info("cp ", node, " to ", rootId, " with parent ", clusterId);
100
+ newGraph.setNode(node, data);
101
+ if (rootId !== graph.parent(node)) {
102
+ log$1.warn("Setting parent", node, graph.parent(node));
103
+ newGraph.setParent(node, graph.parent(node));
104
+ }
105
+ if (clusterId !== rootId && node !== clusterId) {
106
+ log$1.debug("Setting parent", node, clusterId);
107
+ newGraph.setParent(node, clusterId);
108
+ } else {
109
+ log$1.info("In copy ", clusterId, "root", rootId, "data", graph.node(clusterId), rootId);
110
+ log$1.debug(
111
+ "Not Setting parent for node=",
112
+ node,
113
+ "cluster!==rootId",
114
+ clusterId !== rootId,
115
+ "node!==clusterId",
116
+ node !== clusterId
117
+ );
118
+ }
119
+ const edges = graph.edges(node);
120
+ log$1.debug("Copying Edges", edges);
121
+ edges.forEach((edge) => {
122
+ log$1.info("Edge", edge);
123
+ const data2 = graph.edge(edge.v, edge.w, edge.name);
124
+ log$1.info("Edge data", data2, rootId);
125
+ try {
126
+ if (edgeInCluster(edge, rootId)) {
127
+ log$1.info("Copying as ", edge.v, edge.w, data2, edge.name);
128
+ newGraph.setEdge(edge.v, edge.w, data2, edge.name);
129
+ log$1.info("newGraph edges ", newGraph.edges(), newGraph.edge(newGraph.edges()[0]));
130
+ } else {
131
+ log$1.info(
132
+ "Skipping copy of edge ",
133
+ edge.v,
134
+ "-->",
135
+ edge.w,
136
+ " rootId: ",
137
+ rootId,
138
+ " clusterId:",
139
+ clusterId
140
+ );
141
+ }
142
+ } catch (e) {
143
+ log$1.error(e);
144
+ }
145
+ });
146
+ }
147
+ log$1.debug("Removing node", node);
148
+ graph.removeNode(node);
149
+ });
150
+ };
151
+ const extractDescendants = (id, graph) => {
152
+ const children = graph.children(id);
153
+ let res = [...children];
154
+ for (const child of children) {
155
+ parents[child] = id;
156
+ res = [...res, ...extractDescendants(child, graph)];
157
+ }
158
+ return res;
159
+ };
160
+ const findNonClusterChild = (id, graph) => {
161
+ log$1.trace("Searching", id);
162
+ const children = graph.children(id);
163
+ log$1.trace("Searching children of id ", id, children);
164
+ if (children.length < 1) {
165
+ log$1.trace("This is a valid node", id);
166
+ return id;
167
+ }
168
+ for (const child of children) {
169
+ const _id = findNonClusterChild(child, graph);
170
+ if (_id) {
171
+ log$1.trace("Found replacement for", id, " => ", _id);
172
+ return _id;
173
+ }
174
+ }
175
+ };
176
+ const getAnchorId = (id) => {
177
+ if (!clusterDb[id]) {
178
+ return id;
179
+ }
180
+ if (!clusterDb[id].externalConnections) {
181
+ return id;
182
+ }
183
+ if (clusterDb[id]) {
184
+ return clusterDb[id].id;
185
+ }
186
+ return id;
187
+ };
188
+ const adjustClustersAndEdges = (graph, depth) => {
189
+ if (!graph || depth > 10) {
190
+ log$1.debug("Opting out, no graph ");
191
+ return;
192
+ } else {
193
+ log$1.debug("Opting in, graph ");
194
+ }
195
+ graph.nodes().forEach(function(id) {
196
+ const children = graph.children(id);
197
+ if (children.length > 0) {
198
+ log$1.warn(
199
+ "Cluster identified",
200
+ id,
201
+ " Replacement id in edges: ",
202
+ findNonClusterChild(id, graph)
203
+ );
204
+ descendants[id] = extractDescendants(id, graph);
205
+ clusterDb[id] = { id: findNonClusterChild(id, graph), clusterData: graph.node(id) };
206
+ }
207
+ });
208
+ graph.nodes().forEach(function(id) {
209
+ const children = graph.children(id);
210
+ const edges = graph.edges();
211
+ if (children.length > 0) {
212
+ log$1.debug("Cluster identified", id, descendants);
213
+ edges.forEach((edge) => {
214
+ if (edge.v !== id && edge.w !== id) {
215
+ const d1 = isDescendant(edge.v, id);
216
+ const d2 = isDescendant(edge.w, id);
217
+ if (d1 ^ d2) {
218
+ log$1.warn("Edge: ", edge, " leaves cluster ", id);
219
+ log$1.warn("Descendants of XXX ", id, ": ", descendants[id]);
220
+ clusterDb[id].externalConnections = true;
221
+ }
222
+ }
223
+ });
224
+ } else {
225
+ log$1.debug("Not a cluster ", id, descendants);
226
+ }
227
+ });
228
+ for (let id of Object.keys(clusterDb)) {
229
+ const nonClusterChild = clusterDb[id].id;
230
+ const parent = graph.parent(nonClusterChild);
231
+ if (parent !== id && clusterDb[parent] && !clusterDb[parent].externalConnections) {
232
+ clusterDb[id].id = parent;
233
+ }
234
+ }
235
+ graph.edges().forEach(function(e) {
236
+ const edge = graph.edge(e);
237
+ log$1.warn("Edge " + e.v + " -> " + e.w + ": " + JSON.stringify(e));
238
+ log$1.warn("Edge " + e.v + " -> " + e.w + ": " + JSON.stringify(graph.edge(e)));
239
+ let v = e.v;
240
+ let w = e.w;
241
+ log$1.warn(
242
+ "Fix XXX",
243
+ clusterDb,
244
+ "ids:",
245
+ e.v,
246
+ e.w,
247
+ "Translating: ",
248
+ clusterDb[e.v],
249
+ " --- ",
250
+ clusterDb[e.w]
251
+ );
252
+ if (clusterDb[e.v] && clusterDb[e.w] && clusterDb[e.v] === clusterDb[e.w]) {
253
+ log$1.warn("Fixing and trixing link to self - removing XXX", e.v, e.w, e.name);
254
+ log$1.warn("Fixing and trixing - removing XXX", e.v, e.w, e.name);
255
+ v = getAnchorId(e.v);
256
+ w = getAnchorId(e.w);
257
+ graph.removeEdge(e.v, e.w, e.name);
258
+ const specialId = e.w + "---" + e.v;
259
+ graph.setNode(specialId, {
260
+ domId: specialId,
261
+ id: specialId,
262
+ labelStyle: "",
263
+ labelText: edge.label,
264
+ padding: 0,
265
+ shape: "labelRect",
266
+ style: ""
267
+ });
268
+ const edge1 = structuredClone(edge);
269
+ const edge2 = structuredClone(edge);
270
+ edge1.label = "";
271
+ edge1.arrowTypeEnd = "none";
272
+ edge2.label = "";
273
+ edge1.fromCluster = e.v;
274
+ edge2.toCluster = e.v;
275
+ graph.setEdge(v, specialId, edge1, e.name + "-cyclic-special");
276
+ graph.setEdge(specialId, w, edge2, e.name + "-cyclic-special");
277
+ } else if (clusterDb[e.v] || clusterDb[e.w]) {
278
+ log$1.warn("Fixing and trixing - removing XXX", e.v, e.w, e.name);
279
+ v = getAnchorId(e.v);
280
+ w = getAnchorId(e.w);
281
+ graph.removeEdge(e.v, e.w, e.name);
282
+ if (v !== e.v) {
283
+ const parent = graph.parent(v);
284
+ clusterDb[parent].externalConnections = true;
285
+ edge.fromCluster = e.v;
286
+ }
287
+ if (w !== e.w) {
288
+ const parent = graph.parent(w);
289
+ clusterDb[parent].externalConnections = true;
290
+ edge.toCluster = e.w;
291
+ }
292
+ log$1.warn("Fix Replacing with XXX", v, w, e.name);
293
+ graph.setEdge(v, w, edge, e.name);
294
+ }
295
+ });
296
+ log$1.warn("Adjusted Graph", write(graph));
297
+ extractor(graph, 0);
298
+ log$1.trace(clusterDb);
299
+ };
300
+ const extractor = (graph, depth) => {
301
+ log$1.warn("extractor - ", depth, write(graph), graph.children("D"));
302
+ if (depth > 10) {
303
+ log$1.error("Bailing out");
304
+ return;
305
+ }
306
+ let nodes = graph.nodes();
307
+ let hasChildren = false;
308
+ for (const node of nodes) {
309
+ const children = graph.children(node);
310
+ hasChildren = hasChildren || children.length > 0;
311
+ }
312
+ if (!hasChildren) {
313
+ log$1.debug("Done, no node has children", graph.nodes());
314
+ return;
315
+ }
316
+ log$1.debug("Nodes = ", nodes, depth);
317
+ for (const node of nodes) {
318
+ log$1.debug(
319
+ "Extracting node",
320
+ node,
321
+ clusterDb,
322
+ clusterDb[node] && !clusterDb[node].externalConnections,
323
+ !graph.parent(node),
324
+ graph.node(node),
325
+ graph.children("D"),
326
+ " Depth ",
327
+ depth
328
+ );
329
+ if (!clusterDb[node]) {
330
+ log$1.debug("Not a cluster", node, depth);
331
+ } else if (!clusterDb[node].externalConnections && // !graph.parent(node) &&
332
+ graph.children(node) && graph.children(node).length > 0) {
333
+ log$1.warn(
334
+ "Cluster without external connections, without a parent and with children",
335
+ node,
336
+ depth
337
+ );
338
+ const graphSettings = graph.graph();
339
+ let dir = graphSettings.rankdir === "TB" ? "LR" : "TB";
340
+ if (clusterDb[node] && clusterDb[node].clusterData && clusterDb[node].clusterData.dir) {
341
+ dir = clusterDb[node].clusterData.dir;
342
+ log$1.warn("Fixing dir", clusterDb[node].clusterData.dir, dir);
343
+ }
344
+ const clusterGraph = new Graph({
345
+ multigraph: true,
346
+ compound: true
347
+ }).setGraph({
348
+ rankdir: dir,
349
+ // Todo: set proper spacing
350
+ nodesep: 50,
351
+ ranksep: 50,
352
+ marginx: 8,
353
+ marginy: 8
354
+ }).setDefaultEdgeLabel(function() {
355
+ return {};
356
+ });
357
+ log$1.warn("Old graph before copy", write(graph));
358
+ copy(node, graph, clusterGraph, node);
359
+ graph.setNode(node, {
360
+ clusterNode: true,
361
+ id: node,
362
+ clusterData: clusterDb[node].clusterData,
363
+ labelText: clusterDb[node].labelText,
364
+ graph: clusterGraph
365
+ });
366
+ log$1.warn("New graph after copy node: (", node, ")", write(clusterGraph));
367
+ log$1.debug("Old graph after copy", write(graph));
368
+ } else {
369
+ log$1.warn(
370
+ "Cluster ** ",
371
+ node,
372
+ " **not meeting the criteria !externalConnections:",
373
+ !clusterDb[node].externalConnections,
374
+ " no parent: ",
375
+ !graph.parent(node),
376
+ " children ",
377
+ graph.children(node) && graph.children(node).length > 0,
378
+ graph.children("D"),
379
+ depth
380
+ );
381
+ log$1.debug(clusterDb);
382
+ }
383
+ }
384
+ nodes = graph.nodes();
385
+ log$1.warn("New list of nodes", nodes);
386
+ for (const node of nodes) {
387
+ const data = graph.node(node);
388
+ log$1.warn(" Now next level", node, data);
389
+ if (data.clusterNode) {
390
+ extractor(data.graph, depth + 1);
391
+ }
392
+ }
393
+ };
394
+ const sorter = (graph, nodes) => {
395
+ if (nodes.length === 0) {
396
+ return [];
397
+ }
398
+ let result = Object.assign(nodes);
399
+ nodes.forEach((node) => {
400
+ const children = graph.children(node);
401
+ const sorted = sorter(graph, children);
402
+ result = [...result, ...sorted];
403
+ });
404
+ return result;
405
+ };
406
+ const sortNodesByHierarchy = (graph) => sorter(graph, graph.children());
407
+ const rect = (parent, node) => {
408
+ log$1.info("Creating subgraph rect for ", node.id, node);
409
+ const siteConfig = getConfig();
410
+ const shapeSvg = parent.insert("g").attr("class", "cluster" + (node.class ? " " + node.class : "")).attr("id", node.id);
411
+ const rect2 = shapeSvg.insert("rect", ":first-child");
412
+ const useHtmlLabels = evaluate(siteConfig.flowchart.htmlLabels);
413
+ const label = shapeSvg.insert("g").attr("class", "cluster-label");
414
+ const text = node.labelType === "markdown" ? createText(label, node.labelText, { style: node.labelStyle, useHtmlLabels }) : label.node().appendChild(createLabel$1(node.labelText, node.labelStyle, void 0, true));
415
+ let bbox = text.getBBox();
416
+ if (evaluate(siteConfig.flowchart.htmlLabels)) {
417
+ const div = text.children[0];
418
+ const dv = select(text);
419
+ bbox = div.getBoundingClientRect();
420
+ dv.attr("width", bbox.width);
421
+ dv.attr("height", bbox.height);
422
+ }
423
+ const padding = 0 * node.padding;
424
+ const halfPadding = padding / 2;
425
+ const width = node.width <= bbox.width + padding ? bbox.width + padding : node.width;
426
+ if (node.width <= bbox.width + padding) {
427
+ node.diff = (bbox.width - node.width) / 2 - node.padding / 2;
428
+ } else {
429
+ node.diff = -node.padding / 2;
430
+ }
431
+ log$1.trace("Data ", node, JSON.stringify(node));
432
+ rect2.attr("style", node.style).attr("rx", node.rx).attr("ry", node.ry).attr("x", node.x - width / 2).attr("y", node.y - node.height / 2 - halfPadding).attr("width", width).attr("height", node.height + padding);
433
+ const { subGraphTitleTopMargin } = getSubGraphTitleMargins(siteConfig);
434
+ if (useHtmlLabels) {
435
+ label.attr(
436
+ "transform",
437
+ // This puts the label on top of the box instead of inside it
438
+ `translate(${node.x - bbox.width / 2}, ${node.y - node.height / 2 + subGraphTitleTopMargin})`
439
+ );
440
+ } else {
441
+ label.attr(
442
+ "transform",
443
+ // This puts the label on top of the box instead of inside it
444
+ `translate(${node.x}, ${node.y - node.height / 2 + subGraphTitleTopMargin})`
445
+ );
446
+ }
447
+ const rectBox = rect2.node().getBBox();
448
+ node.width = rectBox.width;
449
+ node.height = rectBox.height;
450
+ node.intersect = function(point) {
451
+ return intersectRect$1(node, point);
452
+ };
453
+ return shapeSvg;
454
+ };
455
+ const noteGroup = (parent, node) => {
456
+ const shapeSvg = parent.insert("g").attr("class", "note-cluster").attr("id", node.id);
457
+ const rect2 = shapeSvg.insert("rect", ":first-child");
458
+ const padding = 0 * node.padding;
459
+ const halfPadding = padding / 2;
460
+ rect2.attr("rx", node.rx).attr("ry", node.ry).attr("x", node.x - node.width / 2 - halfPadding).attr("y", node.y - node.height / 2 - halfPadding).attr("width", node.width + padding).attr("height", node.height + padding).attr("fill", "none");
461
+ const rectBox = rect2.node().getBBox();
462
+ node.width = rectBox.width;
463
+ node.height = rectBox.height;
464
+ node.intersect = function(point) {
465
+ return intersectRect$1(node, point);
466
+ };
467
+ return shapeSvg;
468
+ };
469
+ const roundedWithTitle = (parent, node) => {
470
+ const siteConfig = getConfig();
471
+ const shapeSvg = parent.insert("g").attr("class", node.classes).attr("id", node.id);
472
+ const rect2 = shapeSvg.insert("rect", ":first-child");
473
+ const label = shapeSvg.insert("g").attr("class", "cluster-label");
474
+ const innerRect = shapeSvg.append("rect");
475
+ const text = label.node().appendChild(createLabel$1(node.labelText, node.labelStyle, void 0, true));
476
+ let bbox = text.getBBox();
477
+ if (evaluate(siteConfig.flowchart.htmlLabels)) {
478
+ const div = text.children[0];
479
+ const dv = select(text);
480
+ bbox = div.getBoundingClientRect();
481
+ dv.attr("width", bbox.width);
482
+ dv.attr("height", bbox.height);
483
+ }
484
+ bbox = text.getBBox();
485
+ const padding = 0 * node.padding;
486
+ const halfPadding = padding / 2;
487
+ const width = node.width <= bbox.width + node.padding ? bbox.width + node.padding : node.width;
488
+ if (node.width <= bbox.width + node.padding) {
489
+ node.diff = (bbox.width + node.padding * 0 - node.width) / 2;
490
+ } else {
491
+ node.diff = -node.padding / 2;
492
+ }
493
+ rect2.attr("class", "outer").attr("x", node.x - width / 2 - halfPadding).attr("y", node.y - node.height / 2 - halfPadding).attr("width", width + padding).attr("height", node.height + padding);
494
+ innerRect.attr("class", "inner").attr("x", node.x - width / 2 - halfPadding).attr("y", node.y - node.height / 2 - halfPadding + bbox.height - 1).attr("width", width + padding).attr("height", node.height + padding - bbox.height - 3);
495
+ const { subGraphTitleTopMargin } = getSubGraphTitleMargins(siteConfig);
496
+ label.attr(
497
+ "transform",
498
+ `translate(${node.x - bbox.width / 2}, ${node.y - node.height / 2 - node.padding / 3 + (evaluate(siteConfig.flowchart.htmlLabels) ? 5 : 3) + subGraphTitleTopMargin})`
499
+ );
500
+ const rectBox = rect2.node().getBBox();
501
+ node.height = rectBox.height;
502
+ node.intersect = function(point) {
503
+ return intersectRect$1(node, point);
504
+ };
505
+ return shapeSvg;
506
+ };
507
+ const divider = (parent, node) => {
508
+ const shapeSvg = parent.insert("g").attr("class", node.classes).attr("id", node.id);
509
+ const rect2 = shapeSvg.insert("rect", ":first-child");
510
+ const padding = 0 * node.padding;
511
+ const halfPadding = padding / 2;
512
+ rect2.attr("class", "divider").attr("x", node.x - node.width / 2 - halfPadding).attr("y", node.y - node.height / 2).attr("width", node.width + padding).attr("height", node.height + padding);
513
+ const rectBox = rect2.node().getBBox();
514
+ node.width = rectBox.width;
515
+ node.height = rectBox.height;
516
+ node.diff = -node.padding / 2;
517
+ node.intersect = function(point) {
518
+ return intersectRect$1(node, point);
519
+ };
520
+ return shapeSvg;
521
+ };
522
+ const shapes = { rect, roundedWithTitle, noteGroup, divider };
523
+ let clusterElems = {};
524
+ const insertCluster = (elem, node) => {
525
+ log$1.trace("Inserting cluster");
526
+ const shape = node.shape || "rect";
527
+ clusterElems[node.id] = shapes[shape](elem, node);
528
+ };
529
+ const clear = () => {
530
+ clusterElems = {};
531
+ };
532
+ const recursiveRender = async (_elem, graph, diagramType, id, parentCluster, siteConfig) => {
533
+ log$1.info("Graph in recursive render: XXX", write(graph), parentCluster);
534
+ const dir = graph.graph().rankdir;
535
+ log$1.trace("Dir in recursive render - dir:", dir);
536
+ const elem = _elem.insert("g").attr("class", "root");
537
+ if (!graph.nodes()) {
538
+ log$1.info("No nodes found for", graph);
539
+ } else {
540
+ log$1.info("Recursive render XXX", graph.nodes());
541
+ }
542
+ if (graph.edges().length > 0) {
543
+ log$1.trace("Recursive edges", graph.edge(graph.edges()[0]));
544
+ }
545
+ const clusters = elem.insert("g").attr("class", "clusters");
546
+ const edgePaths = elem.insert("g").attr("class", "edgePaths");
547
+ const edgeLabels = elem.insert("g").attr("class", "edgeLabels");
548
+ const nodes = elem.insert("g").attr("class", "nodes");
549
+ await Promise.all(
550
+ graph.nodes().map(async function(v) {
551
+ const node = graph.node(v);
552
+ if (parentCluster !== void 0) {
553
+ const data = JSON.parse(JSON.stringify(parentCluster.clusterData));
554
+ log$1.info("Setting data for cluster XXX (", v, ") ", data, parentCluster);
555
+ graph.setNode(parentCluster.id, data);
556
+ if (!graph.parent(v)) {
557
+ log$1.trace("Setting parent", v, parentCluster.id);
558
+ graph.setParent(v, parentCluster.id, data);
559
+ }
560
+ }
561
+ log$1.info("(Insert) Node XXX" + v + ": " + JSON.stringify(graph.node(v)));
562
+ if (node && node.clusterNode) {
563
+ log$1.info("Cluster identified", v, node.width, graph.node(v));
564
+ const o = await recursiveRender(
565
+ nodes,
566
+ node.graph,
567
+ diagramType,
568
+ id,
569
+ graph.node(v),
570
+ siteConfig
571
+ );
572
+ const newEl = o.elem;
573
+ updateNodeBounds(node, newEl);
574
+ node.diff = o.diff || 0;
575
+ log$1.info("Node bounds (abc123)", v, node, node.width, node.x, node.y);
576
+ setNodeElem(newEl, node);
577
+ log$1.warn("Recursive render complete ", newEl, node);
578
+ } else {
579
+ if (graph.children(v).length > 0) {
580
+ log$1.info("Cluster - the non recursive path XXX", v, node.id, node, graph);
581
+ log$1.info(findNonClusterChild(node.id, graph));
582
+ clusterDb[node.id] = { id: findNonClusterChild(node.id, graph), node };
583
+ } else {
584
+ log$1.info("Node - the non recursive path", v, node.id, node);
585
+ await insertNode(nodes, graph.node(v), dir);
586
+ }
587
+ }
588
+ })
589
+ );
590
+ graph.edges().forEach(function(e) {
591
+ const edge = graph.edge(e.v, e.w, e.name);
592
+ log$1.info("Edge " + e.v + " -> " + e.w + ": " + JSON.stringify(e));
593
+ log$1.info("Edge " + e.v + " -> " + e.w + ": ", e, " ", JSON.stringify(graph.edge(e)));
594
+ log$1.info("Fix", clusterDb, "ids:", e.v, e.w, "Translating: ", clusterDb[e.v], clusterDb[e.w]);
595
+ insertEdgeLabel(edgeLabels, edge);
596
+ });
597
+ graph.edges().forEach(function(e) {
598
+ log$1.info("Edge " + e.v + " -> " + e.w + ": " + JSON.stringify(e));
599
+ });
600
+ log$1.info("#############################################");
601
+ log$1.info("### Layout ###");
602
+ log$1.info("#############################################");
603
+ log$1.info(graph);
604
+ layout(graph);
605
+ log$1.info("Graph after layout:", write(graph));
606
+ let diff = 0;
607
+ const { subGraphTitleTotalMargin } = getSubGraphTitleMargins(siteConfig);
608
+ sortNodesByHierarchy(graph).forEach(function(v) {
609
+ const node = graph.node(v);
610
+ log$1.info("Position " + v + ": " + JSON.stringify(graph.node(v)));
611
+ log$1.info(
612
+ "Position " + v + ": (" + node.x,
613
+ "," + node.y,
614
+ ") width: ",
615
+ node.width,
616
+ " height: ",
617
+ node.height
618
+ );
619
+ if (node && node.clusterNode) {
620
+ node.y += subGraphTitleTotalMargin;
621
+ positionNode(node);
622
+ } else {
623
+ if (graph.children(v).length > 0) {
624
+ node.height += subGraphTitleTotalMargin;
625
+ insertCluster(clusters, node);
626
+ clusterDb[node.id].node = node;
627
+ } else {
628
+ node.y += subGraphTitleTotalMargin / 2;
629
+ positionNode(node);
630
+ }
631
+ }
632
+ });
633
+ graph.edges().forEach(function(e) {
634
+ const edge = graph.edge(e);
635
+ log$1.info("Edge " + e.v + " -> " + e.w + ": " + JSON.stringify(edge), edge);
636
+ edge.points.forEach((point) => point.y += subGraphTitleTotalMargin / 2);
637
+ const paths = insertEdge(edgePaths, e, edge, clusterDb, diagramType, graph, id);
638
+ positionEdgeLabel(edge, paths);
639
+ });
640
+ graph.nodes().forEach(function(v) {
641
+ const n = graph.node(v);
642
+ log$1.info(v, n.type, n.diff);
643
+ if (n.type === "group") {
644
+ diff = n.diff;
645
+ }
646
+ });
647
+ return { elem, diff };
648
+ };
649
+ const render = async (elem, graph, markers, diagramType, id) => {
650
+ insertMarkers$1(elem, markers, diagramType, id);
651
+ clear$1$1();
652
+ clear$2();
653
+ clear();
654
+ clear$1();
655
+ log$1.warn("Graph at first:", JSON.stringify(write(graph)));
656
+ adjustClustersAndEdges(graph);
657
+ log$1.warn("Graph after:", JSON.stringify(write(graph)));
658
+ const siteConfig = getConfig();
659
+ await recursiveRender(elem, graph, diagramType, id, void 0, siteConfig);
660
+ };
661
+ export {
662
+ render as r
663
+ };