@vicoa/cli 1.7.12-win32-x64 → 1.7.12

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 (330) hide show
  1. package/README.md +82 -0
  2. package/bin/vicoa.js +38 -0
  3. package/package.json +30 -10
  4. package/bin/_internal/VCRUNTIME140.dll +0 -0
  5. package/bin/_internal/VCRUNTIME140_1.dll +0 -0
  6. package/bin/_internal/_asyncio.pyd +0 -0
  7. package/bin/_internal/_bz2.pyd +0 -0
  8. package/bin/_internal/_cffi_backend.cp312-win_amd64.pyd +0 -0
  9. package/bin/_internal/_ctypes.pyd +0 -0
  10. package/bin/_internal/_decimal.pyd +0 -0
  11. package/bin/_internal/_hashlib.pyd +0 -0
  12. package/bin/_internal/_lzma.pyd +0 -0
  13. package/bin/_internal/_multiprocessing.pyd +0 -0
  14. package/bin/_internal/_overlapped.pyd +0 -0
  15. package/bin/_internal/_queue.pyd +0 -0
  16. package/bin/_internal/_socket.pyd +0 -0
  17. package/bin/_internal/_sqlite3.pyd +0 -0
  18. package/bin/_internal/_ssl.pyd +0 -0
  19. package/bin/_internal/_uuid.pyd +0 -0
  20. package/bin/_internal/_wmi.pyd +0 -0
  21. package/bin/_internal/_zoneinfo.pyd +0 -0
  22. package/bin/_internal/aiofile-3.12.3.dist-info/INSTALLER +0 -1
  23. package/bin/_internal/aiofile-3.12.3.dist-info/METADATA +0 -564
  24. package/bin/_internal/aiofile-3.12.3.dist-info/RECORD +0 -15
  25. package/bin/_internal/aiofile-3.12.3.dist-info/WHEEL +0 -4
  26. package/bin/_internal/aiofile-3.12.3.dist-info/licenses/LICENCE +0 -195
  27. package/bin/_internal/aiofile-3.12.3.dist-info/licenses/LICENCE.md +0 -195
  28. package/bin/_internal/aiohttp/_http_parser.cp312-win_amd64.pyd +0 -0
  29. package/bin/_internal/aiohttp/_http_writer.cp312-win_amd64.pyd +0 -0
  30. package/bin/_internal/aiohttp/_websocket/mask.cp312-win_amd64.pyd +0 -0
  31. package/bin/_internal/aiohttp/_websocket/reader_c.cp312-win_amd64.pyd +0 -0
  32. package/bin/_internal/aiohttp-3.14.3.dist-info/INSTALLER +0 -1
  33. package/bin/_internal/aiohttp-3.14.3.dist-info/METADATA +0 -257
  34. package/bin/_internal/aiohttp-3.14.3.dist-info/RECORD +0 -130
  35. package/bin/_internal/aiohttp-3.14.3.dist-info/WHEEL +0 -5
  36. package/bin/_internal/aiohttp-3.14.3.dist-info/licenses/LICENSE.txt +0 -201
  37. package/bin/_internal/aiohttp-3.14.3.dist-info/licenses/vendor/llhttp/LICENSE +0 -22
  38. package/bin/_internal/aiohttp-3.14.3.dist-info/top_level.txt +0 -1
  39. package/bin/_internal/api-ms-win-core-console-l1-1-0.dll +0 -0
  40. package/bin/_internal/api-ms-win-core-datetime-l1-1-0.dll +0 -0
  41. package/bin/_internal/api-ms-win-core-debug-l1-1-0.dll +0 -0
  42. package/bin/_internal/api-ms-win-core-errorhandling-l1-1-0.dll +0 -0
  43. package/bin/_internal/api-ms-win-core-fibers-l1-1-0.dll +0 -0
  44. package/bin/_internal/api-ms-win-core-fibers-l1-1-1.dll +0 -0
  45. package/bin/_internal/api-ms-win-core-file-l1-1-0.dll +0 -0
  46. package/bin/_internal/api-ms-win-core-file-l1-2-0.dll +0 -0
  47. package/bin/_internal/api-ms-win-core-file-l2-1-0.dll +0 -0
  48. package/bin/_internal/api-ms-win-core-handle-l1-1-0.dll +0 -0
  49. package/bin/_internal/api-ms-win-core-heap-l1-1-0.dll +0 -0
  50. package/bin/_internal/api-ms-win-core-interlocked-l1-1-0.dll +0 -0
  51. package/bin/_internal/api-ms-win-core-kernel32-legacy-l1-1-1.dll +0 -0
  52. package/bin/_internal/api-ms-win-core-libraryloader-l1-1-0.dll +0 -0
  53. package/bin/_internal/api-ms-win-core-localization-l1-2-0.dll +0 -0
  54. package/bin/_internal/api-ms-win-core-memory-l1-1-0.dll +0 -0
  55. package/bin/_internal/api-ms-win-core-namedpipe-l1-1-0.dll +0 -0
  56. package/bin/_internal/api-ms-win-core-processenvironment-l1-1-0.dll +0 -0
  57. package/bin/_internal/api-ms-win-core-processthreads-l1-1-0.dll +0 -0
  58. package/bin/_internal/api-ms-win-core-processthreads-l1-1-1.dll +0 -0
  59. package/bin/_internal/api-ms-win-core-profile-l1-1-0.dll +0 -0
  60. package/bin/_internal/api-ms-win-core-rtlsupport-l1-1-0.dll +0 -0
  61. package/bin/_internal/api-ms-win-core-string-l1-1-0.dll +0 -0
  62. package/bin/_internal/api-ms-win-core-synch-l1-1-0.dll +0 -0
  63. package/bin/_internal/api-ms-win-core-synch-l1-2-0.dll +0 -0
  64. package/bin/_internal/api-ms-win-core-sysinfo-l1-1-0.dll +0 -0
  65. package/bin/_internal/api-ms-win-core-sysinfo-l1-2-0.dll +0 -0
  66. package/bin/_internal/api-ms-win-core-timezone-l1-1-0.dll +0 -0
  67. package/bin/_internal/api-ms-win-core-util-l1-1-0.dll +0 -0
  68. package/bin/_internal/api-ms-win-crt-conio-l1-1-0.dll +0 -0
  69. package/bin/_internal/api-ms-win-crt-convert-l1-1-0.dll +0 -0
  70. package/bin/_internal/api-ms-win-crt-environment-l1-1-0.dll +0 -0
  71. package/bin/_internal/api-ms-win-crt-filesystem-l1-1-0.dll +0 -0
  72. package/bin/_internal/api-ms-win-crt-heap-l1-1-0.dll +0 -0
  73. package/bin/_internal/api-ms-win-crt-locale-l1-1-0.dll +0 -0
  74. package/bin/_internal/api-ms-win-crt-math-l1-1-0.dll +0 -0
  75. package/bin/_internal/api-ms-win-crt-process-l1-1-0.dll +0 -0
  76. package/bin/_internal/api-ms-win-crt-runtime-l1-1-0.dll +0 -0
  77. package/bin/_internal/api-ms-win-crt-stdio-l1-1-0.dll +0 -0
  78. package/bin/_internal/api-ms-win-crt-string-l1-1-0.dll +0 -0
  79. package/bin/_internal/api-ms-win-crt-time-l1-1-0.dll +0 -0
  80. package/bin/_internal/api-ms-win-crt-utility-l1-1-0.dll +0 -0
  81. package/bin/_internal/attrs-26.1.0.dist-info/INSTALLER +0 -1
  82. package/bin/_internal/attrs-26.1.0.dist-info/METADATA +0 -199
  83. package/bin/_internal/attrs-26.1.0.dist-info/RECORD +0 -55
  84. package/bin/_internal/attrs-26.1.0.dist-info/WHEEL +0 -4
  85. package/bin/_internal/attrs-26.1.0.dist-info/licenses/LICENSE +0 -21
  86. package/bin/_internal/base_library.zip +0 -0
  87. package/bin/_internal/certifi/cacert.pem +0 -3959
  88. package/bin/_internal/certifi/py.typed +0 -0
  89. package/bin/_internal/charset_normalizer/cd.cp312-win_amd64.pyd +0 -0
  90. package/bin/_internal/charset_normalizer/md.cp312-win_amd64.pyd +0 -0
  91. package/bin/_internal/click-8.4.2.dist-info/INSTALLER +0 -1
  92. package/bin/_internal/click-8.4.2.dist-info/METADATA +0 -84
  93. package/bin/_internal/click-8.4.2.dist-info/RECORD +0 -40
  94. package/bin/_internal/click-8.4.2.dist-info/WHEEL +0 -4
  95. package/bin/_internal/click-8.4.2.dist-info/licenses/LICENSE.txt +0 -28
  96. package/bin/_internal/cryptography/hazmat/bindings/_rust.pyd +0 -0
  97. package/bin/_internal/cryptography-50.0.0.dist-info/INSTALLER +0 -1
  98. package/bin/_internal/cryptography-50.0.0.dist-info/METADATA +0 -110
  99. package/bin/_internal/cryptography-50.0.0.dist-info/RECORD +0 -199
  100. package/bin/_internal/cryptography-50.0.0.dist-info/WHEEL +0 -4
  101. package/bin/_internal/cryptography-50.0.0.dist-info/licenses/LICENSE +0 -3
  102. package/bin/_internal/cryptography-50.0.0.dist-info/licenses/LICENSE.APACHE +0 -202
  103. package/bin/_internal/cryptography-50.0.0.dist-info/licenses/LICENSE.BSD +0 -27
  104. package/bin/_internal/cryptography-50.0.0.dist-info/sboms/cryptography-rust.cyclonedx.json +0 -1365
  105. package/bin/_internal/cryptography-50.0.0.dist-info/sboms/sbom.json +0 -43
  106. package/bin/_internal/email_validator-2.3.0.dist-info/INSTALLER +0 -1
  107. package/bin/_internal/email_validator-2.3.0.dist-info/METADATA +0 -466
  108. package/bin/_internal/email_validator-2.3.0.dist-info/RECORD +0 -27
  109. package/bin/_internal/email_validator-2.3.0.dist-info/WHEEL +0 -5
  110. package/bin/_internal/email_validator-2.3.0.dist-info/entry_points.txt +0 -2
  111. package/bin/_internal/email_validator-2.3.0.dist-info/licenses/LICENSE +0 -27
  112. package/bin/_internal/email_validator-2.3.0.dist-info/top_level.txt +0 -1
  113. package/bin/_internal/fastmcp-3.4.7.dist-info/INSTALLER +0 -1
  114. package/bin/_internal/fastmcp-3.4.7.dist-info/METADATA +0 -160
  115. package/bin/_internal/fastmcp-3.4.7.dist-info/RECORD +0 -5
  116. package/bin/_internal/fastmcp-3.4.7.dist-info/WHEEL +0 -4
  117. package/bin/_internal/fastmcp-3.4.7.dist-info/licenses/LICENSE +0 -201
  118. package/bin/_internal/frozenlist/_frozenlist.cp312-win_amd64.pyd +0 -0
  119. package/bin/_internal/httpcore2-2.12.0.dist-info/INSTALLER +0 -1
  120. package/bin/_internal/httpcore2-2.12.0.dist-info/METADATA +0 -737
  121. package/bin/_internal/httpcore2-2.12.0.dist-info/RECORD +0 -68
  122. package/bin/_internal/httpcore2-2.12.0.dist-info/WHEEL +0 -4
  123. package/bin/_internal/httpcore2-2.12.0.dist-info/licenses/LICENSE.md +0 -28
  124. package/bin/_internal/httpx2-2.12.0.dist-info/INSTALLER +0 -1
  125. package/bin/_internal/httpx2-2.12.0.dist-info/METADATA +0 -230
  126. package/bin/_internal/httpx2-2.12.0.dist-info/RECORD +0 -68
  127. package/bin/_internal/httpx2-2.12.0.dist-info/WHEEL +0 -4
  128. package/bin/_internal/httpx2-2.12.0.dist-info/entry_points.txt +0 -2
  129. package/bin/_internal/httpx2-2.12.0.dist-info/licenses/LICENSE.md +0 -13
  130. package/bin/_internal/integrations/cli_wrappers/IMPORTANT_USE_CASES.md +0 -33
  131. package/bin/_internal/integrations/github/claude-code-action/CLAUDE.md +0 -136
  132. package/bin/_internal/integrations/github/claude-code-action/CODE_OF_CONDUCT.md +0 -128
  133. package/bin/_internal/integrations/github/claude-code-action/CONTRIBUTING.md +0 -116
  134. package/bin/_internal/integrations/github/claude-code-action/LICENSE +0 -21
  135. package/bin/_internal/integrations/github/claude-code-action/README.md +0 -53
  136. package/bin/_internal/integrations/github/claude-code-action/ROADMAP.md +0 -20
  137. package/bin/_internal/integrations/github/claude-code-action/SECURITY.md +0 -15
  138. package/bin/_internal/integrations/github/claude-code-action/action.yml +0 -294
  139. package/bin/_internal/integrations/github/claude-code-action/base-action/CLAUDE.md +0 -60
  140. package/bin/_internal/integrations/github/claude-code-action/base-action/CODE_OF_CONDUCT.md +0 -128
  141. package/bin/_internal/integrations/github/claude-code-action/base-action/CONTRIBUTING.md +0 -136
  142. package/bin/_internal/integrations/github/claude-code-action/base-action/LICENSE +0 -21
  143. package/bin/_internal/integrations/github/claude-code-action/base-action/MIRROR_DISCLAIMER.md +0 -11
  144. package/bin/_internal/integrations/github/claude-code-action/base-action/README.md +0 -521
  145. package/bin/_internal/integrations/github/claude-code-action/base-action/action.yml +0 -149
  146. package/bin/_internal/integrations/github/claude-code-action/base-action/bun.lock +0 -54
  147. package/bin/_internal/integrations/github/claude-code-action/base-action/examples/issue-triage.yml +0 -108
  148. package/bin/_internal/integrations/github/claude-code-action/base-action/package.json +0 -23
  149. package/bin/_internal/integrations/github/claude-code-action/base-action/scripts/install-hooks.sh +0 -13
  150. package/bin/_internal/integrations/github/claude-code-action/base-action/scripts/pre-push +0 -46
  151. package/bin/_internal/integrations/github/claude-code-action/base-action/src/index.ts +0 -82
  152. package/bin/_internal/integrations/github/claude-code-action/base-action/src/prepare-prompt.ts +0 -82
  153. package/bin/_internal/integrations/github/claude-code-action/base-action/src/run-claude.ts +0 -257
  154. package/bin/_internal/integrations/github/claude-code-action/base-action/src/run-vicoa.ts +0 -301
  155. package/bin/_internal/integrations/github/claude-code-action/base-action/src/setup-claude-code-settings.ts +0 -68
  156. package/bin/_internal/integrations/github/claude-code-action/base-action/src/validate-env.ts +0 -54
  157. package/bin/_internal/integrations/github/claude-code-action/base-action/test-local.sh +0 -12
  158. package/bin/_internal/integrations/github/claude-code-action/base-action/test-mcp-local.sh +0 -18
  159. package/bin/_internal/integrations/github/claude-code-action/base-action/tsconfig.json +0 -30
  160. package/bin/_internal/integrations/github/claude-code-action/bun.lock +0 -384
  161. package/bin/_internal/integrations/github/claude-code-action/docs/capabilities-and-limitations.md +0 -33
  162. package/bin/_internal/integrations/github/claude-code-action/docs/cloud-providers.md +0 -99
  163. package/bin/_internal/integrations/github/claude-code-action/docs/configuration.md +0 -345
  164. package/bin/_internal/integrations/github/claude-code-action/docs/custom-automations.md +0 -113
  165. package/bin/_internal/integrations/github/claude-code-action/docs/experimental.md +0 -128
  166. package/bin/_internal/integrations/github/claude-code-action/docs/faq.md +0 -205
  167. package/bin/_internal/integrations/github/claude-code-action/docs/migration-guide.md +0 -261
  168. package/bin/_internal/integrations/github/claude-code-action/docs/security.md +0 -38
  169. package/bin/_internal/integrations/github/claude-code-action/docs/setup.md +0 -146
  170. package/bin/_internal/integrations/github/claude-code-action/docs/usage.md +0 -213
  171. package/bin/_internal/integrations/github/claude-code-action/examples/auto-fix-ci/auto-fix-ci.yml +0 -97
  172. package/bin/_internal/integrations/github/claude-code-action/examples/auto-fix-ci/commands/fix-ci.md +0 -127
  173. package/bin/_internal/integrations/github/claude-code-action/examples/auto-fix-ci-signed/auto-fix-ci-signed.yml +0 -97
  174. package/bin/_internal/integrations/github/claude-code-action/examples/auto-fix-ci-signed/commands/fix-ci-signed.md +0 -148
  175. package/bin/_internal/integrations/github/claude-code-action/examples/issue-deduplication.yml +0 -63
  176. package/bin/_internal/integrations/github/claude-code-action/examples/issue-triage.yml +0 -75
  177. package/bin/_internal/integrations/github/claude-code-action/examples/vicoa.yml +0 -75
  178. package/bin/_internal/integrations/github/claude-code-action/package.json +0 -31
  179. package/bin/_internal/integrations/github/claude-code-action/scripts/install-hooks.sh +0 -13
  180. package/bin/_internal/integrations/github/claude-code-action/scripts/pre-commit +0 -46
  181. package/bin/_internal/integrations/github/claude-code-action/scripts/setup-network-restrictions.sh +0 -123
  182. package/bin/_internal/integrations/github/claude-code-action/src/create-prompt/index.ts +0 -799
  183. package/bin/_internal/integrations/github/claude-code-action/src/create-prompt/types.ts +0 -102
  184. package/bin/_internal/integrations/github/claude-code-action/src/entrypoints/collect-inputs.ts +0 -58
  185. package/bin/_internal/integrations/github/claude-code-action/src/entrypoints/format-turns.ts +0 -465
  186. package/bin/_internal/integrations/github/claude-code-action/src/entrypoints/prepare.ts +0 -98
  187. package/bin/_internal/integrations/github/claude-code-action/src/entrypoints/update-comment-link.ts +0 -245
  188. package/bin/_internal/integrations/github/claude-code-action/src/github/api/client.ts +0 -23
  189. package/bin/_internal/integrations/github/claude-code-action/src/github/api/config.ts +0 -4
  190. package/bin/_internal/integrations/github/claude-code-action/src/github/api/queries/github.ts +0 -117
  191. package/bin/_internal/integrations/github/claude-code-action/src/github/context.ts +0 -277
  192. package/bin/_internal/integrations/github/claude-code-action/src/github/data/fetcher.ts +0 -233
  193. package/bin/_internal/integrations/github/claude-code-action/src/github/data/formatter.ts +0 -144
  194. package/bin/_internal/integrations/github/claude-code-action/src/github/operations/branch-cleanup.ts +0 -132
  195. package/bin/_internal/integrations/github/claude-code-action/src/github/operations/branch.ts +0 -163
  196. package/bin/_internal/integrations/github/claude-code-action/src/github/operations/comment-logic.ts +0 -203
  197. package/bin/_internal/integrations/github/claude-code-action/src/github/operations/comments/common.ts +0 -33
  198. package/bin/_internal/integrations/github/claude-code-action/src/github/operations/comments/create-initial.ts +0 -111
  199. package/bin/_internal/integrations/github/claude-code-action/src/github/operations/comments/update-claude-comment.ts +0 -70
  200. package/bin/_internal/integrations/github/claude-code-action/src/github/operations/comments/update-with-branch.ts +0 -57
  201. package/bin/_internal/integrations/github/claude-code-action/src/github/operations/git-config.ts +0 -62
  202. package/bin/_internal/integrations/github/claude-code-action/src/github/token.ts +0 -108
  203. package/bin/_internal/integrations/github/claude-code-action/src/github/types.ts +0 -98
  204. package/bin/_internal/integrations/github/claude-code-action/src/github/utils/image-downloader.ts +0 -246
  205. package/bin/_internal/integrations/github/claude-code-action/src/github/utils/sanitizer.ts +0 -100
  206. package/bin/_internal/integrations/github/claude-code-action/src/github/validation/actor.ts +0 -64
  207. package/bin/_internal/integrations/github/claude-code-action/src/github/validation/permissions.ts +0 -47
  208. package/bin/_internal/integrations/github/claude-code-action/src/github/validation/trigger.ts +0 -148
  209. package/bin/_internal/integrations/github/claude-code-action/src/mcp/github-actions-server.ts +0 -279
  210. package/bin/_internal/integrations/github/claude-code-action/src/mcp/github-comment-server.ts +0 -101
  211. package/bin/_internal/integrations/github/claude-code-action/src/mcp/github-file-ops-server.ts +0 -677
  212. package/bin/_internal/integrations/github/claude-code-action/src/mcp/github-inline-comment-server.ts +0 -184
  213. package/bin/_internal/integrations/github/claude-code-action/src/mcp/install-mcp-server.ts +0 -201
  214. package/bin/_internal/integrations/github/claude-code-action/src/modes/agent/index.ts +0 -152
  215. package/bin/_internal/integrations/github/claude-code-action/src/modes/agent/parse-tools.ts +0 -22
  216. package/bin/_internal/integrations/github/claude-code-action/src/modes/detector.ts +0 -66
  217. package/bin/_internal/integrations/github/claude-code-action/src/modes/registry.ts +0 -54
  218. package/bin/_internal/integrations/github/claude-code-action/src/modes/tag/index.ts +0 -187
  219. package/bin/_internal/integrations/github/claude-code-action/src/modes/types.ts +0 -100
  220. package/bin/_internal/integrations/github/claude-code-action/src/prepare/index.ts +0 -20
  221. package/bin/_internal/integrations/github/claude-code-action/src/prepare/types.ts +0 -20
  222. package/bin/_internal/integrations/github/claude-code-action/src/utils/retry.ts +0 -40
  223. package/bin/_internal/integrations/github/claude-code-action/tsconfig.json +0 -30
  224. package/bin/_internal/integrations/headless/tests/README.md +0 -58
  225. package/bin/_internal/integrations/n8n/LICENSE +0 -21
  226. package/bin/_internal/integrations/n8n/README.md +0 -298
  227. package/bin/_internal/integrations/n8n/package-lock.json +0 -2989
  228. package/bin/_internal/integrations/n8n/package.json +0 -68
  229. package/bin/_internal/integrations/n8n/src/credentials/OmnaraApi.credentials.ts +0 -52
  230. package/bin/_internal/integrations/n8n/src/nodes/Omnara/Omnara.node.json +0 -35
  231. package/bin/_internal/integrations/n8n/src/nodes/Omnara/Omnara.node.ts +0 -304
  232. package/bin/_internal/integrations/n8n/src/nodes/Omnara/actions/message/index.ts +0 -37
  233. package/bin/_internal/integrations/n8n/src/nodes/Omnara/actions/message/send.operation.ts +0 -151
  234. package/bin/_internal/integrations/n8n/src/nodes/Omnara/actions/message/sendAndWait.operation.ts +0 -252
  235. package/bin/_internal/integrations/n8n/src/nodes/Omnara/actions/session/end.operation.ts +0 -56
  236. package/bin/_internal/integrations/n8n/src/nodes/Omnara/actions/session/index.ts +0 -29
  237. package/bin/_internal/integrations/n8n/src/nodes/Omnara/vicoa.png +0 -0
  238. package/bin/_internal/integrations/n8n/src/utils/GenericFunctions.ts +0 -93
  239. package/bin/_internal/integrations/n8n/src/utils/sendAndWait/configureWaitTillDate.ts +0 -42
  240. package/bin/_internal/integrations/n8n/src/utils/sendAndWait/descriptions.ts +0 -20
  241. package/bin/_internal/integrations/n8n/src/utils/sendAndWaitWebhook.ts +0 -72
  242. package/bin/_internal/integrations/n8n/tsconfig.json +0 -20
  243. package/bin/_internal/jiter/jiter.cp312-win_amd64.pyd +0 -0
  244. package/bin/_internal/jsonschema/benchmarks/issue232/issue.json +0 -2653
  245. package/bin/_internal/jsonschema-4.26.0.dist-info/INSTALLER +0 -1
  246. package/bin/_internal/jsonschema-4.26.0.dist-info/METADATA +0 -170
  247. package/bin/_internal/jsonschema-4.26.0.dist-info/RECORD +0 -82
  248. package/bin/_internal/jsonschema-4.26.0.dist-info/WHEEL +0 -4
  249. package/bin/_internal/jsonschema-4.26.0.dist-info/entry_points.txt +0 -2
  250. package/bin/_internal/jsonschema-4.26.0.dist-info/licenses/COPYING +0 -19
  251. package/bin/_internal/jsonschema_specifications/schemas/draft201909/metaschema.json +0 -42
  252. package/bin/_internal/jsonschema_specifications/schemas/draft201909/vocabularies/applicator +0 -56
  253. package/bin/_internal/jsonschema_specifications/schemas/draft201909/vocabularies/content +0 -17
  254. package/bin/_internal/jsonschema_specifications/schemas/draft201909/vocabularies/core +0 -57
  255. package/bin/_internal/jsonschema_specifications/schemas/draft201909/vocabularies/format +0 -14
  256. package/bin/_internal/jsonschema_specifications/schemas/draft201909/vocabularies/meta-data +0 -37
  257. package/bin/_internal/jsonschema_specifications/schemas/draft201909/vocabularies/validation +0 -98
  258. package/bin/_internal/jsonschema_specifications/schemas/draft202012/metaschema.json +0 -58
  259. package/bin/_internal/jsonschema_specifications/schemas/draft202012/vocabularies/applicator +0 -48
  260. package/bin/_internal/jsonschema_specifications/schemas/draft202012/vocabularies/content +0 -17
  261. package/bin/_internal/jsonschema_specifications/schemas/draft202012/vocabularies/core +0 -51
  262. package/bin/_internal/jsonschema_specifications/schemas/draft202012/vocabularies/format-annotation +0 -14
  263. package/bin/_internal/jsonschema_specifications/schemas/draft202012/vocabularies/format-assertion +0 -14
  264. package/bin/_internal/jsonschema_specifications/schemas/draft202012/vocabularies/meta-data +0 -37
  265. package/bin/_internal/jsonschema_specifications/schemas/draft202012/vocabularies/unevaluated +0 -15
  266. package/bin/_internal/jsonschema_specifications/schemas/draft202012/vocabularies/validation +0 -98
  267. package/bin/_internal/jsonschema_specifications/schemas/draft3/metaschema.json +0 -172
  268. package/bin/_internal/jsonschema_specifications/schemas/draft4/metaschema.json +0 -149
  269. package/bin/_internal/jsonschema_specifications/schemas/draft6/metaschema.json +0 -153
  270. package/bin/_internal/jsonschema_specifications/schemas/draft7/metaschema.json +0 -166
  271. package/bin/_internal/libcrypto-3.dll +0 -0
  272. package/bin/_internal/libffi-8.dll +0 -0
  273. package/bin/_internal/libssl-3.dll +0 -0
  274. package/bin/_internal/mcp-1.29.0.dist-info/INSTALLER +0 -1
  275. package/bin/_internal/mcp-1.29.0.dist-info/METADATA +0 -239
  276. package/bin/_internal/mcp-1.29.0.dist-info/RECORD +0 -228
  277. package/bin/_internal/mcp-1.29.0.dist-info/WHEEL +0 -4
  278. package/bin/_internal/mcp-1.29.0.dist-info/entry_points.txt +0 -2
  279. package/bin/_internal/mcp-1.29.0.dist-info/licenses/LICENSE +0 -21
  280. package/bin/_internal/multidict/_multidict.cp312-win_amd64.pyd +0 -0
  281. package/bin/_internal/opentelemetry_api-1.44.0.dist-info/INSTALLER +0 -1
  282. package/bin/_internal/opentelemetry_api-1.44.0.dist-info/METADATA +0 -43
  283. package/bin/_internal/opentelemetry_api-1.44.0.dist-info/RECORD +0 -78
  284. package/bin/_internal/opentelemetry_api-1.44.0.dist-info/WHEEL +0 -4
  285. package/bin/_internal/opentelemetry_api-1.44.0.dist-info/entry_points.txt +0 -15
  286. package/bin/_internal/opentelemetry_api-1.44.0.dist-info/licenses/LICENSE +0 -201
  287. package/bin/_internal/propcache/_helpers_c.cp312-win_amd64.pyd +0 -0
  288. package/bin/_internal/pydantic-2.13.4.dist-info/INSTALLER +0 -1
  289. package/bin/_internal/pydantic-2.13.4.dist-info/METADATA +0 -1294
  290. package/bin/_internal/pydantic-2.13.4.dist-info/RECORD +0 -217
  291. package/bin/_internal/pydantic-2.13.4.dist-info/WHEEL +0 -4
  292. package/bin/_internal/pydantic-2.13.4.dist-info/licenses/LICENSE +0 -21
  293. package/bin/_internal/pydantic_core/_pydantic_core.cp312-win_amd64.pyd +0 -0
  294. package/bin/_internal/pyexpat.pyd +0 -0
  295. package/bin/_internal/python3.dll +0 -0
  296. package/bin/_internal/python312.dll +0 -0
  297. package/bin/_internal/pywin32_system32/pythoncom312.dll +0 -0
  298. package/bin/_internal/pywin32_system32/pywintypes312.dll +0 -0
  299. package/bin/_internal/rpds/rpds.cp312-win_amd64.pyd +0 -0
  300. package/bin/_internal/select.pyd +0 -0
  301. package/bin/_internal/setuptools/_vendor/jaraco/text/Lorem ipsum.txt +0 -2
  302. package/bin/_internal/sqlite3.dll +0 -0
  303. package/bin/_internal/ucrtbase.dll +0 -0
  304. package/bin/_internal/unicodedata.pyd +0 -0
  305. package/bin/_internal/vicoa/_bin/README.md +0 -28
  306. package/bin/_internal/vicoa-1.7.12.dist-info/INSTALLER +0 -1
  307. package/bin/_internal/vicoa-1.7.12.dist-info/METADATA +0 -314
  308. package/bin/_internal/vicoa-1.7.12.dist-info/RECORD +0 -11
  309. package/bin/_internal/vicoa-1.7.12.dist-info/REQUESTED +0 -0
  310. package/bin/_internal/vicoa-1.7.12.dist-info/WHEEL +0 -5
  311. package/bin/_internal/vicoa-1.7.12.dist-info/direct_url.json +0 -1
  312. package/bin/_internal/vicoa-1.7.12.dist-info/entry_points.txt +0 -2
  313. package/bin/_internal/vicoa-1.7.12.dist-info/licenses/LICENSE +0 -201
  314. package/bin/_internal/vicoa-1.7.12.dist-info/top_level.txt +0 -4
  315. package/bin/_internal/watchfiles/_rust_notify.cp312-win_amd64.pyd +0 -0
  316. package/bin/_internal/websockets/speedups.cp312-win_amd64.pyd +0 -0
  317. package/bin/_internal/websockets-17.0.1.dist-info/INSTALLER +0 -1
  318. package/bin/_internal/websockets-17.0.1.dist-info/METADATA +0 -170
  319. package/bin/_internal/websockets-17.0.1.dist-info/RECORD +0 -116
  320. package/bin/_internal/websockets-17.0.1.dist-info/WHEEL +0 -5
  321. package/bin/_internal/websockets-17.0.1.dist-info/entry_points.txt +0 -2
  322. package/bin/_internal/websockets-17.0.1.dist-info/licenses/LICENSE +0 -24
  323. package/bin/_internal/websockets-17.0.1.dist-info/top_level.txt +0 -1
  324. package/bin/_internal/win32/_win32sysloader.pyd +0 -0
  325. package/bin/_internal/win32/win32api.pyd +0 -0
  326. package/bin/_internal/win32/win32evtlog.pyd +0 -0
  327. package/bin/_internal/win32/win32job.pyd +0 -0
  328. package/bin/_internal/yaml/_yaml.cp312-win_amd64.pyd +0 -0
  329. package/bin/_internal/yarl/_quoting_c.cp312-win_amd64.pyd +0 -0
  330. package/bin/vicoa.exe +0 -0
