strikethroo 3.25.0 → 4.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 (439) hide show
  1. package/README.md +14 -0
  2. package/dist/cli.js +18 -0
  3. package/dist/cli.js.map +1 -1
  4. package/dist/export-profile.d.ts +6 -0
  5. package/dist/export-profile.d.ts.map +1 -1
  6. package/dist/export-profile.js +46 -4
  7. package/dist/export-profile.js.map +1 -1
  8. package/dist/metadata.d.ts +11 -1
  9. package/dist/metadata.d.ts.map +1 -1
  10. package/dist/metadata.js +75 -11
  11. package/dist/metadata.js.map +1 -1
  12. package/dist/profiles.d.ts.map +1 -1
  13. package/dist/profiles.js +52 -7
  14. package/dist/profiles.js.map +1 -1
  15. package/dist/serve/config-write.d.ts +6 -3
  16. package/dist/serve/config-write.d.ts.map +1 -1
  17. package/dist/serve/config-write.js +20 -21
  18. package/dist/serve/config-write.js.map +1 -1
  19. package/dist/serve/events.d.ts +37 -8
  20. package/dist/serve/events.d.ts.map +1 -1
  21. package/dist/serve/events.js +114 -28
  22. package/dist/serve/events.js.map +1 -1
  23. package/dist/serve/self-review.d.ts +37 -7
  24. package/dist/serve/self-review.d.ts.map +1 -1
  25. package/dist/serve/self-review.js +93 -33
  26. package/dist/serve/self-review.js.map +1 -1
  27. package/dist/serve/server.d.ts +107 -0
  28. package/dist/serve/server.d.ts.map +1 -1
  29. package/dist/serve/server.js +502 -135
  30. package/dist/serve/server.js.map +1 -1
  31. package/dist/serve/workspace-model.d.ts.map +1 -1
  32. package/dist/serve/workspace-model.js +36 -34
  33. package/dist/serve/workspace-model.js.map +1 -1
  34. package/dist/skill-scripts/shared/safe-fs.d.ts +89 -0
  35. package/dist/skill-scripts/shared/safe-fs.d.ts.map +1 -0
  36. package/dist/skill-scripts/shared/safe-fs.js +324 -0
  37. package/dist/skill-scripts/shared/safe-fs.js.map +1 -0
  38. package/dist/types.d.ts +8 -0
  39. package/dist/types.d.ts.map +1 -1
  40. package/dist/types.js +13 -1
  41. package/dist/types.js.map +1 -1
  42. package/dist/update.d.ts.map +1 -1
  43. package/dist/update.js +15 -1
  44. package/dist/update.js.map +1 -1
  45. package/dist-web/assets/abnfDiagram-VCTEODGH-BCoAyQ8y.js +1 -0
  46. package/dist-web/assets/apl-gfMMiTNf.js +1 -0
  47. package/dist-web/assets/arc-Pry-7G1_.js +1 -0
  48. package/dist-web/assets/architecture-7GRP2DOG-C2Oj1AcH.js +1 -0
  49. package/dist-web/assets/architectureDiagram-5GKGNRK7-BbYvyste.js +36 -0
  50. package/dist-web/assets/array-BifhSqXX.js +1 -0
  51. package/dist-web/assets/asciiarmor-C_eisQCp.js +1 -0
  52. package/dist-web/assets/asn1-DCl_8MCW.js +1 -0
  53. package/dist-web/assets/asterisk-BEn0Cwpx.js +1 -0
  54. package/dist-web/assets/blockDiagram-I7D4REHJ-CGYIKoI0.js +129 -0
  55. package/dist-web/assets/brainfuck-D5EjA2JK.js +1 -0
  56. package/dist-web/assets/c4Diagram-7LVT6UL2-Cpat9Q1R.js +38 -0
  57. package/dist-web/assets/channel-Da0Eg5hZ.js +1 -0
  58. package/dist-web/assets/chunk-2Q5K7J3B-C1jixKkw.js +1 -0
  59. package/dist-web/assets/chunk-4HAMMTFA-D1PXshWJ.js +62 -0
  60. package/dist-web/assets/{chunk-FMBD7UC4-BxPfAX5i.js → chunk-5VM5RSS4-ZNzvKenW.js} +2 -2
  61. package/dist-web/assets/chunk-75Z2AOVW-C19f30iG.js +2 -0
  62. package/dist-web/assets/chunk-DU6HZSFF-CV-KOPc1.js +125 -0
  63. package/dist-web/assets/chunk-F27PBJKO-DMfX40T1.js +1 -0
  64. package/dist-web/assets/chunk-FOHPRMQF-DzxwRta7.js +161 -0
  65. package/dist-web/assets/chunk-GMAD6QVW-Nd9kACgc.js +72 -0
  66. package/dist-web/assets/chunk-GVQU2GXP-3G8ojGFe.js +1 -0
  67. package/dist-web/assets/chunk-IMKFNOWR-CmhGyHNd.js +231 -0
  68. package/dist-web/assets/chunk-JWPE2WC7-DVXcaiue.js +1 -0
  69. package/dist-web/assets/chunk-L3NEJ4N5-Dsa1ER8Q.js +1 -0
  70. package/dist-web/assets/chunk-OSK3NFVY-ObCj9P3B.js +10 -0
  71. package/dist-web/assets/chunk-P2QGCYS3-CfNHqVGX.js +1 -0
  72. package/dist-web/assets/chunk-POPQ4Y6H-Cg5tk8by.js +1 -0
  73. package/dist-web/assets/chunk-PWAF6VOD-e6XMS-JR.js +1 -0
  74. package/dist-web/assets/chunk-SHT3W25Y-B1M0HI76.js +168 -0
  75. package/dist-web/assets/chunk-SVP7TREG-XLNHY4Z2.js +88 -0
  76. package/dist-web/assets/chunk-TICWLB2K-Bpm0S7rI.js +206 -0
  77. package/dist-web/assets/chunk-XXDRQBXY-DqAYeljN.js +1 -0
  78. package/dist-web/assets/chunk-Y2CYZVJY-DsF7k-Jl.js +1 -0
  79. package/dist-web/assets/classDiagram-ZZMXUADV-CZI086hK.js +1 -0
  80. package/dist-web/assets/classDiagram-v2-VYDZK3BY-CZI086hK.js +1 -0
  81. package/dist-web/assets/clike-D_6L3tnO.js +1 -0
  82. package/dist-web/assets/clojure-BflJGmDX.js +1 -0
  83. package/dist-web/assets/cmake-84nbDH0I.js +1 -0
  84. package/dist-web/assets/cobol-DHLQUbN7.js +1 -0
  85. package/dist-web/assets/coffeescript-De_zI4J0.js +1 -0
  86. package/dist-web/assets/commonlisp-DgAKBe0r.js +1 -0
  87. package/dist-web/assets/cose-bilkent-JH36ORCC-BEpcWcmK.js +1 -0
  88. package/dist-web/assets/crystal-Bsdphhtm.js +1 -0
  89. package/dist-web/assets/css-CnaYoQib.js +1 -0
  90. package/dist-web/assets/cynefin-OW5HDTMX-B5ohibc7.js +1 -0
  91. package/dist-web/assets/cynefinDiagram-5FMLGOSQ-C1202n-x.js +62 -0
  92. package/dist-web/assets/cypher-p9eYesGn.js +1 -0
  93. package/dist-web/assets/cytoscape.esm-Yq6u8L66.js +321 -0
  94. package/dist-web/assets/d-DWkQyNnU.js +1 -0
  95. package/dist-web/assets/dagre-C-rnJpZF.js +1 -0
  96. package/dist-web/assets/dagre-GXQ25YYZ-CQlKKJXg.js +4 -0
  97. package/dist-web/assets/defaultLocale-BFoDCU3G.js +1 -0
  98. package/dist-web/assets/diagram-S7CK7UJ4-DRf7iTH9.js +30 -0
  99. package/dist-web/assets/diagram-UQ7AKVKN-CxSX3b2_.js +41 -0
  100. package/dist-web/assets/diagram-VSXAHHWV-D9vrB5je.js +3 -0
  101. package/dist-web/assets/diagram-VX7I27RA-DTOqcpBV.js +24 -0
  102. package/dist-web/assets/diagram-Z3DM3KII-mlhRA4lR.js +24 -0
  103. package/dist-web/assets/diff-ChtP43wD.js +1 -0
  104. package/dist-web/assets/dist-B-O4eZD_.js +1 -0
  105. package/dist-web/assets/dist-B27L6oW0.js +1 -0
  106. package/dist-web/assets/dist-BKXbBuAc.js +1 -0
  107. package/dist-web/assets/dist-BPcC0hnc.js +9 -0
  108. package/dist-web/assets/dist-BgwxV8e_.js +1 -0
  109. package/dist-web/assets/dist-BlG40nRw.js +1 -0
  110. package/dist-web/assets/dist-Bqc6e86z.js +1 -0
  111. package/dist-web/assets/dist-BsvASXHG.js +1 -0
  112. package/dist-web/assets/dist-C15GN054.js +1 -0
  113. package/dist-web/assets/dist-C4QRmcTO.js +1 -0
  114. package/dist-web/assets/dist-C4lZy0XG.js +6 -0
  115. package/dist-web/assets/dist-CFLbFzpB.js +23 -0
  116. package/dist-web/assets/dist-CP6AUVtv.js +1 -0
  117. package/dist-web/assets/dist-CpYnHHz6.js +1 -0
  118. package/dist-web/assets/dist-DHnGmK79.js +1 -0
  119. package/dist-web/assets/dist-DYmIHv0n.js +13 -0
  120. package/dist-web/assets/dist-DauRO0RO.js +1 -0
  121. package/dist-web/assets/dist-Day7i26p.js +1 -0
  122. package/dist-web/assets/dist-Do_t70vA.js +1 -0
  123. package/dist-web/assets/dist-DqTG_rhR.js +2 -0
  124. package/dist-web/assets/dist-G8nWWSie.js +11 -0
  125. package/dist-web/assets/dist-QfYLz_N1.js +1 -0
  126. package/dist-web/assets/dist-TZhb2tj2.js +1 -0
  127. package/dist-web/assets/dist-Wr2Wo_KE.js +1 -0
  128. package/dist-web/assets/dist-kYRo7Db1.js +1 -0
  129. package/dist-web/assets/dist-kfqV1Lu-.js +2 -0
  130. package/dist-web/assets/dist-v5Q1xZ2K.js +1 -0
  131. package/dist-web/assets/dockerfile-DJkHQgkl.js +1 -0
  132. package/dist-web/assets/dtd-DTF72YNO.js +1 -0
  133. package/dist-web/assets/dylan-BCDoL_-p.js +1 -0
  134. package/dist-web/assets/ebnf-D4c0_ac3.js +1 -0
  135. package/dist-web/assets/ebnfDiagram-PWID7BFC-BhB_RJPM.js +1 -0
  136. package/dist-web/assets/ecl-BVIeWmwY.js +1 -0
  137. package/dist-web/assets/eiffel-BEjRio4Q.js +1 -0
  138. package/dist-web/assets/elm-Cshzl8qu.js +1 -0
  139. package/dist-web/assets/erDiagram-RLTQ6QDP-0wE1kPYz.js +99 -0
  140. package/dist-web/assets/erlang-BV0c4Hdn.js +1 -0
  141. package/dist-web/assets/esm-COEoxUhE.js +2 -0
  142. package/dist-web/assets/eventmodeling-NTZA5JFV-DzkXb9nA.js +1 -0
  143. package/dist-web/assets/factor-LKH5gN8L.js +1 -0
  144. package/dist-web/assets/fcl-ClOhbFR7.js +1 -0
  145. package/dist-web/assets/flowDiagram-HODETNUW-cgl8ipSt.js +1 -0
  146. package/dist-web/assets/forth-D6RzAl64.js +1 -0
  147. package/dist-web/assets/fortran-Bt6PBEDR.js +1 -0
  148. package/dist-web/assets/ganttDiagram-EL5Y4UJY-BsvlpHPt.js +292 -0
  149. package/dist-web/assets/gas-BHEdbvp9.js +1 -0
  150. package/dist-web/assets/gherkin-oBAE_ms0.js +1 -0
  151. package/dist-web/assets/gitGraph-4MIJSDKK-Dm82FCqy.js +1 -0
  152. package/dist-web/assets/gitGraphDiagram-WWUBYQGX-OPit_3vA.js +106 -0
  153. package/dist-web/assets/graphlib-DS17s2tU.js +1 -0
  154. package/dist-web/assets/groovy-CUpZ7dEl.js +1 -0
  155. package/dist-web/assets/haskell-BRsoo5mP.js +1 -0
  156. package/dist-web/assets/haxe-DjVOVvNP.js +1 -0
  157. package/dist-web/assets/http-CLVgA2GD.js +1 -0
  158. package/dist-web/assets/idl-BUZw3wgd.js +1 -0
  159. package/dist-web/assets/index-6XzOqB6r.js +103 -0
  160. package/dist-web/assets/index-CgIHUWsX.css +2 -0
  161. package/dist-web/assets/info-A6RAGUB7-8sl1XQWq.js +1 -0
  162. package/dist-web/assets/infoDiagram-27XIBGKW-DIpdnB7L.js +2 -0
  163. package/dist-web/assets/init-C-OQMol4.js +1 -0
  164. package/dist-web/assets/ishikawaDiagram-5VMMS53U-DpoLDWpF.js +70 -0
  165. package/dist-web/assets/javascript-Bu8mWwtz.js +1 -0
  166. package/dist-web/assets/journeyDiagram-3NMN7TZE-BAEbJ33U.js +139 -0
  167. package/dist-web/assets/julia-CQfgDRfP.js +1 -0
  168. package/dist-web/assets/kanban-definition-UXKFOSKX-CqzyUA0g.js +89 -0
  169. package/dist-web/assets/katex-ZlcWpGUi.js +257 -0
  170. package/dist-web/assets/line-CQRHrtV_.js +1 -0
  171. package/dist-web/assets/linear-SzVmGSw4.js +1 -0
  172. package/dist-web/assets/livescript-BXxG0Yva.js +1 -0
  173. package/dist-web/assets/lua-DPCEkfD_.js +1 -0
  174. package/dist-web/assets/mathematica-u8YMmbU0.js +1 -0
  175. package/dist-web/assets/mbox-BEMVcqjs.js +1 -0
  176. package/dist-web/assets/mermaid-parser.core-XlEvAPi2.js +7 -0
  177. package/dist-web/assets/mermaid.core-CvFTFi5O.js +44 -0
  178. package/dist-web/assets/mindmap-definition-YA3MSWOX-Ch0vW4Mc.js +96 -0
  179. package/dist-web/assets/{mirc-CjQqDB4T.js → mirc-C9zpzAZU.js} +1 -1
  180. package/dist-web/assets/mllike-B45xgp2S.js +1 -0
  181. package/dist-web/assets/modelica-CqHI_q-D.js +1 -0
  182. package/dist-web/assets/mscgen-qgSLujhx.js +1 -0
  183. package/dist-web/assets/mumps-BSzj6Xyz.js +1 -0
  184. package/dist-web/assets/{nginx-DdIZxoE0.js → nginx-8H7HVH4w.js} +1 -1
  185. package/dist-web/assets/nsis-CfSuhXs5.js +1 -0
  186. package/dist-web/assets/ntriples-B9h1VB_g.js +1 -0
  187. package/dist-web/assets/octave-D2Q8cUp1.js +1 -0
  188. package/dist-web/assets/ordinal-BDEzSJ7C.js +1 -0
  189. package/dist-web/assets/oz-BwTct_5T.js +1 -0
  190. package/dist-web/assets/packet-AYTQ26CC-lk-QU-qZ.js +1 -0
  191. package/dist-web/assets/pascal-Dp_KdFgX.js +1 -0
  192. package/dist-web/assets/path-fybaL0A-.js +1 -0
  193. package/dist-web/assets/pegDiagram-XKGWAZYB-Cgf4CYg-.js +1 -0
  194. package/dist-web/assets/perl-BkSkiI9m.js +1 -0
  195. package/dist-web/assets/pie-WAS4IAKB-dWyVjg9O.js +1 -0
  196. package/dist-web/assets/pieDiagram-E7YTZNPT-BDZxWO8n.js +39 -0
  197. package/dist-web/assets/pig-AF4Hwhju.js +1 -0
  198. package/dist-web/assets/powershell-BcIto6Sf.js +1 -0
  199. package/dist-web/assets/properties-C357ku5U.js +1 -0
  200. package/dist-web/assets/protobuf-D1ij_kNL.js +1 -0
  201. package/dist-web/assets/pug-3K-JMW4g.js +1 -0
  202. package/dist-web/assets/puppet-BZyAS7I4.js +1 -0
  203. package/dist-web/assets/python-B_1Jd8HM.js +1 -0
  204. package/dist-web/assets/q-B9NhS7L_.js +1 -0
  205. package/dist-web/assets/quadrantDiagram-AXDQQJYC-DCu9cx1_.js +7 -0
  206. package/dist-web/assets/r-CxDmU1I4.js +1 -0
  207. package/dist-web/assets/radar-RG4KPBEZ-CphwvESj.js +1 -0
  208. package/dist-web/assets/railroad-74A4TZTK-COTrvtXu.js +1 -0
  209. package/dist-web/assets/railroad-abnf-HS5TGJTU-CYfpugMj.js +1 -0
  210. package/dist-web/assets/railroad-ebnf-LZEXJU2U--Ui_4jm6.js +1 -0
  211. package/dist-web/assets/railroad-peg-WCYAUIDC-DzcveMan.js +1 -0
  212. package/dist-web/assets/railroadDiagram-O6MQD6OU-S9ZI1Adi.js +1 -0
  213. package/dist-web/assets/requirementDiagram-BXWQKSXE-a_3FElqS.js +84 -0
  214. package/dist-web/assets/rolldown-runtime-hePW80VL.js +1 -0
  215. package/dist-web/assets/rough.esm-Dy-Kn_BL.js +1 -0
  216. package/dist-web/assets/rpm-gpDK5sbt.js +1 -0
  217. package/dist-web/assets/ruby-BjXV7-Qa.js +1 -0
  218. package/dist-web/assets/sankeyDiagram-P5KCCOFB-D-i6r8wy.js +40 -0
  219. package/dist-web/assets/{sas-B4kiWyti.js → sas-C2OyD2Y6.js} +1 -1
  220. package/dist-web/assets/scheme-D9qYN0V5.js +1 -0
  221. package/dist-web/assets/sequenceDiagram-WJ2MYXX4-D8hA2m0U.js +162 -0
  222. package/dist-web/assets/shell-DwuoZtxw.js +1 -0
  223. package/dist-web/assets/sieve-tLWDfEkZ.js +1 -0
  224. package/dist-web/assets/simple-mode-DXiLM1-G.js +1 -0
  225. package/dist-web/assets/sizeCapture-INFHLROL-3uHXrFqA.js +1 -0
  226. package/dist-web/assets/smalltalk-BLp5-jwC.js +1 -0
  227. package/dist-web/assets/solr-B78wSQJQ.js +1 -0
  228. package/dist-web/assets/sparql-Dz-mlCAC.js +1 -0
  229. package/dist-web/assets/spreadsheet-CTIncYxj.js +1 -0
  230. package/dist-web/assets/sql-DuQMFDvy.js +1 -0
  231. package/dist-web/assets/src-B6xuSHsQ.js +1 -0
  232. package/dist-web/assets/stateDiagram-D77RDMKH-C14W-8zT.js +1 -0
  233. package/dist-web/assets/stateDiagram-v2-MP3YSRHH-Dhuhsub3.js +1 -0
  234. package/dist-web/assets/stex-DNzd62Q_.js +1 -0
  235. package/dist-web/assets/stylus-BOVgKnng.js +1 -0
  236. package/dist-web/assets/swift-DKB6_1j6.js +1 -0
  237. package/dist-web/assets/swimlanes-42K2YHIH-FMv8YLkC.js +1 -0
  238. package/dist-web/assets/swimlanesDiagram-VR7AAH4N-O94a9jW3.js +8 -0
  239. package/dist-web/assets/tcl-BGfruO1u.js +1 -0
  240. package/dist-web/assets/textile-C4jVoHG1.js +1 -0
  241. package/dist-web/assets/tiddlywiki-VlUiK86J.js +1 -0
  242. package/dist-web/assets/tiki-AK6FwT8q.js +1 -0
  243. package/dist-web/assets/timeline-definition-24CTP7MA-DmBN45fY.js +120 -0
  244. package/dist-web/assets/toml-BPTmHmyx.js +1 -0
  245. package/dist-web/assets/treeView-Q6P3EWNA-C5-PUnPN.js +1 -0
  246. package/dist-web/assets/treemap-WGGIJYW6-C_veVYMi.js +1 -0
  247. package/dist-web/assets/troff-C2dAgh7P.js +1 -0
  248. package/dist-web/assets/ttcn-PPSTk1ow.js +1 -0
  249. package/dist-web/assets/ttcn-cfg-2b4Gb5sE.js +1 -0
  250. package/dist-web/assets/turtle-Cx3rYX2g.js +1 -0
  251. package/dist-web/assets/vb-BthdM_4N.js +1 -0
  252. package/dist-web/assets/vbscript-D9f6rSsU.js +1 -0
  253. package/dist-web/assets/velocity-CqftRsjg.js +1 -0
  254. package/dist-web/assets/vennDiagram-4TSXK5OY-CiWHjSVc.js +34 -0
  255. package/dist-web/assets/verilog-CjI9Y6RI.js +1 -0
  256. package/dist-web/assets/vhdl-kS471soi.js +1 -0
  257. package/dist-web/assets/wardley-WFR3VGLG-FOCO1NlU.js +1 -0
  258. package/dist-web/assets/wardleyDiagram-VM6X3IG4-Da3kkvxV.js +78 -0
  259. package/dist-web/assets/webidl-D5jiJvOU.js +1 -0
  260. package/dist-web/assets/xquery-BKJx4mf9.js +1 -0
  261. package/dist-web/assets/xychartDiagram-S5SC5T6Z-DPxie1fH.js +7 -0
  262. package/dist-web/assets/yacas-CXXgtw0p.js +1 -0
  263. package/dist-web/assets/z80-Co3PbHdE.js +1 -0
  264. package/dist-web/index.html +6 -18
  265. package/dist-web/theme-guard.js +21 -0
  266. package/package.json +29 -24
  267. package/templates/strikethroo/config/config.yaml +7 -4
  268. package/dist-web/assets/apl-B4CMkyY2.js +0 -1
  269. package/dist-web/assets/arc-D8anvcX-.js +0 -1
  270. package/dist-web/assets/architectureDiagram-3BPJPVTR-CGfqArN_.js +0 -36
  271. package/dist-web/assets/asciiarmor-Df11BRmG.js +0 -1
  272. package/dist-web/assets/asn1-EdZsLKOL.js +0 -1
  273. package/dist-web/assets/asterisk-B-8jnY81.js +0 -1
  274. package/dist-web/assets/blockDiagram-GPEHLZMM-CHzLIPZe.js +0 -132
  275. package/dist-web/assets/brainfuck-C4LP7Hcl.js +0 -1
  276. package/dist-web/assets/c4Diagram-AAUBKEIU-9rRidvsm.js +0 -10
  277. package/dist-web/assets/channel-DgcCmM1I.js +0 -1
  278. package/dist-web/assets/chunk-2J33WTMH-C39TKr_M.js +0 -1
  279. package/dist-web/assets/chunk-4BX2VUAB-C2djuG3T.js +0 -1
  280. package/dist-web/assets/chunk-55IACEB6-DWqTM520.js +0 -1
  281. package/dist-web/assets/chunk-727SXJPM-rovNVJJP.js +0 -206
  282. package/dist-web/assets/chunk-AQP2D5EJ-CHH1etIO.js +0 -231
  283. package/dist-web/assets/chunk-ND2GUHAM-C8MhIE2B.js +0 -1
  284. package/dist-web/assets/chunk-QZHKN3VN-63gK6NbV.js +0 -1
  285. package/dist-web/assets/classDiagram-4FO5ZUOK-C0z0eFyi.js +0 -1
  286. package/dist-web/assets/classDiagram-v2-Q7XG4LA2-C0z0eFyi.js +0 -1
  287. package/dist-web/assets/clike-B9uivgTg.js +0 -1
  288. package/dist-web/assets/clojure-BMjYHr_A.js +0 -1
  289. package/dist-web/assets/cmake-BQqOBYOt.js +0 -1
  290. package/dist-web/assets/cobol-CWcv1MsR.js +0 -1
  291. package/dist-web/assets/coffeescript-S37ZYGWr.js +0 -1
  292. package/dist-web/assets/commonlisp-DBKNyK5s.js +0 -1
  293. package/dist-web/assets/cose-bilkent-S5V4N54A-COtPU2p7.js +0 -1
  294. package/dist-web/assets/crystal-SjHAIU92.js +0 -1
  295. package/dist-web/assets/css-BnMrqG3P.js +0 -1
  296. package/dist-web/assets/cypher-C_CwsFkJ.js +0 -1
  297. package/dist-web/assets/cytoscape.esm-BHYC38rz.js +0 -331
  298. package/dist-web/assets/d-pRatUO7H.js +0 -1
  299. package/dist-web/assets/dagre-BM42HDAG-Av_BDeN2.js +0 -4
  300. package/dist-web/assets/defaultLocale-CrowFXzY.js +0 -1
  301. package/dist-web/assets/diagram-2AECGRRQ-TPYX18Ua.js +0 -43
  302. package/dist-web/assets/diagram-5GNKFQAL-DtQI3PSq.js +0 -10
  303. package/dist-web/assets/diagram-KO2AKTUF-DNXbi8Vg.js +0 -3
  304. package/dist-web/assets/diagram-LMA3HP47-Bl0b9O4C.js +0 -24
  305. package/dist-web/assets/diagram-OG6HWLK6-DboL6tB3.js +0 -24
  306. package/dist-web/assets/diff-DbItnlRl.js +0 -1
  307. package/dist-web/assets/dockerfile-BKs6k2Af.js +0 -1
  308. package/dist-web/assets/dtd-DF_7sFjM.js +0 -1
  309. package/dist-web/assets/dylan-DwRh75JA.js +0 -1
  310. package/dist-web/assets/ebnf-CDyGwa7X.js +0 -1
  311. package/dist-web/assets/ecl-Cabwm37j.js +0 -1
  312. package/dist-web/assets/eiffel-CnydiIhH.js +0 -1
  313. package/dist-web/assets/elm-vLlmbW-K.js +0 -1
  314. package/dist-web/assets/erDiagram-TEJ5UH35-BbYxGrzg.js +0 -85
  315. package/dist-web/assets/erlang-BNw1qcRV.js +0 -1
  316. package/dist-web/assets/factor-kuTfRLto.js +0 -1
  317. package/dist-web/assets/fcl-Kvtd6kyn.js +0 -1
  318. package/dist-web/assets/flowDiagram-I6XJVG4X-bgw4_MAe.js +0 -162
  319. package/dist-web/assets/forth-Ffai-XNe.js +0 -1
  320. package/dist-web/assets/fortran-DYz_wnZ1.js +0 -1
  321. package/dist-web/assets/ganttDiagram-6RSMTGT7-D_LznzPz.js +0 -292
  322. package/dist-web/assets/gas-Bneqetm1.js +0 -1
  323. package/dist-web/assets/gherkin-heZmZLOM.js +0 -1
  324. package/dist-web/assets/gitGraphDiagram-PVQCEYII-DIsJhn0o.js +0 -106
  325. package/dist-web/assets/graph-Dqkl27Ch.js +0 -1
  326. package/dist-web/assets/groovy-D9Dt4D0W.js +0 -1
  327. package/dist-web/assets/haskell-BWDZoCOh.js +0 -1
  328. package/dist-web/assets/haxe-H-WmDvRZ.js +0 -1
  329. package/dist-web/assets/http-DBlCnlav.js +0 -1
  330. package/dist-web/assets/idl-BEugSyMb.js +0 -1
  331. package/dist-web/assets/index-B-KlYMEI.js +0 -1
  332. package/dist-web/assets/index-B0a4C4Lb.js +0 -1
  333. package/dist-web/assets/index-B90tvIxG.js +0 -3
  334. package/dist-web/assets/index-BLXIwDvb.js +0 -1
  335. package/dist-web/assets/index-BdEHUYQj.js +0 -169
  336. package/dist-web/assets/index-BjZYUODU.js +0 -1
  337. package/dist-web/assets/index-BmsczLPZ.js +0 -1
  338. package/dist-web/assets/index-BpU7RpGz.js +0 -1
  339. package/dist-web/assets/index-C53NKwQ5.js +0 -1
  340. package/dist-web/assets/index-C73riuQN.js +0 -1
  341. package/dist-web/assets/index-C9RcHSPW.js +0 -1
  342. package/dist-web/assets/index-CEBV-m_B.js +0 -1
  343. package/dist-web/assets/index-CG1O2Vjg.js +0 -1
  344. package/dist-web/assets/index-CQ8MJGW7.js +0 -2
  345. package/dist-web/assets/index-CddJufqj.js +0 -1
  346. package/dist-web/assets/index-CrzBaw1K.css +0 -1
  347. package/dist-web/assets/index-CuBsNWzH.js +0 -13
  348. package/dist-web/assets/index-CuCAyRTw.js +0 -7
  349. package/dist-web/assets/index-CuUh3dvS.js +0 -1
  350. package/dist-web/assets/index-CwPWc9jQ.js +0 -1
  351. package/dist-web/assets/index-DHBbud_j.js +0 -1
  352. package/dist-web/assets/index-LLaxWDbg.js +0 -1
  353. package/dist-web/assets/index-XOpAvr0E.js +0 -13
  354. package/dist-web/assets/index-lkaAPBmM.js +0 -6
  355. package/dist-web/assets/index-pUkuW0EP.js +0 -1
  356. package/dist-web/assets/index-sbfqG9cy.js +0 -1
  357. package/dist-web/assets/index-udFbjSlZ.js +0 -2
  358. package/dist-web/assets/index-uwcaE2d7.js +0 -2
  359. package/dist-web/assets/index-yjEPVwyN.js +0 -1
  360. package/dist-web/assets/infoDiagram-5YYISTIA-DUEtO7Ix.js +0 -2
  361. package/dist-web/assets/init-Gi6I4Gst.js +0 -1
  362. package/dist-web/assets/ishikawaDiagram-YF4QCWOH-Ctv84Jbw.js +0 -70
  363. package/dist-web/assets/javascript-qCveANmP.js +0 -1
  364. package/dist-web/assets/journeyDiagram-JHISSGLW-DILNkNlL.js +0 -139
  365. package/dist-web/assets/julia-DuME0IfC.js +0 -1
  366. package/dist-web/assets/kanban-definition-UN3LZRKU-BO7sq2cF.js +0 -89
  367. package/dist-web/assets/katex-C5jXJg4s.js +0 -257
  368. package/dist-web/assets/layout-DO9UvE1P.js +0 -1
  369. package/dist-web/assets/linear-DOC1-cx3.js +0 -1
  370. package/dist-web/assets/livescript-BwQOo05w.js +0 -1
  371. package/dist-web/assets/lua-VAEuO923.js +0 -1
  372. package/dist-web/assets/mathematica-DTrFuWx2.js +0 -1
  373. package/dist-web/assets/mbox-CNhZ1qSd.js +0 -1
  374. package/dist-web/assets/mermaid.core-DqgK5FaN.js +0 -307
  375. package/dist-web/assets/mindmap-definition-RKZ34NQL-BnOJs-M5.js +0 -96
  376. package/dist-web/assets/mllike-CXdrOF99.js +0 -1
  377. package/dist-web/assets/modelica-Dc1JOy9r.js +0 -1
  378. package/dist-web/assets/mscgen-BA5vi2Kp.js +0 -1
  379. package/dist-web/assets/mumps-BT43cFF4.js +0 -1
  380. package/dist-web/assets/nsis-LdVXkNf5.js +0 -1
  381. package/dist-web/assets/ntriples-BfvgReVJ.js +0 -1
  382. package/dist-web/assets/octave-Ck1zUtKM.js +0 -1
  383. package/dist-web/assets/ordinal-Cboi1Yqb.js +0 -1
  384. package/dist-web/assets/oz-BzwKVEFT.js +0 -1
  385. package/dist-web/assets/pascal--L3eBynH.js +0 -1
  386. package/dist-web/assets/perl-CdXCOZ3F.js +0 -1
  387. package/dist-web/assets/pieDiagram-4H26LBE5-CscOm59p.js +0 -30
  388. package/dist-web/assets/pig-CevX1Tat.js +0 -1
  389. package/dist-web/assets/powershell-CFHJl5sT.js +0 -1
  390. package/dist-web/assets/properties-C78fOPTZ.js +0 -1
  391. package/dist-web/assets/protobuf-ChK-085T.js +0 -1
  392. package/dist-web/assets/pug-DukmZTjD.js +0 -1
  393. package/dist-web/assets/puppet-DMA9R1ak.js +0 -1
  394. package/dist-web/assets/python-BuPzkPfP.js +0 -1
  395. package/dist-web/assets/q-pXgVlZs6.js +0 -1
  396. package/dist-web/assets/quadrantDiagram-W4KKPZXB-IVu2Npzf.js +0 -7
  397. package/dist-web/assets/r-DUYO_cvP.js +0 -1
  398. package/dist-web/assets/requirementDiagram-4Y6WPE33-BbDNPPBQ.js +0 -84
  399. package/dist-web/assets/rpm-CTu-6PCP.js +0 -1
  400. package/dist-web/assets/ruby-B2Rjki9n.js +0 -1
  401. package/dist-web/assets/sankeyDiagram-5OEKKPKP-DcjXnlMj.js +0 -40
  402. package/dist-web/assets/scheme-C41bIUwD.js +0 -1
  403. package/dist-web/assets/sequenceDiagram-3UESZ5HK-B_Jw3NhT.js +0 -162
  404. package/dist-web/assets/shell-CjFT_Tl9.js +0 -1
  405. package/dist-web/assets/sieve-C3Gn_uJK.js +0 -1
  406. package/dist-web/assets/simple-mode-GW_nhZxv.js +0 -1
  407. package/dist-web/assets/smalltalk-CnHTOXQT.js +0 -1
  408. package/dist-web/assets/solr-DehyRSwq.js +0 -1
  409. package/dist-web/assets/sparql-DkYu6x3z.js +0 -1
  410. package/dist-web/assets/spreadsheet-BCZA_wO0.js +0 -1
  411. package/dist-web/assets/sql-D0XecflT.js +0 -1
  412. package/dist-web/assets/stateDiagram-AJRCARHV-CyQirMnx.js +0 -1
  413. package/dist-web/assets/stateDiagram-v2-BHNVJYJU-o71gojBr.js +0 -1
  414. package/dist-web/assets/stex-C3f8Ysf7.js +0 -1
  415. package/dist-web/assets/stylus-B533Al4x.js +0 -1
  416. package/dist-web/assets/swift-BzpIVaGY.js +0 -1
  417. package/dist-web/assets/tcl-DVfN8rqt.js +0 -1
  418. package/dist-web/assets/textile-CnDTJFAw.js +0 -1
  419. package/dist-web/assets/tiddlywiki-DO-Gjzrf.js +0 -1
  420. package/dist-web/assets/tiki-DGYXhP31.js +0 -1
  421. package/dist-web/assets/timeline-definition-PNZ67QCA-0X5ctUMy.js +0 -120
  422. package/dist-web/assets/toml-Bm5Em-hy.js +0 -1
  423. package/dist-web/assets/troff-wAsdV37c.js +0 -1
  424. package/dist-web/assets/ttcn-CfJYG6tj.js +0 -1
  425. package/dist-web/assets/ttcn-cfg-B9xdYoR4.js +0 -1
  426. package/dist-web/assets/turtle-B1tBg_DP.js +0 -1
  427. package/dist-web/assets/vb-CmGdzxic.js +0 -1
  428. package/dist-web/assets/vbscript-BuJXcnF6.js +0 -1
  429. package/dist-web/assets/velocity-D8B20fx6.js +0 -1
  430. package/dist-web/assets/vennDiagram-CIIHVFJN-BbO0uHQQ.js +0 -34
  431. package/dist-web/assets/verilog-C6RDOZhf.js +0 -1
  432. package/dist-web/assets/vhdl-lSbBsy5d.js +0 -1
  433. package/dist-web/assets/wardley-L42UT6IY-maQQ80J4.js +0 -173
  434. package/dist-web/assets/wardleyDiagram-YWT4CUSO-BIswUO4D.js +0 -78
  435. package/dist-web/assets/webidl-ZXfAyPTL.js +0 -1
  436. package/dist-web/assets/xquery-CQfU5ijd.js +0 -1
  437. package/dist-web/assets/xychartDiagram-2RQKCTM6-DUBe_cWp.js +0 -7
  438. package/dist-web/assets/yacas-BJ4BC0dw.js +0 -1
  439. package/dist-web/assets/z80-Hz9HOZM7.js +0 -1
