@vicoa/cli 1.3.11-linux-x64 → 1.3.11

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 (301) 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.cpython-312-x86_64-linux-gnu.so +0 -0
  5. package/bin/_internal/_cffi_backend.cpython-312-x86_64-linux-gnu.so +0 -0
  6. package/bin/_internal/aiofile-3.9.0.dist-info/INSTALLER +0 -1
  7. package/bin/_internal/aiofile-3.9.0.dist-info/LICENCE +0 -195
  8. package/bin/_internal/aiofile-3.9.0.dist-info/LICENCE.md +0 -195
  9. package/bin/_internal/aiofile-3.9.0.dist-info/METADATA +0 -492
  10. package/bin/_internal/aiofile-3.9.0.dist-info/RECORD +0 -15
  11. package/bin/_internal/aiofile-3.9.0.dist-info/WHEEL +0 -4
  12. package/bin/_internal/aiohttp/_http_parser.cpython-312-x86_64-linux-gnu.so +0 -0
  13. package/bin/_internal/aiohttp/_http_writer.cpython-312-x86_64-linux-gnu.so +0 -0
  14. package/bin/_internal/aiohttp/_websocket/mask.cpython-312-x86_64-linux-gnu.so +0 -0
  15. package/bin/_internal/aiohttp/_websocket/reader_c.cpython-312-x86_64-linux-gnu.so +0 -0
  16. package/bin/_internal/attrs-26.1.0.dist-info/INSTALLER +0 -1
  17. package/bin/_internal/attrs-26.1.0.dist-info/METADATA +0 -199
  18. package/bin/_internal/attrs-26.1.0.dist-info/RECORD +0 -55
  19. package/bin/_internal/attrs-26.1.0.dist-info/WHEEL +0 -4
  20. package/bin/_internal/attrs-26.1.0.dist-info/licenses/LICENSE +0 -21
  21. package/bin/_internal/base_library.zip +0 -0
  22. package/bin/_internal/caio/linux_aio.cpython-312-x86_64-linux-gnu.so +0 -0
  23. package/bin/_internal/caio/thread_aio.cpython-312-x86_64-linux-gnu.so +0 -0
  24. package/bin/_internal/certifi/cacert.pem +0 -4494
  25. package/bin/_internal/certifi/py.typed +0 -0
  26. package/bin/_internal/charset_normalizer/cd.cpython-312-x86_64-linux-gnu.so +0 -0
  27. package/bin/_internal/charset_normalizer/md.cpython-312-x86_64-linux-gnu.so +0 -0
  28. package/bin/_internal/click-8.3.2.dist-info/INSTALLER +0 -1
  29. package/bin/_internal/click-8.3.2.dist-info/METADATA +0 -84
  30. package/bin/_internal/click-8.3.2.dist-info/RECORD +0 -40
  31. package/bin/_internal/click-8.3.2.dist-info/WHEEL +0 -4
  32. package/bin/_internal/click-8.3.2.dist-info/licenses/LICENSE.txt +0 -28
  33. package/bin/_internal/cryptography/hazmat/bindings/_rust.abi3.so +0 -0
  34. package/bin/_internal/cryptography-46.0.7.dist-info/INSTALLER +0 -1
  35. package/bin/_internal/cryptography-46.0.7.dist-info/METADATA +0 -139
  36. package/bin/_internal/cryptography-46.0.7.dist-info/RECORD +0 -180
  37. package/bin/_internal/cryptography-46.0.7.dist-info/WHEEL +0 -5
  38. package/bin/_internal/cryptography-46.0.7.dist-info/licenses/LICENSE +0 -3
  39. package/bin/_internal/cryptography-46.0.7.dist-info/licenses/LICENSE.APACHE +0 -202
  40. package/bin/_internal/cryptography-46.0.7.dist-info/licenses/LICENSE.BSD +0 -27
  41. package/bin/_internal/email_validator-2.3.0.dist-info/INSTALLER +0 -1
  42. package/bin/_internal/email_validator-2.3.0.dist-info/METADATA +0 -466
  43. package/bin/_internal/email_validator-2.3.0.dist-info/RECORD +0 -27
  44. package/bin/_internal/email_validator-2.3.0.dist-info/WHEEL +0 -5
  45. package/bin/_internal/email_validator-2.3.0.dist-info/entry_points.txt +0 -2
  46. package/bin/_internal/email_validator-2.3.0.dist-info/licenses/LICENSE +0 -27
  47. package/bin/_internal/email_validator-2.3.0.dist-info/top_level.txt +0 -1
  48. package/bin/_internal/frozenlist/_frozenlist.cpython-312-x86_64-linux-gnu.so +0 -0
  49. package/bin/_internal/importlib_metadata-8.7.1.dist-info/INSTALLER +0 -1
  50. package/bin/_internal/importlib_metadata-8.7.1.dist-info/METADATA +0 -133
  51. package/bin/_internal/importlib_metadata-8.7.1.dist-info/RECORD +0 -33
  52. package/bin/_internal/importlib_metadata-8.7.1.dist-info/WHEEL +0 -5
  53. package/bin/_internal/importlib_metadata-8.7.1.dist-info/licenses/LICENSE +0 -73
  54. package/bin/_internal/importlib_metadata-8.7.1.dist-info/top_level.txt +0 -1
  55. package/bin/_internal/integrations/cli_wrappers/IMPORTANT_USE_CASES.md +0 -33
  56. package/bin/_internal/integrations/github/claude-code-action/CLAUDE.md +0 -136
  57. package/bin/_internal/integrations/github/claude-code-action/CODE_OF_CONDUCT.md +0 -128
  58. package/bin/_internal/integrations/github/claude-code-action/CONTRIBUTING.md +0 -116
  59. package/bin/_internal/integrations/github/claude-code-action/LICENSE +0 -21
  60. package/bin/_internal/integrations/github/claude-code-action/README.md +0 -53
  61. package/bin/_internal/integrations/github/claude-code-action/ROADMAP.md +0 -20
  62. package/bin/_internal/integrations/github/claude-code-action/SECURITY.md +0 -15
  63. package/bin/_internal/integrations/github/claude-code-action/action.yml +0 -294
  64. package/bin/_internal/integrations/github/claude-code-action/base-action/CLAUDE.md +0 -60
  65. package/bin/_internal/integrations/github/claude-code-action/base-action/CODE_OF_CONDUCT.md +0 -128
  66. package/bin/_internal/integrations/github/claude-code-action/base-action/CONTRIBUTING.md +0 -136
  67. package/bin/_internal/integrations/github/claude-code-action/base-action/LICENSE +0 -21
  68. package/bin/_internal/integrations/github/claude-code-action/base-action/MIRROR_DISCLAIMER.md +0 -11
  69. package/bin/_internal/integrations/github/claude-code-action/base-action/README.md +0 -521
  70. package/bin/_internal/integrations/github/claude-code-action/base-action/action.yml +0 -149
  71. package/bin/_internal/integrations/github/claude-code-action/base-action/bun.lock +0 -54
  72. package/bin/_internal/integrations/github/claude-code-action/base-action/examples/issue-triage.yml +0 -108
  73. package/bin/_internal/integrations/github/claude-code-action/base-action/package.json +0 -23
  74. package/bin/_internal/integrations/github/claude-code-action/base-action/scripts/install-hooks.sh +0 -13
  75. package/bin/_internal/integrations/github/claude-code-action/base-action/scripts/pre-push +0 -46
  76. package/bin/_internal/integrations/github/claude-code-action/base-action/src/index.ts +0 -82
  77. package/bin/_internal/integrations/github/claude-code-action/base-action/src/prepare-prompt.ts +0 -82
  78. package/bin/_internal/integrations/github/claude-code-action/base-action/src/run-claude.ts +0 -257
  79. package/bin/_internal/integrations/github/claude-code-action/base-action/src/run-vicoa.ts +0 -301
  80. package/bin/_internal/integrations/github/claude-code-action/base-action/src/setup-claude-code-settings.ts +0 -68
  81. package/bin/_internal/integrations/github/claude-code-action/base-action/src/validate-env.ts +0 -54
  82. package/bin/_internal/integrations/github/claude-code-action/base-action/test-local.sh +0 -12
  83. package/bin/_internal/integrations/github/claude-code-action/base-action/test-mcp-local.sh +0 -18
  84. package/bin/_internal/integrations/github/claude-code-action/base-action/tsconfig.json +0 -30
  85. package/bin/_internal/integrations/github/claude-code-action/bun.lock +0 -384
  86. package/bin/_internal/integrations/github/claude-code-action/docs/capabilities-and-limitations.md +0 -33
  87. package/bin/_internal/integrations/github/claude-code-action/docs/cloud-providers.md +0 -99
  88. package/bin/_internal/integrations/github/claude-code-action/docs/configuration.md +0 -345
  89. package/bin/_internal/integrations/github/claude-code-action/docs/custom-automations.md +0 -113
  90. package/bin/_internal/integrations/github/claude-code-action/docs/experimental.md +0 -128
  91. package/bin/_internal/integrations/github/claude-code-action/docs/faq.md +0 -205
  92. package/bin/_internal/integrations/github/claude-code-action/docs/migration-guide.md +0 -261
  93. package/bin/_internal/integrations/github/claude-code-action/docs/security.md +0 -38
  94. package/bin/_internal/integrations/github/claude-code-action/docs/setup.md +0 -146
  95. package/bin/_internal/integrations/github/claude-code-action/docs/usage.md +0 -213
  96. package/bin/_internal/integrations/github/claude-code-action/examples/auto-fix-ci/auto-fix-ci.yml +0 -97
  97. package/bin/_internal/integrations/github/claude-code-action/examples/auto-fix-ci/commands/fix-ci.md +0 -127
  98. package/bin/_internal/integrations/github/claude-code-action/examples/auto-fix-ci-signed/auto-fix-ci-signed.yml +0 -97
  99. package/bin/_internal/integrations/github/claude-code-action/examples/auto-fix-ci-signed/commands/fix-ci-signed.md +0 -148
  100. package/bin/_internal/integrations/github/claude-code-action/examples/issue-deduplication.yml +0 -63
  101. package/bin/_internal/integrations/github/claude-code-action/examples/issue-triage.yml +0 -75
  102. package/bin/_internal/integrations/github/claude-code-action/examples/vicoa.yml +0 -75
  103. package/bin/_internal/integrations/github/claude-code-action/package.json +0 -31
  104. package/bin/_internal/integrations/github/claude-code-action/scripts/install-hooks.sh +0 -13
  105. package/bin/_internal/integrations/github/claude-code-action/scripts/pre-commit +0 -46
  106. package/bin/_internal/integrations/github/claude-code-action/scripts/setup-network-restrictions.sh +0 -123
  107. package/bin/_internal/integrations/github/claude-code-action/src/create-prompt/index.ts +0 -799
  108. package/bin/_internal/integrations/github/claude-code-action/src/create-prompt/types.ts +0 -102
  109. package/bin/_internal/integrations/github/claude-code-action/src/entrypoints/collect-inputs.ts +0 -58
  110. package/bin/_internal/integrations/github/claude-code-action/src/entrypoints/format-turns.ts +0 -465
  111. package/bin/_internal/integrations/github/claude-code-action/src/entrypoints/prepare.ts +0 -98
  112. package/bin/_internal/integrations/github/claude-code-action/src/entrypoints/update-comment-link.ts +0 -245
  113. package/bin/_internal/integrations/github/claude-code-action/src/github/api/client.ts +0 -23
  114. package/bin/_internal/integrations/github/claude-code-action/src/github/api/config.ts +0 -4
  115. package/bin/_internal/integrations/github/claude-code-action/src/github/api/queries/github.ts +0 -117
  116. package/bin/_internal/integrations/github/claude-code-action/src/github/context.ts +0 -277
  117. package/bin/_internal/integrations/github/claude-code-action/src/github/data/fetcher.ts +0 -233
  118. package/bin/_internal/integrations/github/claude-code-action/src/github/data/formatter.ts +0 -144
  119. package/bin/_internal/integrations/github/claude-code-action/src/github/operations/branch-cleanup.ts +0 -132
  120. package/bin/_internal/integrations/github/claude-code-action/src/github/operations/branch.ts +0 -163
  121. package/bin/_internal/integrations/github/claude-code-action/src/github/operations/comment-logic.ts +0 -203
  122. package/bin/_internal/integrations/github/claude-code-action/src/github/operations/comments/common.ts +0 -33
  123. package/bin/_internal/integrations/github/claude-code-action/src/github/operations/comments/create-initial.ts +0 -111
  124. package/bin/_internal/integrations/github/claude-code-action/src/github/operations/comments/update-claude-comment.ts +0 -70
  125. package/bin/_internal/integrations/github/claude-code-action/src/github/operations/comments/update-with-branch.ts +0 -57
  126. package/bin/_internal/integrations/github/claude-code-action/src/github/operations/git-config.ts +0 -62
  127. package/bin/_internal/integrations/github/claude-code-action/src/github/token.ts +0 -108
  128. package/bin/_internal/integrations/github/claude-code-action/src/github/types.ts +0 -98
  129. package/bin/_internal/integrations/github/claude-code-action/src/github/utils/image-downloader.ts +0 -246
  130. package/bin/_internal/integrations/github/claude-code-action/src/github/utils/sanitizer.ts +0 -100
  131. package/bin/_internal/integrations/github/claude-code-action/src/github/validation/actor.ts +0 -64
  132. package/bin/_internal/integrations/github/claude-code-action/src/github/validation/permissions.ts +0 -47
  133. package/bin/_internal/integrations/github/claude-code-action/src/github/validation/trigger.ts +0 -148
  134. package/bin/_internal/integrations/github/claude-code-action/src/mcp/github-actions-server.ts +0 -279
  135. package/bin/_internal/integrations/github/claude-code-action/src/mcp/github-comment-server.ts +0 -101
  136. package/bin/_internal/integrations/github/claude-code-action/src/mcp/github-file-ops-server.ts +0 -677
  137. package/bin/_internal/integrations/github/claude-code-action/src/mcp/github-inline-comment-server.ts +0 -184
  138. package/bin/_internal/integrations/github/claude-code-action/src/mcp/install-mcp-server.ts +0 -201
  139. package/bin/_internal/integrations/github/claude-code-action/src/modes/agent/index.ts +0 -152
  140. package/bin/_internal/integrations/github/claude-code-action/src/modes/agent/parse-tools.ts +0 -22
  141. package/bin/_internal/integrations/github/claude-code-action/src/modes/detector.ts +0 -66
  142. package/bin/_internal/integrations/github/claude-code-action/src/modes/registry.ts +0 -54
  143. package/bin/_internal/integrations/github/claude-code-action/src/modes/tag/index.ts +0 -187
  144. package/bin/_internal/integrations/github/claude-code-action/src/modes/types.ts +0 -100
  145. package/bin/_internal/integrations/github/claude-code-action/src/prepare/index.ts +0 -20
  146. package/bin/_internal/integrations/github/claude-code-action/src/prepare/types.ts +0 -20
  147. package/bin/_internal/integrations/github/claude-code-action/src/utils/retry.ts +0 -40
  148. package/bin/_internal/integrations/github/claude-code-action/tsconfig.json +0 -30
  149. package/bin/_internal/integrations/n8n/LICENSE +0 -21
  150. package/bin/_internal/integrations/n8n/README.md +0 -298
  151. package/bin/_internal/integrations/n8n/package-lock.json +0 -2989
  152. package/bin/_internal/integrations/n8n/package.json +0 -68
  153. package/bin/_internal/integrations/n8n/src/credentials/OmnaraApi.credentials.ts +0 -52
  154. package/bin/_internal/integrations/n8n/src/nodes/Omnara/Omnara.node.json +0 -35
  155. package/bin/_internal/integrations/n8n/src/nodes/Omnara/Omnara.node.ts +0 -304
  156. package/bin/_internal/integrations/n8n/src/nodes/Omnara/actions/message/index.ts +0 -37
  157. package/bin/_internal/integrations/n8n/src/nodes/Omnara/actions/message/send.operation.ts +0 -151
  158. package/bin/_internal/integrations/n8n/src/nodes/Omnara/actions/message/sendAndWait.operation.ts +0 -252
  159. package/bin/_internal/integrations/n8n/src/nodes/Omnara/actions/session/end.operation.ts +0 -56
  160. package/bin/_internal/integrations/n8n/src/nodes/Omnara/actions/session/index.ts +0 -29
  161. package/bin/_internal/integrations/n8n/src/nodes/Omnara/vicoa.png +0 -0
  162. package/bin/_internal/integrations/n8n/src/utils/GenericFunctions.ts +0 -93
  163. package/bin/_internal/integrations/n8n/src/utils/sendAndWait/configureWaitTillDate.ts +0 -42
  164. package/bin/_internal/integrations/n8n/src/utils/sendAndWait/descriptions.ts +0 -20
  165. package/bin/_internal/integrations/n8n/src/utils/sendAndWaitWebhook.ts +0 -72
  166. package/bin/_internal/integrations/n8n/tsconfig.json +0 -20
  167. package/bin/_internal/jiter/jiter.cpython-312-x86_64-linux-gnu.so +0 -0
  168. package/bin/_internal/jsonschema/benchmarks/issue232/issue.json +0 -2653
  169. package/bin/_internal/jsonschema-4.26.0.dist-info/INSTALLER +0 -1
  170. package/bin/_internal/jsonschema-4.26.0.dist-info/METADATA +0 -170
  171. package/bin/_internal/jsonschema-4.26.0.dist-info/RECORD +0 -82
  172. package/bin/_internal/jsonschema-4.26.0.dist-info/WHEEL +0 -4
  173. package/bin/_internal/jsonschema-4.26.0.dist-info/entry_points.txt +0 -2
  174. package/bin/_internal/jsonschema-4.26.0.dist-info/licenses/COPYING +0 -19
  175. package/bin/_internal/jsonschema_specifications/schemas/draft201909/metaschema.json +0 -42
  176. package/bin/_internal/jsonschema_specifications/schemas/draft201909/vocabularies/applicator +0 -56
  177. package/bin/_internal/jsonschema_specifications/schemas/draft201909/vocabularies/content +0 -17
  178. package/bin/_internal/jsonschema_specifications/schemas/draft201909/vocabularies/core +0 -57
  179. package/bin/_internal/jsonschema_specifications/schemas/draft201909/vocabularies/format +0 -14
  180. package/bin/_internal/jsonschema_specifications/schemas/draft201909/vocabularies/meta-data +0 -37
  181. package/bin/_internal/jsonschema_specifications/schemas/draft201909/vocabularies/validation +0 -98
  182. package/bin/_internal/jsonschema_specifications/schemas/draft202012/metaschema.json +0 -58
  183. package/bin/_internal/jsonschema_specifications/schemas/draft202012/vocabularies/applicator +0 -48
  184. package/bin/_internal/jsonschema_specifications/schemas/draft202012/vocabularies/content +0 -17
  185. package/bin/_internal/jsonschema_specifications/schemas/draft202012/vocabularies/core +0 -51
  186. package/bin/_internal/jsonschema_specifications/schemas/draft202012/vocabularies/format-annotation +0 -14
  187. package/bin/_internal/jsonschema_specifications/schemas/draft202012/vocabularies/format-assertion +0 -14
  188. package/bin/_internal/jsonschema_specifications/schemas/draft202012/vocabularies/meta-data +0 -37
  189. package/bin/_internal/jsonschema_specifications/schemas/draft202012/vocabularies/unevaluated +0 -15
  190. package/bin/_internal/jsonschema_specifications/schemas/draft202012/vocabularies/validation +0 -98
  191. package/bin/_internal/jsonschema_specifications/schemas/draft3/metaschema.json +0 -172
  192. package/bin/_internal/jsonschema_specifications/schemas/draft4/metaschema.json +0 -149
  193. package/bin/_internal/jsonschema_specifications/schemas/draft6/metaschema.json +0 -153
  194. package/bin/_internal/jsonschema_specifications/schemas/draft7/metaschema.json +0 -166
  195. package/bin/_internal/libbz2.so.1.0 +0 -0
  196. package/bin/_internal/libcrypto.so.3 +0 -0
  197. package/bin/_internal/libffi.so.8 +0 -0
  198. package/bin/_internal/libgcc_s.so.1 +0 -0
  199. package/bin/_internal/liblzma.so.5 +0 -0
  200. package/bin/_internal/libpython3.12.so.1.0 +0 -0
  201. package/bin/_internal/libreadline.so.8 +0 -0
  202. package/bin/_internal/libssl.so.3 +0 -0
  203. package/bin/_internal/libstdc++.so.6 +0 -0
  204. package/bin/_internal/libtinfo.so.6 +0 -0
  205. package/bin/_internal/libuuid.so.1 +0 -0
  206. package/bin/_internal/libz.so.1 +0 -0
  207. package/bin/_internal/mcp-1.27.0.dist-info/INSTALLER +0 -1
  208. package/bin/_internal/mcp-1.27.0.dist-info/METADATA +0 -230
  209. package/bin/_internal/mcp-1.27.0.dist-info/RECORD +0 -226
  210. package/bin/_internal/mcp-1.27.0.dist-info/WHEEL +0 -4
  211. package/bin/_internal/mcp-1.27.0.dist-info/entry_points.txt +0 -2
  212. package/bin/_internal/mcp-1.27.0.dist-info/licenses/LICENSE +0 -21
  213. package/bin/_internal/multidict/_multidict.cpython-312-x86_64-linux-gnu.so +0 -0
  214. package/bin/_internal/opentelemetry_api-1.41.0.dist-info/INSTALLER +0 -1
  215. package/bin/_internal/opentelemetry_api-1.41.0.dist-info/METADATA +0 -45
  216. package/bin/_internal/opentelemetry_api-1.41.0.dist-info/RECORD +0 -81
  217. package/bin/_internal/opentelemetry_api-1.41.0.dist-info/WHEEL +0 -4
  218. package/bin/_internal/opentelemetry_api-1.41.0.dist-info/entry_points.txt +0 -15
  219. package/bin/_internal/opentelemetry_api-1.41.0.dist-info/licenses/LICENSE +0 -201
  220. package/bin/_internal/propcache/_helpers_c.cpython-312-x86_64-linux-gnu.so +0 -0
  221. package/bin/_internal/pydantic-2.13.2.dist-info/INSTALLER +0 -1
  222. package/bin/_internal/pydantic-2.13.2.dist-info/METADATA +0 -1269
  223. package/bin/_internal/pydantic-2.13.2.dist-info/RECORD +0 -217
  224. package/bin/_internal/pydantic-2.13.2.dist-info/WHEEL +0 -4
  225. package/bin/_internal/pydantic-2.13.2.dist-info/licenses/LICENSE +0 -21
  226. package/bin/_internal/pydantic_core/_pydantic_core.cpython-312-x86_64-linux-gnu.so +0 -0
  227. package/bin/_internal/python3.12/lib-dynload/_asyncio.cpython-312-x86_64-linux-gnu.so +0 -0
  228. package/bin/_internal/python3.12/lib-dynload/_bisect.cpython-312-x86_64-linux-gnu.so +0 -0
  229. package/bin/_internal/python3.12/lib-dynload/_blake2.cpython-312-x86_64-linux-gnu.so +0 -0
  230. package/bin/_internal/python3.12/lib-dynload/_bz2.cpython-312-x86_64-linux-gnu.so +0 -0
  231. package/bin/_internal/python3.12/lib-dynload/_codecs_cn.cpython-312-x86_64-linux-gnu.so +0 -0
  232. package/bin/_internal/python3.12/lib-dynload/_codecs_hk.cpython-312-x86_64-linux-gnu.so +0 -0
  233. package/bin/_internal/python3.12/lib-dynload/_codecs_iso2022.cpython-312-x86_64-linux-gnu.so +0 -0
  234. package/bin/_internal/python3.12/lib-dynload/_codecs_jp.cpython-312-x86_64-linux-gnu.so +0 -0
  235. package/bin/_internal/python3.12/lib-dynload/_codecs_kr.cpython-312-x86_64-linux-gnu.so +0 -0
  236. package/bin/_internal/python3.12/lib-dynload/_codecs_tw.cpython-312-x86_64-linux-gnu.so +0 -0
  237. package/bin/_internal/python3.12/lib-dynload/_contextvars.cpython-312-x86_64-linux-gnu.so +0 -0
  238. package/bin/_internal/python3.12/lib-dynload/_csv.cpython-312-x86_64-linux-gnu.so +0 -0
  239. package/bin/_internal/python3.12/lib-dynload/_ctypes.cpython-312-x86_64-linux-gnu.so +0 -0
  240. package/bin/_internal/python3.12/lib-dynload/_datetime.cpython-312-x86_64-linux-gnu.so +0 -0
  241. package/bin/_internal/python3.12/lib-dynload/_decimal.cpython-312-x86_64-linux-gnu.so +0 -0
  242. package/bin/_internal/python3.12/lib-dynload/_hashlib.cpython-312-x86_64-linux-gnu.so +0 -0
  243. package/bin/_internal/python3.12/lib-dynload/_heapq.cpython-312-x86_64-linux-gnu.so +0 -0
  244. package/bin/_internal/python3.12/lib-dynload/_json.cpython-312-x86_64-linux-gnu.so +0 -0
  245. package/bin/_internal/python3.12/lib-dynload/_lzma.cpython-312-x86_64-linux-gnu.so +0 -0
  246. package/bin/_internal/python3.12/lib-dynload/_md5.cpython-312-x86_64-linux-gnu.so +0 -0
  247. package/bin/_internal/python3.12/lib-dynload/_multibytecodec.cpython-312-x86_64-linux-gnu.so +0 -0
  248. package/bin/_internal/python3.12/lib-dynload/_multiprocessing.cpython-312-x86_64-linux-gnu.so +0 -0
  249. package/bin/_internal/python3.12/lib-dynload/_opcode.cpython-312-x86_64-linux-gnu.so +0 -0
  250. package/bin/_internal/python3.12/lib-dynload/_pickle.cpython-312-x86_64-linux-gnu.so +0 -0
  251. package/bin/_internal/python3.12/lib-dynload/_posixshmem.cpython-312-x86_64-linux-gnu.so +0 -0
  252. package/bin/_internal/python3.12/lib-dynload/_posixsubprocess.cpython-312-x86_64-linux-gnu.so +0 -0
  253. package/bin/_internal/python3.12/lib-dynload/_queue.cpython-312-x86_64-linux-gnu.so +0 -0
  254. package/bin/_internal/python3.12/lib-dynload/_random.cpython-312-x86_64-linux-gnu.so +0 -0
  255. package/bin/_internal/python3.12/lib-dynload/_sha1.cpython-312-x86_64-linux-gnu.so +0 -0
  256. package/bin/_internal/python3.12/lib-dynload/_sha2.cpython-312-x86_64-linux-gnu.so +0 -0
  257. package/bin/_internal/python3.12/lib-dynload/_sha3.cpython-312-x86_64-linux-gnu.so +0 -0
  258. package/bin/_internal/python3.12/lib-dynload/_socket.cpython-312-x86_64-linux-gnu.so +0 -0
  259. package/bin/_internal/python3.12/lib-dynload/_ssl.cpython-312-x86_64-linux-gnu.so +0 -0
  260. package/bin/_internal/python3.12/lib-dynload/_statistics.cpython-312-x86_64-linux-gnu.so +0 -0
  261. package/bin/_internal/python3.12/lib-dynload/_struct.cpython-312-x86_64-linux-gnu.so +0 -0
  262. package/bin/_internal/python3.12/lib-dynload/_uuid.cpython-312-x86_64-linux-gnu.so +0 -0
  263. package/bin/_internal/python3.12/lib-dynload/_zoneinfo.cpython-312-x86_64-linux-gnu.so +0 -0
  264. package/bin/_internal/python3.12/lib-dynload/array.cpython-312-x86_64-linux-gnu.so +0 -0
  265. package/bin/_internal/python3.12/lib-dynload/binascii.cpython-312-x86_64-linux-gnu.so +0 -0
  266. package/bin/_internal/python3.12/lib-dynload/fcntl.cpython-312-x86_64-linux-gnu.so +0 -0
  267. package/bin/_internal/python3.12/lib-dynload/grp.cpython-312-x86_64-linux-gnu.so +0 -0
  268. package/bin/_internal/python3.12/lib-dynload/math.cpython-312-x86_64-linux-gnu.so +0 -0
  269. package/bin/_internal/python3.12/lib-dynload/mmap.cpython-312-x86_64-linux-gnu.so +0 -0
  270. package/bin/_internal/python3.12/lib-dynload/pyexpat.cpython-312-x86_64-linux-gnu.so +0 -0
  271. package/bin/_internal/python3.12/lib-dynload/readline.cpython-312-x86_64-linux-gnu.so +0 -0
  272. package/bin/_internal/python3.12/lib-dynload/resource.cpython-312-x86_64-linux-gnu.so +0 -0
  273. package/bin/_internal/python3.12/lib-dynload/select.cpython-312-x86_64-linux-gnu.so +0 -0
  274. package/bin/_internal/python3.12/lib-dynload/syslog.cpython-312-x86_64-linux-gnu.so +0 -0
  275. package/bin/_internal/python3.12/lib-dynload/termios.cpython-312-x86_64-linux-gnu.so +0 -0
  276. package/bin/_internal/python3.12/lib-dynload/unicodedata.cpython-312-x86_64-linux-gnu.so +0 -0
  277. package/bin/_internal/python3.12/lib-dynload/zlib.cpython-312-x86_64-linux-gnu.so +0 -0
  278. package/bin/_internal/rpds/rpds.cpython-312-x86_64-linux-gnu.so +0 -0
  279. package/bin/_internal/setuptools/_vendor/jaraco/text/Lorem ipsum.txt +0 -2
  280. package/bin/_internal/vicoa/_bin/README.md +0 -28
  281. package/bin/_internal/vicoa-1.3.10.dist-info/INSTALLER +0 -1
  282. package/bin/_internal/vicoa-1.3.10.dist-info/METADATA +0 -311
  283. package/bin/_internal/vicoa-1.3.10.dist-info/RECORD +0 -11
  284. package/bin/_internal/vicoa-1.3.10.dist-info/REQUESTED +0 -0
  285. package/bin/_internal/vicoa-1.3.10.dist-info/WHEEL +0 -5
  286. package/bin/_internal/vicoa-1.3.10.dist-info/direct_url.json +0 -1
  287. package/bin/_internal/vicoa-1.3.10.dist-info/entry_points.txt +0 -2
  288. package/bin/_internal/vicoa-1.3.10.dist-info/licenses/LICENSE +0 -201
  289. package/bin/_internal/vicoa-1.3.10.dist-info/top_level.txt +0 -3
  290. package/bin/_internal/watchfiles/_rust_notify.cpython-312-x86_64-linux-gnu.so +0 -0
  291. package/bin/_internal/websockets/speedups.cpython-312-x86_64-linux-gnu.so +0 -0
  292. package/bin/_internal/websockets-16.0.dist-info/INSTALLER +0 -1
  293. package/bin/_internal/websockets-16.0.dist-info/METADATA +0 -179
  294. package/bin/_internal/websockets-16.0.dist-info/RECORD +0 -108
  295. package/bin/_internal/websockets-16.0.dist-info/WHEEL +0 -7
  296. package/bin/_internal/websockets-16.0.dist-info/entry_points.txt +0 -2
  297. package/bin/_internal/websockets-16.0.dist-info/licenses/LICENSE +0 -24
  298. package/bin/_internal/websockets-16.0.dist-info/top_level.txt +0 -1
  299. package/bin/_internal/yaml/_yaml.cpython-312-x86_64-linux-gnu.so +0 -0
  300. package/bin/_internal/yarl/_quoting_c.cpython-312-x86_64-linux-gnu.so +0 -0
  301. package/bin/vicoa +0 -0
