synapse-mcp 1.0.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 (138) hide show
  1. package/README.md +607 -0
  2. package/dist/constants.d.ts +23 -0
  3. package/dist/constants.d.ts.map +1 -0
  4. package/dist/constants.js +58 -0
  5. package/dist/constants.js.map +1 -0
  6. package/dist/formatters/index.d.ts +275 -0
  7. package/dist/formatters/index.d.ts.map +1 -0
  8. package/dist/formatters/index.js +461 -0
  9. package/dist/formatters/index.js.map +1 -0
  10. package/dist/index.d.ts +3 -0
  11. package/dist/index.d.ts.map +1 -0
  12. package/dist/index.js +178 -0
  13. package/dist/index.js.map +1 -0
  14. package/dist/schemas/common.d.ts +48 -0
  15. package/dist/schemas/common.d.ts.map +1 -0
  16. package/dist/schemas/common.js +69 -0
  17. package/dist/schemas/common.js.map +1 -0
  18. package/dist/schemas/discriminator.d.ts +20 -0
  19. package/dist/schemas/discriminator.d.ts.map +1 -0
  20. package/dist/schemas/discriminator.js +25 -0
  21. package/dist/schemas/discriminator.js.map +1 -0
  22. package/dist/schemas/flux/compose.d.ts +93 -0
  23. package/dist/schemas/flux/compose.d.ts.map +1 -0
  24. package/dist/schemas/flux/compose.js +112 -0
  25. package/dist/schemas/flux/compose.js.map +1 -0
  26. package/dist/schemas/flux/container.d.ts +144 -0
  27. package/dist/schemas/flux/container.d.ts.map +1 -0
  28. package/dist/schemas/flux/container.js +163 -0
  29. package/dist/schemas/flux/container.js.map +1 -0
  30. package/dist/schemas/flux/docker.d.ts +91 -0
  31. package/dist/schemas/flux/docker.d.ts.map +1 -0
  32. package/dist/schemas/flux/docker.js +101 -0
  33. package/dist/schemas/flux/docker.js.map +1 -0
  34. package/dist/schemas/flux/host.d.ts +61 -0
  35. package/dist/schemas/flux/host.d.ts.map +1 -0
  36. package/dist/schemas/flux/host.js +72 -0
  37. package/dist/schemas/flux/host.js.map +1 -0
  38. package/dist/schemas/flux/index.d.ts +20 -0
  39. package/dist/schemas/flux/index.d.ts.map +1 -0
  40. package/dist/schemas/flux/index.js +88 -0
  41. package/dist/schemas/flux/index.js.map +1 -0
  42. package/dist/schemas/index.d.ts +11 -0
  43. package/dist/schemas/index.d.ts.map +1 -0
  44. package/dist/schemas/index.js +11 -0
  45. package/dist/schemas/index.js.map +1 -0
  46. package/dist/schemas/scout/index.d.ts +151 -0
  47. package/dist/schemas/scout/index.d.ts.map +1 -0
  48. package/dist/schemas/scout/index.js +41 -0
  49. package/dist/schemas/scout/index.js.map +1 -0
  50. package/dist/schemas/scout/logs.d.ts +48 -0
  51. package/dist/schemas/scout/logs.d.ts.map +1 -0
  52. package/dist/schemas/scout/logs.js +47 -0
  53. package/dist/schemas/scout/logs.js.map +1 -0
  54. package/dist/schemas/scout/simple.d.ts +68 -0
  55. package/dist/schemas/scout/simple.d.ts.map +1 -0
  56. package/dist/schemas/scout/simple.js +75 -0
  57. package/dist/schemas/scout/simple.js.map +1 -0
  58. package/dist/schemas/scout/zfs.d.ts +37 -0
  59. package/dist/schemas/scout/zfs.d.ts.map +1 -0
  60. package/dist/schemas/scout/zfs.js +36 -0
  61. package/dist/schemas/scout/zfs.js.map +1 -0
  62. package/dist/schemas/unified.d.ts +674 -0
  63. package/dist/schemas/unified.d.ts.map +1 -0
  64. package/dist/schemas/unified.js +453 -0
  65. package/dist/schemas/unified.js.map +1 -0
  66. package/dist/services/compose.d.ts +107 -0
  67. package/dist/services/compose.d.ts.map +1 -0
  68. package/dist/services/compose.js +308 -0
  69. package/dist/services/compose.js.map +1 -0
  70. package/dist/services/container.d.ts +69 -0
  71. package/dist/services/container.d.ts.map +1 -0
  72. package/dist/services/container.js +111 -0
  73. package/dist/services/container.js.map +1 -0
  74. package/dist/services/docker.d.ts +243 -0
  75. package/dist/services/docker.d.ts.map +1 -0
  76. package/dist/services/docker.js +812 -0
  77. package/dist/services/docker.js.map +1 -0
  78. package/dist/services/file-service.d.ts +79 -0
  79. package/dist/services/file-service.d.ts.map +1 -0
  80. package/dist/services/file-service.js +226 -0
  81. package/dist/services/file-service.js.map +1 -0
  82. package/dist/services/interfaces.d.ts +537 -0
  83. package/dist/services/interfaces.d.ts.map +1 -0
  84. package/dist/services/interfaces.js +2 -0
  85. package/dist/services/interfaces.js.map +1 -0
  86. package/dist/services/ssh-pool-exec.d.ts +10 -0
  87. package/dist/services/ssh-pool-exec.d.ts.map +1 -0
  88. package/dist/services/ssh-pool-exec.js +10 -0
  89. package/dist/services/ssh-pool-exec.js.map +1 -0
  90. package/dist/services/ssh-pool.d.ts +66 -0
  91. package/dist/services/ssh-pool.d.ts.map +1 -0
  92. package/dist/services/ssh-pool.js +253 -0
  93. package/dist/services/ssh-pool.js.map +1 -0
  94. package/dist/services/ssh-service.d.ts +39 -0
  95. package/dist/services/ssh-service.d.ts.map +1 -0
  96. package/dist/services/ssh-service.js +143 -0
  97. package/dist/services/ssh-service.js.map +1 -0
  98. package/dist/services/ssh.d.ts +37 -0
  99. package/dist/services/ssh.d.ts.map +1 -0
  100. package/dist/services/ssh.js +50 -0
  101. package/dist/services/ssh.js.map +1 -0
  102. package/dist/tools/flux.d.ts +14 -0
  103. package/dist/tools/flux.d.ts.map +1 -0
  104. package/dist/tools/flux.js +86 -0
  105. package/dist/tools/flux.js.map +1 -0
  106. package/dist/tools/index.d.ts +7 -0
  107. package/dist/tools/index.d.ts.map +1 -0
  108. package/dist/tools/index.js +43 -0
  109. package/dist/tools/index.js.map +1 -0
  110. package/dist/tools/scout.d.ts +14 -0
  111. package/dist/tools/scout.d.ts.map +1 -0
  112. package/dist/tools/scout.js +96 -0
  113. package/dist/tools/scout.js.map +1 -0
  114. package/dist/tools/unified.d.ts +7 -0
  115. package/dist/tools/unified.d.ts.map +1 -0
  116. package/dist/tools/unified.js +827 -0
  117. package/dist/tools/unified.js.map +1 -0
  118. package/dist/types.d.ts +93 -0
  119. package/dist/types.d.ts.map +1 -0
  120. package/dist/types.js +7 -0
  121. package/dist/types.js.map +1 -0
  122. package/dist/utils/errors.d.ts +60 -0
  123. package/dist/utils/errors.d.ts.map +1 -0
  124. package/dist/utils/errors.js +131 -0
  125. package/dist/utils/errors.js.map +1 -0
  126. package/dist/utils/help.d.ts +69 -0
  127. package/dist/utils/help.d.ts.map +1 -0
  128. package/dist/utils/help.js +259 -0
  129. package/dist/utils/help.js.map +1 -0
  130. package/dist/utils/index.d.ts +4 -0
  131. package/dist/utils/index.d.ts.map +1 -0
  132. package/dist/utils/index.js +4 -0
  133. package/dist/utils/index.js.map +1 -0
  134. package/dist/utils/path-security.d.ts +64 -0
  135. package/dist/utils/path-security.d.ts.map +1 -0
  136. package/dist/utils/path-security.js +138 -0
  137. package/dist/utils/path-security.js.map +1 -0
  138. package/package.json +85 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"docker.js","sourceRoot":"","sources":["../../src/services/docker.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,WAAW,CAAC;AAC/B,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,IAAI,CAAC;AACvC,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAS5B,OAAO,EAAE,qBAAqB,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACvF,OAAO,EAAE,kBAAkB,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAGlE;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,KAAa;IACxC,OAAO,CACL,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC;QACrB,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAClF,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAS,yBAAyB,CAAC,MAAkB;IACnD,8DAA8D;IAC9D,MAAM,UAAU,GAAG,MAAM,CAAC,gBAAgB,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAE/F,IAAI,UAAU,EAAE,CAAC;QACf,yBAAyB;QACzB,OAAO,IAAI,MAAM,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC;IACpC,CAAC;SAAM,IAAI,MAAM,CAAC,QAAQ,KAAK,MAAM,IAAI,MAAM,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;QACrE,wBAAwB;QACxB,OAAO,IAAI,MAAM,CAAC;YAChB,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,IAAI;YACzB,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,OAAO,EAAE,WAAW;SACrB,CAAC,CAAC;IACL,CAAC;SAAM,CAAC;QACN,MAAM,IAAI,KAAK,CAAC,yBAAyB,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC9D,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,OAAO,aAAa;IAGJ;IAFZ,WAAW,GAAG,IAAI,GAAG,EAAkB,CAAC;IAEhD,YAAoB,gBAAgD,yBAAyB;QAAzE,kBAAa,GAAb,aAAa,CAA4D;IAAG,CAAC;IAEjG;;OAEG;IACH,eAAe,CAAC,MAAkB;QAChC,MAAM,QAAQ,GAAG,GAAG,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;QAEjD,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC9C,IAAI,MAAM,EAAE,CAAC;YACX,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QAC1C,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QACvC,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;OAuBG;IACH,YAAY;QACV,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;IAC3B,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,cAAc,CAClB,KAAmB,EACnB,UAKI,EAAE;QAEN,uDAAuD;QACvD,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,UAAU,CACtC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAC9D,CAAC;QAEF,wDAAwD;QACxD,MAAM,UAAU,GAAoB,EAAE,CAAC;QACvC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACxC,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;YAC1B,IAAI,MAAM,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;gBAClC,UAAU,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;YACnC,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,KAAK,CAAC,gCAAgC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;YACjF,CAAC;QACH,CAAC;QAED,OAAO,UAAU,CAAC;IACpB,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,oBAAoB,CAChC,IAAgB,EAChB,OAKC;QAED,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;QAC1C,MAAM,WAAW,GAAgC;YAC/C,GAAG,EAAE,OAAO,CAAC,KAAK,KAAK,SAAS;SACjC,CAAC;QAEF,gCAAgC;QAChC,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;YACxB,WAAW,CAAC,OAAO,GAAG,EAAE,KAAK,EAAE,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC;QACzD,CAAC;QAED,MAAM,UAAU,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;QAC5D,MAAM,OAAO,GAAoB,EAAE,CAAC;QAEpC,KAAK,MAAM,CAAC,IAAI,UAAU,EAAE,CAAC;YAC3B,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,EAAE,WAAW,EAA4B,CAAC;YAExE,qBAAqB;YACrB,IAAI,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,KAAK,KAAK,KAAK,EAAE,CAAC;gBAC7C,IAAI,OAAO,CAAC,KAAK,KAAK,SAAS,IAAI,cAAc,KAAK,QAAQ;oBAAE,SAAS;gBACzE,IAAI,OAAO,CAAC,KAAK,KAAK,QAAQ,IAAI,cAAc,KAAK,QAAQ;oBAAE,SAAS;gBACxE,IAAI,OAAO,CAAC,KAAK,KAAK,SAAS,IAAI,cAAc,KAAK,SAAS;oBAAE,SAAS;YAC5E,CAAC;YAED,MAAM,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAEjE,oBAAoB;YACpB,IAAI,OAAO,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC;gBACzF,SAAS;YACX,CAAC;YAED,qBAAqB;YACrB,IACE,OAAO,CAAC,WAAW;gBACnB,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC,EAClE,CAAC;gBACD,SAAS;YACX,CAAC;YAED,OAAO,CAAC,IAAI,CAAC;gBACX,EAAE,EAAE,CAAC,CAAC,EAAE;gBACR,IAAI;gBACJ,KAAK,EAAE,CAAC,CAAC,KAAK;gBACd,KAAK,EAAE,cAAc;gBACrB,MAAM,EAAE,CAAC,CAAC,MAAM;gBAChB,OAAO,EAAE,IAAI,IAAI,CAAC,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC,WAAW,EAAE;gBACjD,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;oBACjC,aAAa,EAAE,CAAC,CAAC,WAAW;oBAC5B,QAAQ,EAAE,CAAC,CAAC,UAAU;oBACtB,QAAQ,EAAE,CAAC,CAAC,IAAqB;oBACjC,MAAM,EAAE,CAAC,CAAC,EAAE;iBACb,CAAC,CAAC;gBACH,MAAM,EAAE,CAAC,CAAC,MAAM,IAAI,EAAE;gBACtB,QAAQ,EAAE,IAAI,CAAC,IAAI;aACpB,CAAC,CAAC;QACL,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,iBAAiB,CACrB,WAAmB,EACnB,KAAmB;QAEnB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;gBAC1C,MAAM,UAAU,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC;gBAE9D,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,CAC3B,CAAC,CAAC,EAAE,EAAE,CACJ,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC;oBAC5B,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,WAAW,CAAC,CAC5D,CAAC;gBAEF,IAAI,KAAK,EAAE,CAAC;oBACV,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;gBACpC,CAAC;YACH,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,QAAQ,CACN,IAAI,kBAAkB,CACpB,mCAAmC,EACnC,IAAI,CAAC,IAAI,EACT,mBAAmB,EACnB,KAAK,CACN,EACD,EAAE,QAAQ,EAAE,EAAE,WAAW,EAAE,EAAE,CAC9B,CAAC;YACJ,CAAC;QACH,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,eAAe,CACnB,WAAmB,EACnB,MAA0D,EAC1D,IAAgB;QAEhB,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;QAE7D,QAAQ,MAAM,EAAE,CAAC;YACf,KAAK,OAAO;gBACV,MAAM,SAAS,CAAC,KAAK,EAAE,CAAC;gBACxB,MAAM;YACR,KAAK,MAAM;gBACT,MAAM,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;gBAChC,MAAM;YACR,KAAK,SAAS;gBACZ,MAAM,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;gBACnC,MAAM;YACR,KAAK,OAAO;gBACV,MAAM,SAAS,CAAC,KAAK,EAAE,CAAC;gBACxB,MAAM;YACR,KAAK,SAAS;gBACZ,MAAM,SAAS,CAAC,OAAO,EAAE,CAAC;gBAC1B,MAAM;QACV,CAAC;IACH,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,YAAY,CAAC,WAAmB,EAAE,IAAgB;QAC9D,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;QAC1C,OAAO,MAAM,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;IAC1C,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,gBAAgB,CACpB,WAAmB,EACnB,IAAgB,EAChB,UAKI,EAAE;QAEN,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;QAE7D,MAAM,UAAU,GAQZ;YACF,MAAM,EAAE,OAAO,CAAC,MAAM,KAAK,QAAQ;YACnC,MAAM,EAAE,OAAO,CAAC,MAAM,KAAK,QAAQ;YACnC,IAAI,EAAE,OAAO,CAAC,KAAK,IAAI,GAAG;YAC1B,UAAU,EAAE,IAAI;YAChB,MAAM,EAAE,KAAK;SACd,CAAC;QAEF,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;YAClB,UAAU,CAAC,KAAK,GAAG,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAClD,CAAC;QACD,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;YAClB,UAAU,CAAC,KAAK,GAAG,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAClD,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC9C,OAAO,eAAe,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC1C,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,iBAAiB,CAAC,WAAmB,EAAE,IAAgB;QAC3D,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;QAC7D,MAAM,KAAK,GAAG,MAAM,SAAS,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;QAEvD,2BAA2B;QAC3B,MAAM,QAAQ,GACZ,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,WAAW,GAAG,KAAK,CAAC,YAAY,CAAC,SAAS,CAAC,WAAW,CAAC;QACnF,MAAM,WAAW,GAAG,KAAK,CAAC,SAAS,CAAC,gBAAgB,GAAG,KAAK,CAAC,YAAY,CAAC,gBAAgB,CAAC;QAC3F,MAAM,QAAQ,GAAG,KAAK,CAAC,SAAS,CAAC,WAAW,IAAI,CAAC,CAAC;QAClD,MAAM,UAAU,GAAG,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,GAAG,WAAW,CAAC,GAAG,QAAQ,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAEnF,eAAe;QACf,MAAM,QAAQ,GAAG,KAAK,CAAC,YAAY,CAAC,KAAK,IAAI,CAAC,CAAC;QAC/C,MAAM,QAAQ,GAAG,KAAK,CAAC,YAAY,CAAC,KAAK,IAAI,CAAC,CAAC;QAC/C,MAAM,UAAU,GAAG,CAAC,QAAQ,GAAG,QAAQ,CAAC,GAAG,GAAG,CAAC;QAE/C,gBAAgB;QAChB,IAAI,KAAK,GAAG,CAAC,EACX,KAAK,GAAG,CAAC,CAAC;QACZ,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;YACnB,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAChD,KAAK,IAAK,GAA4B,CAAC,QAAQ,IAAI,CAAC,CAAC;gBACrD,KAAK,IAAK,GAA4B,CAAC,QAAQ,IAAI,CAAC,CAAC;YACvD,CAAC;QACH,CAAC;QAED,YAAY;QACZ,IAAI,SAAS,GAAG,CAAC,EACf,UAAU,GAAG,CAAC,CAAC;QACjB,IAAI,KAAK,CAAC,WAAW,EAAE,0BAA0B,EAAE,CAAC;YAClD,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,WAAW,CAAC,0BAA0B,EAAE,CAAC;gBACjE,IAAI,KAAK,CAAC,EAAE,KAAK,MAAM;oBAAE,SAAS,IAAI,KAAK,CAAC,KAAK,CAAC;gBAClD,IAAI,KAAK,CAAC,EAAE,KAAK,OAAO;oBAAE,UAAU,IAAI,KAAK,CAAC,KAAK,CAAC;YACtD,CAAC;QACH,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,SAAS,CAAC,OAAO,EAAE,CAAC;QAEvC,OAAO;YACL,WAAW;YACX,aAAa,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;YAC3C,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,GAAG,CAAC,GAAG,GAAG;YAC9C,WAAW,EAAE,QAAQ;YACrB,WAAW,EAAE,QAAQ;YACrB,aAAa,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,GAAG,CAAC,GAAG,GAAG;YACjD,SAAS,EAAE,KAAK;YAChB,SAAS,EAAE,KAAK;YAChB,SAAS;YACT,UAAU;SACX,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,aAAa,CAAC,KAAmB;QACrC,0EAA0E;QAC1E,OAAO,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC1E,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,mBAAmB,CAAC,IAAgB;QAChD,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;YAC1C,MAAM,UAAU,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC;YAC9D,MAAM,OAAO,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,MAAM,CAAC;YAEvE,OAAO;gBACL,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,SAAS,EAAE,IAAI;gBACf,cAAc,EAAE,UAAU,CAAC,MAAM;gBACjC,YAAY,EAAE,OAAO;aACtB,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,QAAQ,CAAC,IAAI,kBAAkB,CAAC,yBAAyB,EAAE,IAAI,CAAC,IAAI,EAAE,aAAa,EAAE,KAAK,CAAC,EAAE;gBAC3F,QAAQ,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE;aAC9B,CAAC,CAAC;YACH,OAAO;gBACL,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,SAAS,EAAE,KAAK;gBAChB,cAAc,EAAE,CAAC;gBACjB,YAAY,EAAE,CAAC;gBACf,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,mBAAmB;aACpE,CAAC;QACJ,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,UAAU,CAAC,KAAmB,EAAE,UAA6B,EAAE;QACnE,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,UAAU,CACtC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAC1D,CAAC;QAEF,OAAO,OAAO;aACX,MAAM,CAAC,CAAC,CAAC,EAA4C,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,WAAW,CAAC;aACjF,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IAC7B,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,gBAAgB,CAC5B,IAAgB,EAChB,OAA0B;QAE1B,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;QAC1C,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC;YACrC,OAAO,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS;SACnE,CAAC,CAAC;QAEH,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;YAC1B,EAAE,EAAE,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC;YACzB,IAAI,EAAE,GAAG,CAAC,QAAQ,IAAI,CAAC,eAAe,CAAC;YACvC,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,OAAO,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC,WAAW,EAAE;YACnD,UAAU,EAAE,GAAG,CAAC,UAAU,IAAI,CAAC;YAC/B,QAAQ,EAAE,IAAI,CAAC,IAAI;SACpB,CAAC,CAAC,CAAC;IACN,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,gBAAgB,CACpB,WAAmB,EACnB,IAAgB;QAEhB,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;QAC7D,OAAO,SAAS,CAAC,OAAO,EAAE,CAAC;IAC7B,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,aAAa,CAAC,IAAgB;QAClC,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;QAC1C,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;QACjC,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,OAAO,EAAE,CAAC;QAEvC,OAAO;YACL,aAAa,EAAE,OAAO,CAAC,OAAO,IAAI,SAAS;YAC3C,UAAU,EAAE,OAAO,CAAC,UAAU,IAAI,SAAS;YAC3C,EAAE,EAAE,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,MAAM,IAAI,SAAS;YACpD,IAAI,EAAE,IAAI,CAAC,YAAY,IAAI,SAAS;YACpC,aAAa,EAAE,IAAI,CAAC,aAAa,IAAI,SAAS;YAC9C,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC;YACpB,WAAW,EAAE,IAAI,CAAC,QAAQ,IAAI,CAAC;YAC/B,aAAa,EAAE,IAAI,CAAC,MAAM,IAAI,SAAS;YACvC,OAAO,EAAE,IAAI,CAAC,aAAa,IAAI,iBAAiB;YAChD,eAAe,EAAE,IAAI,CAAC,UAAU,IAAI,CAAC;YACrC,iBAAiB,EAAE,IAAI,CAAC,iBAAiB,IAAI,CAAC;YAC9C,gBAAgB,EAAE,IAAI,CAAC,gBAAgB,IAAI,CAAC;YAC5C,iBAAiB,EAAE,IAAI,CAAC,iBAAiB,IAAI,CAAC;YAC9C,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,CAAC;SACzB,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,kBAAkB,CAAC,IAAgB;QACvC,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;QAC1C,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,EAAE,EAAE,CAAC;QAI7B,MAAM,MAAM,GAAgB,EAAE,CAAC,MAAM,IAAI,EAAE,CAAC;QAC5C,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,GAAW,EAAE,CAAY,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACvF,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,GAAW,EAAE,CAAY,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC/F,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAY,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC;QAI9F,MAAM,UAAU,GAAoB,EAAE,CAAC,UAAU,IAAI,EAAE,CAAC;QACxD,MAAM,aAAa,GAAG,UAAU,CAAC,MAAM,CACrC,CAAC,GAAW,EAAE,CAAgB,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,EACxD,CAAC,CACF,CAAC;QACF,MAAM,eAAe,GAAG,UAAU,CAAC,MAAM,CACvC,CAAC,GAAW,EAAE,CAAgB,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,EAC5D,CAAC,CACF,CAAC;QACF,MAAM,iBAAiB,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAgB,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,MAAM,CAAC;QAIhG,MAAM,OAAO,GAAiB,EAAE,CAAC,OAAO,IAAI,EAAE,CAAC;QAC/C,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,CAC/B,CAAC,GAAW,EAAE,CAAa,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,SAAS,EAAE,IAAI,IAAI,CAAC,CAAC,EAC9D,CAAC,CACF,CAAC;QACF,MAAM,aAAa,GAAG,OAAO,CAAC,MAAM,CAClC,CAAC,CAAa,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,EAAE,QAAQ,IAAI,CAAC,CAAC,SAAS,CAAC,QAAQ,GAAG,CAAC,CACrE,CAAC,MAAM,CAAC;QAIT,MAAM,UAAU,GAAqB,EAAE,CAAC,UAAU,IAAI,EAAE,CAAC;QACzD,MAAM,cAAc,GAAG,UAAU,CAAC,MAAM,CACtC,CAAC,GAAW,EAAE,CAAiB,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,EACvD,CAAC,CACF,CAAC;QACF,MAAM,qBAAqB,GAAG,UAAU;aACrC,MAAM,CAAC,CAAC,CAAiB,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;aACvC,MAAM,CAAC,CAAC,GAAW,EAAE,CAAiB,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAEtE,MAAM,gBAAgB,GAAG,OAAO;aAC7B,MAAM,CAAC,CAAC,CAAa,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,QAAQ,CAAC;aACjD,MAAM,CAAC,CAAC,GAAW,EAAE,CAAa,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,SAAS,EAAE,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAE7E,MAAM,SAAS,GAAG,SAAS,GAAG,aAAa,GAAG,UAAU,GAAG,cAAc,CAAC;QAC1E,MAAM,gBAAgB,GACpB,SAAS,GAAG,WAAW,GAAG,aAAa,GAAG,gBAAgB,GAAG,qBAAqB,CAAC;QAErF,OAAO;YACL,MAAM,EAAE;gBACN,KAAK,EAAE,MAAM,CAAC,MAAM;gBACpB,MAAM,EAAE,YAAY;gBACpB,IAAI,EAAE,SAAS;gBACf,WAAW,EAAE,SAAS,GAAG,WAAW;aACrC;YACD,UAAU,EAAE;gBACV,KAAK,EAAE,UAAU,CAAC,MAAM;gBACxB,OAAO,EAAE,iBAAiB;gBAC1B,IAAI,EAAE,aAAa,GAAG,eAAe;gBACrC,WAAW,EAAE,aAAa;aAC3B;YACD,OAAO,EAAE;gBACP,KAAK,EAAE,OAAO,CAAC,MAAM;gBACrB,MAAM,EAAE,aAAa;gBACrB,IAAI,EAAE,UAAU;gBAChB,WAAW,EAAE,gBAAgB;aAC9B;YACD,UAAU,EAAE;gBACV,KAAK,EAAE,UAAU,CAAC,MAAM;gBACxB,IAAI,EAAE,cAAc;gBACpB,WAAW,EAAE,qBAAqB;aACnC;YACD,SAAS;YACT,gBAAgB;SACjB,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,WAAW,CACf,IAAgB,EAChB,MAA+E;QAE/E,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;QAC1C,MAAM,OAAO,GAAkB,EAAE,CAAC;QAElC,MAAM,OAAO,GACX,MAAM,KAAK,KAAK;YACd,CAAC,CAAE,CAAC,YAAY,EAAE,QAAQ,EAAE,SAAS,EAAE,UAAU,EAAE,YAAY,CAAW;YAC1E,CAAC,CAAE,CAAC,MAAM,CAAW,CAAC;QAE1B,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;YACxB,IAAI,CAAC;gBACH,QAAQ,CAAC,EAAE,CAAC;oBACV,KAAK,YAAY,CAAC,CAAC,CAAC;wBAClB,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,eAAe,EAAE,CAAC;wBAC3C,OAAO,CAAC,IAAI,CAAC;4BACX,IAAI,EAAE,YAAY;4BAClB,cAAc,EAAE,GAAG,CAAC,cAAc,IAAI,CAAC;4BACvC,YAAY,EAAE,GAAG,CAAC,iBAAiB,EAAE,MAAM,IAAI,CAAC;4BAChD,OAAO,EAAE,GAAG,CAAC,iBAAiB;yBAC/B,CAAC,CAAC;wBACH,MAAM;oBACR,CAAC;oBACD,KAAK,QAAQ,CAAC,CAAC,CAAC;wBACd,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,WAAW,EAAE,CAAC;wBACvC,OAAO,CAAC,IAAI,CAAC;4BACX,IAAI,EAAE,QAAQ;4BACd,cAAc,EAAE,GAAG,CAAC,cAAc,IAAI,CAAC;4BACvC,YAAY,EAAE,GAAG,CAAC,aAAa,EAAE,MAAM,IAAI,CAAC;4BAC5C,OAAO,EAAE,GAAG,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,QAAQ,IAAI,EAAE,CAAC;yBACtE,CAAC,CAAC;wBACH,MAAM;oBACR,CAAC;oBACD,KAAK,SAAS,CAAC,CAAC,CAAC;wBACf,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,YAAY,EAAE,CAAC;wBACxC,OAAO,CAAC,IAAI,CAAC;4BACX,IAAI,EAAE,SAAS;4BACf,cAAc,EAAE,GAAG,CAAC,cAAc,IAAI,CAAC;4BACvC,YAAY,EAAE,GAAG,CAAC,cAAc,EAAE,MAAM,IAAI,CAAC;4BAC7C,OAAO,EAAE,GAAG,CAAC,cAAc;yBAC5B,CAAC,CAAC;wBACH,MAAM;oBACR,CAAC;oBACD,KAAK,UAAU,CAAC,CAAC,CAAC;wBAChB,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,aAAa,EAAE,CAAC;wBACzC,OAAO,CAAC,IAAI,CAAC;4BACX,IAAI,EAAE,UAAU;4BAChB,cAAc,EAAE,CAAC;4BACjB,YAAY,EAAE,GAAG,CAAC,eAAe,EAAE,MAAM,IAAI,CAAC;4BAC9C,OAAO,EAAE,GAAG,CAAC,eAAe;yBAC7B,CAAC,CAAC;wBACH,MAAM;oBACR,CAAC;oBACD,KAAK,YAAY,CAAC,CAAC,CAAC;wBAClB,MAAM,GAAG,GAAG,CAAC,MAAM,MAAM,CAAC,YAAY,EAAE,CAGvC,CAAC;wBACF,OAAO,CAAC,IAAI,CAAC;4BACX,IAAI,EAAE,YAAY;4BAClB,cAAc,EAAE,GAAG,CAAC,cAAc,IAAI,CAAC;4BACvC,YAAY,EAAE,GAAG,CAAC,aAAa,EAAE,MAAM,IAAI,CAAC;4BAC5C,OAAO,EAAE,GAAG,CAAC,aAAa;yBAC3B,CAAC,CAAC;wBACH,MAAM;oBACR,CAAC;gBACH,CAAC;YACH,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,QAAQ,CACN,IAAI,kBAAkB,CAAC,uBAAuB,EAAE,IAAI,CAAC,IAAI,EAAE,eAAe,EAAE,KAAK,CAAC,EAClF;oBACE,QAAQ,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE;iBACtB,CACF,CAAC;gBACF,OAAO,CAAC,IAAI,CAAC;oBACX,IAAI,EAAE,CAAC;oBACP,cAAc,EAAE,CAAC;oBACjB,YAAY,EAAE,CAAC;oBACf,OAAO,EAAE,CAAC,UAAU,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC;iBAChF,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,SAAS,CAAC,SAAiB,EAAE,IAAgB;QACjD,IAAI,CAAC,SAAS,IAAI,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;YAC1C,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;QAC5C,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;QAE1C,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrC,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,GAAiB,EAAE,MAA6B,EAAE,EAAE;gBAC1E,IAAI,GAAG,EAAE,CAAC;oBACR,MAAM,CAAC,IAAI,KAAK,CAAC,yBAAyB,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;oBAC1D,OAAO;gBACT,CAAC;gBAED,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC,GAAiB,EAAE,EAAE;oBACxD,IAAI,GAAG,EAAE,CAAC;wBACR,MAAM,CAAC,IAAI,KAAK,CAAC,gBAAgB,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;oBACnD,CAAC;yBAAM,CAAC;wBACN,OAAO,CAAC,EAAE,MAAM,EAAE,uBAAuB,SAAS,EAAE,EAAE,CAAC,CAAC;oBAC1D,CAAC;gBACH,CAAC,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,iBAAiB,CACrB,WAAmB,EACnB,IAAgB,EAChB,UAA8B,EAAE;QAEhC,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;QAC1C,MAAM,SAAS,GAAG,MAAM,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;QAEnD,+BAA+B;QAC/B,MAAM,IAAI,GAAG,MAAM,SAAS,CAAC,OAAO,EAAE,CAAC;QACvC,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;QAEpC,4BAA4B;QAC5B,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;YACvB,MAAM,SAAS,CAAC,IAAI,EAAE,CAAC;QACzB,CAAC;QAED,mBAAmB;QACnB,MAAM,SAAS,CAAC,MAAM,EAAE,CAAC;QAEzB,iCAAiC;QACjC,IAAI,OAAO,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;YAC3B,MAAM,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QACxC,CAAC;QAED,wCAAwC;QACxC,MAAM,YAAY,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC;YAChD,GAAG,IAAI,CAAC,MAAM;YACd,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,gBAAgB,EAAE;gBAChB,eAAe,EAAE,IAAI,CAAC,eAAe,CAAC,QAAQ;aAC/C;SACF,CAAC,CAAC;QAEH,sBAAsB;QACtB,MAAM,YAAY,CAAC,KAAK,EAAE,CAAC;QAE3B,OAAO;YACL,MAAM,EAAE,kCAAkC;YAC1C,WAAW,EAAE,YAAY,CAAC,EAAE;SAC7B,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,WAAW,CACf,OAAe,EACf,IAAgB,EAChB,UAA+B,EAAE;QAEjC,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;QAC1C,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QAEvC,MAAM,KAAK,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;QAE7C,OAAO,EAAE,MAAM,EAAE,8BAA8B,OAAO,EAAE,EAAE,CAAC;IAC7D,CAAC;IAED;;;;;;;;;;;;OAYG;IACH,KAAK,CAAC,UAAU,CACd,IAAgB,EAChB,OAKC;QAED,iEAAiE;QACjE,4EAA4E;QAE5E,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,UAAU,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;QAEtD,kBAAkB;QAClB,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;YACtC,MAAM,IAAI,KAAK,CAAC,sBAAsB,GAAG,EAAE,CAAC,CAAC;QAC/C,CAAC;QAED,4DAA4D;QAC5D,MAAM,EAAE,kBAAkB,EAAE,GAAG,MAAM,MAAM,CAAC,2BAA2B,CAAC,CAAC;QACzE,kBAAkB,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;QAEvC,IAAI,UAAU,EAAE,CAAC;YACf,kBAAkB,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;QAC/C,CAAC;QAED,MAAM,IAAI,GAAa,CAAC,OAAO,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;QAE5C,IAAI,OAAO,EAAE,CAAC;YACZ,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAC1B,CAAC;QAED,IAAI,UAAU,EAAE,CAAC;YACf,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;QAC9B,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAEnB,sEAAsE;QACtE,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YAC9B,qCAAqC;YACrC,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,CAAC;YACnD,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,CAAC;YAC3C,MAAM,aAAa,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;YAE1C,MAAM,aAAa,CAAC,QAAQ,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,4BAA4B;QACxF,CAAC;aAAM,CAAC;YACN,mBAAmB;YACnB,MAAM,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,CAAC;YAC1E,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,CAAC;YACnD,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,CAAC;YAC3C,MAAM,aAAa,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;YAE1C,kBAAkB,CAAC,IAAI,CAAC,CAAC;YAEzB,MAAM,OAAO,GAAG;gBACd,IAAI;gBACJ,eAAe;gBACf,IAAI;gBACJ,kBAAkB;gBAClB,IAAI;gBACJ,kCAAkC;gBAClC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC;gBAC3B,UAAU,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;aAC3B,CAAC;YAEF,MAAM,aAAa,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;QAC3D,CAAC;QAED,OAAO,EAAE,MAAM,EAAE,4BAA4B,GAAG,EAAE,EAAE,CAAC;IACvD,CAAC;CACF;AAED;;GAEG;AACH,MAAM,YAAY,GAAG;IACnB,OAAO,CAAC,GAAG,CAAC,mBAAmB,EAAE,gBAAgB;IACjD,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,qBAAqB,CAAC,EAAE,oBAAoB;IAChE,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,aAAa,EAAE,aAAa,CAAC,EAAE,YAAY;IACtE,IAAI,CAAC,OAAO,EAAE,EAAE,mBAAmB,CAAC,CAAC,gBAAgB;CACtD,CAAC,MAAM,CAAC,OAAO,CAAa,CAAC;AAE9B;;GAEG;AACH,SAAS,iBAAiB,CAAC,KAAmB;IAC5C,+BAA+B;IAC/B,IAAI,CAAC,UAAU,CAAC,qBAAqB,CAAC,EAAE,CAAC;QACvC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,kDAAkD;IAClD,MAAM,cAAc,GAAG,KAAK,CAAC,IAAI,CAC/B,CAAC,CAAC,EAAE,EAAE,CACJ,CAAC,CAAC,gBAAgB,KAAK,qBAAqB;QAC5C,CAAC,CAAC,IAAI,KAAK,qBAAqB;QAChC,CAAC,CAAC,CAAC,IAAI,KAAK,WAAW,IAAI,CAAC,CAAC,gBAAgB,CAAC,CACjD,CAAC;IAEF,IAAI,cAAc,EAAE,CAAC;QACnB,OAAO,KAAK,CAAC;IACf,CAAC;IAED,8BAA8B;IAC9B,MAAM,SAAS,GACb,QAAQ,EAAE;SACP,WAAW,EAAE;SACb,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC,IAAI,OAAO,CAAC;IAC5C,OAAO,CAAC,KAAK,CAAC,uCAAuC,SAAS,GAAG,CAAC,CAAC;IAEnE,OAAO;QACL,GAAG,KAAK;QACR;YACE,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,qBAAqB;YAC3B,QAAQ,EAAE,MAAe;YACzB,gBAAgB,EAAE,qBAAqB;SACxC;KACF,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe;IAC7B,IAAI,KAAK,GAAiB,EAAE,CAAC;IAE7B,2BAA2B;IAC3B,KAAK,MAAM,UAAU,IAAI,YAAY,EAAE,CAAC;QACtC,IAAI,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAC3B,IAAI,CAAC;gBACH,MAAM,GAAG,GAAG,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;gBAC9C,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBAC/B,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,CAAC,yCAAyC;gBACrF,IAAI,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACzD,OAAO,CAAC,KAAK,CAAC,UAAU,WAAW,CAAC,MAAM,eAAe,UAAU,EAAE,CAAC,CAAC;oBACvE,KAAK,GAAG,WAA2B,CAAC;oBACpC,MAAM;gBACR,CAAC;YACH,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,QAAQ,CAAC,KAAK,EAAE;oBACd,SAAS,EAAE,iBAAiB;oBAC5B,QAAQ,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE;iBACzC,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC;IAED,4CAA4C;IAC5C,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;QACjD,IAAI,UAAU,EAAE,CAAC;YACf,IAAI,CAAC;gBACH,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAiB,CAAC;gBAC/C,OAAO,CAAC,KAAK,CAAC,UAAU,KAAK,CAAC,MAAM,sCAAsC,CAAC,CAAC;YAC9E,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,QAAQ,CAAC,KAAK,EAAE;oBACd,SAAS,EAAE,iBAAiB;oBAC5B,QAAQ,EAAE,EAAE,MAAM,EAAE,sBAAsB,EAAE;iBAC7C,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC;IAED,qDAAqD;IACrD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO,CAAC,KAAK,CAAC,4CAA4C,CAAC,CAAC;QAC5D,OAAO;YACL;gBACE,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,WAAW;gBACjB,QAAQ,EAAE,MAAM;gBAChB,gBAAgB,EAAE,qBAAqB;aACxC;SACF,CAAC;IACJ,CAAC;IAED,wDAAwD;IACxD,OAAO,iBAAiB,CAAC,KAAK,CAAC,CAAC;AAClC,CAAC;AAED;;GAEG;AACH,SAAS,aAAa,CAAC,IAAY;IACjC,iDAAiD;IACjD,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;IACpD,IAAI,aAAa,EAAE,CAAC;QAClB,MAAM,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAC7C,MAAM,IAAI,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;QAC9B,MAAM,WAAW,GAA2B;YAC1C,CAAC,EAAE,CAAC;YACJ,CAAC,EAAE,EAAE;YACL,CAAC,EAAE,IAAI;YACP,CAAC,EAAE,KAAK;SACT,CAAC;QACF,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;IACnE,CAAC;IAED,qBAAqB;IACrB,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC;AACrD,CAAC;AAED;;GAEG;AACH,SAAS,eAAe,CAAC,GAAW;IAClC,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IACtD,MAAM,OAAO,GAAe,EAAE,CAAC;IAE/B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,uCAAuC;QACvC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,uCAAuC,CAAC,CAAC;QAClE,IAAI,KAAK,EAAE,CAAC;YACV,OAAO,CAAC,IAAI,CAAC;gBACX,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC;gBACnB,MAAM,EAAE,QAAQ,EAAE,gDAAgD;gBAClE,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;aAClB,CAAC,CAAC;QACL,CAAC;aAAM,IAAI,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;YACvB,OAAO,CAAC,IAAI,CAAC;gBACX,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;gBACnC,MAAM,EAAE,QAAQ;gBAChB,OAAO,EAAE,IAAI;aACd,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AASD;;GAEG;AACH,MAAM,UAAU,WAAW,CAAC,KAAa;IACvC,IAAI,KAAK,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IAC9B,MAAM,CAAC,GAAG,IAAI,CAAC;IACf,MAAM,KAAK,GAAG,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IAC5C,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACpD,OAAO,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;AAC9D,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,OAAe;IAC1C,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,CAAC;IACtD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,QAAQ,CAAC,CAAC;IACzC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,GAAG,QAAQ,CAAC,GAAG,OAAO,CAAC,CAAC;IACtD,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,GAAG,OAAO,CAAC,GAAG,KAAK,CAAC,CAAC;IAErD,IAAI,IAAI,GAAG,CAAC;QAAE,OAAO,GAAG,IAAI,KAAK,KAAK,GAAG,CAAC;IAC1C,IAAI,KAAK,GAAG,CAAC;QAAE,OAAO,GAAG,KAAK,KAAK,OAAO,GAAG,CAAC;IAC9C,OAAO,GAAG,OAAO,GAAG,CAAC;AACvB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,EAAU;IACtC,MAAM,OAAO,GAAG,EAAE,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;IAC3C,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,OAAO,CAAC;AACzC,CAAC"}
