@vicoa/cli 1.3.14-win32-x64 → 1.3.14

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 (387) hide show
  1. package/README.md +82 -0
  2. package/bin/vicoa.js +38 -0
  3. package/package.json +29 -10
  4. package/bin/_internal/81d243bd2c585b0f4821__mypyc.cp312-win_amd64.pyd +0 -0
  5. package/bin/_internal/VCRUNTIME140.dll +0 -0
  6. package/bin/_internal/VCRUNTIME140_1.dll +0 -0
  7. package/bin/_internal/_asyncio.pyd +0 -0
  8. package/bin/_internal/_bz2.pyd +0 -0
  9. package/bin/_internal/_cffi_backend.cp312-win_amd64.pyd +0 -0
  10. package/bin/_internal/_ctypes.pyd +0 -0
  11. package/bin/_internal/_decimal.pyd +0 -0
  12. package/bin/_internal/_elementtree.pyd +0 -0
  13. package/bin/_internal/_hashlib.pyd +0 -0
  14. package/bin/_internal/_lzma.pyd +0 -0
  15. package/bin/_internal/_multiprocessing.pyd +0 -0
  16. package/bin/_internal/_overlapped.pyd +0 -0
  17. package/bin/_internal/_queue.pyd +0 -0
  18. package/bin/_internal/_socket.pyd +0 -0
  19. package/bin/_internal/_ssl.pyd +0 -0
  20. package/bin/_internal/_uuid.pyd +0 -0
  21. package/bin/_internal/_wmi.pyd +0 -0
  22. package/bin/_internal/_zoneinfo.pyd +0 -0
  23. package/bin/_internal/aiofile-3.9.0.dist-info/INSTALLER +0 -1
  24. package/bin/_internal/aiofile-3.9.0.dist-info/LICENCE +0 -195
  25. package/bin/_internal/aiofile-3.9.0.dist-info/LICENCE.md +0 -195
  26. package/bin/_internal/aiofile-3.9.0.dist-info/METADATA +0 -492
  27. package/bin/_internal/aiofile-3.9.0.dist-info/RECORD +0 -15
  28. package/bin/_internal/aiofile-3.9.0.dist-info/WHEEL +0 -4
  29. package/bin/_internal/aiohttp/_http_parser.cp312-win_amd64.pyd +0 -0
  30. package/bin/_internal/aiohttp/_http_writer.cp312-win_amd64.pyd +0 -0
  31. package/bin/_internal/aiohttp/_websocket/mask.cp312-win_amd64.pyd +0 -0
  32. package/bin/_internal/aiohttp/_websocket/reader_c.cp312-win_amd64.pyd +0 -0
  33. package/bin/_internal/api-ms-win-core-console-l1-1-0.dll +0 -0
  34. package/bin/_internal/api-ms-win-core-datetime-l1-1-0.dll +0 -0
  35. package/bin/_internal/api-ms-win-core-debug-l1-1-0.dll +0 -0
  36. package/bin/_internal/api-ms-win-core-errorhandling-l1-1-0.dll +0 -0
  37. package/bin/_internal/api-ms-win-core-fibers-l1-1-0.dll +0 -0
  38. package/bin/_internal/api-ms-win-core-fibers-l1-1-1.dll +0 -0
  39. package/bin/_internal/api-ms-win-core-file-l1-1-0.dll +0 -0
  40. package/bin/_internal/api-ms-win-core-file-l1-2-0.dll +0 -0
  41. package/bin/_internal/api-ms-win-core-file-l2-1-0.dll +0 -0
  42. package/bin/_internal/api-ms-win-core-handle-l1-1-0.dll +0 -0
  43. package/bin/_internal/api-ms-win-core-heap-l1-1-0.dll +0 -0
  44. package/bin/_internal/api-ms-win-core-interlocked-l1-1-0.dll +0 -0
  45. package/bin/_internal/api-ms-win-core-kernel32-legacy-l1-1-1.dll +0 -0
  46. package/bin/_internal/api-ms-win-core-libraryloader-l1-1-0.dll +0 -0
  47. package/bin/_internal/api-ms-win-core-localization-l1-2-0.dll +0 -0
  48. package/bin/_internal/api-ms-win-core-memory-l1-1-0.dll +0 -0
  49. package/bin/_internal/api-ms-win-core-namedpipe-l1-1-0.dll +0 -0
  50. package/bin/_internal/api-ms-win-core-processenvironment-l1-1-0.dll +0 -0
  51. package/bin/_internal/api-ms-win-core-processthreads-l1-1-0.dll +0 -0
  52. package/bin/_internal/api-ms-win-core-processthreads-l1-1-1.dll +0 -0
  53. package/bin/_internal/api-ms-win-core-profile-l1-1-0.dll +0 -0
  54. package/bin/_internal/api-ms-win-core-rtlsupport-l1-1-0.dll +0 -0
  55. package/bin/_internal/api-ms-win-core-string-l1-1-0.dll +0 -0
  56. package/bin/_internal/api-ms-win-core-synch-l1-1-0.dll +0 -0
  57. package/bin/_internal/api-ms-win-core-synch-l1-2-0.dll +0 -0
  58. package/bin/_internal/api-ms-win-core-sysinfo-l1-1-0.dll +0 -0
  59. package/bin/_internal/api-ms-win-core-sysinfo-l1-2-0.dll +0 -0
  60. package/bin/_internal/api-ms-win-core-timezone-l1-1-0.dll +0 -0
  61. package/bin/_internal/api-ms-win-core-util-l1-1-0.dll +0 -0
  62. package/bin/_internal/api-ms-win-crt-conio-l1-1-0.dll +0 -0
  63. package/bin/_internal/api-ms-win-crt-convert-l1-1-0.dll +0 -0
  64. package/bin/_internal/api-ms-win-crt-environment-l1-1-0.dll +0 -0
  65. package/bin/_internal/api-ms-win-crt-filesystem-l1-1-0.dll +0 -0
  66. package/bin/_internal/api-ms-win-crt-heap-l1-1-0.dll +0 -0
  67. package/bin/_internal/api-ms-win-crt-locale-l1-1-0.dll +0 -0
  68. package/bin/_internal/api-ms-win-crt-math-l1-1-0.dll +0 -0
  69. package/bin/_internal/api-ms-win-crt-process-l1-1-0.dll +0 -0
  70. package/bin/_internal/api-ms-win-crt-runtime-l1-1-0.dll +0 -0
  71. package/bin/_internal/api-ms-win-crt-stdio-l1-1-0.dll +0 -0
  72. package/bin/_internal/api-ms-win-crt-string-l1-1-0.dll +0 -0
  73. package/bin/_internal/api-ms-win-crt-time-l1-1-0.dll +0 -0
  74. package/bin/_internal/api-ms-win-crt-utility-l1-1-0.dll +0 -0
  75. package/bin/_internal/attrs-26.1.0.dist-info/INSTALLER +0 -1
  76. package/bin/_internal/attrs-26.1.0.dist-info/METADATA +0 -199
  77. package/bin/_internal/attrs-26.1.0.dist-info/RECORD +0 -55
  78. package/bin/_internal/attrs-26.1.0.dist-info/WHEEL +0 -4
  79. package/bin/_internal/attrs-26.1.0.dist-info/licenses/LICENSE +0 -21
  80. package/bin/_internal/base_library.zip +0 -0
  81. package/bin/_internal/certifi/cacert.pem +0 -3933
  82. package/bin/_internal/certifi/py.typed +0 -0
  83. package/bin/_internal/charset_normalizer/cd.cp312-win_amd64.pyd +0 -0
  84. package/bin/_internal/charset_normalizer/md.cp312-win_amd64.pyd +0 -0
  85. package/bin/_internal/click-8.3.2.dist-info/INSTALLER +0 -1
  86. package/bin/_internal/click-8.3.2.dist-info/METADATA +0 -84
  87. package/bin/_internal/click-8.3.2.dist-info/RECORD +0 -40
  88. package/bin/_internal/click-8.3.2.dist-info/WHEEL +0 -4
  89. package/bin/_internal/click-8.3.2.dist-info/licenses/LICENSE.txt +0 -28
  90. package/bin/_internal/cryptography/hazmat/bindings/_rust.pyd +0 -0
  91. package/bin/_internal/cryptography-47.0.0.dist-info/INSTALLER +0 -1
  92. package/bin/_internal/cryptography-47.0.0.dist-info/METADATA +0 -112
  93. package/bin/_internal/cryptography-47.0.0.dist-info/RECORD +0 -195
  94. package/bin/_internal/cryptography-47.0.0.dist-info/WHEEL +0 -4
  95. package/bin/_internal/cryptography-47.0.0.dist-info/licenses/LICENSE +0 -3
  96. package/bin/_internal/cryptography-47.0.0.dist-info/licenses/LICENSE.APACHE +0 -202
  97. package/bin/_internal/cryptography-47.0.0.dist-info/licenses/LICENSE.BSD +0 -27
  98. package/bin/_internal/cryptography-47.0.0.dist-info/sboms/cryptography-rust.cyclonedx.json +0 -1363
  99. package/bin/_internal/cryptography-47.0.0.dist-info/sboms/sbom.json +0 -43
  100. package/bin/_internal/docutils/docutils.conf +0 -5
  101. package/bin/_internal/docutils/parsers/rst/include/README.rst +0 -17
  102. package/bin/_internal/docutils/parsers/rst/include/html-roles.txt +0 -45
  103. package/bin/_internal/docutils/parsers/rst/include/isoamsa.txt +0 -162
  104. package/bin/_internal/docutils/parsers/rst/include/isoamsb.txt +0 -126
  105. package/bin/_internal/docutils/parsers/rst/include/isoamsc.txt +0 -29
  106. package/bin/_internal/docutils/parsers/rst/include/isoamsn.txt +0 -96
  107. package/bin/_internal/docutils/parsers/rst/include/isoamso.txt +0 -62
  108. package/bin/_internal/docutils/parsers/rst/include/isoamsr.txt +0 -191
  109. package/bin/_internal/docutils/parsers/rst/include/isobox.txt +0 -46
  110. package/bin/_internal/docutils/parsers/rst/include/isocyr1.txt +0 -73
  111. package/bin/_internal/docutils/parsers/rst/include/isocyr2.txt +0 -32
  112. package/bin/_internal/docutils/parsers/rst/include/isodia.txt +0 -20
  113. package/bin/_internal/docutils/parsers/rst/include/isogrk1.txt +0 -55
  114. package/bin/_internal/docutils/parsers/rst/include/isogrk2.txt +0 -26
  115. package/bin/_internal/docutils/parsers/rst/include/isogrk3.txt +0 -52
  116. package/bin/_internal/docutils/parsers/rst/include/isogrk4-wide.txt +0 -49
  117. package/bin/_internal/docutils/parsers/rst/include/isogrk4.txt +0 -8
  118. package/bin/_internal/docutils/parsers/rst/include/isolat1.txt +0 -68
  119. package/bin/_internal/docutils/parsers/rst/include/isolat2.txt +0 -128
  120. package/bin/_internal/docutils/parsers/rst/include/isomfrk-wide.txt +0 -58
  121. package/bin/_internal/docutils/parsers/rst/include/isomfrk.txt +0 -11
  122. package/bin/_internal/docutils/parsers/rst/include/isomopf-wide.txt +0 -32
  123. package/bin/_internal/docutils/parsers/rst/include/isomopf.txt +0 -13
  124. package/bin/_internal/docutils/parsers/rst/include/isomscr-wide.txt +0 -58
  125. package/bin/_internal/docutils/parsers/rst/include/isomscr.txt +0 -17
  126. package/bin/_internal/docutils/parsers/rst/include/isonum.txt +0 -82
  127. package/bin/_internal/docutils/parsers/rst/include/isopub.txt +0 -90
  128. package/bin/_internal/docutils/parsers/rst/include/isotech.txt +0 -168
  129. package/bin/_internal/docutils/parsers/rst/include/mmlalias.txt +0 -554
  130. package/bin/_internal/docutils/parsers/rst/include/mmlextra-wide.txt +0 -113
  131. package/bin/_internal/docutils/parsers/rst/include/mmlextra.txt +0 -87
  132. package/bin/_internal/docutils/parsers/rst/include/s5defs.txt +0 -68
  133. package/bin/_internal/docutils/parsers/rst/include/xhtml1-lat1.txt +0 -102
  134. package/bin/_internal/docutils/parsers/rst/include/xhtml1-special.txt +0 -37
  135. package/bin/_internal/docutils/parsers/rst/include/xhtml1-symbol.txt +0 -130
  136. package/bin/_internal/docutils/writers/html4css1/html4css1.css +0 -350
  137. package/bin/_internal/docutils/writers/html4css1/template.txt +0 -8
  138. package/bin/_internal/docutils/writers/html5_polyglot/italic-field-names.css +0 -26
  139. package/bin/_internal/docutils/writers/html5_polyglot/math.css +0 -332
  140. package/bin/_internal/docutils/writers/html5_polyglot/minimal.css +0 -298
  141. package/bin/_internal/docutils/writers/html5_polyglot/plain.css +0 -306
  142. package/bin/_internal/docutils/writers/html5_polyglot/responsive.css +0 -495
  143. package/bin/_internal/docutils/writers/html5_polyglot/template.txt +0 -8
  144. package/bin/_internal/docutils/writers/html5_polyglot/tuftig.css +0 -565
  145. package/bin/_internal/docutils/writers/latex2e/default.tex +0 -14
  146. package/bin/_internal/docutils/writers/latex2e/docutils.sty +0 -273
  147. package/bin/_internal/docutils/writers/latex2e/titlepage.tex +0 -19
  148. package/bin/_internal/docutils/writers/latex2e/titlingpage.tex +0 -18
  149. package/bin/_internal/docutils/writers/latex2e/xelatex.tex +0 -21
  150. package/bin/_internal/docutils/writers/odf_odt/styles.odt +0 -0
  151. package/bin/_internal/docutils/writers/pep_html/pep.css +0 -344
  152. package/bin/_internal/docutils/writers/pep_html/template.txt +0 -25
  153. package/bin/_internal/docutils/writers/s5_html/themes/README.rst +0 -6
  154. package/bin/_internal/docutils/writers/s5_html/themes/big-black/__base__ +0 -2
  155. package/bin/_internal/docutils/writers/s5_html/themes/big-black/framing.css +0 -25
  156. package/bin/_internal/docutils/writers/s5_html/themes/big-black/pretty.css +0 -109
  157. package/bin/_internal/docutils/writers/s5_html/themes/big-white/framing.css +0 -24
  158. package/bin/_internal/docutils/writers/s5_html/themes/big-white/pretty.css +0 -107
  159. package/bin/_internal/docutils/writers/s5_html/themes/default/framing.css +0 -25
  160. package/bin/_internal/docutils/writers/s5_html/themes/default/opera.css +0 -8
  161. package/bin/_internal/docutils/writers/s5_html/themes/default/outline.css +0 -16
  162. package/bin/_internal/docutils/writers/s5_html/themes/default/pretty.css +0 -120
  163. package/bin/_internal/docutils/writers/s5_html/themes/default/print.css +0 -24
  164. package/bin/_internal/docutils/writers/s5_html/themes/default/s5-core.css +0 -11
  165. package/bin/_internal/docutils/writers/s5_html/themes/default/slides.css +0 -10
  166. package/bin/_internal/docutils/writers/s5_html/themes/default/slides.js +0 -558
  167. package/bin/_internal/docutils/writers/s5_html/themes/medium-black/__base__ +0 -2
  168. package/bin/_internal/docutils/writers/s5_html/themes/medium-black/pretty.css +0 -115
  169. package/bin/_internal/docutils/writers/s5_html/themes/medium-white/framing.css +0 -24
  170. package/bin/_internal/docutils/writers/s5_html/themes/medium-white/pretty.css +0 -113
  171. package/bin/_internal/docutils/writers/s5_html/themes/small-black/__base__ +0 -2
  172. package/bin/_internal/docutils/writers/s5_html/themes/small-black/pretty.css +0 -116
  173. package/bin/_internal/docutils/writers/s5_html/themes/small-white/framing.css +0 -24
  174. package/bin/_internal/docutils/writers/s5_html/themes/small-white/pretty.css +0 -114
  175. package/bin/_internal/email_validator-2.3.0.dist-info/INSTALLER +0 -1
  176. package/bin/_internal/email_validator-2.3.0.dist-info/METADATA +0 -466
  177. package/bin/_internal/email_validator-2.3.0.dist-info/RECORD +0 -27
  178. package/bin/_internal/email_validator-2.3.0.dist-info/WHEEL +0 -5
  179. package/bin/_internal/email_validator-2.3.0.dist-info/entry_points.txt +0 -2
  180. package/bin/_internal/email_validator-2.3.0.dist-info/licenses/LICENSE +0 -27
  181. package/bin/_internal/email_validator-2.3.0.dist-info/top_level.txt +0 -1
  182. package/bin/_internal/frozenlist/_frozenlist.cp312-win_amd64.pyd +0 -0
  183. package/bin/_internal/importlib_metadata-8.7.1.dist-info/INSTALLER +0 -1
  184. package/bin/_internal/importlib_metadata-8.7.1.dist-info/METADATA +0 -133
  185. package/bin/_internal/importlib_metadata-8.7.1.dist-info/RECORD +0 -33
  186. package/bin/_internal/importlib_metadata-8.7.1.dist-info/WHEEL +0 -5
  187. package/bin/_internal/importlib_metadata-8.7.1.dist-info/licenses/LICENSE +0 -73
  188. package/bin/_internal/importlib_metadata-8.7.1.dist-info/top_level.txt +0 -1
  189. package/bin/_internal/integrations/cli_wrappers/IMPORTANT_USE_CASES.md +0 -33
  190. package/bin/_internal/integrations/github/claude-code-action/CLAUDE.md +0 -136
  191. package/bin/_internal/integrations/github/claude-code-action/CODE_OF_CONDUCT.md +0 -128
  192. package/bin/_internal/integrations/github/claude-code-action/CONTRIBUTING.md +0 -116
  193. package/bin/_internal/integrations/github/claude-code-action/LICENSE +0 -21
  194. package/bin/_internal/integrations/github/claude-code-action/README.md +0 -53
  195. package/bin/_internal/integrations/github/claude-code-action/ROADMAP.md +0 -20
  196. package/bin/_internal/integrations/github/claude-code-action/SECURITY.md +0 -15
  197. package/bin/_internal/integrations/github/claude-code-action/action.yml +0 -294
  198. package/bin/_internal/integrations/github/claude-code-action/base-action/CLAUDE.md +0 -60
  199. package/bin/_internal/integrations/github/claude-code-action/base-action/CODE_OF_CONDUCT.md +0 -128
  200. package/bin/_internal/integrations/github/claude-code-action/base-action/CONTRIBUTING.md +0 -136
  201. package/bin/_internal/integrations/github/claude-code-action/base-action/LICENSE +0 -21
  202. package/bin/_internal/integrations/github/claude-code-action/base-action/MIRROR_DISCLAIMER.md +0 -11
  203. package/bin/_internal/integrations/github/claude-code-action/base-action/README.md +0 -521
  204. package/bin/_internal/integrations/github/claude-code-action/base-action/action.yml +0 -149
  205. package/bin/_internal/integrations/github/claude-code-action/base-action/bun.lock +0 -54
  206. package/bin/_internal/integrations/github/claude-code-action/base-action/examples/issue-triage.yml +0 -108
  207. package/bin/_internal/integrations/github/claude-code-action/base-action/package.json +0 -23
  208. package/bin/_internal/integrations/github/claude-code-action/base-action/scripts/install-hooks.sh +0 -13
  209. package/bin/_internal/integrations/github/claude-code-action/base-action/scripts/pre-push +0 -46
  210. package/bin/_internal/integrations/github/claude-code-action/base-action/src/index.ts +0 -82
  211. package/bin/_internal/integrations/github/claude-code-action/base-action/src/prepare-prompt.ts +0 -82
  212. package/bin/_internal/integrations/github/claude-code-action/base-action/src/run-claude.ts +0 -257
  213. package/bin/_internal/integrations/github/claude-code-action/base-action/src/run-vicoa.ts +0 -301
  214. package/bin/_internal/integrations/github/claude-code-action/base-action/src/setup-claude-code-settings.ts +0 -68
  215. package/bin/_internal/integrations/github/claude-code-action/base-action/src/validate-env.ts +0 -54
  216. package/bin/_internal/integrations/github/claude-code-action/base-action/test-local.sh +0 -12
  217. package/bin/_internal/integrations/github/claude-code-action/base-action/test-mcp-local.sh +0 -18
  218. package/bin/_internal/integrations/github/claude-code-action/base-action/tsconfig.json +0 -30
  219. package/bin/_internal/integrations/github/claude-code-action/bun.lock +0 -384
  220. package/bin/_internal/integrations/github/claude-code-action/docs/capabilities-and-limitations.md +0 -33
  221. package/bin/_internal/integrations/github/claude-code-action/docs/cloud-providers.md +0 -99
  222. package/bin/_internal/integrations/github/claude-code-action/docs/configuration.md +0 -345
  223. package/bin/_internal/integrations/github/claude-code-action/docs/custom-automations.md +0 -113
  224. package/bin/_internal/integrations/github/claude-code-action/docs/experimental.md +0 -128
  225. package/bin/_internal/integrations/github/claude-code-action/docs/faq.md +0 -205
  226. package/bin/_internal/integrations/github/claude-code-action/docs/migration-guide.md +0 -261
  227. package/bin/_internal/integrations/github/claude-code-action/docs/security.md +0 -38
  228. package/bin/_internal/integrations/github/claude-code-action/docs/setup.md +0 -146
  229. package/bin/_internal/integrations/github/claude-code-action/docs/usage.md +0 -213
  230. package/bin/_internal/integrations/github/claude-code-action/examples/auto-fix-ci/auto-fix-ci.yml +0 -97
  231. package/bin/_internal/integrations/github/claude-code-action/examples/auto-fix-ci/commands/fix-ci.md +0 -127
  232. package/bin/_internal/integrations/github/claude-code-action/examples/auto-fix-ci-signed/auto-fix-ci-signed.yml +0 -97
  233. package/bin/_internal/integrations/github/claude-code-action/examples/auto-fix-ci-signed/commands/fix-ci-signed.md +0 -148
  234. package/bin/_internal/integrations/github/claude-code-action/examples/issue-deduplication.yml +0 -63
  235. package/bin/_internal/integrations/github/claude-code-action/examples/issue-triage.yml +0 -75
  236. package/bin/_internal/integrations/github/claude-code-action/examples/vicoa.yml +0 -75
  237. package/bin/_internal/integrations/github/claude-code-action/package.json +0 -31
  238. package/bin/_internal/integrations/github/claude-code-action/scripts/install-hooks.sh +0 -13
  239. package/bin/_internal/integrations/github/claude-code-action/scripts/pre-commit +0 -46
  240. package/bin/_internal/integrations/github/claude-code-action/scripts/setup-network-restrictions.sh +0 -123
  241. package/bin/_internal/integrations/github/claude-code-action/src/create-prompt/index.ts +0 -799
  242. package/bin/_internal/integrations/github/claude-code-action/src/create-prompt/types.ts +0 -102
  243. package/bin/_internal/integrations/github/claude-code-action/src/entrypoints/collect-inputs.ts +0 -58
  244. package/bin/_internal/integrations/github/claude-code-action/src/entrypoints/format-turns.ts +0 -465
  245. package/bin/_internal/integrations/github/claude-code-action/src/entrypoints/prepare.ts +0 -98
  246. package/bin/_internal/integrations/github/claude-code-action/src/entrypoints/update-comment-link.ts +0 -245
  247. package/bin/_internal/integrations/github/claude-code-action/src/github/api/client.ts +0 -23
  248. package/bin/_internal/integrations/github/claude-code-action/src/github/api/config.ts +0 -4
  249. package/bin/_internal/integrations/github/claude-code-action/src/github/api/queries/github.ts +0 -117
  250. package/bin/_internal/integrations/github/claude-code-action/src/github/context.ts +0 -277
  251. package/bin/_internal/integrations/github/claude-code-action/src/github/data/fetcher.ts +0 -233
  252. package/bin/_internal/integrations/github/claude-code-action/src/github/data/formatter.ts +0 -144
  253. package/bin/_internal/integrations/github/claude-code-action/src/github/operations/branch-cleanup.ts +0 -132
  254. package/bin/_internal/integrations/github/claude-code-action/src/github/operations/branch.ts +0 -163
  255. package/bin/_internal/integrations/github/claude-code-action/src/github/operations/comment-logic.ts +0 -203
  256. package/bin/_internal/integrations/github/claude-code-action/src/github/operations/comments/common.ts +0 -33
  257. package/bin/_internal/integrations/github/claude-code-action/src/github/operations/comments/create-initial.ts +0 -111
  258. package/bin/_internal/integrations/github/claude-code-action/src/github/operations/comments/update-claude-comment.ts +0 -70
  259. package/bin/_internal/integrations/github/claude-code-action/src/github/operations/comments/update-with-branch.ts +0 -57
  260. package/bin/_internal/integrations/github/claude-code-action/src/github/operations/git-config.ts +0 -62
  261. package/bin/_internal/integrations/github/claude-code-action/src/github/token.ts +0 -108
  262. package/bin/_internal/integrations/github/claude-code-action/src/github/types.ts +0 -98
  263. package/bin/_internal/integrations/github/claude-code-action/src/github/utils/image-downloader.ts +0 -246
  264. package/bin/_internal/integrations/github/claude-code-action/src/github/utils/sanitizer.ts +0 -100
  265. package/bin/_internal/integrations/github/claude-code-action/src/github/validation/actor.ts +0 -64
  266. package/bin/_internal/integrations/github/claude-code-action/src/github/validation/permissions.ts +0 -47
  267. package/bin/_internal/integrations/github/claude-code-action/src/github/validation/trigger.ts +0 -148
  268. package/bin/_internal/integrations/github/claude-code-action/src/mcp/github-actions-server.ts +0 -279
  269. package/bin/_internal/integrations/github/claude-code-action/src/mcp/github-comment-server.ts +0 -101
  270. package/bin/_internal/integrations/github/claude-code-action/src/mcp/github-file-ops-server.ts +0 -677
  271. package/bin/_internal/integrations/github/claude-code-action/src/mcp/github-inline-comment-server.ts +0 -184
  272. package/bin/_internal/integrations/github/claude-code-action/src/mcp/install-mcp-server.ts +0 -201
  273. package/bin/_internal/integrations/github/claude-code-action/src/modes/agent/index.ts +0 -152
  274. package/bin/_internal/integrations/github/claude-code-action/src/modes/agent/parse-tools.ts +0 -22
  275. package/bin/_internal/integrations/github/claude-code-action/src/modes/detector.ts +0 -66
  276. package/bin/_internal/integrations/github/claude-code-action/src/modes/registry.ts +0 -54
  277. package/bin/_internal/integrations/github/claude-code-action/src/modes/tag/index.ts +0 -187
  278. package/bin/_internal/integrations/github/claude-code-action/src/modes/types.ts +0 -100
  279. package/bin/_internal/integrations/github/claude-code-action/src/prepare/index.ts +0 -20
  280. package/bin/_internal/integrations/github/claude-code-action/src/prepare/types.ts +0 -20
  281. package/bin/_internal/integrations/github/claude-code-action/src/utils/retry.ts +0 -40
  282. package/bin/_internal/integrations/github/claude-code-action/tsconfig.json +0 -30
  283. package/bin/_internal/integrations/n8n/LICENSE +0 -21
  284. package/bin/_internal/integrations/n8n/README.md +0 -298
  285. package/bin/_internal/integrations/n8n/package-lock.json +0 -2989
  286. package/bin/_internal/integrations/n8n/package.json +0 -68
  287. package/bin/_internal/integrations/n8n/src/credentials/OmnaraApi.credentials.ts +0 -52
  288. package/bin/_internal/integrations/n8n/src/nodes/Omnara/Omnara.node.json +0 -35
  289. package/bin/_internal/integrations/n8n/src/nodes/Omnara/Omnara.node.ts +0 -304
  290. package/bin/_internal/integrations/n8n/src/nodes/Omnara/actions/message/index.ts +0 -37
  291. package/bin/_internal/integrations/n8n/src/nodes/Omnara/actions/message/send.operation.ts +0 -151
  292. package/bin/_internal/integrations/n8n/src/nodes/Omnara/actions/message/sendAndWait.operation.ts +0 -252
  293. package/bin/_internal/integrations/n8n/src/nodes/Omnara/actions/session/end.operation.ts +0 -56
  294. package/bin/_internal/integrations/n8n/src/nodes/Omnara/actions/session/index.ts +0 -29
  295. package/bin/_internal/integrations/n8n/src/nodes/Omnara/vicoa.png +0 -0
  296. package/bin/_internal/integrations/n8n/src/utils/GenericFunctions.ts +0 -93
  297. package/bin/_internal/integrations/n8n/src/utils/sendAndWait/configureWaitTillDate.ts +0 -42
  298. package/bin/_internal/integrations/n8n/src/utils/sendAndWait/descriptions.ts +0 -20
  299. package/bin/_internal/integrations/n8n/src/utils/sendAndWaitWebhook.ts +0 -72
  300. package/bin/_internal/integrations/n8n/tsconfig.json +0 -20
  301. package/bin/_internal/jiter/jiter.cp312-win_amd64.pyd +0 -0
  302. package/bin/_internal/jsonschema/benchmarks/issue232/issue.json +0 -2653
  303. package/bin/_internal/jsonschema-4.26.0.dist-info/INSTALLER +0 -1
  304. package/bin/_internal/jsonschema-4.26.0.dist-info/METADATA +0 -170
  305. package/bin/_internal/jsonschema-4.26.0.dist-info/RECORD +0 -82
  306. package/bin/_internal/jsonschema-4.26.0.dist-info/WHEEL +0 -4
  307. package/bin/_internal/jsonschema-4.26.0.dist-info/entry_points.txt +0 -2
  308. package/bin/_internal/jsonschema-4.26.0.dist-info/licenses/COPYING +0 -19
  309. package/bin/_internal/jsonschema_specifications/schemas/draft201909/metaschema.json +0 -42
  310. package/bin/_internal/jsonschema_specifications/schemas/draft201909/vocabularies/applicator +0 -56
  311. package/bin/_internal/jsonschema_specifications/schemas/draft201909/vocabularies/content +0 -17
  312. package/bin/_internal/jsonschema_specifications/schemas/draft201909/vocabularies/core +0 -57
  313. package/bin/_internal/jsonschema_specifications/schemas/draft201909/vocabularies/format +0 -14
  314. package/bin/_internal/jsonschema_specifications/schemas/draft201909/vocabularies/meta-data +0 -37
  315. package/bin/_internal/jsonschema_specifications/schemas/draft201909/vocabularies/validation +0 -98
  316. package/bin/_internal/jsonschema_specifications/schemas/draft202012/metaschema.json +0 -58
  317. package/bin/_internal/jsonschema_specifications/schemas/draft202012/vocabularies/applicator +0 -48
  318. package/bin/_internal/jsonschema_specifications/schemas/draft202012/vocabularies/content +0 -17
  319. package/bin/_internal/jsonschema_specifications/schemas/draft202012/vocabularies/core +0 -51
  320. package/bin/_internal/jsonschema_specifications/schemas/draft202012/vocabularies/format-annotation +0 -14
  321. package/bin/_internal/jsonschema_specifications/schemas/draft202012/vocabularies/format-assertion +0 -14
  322. package/bin/_internal/jsonschema_specifications/schemas/draft202012/vocabularies/meta-data +0 -37
  323. package/bin/_internal/jsonschema_specifications/schemas/draft202012/vocabularies/unevaluated +0 -15
  324. package/bin/_internal/jsonschema_specifications/schemas/draft202012/vocabularies/validation +0 -98
  325. package/bin/_internal/jsonschema_specifications/schemas/draft3/metaschema.json +0 -172
  326. package/bin/_internal/jsonschema_specifications/schemas/draft4/metaschema.json +0 -149
  327. package/bin/_internal/jsonschema_specifications/schemas/draft6/metaschema.json +0 -153
  328. package/bin/_internal/jsonschema_specifications/schemas/draft7/metaschema.json +0 -166
  329. package/bin/_internal/libcrypto-3.dll +0 -0
  330. package/bin/_internal/libffi-8.dll +0 -0
  331. package/bin/_internal/libssl-3.dll +0 -0
  332. package/bin/_internal/mcp-1.27.0.dist-info/INSTALLER +0 -1
  333. package/bin/_internal/mcp-1.27.0.dist-info/METADATA +0 -230
  334. package/bin/_internal/mcp-1.27.0.dist-info/RECORD +0 -226
  335. package/bin/_internal/mcp-1.27.0.dist-info/WHEEL +0 -4
  336. package/bin/_internal/mcp-1.27.0.dist-info/entry_points.txt +0 -2
  337. package/bin/_internal/mcp-1.27.0.dist-info/licenses/LICENSE +0 -21
  338. package/bin/_internal/multidict/_multidict.cp312-win_amd64.pyd +0 -0
  339. package/bin/_internal/opentelemetry_api-1.41.1.dist-info/INSTALLER +0 -1
  340. package/bin/_internal/opentelemetry_api-1.41.1.dist-info/METADATA +0 -45
  341. package/bin/_internal/opentelemetry_api-1.41.1.dist-info/RECORD +0 -81
  342. package/bin/_internal/opentelemetry_api-1.41.1.dist-info/WHEEL +0 -4
  343. package/bin/_internal/opentelemetry_api-1.41.1.dist-info/entry_points.txt +0 -15
  344. package/bin/_internal/opentelemetry_api-1.41.1.dist-info/licenses/LICENSE +0 -201
  345. package/bin/_internal/propcache/_helpers_c.cp312-win_amd64.pyd +0 -0
  346. package/bin/_internal/pydantic-2.13.3.dist-info/INSTALLER +0 -1
  347. package/bin/_internal/pydantic-2.13.3.dist-info/METADATA +0 -1279
  348. package/bin/_internal/pydantic-2.13.3.dist-info/RECORD +0 -217
  349. package/bin/_internal/pydantic-2.13.3.dist-info/WHEEL +0 -4
  350. package/bin/_internal/pydantic-2.13.3.dist-info/licenses/LICENSE +0 -21
  351. package/bin/_internal/pydantic_core/_pydantic_core.cp312-win_amd64.pyd +0 -0
  352. package/bin/_internal/pyexpat.pyd +0 -0
  353. package/bin/_internal/python3.dll +0 -0
  354. package/bin/_internal/python312.dll +0 -0
  355. package/bin/_internal/pywin32_system32/pythoncom312.dll +0 -0
  356. package/bin/_internal/pywin32_system32/pywintypes312.dll +0 -0
  357. package/bin/_internal/rpds/rpds.cp312-win_amd64.pyd +0 -0
  358. package/bin/_internal/select.pyd +0 -0
  359. package/bin/_internal/setuptools/_vendor/jaraco/text/Lorem ipsum.txt +0 -2
  360. package/bin/_internal/ucrtbase.dll +0 -0
  361. package/bin/_internal/unicodedata.pyd +0 -0
  362. package/bin/_internal/vicoa/_bin/README.md +0 -28
  363. package/bin/_internal/vicoa-1.3.14.dist-info/INSTALLER +0 -1
  364. package/bin/_internal/vicoa-1.3.14.dist-info/METADATA +0 -312
  365. package/bin/_internal/vicoa-1.3.14.dist-info/RECORD +0 -11
  366. package/bin/_internal/vicoa-1.3.14.dist-info/REQUESTED +0 -0
  367. package/bin/_internal/vicoa-1.3.14.dist-info/WHEEL +0 -5
  368. package/bin/_internal/vicoa-1.3.14.dist-info/direct_url.json +0 -1
  369. package/bin/_internal/vicoa-1.3.14.dist-info/entry_points.txt +0 -2
  370. package/bin/_internal/vicoa-1.3.14.dist-info/licenses/LICENSE +0 -201
  371. package/bin/_internal/vicoa-1.3.14.dist-info/top_level.txt +0 -3
  372. package/bin/_internal/watchfiles/_rust_notify.cp312-win_amd64.pyd +0 -0
  373. package/bin/_internal/websockets/speedups.cp312-win_amd64.pyd +0 -0
  374. package/bin/_internal/websockets-16.0.dist-info/INSTALLER +0 -1
  375. package/bin/_internal/websockets-16.0.dist-info/METADATA +0 -179
  376. package/bin/_internal/websockets-16.0.dist-info/RECORD +0 -108
  377. package/bin/_internal/websockets-16.0.dist-info/WHEEL +0 -5
  378. package/bin/_internal/websockets-16.0.dist-info/entry_points.txt +0 -2
  379. package/bin/_internal/websockets-16.0.dist-info/licenses/LICENSE +0 -24
  380. package/bin/_internal/websockets-16.0.dist-info/top_level.txt +0 -1
  381. package/bin/_internal/win32/_win32sysloader.pyd +0 -0
  382. package/bin/_internal/win32/win32api.pyd +0 -0
  383. package/bin/_internal/win32/win32evtlog.pyd +0 -0
  384. package/bin/_internal/win32/win32job.pyd +0 -0
  385. package/bin/_internal/yaml/_yaml.cp312-win_amd64.pyd +0 -0
  386. package/bin/_internal/yarl/_quoting_c.cp312-win_amd64.pyd +0 -0
  387. package/bin/vicoa.exe +0 -0