@@ -1,102 +0,0 @@
1
- export type CommonFields = {
2
- repository: string;
3
- claudeCommentId: string;
4
- triggerPhrase: string;
5
- triggerUsername?: string;
6
- prompt?: string;
7
- claudeBranch?: string;
8
- };
9
-
10
- type PullRequestReviewCommentEvent = {
11
- eventName: "pull_request_review_comment";
12
- isPR: true;
13
- prNumber: string;
14
- commentId?: string; // May be present for review comments
15
- commentBody: string;
16
- claudeBranch?: string;
17
- baseBranch?: string;
18
- };
19
-
20
- type PullRequestReviewEvent = {
21
- eventName: "pull_request_review";
22
- isPR: true;
23
- prNumber: string;
24
- commentBody: string;
25
- claudeBranch?: string;
26
- baseBranch?: string;
27
- };
28
-
29
- type IssueCommentEvent = {
30
- eventName: "issue_comment";
31
- commentId: string;
32
- issueNumber: string;
33
- isPR: false;
34
- baseBranch: string;
35
- claudeBranch: string;
36
- commentBody: string;
37
- };
38
-
39
- // Not actually a real github event, since issue comments and PR coments are both sent as issue_comment
40
- type PullRequestCommentEvent = {
41
- eventName: "issue_comment";
42
- commentId: string;
43
- prNumber: string;
44
- isPR: true;
45
- commentBody: string;
46
- claudeBranch?: string;
47
- baseBranch?: string;
48
- };
49
-
50
- type IssueOpenedEvent = {
51
- eventName: "issues";
52
- eventAction: "opened";
53
- isPR: false;
54
- issueNumber: string;
55
- baseBranch: string;
56
- claudeBranch: string;
57
- };
58
-
59
- type IssueAssignedEvent = {
60
- eventName: "issues";
61
- eventAction: "assigned";
62
- isPR: false;
63
- issueNumber: string;
64
- baseBranch: string;
65
- claudeBranch: string;
66
- assigneeTrigger?: string;
67
- };
68
-
69
- type IssueLabeledEvent = {
70
- eventName: "issues";
71
- eventAction: "labeled";
72
- isPR: false;
73
- issueNumber: string;
74
- baseBranch: string;
75
- claudeBranch: string;
76
- labelTrigger: string;
77
- };
78
-
79
- type PullRequestEvent = {
80
- eventName: "pull_request";
81
- eventAction?: string; // opened, synchronize, etc.
82
- isPR: true;
83
- prNumber: string;
84
- claudeBranch?: string;
85
- baseBranch?: string;
86
- };
87
-
88
- // Union type for all possible event types
89
- export type EventData =
90
- | PullRequestReviewCommentEvent
91
- | PullRequestReviewEvent
92
- | PullRequestCommentEvent
93
- | IssueCommentEvent
94
- | IssueOpenedEvent
95
- | IssueAssignedEvent
96
- | IssueLabeledEvent
97
- | PullRequestEvent;
98
-
99
- // Combined type with separate eventData field
100
- export type PreparedContext = CommonFields & {
101
- eventData: EventData;
102
- };
@@ -1,58 +0,0 @@
1
- import * as core from "@actions/core";
2
-
3
- export function collectActionInputsPresence(): void {
4
- const inputDefaults: Record<string, string> = {
5
- trigger_phrase: "@claude",
6
- assignee_trigger: "",
7
- label_trigger: "claude",
8
- base_branch: "",
9
- branch_prefix: "claude/",
10
- allowed_bots: "",
11
- mode: "tag",
12
- model: "",
13
- anthropic_model: "",
14
- fallback_model: "",
15
- allowed_tools: "",
16
- disallowed_tools: "",
17
- custom_instructions: "",
18
- direct_prompt: "",
19
- override_prompt: "",
20
- additional_permissions: "",
21
- claude_env: "",
22
- settings: "",
23
- anthropic_api_key: "",
24
- claude_code_oauth_token: "",
25
- github_token: "",
26
- max_turns: "",
27
- use_sticky_comment: "false",
28
- use_commit_signing: "false",
29
- experimental_allowed_domains: "",
30
- };
31
-
32
- const allInputsJson = process.env.ALL_INPUTS;
33
- if (!allInputsJson) {
34
- console.log("ALL_INPUTS environment variable not found");
35
- core.setOutput("action_inputs_present", JSON.stringify({}));
36
- return;
37
- }
38
-
39
- let allInputs: Record<string, string>;
40
- try {
41
- allInputs = JSON.parse(allInputsJson);
42
- } catch (e) {
43
- console.error("Failed to parse ALL_INPUTS JSON:", e);
44
- core.setOutput("action_inputs_present", JSON.stringify({}));
45
- return;
46
- }
47
-
48
- const presentInputs: Record<string, boolean> = {};
49
-
50
- for (const [name, defaultValue] of Object.entries(inputDefaults)) {
51
- const actualValue = allInputs[name] || "";
52
-
53
- const isSet = actualValue !== defaultValue;
54
- presentInputs[name] = isSet;
55
- }
56
-
57
- core.setOutput("action_inputs_present", JSON.stringify(presentInputs));
58
- }
@@ -1,465 +0,0 @@
1
- #!/usr/bin/env bun
2
-
3
- import { readFileSync, existsSync } from "fs";
4
- import { exit } from "process";
5
-
6
- export type ToolUse = {
7
- type: string;
8
- name?: string;
9
- input?: Record<string, any>;
10
- id?: string;
11
- };
12
-
13
- export type ToolResult = {
14
- type: string;
15
- tool_use_id?: string;
16
- content?: any;
17
- is_error?: boolean;
18
- };
19
-
20
- export type ContentItem = {
21
- type: string;
22
- text?: string;
23
- tool_use_id?: string;
24
- content?: any;
25
- is_error?: boolean;
26
- name?: string;
27
- input?: Record<string, any>;
28
- id?: string;
29
- };
30
-
31
- export type Message = {
32
- content: ContentItem[];
33
- usage?: {
34
- input_tokens?: number;
35
- output_tokens?: number;
36
- };
37
- };
38
-
39
- export type Turn = {
40
- type: string;
41
- subtype?: string;
42
- message?: Message;
43
- tools?: any[];
44
- cost_usd?: number;
45
- duration_ms?: number;
46
- result?: string;
47
- };
48
-
49
- export type GroupedContent = {
50
- type: string;
51
- tools_count?: number;
52
- data?: Turn;
53
- text_parts?: string[];
54
- tool_calls?: { tool_use: ToolUse; tool_result?: ToolResult }[];
55
- usage?: Record<string, number>;
56
- };
57
-
58
- export function detectContentType(content: any): string {
59
- const contentStr = String(content).trim();
60
-
61
- // Check for JSON
62
- if (contentStr.startsWith("{") && contentStr.endsWith("}")) {
63
- try {
64
- JSON.parse(contentStr);
65
- return "json";
66
- } catch {
67
- // Fall through
68
- }
69
- }
70
-
71
- if (contentStr.startsWith("[") && contentStr.endsWith("]")) {
72
- try {
73
- JSON.parse(contentStr);
74
- return "json";
75
- } catch {
76
- // Fall through
77
- }
78
- }
79
-
80
- // Check for code-like content
81
- const codeKeywords = [
82
- "def ",
83
- "class ",
84
- "import ",
85
- "from ",
86
- "function ",
87
- "const ",
88
- "let ",
89
- "var ",
90
- ];
91
- if (codeKeywords.some((keyword) => contentStr.includes(keyword))) {
92
- if (
93
- contentStr.includes("def ") ||
94
- contentStr.includes("import ") ||
95
- contentStr.includes("from ")
96
- ) {
97
- return "python";
98
- } else if (
99
- ["function ", "const ", "let ", "var ", "=>"].some((js) =>
100
- contentStr.includes(js),
101
- )
102
- ) {
103
- return "javascript";
104
- } else {
105
- return "python"; // default for code
106
- }
107
- }
108
-
109
- // Check for shell/bash output
110
- const shellIndicators = ["ls -", "cd ", "mkdir ", "rm ", "$ ", "# "];
111
- if (
112
- contentStr.startsWith("/") ||
113
- contentStr.includes("Error:") ||
114
- contentStr.startsWith("total ") ||
115
- shellIndicators.some((indicator) => contentStr.includes(indicator))
116
- ) {
117
- return "bash";
118
- }
119
-
120
- // Check for diff format
121
- if (
122
- contentStr.startsWith("@@") ||
123
- contentStr.includes("+++ ") ||
124
- contentStr.includes("--- ")
125
- ) {
126
- return "diff";
127
- }
128
-
129
- // Check for HTML/XML
130
- if (contentStr.startsWith("<") && contentStr.endsWith(">")) {
131
- return "html";
132
- }
133
-
134
- // Check for markdown
135
- const mdIndicators = ["# ", "## ", "### ", "- ", "* ", "```"];
136
- if (mdIndicators.some((indicator) => contentStr.includes(indicator))) {
137
- return "markdown";
138
- }
139
-
140
- // Default to plain text
141
- return "text";
142
- }
143
-
144
- export function formatResultContent(content: any): string {
145
- if (!content) {
146
- return "*(No output)*\n\n";
147
- }
148
-
149
- let contentStr: string;
150
-
151
- // Check if content is a list with "type": "text" structure
152
- try {
153
- let parsedContent: any;
154
- if (typeof content === "string") {
155
- parsedContent = JSON.parse(content);
156
- } else {
157
- parsedContent = content;
158
- }
159
-
160
- if (
161
- Array.isArray(parsedContent) &&
162
- parsedContent.length > 0 &&
163
- typeof parsedContent[0] === "object" &&
164
- parsedContent[0]?.type === "text"
165
- ) {
166
- // Extract the text field from the first item
167
- contentStr = parsedContent[0]?.text || "";
168
- } else {
169
- contentStr = String(content).trim();
170
- }
171
- } catch {
172
- contentStr = String(content).trim();
173
- }
174
-
175
- // Truncate very long results
176
- if (contentStr.length > 3000) {
177
- contentStr = contentStr.substring(0, 2997) + "...";
178
- }
179
-
180
- // Detect content type
181
- const contentType = detectContentType(contentStr);
182
-
183
- // Handle JSON content specially - pretty print it
184
- if (contentType === "json") {
185
- try {
186
- // Try to parse and pretty print JSON
187
- const parsed = JSON.parse(contentStr);
188
- contentStr = JSON.stringify(parsed, null, 2);
189
- } catch {
190
- // Keep original if parsing fails
191
- }
192
- }
193
-
194
- // Format with appropriate syntax highlighting
195
- if (
196
- contentType === "text" &&
197
- contentStr.length < 100 &&
198
- !contentStr.includes("\n")
199
- ) {
200
- // Short text results don't need code blocks
201
- return `**→** ${contentStr}\n\n`;
202
- } else {
203
- return `**Result:**\n\`\`\`${contentType}\n${contentStr}\n\`\`\`\n\n`;
204
- }
205
- }
206
-
207
- export function formatToolWithResult(
208
- toolUse: ToolUse,
209
- toolResult?: ToolResult,
210
- ): string {
211
- const toolName = toolUse.name || "unknown_tool";
212
- const toolInput = toolUse.input || {};
213
-
214
- let result = `### 🔧 \`${toolName}\`\n\n`;
215
-
216
- // Add parameters if they exist and are not empty
217
- if (Object.keys(toolInput).length > 0) {
218
- result += "**Parameters:**\n```json\n";
219
- result += JSON.stringify(toolInput, null, 2);
220
- result += "\n```\n\n";
221
- }
222
-
223
- // Add result if available
224
- if (toolResult) {
225
- const content = toolResult.content || "";
226
- const isError = toolResult.is_error || false;
227
-
228
- if (isError) {
229
- result += `❌ **Error:** \`${content}\`\n\n`;
230
- } else {
231
- result += formatResultContent(content);
232
- }
233
- }
234
-
235
- return result;
236
- }
237
-
238
- export function groupTurnsNaturally(data: Turn[]): GroupedContent[] {
239
- const groupedContent: GroupedContent[] = [];
240
- const toolResultsMap = new Map<string, ToolResult>();
241
-
242
- // First pass: collect all tool results by tool_use_id
243
- for (const turn of data) {
244
- if (turn.type === "user") {
245
- const content = turn.message?.content || [];
246
- for (const item of content) {
247
- if (item.type === "tool_result" && item.tool_use_id) {
248
- toolResultsMap.set(item.tool_use_id, {
249
- type: item.type,
250
- tool_use_id: item.tool_use_id,
251
- content: item.content,
252
- is_error: item.is_error,
253
- });
254
- }
255
- }
256
- }
257
- }
258
-
259
- // Second pass: process turns and group naturally
260
- for (const turn of data) {
261
- const turnType = turn.type || "unknown";
262
-
263
- if (turnType === "system") {
264
- const subtype = turn.subtype || "";
265
- if (subtype === "init") {
266
- const tools = turn.tools || [];
267
- groupedContent.push({
268
- type: "system_init",
269
- tools_count: tools.length,
270
- });
271
- } else {
272
- groupedContent.push({
273
- type: "system_other",
274
- data: turn,
275
- });
276
- }
277
- } else if (turnType === "assistant") {
278
- const message = turn.message || { content: [] };
279
- const content = message.content || [];
280
- const usage = message.usage || {};
281
-
282
- // Process content items
283
- const textParts: string[] = [];
284
- const toolCalls: { tool_use: ToolUse; tool_result?: ToolResult }[] = [];
285
-
286
- for (const item of content) {
287
- const itemType = item.type || "";
288
-
289
- if (itemType === "text") {
290
- textParts.push(item.text || "");
291
- } else if (itemType === "tool_use") {
292
- const toolUseId = item.id;
293
- const toolResult = toolUseId
294
- ? toolResultsMap.get(toolUseId)
295
- : undefined;
296
- toolCalls.push({
297
- tool_use: {
298
- type: item.type,
299
- name: item.name,
300
- input: item.input,
301
- id: item.id,
302
- },
303
- tool_result: toolResult,
304
- });
305
- }
306
- }
307
-
308
- if (textParts.length > 0 || toolCalls.length > 0) {
309
- groupedContent.push({
310
- type: "assistant_action",
311
- text_parts: textParts,
312
- tool_calls: toolCalls,
313
- usage: usage,
314
- });
315
- }
316
- } else if (turnType === "user") {
317
- // Handle user messages that aren't tool results
318
- const message = turn.message || { content: [] };
319
- const content = message.content || [];
320
- const textParts: string[] = [];
321
-
322
- for (const item of content) {
323
- if (item.type === "text") {
324
- textParts.push(item.text || "");
325
- }
326
- }
327
-
328
- if (textParts.length > 0) {
329
- groupedContent.push({
330
- type: "user_message",
331
- text_parts: textParts,
332
- });
333
- }
334
- } else if (turnType === "result") {
335
- groupedContent.push({
336
- type: "final_result",
337
- data: turn,
338
- });
339
- }
340
- }
341
-
342
- return groupedContent;
343
- }
344
-
345
- export function formatGroupedContent(groupedContent: GroupedContent[]): string {
346
- let markdown = "## Claude Code Report\n\n";
347
-
348
- for (const item of groupedContent) {
349
- const itemType = item.type;
350
-
351
- if (itemType === "system_init") {
352
- markdown += `## 🚀 System Initialization\n\n**Available Tools:** ${item.tools_count} tools loaded\n\n---\n\n`;
353
- } else if (itemType === "system_other") {
354
- markdown += `## ⚙️ System Message\n\n${JSON.stringify(item.data, null, 2)}\n\n---\n\n`;
355
- } else if (itemType === "assistant_action") {
356
- // Add text content first (if any) - no header needed
357
- for (const text of item.text_parts || []) {
358
- if (text.trim()) {
359
- markdown += `${text}\n\n`;
360
- }
361
- }
362
-
363
- // Add tool calls with their results
364
- for (const toolCall of item.tool_calls || []) {
365
- markdown += formatToolWithResult(
366
- toolCall.tool_use,
367
- toolCall.tool_result,
368
- );
369
- }
370
-
371
- // Add usage info if available
372
- const usage = item.usage || {};
373
- if (Object.keys(usage).length > 0) {
374
- const inputTokens = usage.input_tokens || 0;
375
- const cacheCreationTokens = usage.cache_creation_input_tokens || 0;
376
- const cacheReadTokens = usage.cache_read_input_tokens || 0;
377
- const totalInputTokens =
378
- inputTokens + cacheCreationTokens + cacheReadTokens;
379
- const outputTokens = usage.output_tokens || 0;
380
- markdown += `*Token usage: ${totalInputTokens} input, ${outputTokens} output*\n\n`;
381
- }
382
-
383
- // Only add separator if this section had content
384
- if (
385
- (item.text_parts && item.text_parts.length > 0) ||
386
- (item.tool_calls && item.tool_calls.length > 0)
387
- ) {
388
- markdown += "---\n\n";
389
- }
390
- } else if (itemType === "user_message") {
391
- markdown += "## 👤 User\n\n";
392
- for (const text of item.text_parts || []) {
393
- if (text.trim()) {
394
- markdown += `${text}\n\n`;
395
- }
396
- }
397
- markdown += "---\n\n";
398
- } else if (itemType === "final_result") {
399
- const data = item.data || {};
400
- const cost = (data as any).total_cost_usd || (data as any).cost_usd || 0;
401
- const duration = (data as any).duration_ms || 0;
402
- const resultText = (data as any).result || "";
403
-
404
- markdown += "## ✅ Final Result\n\n";
405
- if (resultText) {
406
- markdown += `${resultText}\n\n`;
407
- }
408
- markdown += `**Cost:** $${cost.toFixed(4)} | **Duration:** ${(duration / 1000).toFixed(1)}s\n\n`;
409
- }
410
- }
411
-
412
- return markdown;
413
- }
414
-
415
- export function formatTurnsFromData(data: Turn[]): string {
416
- // Group turns naturally
417
- const groupedContent = groupTurnsNaturally(data);
418
-
419
- // Generate markdown
420
- const markdown = formatGroupedContent(groupedContent);
421
-
422
- return markdown;
423
- }
424
-
425
- function main(): void {
426
- // Get the JSON file path from command line arguments
427
- const args = process.argv.slice(2);
428
- if (args.length === 0) {
429
- console.error("Usage: format-turns.ts <json-file>");
430
- exit(1);
431
- }
432
-
433
- const jsonFile = args[0];
434
- if (!jsonFile) {
435
- console.error("Error: No JSON file provided");
436
- exit(1);
437
- }
438
-
439
- if (!existsSync(jsonFile)) {
440
- console.error(`Error: ${jsonFile} not found`);
441
- exit(1);
442
- }
443
-
444
- try {
445
- // Read the JSON file
446
- const fileContent = readFileSync(jsonFile, "utf-8");
447
- const data: Turn[] = JSON.parse(fileContent);
448
-
449
- // Group turns naturally
450
- const groupedContent = groupTurnsNaturally(data);
451
-
452
- // Generate markdown
453
- const markdown = formatGroupedContent(groupedContent);
454
-
455
- // Print to stdout (so it can be captured by shell)
456
- console.log(markdown);
457
- } catch (error) {
458
- console.error(`Error processing file: ${error}`);
459
- exit(1);
460
- }
461
- }
462
-
463
- if (import.meta.main) {
464
- main();
465
- }