@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
|
@@ -1,144 +1,144 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
GitHubPullRequest,
|
|
3
|
-
GitHubIssue,
|
|
4
|
-
GitHubComment,
|
|
5
|
-
GitHubFile,
|
|
6
|
-
GitHubReview,
|
|
7
|
-
} from "../types";
|
|
8
|
-
import type { GitHubFileWithSHA } from "./fetcher";
|
|
9
|
-
import { sanitizeContent } from "../utils/sanitizer";
|
|
10
|
-
|
|
11
|
-
export function formatContext(
|
|
12
|
-
contextData: GitHubPullRequest | GitHubIssue,
|
|
13
|
-
isPR: boolean,
|
|
14
|
-
): string {
|
|
15
|
-
if (isPR) {
|
|
16
|
-
const prData = contextData as GitHubPullRequest;
|
|
17
|
-
return `PR Title: ${prData.title}
|
|
18
|
-
PR Author: ${prData.author.login}
|
|
19
|
-
PR Branch: ${prData.headRefName} -> ${prData.baseRefName}
|
|
20
|
-
PR State: ${prData.state}
|
|
21
|
-
PR Additions: ${prData.additions}
|
|
22
|
-
PR Deletions: ${prData.deletions}
|
|
23
|
-
Total Commits: ${prData.commits.totalCount}
|
|
24
|
-
Changed Files: ${prData.files.nodes.length} files`;
|
|
25
|
-
} else {
|
|
26
|
-
const issueData = contextData as GitHubIssue;
|
|
27
|
-
return `Issue Title: ${issueData.title}
|
|
28
|
-
Issue Author: ${issueData.author.login}
|
|
29
|
-
Issue State: ${issueData.state}`;
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
export function formatBody(
|
|
34
|
-
body: string,
|
|
35
|
-
imageUrlMap: Map<string, string>,
|
|
36
|
-
): string {
|
|
37
|
-
let processedBody = body;
|
|
38
|
-
|
|
39
|
-
for (const [originalUrl, localPath] of imageUrlMap) {
|
|
40
|
-
processedBody = processedBody.replaceAll(originalUrl, localPath);
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
processedBody = sanitizeContent(processedBody);
|
|
44
|
-
|
|
45
|
-
return processedBody;
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
export function formatComments(
|
|
49
|
-
comments: GitHubComment[],
|
|
50
|
-
imageUrlMap?: Map<string, string>,
|
|
51
|
-
): string {
|
|
52
|
-
return comments
|
|
53
|
-
.filter((comment) => !comment.isMinimized)
|
|
54
|
-
.map((comment) => {
|
|
55
|
-
let body = comment.body;
|
|
56
|
-
|
|
57
|
-
if (imageUrlMap && body) {
|
|
58
|
-
for (const [originalUrl, localPath] of imageUrlMap) {
|
|
59
|
-
body = body.replaceAll(originalUrl, localPath);
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
body = sanitizeContent(body);
|
|
64
|
-
|
|
65
|
-
return `[${comment.author.login} at ${comment.createdAt}]: ${body}`;
|
|
66
|
-
})
|
|
67
|
-
.join("\n\n");
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
export function formatReviewComments(
|
|
71
|
-
reviewData: { nodes: GitHubReview[] } | null,
|
|
72
|
-
imageUrlMap?: Map<string, string>,
|
|
73
|
-
): string {
|
|
74
|
-
if (!reviewData || !reviewData.nodes) {
|
|
75
|
-
return "";
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
const formattedReviews = reviewData.nodes.map((review) => {
|
|
79
|
-
let reviewOutput = `[Review by ${review.author.login} at ${review.submittedAt}]: ${review.state}`;
|
|
80
|
-
|
|
81
|
-
if (review.body && review.body.trim()) {
|
|
82
|
-
let body = review.body;
|
|
83
|
-
|
|
84
|
-
if (imageUrlMap) {
|
|
85
|
-
for (const [originalUrl, localPath] of imageUrlMap) {
|
|
86
|
-
body = body.replaceAll(originalUrl, localPath);
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
const sanitizedBody = sanitizeContent(body);
|
|
91
|
-
reviewOutput += `\n${sanitizedBody}`;
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
if (
|
|
95
|
-
review.comments &&
|
|
96
|
-
review.comments.nodes &&
|
|
97
|
-
review.comments.nodes.length > 0
|
|
98
|
-
) {
|
|
99
|
-
const comments = review.comments.nodes
|
|
100
|
-
.filter((comment) => !comment.isMinimized)
|
|
101
|
-
.map((comment) => {
|
|
102
|
-
let body = comment.body;
|
|
103
|
-
|
|
104
|
-
if (imageUrlMap) {
|
|
105
|
-
for (const [originalUrl, localPath] of imageUrlMap) {
|
|
106
|
-
body = body.replaceAll(originalUrl, localPath);
|
|
107
|
-
}
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
body = sanitizeContent(body);
|
|
111
|
-
|
|
112
|
-
return ` [Comment on ${comment.path}:${comment.line || "?"}]: ${body}`;
|
|
113
|
-
})
|
|
114
|
-
.join("\n");
|
|
115
|
-
if (comments) {
|
|
116
|
-
reviewOutput += `\n${comments}`;
|
|
117
|
-
}
|
|
118
|
-
}
|
|
119
|
-
|
|
120
|
-
return reviewOutput;
|
|
121
|
-
});
|
|
122
|
-
|
|
123
|
-
return formattedReviews.join("\n\n");
|
|
124
|
-
}
|
|
125
|
-
|
|
126
|
-
export function formatChangedFiles(changedFiles: GitHubFile[]): string {
|
|
127
|
-
return changedFiles
|
|
128
|
-
.map(
|
|
129
|
-
(file) =>
|
|
130
|
-
`- ${file.path} (${file.changeType}) +${file.additions}/-${file.deletions}`,
|
|
131
|
-
)
|
|
132
|
-
.join("\n");
|
|
133
|
-
}
|
|
134
|
-
|
|
135
|
-
export function formatChangedFilesWithSHA(
|
|
136
|
-
changedFiles: GitHubFileWithSHA[],
|
|
137
|
-
): string {
|
|
138
|
-
return changedFiles
|
|
139
|
-
.map(
|
|
140
|
-
(file) =>
|
|
141
|
-
`- ${file.path} (${file.changeType}) +${file.additions}/-${file.deletions} SHA: ${file.sha}`,
|
|
142
|
-
)
|
|
143
|
-
.join("\n");
|
|
144
|
-
}
|
|
1
|
+
import type {
|
|
2
|
+
GitHubPullRequest,
|
|
3
|
+
GitHubIssue,
|
|
4
|
+
GitHubComment,
|
|
5
|
+
GitHubFile,
|
|
6
|
+
GitHubReview,
|
|
7
|
+
} from "../types";
|
|
8
|
+
import type { GitHubFileWithSHA } from "./fetcher";
|
|
9
|
+
import { sanitizeContent } from "../utils/sanitizer";
|
|
10
|
+
|
|
11
|
+
export function formatContext(
|
|
12
|
+
contextData: GitHubPullRequest | GitHubIssue,
|
|
13
|
+
isPR: boolean,
|
|
14
|
+
): string {
|
|
15
|
+
if (isPR) {
|
|
16
|
+
const prData = contextData as GitHubPullRequest;
|
|
17
|
+
return `PR Title: ${prData.title}
|
|
18
|
+
PR Author: ${prData.author.login}
|
|
19
|
+
PR Branch: ${prData.headRefName} -> ${prData.baseRefName}
|
|
20
|
+
PR State: ${prData.state}
|
|
21
|
+
PR Additions: ${prData.additions}
|
|
22
|
+
PR Deletions: ${prData.deletions}
|
|
23
|
+
Total Commits: ${prData.commits.totalCount}
|
|
24
|
+
Changed Files: ${prData.files.nodes.length} files`;
|
|
25
|
+
} else {
|
|
26
|
+
const issueData = contextData as GitHubIssue;
|
|
27
|
+
return `Issue Title: ${issueData.title}
|
|
28
|
+
Issue Author: ${issueData.author.login}
|
|
29
|
+
Issue State: ${issueData.state}`;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
export function formatBody(
|
|
34
|
+
body: string,
|
|
35
|
+
imageUrlMap: Map<string, string>,
|
|
36
|
+
): string {
|
|
37
|
+
let processedBody = body;
|
|
38
|
+
|
|
39
|
+
for (const [originalUrl, localPath] of imageUrlMap) {
|
|
40
|
+
processedBody = processedBody.replaceAll(originalUrl, localPath);
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
processedBody = sanitizeContent(processedBody);
|
|
44
|
+
|
|
45
|
+
return processedBody;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
export function formatComments(
|
|
49
|
+
comments: GitHubComment[],
|
|
50
|
+
imageUrlMap?: Map<string, string>,
|
|
51
|
+
): string {
|
|
52
|
+
return comments
|
|
53
|
+
.filter((comment) => !comment.isMinimized)
|
|
54
|
+
.map((comment) => {
|
|
55
|
+
let body = comment.body;
|
|
56
|
+
|
|
57
|
+
if (imageUrlMap && body) {
|
|
58
|
+
for (const [originalUrl, localPath] of imageUrlMap) {
|
|
59
|
+
body = body.replaceAll(originalUrl, localPath);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
body = sanitizeContent(body);
|
|
64
|
+
|
|
65
|
+
return `[${comment.author.login} at ${comment.createdAt}]: ${body}`;
|
|
66
|
+
})
|
|
67
|
+
.join("\n\n");
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
export function formatReviewComments(
|
|
71
|
+
reviewData: { nodes: GitHubReview[] } | null,
|
|
72
|
+
imageUrlMap?: Map<string, string>,
|
|
73
|
+
): string {
|
|
74
|
+
if (!reviewData || !reviewData.nodes) {
|
|
75
|
+
return "";
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
const formattedReviews = reviewData.nodes.map((review) => {
|
|
79
|
+
let reviewOutput = `[Review by ${review.author.login} at ${review.submittedAt}]: ${review.state}`;
|
|
80
|
+
|
|
81
|
+
if (review.body && review.body.trim()) {
|
|
82
|
+
let body = review.body;
|
|
83
|
+
|
|
84
|
+
if (imageUrlMap) {
|
|
85
|
+
for (const [originalUrl, localPath] of imageUrlMap) {
|
|
86
|
+
body = body.replaceAll(originalUrl, localPath);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
const sanitizedBody = sanitizeContent(body);
|
|
91
|
+
reviewOutput += `\n${sanitizedBody}`;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
if (
|
|
95
|
+
review.comments &&
|
|
96
|
+
review.comments.nodes &&
|
|
97
|
+
review.comments.nodes.length > 0
|
|
98
|
+
) {
|
|
99
|
+
const comments = review.comments.nodes
|
|
100
|
+
.filter((comment) => !comment.isMinimized)
|
|
101
|
+
.map((comment) => {
|
|
102
|
+
let body = comment.body;
|
|
103
|
+
|
|
104
|
+
if (imageUrlMap) {
|
|
105
|
+
for (const [originalUrl, localPath] of imageUrlMap) {
|
|
106
|
+
body = body.replaceAll(originalUrl, localPath);
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
body = sanitizeContent(body);
|
|
111
|
+
|
|
112
|
+
return ` [Comment on ${comment.path}:${comment.line || "?"}]: ${body}`;
|
|
113
|
+
})
|
|
114
|
+
.join("\n");
|
|
115
|
+
if (comments) {
|
|
116
|
+
reviewOutput += `\n${comments}`;
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
return reviewOutput;
|
|
121
|
+
});
|
|
122
|
+
|
|
123
|
+
return formattedReviews.join("\n\n");
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
export function formatChangedFiles(changedFiles: GitHubFile[]): string {
|
|
127
|
+
return changedFiles
|
|
128
|
+
.map(
|
|
129
|
+
(file) =>
|
|
130
|
+
`- ${file.path} (${file.changeType}) +${file.additions}/-${file.deletions}`,
|
|
131
|
+
)
|
|
132
|
+
.join("\n");
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
export function formatChangedFilesWithSHA(
|
|
136
|
+
changedFiles: GitHubFileWithSHA[],
|
|
137
|
+
): string {
|
|
138
|
+
return changedFiles
|
|
139
|
+
.map(
|
|
140
|
+
(file) =>
|
|
141
|
+
`- ${file.path} (${file.changeType}) +${file.additions}/-${file.deletions} SHA: ${file.sha}`,
|
|
142
|
+
)
|
|
143
|
+
.join("\n");
|
|
144
|
+
}
|
package/bin/_internal/integrations/github/claude-code-action/src/github/operations/branch-cleanup.ts
CHANGED
|
@@ -1,132 +1,132 @@
|
|
|
1
|
-
import type { Octokits } from "../api/client";
|
|
2
|
-
import { GITHUB_SERVER_URL } from "../api/config";
|
|
3
|
-
import { $ } from "bun";
|
|
4
|
-
|
|
5
|
-
export async function checkAndCommitOrDeleteBranch(
|
|
6
|
-
octokit: Octokits,
|
|
7
|
-
owner: string,
|
|
8
|
-
repo: string,
|
|
9
|
-
claudeBranch: string | undefined,
|
|
10
|
-
baseBranch: string,
|
|
11
|
-
useCommitSigning: boolean,
|
|
12
|
-
): Promise<{ shouldDeleteBranch: boolean; branchLink: string }> {
|
|
13
|
-
let branchLink = "";
|
|
14
|
-
let shouldDeleteBranch = false;
|
|
15
|
-
|
|
16
|
-
if (claudeBranch) {
|
|
17
|
-
// First check if the branch exists remotely
|
|
18
|
-
let branchExistsRemotely = false;
|
|
19
|
-
try {
|
|
20
|
-
await octokit.rest.repos.getBranch({
|
|
21
|
-
owner,
|
|
22
|
-
repo,
|
|
23
|
-
branch: claudeBranch,
|
|
24
|
-
});
|
|
25
|
-
branchExistsRemotely = true;
|
|
26
|
-
} catch (error: any) {
|
|
27
|
-
if (error.status === 404) {
|
|
28
|
-
console.log(`Branch ${claudeBranch} does not exist remotely`);
|
|
29
|
-
} else {
|
|
30
|
-
console.error("Error checking if branch exists:", error);
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
// Only proceed if branch exists remotely
|
|
35
|
-
if (!branchExistsRemotely) {
|
|
36
|
-
console.log(
|
|
37
|
-
`Branch ${claudeBranch} does not exist remotely, no branch link will be added`,
|
|
38
|
-
);
|
|
39
|
-
return { shouldDeleteBranch: false, branchLink: "" };
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
// Check if Claude made any commits to the branch
|
|
43
|
-
try {
|
|
44
|
-
const { data: comparison } =
|
|
45
|
-
await octokit.rest.repos.compareCommitsWithBasehead({
|
|
46
|
-
owner,
|
|
47
|
-
repo,
|
|
48
|
-
basehead: `${baseBranch}...${claudeBranch}`,
|
|
49
|
-
});
|
|
50
|
-
|
|
51
|
-
// If there are no commits, check for uncommitted changes if not using commit signing
|
|
52
|
-
if (comparison.total_commits === 0) {
|
|
53
|
-
if (!useCommitSigning) {
|
|
54
|
-
console.log(
|
|
55
|
-
`Branch ${claudeBranch} has no commits from Claude, checking for uncommitted changes...`,
|
|
56
|
-
);
|
|
57
|
-
|
|
58
|
-
// Check for uncommitted changes using git status
|
|
59
|
-
try {
|
|
60
|
-
const gitStatus = await $`git status --porcelain`.quiet();
|
|
61
|
-
const hasUncommittedChanges =
|
|
62
|
-
gitStatus.stdout.toString().trim().length > 0;
|
|
63
|
-
|
|
64
|
-
if (hasUncommittedChanges) {
|
|
65
|
-
console.log("Found uncommitted changes, committing them...");
|
|
66
|
-
|
|
67
|
-
// Add all changes
|
|
68
|
-
await $`git add -A`;
|
|
69
|
-
|
|
70
|
-
// Commit with a descriptive message
|
|
71
|
-
const runId = process.env.GITHUB_RUN_ID || "unknown";
|
|
72
|
-
const commitMessage = `Auto-commit: Save uncommitted changes from Claude\n\nRun ID: ${runId}`;
|
|
73
|
-
await $`git commit -m ${commitMessage}`;
|
|
74
|
-
|
|
75
|
-
// Push the changes
|
|
76
|
-
await $`git push origin ${claudeBranch}`;
|
|
77
|
-
|
|
78
|
-
console.log(
|
|
79
|
-
"✅ Successfully committed and pushed uncommitted changes",
|
|
80
|
-
);
|
|
81
|
-
|
|
82
|
-
// Set branch link since we now have commits
|
|
83
|
-
const branchUrl = `${GITHUB_SERVER_URL}/${owner}/${repo}/tree/${claudeBranch}`;
|
|
84
|
-
branchLink = `\n[View branch](${branchUrl})`;
|
|
85
|
-
} else {
|
|
86
|
-
console.log(
|
|
87
|
-
"No uncommitted changes found, marking branch for deletion",
|
|
88
|
-
);
|
|
89
|
-
shouldDeleteBranch = true;
|
|
90
|
-
}
|
|
91
|
-
} catch (gitError) {
|
|
92
|
-
console.error("Error checking/committing changes:", gitError);
|
|
93
|
-
// If we can't check git status, assume the branch might have changes
|
|
94
|
-
const branchUrl = `${GITHUB_SERVER_URL}/${owner}/${repo}/tree/${claudeBranch}`;
|
|
95
|
-
branchLink = `\n[View branch](${branchUrl})`;
|
|
96
|
-
}
|
|
97
|
-
} else {
|
|
98
|
-
console.log(
|
|
99
|
-
`Branch ${claudeBranch} has no commits from Claude, will delete it`,
|
|
100
|
-
);
|
|
101
|
-
shouldDeleteBranch = true;
|
|
102
|
-
}
|
|
103
|
-
} else {
|
|
104
|
-
// Only add branch link if there are commits
|
|
105
|
-
const branchUrl = `${GITHUB_SERVER_URL}/${owner}/${repo}/tree/${claudeBranch}`;
|
|
106
|
-
branchLink = `\n[View branch](${branchUrl})`;
|
|
107
|
-
}
|
|
108
|
-
} catch (error) {
|
|
109
|
-
console.error("Error comparing commits on Claude branch:", error);
|
|
110
|
-
// If we can't compare but the branch exists remotely, include the branch link
|
|
111
|
-
const branchUrl = `${GITHUB_SERVER_URL}/${owner}/${repo}/tree/${claudeBranch}`;
|
|
112
|
-
branchLink = `\n[View branch](${branchUrl})`;
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
|
-
|
|
116
|
-
// Delete the branch if it has no commits
|
|
117
|
-
if (shouldDeleteBranch && claudeBranch) {
|
|
118
|
-
try {
|
|
119
|
-
await octokit.rest.git.deleteRef({
|
|
120
|
-
owner,
|
|
121
|
-
repo,
|
|
122
|
-
ref: `heads/${claudeBranch}`,
|
|
123
|
-
});
|
|
124
|
-
console.log(`✅ Deleted empty branch: ${claudeBranch}`);
|
|
125
|
-
} catch (deleteError) {
|
|
126
|
-
console.error(`Failed to delete branch ${claudeBranch}:`, deleteError);
|
|
127
|
-
// Continue even if deletion fails
|
|
128
|
-
}
|
|
129
|
-
}
|
|
130
|
-
|
|
131
|
-
return { shouldDeleteBranch, branchLink };
|
|
132
|
-
}
|
|
1
|
+
import type { Octokits } from "../api/client";
|
|
2
|
+
import { GITHUB_SERVER_URL } from "../api/config";
|
|
3
|
+
import { $ } from "bun";
|
|
4
|
+
|
|
5
|
+
export async function checkAndCommitOrDeleteBranch(
|
|
6
|
+
octokit: Octokits,
|
|
7
|
+
owner: string,
|
|
8
|
+
repo: string,
|
|
9
|
+
claudeBranch: string | undefined,
|
|
10
|
+
baseBranch: string,
|
|
11
|
+
useCommitSigning: boolean,
|
|
12
|
+
): Promise<{ shouldDeleteBranch: boolean; branchLink: string }> {
|
|
13
|
+
let branchLink = "";
|
|
14
|
+
let shouldDeleteBranch = false;
|
|
15
|
+
|
|
16
|
+
if (claudeBranch) {
|
|
17
|
+
// First check if the branch exists remotely
|
|
18
|
+
let branchExistsRemotely = false;
|
|
19
|
+
try {
|
|
20
|
+
await octokit.rest.repos.getBranch({
|
|
21
|
+
owner,
|
|
22
|
+
repo,
|
|
23
|
+
branch: claudeBranch,
|
|
24
|
+
});
|
|
25
|
+
branchExistsRemotely = true;
|
|
26
|
+
} catch (error: any) {
|
|
27
|
+
if (error.status === 404) {
|
|
28
|
+
console.log(`Branch ${claudeBranch} does not exist remotely`);
|
|
29
|
+
} else {
|
|
30
|
+
console.error("Error checking if branch exists:", error);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
// Only proceed if branch exists remotely
|
|
35
|
+
if (!branchExistsRemotely) {
|
|
36
|
+
console.log(
|
|
37
|
+
`Branch ${claudeBranch} does not exist remotely, no branch link will be added`,
|
|
38
|
+
);
|
|
39
|
+
return { shouldDeleteBranch: false, branchLink: "" };
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
// Check if Claude made any commits to the branch
|
|
43
|
+
try {
|
|
44
|
+
const { data: comparison } =
|
|
45
|
+
await octokit.rest.repos.compareCommitsWithBasehead({
|
|
46
|
+
owner,
|
|
47
|
+
repo,
|
|
48
|
+
basehead: `${baseBranch}...${claudeBranch}`,
|
|
49
|
+
});
|
|
50
|
+
|
|
51
|
+
// If there are no commits, check for uncommitted changes if not using commit signing
|
|
52
|
+
if (comparison.total_commits === 0) {
|
|
53
|
+
if (!useCommitSigning) {
|
|
54
|
+
console.log(
|
|
55
|
+
`Branch ${claudeBranch} has no commits from Claude, checking for uncommitted changes...`,
|
|
56
|
+
);
|
|
57
|
+
|
|
58
|
+
// Check for uncommitted changes using git status
|
|
59
|
+
try {
|
|
60
|
+
const gitStatus = await $`git status --porcelain`.quiet();
|
|
61
|
+
const hasUncommittedChanges =
|
|
62
|
+
gitStatus.stdout.toString().trim().length > 0;
|
|
63
|
+
|
|
64
|
+
if (hasUncommittedChanges) {
|
|
65
|
+
console.log("Found uncommitted changes, committing them...");
|
|
66
|
+
|
|
67
|
+
// Add all changes
|
|
68
|
+
await $`git add -A`;
|
|
69
|
+
|
|
70
|
+
// Commit with a descriptive message
|
|
71
|
+
const runId = process.env.GITHUB_RUN_ID || "unknown";
|
|
72
|
+
const commitMessage = `Auto-commit: Save uncommitted changes from Claude\n\nRun ID: ${runId}`;
|
|
73
|
+
await $`git commit -m ${commitMessage}`;
|
|
74
|
+
|
|
75
|
+
// Push the changes
|
|
76
|
+
await $`git push origin ${claudeBranch}`;
|
|
77
|
+
|
|
78
|
+
console.log(
|
|
79
|
+
"✅ Successfully committed and pushed uncommitted changes",
|
|
80
|
+
);
|
|
81
|
+
|
|
82
|
+
// Set branch link since we now have commits
|
|
83
|
+
const branchUrl = `${GITHUB_SERVER_URL}/${owner}/${repo}/tree/${claudeBranch}`;
|
|
84
|
+
branchLink = `\n[View branch](${branchUrl})`;
|
|
85
|
+
} else {
|
|
86
|
+
console.log(
|
|
87
|
+
"No uncommitted changes found, marking branch for deletion",
|
|
88
|
+
);
|
|
89
|
+
shouldDeleteBranch = true;
|
|
90
|
+
}
|
|
91
|
+
} catch (gitError) {
|
|
92
|
+
console.error("Error checking/committing changes:", gitError);
|
|
93
|
+
// If we can't check git status, assume the branch might have changes
|
|
94
|
+
const branchUrl = `${GITHUB_SERVER_URL}/${owner}/${repo}/tree/${claudeBranch}`;
|
|
95
|
+
branchLink = `\n[View branch](${branchUrl})`;
|
|
96
|
+
}
|
|
97
|
+
} else {
|
|
98
|
+
console.log(
|
|
99
|
+
`Branch ${claudeBranch} has no commits from Claude, will delete it`,
|
|
100
|
+
);
|
|
101
|
+
shouldDeleteBranch = true;
|
|
102
|
+
}
|
|
103
|
+
} else {
|
|
104
|
+
// Only add branch link if there are commits
|
|
105
|
+
const branchUrl = `${GITHUB_SERVER_URL}/${owner}/${repo}/tree/${claudeBranch}`;
|
|
106
|
+
branchLink = `\n[View branch](${branchUrl})`;
|
|
107
|
+
}
|
|
108
|
+
} catch (error) {
|
|
109
|
+
console.error("Error comparing commits on Claude branch:", error);
|
|
110
|
+
// If we can't compare but the branch exists remotely, include the branch link
|
|
111
|
+
const branchUrl = `${GITHUB_SERVER_URL}/${owner}/${repo}/tree/${claudeBranch}`;
|
|
112
|
+
branchLink = `\n[View branch](${branchUrl})`;
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
// Delete the branch if it has no commits
|
|
117
|
+
if (shouldDeleteBranch && claudeBranch) {
|
|
118
|
+
try {
|
|
119
|
+
await octokit.rest.git.deleteRef({
|
|
120
|
+
owner,
|
|
121
|
+
repo,
|
|
122
|
+
ref: `heads/${claudeBranch}`,
|
|
123
|
+
});
|
|
124
|
+
console.log(`✅ Deleted empty branch: ${claudeBranch}`);
|
|
125
|
+
} catch (deleteError) {
|
|
126
|
+
console.error(`Failed to delete branch ${claudeBranch}:`, deleteError);
|
|
127
|
+
// Continue even if deletion fails
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
return { shouldDeleteBranch, branchLink };
|
|
132
|
+
}
|