@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/github/operations/comment-logic.ts
CHANGED
|
@@ -1,203 +1,203 @@
|
|
|
1
|
-
import { GITHUB_SERVER_URL } from "../api/config";
|
|
2
|
-
|
|
3
|
-
export type ExecutionDetails = {
|
|
4
|
-
cost_usd?: number;
|
|
5
|
-
duration_ms?: number;
|
|
6
|
-
duration_api_ms?: number;
|
|
7
|
-
};
|
|
8
|
-
|
|
9
|
-
export type CommentUpdateInput = {
|
|
10
|
-
currentBody: string;
|
|
11
|
-
actionFailed: boolean;
|
|
12
|
-
executionDetails: ExecutionDetails | null;
|
|
13
|
-
jobUrl: string;
|
|
14
|
-
branchLink?: string;
|
|
15
|
-
prLink?: string;
|
|
16
|
-
branchName?: string;
|
|
17
|
-
triggerUsername?: string;
|
|
18
|
-
errorDetails?: string;
|
|
19
|
-
};
|
|
20
|
-
|
|
21
|
-
export function ensureProperlyEncodedUrl(url: string): string | null {
|
|
22
|
-
try {
|
|
23
|
-
// First, try to parse the URL to see if it's already properly encoded
|
|
24
|
-
new URL(url);
|
|
25
|
-
if (url.includes(" ")) {
|
|
26
|
-
const [baseUrl, queryString] = url.split("?");
|
|
27
|
-
if (queryString) {
|
|
28
|
-
// Parse query parameters and re-encode them properly
|
|
29
|
-
const params = new URLSearchParams();
|
|
30
|
-
const pairs = queryString.split("&");
|
|
31
|
-
for (const pair of pairs) {
|
|
32
|
-
const [key, value = ""] = pair.split("=");
|
|
33
|
-
if (key) {
|
|
34
|
-
// Decode first in case it's partially encoded, then encode properly
|
|
35
|
-
params.set(key, decodeURIComponent(value));
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
return `${baseUrl}?${params.toString()}`;
|
|
39
|
-
}
|
|
40
|
-
// If no query string, just encode spaces
|
|
41
|
-
return url.replace(/ /g, "%20");
|
|
42
|
-
}
|
|
43
|
-
return url;
|
|
44
|
-
} catch (e) {
|
|
45
|
-
// If URL parsing fails, try basic fixes
|
|
46
|
-
try {
|
|
47
|
-
// Replace spaces with %20
|
|
48
|
-
let fixedUrl = url.replace(/ /g, "%20");
|
|
49
|
-
|
|
50
|
-
// Ensure colons in parameter values are encoded (but not in http:// or after domain)
|
|
51
|
-
const urlParts = fixedUrl.split("?");
|
|
52
|
-
if (urlParts.length > 1 && urlParts[1]) {
|
|
53
|
-
const [baseUrl, queryString] = urlParts;
|
|
54
|
-
// Encode colons in the query string that aren't already encoded
|
|
55
|
-
const fixedQuery = queryString.replace(/([^%]|^):(?!%2F%2F)/g, "$1%3A");
|
|
56
|
-
fixedUrl = `${baseUrl}?${fixedQuery}`;
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
// Try to validate the fixed URL
|
|
60
|
-
new URL(fixedUrl);
|
|
61
|
-
return fixedUrl;
|
|
62
|
-
} catch {
|
|
63
|
-
// If we still can't create a valid URL, return null
|
|
64
|
-
return null;
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
export function updateCommentBody(input: CommentUpdateInput): string {
|
|
70
|
-
const originalBody = input.currentBody;
|
|
71
|
-
const {
|
|
72
|
-
executionDetails,
|
|
73
|
-
jobUrl,
|
|
74
|
-
branchLink,
|
|
75
|
-
prLink,
|
|
76
|
-
actionFailed,
|
|
77
|
-
branchName,
|
|
78
|
-
triggerUsername,
|
|
79
|
-
errorDetails,
|
|
80
|
-
} = input;
|
|
81
|
-
|
|
82
|
-
// Extract content from the original comment body
|
|
83
|
-
// First, remove the "Claude Code is working…" or "Claude Code is working..." message
|
|
84
|
-
const workingPattern = /Claude Code is working[…\.]{1,3}(?:\s*<img[^>]*>)?/i;
|
|
85
|
-
let bodyContent = originalBody.replace(workingPattern, "").trim();
|
|
86
|
-
|
|
87
|
-
// Check if there's a PR link in the content
|
|
88
|
-
let prLinkFromContent = "";
|
|
89
|
-
|
|
90
|
-
// Match the entire markdown link structure
|
|
91
|
-
const prLinkPattern = /\[Create .* PR\]\((.*)\)$/m;
|
|
92
|
-
const prLinkMatch = bodyContent.match(prLinkPattern);
|
|
93
|
-
|
|
94
|
-
if (prLinkMatch && prLinkMatch[1]) {
|
|
95
|
-
const encodedUrl = ensureProperlyEncodedUrl(prLinkMatch[1]);
|
|
96
|
-
if (encodedUrl) {
|
|
97
|
-
prLinkFromContent = encodedUrl;
|
|
98
|
-
// Remove the PR link from the content
|
|
99
|
-
bodyContent = bodyContent.replace(prLinkMatch[0], "").trim();
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
// Calculate duration string if available
|
|
104
|
-
let durationStr = "";
|
|
105
|
-
if (executionDetails?.duration_ms !== undefined) {
|
|
106
|
-
const totalSeconds = Math.round(executionDetails.duration_ms / 1000);
|
|
107
|
-
const minutes = Math.floor(totalSeconds / 60);
|
|
108
|
-
const seconds = totalSeconds % 60;
|
|
109
|
-
durationStr = minutes > 0 ? `${minutes}m ${seconds}s` : `${seconds}s`;
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
// Build the header
|
|
113
|
-
let header = "";
|
|
114
|
-
|
|
115
|
-
if (actionFailed) {
|
|
116
|
-
header = "**Claude encountered an error";
|
|
117
|
-
if (durationStr) {
|
|
118
|
-
header += ` after ${durationStr}`;
|
|
119
|
-
}
|
|
120
|
-
header += "**";
|
|
121
|
-
} else {
|
|
122
|
-
// Get the username from triggerUsername or extract from content
|
|
123
|
-
const usernameMatch = bodyContent.match(/@([a-zA-Z0-9-]+)/);
|
|
124
|
-
const username =
|
|
125
|
-
triggerUsername || (usernameMatch ? usernameMatch[1] : "user");
|
|
126
|
-
|
|
127
|
-
header = `**Claude finished @${username}'s task`;
|
|
128
|
-
if (durationStr) {
|
|
129
|
-
header += ` in ${durationStr}`;
|
|
130
|
-
}
|
|
131
|
-
header += "**";
|
|
132
|
-
}
|
|
133
|
-
|
|
134
|
-
// Add links section
|
|
135
|
-
let links = ` —— [View job](${jobUrl})`;
|
|
136
|
-
|
|
137
|
-
// Add branch name with link
|
|
138
|
-
if (branchName || branchLink) {
|
|
139
|
-
let finalBranchName = branchName;
|
|
140
|
-
let branchUrl = "";
|
|
141
|
-
|
|
142
|
-
if (branchLink) {
|
|
143
|
-
// Extract the branch URL from the link
|
|
144
|
-
const urlMatch = branchLink.match(/\((https:\/\/.*)\)/);
|
|
145
|
-
if (urlMatch && urlMatch[1]) {
|
|
146
|
-
branchUrl = urlMatch[1];
|
|
147
|
-
}
|
|
148
|
-
|
|
149
|
-
// Extract branch name from link if not provided
|
|
150
|
-
if (!finalBranchName) {
|
|
151
|
-
const branchNameMatch = branchLink.match(/tree\/([^"'\)]+)/);
|
|
152
|
-
if (branchNameMatch) {
|
|
153
|
-
finalBranchName = branchNameMatch[1];
|
|
154
|
-
}
|
|
155
|
-
}
|
|
156
|
-
}
|
|
157
|
-
|
|
158
|
-
// If we don't have a URL yet but have a branch name, construct it
|
|
159
|
-
if (!branchUrl && finalBranchName) {
|
|
160
|
-
// Extract owner/repo from jobUrl
|
|
161
|
-
const repoMatch = jobUrl.match(/github\.com\/([^\/]+)\/([^\/]+)\//);
|
|
162
|
-
if (repoMatch) {
|
|
163
|
-
branchUrl = `${GITHUB_SERVER_URL}/${repoMatch[1]}/${repoMatch[2]}/tree/${finalBranchName}`;
|
|
164
|
-
}
|
|
165
|
-
}
|
|
166
|
-
|
|
167
|
-
if (finalBranchName && branchUrl) {
|
|
168
|
-
links += ` • [\`${finalBranchName}\`](${branchUrl})`;
|
|
169
|
-
} else if (finalBranchName) {
|
|
170
|
-
links += ` • \`${finalBranchName}\``;
|
|
171
|
-
}
|
|
172
|
-
}
|
|
173
|
-
|
|
174
|
-
// Add PR link (either from content or provided)
|
|
175
|
-
const prUrl =
|
|
176
|
-
prLinkFromContent || (prLink ? prLink.match(/\(([^)]+)\)/)?.[1] : "");
|
|
177
|
-
if (prUrl) {
|
|
178
|
-
links += ` • [Create PR ➔](${prUrl})`;
|
|
179
|
-
}
|
|
180
|
-
|
|
181
|
-
// Build the new body with blank line between header and separator
|
|
182
|
-
let newBody = `${header}${links}`;
|
|
183
|
-
|
|
184
|
-
// Add error details if available
|
|
185
|
-
if (actionFailed && errorDetails) {
|
|
186
|
-
newBody += `\n\n\`\`\`\n${errorDetails}\n\`\`\``;
|
|
187
|
-
}
|
|
188
|
-
|
|
189
|
-
newBody += `\n\n---\n`;
|
|
190
|
-
|
|
191
|
-
// Clean up the body content
|
|
192
|
-
// Remove any existing View job run, branch links from the bottom
|
|
193
|
-
bodyContent = bodyContent.replace(/\n?\[View job run\]\([^\)]+\)/g, "");
|
|
194
|
-
bodyContent = bodyContent.replace(/\n?\[View branch\]\([^\)]+\)/g, "");
|
|
195
|
-
|
|
196
|
-
// Remove any existing duration info at the bottom
|
|
197
|
-
bodyContent = bodyContent.replace(/\n*---\n*Duration: [0-9]+m? [0-9]+s/g, "");
|
|
198
|
-
|
|
199
|
-
// Add the cleaned body content
|
|
200
|
-
newBody += bodyContent;
|
|
201
|
-
|
|
202
|
-
return newBody.trim();
|
|
203
|
-
}
|
|
1
|
+
import { GITHUB_SERVER_URL } from "../api/config";
|
|
2
|
+
|
|
3
|
+
export type ExecutionDetails = {
|
|
4
|
+
cost_usd?: number;
|
|
5
|
+
duration_ms?: number;
|
|
6
|
+
duration_api_ms?: number;
|
|
7
|
+
};
|
|
8
|
+
|
|
9
|
+
export type CommentUpdateInput = {
|
|
10
|
+
currentBody: string;
|
|
11
|
+
actionFailed: boolean;
|
|
12
|
+
executionDetails: ExecutionDetails | null;
|
|
13
|
+
jobUrl: string;
|
|
14
|
+
branchLink?: string;
|
|
15
|
+
prLink?: string;
|
|
16
|
+
branchName?: string;
|
|
17
|
+
triggerUsername?: string;
|
|
18
|
+
errorDetails?: string;
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
export function ensureProperlyEncodedUrl(url: string): string | null {
|
|
22
|
+
try {
|
|
23
|
+
// First, try to parse the URL to see if it's already properly encoded
|
|
24
|
+
new URL(url);
|
|
25
|
+
if (url.includes(" ")) {
|
|
26
|
+
const [baseUrl, queryString] = url.split("?");
|
|
27
|
+
if (queryString) {
|
|
28
|
+
// Parse query parameters and re-encode them properly
|
|
29
|
+
const params = new URLSearchParams();
|
|
30
|
+
const pairs = queryString.split("&");
|
|
31
|
+
for (const pair of pairs) {
|
|
32
|
+
const [key, value = ""] = pair.split("=");
|
|
33
|
+
if (key) {
|
|
34
|
+
// Decode first in case it's partially encoded, then encode properly
|
|
35
|
+
params.set(key, decodeURIComponent(value));
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
return `${baseUrl}?${params.toString()}`;
|
|
39
|
+
}
|
|
40
|
+
// If no query string, just encode spaces
|
|
41
|
+
return url.replace(/ /g, "%20");
|
|
42
|
+
}
|
|
43
|
+
return url;
|
|
44
|
+
} catch (e) {
|
|
45
|
+
// If URL parsing fails, try basic fixes
|
|
46
|
+
try {
|
|
47
|
+
// Replace spaces with %20
|
|
48
|
+
let fixedUrl = url.replace(/ /g, "%20");
|
|
49
|
+
|
|
50
|
+
// Ensure colons in parameter values are encoded (but not in http:// or after domain)
|
|
51
|
+
const urlParts = fixedUrl.split("?");
|
|
52
|
+
if (urlParts.length > 1 && urlParts[1]) {
|
|
53
|
+
const [baseUrl, queryString] = urlParts;
|
|
54
|
+
// Encode colons in the query string that aren't already encoded
|
|
55
|
+
const fixedQuery = queryString.replace(/([^%]|^):(?!%2F%2F)/g, "$1%3A");
|
|
56
|
+
fixedUrl = `${baseUrl}?${fixedQuery}`;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
// Try to validate the fixed URL
|
|
60
|
+
new URL(fixedUrl);
|
|
61
|
+
return fixedUrl;
|
|
62
|
+
} catch {
|
|
63
|
+
// If we still can't create a valid URL, return null
|
|
64
|
+
return null;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
export function updateCommentBody(input: CommentUpdateInput): string {
|
|
70
|
+
const originalBody = input.currentBody;
|
|
71
|
+
const {
|
|
72
|
+
executionDetails,
|
|
73
|
+
jobUrl,
|
|
74
|
+
branchLink,
|
|
75
|
+
prLink,
|
|
76
|
+
actionFailed,
|
|
77
|
+
branchName,
|
|
78
|
+
triggerUsername,
|
|
79
|
+
errorDetails,
|
|
80
|
+
} = input;
|
|
81
|
+
|
|
82
|
+
// Extract content from the original comment body
|
|
83
|
+
// First, remove the "Claude Code is working…" or "Claude Code is working..." message
|
|
84
|
+
const workingPattern = /Claude Code is working[…\.]{1,3}(?:\s*<img[^>]*>)?/i;
|
|
85
|
+
let bodyContent = originalBody.replace(workingPattern, "").trim();
|
|
86
|
+
|
|
87
|
+
// Check if there's a PR link in the content
|
|
88
|
+
let prLinkFromContent = "";
|
|
89
|
+
|
|
90
|
+
// Match the entire markdown link structure
|
|
91
|
+
const prLinkPattern = /\[Create .* PR\]\((.*)\)$/m;
|
|
92
|
+
const prLinkMatch = bodyContent.match(prLinkPattern);
|
|
93
|
+
|
|
94
|
+
if (prLinkMatch && prLinkMatch[1]) {
|
|
95
|
+
const encodedUrl = ensureProperlyEncodedUrl(prLinkMatch[1]);
|
|
96
|
+
if (encodedUrl) {
|
|
97
|
+
prLinkFromContent = encodedUrl;
|
|
98
|
+
// Remove the PR link from the content
|
|
99
|
+
bodyContent = bodyContent.replace(prLinkMatch[0], "").trim();
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
// Calculate duration string if available
|
|
104
|
+
let durationStr = "";
|
|
105
|
+
if (executionDetails?.duration_ms !== undefined) {
|
|
106
|
+
const totalSeconds = Math.round(executionDetails.duration_ms / 1000);
|
|
107
|
+
const minutes = Math.floor(totalSeconds / 60);
|
|
108
|
+
const seconds = totalSeconds % 60;
|
|
109
|
+
durationStr = minutes > 0 ? `${minutes}m ${seconds}s` : `${seconds}s`;
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
// Build the header
|
|
113
|
+
let header = "";
|
|
114
|
+
|
|
115
|
+
if (actionFailed) {
|
|
116
|
+
header = "**Claude encountered an error";
|
|
117
|
+
if (durationStr) {
|
|
118
|
+
header += ` after ${durationStr}`;
|
|
119
|
+
}
|
|
120
|
+
header += "**";
|
|
121
|
+
} else {
|
|
122
|
+
// Get the username from triggerUsername or extract from content
|
|
123
|
+
const usernameMatch = bodyContent.match(/@([a-zA-Z0-9-]+)/);
|
|
124
|
+
const username =
|
|
125
|
+
triggerUsername || (usernameMatch ? usernameMatch[1] : "user");
|
|
126
|
+
|
|
127
|
+
header = `**Claude finished @${username}'s task`;
|
|
128
|
+
if (durationStr) {
|
|
129
|
+
header += ` in ${durationStr}`;
|
|
130
|
+
}
|
|
131
|
+
header += "**";
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
// Add links section
|
|
135
|
+
let links = ` —— [View job](${jobUrl})`;
|
|
136
|
+
|
|
137
|
+
// Add branch name with link
|
|
138
|
+
if (branchName || branchLink) {
|
|
139
|
+
let finalBranchName = branchName;
|
|
140
|
+
let branchUrl = "";
|
|
141
|
+
|
|
142
|
+
if (branchLink) {
|
|
143
|
+
// Extract the branch URL from the link
|
|
144
|
+
const urlMatch = branchLink.match(/\((https:\/\/.*)\)/);
|
|
145
|
+
if (urlMatch && urlMatch[1]) {
|
|
146
|
+
branchUrl = urlMatch[1];
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
// Extract branch name from link if not provided
|
|
150
|
+
if (!finalBranchName) {
|
|
151
|
+
const branchNameMatch = branchLink.match(/tree\/([^"'\)]+)/);
|
|
152
|
+
if (branchNameMatch) {
|
|
153
|
+
finalBranchName = branchNameMatch[1];
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
// If we don't have a URL yet but have a branch name, construct it
|
|
159
|
+
if (!branchUrl && finalBranchName) {
|
|
160
|
+
// Extract owner/repo from jobUrl
|
|
161
|
+
const repoMatch = jobUrl.match(/github\.com\/([^\/]+)\/([^\/]+)\//);
|
|
162
|
+
if (repoMatch) {
|
|
163
|
+
branchUrl = `${GITHUB_SERVER_URL}/${repoMatch[1]}/${repoMatch[2]}/tree/${finalBranchName}`;
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
if (finalBranchName && branchUrl) {
|
|
168
|
+
links += ` • [\`${finalBranchName}\`](${branchUrl})`;
|
|
169
|
+
} else if (finalBranchName) {
|
|
170
|
+
links += ` • \`${finalBranchName}\``;
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
// Add PR link (either from content or provided)
|
|
175
|
+
const prUrl =
|
|
176
|
+
prLinkFromContent || (prLink ? prLink.match(/\(([^)]+)\)/)?.[1] : "");
|
|
177
|
+
if (prUrl) {
|
|
178
|
+
links += ` • [Create PR ➔](${prUrl})`;
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
// Build the new body with blank line between header and separator
|
|
182
|
+
let newBody = `${header}${links}`;
|
|
183
|
+
|
|
184
|
+
// Add error details if available
|
|
185
|
+
if (actionFailed && errorDetails) {
|
|
186
|
+
newBody += `\n\n\`\`\`\n${errorDetails}\n\`\`\``;
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
newBody += `\n\n---\n`;
|
|
190
|
+
|
|
191
|
+
// Clean up the body content
|
|
192
|
+
// Remove any existing View job run, branch links from the bottom
|
|
193
|
+
bodyContent = bodyContent.replace(/\n?\[View job run\]\([^\)]+\)/g, "");
|
|
194
|
+
bodyContent = bodyContent.replace(/\n?\[View branch\]\([^\)]+\)/g, "");
|
|
195
|
+
|
|
196
|
+
// Remove any existing duration info at the bottom
|
|
197
|
+
bodyContent = bodyContent.replace(/\n*---\n*Duration: [0-9]+m? [0-9]+s/g, "");
|
|
198
|
+
|
|
199
|
+
// Add the cleaned body content
|
|
200
|
+
newBody += bodyContent;
|
|
201
|
+
|
|
202
|
+
return newBody.trim();
|
|
203
|
+
}
|
|
@@ -1,33 +1,33 @@
|
|
|
1
|
-
import { GITHUB_SERVER_URL } from "../../api/config";
|
|
2
|
-
|
|
3
|
-
export const SPINNER_HTML =
|
|
4
|
-
'<img src="https://github.com/user-attachments/assets/5ac382c7-e004-429b-8e35-7feb3e8f9c6f" width="14px" height="14px" style="vertical-align: middle; margin-left: 4px;" />';
|
|
5
|
-
|
|
6
|
-
export function createJobRunLink(
|
|
7
|
-
owner: string,
|
|
8
|
-
repo: string,
|
|
9
|
-
runId: string,
|
|
10
|
-
): string {
|
|
11
|
-
const jobRunUrl = `${GITHUB_SERVER_URL}/${owner}/${repo}/actions/runs/${runId}`;
|
|
12
|
-
return `[View job run](${jobRunUrl})`;
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
export function createBranchLink(
|
|
16
|
-
owner: string,
|
|
17
|
-
repo: string,
|
|
18
|
-
branchName: string,
|
|
19
|
-
): string {
|
|
20
|
-
const branchUrl = `${GITHUB_SERVER_URL}/${owner}/${repo}/tree/${branchName}`;
|
|
21
|
-
return `\n[View branch](${branchUrl})`;
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
export function createCommentBody(
|
|
25
|
-
jobRunLink: string,
|
|
26
|
-
branchLink: string = "",
|
|
27
|
-
): string {
|
|
28
|
-
return `Claude Code is working… ${SPINNER_HTML}
|
|
29
|
-
|
|
30
|
-
I'll analyze this and get back to you.
|
|
31
|
-
|
|
32
|
-
${jobRunLink}${branchLink}`;
|
|
33
|
-
}
|
|
1
|
+
import { GITHUB_SERVER_URL } from "../../api/config";
|
|
2
|
+
|
|
3
|
+
export const SPINNER_HTML =
|
|
4
|
+
'<img src="https://github.com/user-attachments/assets/5ac382c7-e004-429b-8e35-7feb3e8f9c6f" width="14px" height="14px" style="vertical-align: middle; margin-left: 4px;" />';
|
|
5
|
+
|
|
6
|
+
export function createJobRunLink(
|
|
7
|
+
owner: string,
|
|
8
|
+
repo: string,
|
|
9
|
+
runId: string,
|
|
10
|
+
): string {
|
|
11
|
+
const jobRunUrl = `${GITHUB_SERVER_URL}/${owner}/${repo}/actions/runs/${runId}`;
|
|
12
|
+
return `[View job run](${jobRunUrl})`;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
export function createBranchLink(
|
|
16
|
+
owner: string,
|
|
17
|
+
repo: string,
|
|
18
|
+
branchName: string,
|
|
19
|
+
): string {
|
|
20
|
+
const branchUrl = `${GITHUB_SERVER_URL}/${owner}/${repo}/tree/${branchName}`;
|
|
21
|
+
return `\n[View branch](${branchUrl})`;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
export function createCommentBody(
|
|
25
|
+
jobRunLink: string,
|
|
26
|
+
branchLink: string = "",
|
|
27
|
+
): string {
|
|
28
|
+
return `Claude Code is working… ${SPINNER_HTML}
|
|
29
|
+
|
|
30
|
+
I'll analyze this and get back to you.
|
|
31
|
+
|
|
32
|
+
${jobRunLink}${branchLink}`;
|
|
33
|
+
}
|