@@ -1,132 +0,0 @@
1
- import type { Octokits } from "../api/client";
2
- import { GITHUB_SERVER_URL } from "../api/config";
3
- import { $ } from "bun";
4
-
5
- export async function checkAndCommitOrDeleteBranch(
6
- octokit: Octokits,
7
- owner: string,
8
- repo: string,
9
- claudeBranch: string | undefined,
10
- baseBranch: string,
11
- useCommitSigning: boolean,
12
- ): Promise<{ shouldDeleteBranch: boolean; branchLink: string }> {
13
- let branchLink = "";
14
- let shouldDeleteBranch = false;
15
-
16
- if (claudeBranch) {
17
- // First check if the branch exists remotely
18
- let branchExistsRemotely = false;
19
- try {
20
- await octokit.rest.repos.getBranch({
21
- owner,
22
- repo,
23
- branch: claudeBranch,
24
- });
25
- branchExistsRemotely = true;
26
- } catch (error: any) {
27
- if (error.status === 404) {
28
- console.log(`Branch ${claudeBranch} does not exist remotely`);
29
- } else {
30
- console.error("Error checking if branch exists:", error);
31
- }
32
- }
33
-
34
- // Only proceed if branch exists remotely
35
- if (!branchExistsRemotely) {
36
- console.log(
37
- `Branch ${claudeBranch} does not exist remotely, no branch link will be added`,
38
- );
39
- return { shouldDeleteBranch: false, branchLink: "" };
40
- }
41
-
42
- // Check if Claude made any commits to the branch
43
- try {
44
- const { data: comparison } =
45
- await octokit.rest.repos.compareCommitsWithBasehead({
46
- owner,
47
- repo,
48
- basehead: `${baseBranch}...${claudeBranch}`,
49
- });
50
-
51
- // If there are no commits, check for uncommitted changes if not using commit signing
52
- if (comparison.total_commits === 0) {
53
- if (!useCommitSigning) {
54
- console.log(
55
- `Branch ${claudeBranch} has no commits from Claude, checking for uncommitted changes...`,
56
- );
57
-
58
- // Check for uncommitted changes using git status
59
- try {
60
- const gitStatus = await $`git status --porcelain`.quiet();
61
- const hasUncommittedChanges =
62
- gitStatus.stdout.toString().trim().length > 0;
63
-
64
- if (hasUncommittedChanges) {
65
- console.log("Found uncommitted changes, committing them...");
66
-
67
- // Add all changes
68
- await $`git add -A`;
69
-
70
- // Commit with a descriptive message
71
- const runId = process.env.GITHUB_RUN_ID || "unknown";
72
- const commitMessage = `Auto-commit: Save uncommitted changes from Claude\n\nRun ID: ${runId}`;
73
- await $`git commit -m ${commitMessage}`;
74
-
75
- // Push the changes
76
- await $`git push origin ${claudeBranch}`;
77
-
78
- console.log(
79
- "✅ Successfully committed and pushed uncommitted changes",
80
- );
81
-
82
- // Set branch link since we now have commits
83
- const branchUrl = `${GITHUB_SERVER_URL}/${owner}/${repo}/tree/${claudeBranch}`;
84
- branchLink = `\n[View branch](${branchUrl})`;
85
- } else {
86
- console.log(
87
- "No uncommitted changes found, marking branch for deletion",
88
- );
89
- shouldDeleteBranch = true;
90
- }
91
- } catch (gitError) {
92
- console.error("Error checking/committing changes:", gitError);
93
- // If we can't check git status, assume the branch might have changes
94
- const branchUrl = `${GITHUB_SERVER_URL}/${owner}/${repo}/tree/${claudeBranch}`;
95
- branchLink = `\n[View branch](${branchUrl})`;
96
- }
97
- } else {
98
- console.log(
99
- `Branch ${claudeBranch} has no commits from Claude, will delete it`,
100
- );
101
- shouldDeleteBranch = true;
102
- }
103
- } else {
104
- // Only add branch link if there are commits
105
- const branchUrl = `${GITHUB_SERVER_URL}/${owner}/${repo}/tree/${claudeBranch}`;
106
- branchLink = `\n[View branch](${branchUrl})`;
107
- }
108
- } catch (error) {
109
- console.error("Error comparing commits on Claude branch:", error);
110
- // If we can't compare but the branch exists remotely, include the branch link
111
- const branchUrl = `${GITHUB_SERVER_URL}/${owner}/${repo}/tree/${claudeBranch}`;
112
- branchLink = `\n[View branch](${branchUrl})`;
113
- }
114
- }
115
-
116
- // Delete the branch if it has no commits
117
- if (shouldDeleteBranch && claudeBranch) {
118
- try {
119
- await octokit.rest.git.deleteRef({
120
- owner,
121
- repo,
122
- ref: `heads/${claudeBranch}`,
123
- });
124
- console.log(`✅ Deleted empty branch: ${claudeBranch}`);
125
- } catch (deleteError) {
126
- console.error(`Failed to delete branch ${claudeBranch}:`, deleteError);
127
- // Continue even if deletion fails
128
- }
129
- }
130
-
131
- return { shouldDeleteBranch, branchLink };
132
- }
@@ -1,163 +0,0 @@
1
- #!/usr/bin/env bun
2
-
3
- /**
4
- * Setup the appropriate branch based on the event type:
5
- * - For PRs: Checkout the PR branch
6
- * - For Issues: Create a new branch
7
- */
8
-
9
- import { $ } from "bun";
10
- import * as core from "@actions/core";
11
- import type { ParsedGitHubContext } from "../context";
12
- import type { GitHubPullRequest } from "../types";
13
- import type { Octokits } from "../api/client";
14
- import type { FetchDataResult } from "../data/fetcher";
15
-
16
- export type BranchInfo = {
17
- baseBranch: string;
18
- claudeBranch?: string;
19
- currentBranch: string;
20
- };
21
-
22
- export async function setupBranch(
23
- octokits: Octokits,
24
- githubData: FetchDataResult,
25
- context: ParsedGitHubContext,
26
- ): Promise<BranchInfo> {
27
- const { owner, repo } = context.repository;
28
- const entityNumber = context.entityNumber;
29
- const { baseBranch, branchPrefix } = context.inputs;
30
- const isPR = context.isPR;
31
-
32
- if (isPR) {
33
- const prData = githubData.contextData as GitHubPullRequest;
34
- const prState = prData.state;
35
-
36
- // Check if PR is closed or merged
37
- if (prState === "CLOSED" || prState === "MERGED") {
38
- console.log(
39
- `PR #${entityNumber} is ${prState}, creating new branch from source...`,
40
- );
41
- // Fall through to create a new branch like we do for issues
42
- } else {
43
- // Handle open PR: Checkout the PR branch
44
- console.log("This is an open PR, checking out PR branch...");
45
-
46
- const branchName = prData.headRefName;
47
-
48
- // Determine optimal fetch depth based on PR commit count, with a minimum of 20
49
- const commitCount = prData.commits.totalCount;
50
- const fetchDepth = Math.max(commitCount, 20);
51
-
52
- console.log(
53
- `PR #${entityNumber}: ${commitCount} commits, using fetch depth ${fetchDepth}`,
54
- );
55
-
56
- // Execute git commands to checkout PR branch (dynamic depth based on PR size)
57
- await $`git fetch origin --depth=${fetchDepth} ${branchName}`;
58
- await $`git checkout ${branchName} --`;
59
-
60
- console.log(`Successfully checked out PR branch for PR #${entityNumber}`);
61
-
62
- // For open PRs, we need to get the base branch of the PR
63
- const baseBranch = prData.baseRefName;
64
-
65
- return {
66
- baseBranch,
67
- currentBranch: branchName,
68
- };
69
- }
70
- }
71
-
72
- // Determine source branch - use baseBranch if provided, otherwise fetch default
73
- let sourceBranch: string;
74
-
75
- if (baseBranch) {
76
- // Use provided base branch for source
77
- sourceBranch = baseBranch;
78
- } else {
79
- // No base branch provided, fetch the default branch to use as source
80
- const repoResponse = await octokits.rest.repos.get({
81
- owner,
82
- repo,
83
- });
84
- sourceBranch = repoResponse.data.default_branch;
85
- }
86
-
87
- // Generate branch name for either an issue or closed/merged PR
88
- const entityType = isPR ? "pr" : "issue";
89
-
90
- // Create Kubernetes-compatible timestamp: lowercase, hyphens only, shorter format
91
- const now = new Date();
92
- const timestamp = `${now.getFullYear()}${String(now.getMonth() + 1).padStart(2, "0")}${String(now.getDate()).padStart(2, "0")}-${String(now.getHours()).padStart(2, "0")}${String(now.getMinutes()).padStart(2, "0")}`;
93
-
94
- // Ensure branch name is Kubernetes-compatible:
95
- // - Lowercase only
96
- // - Alphanumeric with hyphens
97
- // - No underscores
98
- // - Max 50 chars (to allow for prefixes)
99
- const branchName = `${branchPrefix}${entityType}-${entityNumber}-${timestamp}`;
100
- const newBranch = branchName.toLowerCase().substring(0, 50);
101
-
102
- try {
103
- // Get the SHA of the source branch to verify it exists
104
- const sourceBranchRef = await octokits.rest.git.getRef({
105
- owner,
106
- repo,
107
- ref: `heads/${sourceBranch}`,
108
- });
109
-
110
- const currentSHA = sourceBranchRef.data.object.sha;
111
- console.log(`Source branch SHA: ${currentSHA}`);
112
-
113
- // For commit signing, defer branch creation to the file ops server
114
- if (context.inputs.useCommitSigning) {
115
- console.log(
116
- `Branch name generated: ${newBranch} (will be created by file ops server on first commit)`,
117
- );
118
-
119
- // Ensure we're on the source branch
120
- console.log(`Fetching and checking out source branch: ${sourceBranch}`);
121
- await $`git fetch origin ${sourceBranch} --depth=1`;
122
- await $`git checkout ${sourceBranch}`;
123
-
124
- // Set outputs for GitHub Actions
125
- core.setOutput("CLAUDE_BRANCH", newBranch);
126
- core.setOutput("BASE_BRANCH", sourceBranch);
127
- return {
128
- baseBranch: sourceBranch,
129
- claudeBranch: newBranch,
130
- currentBranch: sourceBranch, // Stay on source branch for now
131
- };
132
- }
133
-
134
- // For non-signing case, create and checkout the branch locally only
135
- console.log(
136
- `Creating local branch ${newBranch} for ${entityType} #${entityNumber} from source branch: ${sourceBranch}...`,
137
- );
138
-
139
- // Fetch and checkout the source branch first to ensure we branch from the correct base
140
- console.log(`Fetching and checking out source branch: ${sourceBranch}`);
141
- await $`git fetch origin ${sourceBranch} --depth=1`;
142
- await $`git checkout ${sourceBranch}`;
143
-
144
- // Create and checkout the new branch from the source branch
145
- await $`git checkout -b ${newBranch}`;
146
-
147
- console.log(
148
- `Successfully created and checked out local branch: ${newBranch}`,
149
- );
150
-
151
- // Set outputs for GitHub Actions
152
- core.setOutput("CLAUDE_BRANCH", newBranch);
153
- core.setOutput("BASE_BRANCH", sourceBranch);
154
- return {
155
- baseBranch: sourceBranch,
156
- claudeBranch: newBranch,
157
- currentBranch: newBranch,
158
- };
159
- } catch (error) {
160
- console.error("Error in branch setup:", error);
161
- process.exit(1);
162
- }
163
- }
@@ -1,203 +0,0 @@
1
- import { GITHUB_SERVER_URL } from "../api/config";
2
-
3
- export type ExecutionDetails = {
4
- cost_usd?: number;
5
- duration_ms?: number;
6
- duration_api_ms?: number;
7
- };
8
-
9
- export type CommentUpdateInput = {
10
- currentBody: string;
11
- actionFailed: boolean;
12
- executionDetails: ExecutionDetails | null;
13
- jobUrl: string;
14
- branchLink?: string;
15
- prLink?: string;
16
- branchName?: string;
17
- triggerUsername?: string;
18
- errorDetails?: string;
19
- };
20
-
21
- export function ensureProperlyEncodedUrl(url: string): string | null {
22
- try {
23
- // First, try to parse the URL to see if it's already properly encoded
24
- new URL(url);
25
- if (url.includes(" ")) {
26
- const [baseUrl, queryString] = url.split("?");
27
- if (queryString) {
28
- // Parse query parameters and re-encode them properly
29
- const params = new URLSearchParams();
30
- const pairs = queryString.split("&");
31
- for (const pair of pairs) {
32
- const [key, value = ""] = pair.split("=");
33
- if (key) {
34
- // Decode first in case it's partially encoded, then encode properly
35
- params.set(key, decodeURIComponent(value));
36
- }
37
- }
38
- return `${baseUrl}?${params.toString()}`;
39
- }
40
- // If no query string, just encode spaces
41
- return url.replace(/ /g, "%20");
42
- }
43
- return url;
44
- } catch (e) {
45
- // If URL parsing fails, try basic fixes
46
- try {
47
- // Replace spaces with %20
48
- let fixedUrl = url.replace(/ /g, "%20");
49
-
50
- // Ensure colons in parameter values are encoded (but not in http:// or after domain)
51
- const urlParts = fixedUrl.split("?");
52
- if (urlParts.length > 1 && urlParts[1]) {
53
- const [baseUrl, queryString] = urlParts;
54
- // Encode colons in the query string that aren't already encoded
55
- const fixedQuery = queryString.replace(/([^%]|^):(?!%2F%2F)/g, "$1%3A");
56
- fixedUrl = `${baseUrl}?${fixedQuery}`;
57
- }
58
-
59
- // Try to validate the fixed URL
60
- new URL(fixedUrl);
61
- return fixedUrl;
62
- } catch {
63
- // If we still can't create a valid URL, return null
64
- return null;
65
- }
66
- }
67
- }
68
-
69
- export function updateCommentBody(input: CommentUpdateInput): string {
70
- const originalBody = input.currentBody;
71
- const {
72
- executionDetails,
73
- jobUrl,
74
- branchLink,
75
- prLink,
76
- actionFailed,
77
- branchName,
78
- triggerUsername,
79
- errorDetails,
80
- } = input;
81
-
82
- // Extract content from the original comment body
83
- // First, remove the "Claude Code is working…" or "Claude Code is working..." message
84
- const workingPattern = /Claude Code is working[…\.]{1,3}(?:\s*<img[^>]*>)?/i;
85
- let bodyContent = originalBody.replace(workingPattern, "").trim();
86
-
87
- // Check if there's a PR link in the content
88
- let prLinkFromContent = "";
89
-
90
- // Match the entire markdown link structure
91
- const prLinkPattern = /\[Create .* PR\]\((.*)\)$/m;
92
- const prLinkMatch = bodyContent.match(prLinkPattern);
93
-
94
- if (prLinkMatch && prLinkMatch[1]) {
95
- const encodedUrl = ensureProperlyEncodedUrl(prLinkMatch[1]);
96
- if (encodedUrl) {
97
- prLinkFromContent = encodedUrl;
98
- // Remove the PR link from the content
99
- bodyContent = bodyContent.replace(prLinkMatch[0], "").trim();
100
- }
101
- }
102
-
103
- // Calculate duration string if available
104
- let durationStr = "";
105
- if (executionDetails?.duration_ms !== undefined) {
106
- const totalSeconds = Math.round(executionDetails.duration_ms / 1000);
107
- const minutes = Math.floor(totalSeconds / 60);
108
- const seconds = totalSeconds % 60;
109
- durationStr = minutes > 0 ? `${minutes}m ${seconds}s` : `${seconds}s`;
110
- }
111
-
112
- // Build the header
113
- let header = "";
114
-
115
- if (actionFailed) {
116
- header = "**Claude encountered an error";
117
- if (durationStr) {
118
- header += ` after ${durationStr}`;
119
- }
120
- header += "**";
121
- } else {
122
- // Get the username from triggerUsername or extract from content
123
- const usernameMatch = bodyContent.match(/@([a-zA-Z0-9-]+)/);
124
- const username =
125
- triggerUsername || (usernameMatch ? usernameMatch[1] : "user");
126
-
127
- header = `**Claude finished @${username}'s task`;
128
- if (durationStr) {
129
- header += ` in ${durationStr}`;
130
- }
131
- header += "**";
132
- }
133
-
134
- // Add links section
135
- let links = ` —— [View job](${jobUrl})`;
136
-
137
- // Add branch name with link
138
- if (branchName || branchLink) {
139
- let finalBranchName = branchName;
140
- let branchUrl = "";
141
-
142
- if (branchLink) {
143
- // Extract the branch URL from the link
144
- const urlMatch = branchLink.match(/\((https:\/\/.*)\)/);
145
- if (urlMatch && urlMatch[1]) {
146
- branchUrl = urlMatch[1];
147
- }
148
-
149
- // Extract branch name from link if not provided
150
- if (!finalBranchName) {
151
- const branchNameMatch = branchLink.match(/tree\/([^"'\)]+)/);
152
- if (branchNameMatch) {
153
- finalBranchName = branchNameMatch[1];
154
- }
155
- }
156
- }
157
-
158
- // If we don't have a URL yet but have a branch name, construct it
159
- if (!branchUrl && finalBranchName) {
160
- // Extract owner/repo from jobUrl
161
- const repoMatch = jobUrl.match(/github\.com\/([^\/]+)\/([^\/]+)\//);
162
- if (repoMatch) {
163
- branchUrl = `${GITHUB_SERVER_URL}/${repoMatch[1]}/${repoMatch[2]}/tree/${finalBranchName}`;
164
- }
165
- }
166
-
167
- if (finalBranchName && branchUrl) {
168
- links += ` • [\`${finalBranchName}\`](${branchUrl})`;
169
- } else if (finalBranchName) {
170
- links += ` • \`${finalBranchName}\``;
171
- }
172
- }
173
-
174
- // Add PR link (either from content or provided)
175
- const prUrl =
176
- prLinkFromContent || (prLink ? prLink.match(/\(([^)]+)\)/)?.[1] : "");
177
- if (prUrl) {
178
- links += ` • [Create PR ➔](${prUrl})`;
179
- }
180
-
181
- // Build the new body with blank line between header and separator
182
- let newBody = `${header}${links}`;
183
-
184
- // Add error details if available
185
- if (actionFailed && errorDetails) {
186
- newBody += `\n\n\`\`\`\n${errorDetails}\n\`\`\``;
187
- }
188
-
189
- newBody += `\n\n---\n`;
190
-
191
- // Clean up the body content
192
- // Remove any existing View job run, branch links from the bottom
193
- bodyContent = bodyContent.replace(/\n?\[View job run\]\([^\)]+\)/g, "");
194
- bodyContent = bodyContent.replace(/\n?\[View branch\]\([^\)]+\)/g, "");
195
-
196
- // Remove any existing duration info at the bottom
197
- bodyContent = bodyContent.replace(/\n*---\n*Duration: [0-9]+m? [0-9]+s/g, "");
198
-
199
- // Add the cleaned body content
200
- newBody += bodyContent;
201
-
202
- return newBody.trim();
203
- }
@@ -1,33 +0,0 @@
1
- import { GITHUB_SERVER_URL } from "../../api/config";
2
-
3
- export const SPINNER_HTML =
4
- '<img src="https://github.com/user-attachments/assets/5ac382c7-e004-429b-8e35-7feb3e8f9c6f" width="14px" height="14px" style="vertical-align: middle; margin-left: 4px;" />';
5
-
6
- export function createJobRunLink(
7
- owner: string,
8
- repo: string,
9
- runId: string,
10
- ): string {
11
- const jobRunUrl = `${GITHUB_SERVER_URL}/${owner}/${repo}/actions/runs/${runId}`;
12
- return `[View job run](${jobRunUrl})`;
13
- }
14
-
15
- export function createBranchLink(
16
- owner: string,
17
- repo: string,
18
- branchName: string,
19
- ): string {
20
- const branchUrl = `${GITHUB_SERVER_URL}/${owner}/${repo}/tree/${branchName}`;
21
- return `\n[View branch](${branchUrl})`;
22
- }
23
-
24
- export function createCommentBody(
25
- jobRunLink: string,
26
- branchLink: string = "",
27
- ): string {
28
- return `Claude Code is working… ${SPINNER_HTML}
29
-
30
- I'll analyze this and get back to you.
31
-
32
- ${jobRunLink}${branchLink}`;
33
- }
@@ -1,111 +0,0 @@
1
- #!/usr/bin/env bun
2
-
3
- /**
4
- * Create the initial tracking comment when Claude Code starts working
5
- * This comment shows the working status and includes a link to the job run
6
- */
7
-
8
- import { appendFileSync } from "fs";
9
- import { createJobRunLink, createCommentBody } from "./common";
10
- import {
11
- isPullRequestReviewCommentEvent,
12
- isPullRequestEvent,
13
- type ParsedGitHubContext,
14
- } from "../../context";
15
- import type { Octokit } from "@octokit/rest";
16
-
17
- const CLAUDE_APP_BOT_ID = 209825114;
18
-
19
- export async function createInitialComment(
20
- octokit: Octokit,
21
- context: ParsedGitHubContext,
22
- ) {
23
- const { owner, repo } = context.repository;
24
-
25
- const jobRunLink = createJobRunLink(owner, repo, context.runId);
26
- const initialBody = createCommentBody(jobRunLink);
27
-
28
- try {
29
- let response;
30
-
31
- if (
32
- context.inputs.useStickyComment &&
33
- context.isPR &&
34
- isPullRequestEvent(context)
35
- ) {
36
- const comments = await octokit.rest.issues.listComments({
37
- owner,
38
- repo,
39
- issue_number: context.entityNumber,
40
- });
41
- const existingComment = comments.data.find((comment) => {
42
- const idMatch = comment.user?.id === CLAUDE_APP_BOT_ID;
43
- const botNameMatch =
44
- comment.user?.type === "Bot" &&
45
- comment.user?.login.toLowerCase().includes("claude");
46
- const bodyMatch = comment.body === initialBody;
47
-
48
- return idMatch || botNameMatch || bodyMatch;
49
- });
50
- if (existingComment) {
51
- response = await octokit.rest.issues.updateComment({
52
- owner,
53
- repo,
54
- comment_id: existingComment.id,
55
- body: initialBody,
56
- });
57
- } else {
58
- // Create new comment if no existing one found
59
- response = await octokit.rest.issues.createComment({
60
- owner,
61
- repo,
62
- issue_number: context.entityNumber,
63
- body: initialBody,
64
- });
65
- }
66
- } else if (isPullRequestReviewCommentEvent(context)) {
67
- // Only use createReplyForReviewComment if it's a PR review comment AND we have a comment_id
68
- response = await octokit.rest.pulls.createReplyForReviewComment({
69
- owner,
70
- repo,
71
- pull_number: context.entityNumber,
72
- comment_id: context.payload.comment.id,
73
- body: initialBody,
74
- });
75
- } else {
76
- // For all other cases (issues, issue comments, or missing comment_id)
77
- response = await octokit.rest.issues.createComment({
78
- owner,
79
- repo,
80
- issue_number: context.entityNumber,
81
- body: initialBody,
82
- });
83
- }
84
-
85
- // Output the comment ID for downstream steps using GITHUB_OUTPUT
86
- const githubOutput = process.env.GITHUB_OUTPUT!;
87
- appendFileSync(githubOutput, `claude_comment_id=${response.data.id}\n`);
88
- console.log(`✅ Created initial comment with ID: ${response.data.id}`);
89
- return response.data;
90
- } catch (error) {
91
- console.error("Error in initial comment:", error);
92
-
93
- // Always fall back to regular issue comment if anything fails
94
- try {
95
- const response = await octokit.rest.issues.createComment({
96
- owner,
97
- repo,
98
- issue_number: context.entityNumber,
99
- body: initialBody,
100
- });
101
-
102
- const githubOutput = process.env.GITHUB_OUTPUT!;
103
- appendFileSync(githubOutput, `claude_comment_id=${response.data.id}\n`);
104
- console.log(`✅ Created fallback comment with ID: ${response.data.id}`);
105
- return response.data;
106
- } catch (fallbackError) {
107
- console.error("Error creating fallback comment:", fallbackError);
108
- throw fallbackError;
109
- }
110
- }
111
- }