@vicoa/cli 1.3.11-linux-x64 → 1.3.11-win32-x64
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/bin/_internal/81d243bd2c585b0f4821__mypyc.cp312-win_amd64.pyd +0 -0
- package/bin/_internal/VCRUNTIME140.dll +0 -0
- package/bin/_internal/VCRUNTIME140_1.dll +0 -0
- package/bin/_internal/_asyncio.pyd +0 -0
- package/bin/_internal/_bz2.pyd +0 -0
- package/bin/_internal/_cffi_backend.cp312-win_amd64.pyd +0 -0
- package/bin/_internal/_ctypes.pyd +0 -0
- package/bin/_internal/_decimal.pyd +0 -0
- package/bin/_internal/_hashlib.pyd +0 -0
- package/bin/_internal/_lzma.pyd +0 -0
- package/bin/_internal/_multiprocessing.pyd +0 -0
- package/bin/_internal/_overlapped.pyd +0 -0
- package/bin/_internal/_queue.pyd +0 -0
- package/bin/_internal/_socket.pyd +0 -0
- package/bin/_internal/_ssl.pyd +0 -0
- package/bin/_internal/_uuid.pyd +0 -0
- package/bin/_internal/_wmi.pyd +0 -0
- package/bin/_internal/_zoneinfo.pyd +0 -0
- package/bin/_internal/aiohttp/_http_parser.cp312-win_amd64.pyd +0 -0
- package/bin/_internal/aiohttp/_http_writer.cp312-win_amd64.pyd +0 -0
- package/bin/_internal/aiohttp/_websocket/mask.cp312-win_amd64.pyd +0 -0
- package/bin/_internal/aiohttp/_websocket/reader_c.cp312-win_amd64.pyd +0 -0
- package/bin/_internal/api-ms-win-core-console-l1-1-0.dll +0 -0
- package/bin/_internal/api-ms-win-core-datetime-l1-1-0.dll +0 -0
- package/bin/_internal/api-ms-win-core-debug-l1-1-0.dll +0 -0
- package/bin/_internal/api-ms-win-core-errorhandling-l1-1-0.dll +0 -0
- package/bin/_internal/api-ms-win-core-fibers-l1-1-0.dll +0 -0
- package/bin/_internal/api-ms-win-core-fibers-l1-1-1.dll +0 -0
- package/bin/_internal/api-ms-win-core-file-l1-1-0.dll +0 -0
- package/bin/_internal/api-ms-win-core-file-l1-2-0.dll +0 -0
- package/bin/_internal/api-ms-win-core-file-l2-1-0.dll +0 -0
- package/bin/_internal/api-ms-win-core-handle-l1-1-0.dll +0 -0
- package/bin/_internal/api-ms-win-core-heap-l1-1-0.dll +0 -0
- package/bin/_internal/api-ms-win-core-interlocked-l1-1-0.dll +0 -0
- package/bin/_internal/api-ms-win-core-kernel32-legacy-l1-1-1.dll +0 -0
- package/bin/_internal/api-ms-win-core-libraryloader-l1-1-0.dll +0 -0
- package/bin/_internal/api-ms-win-core-localization-l1-2-0.dll +0 -0
- package/bin/_internal/api-ms-win-core-memory-l1-1-0.dll +0 -0
- package/bin/_internal/api-ms-win-core-namedpipe-l1-1-0.dll +0 -0
- package/bin/_internal/api-ms-win-core-processenvironment-l1-1-0.dll +0 -0
- package/bin/_internal/api-ms-win-core-processthreads-l1-1-0.dll +0 -0
- package/bin/_internal/api-ms-win-core-processthreads-l1-1-1.dll +0 -0
- package/bin/_internal/api-ms-win-core-profile-l1-1-0.dll +0 -0
- package/bin/_internal/api-ms-win-core-rtlsupport-l1-1-0.dll +0 -0
- package/bin/_internal/api-ms-win-core-string-l1-1-0.dll +0 -0
- package/bin/_internal/api-ms-win-core-synch-l1-1-0.dll +0 -0
- package/bin/_internal/api-ms-win-core-synch-l1-2-0.dll +0 -0
- package/bin/_internal/api-ms-win-core-sysinfo-l1-1-0.dll +0 -0
- package/bin/_internal/api-ms-win-core-sysinfo-l1-2-0.dll +0 -0
- package/bin/_internal/api-ms-win-core-timezone-l1-1-0.dll +0 -0
- package/bin/_internal/api-ms-win-core-util-l1-1-0.dll +0 -0
- package/bin/_internal/api-ms-win-crt-conio-l1-1-0.dll +0 -0
- package/bin/_internal/api-ms-win-crt-convert-l1-1-0.dll +0 -0
- package/bin/_internal/api-ms-win-crt-environment-l1-1-0.dll +0 -0
- package/bin/_internal/api-ms-win-crt-filesystem-l1-1-0.dll +0 -0
- package/bin/_internal/api-ms-win-crt-heap-l1-1-0.dll +0 -0
- package/bin/_internal/api-ms-win-crt-locale-l1-1-0.dll +0 -0
- package/bin/_internal/api-ms-win-crt-math-l1-1-0.dll +0 -0
- package/bin/_internal/api-ms-win-crt-process-l1-1-0.dll +0 -0
- package/bin/_internal/api-ms-win-crt-runtime-l1-1-0.dll +0 -0
- package/bin/_internal/api-ms-win-crt-stdio-l1-1-0.dll +0 -0
- package/bin/_internal/api-ms-win-crt-string-l1-1-0.dll +0 -0
- package/bin/_internal/api-ms-win-crt-time-l1-1-0.dll +0 -0
- package/bin/_internal/api-ms-win-crt-utility-l1-1-0.dll +0 -0
- package/bin/_internal/base_library.zip +0 -0
- package/bin/_internal/charset_normalizer/cd.cp312-win_amd64.pyd +0 -0
- package/bin/_internal/charset_normalizer/md.cp312-win_amd64.pyd +0 -0
- package/bin/_internal/cryptography/hazmat/bindings/_rust.pyd +0 -0
- package/bin/_internal/cryptography-46.0.7.dist-info/RECORD +2 -2
- package/bin/_internal/cryptography-46.0.7.dist-info/WHEEL +1 -2
- package/bin/_internal/email_validator-2.3.0.dist-info/RECORD +1 -1
- package/bin/_internal/frozenlist/_frozenlist.cp312-win_amd64.pyd +0 -0
- package/bin/_internal/integrations/cli_wrappers/IMPORTANT_USE_CASES.md +32 -32
- package/bin/_internal/integrations/github/claude-code-action/CLAUDE.md +136 -136
- package/bin/_internal/integrations/github/claude-code-action/CODE_OF_CONDUCT.md +128 -128
- package/bin/_internal/integrations/github/claude-code-action/CONTRIBUTING.md +116 -116
- package/bin/_internal/integrations/github/claude-code-action/LICENSE +20 -20
- package/bin/_internal/integrations/github/claude-code-action/README.md +52 -52
- package/bin/_internal/integrations/github/claude-code-action/ROADMAP.md +20 -20
- package/bin/_internal/integrations/github/claude-code-action/SECURITY.md +15 -15
- package/bin/_internal/integrations/github/claude-code-action/action.yml +294 -294
- package/bin/_internal/integrations/github/claude-code-action/base-action/CLAUDE.md +60 -60
- package/bin/_internal/integrations/github/claude-code-action/base-action/CODE_OF_CONDUCT.md +128 -128
- package/bin/_internal/integrations/github/claude-code-action/base-action/CONTRIBUTING.md +136 -136
- package/bin/_internal/integrations/github/claude-code-action/base-action/LICENSE +21 -21
- package/bin/_internal/integrations/github/claude-code-action/base-action/MIRROR_DISCLAIMER.md +11 -11
- package/bin/_internal/integrations/github/claude-code-action/base-action/README.md +521 -521
- package/bin/_internal/integrations/github/claude-code-action/base-action/action.yml +149 -149
- package/bin/_internal/integrations/github/claude-code-action/base-action/bun.lock +54 -54
- package/bin/_internal/integrations/github/claude-code-action/base-action/examples/issue-triage.yml +108 -108
- package/bin/_internal/integrations/github/claude-code-action/base-action/package.json +23 -23
- package/bin/_internal/integrations/github/claude-code-action/base-action/scripts/install-hooks.sh +12 -12
- package/bin/_internal/integrations/github/claude-code-action/base-action/scripts/pre-push +45 -45
- package/bin/_internal/integrations/github/claude-code-action/base-action/src/index.ts +82 -82
- package/bin/_internal/integrations/github/claude-code-action/base-action/src/prepare-prompt.ts +82 -82
- package/bin/_internal/integrations/github/claude-code-action/base-action/src/run-claude.ts +257 -257
- package/bin/_internal/integrations/github/claude-code-action/base-action/src/run-vicoa.ts +300 -300
- package/bin/_internal/integrations/github/claude-code-action/base-action/src/setup-claude-code-settings.ts +68 -68
- package/bin/_internal/integrations/github/claude-code-action/base-action/src/validate-env.ts +54 -54
- package/bin/_internal/integrations/github/claude-code-action/base-action/test-local.sh +11 -11
- package/bin/_internal/integrations/github/claude-code-action/base-action/test-mcp-local.sh +17 -17
- package/bin/_internal/integrations/github/claude-code-action/base-action/tsconfig.json +30 -30
- package/bin/_internal/integrations/github/claude-code-action/bun.lock +384 -384
- package/bin/_internal/integrations/github/claude-code-action/docs/capabilities-and-limitations.md +33 -33
- package/bin/_internal/integrations/github/claude-code-action/docs/cloud-providers.md +99 -99
- package/bin/_internal/integrations/github/claude-code-action/docs/configuration.md +345 -345
- package/bin/_internal/integrations/github/claude-code-action/docs/custom-automations.md +113 -113
- package/bin/_internal/integrations/github/claude-code-action/docs/experimental.md +128 -128
- package/bin/_internal/integrations/github/claude-code-action/docs/faq.md +205 -205
- package/bin/_internal/integrations/github/claude-code-action/docs/migration-guide.md +261 -261
- package/bin/_internal/integrations/github/claude-code-action/docs/security.md +38 -38
- package/bin/_internal/integrations/github/claude-code-action/docs/setup.md +146 -146
- package/bin/_internal/integrations/github/claude-code-action/docs/usage.md +213 -213
- package/bin/_internal/integrations/github/claude-code-action/examples/auto-fix-ci/auto-fix-ci.yml +97 -97
- package/bin/_internal/integrations/github/claude-code-action/examples/auto-fix-ci/commands/fix-ci.md +127 -127
- package/bin/_internal/integrations/github/claude-code-action/examples/auto-fix-ci-signed/auto-fix-ci-signed.yml +97 -97
- package/bin/_internal/integrations/github/claude-code-action/examples/auto-fix-ci-signed/commands/fix-ci-signed.md +148 -148
- package/bin/_internal/integrations/github/claude-code-action/examples/issue-deduplication.yml +63 -63
- package/bin/_internal/integrations/github/claude-code-action/examples/issue-triage.yml +75 -75
- package/bin/_internal/integrations/github/claude-code-action/examples/vicoa.yml +74 -74
- package/bin/_internal/integrations/github/claude-code-action/package.json +31 -31
- package/bin/_internal/integrations/github/claude-code-action/scripts/install-hooks.sh +12 -12
- package/bin/_internal/integrations/github/claude-code-action/scripts/pre-commit +45 -45
- package/bin/_internal/integrations/github/claude-code-action/scripts/setup-network-restrictions.sh +122 -122
- package/bin/_internal/integrations/github/claude-code-action/src/create-prompt/index.ts +799 -799
- package/bin/_internal/integrations/github/claude-code-action/src/create-prompt/types.ts +102 -102
- package/bin/_internal/integrations/github/claude-code-action/src/entrypoints/collect-inputs.ts +58 -58
- package/bin/_internal/integrations/github/claude-code-action/src/entrypoints/format-turns.ts +465 -465
- package/bin/_internal/integrations/github/claude-code-action/src/entrypoints/prepare.ts +98 -98
- package/bin/_internal/integrations/github/claude-code-action/src/entrypoints/update-comment-link.ts +245 -245
- package/bin/_internal/integrations/github/claude-code-action/src/github/api/client.ts +23 -23
- package/bin/_internal/integrations/github/claude-code-action/src/github/api/config.ts +4 -4
- package/bin/_internal/integrations/github/claude-code-action/src/github/api/queries/github.ts +117 -117
- package/bin/_internal/integrations/github/claude-code-action/src/github/context.ts +277 -277
- package/bin/_internal/integrations/github/claude-code-action/src/github/data/fetcher.ts +233 -233
- package/bin/_internal/integrations/github/claude-code-action/src/github/data/formatter.ts +144 -144
- package/bin/_internal/integrations/github/claude-code-action/src/github/operations/branch-cleanup.ts +132 -132
- package/bin/_internal/integrations/github/claude-code-action/src/github/operations/branch.ts +163 -163
- package/bin/_internal/integrations/github/claude-code-action/src/github/operations/comment-logic.ts +203 -203
- package/bin/_internal/integrations/github/claude-code-action/src/github/operations/comments/common.ts +33 -33
- package/bin/_internal/integrations/github/claude-code-action/src/github/operations/comments/create-initial.ts +111 -111
- package/bin/_internal/integrations/github/claude-code-action/src/github/operations/comments/update-claude-comment.ts +70 -70
- package/bin/_internal/integrations/github/claude-code-action/src/github/operations/comments/update-with-branch.ts +57 -57
- package/bin/_internal/integrations/github/claude-code-action/src/github/operations/git-config.ts +62 -62
- package/bin/_internal/integrations/github/claude-code-action/src/github/token.ts +108 -108
- package/bin/_internal/integrations/github/claude-code-action/src/github/types.ts +98 -98
- package/bin/_internal/integrations/github/claude-code-action/src/github/utils/image-downloader.ts +246 -246
- package/bin/_internal/integrations/github/claude-code-action/src/github/utils/sanitizer.ts +100 -100
- package/bin/_internal/integrations/github/claude-code-action/src/github/validation/actor.ts +64 -64
- package/bin/_internal/integrations/github/claude-code-action/src/github/validation/permissions.ts +47 -47
- package/bin/_internal/integrations/github/claude-code-action/src/github/validation/trigger.ts +148 -148
- package/bin/_internal/integrations/github/claude-code-action/src/mcp/github-actions-server.ts +279 -279
- package/bin/_internal/integrations/github/claude-code-action/src/mcp/github-comment-server.ts +101 -101
- package/bin/_internal/integrations/github/claude-code-action/src/mcp/github-file-ops-server.ts +677 -677
- package/bin/_internal/integrations/github/claude-code-action/src/mcp/github-inline-comment-server.ts +184 -184
- package/bin/_internal/integrations/github/claude-code-action/src/mcp/install-mcp-server.ts +201 -201
- package/bin/_internal/integrations/github/claude-code-action/src/modes/agent/index.ts +152 -152
- package/bin/_internal/integrations/github/claude-code-action/src/modes/agent/parse-tools.ts +22 -22
- package/bin/_internal/integrations/github/claude-code-action/src/modes/detector.ts +66 -66
- package/bin/_internal/integrations/github/claude-code-action/src/modes/registry.ts +54 -54
- package/bin/_internal/integrations/github/claude-code-action/src/modes/tag/index.ts +187 -187
- package/bin/_internal/integrations/github/claude-code-action/src/modes/types.ts +100 -100
- package/bin/_internal/integrations/github/claude-code-action/src/prepare/index.ts +20 -20
- package/bin/_internal/integrations/github/claude-code-action/src/prepare/types.ts +20 -20
- package/bin/_internal/integrations/github/claude-code-action/src/utils/retry.ts +40 -40
- package/bin/_internal/integrations/github/claude-code-action/tsconfig.json +30 -30
- package/bin/_internal/integrations/n8n/LICENSE +20 -20
- package/bin/_internal/integrations/n8n/README.md +297 -297
- package/bin/_internal/integrations/n8n/package-lock.json +2989 -2989
- package/bin/_internal/integrations/n8n/package.json +68 -68
- package/bin/_internal/integrations/n8n/src/credentials/OmnaraApi.credentials.ts +52 -52
- package/bin/_internal/integrations/n8n/src/nodes/Omnara/Omnara.node.json +34 -34
- package/bin/_internal/integrations/n8n/src/nodes/Omnara/Omnara.node.ts +304 -304
- package/bin/_internal/integrations/n8n/src/nodes/Omnara/actions/message/index.ts +37 -37
- package/bin/_internal/integrations/n8n/src/nodes/Omnara/actions/message/send.operation.ts +151 -151
- package/bin/_internal/integrations/n8n/src/nodes/Omnara/actions/message/sendAndWait.operation.ts +252 -252
- package/bin/_internal/integrations/n8n/src/nodes/Omnara/actions/session/end.operation.ts +56 -56
- package/bin/_internal/integrations/n8n/src/nodes/Omnara/actions/session/index.ts +29 -29
- package/bin/_internal/integrations/n8n/src/utils/GenericFunctions.ts +92 -92
- package/bin/_internal/integrations/n8n/src/utils/sendAndWait/configureWaitTillDate.ts +42 -42
- package/bin/_internal/integrations/n8n/src/utils/sendAndWait/descriptions.ts +20 -20
- package/bin/_internal/integrations/n8n/src/utils/sendAndWaitWebhook.ts +72 -72
- package/bin/_internal/integrations/n8n/tsconfig.json +19 -19
- package/bin/_internal/jiter/jiter.cp312-win_amd64.pyd +0 -0
- package/bin/_internal/jsonschema-4.26.0.dist-info/RECORD +1 -1
- package/bin/_internal/libcrypto-3.dll +0 -0
- package/bin/_internal/libffi-8.dll +0 -0
- package/bin/_internal/libssl-3.dll +0 -0
- package/bin/_internal/mcp-1.27.0.dist-info/RECORD +1 -1
- package/bin/_internal/multidict/_multidict.cp312-win_amd64.pyd +0 -0
- package/bin/_internal/propcache/_helpers_c.cp312-win_amd64.pyd +0 -0
- package/bin/_internal/pydantic_core/_pydantic_core.cp312-win_amd64.pyd +0 -0
- package/bin/_internal/pyexpat.pyd +0 -0
- package/bin/_internal/python3.dll +0 -0
- package/bin/_internal/python312.dll +0 -0
- package/bin/_internal/pywin32_system32/pythoncom312.dll +0 -0
- package/bin/_internal/pywin32_system32/pywintypes312.dll +0 -0
- package/bin/_internal/rpds/rpds.cp312-win_amd64.pyd +0 -0
- package/bin/_internal/select.pyd +0 -0
- package/bin/_internal/ucrtbase.dll +0 -0
- package/bin/_internal/{python3.12/lib-dynload/unicodedata.cpython-312-x86_64-linux-gnu.so → unicodedata.pyd} +0 -0
- package/bin/_internal/vicoa/_bin/README.md +28 -28
- package/bin/_internal/vicoa-1.3.10.dist-info/METADATA +311 -311
- package/bin/_internal/vicoa-1.3.10.dist-info/RECORD +6 -6
- package/bin/_internal/vicoa-1.3.10.dist-info/WHEEL +1 -1
- package/bin/_internal/vicoa-1.3.10.dist-info/direct_url.json +1 -1
- package/bin/_internal/vicoa-1.3.10.dist-info/licenses/LICENSE +201 -201
- package/bin/_internal/watchfiles/_rust_notify.cp312-win_amd64.pyd +0 -0
- package/bin/_internal/websockets/speedups.cp312-win_amd64.pyd +0 -0
- package/bin/_internal/websockets-16.0.dist-info/METADATA +179 -179
- package/bin/_internal/websockets-16.0.dist-info/RECORD +53 -53
- package/bin/_internal/websockets-16.0.dist-info/WHEEL +1 -3
- package/bin/_internal/websockets-16.0.dist-info/licenses/LICENSE +24 -24
- package/bin/_internal/win32/_win32sysloader.pyd +0 -0
- package/bin/_internal/win32/win32api.pyd +0 -0
- package/bin/_internal/win32/win32evtlog.pyd +0 -0
- package/bin/_internal/win32/win32job.pyd +0 -0
- package/bin/_internal/yaml/_yaml.cp312-win_amd64.pyd +0 -0
- package/bin/_internal/yarl/_quoting_c.cp312-win_amd64.pyd +0 -0
- package/bin/{vicoa → vicoa.exe} +0 -0
- package/package.json +3 -3
- 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/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/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/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/cryptography/hazmat/bindings/_rust.abi3.so +0 -0
- package/bin/_internal/frozenlist/_frozenlist.cpython-312-x86_64-linux-gnu.so +0 -0
- package/bin/_internal/jiter/jiter.cpython-312-x86_64-linux-gnu.so +0 -0
- 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/multidict/_multidict.cpython-312-x86_64-linux-gnu.so +0 -0
- package/bin/_internal/propcache/_helpers_c.cpython-312-x86_64-linux-gnu.so +0 -0
- 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/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/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/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/_internal/integrations/github/claude-code-action/src/entrypoints/update-comment-link.ts
CHANGED
|
@@ -1,245 +1,245 @@
|
|
|
1
|
-
#!/usr/bin/env bun
|
|
2
|
-
|
|
3
|
-
import { createOctokit } from "../github/api/client";
|
|
4
|
-
import * as fs from "fs/promises";
|
|
5
|
-
import {
|
|
6
|
-
updateCommentBody,
|
|
7
|
-
type CommentUpdateInput,
|
|
8
|
-
} from "../github/operations/comment-logic";
|
|
9
|
-
import {
|
|
10
|
-
parseGitHubContext,
|
|
11
|
-
isPullRequestReviewCommentEvent,
|
|
12
|
-
isEntityContext,
|
|
13
|
-
} from "../github/context";
|
|
14
|
-
import { GITHUB_SERVER_URL } from "../github/api/config";
|
|
15
|
-
import { checkAndCommitOrDeleteBranch } from "../github/operations/branch-cleanup";
|
|
16
|
-
import { updateClaudeComment } from "../github/operations/comments/update-claude-comment";
|
|
17
|
-
|
|
18
|
-
async function run() {
|
|
19
|
-
try {
|
|
20
|
-
const commentId = parseInt(process.env.CLAUDE_COMMENT_ID!);
|
|
21
|
-
const githubToken = process.env.GITHUB_TOKEN!;
|
|
22
|
-
const claudeBranch = process.env.CLAUDE_BRANCH;
|
|
23
|
-
const baseBranch = process.env.BASE_BRANCH || "main";
|
|
24
|
-
const triggerUsername = process.env.TRIGGER_USERNAME;
|
|
25
|
-
|
|
26
|
-
const context = parseGitHubContext();
|
|
27
|
-
|
|
28
|
-
// This script is only called for entity-based events
|
|
29
|
-
if (!isEntityContext(context)) {
|
|
30
|
-
throw new Error("update-comment-link requires an entity context");
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
const { owner, repo } = context.repository;
|
|
34
|
-
|
|
35
|
-
const octokit = createOctokit(githubToken);
|
|
36
|
-
|
|
37
|
-
const serverUrl = GITHUB_SERVER_URL;
|
|
38
|
-
const jobUrl = `${serverUrl}/${owner}/${repo}/actions/runs/${process.env.GITHUB_RUN_ID}`;
|
|
39
|
-
|
|
40
|
-
let comment;
|
|
41
|
-
let isPRReviewComment = false;
|
|
42
|
-
|
|
43
|
-
try {
|
|
44
|
-
// GitHub has separate ID namespaces for review comments and issue comments
|
|
45
|
-
// We need to use the correct API based on the event type
|
|
46
|
-
if (isPullRequestReviewCommentEvent(context)) {
|
|
47
|
-
// For PR review comments, use the pulls API
|
|
48
|
-
console.log(`Fetching PR review comment ${commentId}`);
|
|
49
|
-
const { data: prComment } = await octokit.rest.pulls.getReviewComment({
|
|
50
|
-
owner,
|
|
51
|
-
repo,
|
|
52
|
-
comment_id: commentId,
|
|
53
|
-
});
|
|
54
|
-
comment = prComment;
|
|
55
|
-
isPRReviewComment = true;
|
|
56
|
-
console.log("Successfully fetched as PR review comment");
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
// For all other event types, use the issues API
|
|
60
|
-
if (!comment) {
|
|
61
|
-
console.log(`Fetching issue comment ${commentId}`);
|
|
62
|
-
const { data: issueComment } = await octokit.rest.issues.getComment({
|
|
63
|
-
owner,
|
|
64
|
-
repo,
|
|
65
|
-
comment_id: commentId,
|
|
66
|
-
});
|
|
67
|
-
comment = issueComment;
|
|
68
|
-
isPRReviewComment = false;
|
|
69
|
-
console.log("Successfully fetched as issue comment");
|
|
70
|
-
}
|
|
71
|
-
} catch (finalError) {
|
|
72
|
-
// If all attempts fail, try to determine more information about the comment
|
|
73
|
-
console.error("Failed to fetch comment. Debug info:");
|
|
74
|
-
console.error(`Comment ID: ${commentId}`);
|
|
75
|
-
console.error(`Event name: ${context.eventName}`);
|
|
76
|
-
console.error(`Entity number: ${context.entityNumber}`);
|
|
77
|
-
console.error(`Repository: ${context.repository.full_name}`);
|
|
78
|
-
|
|
79
|
-
// Try to get the PR info to understand the comment structure
|
|
80
|
-
try {
|
|
81
|
-
const { data: pr } = await octokit.rest.pulls.get({
|
|
82
|
-
owner,
|
|
83
|
-
repo,
|
|
84
|
-
pull_number: context.entityNumber,
|
|
85
|
-
});
|
|
86
|
-
console.log(`PR state: ${pr.state}`);
|
|
87
|
-
console.log(`PR comments count: ${pr.comments}`);
|
|
88
|
-
console.log(`PR review comments count: ${pr.review_comments}`);
|
|
89
|
-
} catch {
|
|
90
|
-
console.error("Could not fetch PR info for debugging");
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
throw finalError;
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
const currentBody = comment.body ?? "";
|
|
97
|
-
|
|
98
|
-
// Check if we need to add branch link for new branches
|
|
99
|
-
const useCommitSigning = process.env.USE_COMMIT_SIGNING === "true";
|
|
100
|
-
const { shouldDeleteBranch, branchLink } =
|
|
101
|
-
await checkAndCommitOrDeleteBranch(
|
|
102
|
-
octokit,
|
|
103
|
-
owner,
|
|
104
|
-
repo,
|
|
105
|
-
claudeBranch,
|
|
106
|
-
baseBranch,
|
|
107
|
-
useCommitSigning,
|
|
108
|
-
);
|
|
109
|
-
|
|
110
|
-
// Check if we need to add PR URL when we have a new branch
|
|
111
|
-
let prLink = "";
|
|
112
|
-
// If claudeBranch is set, it means we created a new branch (for issues or closed/merged PRs)
|
|
113
|
-
if (claudeBranch && !shouldDeleteBranch) {
|
|
114
|
-
// Check if comment already contains a PR URL
|
|
115
|
-
const serverUrlPattern = serverUrl.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
116
|
-
const prUrlPattern = new RegExp(
|
|
117
|
-
`${serverUrlPattern}\\/.+\\/compare\\/${baseBranch.replace(/[.*+?^${}()|[\]\\]/g, "\\$&")}\\.\\.\\.`,
|
|
118
|
-
);
|
|
119
|
-
const containsPRUrl = currentBody.match(prUrlPattern);
|
|
120
|
-
|
|
121
|
-
if (!containsPRUrl) {
|
|
122
|
-
// Check if there are changes to the branch compared to the default branch
|
|
123
|
-
try {
|
|
124
|
-
const { data: comparison } =
|
|
125
|
-
await octokit.rest.repos.compareCommitsWithBasehead({
|
|
126
|
-
owner,
|
|
127
|
-
repo,
|
|
128
|
-
basehead: `${baseBranch}...${claudeBranch}`,
|
|
129
|
-
});
|
|
130
|
-
|
|
131
|
-
// If there are changes (commits or file changes), add the PR URL
|
|
132
|
-
if (
|
|
133
|
-
comparison.total_commits > 0 ||
|
|
134
|
-
(comparison.files && comparison.files.length > 0)
|
|
135
|
-
) {
|
|
136
|
-
const entityType = context.isPR ? "PR" : "Issue";
|
|
137
|
-
const prTitle = encodeURIComponent(
|
|
138
|
-
`${entityType} #${context.entityNumber}: Changes from Claude`,
|
|
139
|
-
);
|
|
140
|
-
const prBody = encodeURIComponent(
|
|
141
|
-
`This PR addresses ${entityType.toLowerCase()} #${context.entityNumber}\n\nGenerated with [Claude Code](https://claude.ai/code)`,
|
|
142
|
-
);
|
|
143
|
-
const prUrl = `${serverUrl}/${owner}/${repo}/compare/${baseBranch}...${claudeBranch}?quick_pull=1&title=${prTitle}&body=${prBody}`;
|
|
144
|
-
prLink = `\n[Create a PR](${prUrl})`;
|
|
145
|
-
}
|
|
146
|
-
} catch (error) {
|
|
147
|
-
console.error("Error checking for changes in branch:", error);
|
|
148
|
-
// Don't fail the entire update if we can't check for changes
|
|
149
|
-
}
|
|
150
|
-
}
|
|
151
|
-
}
|
|
152
|
-
|
|
153
|
-
// Check if action failed and read output file for execution details
|
|
154
|
-
let executionDetails: {
|
|
155
|
-
cost_usd?: number;
|
|
156
|
-
duration_ms?: number;
|
|
157
|
-
duration_api_ms?: number;
|
|
158
|
-
} | null = null;
|
|
159
|
-
let actionFailed = false;
|
|
160
|
-
let errorDetails: string | undefined;
|
|
161
|
-
|
|
162
|
-
// First check if prepare step failed
|
|
163
|
-
const prepareSuccess = process.env.PREPARE_SUCCESS !== "false";
|
|
164
|
-
const prepareError = process.env.PREPARE_ERROR;
|
|
165
|
-
|
|
166
|
-
if (!prepareSuccess && prepareError) {
|
|
167
|
-
actionFailed = true;
|
|
168
|
-
errorDetails = prepareError;
|
|
169
|
-
} else {
|
|
170
|
-
// Check for existence of output file and parse it if available
|
|
171
|
-
try {
|
|
172
|
-
const outputFile = process.env.OUTPUT_FILE;
|
|
173
|
-
if (outputFile) {
|
|
174
|
-
const fileContent = await fs.readFile(outputFile, "utf8");
|
|
175
|
-
const outputData = JSON.parse(fileContent);
|
|
176
|
-
|
|
177
|
-
// Output file is an array, get the last element which contains execution details
|
|
178
|
-
if (Array.isArray(outputData) && outputData.length > 0) {
|
|
179
|
-
const lastElement = outputData[outputData.length - 1];
|
|
180
|
-
if (
|
|
181
|
-
lastElement.type === "result" &&
|
|
182
|
-
"cost_usd" in lastElement &&
|
|
183
|
-
"duration_ms" in lastElement
|
|
184
|
-
) {
|
|
185
|
-
executionDetails = {
|
|
186
|
-
cost_usd: lastElement.cost_usd,
|
|
187
|
-
duration_ms: lastElement.duration_ms,
|
|
188
|
-
duration_api_ms: lastElement.duration_api_ms,
|
|
189
|
-
};
|
|
190
|
-
}
|
|
191
|
-
}
|
|
192
|
-
}
|
|
193
|
-
|
|
194
|
-
// Check if the Claude action failed
|
|
195
|
-
const claudeSuccess = process.env.CLAUDE_SUCCESS !== "false";
|
|
196
|
-
actionFailed = !claudeSuccess;
|
|
197
|
-
} catch (error) {
|
|
198
|
-
console.error("Error reading output file:", error);
|
|
199
|
-
// If we can't read the file, check for any failure markers
|
|
200
|
-
actionFailed = process.env.CLAUDE_SUCCESS === "false";
|
|
201
|
-
}
|
|
202
|
-
}
|
|
203
|
-
|
|
204
|
-
// Prepare input for updateCommentBody function
|
|
205
|
-
const commentInput: CommentUpdateInput = {
|
|
206
|
-
currentBody,
|
|
207
|
-
actionFailed,
|
|
208
|
-
executionDetails,
|
|
209
|
-
jobUrl,
|
|
210
|
-
branchLink,
|
|
211
|
-
prLink,
|
|
212
|
-
branchName: shouldDeleteBranch || !branchLink ? undefined : claudeBranch,
|
|
213
|
-
triggerUsername,
|
|
214
|
-
errorDetails,
|
|
215
|
-
};
|
|
216
|
-
|
|
217
|
-
const updatedBody = updateCommentBody(commentInput);
|
|
218
|
-
|
|
219
|
-
try {
|
|
220
|
-
await updateClaudeComment(octokit.rest, {
|
|
221
|
-
owner,
|
|
222
|
-
repo,
|
|
223
|
-
commentId,
|
|
224
|
-
body: updatedBody,
|
|
225
|
-
isPullRequestReviewComment: isPRReviewComment,
|
|
226
|
-
});
|
|
227
|
-
console.log(
|
|
228
|
-
`✅ Updated ${isPRReviewComment ? "PR review" : "issue"} comment ${commentId} with job link`,
|
|
229
|
-
);
|
|
230
|
-
} catch (updateError) {
|
|
231
|
-
console.error(
|
|
232
|
-
`Failed to update ${isPRReviewComment ? "PR review" : "issue"} comment:`,
|
|
233
|
-
updateError,
|
|
234
|
-
);
|
|
235
|
-
throw updateError;
|
|
236
|
-
}
|
|
237
|
-
|
|
238
|
-
process.exit(0);
|
|
239
|
-
} catch (error) {
|
|
240
|
-
console.error("Error updating comment with job link:", error);
|
|
241
|
-
process.exit(1);
|
|
242
|
-
}
|
|
243
|
-
}
|
|
244
|
-
|
|
245
|
-
run();
|
|
1
|
+
#!/usr/bin/env bun
|
|
2
|
+
|
|
3
|
+
import { createOctokit } from "../github/api/client";
|
|
4
|
+
import * as fs from "fs/promises";
|
|
5
|
+
import {
|
|
6
|
+
updateCommentBody,
|
|
7
|
+
type CommentUpdateInput,
|
|
8
|
+
} from "../github/operations/comment-logic";
|
|
9
|
+
import {
|
|
10
|
+
parseGitHubContext,
|
|
11
|
+
isPullRequestReviewCommentEvent,
|
|
12
|
+
isEntityContext,
|
|
13
|
+
} from "../github/context";
|
|
14
|
+
import { GITHUB_SERVER_URL } from "../github/api/config";
|
|
15
|
+
import { checkAndCommitOrDeleteBranch } from "../github/operations/branch-cleanup";
|
|
16
|
+
import { updateClaudeComment } from "../github/operations/comments/update-claude-comment";
|
|
17
|
+
|
|
18
|
+
async function run() {
|
|
19
|
+
try {
|
|
20
|
+
const commentId = parseInt(process.env.CLAUDE_COMMENT_ID!);
|
|
21
|
+
const githubToken = process.env.GITHUB_TOKEN!;
|
|
22
|
+
const claudeBranch = process.env.CLAUDE_BRANCH;
|
|
23
|
+
const baseBranch = process.env.BASE_BRANCH || "main";
|
|
24
|
+
const triggerUsername = process.env.TRIGGER_USERNAME;
|
|
25
|
+
|
|
26
|
+
const context = parseGitHubContext();
|
|
27
|
+
|
|
28
|
+
// This script is only called for entity-based events
|
|
29
|
+
if (!isEntityContext(context)) {
|
|
30
|
+
throw new Error("update-comment-link requires an entity context");
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
const { owner, repo } = context.repository;
|
|
34
|
+
|
|
35
|
+
const octokit = createOctokit(githubToken);
|
|
36
|
+
|
|
37
|
+
const serverUrl = GITHUB_SERVER_URL;
|
|
38
|
+
const jobUrl = `${serverUrl}/${owner}/${repo}/actions/runs/${process.env.GITHUB_RUN_ID}`;
|
|
39
|
+
|
|
40
|
+
let comment;
|
|
41
|
+
let isPRReviewComment = false;
|
|
42
|
+
|
|
43
|
+
try {
|
|
44
|
+
// GitHub has separate ID namespaces for review comments and issue comments
|
|
45
|
+
// We need to use the correct API based on the event type
|
|
46
|
+
if (isPullRequestReviewCommentEvent(context)) {
|
|
47
|
+
// For PR review comments, use the pulls API
|
|
48
|
+
console.log(`Fetching PR review comment ${commentId}`);
|
|
49
|
+
const { data: prComment } = await octokit.rest.pulls.getReviewComment({
|
|
50
|
+
owner,
|
|
51
|
+
repo,
|
|
52
|
+
comment_id: commentId,
|
|
53
|
+
});
|
|
54
|
+
comment = prComment;
|
|
55
|
+
isPRReviewComment = true;
|
|
56
|
+
console.log("Successfully fetched as PR review comment");
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
// For all other event types, use the issues API
|
|
60
|
+
if (!comment) {
|
|
61
|
+
console.log(`Fetching issue comment ${commentId}`);
|
|
62
|
+
const { data: issueComment } = await octokit.rest.issues.getComment({
|
|
63
|
+
owner,
|
|
64
|
+
repo,
|
|
65
|
+
comment_id: commentId,
|
|
66
|
+
});
|
|
67
|
+
comment = issueComment;
|
|
68
|
+
isPRReviewComment = false;
|
|
69
|
+
console.log("Successfully fetched as issue comment");
|
|
70
|
+
}
|
|
71
|
+
} catch (finalError) {
|
|
72
|
+
// If all attempts fail, try to determine more information about the comment
|
|
73
|
+
console.error("Failed to fetch comment. Debug info:");
|
|
74
|
+
console.error(`Comment ID: ${commentId}`);
|
|
75
|
+
console.error(`Event name: ${context.eventName}`);
|
|
76
|
+
console.error(`Entity number: ${context.entityNumber}`);
|
|
77
|
+
console.error(`Repository: ${context.repository.full_name}`);
|
|
78
|
+
|
|
79
|
+
// Try to get the PR info to understand the comment structure
|
|
80
|
+
try {
|
|
81
|
+
const { data: pr } = await octokit.rest.pulls.get({
|
|
82
|
+
owner,
|
|
83
|
+
repo,
|
|
84
|
+
pull_number: context.entityNumber,
|
|
85
|
+
});
|
|
86
|
+
console.log(`PR state: ${pr.state}`);
|
|
87
|
+
console.log(`PR comments count: ${pr.comments}`);
|
|
88
|
+
console.log(`PR review comments count: ${pr.review_comments}`);
|
|
89
|
+
} catch {
|
|
90
|
+
console.error("Could not fetch PR info for debugging");
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
throw finalError;
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
const currentBody = comment.body ?? "";
|
|
97
|
+
|
|
98
|
+
// Check if we need to add branch link for new branches
|
|
99
|
+
const useCommitSigning = process.env.USE_COMMIT_SIGNING === "true";
|
|
100
|
+
const { shouldDeleteBranch, branchLink } =
|
|
101
|
+
await checkAndCommitOrDeleteBranch(
|
|
102
|
+
octokit,
|
|
103
|
+
owner,
|
|
104
|
+
repo,
|
|
105
|
+
claudeBranch,
|
|
106
|
+
baseBranch,
|
|
107
|
+
useCommitSigning,
|
|
108
|
+
);
|
|
109
|
+
|
|
110
|
+
// Check if we need to add PR URL when we have a new branch
|
|
111
|
+
let prLink = "";
|
|
112
|
+
// If claudeBranch is set, it means we created a new branch (for issues or closed/merged PRs)
|
|
113
|
+
if (claudeBranch && !shouldDeleteBranch) {
|
|
114
|
+
// Check if comment already contains a PR URL
|
|
115
|
+
const serverUrlPattern = serverUrl.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
116
|
+
const prUrlPattern = new RegExp(
|
|
117
|
+
`${serverUrlPattern}\\/.+\\/compare\\/${baseBranch.replace(/[.*+?^${}()|[\]\\]/g, "\\$&")}\\.\\.\\.`,
|
|
118
|
+
);
|
|
119
|
+
const containsPRUrl = currentBody.match(prUrlPattern);
|
|
120
|
+
|
|
121
|
+
if (!containsPRUrl) {
|
|
122
|
+
// Check if there are changes to the branch compared to the default branch
|
|
123
|
+
try {
|
|
124
|
+
const { data: comparison } =
|
|
125
|
+
await octokit.rest.repos.compareCommitsWithBasehead({
|
|
126
|
+
owner,
|
|
127
|
+
repo,
|
|
128
|
+
basehead: `${baseBranch}...${claudeBranch}`,
|
|
129
|
+
});
|
|
130
|
+
|
|
131
|
+
// If there are changes (commits or file changes), add the PR URL
|
|
132
|
+
if (
|
|
133
|
+
comparison.total_commits > 0 ||
|
|
134
|
+
(comparison.files && comparison.files.length > 0)
|
|
135
|
+
) {
|
|
136
|
+
const entityType = context.isPR ? "PR" : "Issue";
|
|
137
|
+
const prTitle = encodeURIComponent(
|
|
138
|
+
`${entityType} #${context.entityNumber}: Changes from Claude`,
|
|
139
|
+
);
|
|
140
|
+
const prBody = encodeURIComponent(
|
|
141
|
+
`This PR addresses ${entityType.toLowerCase()} #${context.entityNumber}\n\nGenerated with [Claude Code](https://claude.ai/code)`,
|
|
142
|
+
);
|
|
143
|
+
const prUrl = `${serverUrl}/${owner}/${repo}/compare/${baseBranch}...${claudeBranch}?quick_pull=1&title=${prTitle}&body=${prBody}`;
|
|
144
|
+
prLink = `\n[Create a PR](${prUrl})`;
|
|
145
|
+
}
|
|
146
|
+
} catch (error) {
|
|
147
|
+
console.error("Error checking for changes in branch:", error);
|
|
148
|
+
// Don't fail the entire update if we can't check for changes
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
// Check if action failed and read output file for execution details
|
|
154
|
+
let executionDetails: {
|
|
155
|
+
cost_usd?: number;
|
|
156
|
+
duration_ms?: number;
|
|
157
|
+
duration_api_ms?: number;
|
|
158
|
+
} | null = null;
|
|
159
|
+
let actionFailed = false;
|
|
160
|
+
let errorDetails: string | undefined;
|
|
161
|
+
|
|
162
|
+
// First check if prepare step failed
|
|
163
|
+
const prepareSuccess = process.env.PREPARE_SUCCESS !== "false";
|
|
164
|
+
const prepareError = process.env.PREPARE_ERROR;
|
|
165
|
+
|
|
166
|
+
if (!prepareSuccess && prepareError) {
|
|
167
|
+
actionFailed = true;
|
|
168
|
+
errorDetails = prepareError;
|
|
169
|
+
} else {
|
|
170
|
+
// Check for existence of output file and parse it if available
|
|
171
|
+
try {
|
|
172
|
+
const outputFile = process.env.OUTPUT_FILE;
|
|
173
|
+
if (outputFile) {
|
|
174
|
+
const fileContent = await fs.readFile(outputFile, "utf8");
|
|
175
|
+
const outputData = JSON.parse(fileContent);
|
|
176
|
+
|
|
177
|
+
// Output file is an array, get the last element which contains execution details
|
|
178
|
+
if (Array.isArray(outputData) && outputData.length > 0) {
|
|
179
|
+
const lastElement = outputData[outputData.length - 1];
|
|
180
|
+
if (
|
|
181
|
+
lastElement.type === "result" &&
|
|
182
|
+
"cost_usd" in lastElement &&
|
|
183
|
+
"duration_ms" in lastElement
|
|
184
|
+
) {
|
|
185
|
+
executionDetails = {
|
|
186
|
+
cost_usd: lastElement.cost_usd,
|
|
187
|
+
duration_ms: lastElement.duration_ms,
|
|
188
|
+
duration_api_ms: lastElement.duration_api_ms,
|
|
189
|
+
};
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
// Check if the Claude action failed
|
|
195
|
+
const claudeSuccess = process.env.CLAUDE_SUCCESS !== "false";
|
|
196
|
+
actionFailed = !claudeSuccess;
|
|
197
|
+
} catch (error) {
|
|
198
|
+
console.error("Error reading output file:", error);
|
|
199
|
+
// If we can't read the file, check for any failure markers
|
|
200
|
+
actionFailed = process.env.CLAUDE_SUCCESS === "false";
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
// Prepare input for updateCommentBody function
|
|
205
|
+
const commentInput: CommentUpdateInput = {
|
|
206
|
+
currentBody,
|
|
207
|
+
actionFailed,
|
|
208
|
+
executionDetails,
|
|
209
|
+
jobUrl,
|
|
210
|
+
branchLink,
|
|
211
|
+
prLink,
|
|
212
|
+
branchName: shouldDeleteBranch || !branchLink ? undefined : claudeBranch,
|
|
213
|
+
triggerUsername,
|
|
214
|
+
errorDetails,
|
|
215
|
+
};
|
|
216
|
+
|
|
217
|
+
const updatedBody = updateCommentBody(commentInput);
|
|
218
|
+
|
|
219
|
+
try {
|
|
220
|
+
await updateClaudeComment(octokit.rest, {
|
|
221
|
+
owner,
|
|
222
|
+
repo,
|
|
223
|
+
commentId,
|
|
224
|
+
body: updatedBody,
|
|
225
|
+
isPullRequestReviewComment: isPRReviewComment,
|
|
226
|
+
});
|
|
227
|
+
console.log(
|
|
228
|
+
`✅ Updated ${isPRReviewComment ? "PR review" : "issue"} comment ${commentId} with job link`,
|
|
229
|
+
);
|
|
230
|
+
} catch (updateError) {
|
|
231
|
+
console.error(
|
|
232
|
+
`Failed to update ${isPRReviewComment ? "PR review" : "issue"} comment:`,
|
|
233
|
+
updateError,
|
|
234
|
+
);
|
|
235
|
+
throw updateError;
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
process.exit(0);
|
|
239
|
+
} catch (error) {
|
|
240
|
+
console.error("Error updating comment with job link:", error);
|
|
241
|
+
process.exit(1);
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
run();
|
|
@@ -1,23 +1,23 @@
|
|
|
1
|
-
import { Octokit } from "@octokit/rest";
|
|
2
|
-
import { graphql } from "@octokit/graphql";
|
|
3
|
-
import { GITHUB_API_URL } from "./config";
|
|
4
|
-
|
|
5
|
-
export type Octokits = {
|
|
6
|
-
rest: Octokit;
|
|
7
|
-
graphql: typeof graphql;
|
|
8
|
-
};
|
|
9
|
-
|
|
10
|
-
export function createOctokit(token: string): Octokits {
|
|
11
|
-
return {
|
|
12
|
-
rest: new Octokit({
|
|
13
|
-
auth: token,
|
|
14
|
-
baseUrl: GITHUB_API_URL,
|
|
15
|
-
}),
|
|
16
|
-
graphql: graphql.defaults({
|
|
17
|
-
baseUrl: GITHUB_API_URL,
|
|
18
|
-
headers: {
|
|
19
|
-
authorization: `token ${token}`,
|
|
20
|
-
},
|
|
21
|
-
}),
|
|
22
|
-
};
|
|
23
|
-
}
|
|
1
|
+
import { Octokit } from "@octokit/rest";
|
|
2
|
+
import { graphql } from "@octokit/graphql";
|
|
3
|
+
import { GITHUB_API_URL } from "./config";
|
|
4
|
+
|
|
5
|
+
export type Octokits = {
|
|
6
|
+
rest: Octokit;
|
|
7
|
+
graphql: typeof graphql;
|
|
8
|
+
};
|
|
9
|
+
|
|
10
|
+
export function createOctokit(token: string): Octokits {
|
|
11
|
+
return {
|
|
12
|
+
rest: new Octokit({
|
|
13
|
+
auth: token,
|
|
14
|
+
baseUrl: GITHUB_API_URL,
|
|
15
|
+
}),
|
|
16
|
+
graphql: graphql.defaults({
|
|
17
|
+
baseUrl: GITHUB_API_URL,
|
|
18
|
+
headers: {
|
|
19
|
+
authorization: `token ${token}`,
|
|
20
|
+
},
|
|
21
|
+
}),
|
|
22
|
+
};
|
|
23
|
+
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export const GITHUB_API_URL =
|
|
2
|
-
process.env.GITHUB_API_URL || "https://api.github.com";
|
|
3
|
-
export const GITHUB_SERVER_URL =
|
|
4
|
-
process.env.GITHUB_SERVER_URL || "https://github.com";
|
|
1
|
+
export const GITHUB_API_URL =
|
|
2
|
+
process.env.GITHUB_API_URL || "https://api.github.com";
|
|
3
|
+
export const GITHUB_SERVER_URL =
|
|
4
|
+
process.env.GITHUB_SERVER_URL || "https://github.com";
|