package/README.md CHANGED
@@ -157,6 +157,20 @@ npx strikethroo serve
157
157
 
158
158
  This will open a web page that will help you navigate your plans and their tasks, present or archived.
159
159
 
160
+ By default the viewer listens only on `127.0.0.1:4317`, so it is reachable from the same machine and nowhere else. Two flags change where it listens:
161
+
162
+ | Flag | Default | Purpose |
163
+ |------|---------|---------|
164
+ | `--host <ip>` | `127.0.0.1` | IP address to bind. Use `0.0.0.0` (or `::` for IPv6 too) to reach the viewer from another machine, for example from your workstation when Strikethroo runs in a headless VM. Only IP addresses are accepted. |
165
+ | `--port <n>` | `4317` | Port to bind. |
166
+
167
+ ```shell
168
+ # Inside the VM: listen on every interface and skip opening a browser
169
+ npx strikethroo serve --host 0.0.0.0 --no-open
170
+ ```
171
+
172
+ Then browse to the VM's IP address, for example `http://192.168.122.10:4317`; `serve` prints every address it answers on. Hostnames such as `myvm.local` are refused, so use the IP address. **Binding a network address gives anyone who can reach that port full access to the workspace**, including editing the hooks and configuration your agents run with, and `serve` prints a warning when you do it. Use it only on a network you trust, such as a VM's host-only or NAT network. If you can SSH into the machine, a tunnel (`ssh -L 4317:127.0.0.1:4317 <vm>`) keeps the default loopback bind. See the [CLI reference](https://strikethroo.canpicasoft.com/cli-reference.html#reaching-the-viewer-from-another-machine) for details.
173
+
160
174
  ## Check the workspace
161
175
 
162
176
  ```shell
package/dist/cli.js CHANGED
@@ -6,8 +6,13 @@
6
6
  * This file contains the main CLI setup using Commander.js
7
7
  * Handles command-line argument parsing and routing to appropriate handlers
8
8
  */
9
+ var __importDefault = (this && this.__importDefault) || function (mod) {
10
+ return (mod && mod.__esModule) ? mod : { "default": mod };
11
+ };
9
12
  Object.defineProperty(exports, "__esModule", { value: true });
10
13
  const commander_1 = require("commander");
14
+ const chalk_1 = __importDefault(require("chalk"));
15
+ const net_1 = require("net");
11
16
  const index_1 = require("./index");
12
17
  const root_1 = require("./serve/root");
13
18
  const server_1 = require("./serve/server");
@@ -77,11 +82,16 @@ exportCommand
77
82
  program
78
83
  .command('serve')
79
84
  .description('Serve the workspace as a local web app (static SPA, JSON API, SSE change stream)')
85
+ .option('--host <ip>', 'IP address to bind (0.0.0.0 or :: for all interfaces)', '127.0.0.1')
80
86
  .option('--port <n>', 'port to bind', '4317')
81
87
  .option('--no-open', 'do not open the browser on start')
82
88
  .option('--workspace <path>', 'override workspace root discovery')
83
89
  .action(async (opts) => {
84
90
  try {
91
+ if ((0, net_1.isIP)(opts.host) === 0) {
92
+ console.error(`Invalid --host "${opts.host}": use an IP address such as 127.0.0.1, 0.0.0.0, or ::.`);
93
+ process.exit(1);
94
+ }
85
95
  const resolved = (0, root_1.resolveWorkspaceRoot)({ workspace: opts.workspace });
86
96
  if ((0, root_1.isResolveError)(resolved)) {
87
97
  console.error(resolved.error);
@@ -89,11 +99,19 @@ program
89
99
  }
90
100
  const handle = await (0, server_1.startServer)({
91
101
  root: resolved.root,
102
+ host: opts.host,
92
103
  port: Number(opts.port),
93
104
  open: opts.open,
94
105
  assetsDir: (0, server_1.defaultAssetsDir)(),
95
106
  });
96
107
  console.log(`Serving ${handle.url}`);
108
+ if (handle.exposed) {
109
+ console.error(chalk_1.default.yellow.bold('\nWarning: the viewer is reachable from the network.\n') +
110
+ chalk_1.default.yellow('Anyone who can reach this address and port can read the workspace and edit its\n' +
111
+ 'hooks, templates, and config.yaml, which agents run with their permissions.\n' +
112
+ 'Use it only on a trusted network, such as a VM host-only bridge.\n' +
113
+ `Reachable at: ${handle.reachableUrls.join(', ')}\n`));
114
+ }
97
115
  }
98
116
  catch (error) {
99
117
  console.error(`Failed to start serve: ${error instanceof Error ? error.message : String(error)}`);
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";;AACA;;;;;GAKG;;AAEH,yCAAoC;AACpC,mCAA+B;AAE/B,uCAAoE;AACpE,2CAA+D;AAC/D,qDAAiD;AACjD,sDAA2D;AAE3D,qCAAkC;AAElC,MAAM,OAAO,GAAG,IAAI,mBAAO,EAAE,CAAC;AAE9B,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,qCAAqC,CAAC,CAAC;AAEhG,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,sCAAsC,CAAC;KACnD,MAAM,CACL,qBAAqB,EACrB,8IAA8I,CAC/I;KACA,MAAM,CACL,gCAAgC,EAChC,uEAAuE,CACxE;KACA,MAAM,CAAC,SAAS,EAAE,6CAA6C,CAAC;KAChE,MAAM,CACL,mBAAmB,EACnB,8FAA8F,CAC/F;KACA,MAAM,CAAC,KAAK,EAAE,OAAoB,EAAE,EAAE;IACrC,IAAI,CAAC;QACH,2BAA2B;QAC3B,MAAM,MAAM,GAAG,MAAM,IAAA,YAAI,EAAC,OAAO,CAAC,CAAC;QAEnC,6CAA6C;QAC7C,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACnB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,qBAAqB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAC7F,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,mFAAmF,CAAC;KAChG,MAAM,CACL,qBAAqB,EACrB,mIAAmI,CACpI;KACA,MAAM,CACL,gCAAgC,EAChC,6EAA6E,CAC9E;KACA,MAAM,CAAC,SAAS,EAAE,6CAA6C,CAAC;KAChE,MAAM,CACL,mBAAmB,EACnB,8FAA8F,CAC/F;KACA,MAAM,CAAC,KAAK,EAAE,OAAsB,EAAE,EAAE;IACvC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,IAAA,eAAM,EAAC,OAAO,CAAC,CAAC;QACrC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACvC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,qBAAqB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAC7F,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,MAAM,aAAa,GAAG,OAAO;KAC1B,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,gDAAgD,CAAC,CAAC;AAEjE,aAAa;KACV,OAAO,CAAC,SAAS,CAAC;KAClB,WAAW,CAAC,8DAA8D,CAAC;KAC3E,cAAc,CACb,+BAA+B,EAC/B,oFAAoF,CACrF;KACA,MAAM,CAAC,KAAK,EAAE,OAAyC,EAAE,EAAE;IAC1D,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,IAAA,8BAAa,EAAC,EAAE,oBAAoB,EAAE,OAAO,CAAC,oBAAoB,EAAE,CAAC,CAAC;QAC3F,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACvC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,qBAAqB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAC7F,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,OAAO,CAAC;KAChB,WAAW,CAAC,kFAAkF,CAAC;KAC/F,MAAM,CAAC,YAAY,EAAE,cAAc,EAAE,MAAM,CAAC;KAC5C,MAAM,CAAC,WAAW,EAAE,kCAAkC,CAAC;KACvD,MAAM,CAAC,oBAAoB,EAAE,mCAAmC,CAAC;KACjE,MAAM,CAAC,KAAK,EAAE,IAAyD,EAAE,EAAE;IAC1E,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,IAAA,2BAAoB,EAAC,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;QACrE,IAAI,IAAA,qBAAc,EAAC,QAAQ,CAAC,EAAE,CAAC;YAC7B,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;YAC9B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,IAAA,oBAAW,EAAC;YAC/B,IAAI,EAAE,QAAQ,CAAC,IAAI;YACnB,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;YACvB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,SAAS,EAAE,IAAA,yBAAgB,GAAE;SAC9B,CAAC,CAAC;QACH,OAAO,CAAC,GAAG,CAAC,WAAW,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC;IACvC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CACX,0BAA0B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CACnF,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,8EAA8E;AAC9E,MAAM,aAAa,GAAG,CAAC,OAAgB,EAAU,EAAE,CACjD,GAAG,OAAO,CAAC,KAAK,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;AAEnF,OAAO;KACJ,OAAO,CAAC,UAAU,CAAC;KACnB,WAAW,CAAC,8DAA8D,CAAC;KAC3E,MAAM,CAAC,oBAAoB,EAAE,mCAAmC,CAAC;KACjE,MAAM,CAAC,QAAQ,EAAE,4CAA4C,CAAC;KAC9D,MAAM,CAAC,CAAC,IAA4C,EAAE,EAAE;IACvD,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,IAAA,2BAAoB,EAAC,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;QACrE,IAAI,IAAA,qBAAc,EAAC,QAAQ,CAAC,EAAE,CAAC;YAC7B,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;YAC9B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,MAAM,MAAM,GAAG,IAAA,6BAAiB,EAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAEhD,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACd,mEAAmE;YACnE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAC/C,CAAC;aAAM,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxC,OAAO,CAAC,GAAG,CAAC,uCAAuC,CAAC,CAAC;QACvD,CAAC;aAAM,CAAC;YACN,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;gBACtC,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC;YACtC,CAAC;YACD,OAAO,CAAC,GAAG,CACT,KAAK,MAAM,CAAC,QAAQ,CAAC,MAAM,WAAW,MAAM,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,CACjF,CAAC;QACJ,CAAC;QAED,kEAAkE;QAClE,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACnD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CACX,iCAAiC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAC1F,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,sCAAsC;AACtC,OAAO,CAAC,EAAE,CAAC,WAAW,EAAE,KAAK,EAAC,QAAQ,EAAC,EAAE;IACvC,OAAO,CAAC,KAAK,CAAC,oBAAoB,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IACjD,OAAO,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAAC;IACpD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC;AAEH,+BAA+B;AAC/B,OAAO,CAAC,KAAK,EAAE,CAAC;AAEhB,sCAAsC;AACtC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAClC,OAAO,CAAC,UAAU,EAAE,CAAC;IACrB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -12,6 +12,12 @@
12
12
  */
13
13
  import { CommandResult } from './types';
14
14
  import { ProfileManifest } from './profiles';
15
+ /**
16
+ * Printed after every successful export. The package is a verbatim copy of
17
+ * local configuration; nothing is detected or redacted, so the user has to
18
+ * read it before handing it to anyone.
19
+ */
20
+ export declare const EXPORT_SHARING_NOTICE: string;
15
21
  /**
16
22
  * Manifest fields collected from the user; `schema_version` is stamped by the
17
23
  * export itself
@@ -1 +1 @@
1
- {"version":3,"file":"export-profile.d.ts","sourceRoot":"","sources":["../src/export-profile.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAOH,OAAO,EAAE,aAAa,EAAgB,MAAM,SAAS,CAAC;AACtD,OAAO,EACL,eAAe,EAIhB,MAAM,YAAY,CAAC;AAYpB;;;GAGG;AACH,MAAM,MAAM,sBAAsB,GAAG,IAAI,CAAC,eAAe,EAAE,gBAAgB,CAAC,CAAC;AAE7E;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC;;OAEG;IACH,oBAAoB,EAAE,MAAM,CAAC;IAC7B;;;OAGG;IACH,QAAQ,CAAC,EAAE,sBAAsB,CAAC;IAClC;;OAEG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAWD;;;;;;;;;;GAUG;AACH,wBAAsB,aAAa,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,aAAa,CAAC,CAiEzF"}
1
+ {"version":3,"file":"export-profile.d.ts","sourceRoot":"","sources":["../src/export-profile.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAOH,OAAO,EAAE,aAAa,EAAgB,MAAM,SAAS,CAAC;AACtD,OAAO,EACL,eAAe,EAIhB,MAAM,YAAY,CAAC;AAMpB;;;;GAIG;AACH,eAAO,MAAM,qBAAqB,QAG6B,CAAC;AAQhE;;;GAGG;AACH,MAAM,MAAM,sBAAsB,GAAG,IAAI,CAAC,eAAe,EAAE,gBAAgB,CAAC,CAAC;AAE7E;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC;;OAEG;IACH,oBAAoB,EAAE,MAAM,CAAC;IAC7B;;;OAGG;IACH,QAAQ,CAAC,EAAE,sBAAsB,CAAC;IAClC;;OAEG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAWD;;;;;;;;;;GAUG;AACH,wBAAsB,aAAa,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,aAAa,CAAC,CAsEzF"}
@@ -48,6 +48,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
48
48
  return (mod && mod.__esModule) ? mod : { "default": mod };
49
49
  };
50
50
  Object.defineProperty(exports, "__esModule", { value: true });
51
+ exports.EXPORT_SHARING_NOTICE = void 0;
51
52
  exports.exportProfile = exportProfile;
52
53
  const fs = __importStar(require("fs-extra"));
53
54
  const path = __importStar(require("path"));
@@ -59,6 +60,14 @@ const profiles_1 = require("./profiles");
59
60
  const root_1 = require("./serve/root");
60
61
  const TERM_WIDTH = 80;
61
62
  const DIVIDER = '─'.repeat(TERM_WIDTH);
63
+ /**
64
+ * Printed after every successful export. The package is a verbatim copy of
65
+ * local configuration; nothing is detected or redacted, so the user has to
66
+ * read it before handing it to anyone.
67
+ */
68
+ exports.EXPORT_SHARING_NOTICE = ' Review the package before sharing it. It contains config/config.yaml and the\n' +
69
+ ' hooks, templates, and shared files verbatim, including machine-local paths and\n' +
70
+ ' harness CLI arguments. Nothing is detected or redacted.\n';
62
71
  /**
63
72
  * Kebab-case: lowercase alphanumeric segments separated by single hyphens.
64
73
  * Mirrors the manifest contract enforced by `validateProfilePackage`.
@@ -94,6 +103,9 @@ async function exportProfile(options) {
94
103
  throw new types_1.ProfileError(`Cannot export a strikethroo profile: workspace has no config/ directory ` +
95
104
  `(expected ${workspaceConfigDir}). Re-run \`npx strikethroo init\` to restore it.`);