@@ -1,100 +0,0 @@
1
- export function stripInvisibleCharacters(content: string): string {
2
- content = content.replace(/[\u200B\u200C\u200D\uFEFF]/g, "");
3
- content = content.replace(
4
- /[\u0000-\u0008\u000B\u000C\u000E-\u001F\u007F-\u009F]/g,
5
- "",
6
- );
7
- content = content.replace(/\u00AD/g, "");
8
- content = content.replace(/[\u202A-\u202E\u2066-\u2069]/g, "");
9
- return content;
10
- }
11
-
12
- export function stripMarkdownImageAltText(content: string): string {
13
- return content.replace(/!\[[^\]]*\]\(/g, "![](");
14
- }
15
-
16
- export function stripMarkdownLinkTitles(content: string): string {
17
- content = content.replace(/(\[[^\]]*\]\([^)]+)\s+"[^"]*"/g, "$1");
18
- content = content.replace(/(\[[^\]]*\]\([^)]+)\s+'[^']*'/g, "$1");
19
- return content;
20
- }
21
-
22
- export function stripHiddenAttributes(content: string): string {
23
- content = content.replace(/\salt\s*=\s*["'][^"']*["']/gi, "");
24
- content = content.replace(/\salt\s*=\s*[^\s>]+/gi, "");
25
- content = content.replace(/\stitle\s*=\s*["'][^"']*["']/gi, "");
26
- content = content.replace(/\stitle\s*=\s*[^\s>]+/gi, "");
27
- content = content.replace(/\saria-label\s*=\s*["'][^"']*["']/gi, "");
28
- content = content.replace(/\saria-label\s*=\s*[^\s>]+/gi, "");
29
- content = content.replace(/\sdata-[a-zA-Z0-9-]+\s*=\s*["'][^"']*["']/gi, "");
30
- content = content.replace(/\sdata-[a-zA-Z0-9-]+\s*=\s*[^\s>]+/gi, "");
31
- content = content.replace(/\splaceholder\s*=\s*["'][^"']*["']/gi, "");
32
- content = content.replace(/\splaceholder\s*=\s*[^\s>]+/gi, "");
33
- return content;
34
- }
35
-
36
- export function normalizeHtmlEntities(content: string): string {
37
- content = content.replace(/&#(\d+);/g, (_, dec) => {
38
- const num = parseInt(dec, 10);
39
- if (num >= 32 && num <= 126) {
40
- return String.fromCharCode(num);
41
- }
42
- return "";
43
- });
44
- content = content.replace(/&#x([0-9a-fA-F]+);/g, (_, hex) => {
45
- const num = parseInt(hex, 16);
46
- if (num >= 32 && num <= 126) {
47
- return String.fromCharCode(num);
48
- }
49
- return "";
50
- });
51
- return content;
52
- }
53
-
54
- export function sanitizeContent(content: string): string {
55
- content = stripHtmlComments(content);
56
- content = stripInvisibleCharacters(content);
57
- content = stripMarkdownImageAltText(content);
58
- content = stripMarkdownLinkTitles(content);
59
- content = stripHiddenAttributes(content);
60
- content = normalizeHtmlEntities(content);
61
- content = redactGitHubTokens(content);
62
- return content;
63
- }
64
-
65
- export function redactGitHubTokens(content: string): string {
66
- // GitHub Personal Access Tokens (classic): ghp_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX (40 chars)
67
- content = content.replace(
68
- /\bghp_[A-Za-z0-9]{36}\b/g,
69
- "[REDACTED_GITHUB_TOKEN]",
70
- );
71
-
72
- // GitHub OAuth tokens: gho_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX (40 chars)
73
- content = content.replace(
74
- /\bgho_[A-Za-z0-9]{36}\b/g,
75
- "[REDACTED_GITHUB_TOKEN]",
76
- );
77
-
78
- // GitHub installation tokens: ghs_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX (40 chars)
79
- content = content.replace(
80
- /\bghs_[A-Za-z0-9]{36}\b/g,
81
- "[REDACTED_GITHUB_TOKEN]",
82
- );
83
-
84
- // GitHub refresh tokens: ghr_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX (40 chars)
85
- content = content.replace(
86
- /\bghr_[A-Za-z0-9]{36}\b/g,
87
- "[REDACTED_GITHUB_TOKEN]",
88
- );
89
-
90
- // GitHub fine-grained personal access tokens: github_pat_XXXXXXXXXX (up to 255 chars)
91
- content = content.replace(
92
- /\bgithub_pat_[A-Za-z0-9_]{11,221}\b/g,
93
- "[REDACTED_GITHUB_TOKEN]",
94
- );
95
-
96
- return content;
97
- }
98
-
99
- export const stripHtmlComments = (content: string) =>
100
- content.replace(/<!--[\s\S]*?-->/g, "");
@@ -1,64 +0,0 @@
1
- #!/usr/bin/env bun
2
-
3
- /**
4
- * Check if the action trigger is from a human actor
5
- * Prevents automated tools or bots from triggering Claude
6
- */
7
-
8
- import type { Octokit } from "@octokit/rest";
9
- import type { ParsedGitHubContext } from "../context";
10
-
11
- export async function checkHumanActor(
12
- octokit: Octokit,
13
- githubContext: ParsedGitHubContext,
14
- ) {
15
- // Fetch user information from GitHub API
16
- const { data: userData } = await octokit.users.getByUsername({
17
- username: githubContext.actor,
18
- });
19
-
20
- const actorType = userData.type;
21
-
22
- console.log(`Actor type: ${actorType}`);
23
-
24
- // Check bot permissions if actor is not a User
25
- if (actorType !== "User") {
26
- const allowedBots = githubContext.inputs.allowedBots;
27
-
28
- // Check if all bots are allowed
29
- if (allowedBots.trim() === "*") {
30
- console.log(
31
- `All bots are allowed, skipping human actor check for: ${githubContext.actor}`,
32
- );
33
- return;
34
- }
35
-
36
- // Parse allowed bots list
37
- const allowedBotsList = allowedBots
38
- .split(",")
39
- .map((bot) =>
40
- bot
41
- .trim()
42
- .toLowerCase()
43
- .replace(/\[bot\]$/, ""),
44
- )
45
- .filter((bot) => bot.length > 0);
46
-
47
- const botName = githubContext.actor.toLowerCase().replace(/\[bot\]$/, "");
48
-
49
- // Check if specific bot is allowed
50
- if (allowedBotsList.includes(botName)) {
51
- console.log(
52
- `Bot ${botName} is in allowed list, skipping human actor check`,
53
- );
54
- return;
55
- }
56
-
57
- // Bot not allowed
58
- throw new Error(
59
- `Workflow initiated by non-human actor: ${botName} (type: ${actorType}). Add bot to allowed_bots list or use '*' to allow all bots.`,
60
- );
61
- }
62
-
63
- console.log(`Verified human actor: ${githubContext.actor}`);
64
- }
@@ -1,47 +0,0 @@
1
- import * as core from "@actions/core";
2
- import type { ParsedGitHubContext } from "../context";
3
- import type { Octokit } from "@octokit/rest";
4
-
5
- /**
6
- * Check if the actor has write permissions to the repository
7
- * @param octokit - The Octokit REST client
8
- * @param context - The GitHub context
9
- * @returns true if the actor has write permissions, false otherwise
10
- */
11
- export async function checkWritePermissions(
12
- octokit: Octokit,
13
- context: ParsedGitHubContext,
14
- ): Promise<boolean> {
15
- const { repository, actor } = context;
16
-
17
- try {
18
- core.info(`Checking permissions for actor: ${actor}`);
19
-
20
- // Check if the actor is a GitHub App (bot user)
21
- if (actor.endsWith("[bot]")) {
22
- core.info(`Actor is a GitHub App: ${actor}`);
23
- return true;
24
- }
25
-
26
- // Check permissions directly using the permission endpoint
27
- const response = await octokit.repos.getCollaboratorPermissionLevel({
28
- owner: repository.owner,
29
- repo: repository.repo,
30
- username: actor,
31
- });
32
-
33
- const permissionLevel = response.data.permission;
34
- core.info(`Permission level retrieved: ${permissionLevel}`);
35
-
36
- if (permissionLevel === "admin" || permissionLevel === "write") {
37
- core.info(`Actor has write access: ${permissionLevel}`);
38
- return true;
39
- } else {
40
- core.warning(`Actor has insufficient permissions: ${permissionLevel}`);
41
- return false;
42
- }
43
- } catch (error) {
44
- core.error(`Failed to check permissions: ${error}`);
45
- throw new Error(`Failed to check permissions for ${actor}: ${error}`);
46
- }
47
- }
@@ -1,148 +0,0 @@
1
- #!/usr/bin/env bun
2
-
3
- import * as core from "@actions/core";
4
- import {
5
- isIssuesEvent,
6
- isIssuesAssignedEvent,
7
- isIssueCommentEvent,
8
- isPullRequestEvent,
9
- isPullRequestReviewEvent,
10
- isPullRequestReviewCommentEvent,
11
- } from "../context";
12
- import type { ParsedGitHubContext } from "../context";
13
-
14
- export function checkContainsTrigger(context: ParsedGitHubContext): boolean {
15
- const {
16
- inputs: { assigneeTrigger, labelTrigger, triggerPhrase, prompt },
17
- } = context;
18
-
19
- // If prompt is provided, always trigger
20
- if (prompt) {
21
- console.log(`Prompt provided, triggering action`);
22
- return true;
23
- }
24
-
25
- // Check for assignee trigger
26
- if (isIssuesAssignedEvent(context)) {
27
- // Remove @ symbol from assignee_trigger if present
28
- let triggerUser = assigneeTrigger.replace(/^@/, "");
29
- const assigneeUsername = context.payload.assignee?.login || "";
30
-
31
- if (triggerUser && assigneeUsername === triggerUser) {
32
- console.log(`Issue assigned to trigger user '${triggerUser}'`);
33
- return true;
34
- }
35
- }
36
-
37
- // Check for label trigger
38
- if (isIssuesEvent(context) && context.eventAction === "labeled") {
39
- const labelName = (context.payload as any).label?.name || "";
40
-
41
- if (labelTrigger && labelName === labelTrigger) {
42
- console.log(`Issue labeled with trigger label '${labelTrigger}'`);
43
- return true;
44
- }
45
- }
46
-
47
- // Check for issue body and title trigger on issue creation
48
- if (isIssuesEvent(context) && context.eventAction === "opened") {
49
- const issueBody = context.payload.issue.body || "";
50
- const issueTitle = context.payload.issue.title || "";
51
- // Check for exact match with word boundaries or punctuation
52
- const regex = new RegExp(
53
- `(^|\\s)${escapeRegExp(triggerPhrase)}([\\s.,!?;:]|$)`,
54
- );
55
-
56
- // Check in body
57
- if (regex.test(issueBody)) {
58
- console.log(
59
- `Issue body contains exact trigger phrase '${triggerPhrase}'`,
60
- );
61
- return true;
62
- }
63
-
64
- // Check in title
65
- if (regex.test(issueTitle)) {
66
- console.log(
67
- `Issue title contains exact trigger phrase '${triggerPhrase}'`,
68
- );
69
- return true;
70
- }
71
- }
72
-
73
- // Check for pull request body and title trigger
74
- if (isPullRequestEvent(context)) {
75
- const prBody = context.payload.pull_request.body || "";
76
- const prTitle = context.payload.pull_request.title || "";
77
- // Check for exact match with word boundaries or punctuation
78
- const regex = new RegExp(
79
- `(^|\\s)${escapeRegExp(triggerPhrase)}([\\s.,!?;:]|$)`,
80
- );
81
-
82
- // Check in body
83
- if (regex.test(prBody)) {
84
- console.log(
85
- `Pull request body contains exact trigger phrase '${triggerPhrase}'`,
86
- );
87
- return true;
88
- }
89
-
90
- // Check in title
91
- if (regex.test(prTitle)) {
92
- console.log(
93
- `Pull request title contains exact trigger phrase '${triggerPhrase}'`,
94
- );
95
- return true;
96
- }
97
- }
98
-
99
- // Check for pull request review body trigger
100
- if (
101
- isPullRequestReviewEvent(context) &&
102
- (context.eventAction === "submitted" || context.eventAction === "edited")
103
- ) {
104
- const reviewBody = context.payload.review.body || "";
105
- // Check for exact match with word boundaries or punctuation
106
- const regex = new RegExp(
107
- `(^|\\s)${escapeRegExp(triggerPhrase)}([\\s.,!?;:]|$)`,
108
- );
109
- if (regex.test(reviewBody)) {
110
- console.log(
111
- `Pull request review contains exact trigger phrase '${triggerPhrase}'`,
112
- );
113
- return true;
114
- }
115
- }
116
-
117
- // Check for comment trigger
118
- if (
119
- isIssueCommentEvent(context) ||
120
- isPullRequestReviewCommentEvent(context)
121
- ) {
122
- const commentBody = isIssueCommentEvent(context)
123
- ? context.payload.comment.body
124
- : context.payload.comment.body;
125
- // Check for exact match with word boundaries or punctuation
126
- const regex = new RegExp(
127
- `(^|\\s)${escapeRegExp(triggerPhrase)}([\\s.,!?;:]|$)`,
128
- );
129
- if (regex.test(commentBody)) {
130
- console.log(`Comment contains exact trigger phrase '${triggerPhrase}'`);
131
- return true;
132
- }
133
- }
134
-
135
- console.log(`No trigger was met for ${triggerPhrase}`);
136
-
137
- return false;
138
- }
139
-
140
- export function escapeRegExp(string: string) {
141
- return string.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
142
- }
143
-
144
- export async function checkTriggerAction(context: ParsedGitHubContext) {
145
- const containsTrigger = checkContainsTrigger(context);
146
- core.setOutput("contains_trigger", containsTrigger.toString());
147
- return containsTrigger;
148
- }
@@ -1,279 +0,0 @@
1
- #!/usr/bin/env node
2
-
3
- import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
4
- import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
5
- import { z } from "zod";
6
- import { GITHUB_API_URL } from "../github/api/config";
7
- import { mkdir, writeFile } from "fs/promises";
8
- import { Octokit } from "@octokit/rest";
9
-
10
- const REPO_OWNER = process.env.REPO_OWNER;
11
- const REPO_NAME = process.env.REPO_NAME;
12
- const PR_NUMBER = process.env.PR_NUMBER;
13
- const GITHUB_TOKEN = process.env.GITHUB_TOKEN;
14
- const RUNNER_TEMP = process.env.RUNNER_TEMP || "/tmp";
15
-
16
- if (!REPO_OWNER || !REPO_NAME || !PR_NUMBER || !GITHUB_TOKEN) {
17
- console.error(
18
- "[GitHub CI Server] Error: REPO_OWNER, REPO_NAME, PR_NUMBER, and GITHUB_TOKEN environment variables are required",
19
- );
20
- process.exit(1);
21
- }
22
-
23
- const server = new McpServer({
24
- name: "GitHub CI Server",
25
- version: "0.0.1",
26
- });
27
-
28
- console.error("[GitHub CI Server] MCP Server instance created");
29
-
30
- server.tool(
31
- "get_ci_status",
32
- "Get CI status summary for this PR",
33
- {
34
- status: z
35
- .enum([
36
- "completed",
37
- "action_required",
38
- "cancelled",
39
- "failure",
40
- "neutral",
41
- "skipped",
42
- "stale",
43
- "success",
44
- "timed_out",
45
- "in_progress",
46
- "queued",
47
- "requested",
48
- "waiting",
49
- "pending",
50
- ])
51
- .optional()
52
- .describe("Filter workflow runs by status"),
53
- },
54
- async ({ status }) => {
55
- try {
56
- const client = new Octokit({
57
- auth: GITHUB_TOKEN,
58
- baseUrl: GITHUB_API_URL,
59
- });
60
-
61
- // Get the PR to find the head SHA
62
- const { data: prData } = await client.pulls.get({
63
- owner: REPO_OWNER!,
64
- repo: REPO_NAME!,
65
- pull_number: parseInt(PR_NUMBER!, 10),
66
- });
67
- const headSha = prData.head.sha;
68
-
69
- const { data: runsData } = await client.actions.listWorkflowRunsForRepo({
70
- owner: REPO_OWNER!,
71
- repo: REPO_NAME!,
72
- head_sha: headSha,
73
- ...(status && { status }),
74
- });
75
-
76
- // Process runs to create summary
77
- const runs = runsData.workflow_runs || [];
78
- const summary = {
79
- total_runs: runs.length,
80
- failed: 0,
81
- passed: 0,
82
- pending: 0,
83
- };
84
-
85
- const processedRuns = runs.map((run: any) => {
86
- // Update summary counts
87
- if (run.status === "completed") {
88
- if (run.conclusion === "success") {
89
- summary.passed++;
90
- } else if (run.conclusion === "failure") {
91
- summary.failed++;
92
- }
93
- } else {
94
- summary.pending++;
95
- }
96
-
97
- return {
98
- id: run.id,
99
- name: run.name,
100
- status: run.status,
101
- conclusion: run.conclusion,
102
- html_url: run.html_url,
103
- created_at: run.created_at,
104
- };
105
- });
106
-
107
- const result = {
108
- summary,
109
- runs: processedRuns,
110
- };
111
-
112
- return {
113
- content: [
114
- {
115
- type: "text",
116
- text: JSON.stringify(result, null, 2),
117
- },
118
- ],
119
- };
120
- } catch (error) {
121
- const errorMessage =
122
- error instanceof Error ? error.message : String(error);
123
- return {
124
- content: [
125
- {
126
- type: "text",
127
- text: `Error: ${errorMessage}`,
128
- },
129
- ],
130
- error: errorMessage,
131
- isError: true,
132
- };
133
- }
134
- },
135
- );
136
-
137
- server.tool(
138
- "get_workflow_run_details",
139
- "Get job and step details for a workflow run",
140
- {
141
- run_id: z.number().describe("The workflow run ID"),
142
- },
143
- async ({ run_id }) => {
144
- try {
145
- const client = new Octokit({
146
- auth: GITHUB_TOKEN,
147
- baseUrl: GITHUB_API_URL,
148
- });
149
-
150
- // Get jobs for this workflow run
151
- const { data: jobsData } = await client.actions.listJobsForWorkflowRun({
152
- owner: REPO_OWNER!,
153
- repo: REPO_NAME!,
154
- run_id,
155
- });
156
-
157
- const processedJobs = jobsData.jobs.map((job: any) => {
158
- // Extract failed steps
159
- const failedSteps = (job.steps || [])
160
- .filter((step: any) => step.conclusion === "failure")
161
- .map((step: any) => ({
162
- name: step.name,
163
- number: step.number,
164
- }));
165
-
166
- return {
167
- id: job.id,
168
- name: job.name,
169
- conclusion: job.conclusion,
170
- html_url: job.html_url,
171
- failed_steps: failedSteps,
172
- };
173
- });
174
-
175
- const result = {
176
- jobs: processedJobs,
177
- };
178
-
179
- return {
180
- content: [
181
- {
182
- type: "text",
183
- text: JSON.stringify(result, null, 2),
184
- },
185
- ],
186
- };
187
- } catch (error) {
188
- const errorMessage =
189
- error instanceof Error ? error.message : String(error);
190
-
191
- return {
192
- content: [
193
- {
194
- type: "text",
195
- text: `Error: ${errorMessage}`,
196
- },
197
- ],
198
- error: errorMessage,
199
- isError: true,
200
- };
201
- }
202
- },
203
- );
204
-
205
- server.tool(
206
- "download_job_log",
207
- "Download job logs to disk",
208
- {
209
- job_id: z.number().describe("The job ID"),
210
- },
211
- async ({ job_id }) => {
212
- try {
213
- const client = new Octokit({
214
- auth: GITHUB_TOKEN,
215
- baseUrl: GITHUB_API_URL,
216
- });
217
-
218
- const response = await client.actions.downloadJobLogsForWorkflowRun({
219
- owner: REPO_OWNER!,
220
- repo: REPO_NAME!,
221
- job_id,
222
- });
223
-
224
- const logsText = response.data as unknown as string;
225
-
226
- const logsDir = `${RUNNER_TEMP}/github-ci-logs`;
227
- await mkdir(logsDir, { recursive: true });
228
-
229
- const logPath = `${logsDir}/job-${job_id}.log`;
230
- await writeFile(logPath, logsText, "utf-8");
231
-
232
- const result = {
233
- path: logPath,
234
- size_bytes: Buffer.byteLength(logsText, "utf-8"),
235
- };
236
-
237
- return {
238
- content: [
239
- {
240
- type: "text",
241
- text: JSON.stringify(result, null, 2),
242
- },
243
- ],
244
- };
245
- } catch (error) {
246
- const errorMessage =
247
- error instanceof Error ? error.message : String(error);
248
-
249
- return {
250
- content: [
251
- {
252
- type: "text",
253
- text: `Error: ${errorMessage}`,
254
- },
255
- ],
256
- error: errorMessage,
257
- isError: true,
258
- };
259
- }
260
- },
261
- );
262
-
263
- async function runServer() {
264
- try {
265
- const transport = new StdioServerTransport();
266
-
267
- await server.connect(transport);
268
-
269
- process.on("exit", () => {
270
- server.close();
271
- });
272
- } catch (error) {
273
- throw error;
274
- }
275
- }
276
-
277
- runServer().catch(() => {
278
- process.exit(1);
279
- });