@@ -0,0 +1,79 @@
1
+ import type { HostConfig } from "../types.js";
2
+ import type { ISSHService, IFileService } from "./interfaces.js";
3
+ /**
4
+ * File service implementation for remote file operations via SSH.
5
+ * Provides secure file reading, directory listing, command execution,
6
+ * and file transfer capabilities across hosts.
7
+ *
8
+ * SECURITY: All paths are validated to prevent directory traversal attacks.
9
+ * Commands are validated against an allowlist unless explicitly overridden.
10
+ */
11
+ export declare class FileService implements IFileService {
12
+ private readonly sshService;
13
+ constructor(sshService: ISSHService);
14
+ /**
15
+ * Validates a path for security issues (directory traversal, etc.)
16
+ */
17
+ private validatePath;
18
+ /**
19
+ * Parses and validates a command, returning the safe escaped version.
20
+ * Validates base command against allowlist and escapes all arguments.
21
+ * Can be bypassed with HOMELAB_ALLOW_ANY_COMMAND=true env var.
22
+ *
23
+ * SECURITY: This prevents command injection via arguments like:
24
+ * "ls -la; rm -rf /" -> base="ls" passes, but "; rm -rf /" would execute
25
+ * Fix: Split into ["ls", "-la;", "rm", "-rf", "/"], escape each part
26
+ */
27
+ private validateAndEscapeCommand;
28
+ /**
29
+ * Read content from a file on a remote host.
30
+ */
31
+ readFile(host: HostConfig, path: string, maxSize: number): Promise<{
32
+ content: string;
33
+ size: number;
34
+ truncated: boolean;
35
+ }>;
36
+ /**
37
+ * List contents of a directory on a remote host.
38
+ */
39
+ listDirectory(host: HostConfig, path: string, showHidden: boolean): Promise<string>;
40
+ /**
41
+ * Get tree representation of a directory structure.
42
+ */
43
+ treeDirectory(host: HostConfig, path: string, depth: number): Promise<string>;
44
+ /**
45
+ * Execute a command in a working directory on a remote host.
46
+ *
47
+ * SECURITY: Command is validated against allowlist and all arguments
48
+ * are individually escaped to prevent injection attacks.
49
+ */
50
+ executeCommand(host: HostConfig, path: string, command: string, timeout: number): Promise<{
51
+ stdout: string;
52
+ exitCode: number;
53
+ }>;
54
+ /**
55
+ * Find files matching a pattern on a remote host.
56
+ */
57
+ findFiles(host: HostConfig, path: string, pattern: string, options: {
58
+ type?: "f" | "d" | "l";
59
+ maxDepth?: number;
60
+ limit?: number;
61
+ }): Promise<string>;
62
+ /**
63
+ * Transfer a file between hosts via SSH cat piping.
64
+ *
65
+ * SECURITY: Uses SSH cat piping instead of SCP to avoid path escaping
66
+ * issues with the user@host:path format. The source path is escaped
67
+ * for the source shell, and the target path is separately escaped
68
+ * inside the SSH command for the target shell.
69
+ */
70
+ transferFile(sourceHost: HostConfig, sourcePath: string, targetHost: HostConfig, targetPath: string): Promise<{
71
+ bytesTransferred: number;
72
+ warning?: string;
73
+ }>;
74
+ /**
75
+ * Compare two files and return diff output.
76
+ */
77
+ diffFiles(host1: HostConfig, path1: string, host2: HostConfig, path2: string, contextLines: number): Promise<string>;
78
+ }
79
+ //# sourceMappingURL=file-service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-service.d.ts","sourceRoot":"","sources":["../../src/services/file-service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAuBjE;;;;;;;GAOG;AACH,qBAAa,WAAY,YAAW,YAAY;IAClC,OAAO,CAAC,QAAQ,CAAC,UAAU;gBAAV,UAAU,EAAE,WAAW;IAEpD;;OAEG;IACH,OAAO,CAAC,YAAY;IAIpB;;;;;;;;OAQG;IACH,OAAO,CAAC,wBAAwB;IAgChC;;OAEG;IACG,QAAQ,CACZ,IAAI,EAAE,UAAU,EAChB,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,GACd,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,OAAO,CAAA;KAAE,CAAC;IAqBjE;;OAEG;IACG,aAAa,CAAC,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC;IAYzF;;OAEG;IACG,aAAa,CAAC,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAcnF;;;;;OAKG;IACG,cAAc,CAClB,IAAI,EAAE,UAAU,EAChB,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,GACd,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;IAmBhD;;OAEG;IACG,SAAS,CACb,IAAI,EAAE,UAAU,EAChB,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,OAAO,EAAE;QAAE,IAAI,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,GACrE,OAAO,CAAC,MAAM,CAAC;IAgClB;;;;;;;OAOG;IACG,YAAY,CAChB,UAAU,EAAE,UAAU,EACtB,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,UAAU,EACtB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC;QAAE,gBAAgB,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IA+D1D;;OAEG;IACG,SAAS,CACb,KAAK,EAAE,UAAU,EACjB,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,UAAU,EACjB,KAAK,EAAE,MAAM,EACb,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,MAAM,CAAC;CAiCnB"}
@@ -0,0 +1,226 @@
1
+ import { validateSecurePath, escapeShellArg, isSystemPath } from "../utils/path-security.js";
2
+ import { ALLOWED_COMMANDS, ENV_ALLOW_ANY_COMMAND, DEFAULT_COMMAND_TIMEOUT, MAX_COMMAND_TIMEOUT, MAX_TREE_DEPTH, MAX_FIND_LIMIT, MAX_DIFF_CONTEXT_LINES } from "../constants.js";
3
+ /**
4
+ * Validates that a number is a safe positive integer for shell interpolation.
5
+ * Prevents injection via malformed numbers like "5; rm -rf /".
6
+ */
7
+ function validatePositiveInt(value, name, max) {
8
+ if (!Number.isInteger(value) || value < 1 || value > max) {
9
+ throw new Error(`${name} must be an integer between 1 and ${max}, got: ${value}`);
10
+ }
11
+ return value;
12
+ }
13
+ /**
14
+ * File service implementation for remote file operations via SSH.
15
+ * Provides secure file reading, directory listing, command execution,
16
+ * and file transfer capabilities across hosts.
17
+ *
18
+ * SECURITY: All paths are validated to prevent directory traversal attacks.
19
+ * Commands are validated against an allowlist unless explicitly overridden.
20
+ */
21
+ export class FileService {
22
+ sshService;
23
+ constructor(sshService) {
24
+ this.sshService = sshService;
25
+ }
26
+ /**
27
+ * Validates a path for security issues (directory traversal, etc.)
28
+ */
29
+ validatePath(path) {
30
+ validateSecurePath(path, "path");
31
+ }
32
+ /**
33
+ * Parses and validates a command, returning the safe escaped version.
34
+ * Validates base command against allowlist and escapes all arguments.
35
+ * Can be bypassed with HOMELAB_ALLOW_ANY_COMMAND=true env var.
36
+ *
37
+ * SECURITY: This prevents command injection via arguments like:
38
+ * "ls -la; rm -rf /" -> base="ls" passes, but "; rm -rf /" would execute
39
+ * Fix: Split into ["ls", "-la;", "rm", "-rf", "/"], escape each part
40
+ */
41
+ validateAndEscapeCommand(command) {
42
+ const allowAny = process.env[ENV_ALLOW_ANY_COMMAND] === "true";
43
+ // Split command into parts (handles multiple spaces)
44
+ const parts = command.trim().split(/\s+/).filter((p) => p.length > 0);
45
+ if (parts.length === 0) {
46
+ throw new Error("Command cannot be empty");
47
+ }
48
+ const baseCommand = parts[0];
49
+ // Validate base command against allowlist (unless bypassed)
50
+ if (!allowAny && !ALLOWED_COMMANDS.has(baseCommand)) {
51
+ throw new Error(`Command '${baseCommand}' not in allowed list. ` +
52
+ `Allowed: ${[...ALLOWED_COMMANDS].join(", ")}. ` +
53
+ `Set ${ENV_ALLOW_ANY_COMMAND}=true to allow any command.`);
54
+ }
55
+ // Escape all arguments individually to prevent injection
56
+ // Base command is NOT escaped (it's validated against allowlist)
57
+ // Arguments ARE escaped to prevent shell metacharacter injection
58
+ if (parts.length === 1) {
59
+ return baseCommand;
60
+ }
61
+ const escapedArgs = parts.slice(1).map((arg) => escapeShellArg(arg));
62
+ return `${baseCommand} ${escapedArgs.join(" ")}`;
63
+ }
64
+ /**
65
+ * Read content from a file on a remote host.
66
+ */
67
+ async readFile(host, path, maxSize) {
68
+ this.validatePath(path);
69
+ const escapedPath = escapeShellArg(path);
70
+ // Read maxSize + 1 bytes to detect if truncation is needed
71
+ const command = `cat ${escapedPath} | head -c ${maxSize + 1}`;
72
+ const output = await this.sshService.executeSSHCommand(host, command, [], {
73
+ timeoutMs: DEFAULT_COMMAND_TIMEOUT
74
+ });
75
+ const truncated = output.length > maxSize;
76
+ const content = truncated ? output.slice(0, maxSize) : output;
77
+ return {
78
+ content,
79
+ size: output.length,
80
+ truncated
81
+ };
82
+ }
83
+ /**
84
+ * List contents of a directory on a remote host.
85
+ */
86
+ async listDirectory(host, path, showHidden) {
87
+ this.validatePath(path);
88
+ const escapedPath = escapeShellArg(path);
89
+ const flags = showHidden ? "-la" : "-l";
90
+ const command = `ls ${flags} ${escapedPath}`;
91
+ return this.sshService.executeSSHCommand(host, command, [], {
92
+ timeoutMs: DEFAULT_COMMAND_TIMEOUT
93
+ });
94
+ }
95
+ /**
96
+ * Get tree representation of a directory structure.
97
+ */
98
+ async treeDirectory(host, path, depth) {
99
+ this.validatePath(path);
100
+ // Validate depth is a safe integer to prevent injection
101
+ const safeDepth = validatePositiveInt(depth, "depth", MAX_TREE_DEPTH);
102
+ const escapedPath = escapeShellArg(path);
103
+ const command = `tree -L ${safeDepth} ${escapedPath}`;
104
+ return this.sshService.executeSSHCommand(host, command, [], {
105
+ timeoutMs: DEFAULT_COMMAND_TIMEOUT
106
+ });
107
+ }
108
+ /**
109
+ * Execute a command in a working directory on a remote host.
110
+ *
111
+ * SECURITY: Command is validated against allowlist and all arguments
112
+ * are individually escaped to prevent injection attacks.
113
+ */
114
+ async executeCommand(host, path, command, timeout) {
115
+ this.validatePath(path);
116
+ // Validate timeout is a safe integer
117
+ const safeTimeout = validatePositiveInt(timeout, "timeout", MAX_COMMAND_TIMEOUT);
118
+ // Validate base command and escape all arguments
119
+ const safeCommand = this.validateAndEscapeCommand(command);
120
+ const escapedPath = escapeShellArg(path);
121
+ const fullCommand = `cd ${escapedPath} && ${safeCommand}`;
122
+ const stdout = await this.sshService.executeSSHCommand(host, fullCommand, [], {
123
+ timeoutMs: safeTimeout
124
+ });
125
+ return { stdout, exitCode: 0 };
126
+ }
127
+ /**
128
+ * Find files matching a pattern on a remote host.
129
+ */
130
+ async findFiles(host, path, pattern, options) {
131
+ this.validatePath(path);
132
+ const escapedPath = escapeShellArg(path);
133
+ const escapedPattern = escapeShellArg(pattern);
134
+ let command = `find ${escapedPath}`;
135
+ // Validate and add maxDepth if provided
136
+ if (options.maxDepth !== undefined) {
137
+ const safeMaxDepth = validatePositiveInt(options.maxDepth, "maxDepth", MAX_TREE_DEPTH);
138
+ command += ` -maxdepth ${safeMaxDepth}`;
139
+ }
140
+ // Type is validated by TypeScript (literal union), safe to use directly
141
+ if (options.type) {
142
+ command += ` -type ${options.type}`;
143
+ }
144
+ command += ` -name ${escapedPattern}`;
145
+ // Validate and add limit if provided
146
+ if (options.limit !== undefined) {
147
+ const safeLimit = validatePositiveInt(options.limit, "limit", MAX_FIND_LIMIT);
148
+ command += ` | head -n ${safeLimit}`;
149
+ }
150
+ return this.sshService.executeSSHCommand(host, command, [], {
151
+ timeoutMs: DEFAULT_COMMAND_TIMEOUT
152
+ });
153
+ }
154
+ /**
155
+ * Transfer a file between hosts via SSH cat piping.
156
+ *
157
+ * SECURITY: Uses SSH cat piping instead of SCP to avoid path escaping
158
+ * issues with the user@host:path format. The source path is escaped
159
+ * for the source shell, and the target path is separately escaped
160
+ * inside the SSH command for the target shell.
161
+ */
162
+ async transferFile(sourceHost, sourcePath, targetHost, targetPath) {
163
+ this.validatePath(sourcePath);
164
+ this.validatePath(targetPath);
165
+ let warning;
166
+ if (isSystemPath(targetPath)) {
167
+ warning = `Warning: target is a system path (${targetPath}). Proceed with caution.`;
168
+ }
169
+ const escapedSource = escapeShellArg(sourcePath);
170
+ // Get file size first
171
+ const sizeOutput = await this.sshService.executeSSHCommand(sourceHost, `stat -c %s ${escapedSource}`, [], { timeoutMs: DEFAULT_COMMAND_TIMEOUT });
172
+ const sizeStr = sizeOutput.trim();
173
+ const size = parseInt(sizeStr, 10);
174
+ if (isNaN(size) || size < 0) {
175
+ throw new Error(`Failed to get file size: stat returned '${sizeStr}'`);
176
+ }
177
+ // For same-host transfers, use simple cp
178
+ if (sourceHost.name === targetHost.name) {
179
+ const escapedTarget = escapeShellArg(targetPath);
180
+ await this.sshService.executeSSHCommand(sourceHost, `cp ${escapedSource} ${escapedTarget}`, [], { timeoutMs: 300000 });
181
+ return { bytesTransferred: size, warning };
182
+ }
183
+ // For cross-host transfers, use SSH cat piping
184
+ // This avoids SCP's path escaping issues with user@host:path format
185
+ // Command: cat /source/path | ssh user@target 'cat > /target/path'
186
+ const targetUser = targetHost.sshUser || "root";
187
+ const escapedTarget = escapeShellArg(targetPath);
188
+ // The target path needs to be escaped twice:
189
+ // 1. For the source host's shell (outer escapeShellArg)
190
+ // 2. For the target host's shell (inner escapeShellArg already applied)
191
+ // We wrap the entire remote command in single quotes, so we need to
192
+ // escape any single quotes in the target path for the outer shell
193
+ const remoteCmd = `cat > ${escapedTarget}`;
194
+ const escapedRemoteCmd = escapeShellArg(remoteCmd);
195
+ const transferCmd = `cat ${escapedSource} | ssh ${targetUser}@${targetHost.host} ${escapedRemoteCmd}`;
196
+ await this.sshService.executeSSHCommand(sourceHost, transferCmd, [], { timeoutMs: 300000 } // 5 minute timeout for transfers
197
+ );
198
+ return { bytesTransferred: size, warning };
199
+ }
200
+ /**
201
+ * Compare two files and return diff output.
202
+ */
203
+ async diffFiles(host1, path1, host2, path2, contextLines) {
204
+ this.validatePath(path1);
205
+ this.validatePath(path2);
206
+ // Validate contextLines is a safe integer
207
+ const safeContextLines = validatePositiveInt(contextLines, "contextLines", MAX_DIFF_CONTEXT_LINES);
208
+ // Same host: direct diff
209
+ if (host1.name === host2.name) {
210
+ const escapedPath1 = escapeShellArg(path1);
211
+ const escapedPath2 = escapeShellArg(path2);
212
+ // Use || true to prevent non-zero exit code when files differ
213
+ return this.sshService.executeSSHCommand(host1, `diff -u -U ${safeContextLines} ${escapedPath1} ${escapedPath2} || true`, [], { timeoutMs: DEFAULT_COMMAND_TIMEOUT });
214
+ }
215
+ // Cross-host: read both files and compare
216
+ const [content1, content2] = await Promise.all([
217
+ this.readFile(host1, path1, 10485760), // 10MB max
218
+ this.readFile(host2, path2, 10485760)
219
+ ]);
220
+ if (content1.content === content2.content) {
221
+ return "(files are identical)";
222
+ }
223
+ return `--- ${host1.name}:${path1}\n+++ ${host2.name}:${path2}\n@@ differences exist (cross-host diff) @@`;
224
+ }
225
+ }
226
+ //# sourceMappingURL=file-service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-service.js","sourceRoot":"","sources":["../../src/services/file-service.ts"],"names":[],"mappings":"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"}