96
105
  }
106
+ // A package must carry its own copies: refuse links before prompting or
107
+ // touching the destination.
108
+ await assertNoSymbolicLinks(workspaceConfigDir);
97
109
  const destination = path.resolve(options.destinationDirectory);
98
110
  await assertDestinationUsable(destination);
99
111
  console.log(chalk_1.default.bold.white('\nStrikethroo Profile Export'));
@@ -114,6 +126,7 @@ async function exportProfile(options) {
114
126
  await (0, profiles_1.validateProfilePackage)(destination);
115
127
  console.log(` ${chalk_1.default.green('✓')} Validated package against the profile contract`);
116
128
  console.log(`\n${chalk_1.default.green('✓')} strikethroo profile '${manifest.name}' exported to ${destination}\n`);
129
+ console.log(chalk_1.default.yellow(exports.EXPORT_SHARING_NOTICE));
117
130
  console.log(chalk_1.default.gray(' Publish it by pushing the folder to a git host, or import it directly with\n' +
118
131
  ` \`npx strikethroo init --harnesses <list> --profile ${destination}\`.\n`));
119
132
  return {
@@ -166,12 +179,41 @@ async function assertDestinationUsable(destination) {
166
179
  */
167
180
  async function copyConfigSurface(sourceConfigDir, destConfigDir) {
168
181
  await fs.copy(sourceConfigDir, destConfigDir, {
169
- filter: src => {
170
- const rel = path.relative(sourceConfigDir, src);
171
- return rel !== 'schemas' && !rel.startsWith(`schemas${path.sep}`);
172
- },
182
+ filter: src => !isExcludedFromExport(path.relative(sourceConfigDir, src)),
173
183
  });
174
184
  }
185
+ /**
186
+ * Whether a `config/`-relative path is the CLI-owned `schemas/` subtree
187
+ * @param rel - Path relative to the workspace `config/` directory
188
+ */
189
+ function isExcludedFromExport(rel) {
190
+ return rel === 'schemas' || rel.startsWith(`schemas${path.sep}`);
191
+ }
192
+ /**
193
+ * Refuse to package a `config/` tree that contains a symbolic link anywhere
194
+ * in its exported surface. The walk uses directory entry types (lstat
195
+ * semantics), so a link is seen as a link rather than as its target.
196
+ *
197
+ * @param configDir - Workspace `config/` directory
198
+ */
199
+ async function assertNoSymbolicLinks(configDir) {
200
+ const walk = async (dir) => {
201
+ for (const entry of await fs.readdir(dir, { withFileTypes: true })) {
202
+ const fullPath = path.join(dir, entry.name);
203
+ const rel = path.relative(configDir, fullPath);
204
+ if (isExcludedFromExport(rel))
205
+ continue;
206
+ if (entry.isSymbolicLink()) {
207
+ throw new types_1.ProfileError(`Cannot export a strikethroo profile: config/${rel} is a symbolic link. A package ` +
208
+ `must carry its own copies of every file, so replace the link with a regular ` +
209
+ `file or directory (or remove it) and re-run the export.`);
210
+ }
211
+ if (entry.isDirectory())
212
+ await walk(fullPath);
213
+ }
214
+ };
215
+ await walk(configDir);
216
+ }
175
217
  /**
176
218
  * Assemble the manifest, stamping the schema version and omitting empty
177
219
  * optional fields so the emitted YAML stays minimal
@@ -1 +1 @@
1
- {"version":3,"file":"export-profile.js","sourceRoot":"","sources":["../src/export-profile.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"export-profile.js","sourceRoot":"","sources":["../src/export-profile.ts"],"names":[],"mappings":"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"}
@@ -23,13 +23,23 @@ export declare function calculateFileHash(filePath: string): Promise<string>;
23
23
  /**
24
24
  * Load metadata from .init-metadata.json file
25
25
  * @param metadataPath - Absolute path to metadata file
26
- * @returns InitMetadata object or null if file doesn't exist or is invalid
26
+ * @returns InitMetadata object, or null when the file is absent or its JSON is
27
+ * not usable metadata (first-time init)
28
+ * @throws FileSystemError when the file or a workspace parent is a symbolic
29
+ * link or otherwise not a regular entry; this is never treated as first-time
30
+ * init, so a link cannot bypass conflict protection
27
31
  */
28
32
  export declare function loadMetadata(metadataPath: string): Promise<InitMetadata | null>;
29
33
  /**
30
34
  * Save metadata to .init-metadata.json file
35
+ *
36
+ * Writes atomically through the containment helper with the workspace
37
+ * directory as the root: an exclusive random temp file renamed over the
38
+ * target, never through a link.
39
+ *
31
40
  * @param metadataPath - Absolute path to metadata file
32
41
  * @param metadata - InitMetadata object to save
42
+ * @throws FileSystemError when the path is a link or the write is refused
33
43
  */
34
44
  export declare function saveMetadata(metadataPath: string, metadata: InitMetadata): Promise<void>;
35
45
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"metadata.d.ts","sourceRoot":"","sources":["../src/metadata.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAEvC;;;;;;;GAOG;AACH,eAAO,MAAM,gCAAgC,IAAI,CAAC;AAElD;;;;GAIG;AACH,wBAAsB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CASzE;AAED;;;;GAIG;AACH,wBAAsB,YAAY,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CA0BrF;AAED;;;;GAIG;AACH,wBAAsB,YAAY,CAAC,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAG9F;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,CAK1C"}
1
+ {"version":3,"file":"metadata.d.ts","sourceRoot":"","sources":["../src/metadata.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,EAAmB,YAAY,EAAE,MAAM,SAAS,CAAC;AAGxD;;;;;;;GAOG;AACH,eAAO,MAAM,gCAAgC,IAAI,CAAC;AAElD;;;;GAIG;AACH,wBAAsB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CASzE;AAsDD;;;;;;;;GAQG;AACH,wBAAsB,YAAY,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CA2BrF;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,YAAY,CAAC,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAa9F;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,CAK1C"}
package/dist/metadata.js CHANGED
@@ -47,6 +47,8 @@ exports.getPackageVersion = getPackageVersion;
47
47
  const crypto = __importStar(require("crypto"));
48
48
  const fs = __importStar(require("fs-extra"));
49
49
  const path = __importStar(require("path"));
50
+ const types_1 = require("./types");
51
+ const safe_fs_1 = require("./skill-scripts/shared/safe-fs");
50
52
  /**
51
53
  * Current workspace schema version baked into this CLI build.
52
54
  *
@@ -70,19 +72,71 @@ async function calculateFileHash(filePath) {
70
72
  stream.on('error', err => reject(err));
71
73
  });
72
74
  }
75
+ /**
76
+ * Refuse a metadata path whose file, or either parent below the project
77
+ * (`.ai/strikethroo` and `.ai`), is a symbolic link.
78
+ *
79
+ * The containment helper canonicalizes its root, so a link at or above the
80
+ * root would be followed silently; those two parents are checked here. The
81
+ * check runs before any read or write so a linked workspace fails before a
82
+ * single template is copied through it. Missing entries are fine: they are
83
+ * what a first-time init looks like.
84
+ */
85
+ async function assertMetadataPathUnlinked(metadataPath) {
86
+ const workspaceDir = path.dirname(metadataPath);
87
+ const candidates = [
88
+ [path.dirname(workspaceDir), 'directory'],
89
+ [workspaceDir, 'directory'],
90
+ [metadataPath, 'file'],
91
+ ];
92
+ for (const [candidate, kind] of candidates) {
93
+ let stats;
94
+ try {
95
+ stats = await fs.lstat(candidate);
96
+ }
97
+ catch (error) {
98
+ const code = error.code;
99
+ if (code === 'ENOENT' || code === 'ENOTDIR')
100
+ return;
101
+ throw new types_1.FileSystemError(`Cannot inspect ${candidate}: ${error instanceof Error ? error.message : String(error)}`);
102
+ }
103
+ if (stats.isSymbolicLink()) {
104
+ throw new types_1.FileSystemError(`${candidate} is a symbolic link. Strikethroo reads and writes workspace metadata only ` +
105
+ `through regular directories and files, so a link here cannot be trusted. Replace the ` +
106
+ `symbolic link with a regular ${kind} (or remove it) and re-run the command.`);
107
+ }
108
+ }
109
+ }
110
+ function describeRefusal(metadataPath, refusal) {
111
+ switch (refusal.error) {
112
+ case 'symlink':
113
+ return (`${metadataPath} is a symbolic link. Replace it with a regular file (or remove it) ` +
114
+ `and re-run the command.`);
115
+ case 'not-a-file':
116
+ return `${metadataPath} is not a regular file. Remove it and re-run the command.`;
117
+ default:
118
+ return `Cannot access ${metadataPath}: ${refusal.message}`;
119
+ }
120
+ }
73
121
  /**
74
122
  * Load metadata from .init-metadata.json file
75
123
  * @param metadataPath - Absolute path to metadata file
76
- * @returns InitMetadata object or null if file doesn't exist or is invalid
124
+ * @returns InitMetadata object, or null when the file is absent or its JSON is
125
+ * not usable metadata (first-time init)
126
+ * @throws FileSystemError when the file or a workspace parent is a symbolic
127
+ * link or otherwise not a regular entry; this is never treated as first-time
128
+ * init, so a link cannot bypass conflict protection
77
129
  */
78
130
  async function loadMetadata(metadataPath) {
79
- try {
80
- const exists = await fs.pathExists(metadataPath);
81
- if (!exists) {
131
+ await assertMetadataPathUnlinked(metadataPath);
132
+ const read = (0, safe_fs_1.readContainedFile)(path.dirname(metadataPath), path.basename(metadataPath));
133
+ if ('error' in read) {
134
+ if (read.error === 'not-found')
82
135
  return null;
83
- }
84
- const content = await fs.readFile(metadataPath, 'utf-8');
85
- const metadata = JSON.parse(content);
136
+ throw new types_1.FileSystemError(describeRefusal(metadataPath, read));
137
+ }
138
+ try {
139
+ const metadata = JSON.parse(read.content);
86
140
  // Validate metadata structure
87
141
  if (!metadata.version || !metadata.timestamp || !metadata.files) {
88
142
  return null;
@@ -94,19 +148,29 @@ async function loadMetadata(metadataPath) {
94
148
  return metadata;
95
149
  }
96
150
  catch {
97
- // If metadata is corrupted or invalid, return null
98
- // This treats the situation as first-time init
151
+ // Corrupted or invalid JSON is treated as first-time init
99
152
  return null;
100
153
  }
101
154
  }
102
155
  /**
103
156
  * Save metadata to .init-metadata.json file
157
+ *
158
+ * Writes atomically through the containment helper with the workspace
159
+ * directory as the root: an exclusive random temp file renamed over the
160
+ * target, never through a link.
161
+ *
104
162
  * @param metadataPath - Absolute path to metadata file
105
163
  * @param metadata - InitMetadata object to save
164
+ * @throws FileSystemError when the path is a link or the write is refused
106
165
  */
107
166
  async function saveMetadata(metadataPath, metadata) {
108
- await fs.ensureDir(path.dirname(metadataPath));
109
- await fs.writeFile(metadataPath, JSON.stringify(metadata, null, 2), 'utf-8');
167
+ await assertMetadataPathUnlinked(metadataPath);
168
+ const workspaceDir = path.dirname(metadataPath);
169
+ await fs.ensureDir(workspaceDir);
170
+ const written = await (0, safe_fs_1.writeFileAtomic)(workspaceDir, path.basename(metadataPath), JSON.stringify(metadata, null, 2));
171
+ if ('error' in written) {
172
+ throw new types_1.FileSystemError(describeRefusal(metadataPath, written));
173
+ }
110
174
  }
111
175
  /**
112
176
  * Get the current package version from package.json
@@ -1 +1 @@
1
- {"version":3,"file":"metadata.js","sourceRoot":"","sources":["../src/metadata.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsBH,8CASC;AAOD,oCA0BC;AAOD,oCAGC;AAMD,8CAKC;AAnFD,+CAAiC;AACjC,6CAA+B;AAC/B,2CAA6B;AAG7B;;;;;;;GAOG;AACU,QAAA,gCAAgC,GAAG,CAAC,CAAC;AAElD;;;;GAIG;AACI,KAAK,UAAU,iBAAiB,CAAC,QAAgB;IACtD,MAAM,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;IACzC,MAAM,MAAM,GAAG,EAAE,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IAE7C,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;QAC7C,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACpD,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;IACzC,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;;GAIG;AACI,KAAK,UAAU,YAAY,CAAC,YAAoB;IACrD,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;QACjD,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;QACzD,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAiB,CAAC;QAErD,8BAA8B;QAC9B,IAAI,CAAC,QAAQ,CAAC,OAAO,IAAI,CAAC,QAAQ,CAAC,SAAS,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;YAChE,OAAO,IAAI,CAAC;QACd,CAAC;QAED,yEAAyE;QACzE,IAAI,OAAO,QAAQ,CAAC,sBAAsB,KAAK,QAAQ,EAAE,CAAC;YACxD,QAAQ,CAAC,sBAAsB,GAAG,CAAC,CAAC;QACtC,CAAC;QAED,OAAO,QAAQ,CAAC;IAClB,CAAC;IAAC,MAAM,CAAC;QACP,mDAAmD;QACnD,+CAA+C;QAC/C,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;;GAIG;AACI,KAAK,UAAU,YAAY,CAAC,YAAoB,EAAE,QAAsB;IAC7E,MAAM,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC;IAC/C,MAAM,EAAE,CAAC,SAAS,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;AAC/E,CAAC;AAED;;;GAGG;AACH,SAAgB,iBAAiB;IAC/B,oEAAoE;IACpE,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC;IACnE,MAAM,WAAW,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;IAC7C,OAAO,WAAW,CAAC,OAAO,CAAC;AAC7B,CAAC"}
1
+ {"version":3,"file":"metadata.js","sourceRoot":"","sources":["../src/metadata.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"profiles.d.ts","sourceRoot":"","sources":["../src/profiles.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAYH;;;;;;GAMG;AACH,eAAO,MAAM,+BAA+B,IAAI,CAAC;AAEjD;;;;;GAKG;AACH,MAAM,WAAW,kBAAkB;IACjC;;OAEG;IACH,IAAI,EAAE,OAAO,GAAG,MAAM,CAAC;IACvB;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IACb;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B;;OAEG;IACH,cAAc,EAAE,MAAM,CAAC;IACvB;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IACb;;OAEG;IACH,WAAW,EAAE,MAAM,CAAC;IACpB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB;;OAEG;IACH,QAAQ,CAAC,EAAE,kBAAkB,EAAE,CAAC;IAChC;;OAEG;IACH,UAAU,CAAC,EAAE,kBAAkB,EAAE,CAAC;IAClC;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAiBD;;;;;;;;;;;GAWG;AACH,wBAAsB,sBAAsB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CAIzF;AAaD;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC;;OAEG;IACH,IAAI,EAAE,OAAO,GAAG,KAAK,CAAC;IACtB;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC;;;OAGG;IACH,UAAU,EAAE,MAAM,CAAC;IACnB;;OAEG;IACH,QAAQ,EAAE,eAAe,CAAC;IAC1B;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC9B;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAsB,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,CAAC,CA6BxF;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAsB,oBAAoB,CACxC,YAAY,EAAE,MAAM,EACpB,kBAAkB,EAAE,MAAM,GACzB,OAAO,CAAC,qBAAqB,CAAC,CAsBhC"}
1
+ {"version":3,"file":"profiles.d.ts","sourceRoot":"","sources":["../src/profiles.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAYH;;;;;;GAMG;AACH,eAAO,MAAM,+BAA+B,IAAI,CAAC;AAEjD;;;;;GAKG;AACH,MAAM,WAAW,kBAAkB;IACjC;;OAEG;IACH,IAAI,EAAE,OAAO,GAAG,MAAM,CAAC;IACvB;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IACb;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B;;OAEG;IACH,cAAc,EAAE,MAAM,CAAC;IACvB;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IACb;;OAEG;IACH,WAAW,EAAE,MAAM,CAAC;IACpB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB;;OAEG;IACH,QAAQ,CAAC,EAAE,kBAAkB,EAAE,CAAC;IAChC;;OAEG;IACH,UAAU,CAAC,EAAE,kBAAkB,EAAE,CAAC;IAClC;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAiBD;;;;;;;;;;;GAWG;AACH,wBAAsB,sBAAsB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CAIzF;AAaD;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC;;OAEG;IACH,IAAI,EAAE,OAAO,GAAG,KAAK,CAAC;IACtB;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC;;;OAGG;IACH,UAAU,EAAE,MAAM,CAAC;IACnB;;OAEG;IACH,QAAQ,EAAE,eAAe,CAAC;IAC1B;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC9B;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAsB,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAuCxF;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAsB,oBAAoB,CACxC,YAAY,EAAE,MAAM,EACpB,kBAAkB,EAAE,MAAM,GACzB,OAAO,CAAC,qBAAqB,CAAC,CAsBhC"}
package/dist/profiles.js CHANGED
@@ -139,6 +139,13 @@ async function resolveProfileSource(value) {
139
139
  }
140
140
  return { kind: 'local', location: localPath };
141
141
  }
142
+ // Anything else reaches `git clone` as an argument, so refuse values git
143
+ // would read as an option even though the clone passes `--` as well.
144
+ if (value.startsWith('-')) {
145
+ throw new types_1.ProfileError(`Profile source must not start with "-": '${value}' is not an existing directory and ` +
146
+ `would be handed to git as an option. Use a package folder path, a <user>/<repo> ` +
147
+ `GitHub shorthand, or a git URL.`);
148
+ }
142
149
  if (GITHUB_SHORTHAND_PATTERN.test(value)) {
143
150
  return { kind: 'git', location: `https://github.com/${value}.git` };
144
151
  }
@@ -197,8 +204,9 @@ async function cloneRemoteProfile(url, tempDirs) {
197
204
  const cloneDir = await makeTempDir();
198
205
  tempDirs.push(cloneDir);
199
206
  try {
200
- // git clones into an existing empty directory without complaint.
201
- await execFileAsync('git', ['clone', '--depth', '1', url, cloneDir]);
207
+ // git clones into an existing empty directory without complaint. `--`
208
+ // ends option parsing so the source can never be read as a git option.
209
+ await execFileAsync('git', ['clone', '--depth', '1', '--', url, cloneDir]);
202
210
  }
203
211
  catch (error) {
204
212
  if (isEnoentError(error)) {
@@ -279,8 +287,22 @@ function isEnoentError(error) {
279
287
  */
280
288
  async function readManifest(profileDir) {
281
289
  const manifestPath = path.join(profileDir, 'profile.yaml');
282
- if (!(await fs.pathExists(manifestPath))) {
283
- throw new types_1.ProfileError(`Profile manifest not found: expected profile.yaml at the package root (${profileDir})`);
290
+ let manifestStat;
291
+ try {
292
+ manifestStat = await fs.lstat(manifestPath);
293
+ }
294
+ catch (error) {
295
+ if (isEnoentError(error)) {
296
+ throw new types_1.ProfileError(`Profile manifest not found: expected profile.yaml at the package root (${profileDir})`);
297
+ }
298
+ throw new types_1.ProfileError(`Failed to read profile.yaml in ${profileDir}: ${formatCause(error)}`, error);
299
+ }
300
+ if (manifestStat.isSymbolicLink()) {
301
+ throw new types_1.ProfileError(`Profile package entry profile.yaml is a symbolic link (${manifestPath}). ` +
302
+ `Replace it with a regular file; a package must carry its own manifest.`);
303
+ }
304
+ if (!manifestStat.isFile()) {
305
+ throw new types_1.ProfileError(`Profile package entry profile.yaml must be a regular file (${manifestPath})`);
284
306
  }
285
307
  let rawContent;
286
308
  try {
@@ -443,16 +465,27 @@ function validateRequirementList(data, field) {
443
465
  */
444
466
  async function validateConfigSurface(profileDir) {
445
467
  const configDir = path.join(profileDir, 'config');
446
- if (!(await fs.pathExists(configDir))) {
447
- throw new types_1.ProfileError(`Profile package is missing its config/ directory: expected ${configDir}`);
468
+ let configStat;
469
+ try {
470
+ configStat = await fs.lstat(configDir);
471
+ }
472
+ catch (error) {
473
+ if (isEnoentError(error)) {
474
+ throw new types_1.ProfileError(`Profile package is missing its config/ directory: expected ${configDir}`);
475
+ }
476
+ throw new types_1.ProfileError(`Failed to inspect profile package config/ at ${configDir}: ${formatCause(error)}`, error);
477
+ }
478
+ if (configStat.isSymbolicLink()) {
479
+ throw new types_1.ProfileError(`Profile package entry config/ is a symbolic link (${configDir}). Replace it with a ` +
480
+ `regular directory; a package must carry its own copies of every file.`);
448
481
  }
449
- const configStat = await fs.stat(configDir);
450
482
  if (!configStat.isDirectory()) {
451
483
  throw new types_1.ProfileError(`Profile package config/ must be a directory: ${configDir}`);
452
484
  }
453
485
  const rootEntries = await readEntries(configDir);
454
486
  for (const entry of rootEntries) {
455
487
  rejectUnsafeSegment(entry.name, entry.name);
488
+ rejectSymbolicLink(entry, entry.name);
456
489
  if (entry.isFile()) {
457
490
  if (!ALLOWED_CONFIG_ROOT_FILES.includes(entry.name)) {
458
491
  throw new types_1.ProfileError(`Profile package contains a file outside the allowed config surface: ` +
@@ -484,6 +517,7 @@ async function validateMarkdownOnlyDir(dirPath, relDir) {
484
517
  for (const entry of entries) {
485
518
  const relPath = `${relDir}/${entry.name}`;
486
519
  rejectUnsafeSegment(entry.name, relPath);
520
+ rejectSymbolicLink(entry, relPath);
487
521
  if (entry.isDirectory()) {
488
522
  throw new types_1.ProfileError(`Profile package contains a nested directory outside the allowed config surface: ` +
489
523
  `config/${relPath}/ (config/${relDir}/ may only contain .md files)`);
@@ -507,6 +541,17 @@ async function readEntries(dirPath) {
507
541
  throw new types_1.ProfileError(`Failed to read profile package directory ${dirPath}: ${formatCause(error)}`, error);
508
542
  }
509
543
  }
544
+ /**
545
+ * Reject a symbolic link anywhere in the config surface, naming the entry
546
+ * @param entry - Directory entry read with file types
547
+ * @param relPath - Path relative to `config/` for error reporting
548
+ */
549
+ function rejectSymbolicLink(entry, relPath) {
550
+ if (entry.isSymbolicLink()) {
551
+ throw new types_1.ProfileError(`Profile package entry config/${relPath} is a symbolic link. Replace it with a regular ` +
552
+ `file or directory; a package must carry its own copies of every file.`);
553
+ }
554
+ }
510
555
  /**
511
556
  * Reject dotfile, traversal, and separator-bearing entry names
512
557
  * @param segment - Single directory entry name
@@ -1 +1 @@
1
- {"version":3,"file":"profiles.js","sourceRoot":"","sources":["../src/profiles.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"profiles.js","sourceRoot":"","sources":["../src/profiles.ts"],"names":[],"mappings":"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"}
@@ -14,9 +14,12 @@
14
14
  * to the workspace's structured configuration file `config/config.yaml` (the
15
15
  * file behind the Customize section's Config form). In every case the target
16
16
  * file must ALREADY exist (this never creates a new file). When the guards
17
- * pass it overwrites the file content verbatim. It never deletes or renames.
18
- * Expected guard failures are returned as a typed result, not thrown; only an
19
- * unexpected filesystem error surfaces as `fs-error`. Node built-ins only.
17
+ * pass it overwrites the file content verbatim through the shared containment
18
+ * helper, so a symlinked file or directory anywhere below the workspace root
19
+ * (or a non-regular file at the target) is refused as `not-found` rather than
20
+ * followed. It never deletes or renames the target itself. Expected guard
21
+ * failures are returned as a typed result, not thrown; only an unexpected
22
+ * filesystem error surfaces as `fs-error`. Node built-ins only.
20
23
  */
21
24
  /**
22
25
  * Outcome of a {@link writeConfigFile} call. A discriminated union mirroring the
@@ -1 +1 @@
1
- {"version":3,"file":"config-write.d.ts","sourceRoot":"","sources":["../../src/serve/config-write.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAKH;;;;GAIG;AACH,MAAM,MAAM,iBAAiB,GACzB;IAAE,EAAE,EAAE,IAAI,CAAA;CAAE,GACZ;IACE,EAAE,EAAE,KAAK,CAAC;IACV,MAAM,EAAE,cAAc,GAAG,YAAY,GAAG,WAAW,GAAG,UAAU,CAAC;IACjE,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAKN;;;;;;GAMG;AACH,eAAO,MAAM,eAAe,GAC1B,MAAM,MAAM,EACZ,MAAM,MAAM,EACZ,IAAI,MAAM,EACV,SAAS,MAAM,KACd,OAAO,CAAC,iBAAiB,CA6C3B,CAAC"}
1
+ {"version":3,"file":"config-write.d.ts","sourceRoot":"","sources":["../../src/serve/config-write.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAKH;;;;GAIG;AACH,MAAM,MAAM,iBAAiB,GACzB;IAAE,EAAE,EAAE,IAAI,CAAA;CAAE,GACZ;IACE,EAAE,EAAE,KAAK,CAAC;IACV,MAAM,EAAE,cAAc,GAAG,YAAY,GAAG,WAAW,GAAG,UAAU,CAAC;IACjE,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAKN;;;;;;GAMG;AACH,eAAO,MAAM,eAAe,GAC1B,MAAM,MAAM,EACZ,MAAM,MAAM,EACZ,IAAI,MAAM,EACV,SAAS,MAAM,KACd,OAAO,CAAC,iBAAiB,CAyC3B,CAAC"}