@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.
- package/README.md +82 -0
- package/bin/vicoa.js +38 -0
- package/package.json +29 -10
- package/bin/_internal/81d243bd2c585b0f4821__mypyc.cpython-312-x86_64-linux-gnu.so +0 -0
- package/bin/_internal/_cffi_backend.cpython-312-x86_64-linux-gnu.so +0 -0
- package/bin/_internal/aiofile-3.9.0.dist-info/INSTALLER +0 -1
- package/bin/_internal/aiofile-3.9.0.dist-info/LICENCE +0 -195
- package/bin/_internal/aiofile-3.9.0.dist-info/LICENCE.md +0 -195
- package/bin/_internal/aiofile-3.9.0.dist-info/METADATA +0 -492
- package/bin/_internal/aiofile-3.9.0.dist-info/RECORD +0 -15
- package/bin/_internal/aiofile-3.9.0.dist-info/WHEEL +0 -4
- package/bin/_internal/aiohttp/_http_parser.cpython-312-x86_64-linux-gnu.so +0 -0
- package/bin/_internal/aiohttp/_http_writer.cpython-312-x86_64-linux-gnu.so +0 -0
- package/bin/_internal/aiohttp/_websocket/mask.cpython-312-x86_64-linux-gnu.so +0 -0
- package/bin/_internal/aiohttp/_websocket/reader_c.cpython-312-x86_64-linux-gnu.so +0 -0
- package/bin/_internal/attrs-26.1.0.dist-info/INSTALLER +0 -1
- package/bin/_internal/attrs-26.1.0.dist-info/METADATA +0 -199
- package/bin/_internal/attrs-26.1.0.dist-info/RECORD +0 -55
- package/bin/_internal/attrs-26.1.0.dist-info/WHEEL +0 -4
- package/bin/_internal/attrs-26.1.0.dist-info/licenses/LICENSE +0 -21
- package/bin/_internal/base_library.zip +0 -0
- package/bin/_internal/caio/linux_aio.cpython-312-x86_64-linux-gnu.so +0 -0
- package/bin/_internal/caio/thread_aio.cpython-312-x86_64-linux-gnu.so +0 -0
- package/bin/_internal/certifi/cacert.pem +0 -4494
- package/bin/_internal/certifi/py.typed +0 -0
- package/bin/_internal/charset_normalizer/cd.cpython-312-x86_64-linux-gnu.so +0 -0
- package/bin/_internal/charset_normalizer/md.cpython-312-x86_64-linux-gnu.so +0 -0
- package/bin/_internal/click-8.3.2.dist-info/INSTALLER +0 -1
- package/bin/_internal/click-8.3.2.dist-info/METADATA +0 -84
- package/bin/_internal/click-8.3.2.dist-info/RECORD +0 -40
- package/bin/_internal/click-8.3.2.dist-info/WHEEL +0 -4
- package/bin/_internal/click-8.3.2.dist-info/licenses/LICENSE.txt +0 -28
- package/bin/_internal/cryptography/hazmat/bindings/_rust.abi3.so +0 -0
- package/bin/_internal/cryptography-46.0.7.dist-info/INSTALLER +0 -1
- package/bin/_internal/cryptography-46.0.7.dist-info/METADATA +0 -139
- package/bin/_internal/cryptography-46.0.7.dist-info/RECORD +0 -180
- package/bin/_internal/cryptography-46.0.7.dist-info/WHEEL +0 -5
- package/bin/_internal/cryptography-46.0.7.dist-info/licenses/LICENSE +0 -3
- package/bin/_internal/cryptography-46.0.7.dist-info/licenses/LICENSE.APACHE +0 -202
- package/bin/_internal/cryptography-46.0.7.dist-info/licenses/LICENSE.BSD +0 -27
- package/bin/_internal/email_validator-2.3.0.dist-info/INSTALLER +0 -1
- package/bin/_internal/email_validator-2.3.0.dist-info/METADATA +0 -466
- package/bin/_internal/email_validator-2.3.0.dist-info/RECORD +0 -27
- package/bin/_internal/email_validator-2.3.0.dist-info/WHEEL +0 -5
- package/bin/_internal/email_validator-2.3.0.dist-info/entry_points.txt +0 -2
- package/bin/_internal/email_validator-2.3.0.dist-info/licenses/LICENSE +0 -27
- package/bin/_internal/email_validator-2.3.0.dist-info/top_level.txt +0 -1
- package/bin/_internal/frozenlist/_frozenlist.cpython-312-x86_64-linux-gnu.so +0 -0
- package/bin/_internal/importlib_metadata-8.7.1.dist-info/INSTALLER +0 -1
- package/bin/_internal/importlib_metadata-8.7.1.dist-info/METADATA +0 -133
- package/bin/_internal/importlib_metadata-8.7.1.dist-info/RECORD +0 -33
- package/bin/_internal/importlib_metadata-8.7.1.dist-info/WHEEL +0 -5
- package/bin/_internal/importlib_metadata-8.7.1.dist-info/licenses/LICENSE +0 -73
- package/bin/_internal/importlib_metadata-8.7.1.dist-info/top_level.txt +0 -1
- package/bin/_internal/integrations/cli_wrappers/IMPORTANT_USE_CASES.md +0 -33
- package/bin/_internal/integrations/github/claude-code-action/CLAUDE.md +0 -136
- package/bin/_internal/integrations/github/claude-code-action/CODE_OF_CONDUCT.md +0 -128
- package/bin/_internal/integrations/github/claude-code-action/CONTRIBUTING.md +0 -116
- package/bin/_internal/integrations/github/claude-code-action/LICENSE +0 -21
- package/bin/_internal/integrations/github/claude-code-action/README.md +0 -53
- package/bin/_internal/integrations/github/claude-code-action/ROADMAP.md +0 -20
- package/bin/_internal/integrations/github/claude-code-action/SECURITY.md +0 -15
- package/bin/_internal/integrations/github/claude-code-action/action.yml +0 -294
- package/bin/_internal/integrations/github/claude-code-action/base-action/CLAUDE.md +0 -60
- package/bin/_internal/integrations/github/claude-code-action/base-action/CODE_OF_CONDUCT.md +0 -128
- package/bin/_internal/integrations/github/claude-code-action/base-action/CONTRIBUTING.md +0 -136
- package/bin/_internal/integrations/github/claude-code-action/base-action/LICENSE +0 -21
- package/bin/_internal/integrations/github/claude-code-action/base-action/MIRROR_DISCLAIMER.md +0 -11
- package/bin/_internal/integrations/github/claude-code-action/base-action/README.md +0 -521
- package/bin/_internal/integrations/github/claude-code-action/base-action/action.yml +0 -149
- package/bin/_internal/integrations/github/claude-code-action/base-action/bun.lock +0 -54
- package/bin/_internal/integrations/github/claude-code-action/base-action/examples/issue-triage.yml +0 -108
- package/bin/_internal/integrations/github/claude-code-action/base-action/package.json +0 -23
- package/bin/_internal/integrations/github/claude-code-action/base-action/scripts/install-hooks.sh +0 -13
- package/bin/_internal/integrations/github/claude-code-action/base-action/scripts/pre-push +0 -46
- package/bin/_internal/integrations/github/claude-code-action/base-action/src/index.ts +0 -82
- package/bin/_internal/integrations/github/claude-code-action/base-action/src/prepare-prompt.ts +0 -82
- package/bin/_internal/integrations/github/claude-code-action/base-action/src/run-claude.ts +0 -257
- package/bin/_internal/integrations/github/claude-code-action/base-action/src/run-vicoa.ts +0 -301
- package/bin/_internal/integrations/github/claude-code-action/base-action/src/setup-claude-code-settings.ts +0 -68
- package/bin/_internal/integrations/github/claude-code-action/base-action/src/validate-env.ts +0 -54
- package/bin/_internal/integrations/github/claude-code-action/base-action/test-local.sh +0 -12
- package/bin/_internal/integrations/github/claude-code-action/base-action/test-mcp-local.sh +0 -18
- package/bin/_internal/integrations/github/claude-code-action/base-action/tsconfig.json +0 -30
- package/bin/_internal/integrations/github/claude-code-action/bun.lock +0 -384
- package/bin/_internal/integrations/github/claude-code-action/docs/capabilities-and-limitations.md +0 -33
- package/bin/_internal/integrations/github/claude-code-action/docs/cloud-providers.md +0 -99
- package/bin/_internal/integrations/github/claude-code-action/docs/configuration.md +0 -345
- package/bin/_internal/integrations/github/claude-code-action/docs/custom-automations.md +0 -113
- package/bin/_internal/integrations/github/claude-code-action/docs/experimental.md +0 -128
- package/bin/_internal/integrations/github/claude-code-action/docs/faq.md +0 -205
- package/bin/_internal/integrations/github/claude-code-action/docs/migration-guide.md +0 -261
- package/bin/_internal/integrations/github/claude-code-action/docs/security.md +0 -38
- package/bin/_internal/integrations/github/claude-code-action/docs/setup.md +0 -146
- package/bin/_internal/integrations/github/claude-code-action/docs/usage.md +0 -213
- package/bin/_internal/integrations/github/claude-code-action/examples/auto-fix-ci/auto-fix-ci.yml +0 -97
- package/bin/_internal/integrations/github/claude-code-action/examples/auto-fix-ci/commands/fix-ci.md +0 -127
- package/bin/_internal/integrations/github/claude-code-action/examples/auto-fix-ci-signed/auto-fix-ci-signed.yml +0 -97
- package/bin/_internal/integrations/github/claude-code-action/examples/auto-fix-ci-signed/commands/fix-ci-signed.md +0 -148
- package/bin/_internal/integrations/github/claude-code-action/examples/issue-deduplication.yml +0 -63
- package/bin/_internal/integrations/github/claude-code-action/examples/issue-triage.yml +0 -75
- package/bin/_internal/integrations/github/claude-code-action/examples/vicoa.yml +0 -75
- package/bin/_internal/integrations/github/claude-code-action/package.json +0 -31
- package/bin/_internal/integrations/github/claude-code-action/scripts/install-hooks.sh +0 -13
- package/bin/_internal/integrations/github/claude-code-action/scripts/pre-commit +0 -46
- package/bin/_internal/integrations/github/claude-code-action/scripts/setup-network-restrictions.sh +0 -123
- package/bin/_internal/integrations/github/claude-code-action/src/create-prompt/index.ts +0 -799
- package/bin/_internal/integrations/github/claude-code-action/src/create-prompt/types.ts +0 -102
- package/bin/_internal/integrations/github/claude-code-action/src/entrypoints/collect-inputs.ts +0 -58
- package/bin/_internal/integrations/github/claude-code-action/src/entrypoints/format-turns.ts +0 -465
- package/bin/_internal/integrations/github/claude-code-action/src/entrypoints/prepare.ts +0 -98
- package/bin/_internal/integrations/github/claude-code-action/src/entrypoints/update-comment-link.ts +0 -245
- package/bin/_internal/integrations/github/claude-code-action/src/github/api/client.ts +0 -23
- package/bin/_internal/integrations/github/claude-code-action/src/github/api/config.ts +0 -4
- package/bin/_internal/integrations/github/claude-code-action/src/github/api/queries/github.ts +0 -117
- package/bin/_internal/integrations/github/claude-code-action/src/github/context.ts +0 -277
- package/bin/_internal/integrations/github/claude-code-action/src/github/data/fetcher.ts +0 -233
- package/bin/_internal/integrations/github/claude-code-action/src/github/data/formatter.ts +0 -144
- package/bin/_internal/integrations/github/claude-code-action/src/github/operations/branch-cleanup.ts +0 -132
- package/bin/_internal/integrations/github/claude-code-action/src/github/operations/branch.ts +0 -163
- package/bin/_internal/integrations/github/claude-code-action/src/github/operations/comment-logic.ts +0 -203
- package/bin/_internal/integrations/github/claude-code-action/src/github/operations/comments/common.ts +0 -33
- package/bin/_internal/integrations/github/claude-code-action/src/github/operations/comments/create-initial.ts +0 -111
- package/bin/_internal/integrations/github/claude-code-action/src/github/operations/comments/update-claude-comment.ts +0 -70
- package/bin/_internal/integrations/github/claude-code-action/src/github/operations/comments/update-with-branch.ts +0 -57
- package/bin/_internal/integrations/github/claude-code-action/src/github/operations/git-config.ts +0 -62
- package/bin/_internal/integrations/github/claude-code-action/src/github/token.ts +0 -108
- package/bin/_internal/integrations/github/claude-code-action/src/github/types.ts +0 -98
- package/bin/_internal/integrations/github/claude-code-action/src/github/utils/image-downloader.ts +0 -246
- package/bin/_internal/integrations/github/claude-code-action/src/github/utils/sanitizer.ts +0 -100
- package/bin/_internal/integrations/github/claude-code-action/src/github/validation/actor.ts +0 -64
- package/bin/_internal/integrations/github/claude-code-action/src/github/validation/permissions.ts +0 -47
- package/bin/_internal/integrations/github/claude-code-action/src/github/validation/trigger.ts +0 -148
- package/bin/_internal/integrations/github/claude-code-action/src/mcp/github-actions-server.ts +0 -279
- package/bin/_internal/integrations/github/claude-code-action/src/mcp/github-comment-server.ts +0 -101
- package/bin/_internal/integrations/github/claude-code-action/src/mcp/github-file-ops-server.ts +0 -677
- package/bin/_internal/integrations/github/claude-code-action/src/mcp/github-inline-comment-server.ts +0 -184
- package/bin/_internal/integrations/github/claude-code-action/src/mcp/install-mcp-server.ts +0 -201
- package/bin/_internal/integrations/github/claude-code-action/src/modes/agent/index.ts +0 -152
- package/bin/_internal/integrations/github/claude-code-action/src/modes/agent/parse-tools.ts +0 -22
- package/bin/_internal/integrations/github/claude-code-action/src/modes/detector.ts +0 -66
- package/bin/_internal/integrations/github/claude-code-action/src/modes/registry.ts +0 -54
- package/bin/_internal/integrations/github/claude-code-action/src/modes/tag/index.ts +0 -187
- package/bin/_internal/integrations/github/claude-code-action/src/modes/types.ts +0 -100
- package/bin/_internal/integrations/github/claude-code-action/src/prepare/index.ts +0 -20
- package/bin/_internal/integrations/github/claude-code-action/src/prepare/types.ts +0 -20
- package/bin/_internal/integrations/github/claude-code-action/src/utils/retry.ts +0 -40
- package/bin/_internal/integrations/github/claude-code-action/tsconfig.json +0 -30
- package/bin/_internal/integrations/n8n/LICENSE +0 -21
- package/bin/_internal/integrations/n8n/README.md +0 -298
- package/bin/_internal/integrations/n8n/package-lock.json +0 -2989
- package/bin/_internal/integrations/n8n/package.json +0 -68
- package/bin/_internal/integrations/n8n/src/credentials/OmnaraApi.credentials.ts +0 -52
- package/bin/_internal/integrations/n8n/src/nodes/Omnara/Omnara.node.json +0 -35
- package/bin/_internal/integrations/n8n/src/nodes/Omnara/Omnara.node.ts +0 -304
- package/bin/_internal/integrations/n8n/src/nodes/Omnara/actions/message/index.ts +0 -37
- package/bin/_internal/integrations/n8n/src/nodes/Omnara/actions/message/send.operation.ts +0 -151
- package/bin/_internal/integrations/n8n/src/nodes/Omnara/actions/message/sendAndWait.operation.ts +0 -252
- package/bin/_internal/integrations/n8n/src/nodes/Omnara/actions/session/end.operation.ts +0 -56
- package/bin/_internal/integrations/n8n/src/nodes/Omnara/actions/session/index.ts +0 -29
- package/bin/_internal/integrations/n8n/src/nodes/Omnara/vicoa.png +0 -0
- package/bin/_internal/integrations/n8n/src/utils/GenericFunctions.ts +0 -93
- package/bin/_internal/integrations/n8n/src/utils/sendAndWait/configureWaitTillDate.ts +0 -42
- package/bin/_internal/integrations/n8n/src/utils/sendAndWait/descriptions.ts +0 -20
- package/bin/_internal/integrations/n8n/src/utils/sendAndWaitWebhook.ts +0 -72
- package/bin/_internal/integrations/n8n/tsconfig.json +0 -20
- package/bin/_internal/jiter/jiter.cpython-312-x86_64-linux-gnu.so +0 -0
- package/bin/_internal/jsonschema/benchmarks/issue232/issue.json +0 -2653
- package/bin/_internal/jsonschema-4.26.0.dist-info/INSTALLER +0 -1
- package/bin/_internal/jsonschema-4.26.0.dist-info/METADATA +0 -170
- package/bin/_internal/jsonschema-4.26.0.dist-info/RECORD +0 -82
- package/bin/_internal/jsonschema-4.26.0.dist-info/WHEEL +0 -4
- package/bin/_internal/jsonschema-4.26.0.dist-info/entry_points.txt +0 -2
- package/bin/_internal/jsonschema-4.26.0.dist-info/licenses/COPYING +0 -19
- package/bin/_internal/jsonschema_specifications/schemas/draft201909/metaschema.json +0 -42
- package/bin/_internal/jsonschema_specifications/schemas/draft201909/vocabularies/applicator +0 -56
- package/bin/_internal/jsonschema_specifications/schemas/draft201909/vocabularies/content +0 -17
- package/bin/_internal/jsonschema_specifications/schemas/draft201909/vocabularies/core +0 -57
- package/bin/_internal/jsonschema_specifications/schemas/draft201909/vocabularies/format +0 -14
- package/bin/_internal/jsonschema_specifications/schemas/draft201909/vocabularies/meta-data +0 -37
- package/bin/_internal/jsonschema_specifications/schemas/draft201909/vocabularies/validation +0 -98
- package/bin/_internal/jsonschema_specifications/schemas/draft202012/metaschema.json +0 -58
- package/bin/_internal/jsonschema_specifications/schemas/draft202012/vocabularies/applicator +0 -48
- package/bin/_internal/jsonschema_specifications/schemas/draft202012/vocabularies/content +0 -17
- package/bin/_internal/jsonschema_specifications/schemas/draft202012/vocabularies/core +0 -51
- package/bin/_internal/jsonschema_specifications/schemas/draft202012/vocabularies/format-annotation +0 -14
- package/bin/_internal/jsonschema_specifications/schemas/draft202012/vocabularies/format-assertion +0 -14
- package/bin/_internal/jsonschema_specifications/schemas/draft202012/vocabularies/meta-data +0 -37
- package/bin/_internal/jsonschema_specifications/schemas/draft202012/vocabularies/unevaluated +0 -15
- package/bin/_internal/jsonschema_specifications/schemas/draft202012/vocabularies/validation +0 -98
- package/bin/_internal/jsonschema_specifications/schemas/draft3/metaschema.json +0 -172
- package/bin/_internal/jsonschema_specifications/schemas/draft4/metaschema.json +0 -149
- package/bin/_internal/jsonschema_specifications/schemas/draft6/metaschema.json +0 -153
- package/bin/_internal/jsonschema_specifications/schemas/draft7/metaschema.json +0 -166
- package/bin/_internal/libbz2.so.1.0 +0 -0
- package/bin/_internal/libcrypto.so.3 +0 -0
- package/bin/_internal/libffi.so.8 +0 -0
- package/bin/_internal/libgcc_s.so.1 +0 -0
- package/bin/_internal/liblzma.so.5 +0 -0
- package/bin/_internal/libpython3.12.so.1.0 +0 -0
- package/bin/_internal/libreadline.so.8 +0 -0
- package/bin/_internal/libssl.so.3 +0 -0
- package/bin/_internal/libstdc++.so.6 +0 -0
- package/bin/_internal/libtinfo.so.6 +0 -0
- package/bin/_internal/libuuid.so.1 +0 -0
- package/bin/_internal/libz.so.1 +0 -0
- package/bin/_internal/mcp-1.27.0.dist-info/INSTALLER +0 -1
- package/bin/_internal/mcp-1.27.0.dist-info/METADATA +0 -230
- package/bin/_internal/mcp-1.27.0.dist-info/RECORD +0 -226
- package/bin/_internal/mcp-1.27.0.dist-info/WHEEL +0 -4
- package/bin/_internal/mcp-1.27.0.dist-info/entry_points.txt +0 -2
- package/bin/_internal/mcp-1.27.0.dist-info/licenses/LICENSE +0 -21
- package/bin/_internal/multidict/_multidict.cpython-312-x86_64-linux-gnu.so +0 -0
- package/bin/_internal/opentelemetry_api-1.41.0.dist-info/INSTALLER +0 -1
- package/bin/_internal/opentelemetry_api-1.41.0.dist-info/METADATA +0 -45
- package/bin/_internal/opentelemetry_api-1.41.0.dist-info/RECORD +0 -81
- package/bin/_internal/opentelemetry_api-1.41.0.dist-info/WHEEL +0 -4
- package/bin/_internal/opentelemetry_api-1.41.0.dist-info/entry_points.txt +0 -15
- package/bin/_internal/opentelemetry_api-1.41.0.dist-info/licenses/LICENSE +0 -201
- package/bin/_internal/propcache/_helpers_c.cpython-312-x86_64-linux-gnu.so +0 -0
- package/bin/_internal/pydantic-2.13.2.dist-info/INSTALLER +0 -1
- package/bin/_internal/pydantic-2.13.2.dist-info/METADATA +0 -1269
- package/bin/_internal/pydantic-2.13.2.dist-info/RECORD +0 -217
- package/bin/_internal/pydantic-2.13.2.dist-info/WHEEL +0 -4
- package/bin/_internal/pydantic-2.13.2.dist-info/licenses/LICENSE +0 -21
- package/bin/_internal/pydantic_core/_pydantic_core.cpython-312-x86_64-linux-gnu.so +0 -0
- package/bin/_internal/python3.12/lib-dynload/_asyncio.cpython-312-x86_64-linux-gnu.so +0 -0
- package/bin/_internal/python3.12/lib-dynload/_bisect.cpython-312-x86_64-linux-gnu.so +0 -0
- package/bin/_internal/python3.12/lib-dynload/_blake2.cpython-312-x86_64-linux-gnu.so +0 -0
- package/bin/_internal/python3.12/lib-dynload/_bz2.cpython-312-x86_64-linux-gnu.so +0 -0
- package/bin/_internal/python3.12/lib-dynload/_codecs_cn.cpython-312-x86_64-linux-gnu.so +0 -0
- package/bin/_internal/python3.12/lib-dynload/_codecs_hk.cpython-312-x86_64-linux-gnu.so +0 -0
- package/bin/_internal/python3.12/lib-dynload/_codecs_iso2022.cpython-312-x86_64-linux-gnu.so +0 -0
- package/bin/_internal/python3.12/lib-dynload/_codecs_jp.cpython-312-x86_64-linux-gnu.so +0 -0
- package/bin/_internal/python3.12/lib-dynload/_codecs_kr.cpython-312-x86_64-linux-gnu.so +0 -0
- package/bin/_internal/python3.12/lib-dynload/_codecs_tw.cpython-312-x86_64-linux-gnu.so +0 -0
- package/bin/_internal/python3.12/lib-dynload/_contextvars.cpython-312-x86_64-linux-gnu.so +0 -0
- package/bin/_internal/python3.12/lib-dynload/_csv.cpython-312-x86_64-linux-gnu.so +0 -0
- package/bin/_internal/python3.12/lib-dynload/_ctypes.cpython-312-x86_64-linux-gnu.so +0 -0
- package/bin/_internal/python3.12/lib-dynload/_datetime.cpython-312-x86_64-linux-gnu.so +0 -0
- package/bin/_internal/python3.12/lib-dynload/_decimal.cpython-312-x86_64-linux-gnu.so +0 -0
- package/bin/_internal/python3.12/lib-dynload/_hashlib.cpython-312-x86_64-linux-gnu.so +0 -0
- package/bin/_internal/python3.12/lib-dynload/_heapq.cpython-312-x86_64-linux-gnu.so +0 -0
- package/bin/_internal/python3.12/lib-dynload/_json.cpython-312-x86_64-linux-gnu.so +0 -0
- package/bin/_internal/python3.12/lib-dynload/_lzma.cpython-312-x86_64-linux-gnu.so +0 -0
- package/bin/_internal/python3.12/lib-dynload/_md5.cpython-312-x86_64-linux-gnu.so +0 -0
- package/bin/_internal/python3.12/lib-dynload/_multibytecodec.cpython-312-x86_64-linux-gnu.so +0 -0
- package/bin/_internal/python3.12/lib-dynload/_multiprocessing.cpython-312-x86_64-linux-gnu.so +0 -0
- package/bin/_internal/python3.12/lib-dynload/_opcode.cpython-312-x86_64-linux-gnu.so +0 -0
- package/bin/_internal/python3.12/lib-dynload/_pickle.cpython-312-x86_64-linux-gnu.so +0 -0
- package/bin/_internal/python3.12/lib-dynload/_posixshmem.cpython-312-x86_64-linux-gnu.so +0 -0
- package/bin/_internal/python3.12/lib-dynload/_posixsubprocess.cpython-312-x86_64-linux-gnu.so +0 -0
- package/bin/_internal/python3.12/lib-dynload/_queue.cpython-312-x86_64-linux-gnu.so +0 -0
- package/bin/_internal/python3.12/lib-dynload/_random.cpython-312-x86_64-linux-gnu.so +0 -0
- package/bin/_internal/python3.12/lib-dynload/_sha1.cpython-312-x86_64-linux-gnu.so +0 -0
- package/bin/_internal/python3.12/lib-dynload/_sha2.cpython-312-x86_64-linux-gnu.so +0 -0
- package/bin/_internal/python3.12/lib-dynload/_sha3.cpython-312-x86_64-linux-gnu.so +0 -0
- package/bin/_internal/python3.12/lib-dynload/_socket.cpython-312-x86_64-linux-gnu.so +0 -0
- package/bin/_internal/python3.12/lib-dynload/_ssl.cpython-312-x86_64-linux-gnu.so +0 -0
- package/bin/_internal/python3.12/lib-dynload/_statistics.cpython-312-x86_64-linux-gnu.so +0 -0
- package/bin/_internal/python3.12/lib-dynload/_struct.cpython-312-x86_64-linux-gnu.so +0 -0
- package/bin/_internal/python3.12/lib-dynload/_uuid.cpython-312-x86_64-linux-gnu.so +0 -0
- package/bin/_internal/python3.12/lib-dynload/_zoneinfo.cpython-312-x86_64-linux-gnu.so +0 -0
- package/bin/_internal/python3.12/lib-dynload/array.cpython-312-x86_64-linux-gnu.so +0 -0
- package/bin/_internal/python3.12/lib-dynload/binascii.cpython-312-x86_64-linux-gnu.so +0 -0
- package/bin/_internal/python3.12/lib-dynload/fcntl.cpython-312-x86_64-linux-gnu.so +0 -0
- package/bin/_internal/python3.12/lib-dynload/grp.cpython-312-x86_64-linux-gnu.so +0 -0
- package/bin/_internal/python3.12/lib-dynload/math.cpython-312-x86_64-linux-gnu.so +0 -0
- package/bin/_internal/python3.12/lib-dynload/mmap.cpython-312-x86_64-linux-gnu.so +0 -0
- package/bin/_internal/python3.12/lib-dynload/pyexpat.cpython-312-x86_64-linux-gnu.so +0 -0
- package/bin/_internal/python3.12/lib-dynload/readline.cpython-312-x86_64-linux-gnu.so +0 -0
- package/bin/_internal/python3.12/lib-dynload/resource.cpython-312-x86_64-linux-gnu.so +0 -0
- package/bin/_internal/python3.12/lib-dynload/select.cpython-312-x86_64-linux-gnu.so +0 -0
- package/bin/_internal/python3.12/lib-dynload/syslog.cpython-312-x86_64-linux-gnu.so +0 -0
- package/bin/_internal/python3.12/lib-dynload/termios.cpython-312-x86_64-linux-gnu.so +0 -0
- package/bin/_internal/python3.12/lib-dynload/unicodedata.cpython-312-x86_64-linux-gnu.so +0 -0
- package/bin/_internal/python3.12/lib-dynload/zlib.cpython-312-x86_64-linux-gnu.so +0 -0
- package/bin/_internal/rpds/rpds.cpython-312-x86_64-linux-gnu.so +0 -0
- package/bin/_internal/setuptools/_vendor/jaraco/text/Lorem ipsum.txt +0 -2
- package/bin/_internal/vicoa/_bin/README.md +0 -28
- package/bin/_internal/vicoa-1.3.10.dist-info/INSTALLER +0 -1
- package/bin/_internal/vicoa-1.3.10.dist-info/METADATA +0 -311
- package/bin/_internal/vicoa-1.3.10.dist-info/RECORD +0 -11
- package/bin/_internal/vicoa-1.3.10.dist-info/REQUESTED +0 -0
- package/bin/_internal/vicoa-1.3.10.dist-info/WHEEL +0 -5
- package/bin/_internal/vicoa-1.3.10.dist-info/direct_url.json +0 -1
- package/bin/_internal/vicoa-1.3.10.dist-info/entry_points.txt +0 -2
- package/bin/_internal/vicoa-1.3.10.dist-info/licenses/LICENSE +0 -201
- package/bin/_internal/vicoa-1.3.10.dist-info/top_level.txt +0 -3
- package/bin/_internal/watchfiles/_rust_notify.cpython-312-x86_64-linux-gnu.so +0 -0
- package/bin/_internal/websockets/speedups.cpython-312-x86_64-linux-gnu.so +0 -0
- package/bin/_internal/websockets-16.0.dist-info/INSTALLER +0 -1
- package/bin/_internal/websockets-16.0.dist-info/METADATA +0 -179
- package/bin/_internal/websockets-16.0.dist-info/RECORD +0 -108
- package/bin/_internal/websockets-16.0.dist-info/WHEEL +0 -7
- package/bin/_internal/websockets-16.0.dist-info/entry_points.txt +0 -2
- package/bin/_internal/websockets-16.0.dist-info/licenses/LICENSE +0 -24
- package/bin/_internal/websockets-16.0.dist-info/top_level.txt +0 -1
- package/bin/_internal/yaml/_yaml.cpython-312-x86_64-linux-gnu.so +0 -0
- package/bin/_internal/yarl/_quoting_c.cpython-312-x86_64-linux-gnu.so +0 -0
- package/bin/vicoa +0 -0
|
@@ -1,70 +0,0 @@
|
|
|
1
|
-
import { Octokit } from "@octokit/rest";
|
|
2
|
-
|
|
3
|
-
export type UpdateClaudeCommentParams = {
|
|
4
|
-
owner: string;
|
|
5
|
-
repo: string;
|
|
6
|
-
commentId: number;
|
|
7
|
-
body: string;
|
|
8
|
-
isPullRequestReviewComment: boolean;
|
|
9
|
-
};
|
|
10
|
-
|
|
11
|
-
export type UpdateClaudeCommentResult = {
|
|
12
|
-
id: number;
|
|
13
|
-
html_url: string;
|
|
14
|
-
updated_at: string;
|
|
15
|
-
};
|
|
16
|
-
|
|
17
|
-
/**
|
|
18
|
-
* Updates a Claude comment on GitHub (either an issue/PR comment or a PR review comment)
|
|
19
|
-
*
|
|
20
|
-
* @param octokit - Authenticated Octokit instance
|
|
21
|
-
* @param params - Parameters for updating the comment
|
|
22
|
-
* @returns The updated comment details
|
|
23
|
-
* @throws Error if the update fails
|
|
24
|
-
*/
|
|
25
|
-
export async function updateClaudeComment(
|
|
26
|
-
octokit: Octokit,
|
|
27
|
-
params: UpdateClaudeCommentParams,
|
|
28
|
-
): Promise<UpdateClaudeCommentResult> {
|
|
29
|
-
const { owner, repo, commentId, body, isPullRequestReviewComment } = params;
|
|
30
|
-
|
|
31
|
-
let response;
|
|
32
|
-
|
|
33
|
-
try {
|
|
34
|
-
if (isPullRequestReviewComment) {
|
|
35
|
-
// Try PR review comment API first
|
|
36
|
-
response = await octokit.rest.pulls.updateReviewComment({
|
|
37
|
-
owner,
|
|
38
|
-
repo,
|
|
39
|
-
comment_id: commentId,
|
|
40
|
-
body,
|
|
41
|
-
});
|
|
42
|
-
} else {
|
|
43
|
-
// Use issue comment API (works for both issues and PR general comments)
|
|
44
|
-
response = await octokit.rest.issues.updateComment({
|
|
45
|
-
owner,
|
|
46
|
-
repo,
|
|
47
|
-
comment_id: commentId,
|
|
48
|
-
body,
|
|
49
|
-
});
|
|
50
|
-
}
|
|
51
|
-
} catch (error: any) {
|
|
52
|
-
// If PR review comment update fails with 404, fall back to issue comment API
|
|
53
|
-
if (isPullRequestReviewComment && error.status === 404) {
|
|
54
|
-
response = await octokit.rest.issues.updateComment({
|
|
55
|
-
owner,
|
|
56
|
-
repo,
|
|
57
|
-
comment_id: commentId,
|
|
58
|
-
body,
|
|
59
|
-
});
|
|
60
|
-
} else {
|
|
61
|
-
throw error;
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
return {
|
|
66
|
-
id: response.data.id,
|
|
67
|
-
html_url: response.data.html_url,
|
|
68
|
-
updated_at: response.data.updated_at,
|
|
69
|
-
};
|
|
70
|
-
}
|
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env bun
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* Update the initial tracking comment with branch link
|
|
5
|
-
* This happens after the branch is created for issues
|
|
6
|
-
*/
|
|
7
|
-
|
|
8
|
-
import {
|
|
9
|
-
createJobRunLink,
|
|
10
|
-
createBranchLink,
|
|
11
|
-
createCommentBody,
|
|
12
|
-
} from "./common";
|
|
13
|
-
import { type Octokits } from "../../api/client";
|
|
14
|
-
import {
|
|
15
|
-
isPullRequestReviewCommentEvent,
|
|
16
|
-
type ParsedGitHubContext,
|
|
17
|
-
} from "../../context";
|
|
18
|
-
import { updateClaudeComment } from "./update-claude-comment";
|
|
19
|
-
|
|
20
|
-
export async function updateTrackingComment(
|
|
21
|
-
octokit: Octokits,
|
|
22
|
-
context: ParsedGitHubContext,
|
|
23
|
-
commentId: number,
|
|
24
|
-
branch?: string,
|
|
25
|
-
) {
|
|
26
|
-
const { owner, repo } = context.repository;
|
|
27
|
-
|
|
28
|
-
const jobRunLink = createJobRunLink(owner, repo, context.runId);
|
|
29
|
-
|
|
30
|
-
// Add branch link for issues (not PRs)
|
|
31
|
-
let branchLink = "";
|
|
32
|
-
if (branch && !context.isPR) {
|
|
33
|
-
branchLink = createBranchLink(owner, repo, branch);
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
const updatedBody = createCommentBody(jobRunLink, branchLink);
|
|
37
|
-
|
|
38
|
-
// Update the existing comment with the branch link
|
|
39
|
-
try {
|
|
40
|
-
const isPRReviewComment = isPullRequestReviewCommentEvent(context);
|
|
41
|
-
|
|
42
|
-
await updateClaudeComment(octokit.rest, {
|
|
43
|
-
owner,
|
|
44
|
-
repo,
|
|
45
|
-
commentId,
|
|
46
|
-
body: updatedBody,
|
|
47
|
-
isPullRequestReviewComment: isPRReviewComment,
|
|
48
|
-
});
|
|
49
|
-
|
|
50
|
-
console.log(
|
|
51
|
-
`✅ Updated ${isPRReviewComment ? "PR review" : "issue"} comment ${commentId} with branch link`,
|
|
52
|
-
);
|
|
53
|
-
} catch (error) {
|
|
54
|
-
console.error("Error updating comment with branch link:", error);
|
|
55
|
-
throw error;
|
|
56
|
-
}
|
|
57
|
-
}
|
package/bin/_internal/integrations/github/claude-code-action/src/github/operations/git-config.ts
DELETED
|
@@ -1,62 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env bun
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* Configure git authentication for non-signing mode
|
|
5
|
-
* Sets up git user and authentication to work with GitHub App tokens
|
|
6
|
-
*/
|
|
7
|
-
|
|
8
|
-
import { $ } from "bun";
|
|
9
|
-
import type { GitHubContext } from "../context";
|
|
10
|
-
import { GITHUB_SERVER_URL } from "../api/config";
|
|
11
|
-
|
|
12
|
-
type GitUser = {
|
|
13
|
-
login: string;
|
|
14
|
-
id: number;
|
|
15
|
-
};
|
|
16
|
-
|
|
17
|
-
export async function configureGitAuth(
|
|
18
|
-
githubToken: string,
|
|
19
|
-
context: GitHubContext,
|
|
20
|
-
user: GitUser | null,
|
|
21
|
-
) {
|
|
22
|
-
console.log("Configuring git authentication for non-signing mode");
|
|
23
|
-
|
|
24
|
-
// Determine the noreply email domain based on GITHUB_SERVER_URL
|
|
25
|
-
const serverUrl = new URL(GITHUB_SERVER_URL);
|
|
26
|
-
const noreplyDomain =
|
|
27
|
-
serverUrl.hostname === "github.com"
|
|
28
|
-
? "users.noreply.github.com"
|
|
29
|
-
: `users.noreply.${serverUrl.hostname}`;
|
|
30
|
-
|
|
31
|
-
// Configure git user based on the comment creator
|
|
32
|
-
console.log("Configuring git user...");
|
|
33
|
-
if (user) {
|
|
34
|
-
const botName = user.login;
|
|
35
|
-
const botId = user.id;
|
|
36
|
-
console.log(`Setting git user as ${botName}...`);
|
|
37
|
-
await $`git config user.name "${botName}"`;
|
|
38
|
-
await $`git config user.email "${botId}+${botName}@${noreplyDomain}"`;
|
|
39
|
-
console.log(`✓ Set git user as ${botName}`);
|
|
40
|
-
} else {
|
|
41
|
-
console.log("No user data in comment, using default bot user");
|
|
42
|
-
await $`git config user.name "github-actions[bot]"`;
|
|
43
|
-
await $`git config user.email "41898282+github-actions[bot]@${noreplyDomain}"`;
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
// Remove the authorization header that actions/checkout sets
|
|
47
|
-
console.log("Removing existing git authentication headers...");
|
|
48
|
-
try {
|
|
49
|
-
await $`git config --unset-all http.${GITHUB_SERVER_URL}/.extraheader`;
|
|
50
|
-
console.log("✓ Removed existing authentication headers");
|
|
51
|
-
} catch (e) {
|
|
52
|
-
console.log("No existing authentication headers to remove");
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
// Update the remote URL to include the token for authentication
|
|
56
|
-
console.log("Updating remote URL with authentication...");
|
|
57
|
-
const remoteUrl = `https://x-access-token:${githubToken}@${serverUrl.host}/${context.repository.owner}/${context.repository.repo}.git`;
|
|
58
|
-
await $`git remote set-url origin ${remoteUrl}`;
|
|
59
|
-
console.log("✓ Updated remote URL with authentication token");
|
|
60
|
-
|
|
61
|
-
console.log("Git authentication configured successfully");
|
|
62
|
-
}
|
|
@@ -1,108 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env bun
|
|
2
|
-
|
|
3
|
-
import * as core from "@actions/core";
|
|
4
|
-
import { retryWithBackoff } from "../utils/retry";
|
|
5
|
-
|
|
6
|
-
async function getOidcToken(): Promise<string> {
|
|
7
|
-
try {
|
|
8
|
-
const oidcToken = await core.getIDToken("claude-code-github-action");
|
|
9
|
-
|
|
10
|
-
return oidcToken;
|
|
11
|
-
} catch (error) {
|
|
12
|
-
console.error("Failed to get OIDC token:", error);
|
|
13
|
-
throw new Error(
|
|
14
|
-
"Could not fetch an OIDC token. Did you remember to add `id-token: write` to your workflow permissions?",
|
|
15
|
-
);
|
|
16
|
-
}
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
async function exchangeForAppToken(oidcToken: string): Promise<string> {
|
|
20
|
-
const response = await fetch(
|
|
21
|
-
"https://api.anthropic.com/api/github/github-app-token-exchange",
|
|
22
|
-
{
|
|
23
|
-
method: "POST",
|
|
24
|
-
headers: {
|
|
25
|
-
Authorization: `Bearer ${oidcToken}`,
|
|
26
|
-
},
|
|
27
|
-
},
|
|
28
|
-
);
|
|
29
|
-
|
|
30
|
-
if (!response.ok) {
|
|
31
|
-
const responseJson = (await response.json()) as {
|
|
32
|
-
error?: {
|
|
33
|
-
message?: string;
|
|
34
|
-
details?: {
|
|
35
|
-
error_code?: string;
|
|
36
|
-
};
|
|
37
|
-
};
|
|
38
|
-
type?: string;
|
|
39
|
-
message?: string;
|
|
40
|
-
};
|
|
41
|
-
|
|
42
|
-
// Check for specific workflow validation error codes that should skip the action
|
|
43
|
-
const errorCode = responseJson.error?.details?.error_code;
|
|
44
|
-
|
|
45
|
-
if (errorCode === "workflow_not_found_on_default_branch") {
|
|
46
|
-
const message =
|
|
47
|
-
responseJson.message ??
|
|
48
|
-
responseJson.error?.message ??
|
|
49
|
-
"Workflow validation failed";
|
|
50
|
-
core.warning(`Skipping action due to workflow validation: ${message}`);
|
|
51
|
-
console.log(
|
|
52
|
-
"Action skipped due to workflow validation error. This is expected when adding Claude Code workflows to new repositories or on PRs with workflow changes. If you're seeing this, your workflow will begin working once you merge your PR.",
|
|
53
|
-
);
|
|
54
|
-
core.setOutput("skipped_due_to_workflow_validation_mismatch", "true");
|
|
55
|
-
process.exit(0);
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
console.error(
|
|
59
|
-
`App token exchange failed: ${response.status} ${response.statusText} - ${responseJson?.error?.message ?? "Unknown error"}`,
|
|
60
|
-
);
|
|
61
|
-
throw new Error(`${responseJson?.error?.message ?? "Unknown error"}`);
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
const appTokenData = (await response.json()) as {
|
|
65
|
-
token?: string;
|
|
66
|
-
app_token?: string;
|
|
67
|
-
};
|
|
68
|
-
const appToken = appTokenData.token || appTokenData.app_token;
|
|
69
|
-
|
|
70
|
-
if (!appToken) {
|
|
71
|
-
throw new Error("App token not found in response");
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
return appToken;
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
export async function setupGitHubToken(): Promise<string> {
|
|
78
|
-
try {
|
|
79
|
-
// Check if GitHub token was provided as override
|
|
80
|
-
const providedToken = process.env.OVERRIDE_GITHUB_TOKEN;
|
|
81
|
-
|
|
82
|
-
if (providedToken) {
|
|
83
|
-
console.log("Using provided GITHUB_TOKEN for authentication");
|
|
84
|
-
core.setOutput("GITHUB_TOKEN", providedToken);
|
|
85
|
-
return providedToken;
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
console.log("Requesting OIDC token...");
|
|
89
|
-
const oidcToken = await retryWithBackoff(() => getOidcToken());
|
|
90
|
-
console.log("OIDC token successfully obtained");
|
|
91
|
-
|
|
92
|
-
console.log("Exchanging OIDC token for app token...");
|
|
93
|
-
const appToken = await retryWithBackoff(() =>
|
|
94
|
-
exchangeForAppToken(oidcToken),
|
|
95
|
-
);
|
|
96
|
-
console.log("App token successfully obtained");
|
|
97
|
-
|
|
98
|
-
console.log("Using GITHUB_TOKEN from OIDC");
|
|
99
|
-
core.setOutput("GITHUB_TOKEN", appToken);
|
|
100
|
-
return appToken;
|
|
101
|
-
} catch (error) {
|
|
102
|
-
// Only set failed if we get here - workflow validation errors will exit(0) before this
|
|
103
|
-
core.setFailed(
|
|
104
|
-
`Failed to setup GitHub token: ${error}\n\nIf you instead wish to use this action with a custom GitHub token or custom GitHub app, provide a \`github_token\` in the \`uses\` section of the app in your workflow yml file.`,
|
|
105
|
-
);
|
|
106
|
-
process.exit(1);
|
|
107
|
-
}
|
|
108
|
-
}
|
|
@@ -1,98 +0,0 @@
|
|
|
1
|
-
// Types for GitHub GraphQL query responses
|
|
2
|
-
export type GitHubAuthor = {
|
|
3
|
-
login: string;
|
|
4
|
-
name?: string;
|
|
5
|
-
};
|
|
6
|
-
|
|
7
|
-
export type GitHubComment = {
|
|
8
|
-
id: string;
|
|
9
|
-
databaseId: string;
|
|
10
|
-
body: string;
|
|
11
|
-
author: GitHubAuthor;
|
|
12
|
-
createdAt: string;
|
|
13
|
-
isMinimized?: boolean;
|
|
14
|
-
};
|
|
15
|
-
|
|
16
|
-
export type GitHubReviewComment = GitHubComment & {
|
|
17
|
-
path: string;
|
|
18
|
-
line: number | null;
|
|
19
|
-
};
|
|
20
|
-
|
|
21
|
-
export type GitHubCommit = {
|
|
22
|
-
oid: string;
|
|
23
|
-
message: string;
|
|
24
|
-
author: {
|
|
25
|
-
name: string;
|
|
26
|
-
email: string;
|
|
27
|
-
};
|
|
28
|
-
};
|
|
29
|
-
|
|
30
|
-
export type GitHubFile = {
|
|
31
|
-
path: string;
|
|
32
|
-
additions: number;
|
|
33
|
-
deletions: number;
|
|
34
|
-
changeType: string;
|
|
35
|
-
};
|
|
36
|
-
|
|
37
|
-
export type GitHubReview = {
|
|
38
|
-
id: string;
|
|
39
|
-
databaseId: string;
|
|
40
|
-
author: GitHubAuthor;
|
|
41
|
-
body: string;
|
|
42
|
-
state: string;
|
|
43
|
-
submittedAt: string;
|
|
44
|
-
comments: {
|
|
45
|
-
nodes: GitHubReviewComment[];
|
|
46
|
-
};
|
|
47
|
-
};
|
|
48
|
-
|
|
49
|
-
export type GitHubPullRequest = {
|
|
50
|
-
title: string;
|
|
51
|
-
body: string;
|
|
52
|
-
author: GitHubAuthor;
|
|
53
|
-
baseRefName: string;
|
|
54
|
-
headRefName: string;
|
|
55
|
-
headRefOid: string;
|
|
56
|
-
createdAt: string;
|
|
57
|
-
additions: number;
|
|
58
|
-
deletions: number;
|
|
59
|
-
state: string;
|
|
60
|
-
commits: {
|
|
61
|
-
totalCount: number;
|
|
62
|
-
nodes: Array<{
|
|
63
|
-
commit: GitHubCommit;
|
|
64
|
-
}>;
|
|
65
|
-
};
|
|
66
|
-
files: {
|
|
67
|
-
nodes: GitHubFile[];
|
|
68
|
-
};
|
|
69
|
-
comments: {
|
|
70
|
-
nodes: GitHubComment[];
|
|
71
|
-
};
|
|
72
|
-
reviews: {
|
|
73
|
-
nodes: GitHubReview[];
|
|
74
|
-
};
|
|
75
|
-
};
|
|
76
|
-
|
|
77
|
-
export type GitHubIssue = {
|
|
78
|
-
title: string;
|
|
79
|
-
body: string;
|
|
80
|
-
author: GitHubAuthor;
|
|
81
|
-
createdAt: string;
|
|
82
|
-
state: string;
|
|
83
|
-
comments: {
|
|
84
|
-
nodes: GitHubComment[];
|
|
85
|
-
};
|
|
86
|
-
};
|
|
87
|
-
|
|
88
|
-
export type PullRequestQueryResponse = {
|
|
89
|
-
repository: {
|
|
90
|
-
pullRequest: GitHubPullRequest;
|
|
91
|
-
};
|
|
92
|
-
};
|
|
93
|
-
|
|
94
|
-
export type IssueQueryResponse = {
|
|
95
|
-
repository: {
|
|
96
|
-
issue: GitHubIssue;
|
|
97
|
-
};
|
|
98
|
-
};
|
package/bin/_internal/integrations/github/claude-code-action/src/github/utils/image-downloader.ts
DELETED
|
@@ -1,246 +0,0 @@
|
|
|
1
|
-
import fs from "fs/promises";
|
|
2
|
-
import path from "path";
|
|
3
|
-
import type { Octokits } from "../api/client";
|
|
4
|
-
import { GITHUB_SERVER_URL } from "../api/config";
|
|
5
|
-
|
|
6
|
-
const escapedUrl = GITHUB_SERVER_URL.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
7
|
-
const IMAGE_REGEX = new RegExp(
|
|
8
|
-
`!\\[[^\\]]*\\]\\((${escapedUrl}\\/user-attachments\\/assets\\/[^)]+)\\)`,
|
|
9
|
-
"g",
|
|
10
|
-
);
|
|
11
|
-
|
|
12
|
-
const HTML_IMG_REGEX = new RegExp(
|
|
13
|
-
`<img[^>]+src=["']([^"']*${escapedUrl}\\/user-attachments\\/assets\\/[^"']+)["'][^>]*>`,
|
|
14
|
-
"gi",
|
|
15
|
-
);
|
|
16
|
-
|
|
17
|
-
type IssueComment = {
|
|
18
|
-
type: "issue_comment";
|
|
19
|
-
id: string;
|
|
20
|
-
body: string;
|
|
21
|
-
};
|
|
22
|
-
|
|
23
|
-
type ReviewComment = {
|
|
24
|
-
type: "review_comment";
|
|
25
|
-
id: string;
|
|
26
|
-
body: string;
|
|
27
|
-
};
|
|
28
|
-
|
|
29
|
-
type ReviewBody = {
|
|
30
|
-
type: "review_body";
|
|
31
|
-
id: string;
|
|
32
|
-
pullNumber: string;
|
|
33
|
-
body: string;
|
|
34
|
-
};
|
|
35
|
-
|
|
36
|
-
type IssueBody = {
|
|
37
|
-
type: "issue_body";
|
|
38
|
-
issueNumber: string;
|
|
39
|
-
body: string;
|
|
40
|
-
};
|
|
41
|
-
|
|
42
|
-
type PullRequestBody = {
|
|
43
|
-
type: "pr_body";
|
|
44
|
-
pullNumber: string;
|
|
45
|
-
body: string;
|
|
46
|
-
};
|
|
47
|
-
|
|
48
|
-
export type CommentWithImages =
|
|
49
|
-
| IssueComment
|
|
50
|
-
| ReviewComment
|
|
51
|
-
| ReviewBody
|
|
52
|
-
| IssueBody
|
|
53
|
-
| PullRequestBody;
|
|
54
|
-
|
|
55
|
-
export async function downloadCommentImages(
|
|
56
|
-
octokits: Octokits,
|
|
57
|
-
owner: string,
|
|
58
|
-
repo: string,
|
|
59
|
-
comments: CommentWithImages[],
|
|
60
|
-
): Promise<Map<string, string>> {
|
|
61
|
-
const urlToPathMap = new Map<string, string>();
|
|
62
|
-
const downloadsDir = "/tmp/github-images";
|
|
63
|
-
|
|
64
|
-
await fs.mkdir(downloadsDir, { recursive: true });
|
|
65
|
-
|
|
66
|
-
const commentsWithImages: Array<{
|
|
67
|
-
comment: CommentWithImages;
|
|
68
|
-
urls: string[];
|
|
69
|
-
}> = [];
|
|
70
|
-
|
|
71
|
-
for (const comment of comments) {
|
|
72
|
-
// Extract URLs from Markdown format
|
|
73
|
-
const markdownMatches = [...comment.body.matchAll(IMAGE_REGEX)];
|
|
74
|
-
const markdownUrls = markdownMatches.map((match) => match[1] as string);
|
|
75
|
-
|
|
76
|
-
// Extract URLs from HTML format
|
|
77
|
-
const htmlMatches = [...comment.body.matchAll(HTML_IMG_REGEX)];
|
|
78
|
-
const htmlUrls = htmlMatches.map((match) => match[1] as string);
|
|
79
|
-
|
|
80
|
-
// Combine and deduplicate URLs
|
|
81
|
-
const urls = [...new Set([...markdownUrls, ...htmlUrls])];
|
|
82
|
-
|
|
83
|
-
if (urls.length > 0) {
|
|
84
|
-
commentsWithImages.push({ comment, urls });
|
|
85
|
-
const id =
|
|
86
|
-
comment.type === "issue_body"
|
|
87
|
-
? comment.issueNumber
|
|
88
|
-
: comment.type === "pr_body"
|
|
89
|
-
? comment.pullNumber
|
|
90
|
-
: comment.id;
|
|
91
|
-
console.log(`Found ${urls.length} image(s) in ${comment.type} ${id}`);
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
// Process each comment with images
|
|
96
|
-
for (const { comment, urls } of commentsWithImages) {
|
|
97
|
-
try {
|
|
98
|
-
let bodyHtml: string | undefined;
|
|
99
|
-
|
|
100
|
-
// Get the HTML version based on comment type
|
|
101
|
-
switch (comment.type) {
|
|
102
|
-
case "issue_comment": {
|
|
103
|
-
const response = await octokits.rest.issues.getComment({
|
|
104
|
-
owner,
|
|
105
|
-
repo,
|
|
106
|
-
comment_id: parseInt(comment.id),
|
|
107
|
-
mediaType: {
|
|
108
|
-
format: "full+json",
|
|
109
|
-
},
|
|
110
|
-
});
|
|
111
|
-
bodyHtml = response.data.body_html;
|
|
112
|
-
break;
|
|
113
|
-
}
|
|
114
|
-
case "review_comment": {
|
|
115
|
-
const response = await octokits.rest.pulls.getReviewComment({
|
|
116
|
-
owner,
|
|
117
|
-
repo,
|
|
118
|
-
comment_id: parseInt(comment.id),
|
|
119
|
-
mediaType: {
|
|
120
|
-
format: "full+json",
|
|
121
|
-
},
|
|
122
|
-
});
|
|
123
|
-
bodyHtml = response.data.body_html;
|
|
124
|
-
break;
|
|
125
|
-
}
|
|
126
|
-
case "review_body": {
|
|
127
|
-
const response = await octokits.rest.pulls.getReview({
|
|
128
|
-
owner,
|
|
129
|
-
repo,
|
|
130
|
-
pull_number: parseInt(comment.pullNumber),
|
|
131
|
-
review_id: parseInt(comment.id),
|
|
132
|
-
mediaType: {
|
|
133
|
-
format: "full+json",
|
|
134
|
-
},
|
|
135
|
-
});
|
|
136
|
-
bodyHtml = response.data.body_html;
|
|
137
|
-
break;
|
|
138
|
-
}
|
|
139
|
-
case "issue_body": {
|
|
140
|
-
const response = await octokits.rest.issues.get({
|
|
141
|
-
owner,
|
|
142
|
-
repo,
|
|
143
|
-
issue_number: parseInt(comment.issueNumber),
|
|
144
|
-
mediaType: {
|
|
145
|
-
format: "full+json",
|
|
146
|
-
},
|
|
147
|
-
});
|
|
148
|
-
bodyHtml = response.data.body_html;
|
|
149
|
-
break;
|
|
150
|
-
}
|
|
151
|
-
case "pr_body": {
|
|
152
|
-
const response = await octokits.rest.pulls.get({
|
|
153
|
-
owner,
|
|
154
|
-
repo,
|
|
155
|
-
pull_number: parseInt(comment.pullNumber),
|
|
156
|
-
mediaType: {
|
|
157
|
-
format: "full+json",
|
|
158
|
-
},
|
|
159
|
-
});
|
|
160
|
-
// Type here seems to be wrong
|
|
161
|
-
bodyHtml = (response.data as any).body_html;
|
|
162
|
-
break;
|
|
163
|
-
}
|
|
164
|
-
}
|
|
165
|
-
if (!bodyHtml) {
|
|
166
|
-
const id =
|
|
167
|
-
comment.type === "issue_body"
|
|
168
|
-
? comment.issueNumber
|
|
169
|
-
: comment.type === "pr_body"
|
|
170
|
-
? comment.pullNumber
|
|
171
|
-
: comment.id;
|
|
172
|
-
console.warn(`No HTML body found for ${comment.type} ${id}`);
|
|
173
|
-
continue;
|
|
174
|
-
}
|
|
175
|
-
|
|
176
|
-
// Extract signed URLs from HTML
|
|
177
|
-
const signedUrlRegex =
|
|
178
|
-
/https:\/\/private-user-images\.githubusercontent\.com\/[^"]+\?jwt=[^"]+/g;
|
|
179
|
-
const signedUrls = bodyHtml.match(signedUrlRegex) || [];
|
|
180
|
-
|
|
181
|
-
// Download each image
|
|
182
|
-
for (let i = 0; i < Math.min(signedUrls.length, urls.length); i++) {
|
|
183
|
-
const signedUrl = signedUrls[i];
|
|
184
|
-
const originalUrl = urls[i];
|
|
185
|
-
|
|
186
|
-
if (!signedUrl || !originalUrl) {
|
|
187
|
-
continue;
|
|
188
|
-
}
|
|
189
|
-
|
|
190
|
-
// Check if we've already downloaded this URL
|
|
191
|
-
if (urlToPathMap.has(originalUrl)) {
|
|
192
|
-
continue;
|
|
193
|
-
}
|
|
194
|
-
|
|
195
|
-
const fileExtension = getImageExtension(originalUrl);
|
|
196
|
-
const filename = `image-${Date.now()}-${i}${fileExtension}`;
|
|
197
|
-
const localPath = path.join(downloadsDir, filename);
|
|
198
|
-
|
|
199
|
-
try {
|
|
200
|
-
console.log(`Downloading ${originalUrl}...`);
|
|
201
|
-
|
|
202
|
-
const imageResponse = await fetch(signedUrl);
|
|
203
|
-
if (!imageResponse.ok) {
|
|
204
|
-
throw new Error(
|
|
205
|
-
`HTTP ${imageResponse.status}: ${imageResponse.statusText}`,
|
|
206
|
-
);
|
|
207
|
-
}
|
|
208
|
-
|
|
209
|
-
const arrayBuffer = await imageResponse.arrayBuffer();
|
|
210
|
-
const buffer = Buffer.from(arrayBuffer);
|
|
211
|
-
|
|
212
|
-
await fs.writeFile(localPath, buffer);
|
|
213
|
-
console.log(`✓ Saved: ${localPath}`);
|
|
214
|
-
|
|
215
|
-
urlToPathMap.set(originalUrl, localPath);
|
|
216
|
-
} catch (error) {
|
|
217
|
-
console.error(`✗ Failed to download ${originalUrl}:`, error);
|
|
218
|
-
}
|
|
219
|
-
}
|
|
220
|
-
} catch (error) {
|
|
221
|
-
const id =
|
|
222
|
-
comment.type === "issue_body"
|
|
223
|
-
? comment.issueNumber
|
|
224
|
-
: comment.type === "pr_body"
|
|
225
|
-
? comment.pullNumber
|
|
226
|
-
: comment.id;
|
|
227
|
-
console.error(
|
|
228
|
-
`Failed to process images for ${comment.type} ${id}:`,
|
|
229
|
-
error,
|
|
230
|
-
);
|
|
231
|
-
}
|
|
232
|
-
}
|
|
233
|
-
|
|
234
|
-
return urlToPathMap;
|
|
235
|
-
}
|
|
236
|
-
|
|
237
|
-
function getImageExtension(url: string): string {
|
|
238
|
-
const urlParts = url.split("/");
|
|
239
|
-
const filename = urlParts[urlParts.length - 1];
|
|
240
|
-
if (!filename) {
|
|
241
|
-
throw new Error("Invalid URL: No filename found");
|
|
242
|
-
}
|
|
243
|
-
|
|
244
|
-
const match = filename.match(/\.(png|jpg|jpeg|gif|webp|svg)$/i);
|
|
245
|
-
return match ? match[0] : ".png";
|
|
246
|
-
}
|