@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,257 +1,257 @@
|
|
|
1
|
-
import * as core from "@actions/core";
|
|
2
|
-
import { exec } from "child_process";
|
|
3
|
-
import { promisify } from "util";
|
|
4
|
-
import { unlink, writeFile, stat } from "fs/promises";
|
|
5
|
-
import { createWriteStream } from "fs";
|
|
6
|
-
import { spawn } from "child_process";
|
|
7
|
-
import { parse as parseShellArgs } from "shell-quote";
|
|
8
|
-
|
|
9
|
-
const execAsync = promisify(exec);
|
|
10
|
-
|
|
11
|
-
const PIPE_PATH = `${process.env.RUNNER_TEMP}/claude_prompt_pipe`;
|
|
12
|
-
const EXECUTION_FILE = `${process.env.RUNNER_TEMP}/claude-execution-output.json`;
|
|
13
|
-
const BASE_ARGS = ["--verbose", "--output-format", "stream-json"];
|
|
14
|
-
|
|
15
|
-
export type ClaudeOptions = {
|
|
16
|
-
claudeArgs?: string;
|
|
17
|
-
model?: string;
|
|
18
|
-
pathToClaudeCodeExecutable?: string;
|
|
19
|
-
allowedTools?: string;
|
|
20
|
-
disallowedTools?: string;
|
|
21
|
-
maxTurns?: string;
|
|
22
|
-
mcpConfig?: string;
|
|
23
|
-
systemPrompt?: string;
|
|
24
|
-
appendSystemPrompt?: string;
|
|
25
|
-
claudeEnv?: string;
|
|
26
|
-
fallbackModel?: string;
|
|
27
|
-
};
|
|
28
|
-
|
|
29
|
-
type PreparedConfig = {
|
|
30
|
-
claudeArgs: string[];
|
|
31
|
-
promptPath: string;
|
|
32
|
-
env: Record<string, string>;
|
|
33
|
-
};
|
|
34
|
-
|
|
35
|
-
export function prepareRunConfig(
|
|
36
|
-
promptPath: string,
|
|
37
|
-
options: ClaudeOptions,
|
|
38
|
-
): PreparedConfig {
|
|
39
|
-
// Build Claude CLI arguments:
|
|
40
|
-
// 1. Prompt flag (always first)
|
|
41
|
-
// 2. User's claudeArgs (full control)
|
|
42
|
-
// 3. BASE_ARGS (always last, cannot be overridden)
|
|
43
|
-
|
|
44
|
-
const claudeArgs = ["-p"];
|
|
45
|
-
|
|
46
|
-
// Parse and add user's custom Claude arguments
|
|
47
|
-
if (options.claudeArgs?.trim()) {
|
|
48
|
-
const parsed = parseShellArgs(options.claudeArgs);
|
|
49
|
-
const customArgs = parsed.filter(
|
|
50
|
-
(arg): arg is string => typeof arg === "string",
|
|
51
|
-
);
|
|
52
|
-
claudeArgs.push(...customArgs);
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
// BASE_ARGS are always appended last (cannot be overridden)
|
|
56
|
-
claudeArgs.push(...BASE_ARGS);
|
|
57
|
-
|
|
58
|
-
const customEnv: Record<string, string> = {};
|
|
59
|
-
|
|
60
|
-
if (process.env.INPUT_ACTION_INPUTS_PRESENT) {
|
|
61
|
-
customEnv.GITHUB_ACTION_INPUTS = process.env.INPUT_ACTION_INPUTS_PRESENT;
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
return {
|
|
65
|
-
claudeArgs,
|
|
66
|
-
promptPath,
|
|
67
|
-
env: customEnv,
|
|
68
|
-
};
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
export async function runClaude(promptPath: string, options: ClaudeOptions) {
|
|
72
|
-
const config = prepareRunConfig(promptPath, options);
|
|
73
|
-
|
|
74
|
-
// Create a named pipe
|
|
75
|
-
try {
|
|
76
|
-
await unlink(PIPE_PATH);
|
|
77
|
-
} catch (e) {
|
|
78
|
-
// Ignore if file doesn't exist
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
// Create the named pipe
|
|
82
|
-
await execAsync(`mkfifo "${PIPE_PATH}"`);
|
|
83
|
-
|
|
84
|
-
// Log prompt file size
|
|
85
|
-
let promptSize = "unknown";
|
|
86
|
-
try {
|
|
87
|
-
const stats = await stat(config.promptPath);
|
|
88
|
-
promptSize = stats.size.toString();
|
|
89
|
-
} catch (e) {
|
|
90
|
-
// Ignore error
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
console.log(`Prompt file size: ${promptSize} bytes`);
|
|
94
|
-
|
|
95
|
-
// Log custom environment variables if any
|
|
96
|
-
const customEnvKeys = Object.keys(config.env).filter(
|
|
97
|
-
(key) => key !== "CLAUDE_ACTION_INPUTS_PRESENT",
|
|
98
|
-
);
|
|
99
|
-
if (customEnvKeys.length > 0) {
|
|
100
|
-
console.log(`Custom environment variables: ${customEnvKeys.join(", ")}`);
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
// Log custom arguments if any
|
|
104
|
-
if (options.claudeArgs && options.claudeArgs.trim() !== "") {
|
|
105
|
-
console.log(`Custom Claude arguments: ${options.claudeArgs}`);
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
// Output to console
|
|
109
|
-
console.log(`Running Claude with prompt from file: ${config.promptPath}`);
|
|
110
|
-
console.log(`Full command: claude ${config.claudeArgs.join(" ")}`);
|
|
111
|
-
|
|
112
|
-
// Start sending prompt to pipe in background
|
|
113
|
-
const catProcess = spawn("cat", [config.promptPath], {
|
|
114
|
-
stdio: ["ignore", "pipe", "inherit"],
|
|
115
|
-
});
|
|
116
|
-
const pipeStream = createWriteStream(PIPE_PATH);
|
|
117
|
-
catProcess.stdout.pipe(pipeStream);
|
|
118
|
-
|
|
119
|
-
catProcess.on("error", (error) => {
|
|
120
|
-
console.error("Error reading prompt file:", error);
|
|
121
|
-
pipeStream.destroy();
|
|
122
|
-
});
|
|
123
|
-
|
|
124
|
-
// Use custom executable path if provided, otherwise default to "claude"
|
|
125
|
-
const claudeExecutable = options.pathToClaudeCodeExecutable || "claude";
|
|
126
|
-
|
|
127
|
-
const claudeProcess = spawn(claudeExecutable, config.claudeArgs, {
|
|
128
|
-
stdio: ["pipe", "pipe", "inherit"],
|
|
129
|
-
env: {
|
|
130
|
-
...process.env,
|
|
131
|
-
...config.env,
|
|
132
|
-
},
|
|
133
|
-
});
|
|
134
|
-
|
|
135
|
-
// Handle Claude process errors
|
|
136
|
-
claudeProcess.on("error", (error) => {
|
|
137
|
-
console.error("Error spawning Claude process:", error);
|
|
138
|
-
pipeStream.destroy();
|
|
139
|
-
});
|
|
140
|
-
|
|
141
|
-
// Capture output for parsing execution metrics
|
|
142
|
-
let output = "";
|
|
143
|
-
claudeProcess.stdout.on("data", (data) => {
|
|
144
|
-
const text = data.toString();
|
|
145
|
-
|
|
146
|
-
// Try to parse as JSON and pretty print if it's on a single line
|
|
147
|
-
const lines = text.split("\n");
|
|
148
|
-
lines.forEach((line: string, index: number) => {
|
|
149
|
-
if (line.trim() === "") return;
|
|
150
|
-
|
|
151
|
-
try {
|
|
152
|
-
// Check if this line is a JSON object
|
|
153
|
-
const parsed = JSON.parse(line);
|
|
154
|
-
const prettyJson = JSON.stringify(parsed, null, 2);
|
|
155
|
-
process.stdout.write(prettyJson);
|
|
156
|
-
if (index < lines.length - 1 || text.endsWith("\n")) {
|
|
157
|
-
process.stdout.write("\n");
|
|
158
|
-
}
|
|
159
|
-
} catch (e) {
|
|
160
|
-
// Not a JSON object, print as is
|
|
161
|
-
process.stdout.write(line);
|
|
162
|
-
if (index < lines.length - 1 || text.endsWith("\n")) {
|
|
163
|
-
process.stdout.write("\n");
|
|
164
|
-
}
|
|
165
|
-
}
|
|
166
|
-
});
|
|
167
|
-
|
|
168
|
-
output += text;
|
|
169
|
-
});
|
|
170
|
-
|
|
171
|
-
// Handle stdout errors
|
|
172
|
-
claudeProcess.stdout.on("error", (error) => {
|
|
173
|
-
console.error("Error reading Claude stdout:", error);
|
|
174
|
-
});
|
|
175
|
-
|
|
176
|
-
// Pipe from named pipe to Claude
|
|
177
|
-
const pipeProcess = spawn("cat", [PIPE_PATH]);
|
|
178
|
-
pipeProcess.stdout.pipe(claudeProcess.stdin);
|
|
179
|
-
|
|
180
|
-
// Handle pipe process errors
|
|
181
|
-
pipeProcess.on("error", (error) => {
|
|
182
|
-
console.error("Error reading from named pipe:", error);
|
|
183
|
-
claudeProcess.kill("SIGTERM");
|
|
184
|
-
});
|
|
185
|
-
|
|
186
|
-
// Wait for Claude to finish
|
|
187
|
-
const exitCode = await new Promise<number>((resolve) => {
|
|
188
|
-
claudeProcess.on("close", (code) => {
|
|
189
|
-
resolve(code || 0);
|
|
190
|
-
});
|
|
191
|
-
|
|
192
|
-
claudeProcess.on("error", (error) => {
|
|
193
|
-
console.error("Claude process error:", error);
|
|
194
|
-
resolve(1);
|
|
195
|
-
});
|
|
196
|
-
});
|
|
197
|
-
|
|
198
|
-
// Clean up processes
|
|
199
|
-
try {
|
|
200
|
-
catProcess.kill("SIGTERM");
|
|
201
|
-
} catch (e) {
|
|
202
|
-
// Process may already be dead
|
|
203
|
-
}
|
|
204
|
-
try {
|
|
205
|
-
pipeProcess.kill("SIGTERM");
|
|
206
|
-
} catch (e) {
|
|
207
|
-
// Process may already be dead
|
|
208
|
-
}
|
|
209
|
-
|
|
210
|
-
// Clean up pipe file
|
|
211
|
-
try {
|
|
212
|
-
await unlink(PIPE_PATH);
|
|
213
|
-
} catch (e) {
|
|
214
|
-
// Ignore errors during cleanup
|
|
215
|
-
}
|
|
216
|
-
|
|
217
|
-
// Set conclusion based on exit code
|
|
218
|
-
if (exitCode === 0) {
|
|
219
|
-
// Try to process the output and save execution metrics
|
|
220
|
-
try {
|
|
221
|
-
await writeFile("output.txt", output);
|
|
222
|
-
|
|
223
|
-
// Process output.txt into JSON and save to execution file
|
|
224
|
-
// Increase maxBuffer from Node.js default of 1MB to 10MB to handle large Claude outputs
|
|
225
|
-
const { stdout: jsonOutput } = await execAsync("jq -s '.' output.txt", {
|
|
226
|
-
maxBuffer: 10 * 1024 * 1024,
|
|
227
|
-
});
|
|
228
|
-
await writeFile(EXECUTION_FILE, jsonOutput);
|
|
229
|
-
|
|
230
|
-
console.log(`Log saved to ${EXECUTION_FILE}`);
|
|
231
|
-
} catch (e) {
|
|
232
|
-
core.warning(`Failed to process output for execution metrics: ${e}`);
|
|
233
|
-
}
|
|
234
|
-
|
|
235
|
-
core.setOutput("conclusion", "success");
|
|
236
|
-
core.setOutput("execution_file", EXECUTION_FILE);
|
|
237
|
-
} else {
|
|
238
|
-
core.setOutput("conclusion", "failure");
|
|
239
|
-
|
|
240
|
-
// Still try to save execution file if we have output
|
|
241
|
-
if (output) {
|
|
242
|
-
try {
|
|
243
|
-
await writeFile("output.txt", output);
|
|
244
|
-
// Increase maxBuffer from Node.js default of 1MB to 10MB to handle large Claude outputs
|
|
245
|
-
const { stdout: jsonOutput } = await execAsync("jq -s '.' output.txt", {
|
|
246
|
-
maxBuffer: 10 * 1024 * 1024,
|
|
247
|
-
});
|
|
248
|
-
await writeFile(EXECUTION_FILE, jsonOutput);
|
|
249
|
-
core.setOutput("execution_file", EXECUTION_FILE);
|
|
250
|
-
} catch (e) {
|
|
251
|
-
// Ignore errors when processing output during failure
|
|
252
|
-
}
|
|
253
|
-
}
|
|
254
|
-
|
|
255
|
-
process.exit(exitCode);
|
|
256
|
-
}
|
|
257
|
-
}
|
|
1
|
+
import * as core from "@actions/core";
|
|
2
|
+
import { exec } from "child_process";
|
|
3
|
+
import { promisify } from "util";
|
|
4
|
+
import { unlink, writeFile, stat } from "fs/promises";
|
|
5
|
+
import { createWriteStream } from "fs";
|
|
6
|
+
import { spawn } from "child_process";
|
|
7
|
+
import { parse as parseShellArgs } from "shell-quote";
|
|
8
|
+
|
|
9
|
+
const execAsync = promisify(exec);
|
|
10
|
+
|
|
11
|
+
const PIPE_PATH = `${process.env.RUNNER_TEMP}/claude_prompt_pipe`;
|
|
12
|
+
const EXECUTION_FILE = `${process.env.RUNNER_TEMP}/claude-execution-output.json`;
|
|
13
|
+
const BASE_ARGS = ["--verbose", "--output-format", "stream-json"];
|
|
14
|
+
|
|
15
|
+
export type ClaudeOptions = {
|
|
16
|
+
claudeArgs?: string;
|
|
17
|
+
model?: string;
|
|
18
|
+
pathToClaudeCodeExecutable?: string;
|
|
19
|
+
allowedTools?: string;
|
|
20
|
+
disallowedTools?: string;
|
|
21
|
+
maxTurns?: string;
|
|
22
|
+
mcpConfig?: string;
|
|
23
|
+
systemPrompt?: string;
|
|
24
|
+
appendSystemPrompt?: string;
|
|
25
|
+
claudeEnv?: string;
|
|
26
|
+
fallbackModel?: string;
|
|
27
|
+
};
|
|
28
|
+
|
|
29
|
+
type PreparedConfig = {
|
|
30
|
+
claudeArgs: string[];
|
|
31
|
+
promptPath: string;
|
|
32
|
+
env: Record<string, string>;
|
|
33
|
+
};
|
|
34
|
+
|
|
35
|
+
export function prepareRunConfig(
|
|
36
|
+
promptPath: string,
|
|
37
|
+
options: ClaudeOptions,
|
|
38
|
+
): PreparedConfig {
|
|
39
|
+
// Build Claude CLI arguments:
|
|
40
|
+
// 1. Prompt flag (always first)
|
|
41
|
+
// 2. User's claudeArgs (full control)
|
|
42
|
+
// 3. BASE_ARGS (always last, cannot be overridden)
|
|
43
|
+
|
|
44
|
+
const claudeArgs = ["-p"];
|
|
45
|
+
|
|
46
|
+
// Parse and add user's custom Claude arguments
|
|
47
|
+
if (options.claudeArgs?.trim()) {
|
|
48
|
+
const parsed = parseShellArgs(options.claudeArgs);
|
|
49
|
+
const customArgs = parsed.filter(
|
|
50
|
+
(arg): arg is string => typeof arg === "string",
|
|
51
|
+
);
|
|
52
|
+
claudeArgs.push(...customArgs);
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
// BASE_ARGS are always appended last (cannot be overridden)
|
|
56
|
+
claudeArgs.push(...BASE_ARGS);
|
|
57
|
+
|
|
58
|
+
const customEnv: Record<string, string> = {};
|
|
59
|
+
|
|
60
|
+
if (process.env.INPUT_ACTION_INPUTS_PRESENT) {
|
|
61
|
+
customEnv.GITHUB_ACTION_INPUTS = process.env.INPUT_ACTION_INPUTS_PRESENT;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
return {
|
|
65
|
+
claudeArgs,
|
|
66
|
+
promptPath,
|
|
67
|
+
env: customEnv,
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
export async function runClaude(promptPath: string, options: ClaudeOptions) {
|
|
72
|
+
const config = prepareRunConfig(promptPath, options);
|
|
73
|
+
|
|
74
|
+
// Create a named pipe
|
|
75
|
+
try {
|
|
76
|
+
await unlink(PIPE_PATH);
|
|
77
|
+
} catch (e) {
|
|
78
|
+
// Ignore if file doesn't exist
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
// Create the named pipe
|
|
82
|
+
await execAsync(`mkfifo "${PIPE_PATH}"`);
|
|
83
|
+
|
|
84
|
+
// Log prompt file size
|
|
85
|
+
let promptSize = "unknown";
|
|
86
|
+
try {
|
|
87
|
+
const stats = await stat(config.promptPath);
|
|
88
|
+
promptSize = stats.size.toString();
|
|
89
|
+
} catch (e) {
|
|
90
|
+
// Ignore error
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
console.log(`Prompt file size: ${promptSize} bytes`);
|
|
94
|
+
|
|
95
|
+
// Log custom environment variables if any
|
|
96
|
+
const customEnvKeys = Object.keys(config.env).filter(
|
|
97
|
+
(key) => key !== "CLAUDE_ACTION_INPUTS_PRESENT",
|
|
98
|
+
);
|
|
99
|
+
if (customEnvKeys.length > 0) {
|
|
100
|
+
console.log(`Custom environment variables: ${customEnvKeys.join(", ")}`);
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
// Log custom arguments if any
|
|
104
|
+
if (options.claudeArgs && options.claudeArgs.trim() !== "") {
|
|
105
|
+
console.log(`Custom Claude arguments: ${options.claudeArgs}`);
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
// Output to console
|
|
109
|
+
console.log(`Running Claude with prompt from file: ${config.promptPath}`);
|
|
110
|
+
console.log(`Full command: claude ${config.claudeArgs.join(" ")}`);
|
|
111
|
+
|
|
112
|
+
// Start sending prompt to pipe in background
|
|
113
|
+
const catProcess = spawn("cat", [config.promptPath], {
|
|
114
|
+
stdio: ["ignore", "pipe", "inherit"],
|
|
115
|
+
});
|
|
116
|
+
const pipeStream = createWriteStream(PIPE_PATH);
|
|
117
|
+
catProcess.stdout.pipe(pipeStream);
|
|
118
|
+
|
|
119
|
+
catProcess.on("error", (error) => {
|
|
120
|
+
console.error("Error reading prompt file:", error);
|
|
121
|
+
pipeStream.destroy();
|
|
122
|
+
});
|
|
123
|
+
|
|
124
|
+
// Use custom executable path if provided, otherwise default to "claude"
|
|
125
|
+
const claudeExecutable = options.pathToClaudeCodeExecutable || "claude";
|
|
126
|
+
|
|
127
|
+
const claudeProcess = spawn(claudeExecutable, config.claudeArgs, {
|
|
128
|
+
stdio: ["pipe", "pipe", "inherit"],
|
|
129
|
+
env: {
|
|
130
|
+
...process.env,
|
|
131
|
+
...config.env,
|
|
132
|
+
},
|
|
133
|
+
});
|
|
134
|
+
|
|
135
|
+
// Handle Claude process errors
|
|
136
|
+
claudeProcess.on("error", (error) => {
|
|
137
|
+
console.error("Error spawning Claude process:", error);
|
|
138
|
+
pipeStream.destroy();
|
|
139
|
+
});
|
|
140
|
+
|
|
141
|
+
// Capture output for parsing execution metrics
|
|
142
|
+
let output = "";
|
|
143
|
+
claudeProcess.stdout.on("data", (data) => {
|
|
144
|
+
const text = data.toString();
|
|
145
|
+
|
|
146
|
+
// Try to parse as JSON and pretty print if it's on a single line
|
|
147
|
+
const lines = text.split("\n");
|
|
148
|
+
lines.forEach((line: string, index: number) => {
|
|
149
|
+
if (line.trim() === "") return;
|
|
150
|
+
|
|
151
|
+
try {
|
|
152
|
+
// Check if this line is a JSON object
|
|
153
|
+
const parsed = JSON.parse(line);
|
|
154
|
+
const prettyJson = JSON.stringify(parsed, null, 2);
|
|
155
|
+
process.stdout.write(prettyJson);
|
|
156
|
+
if (index < lines.length - 1 || text.endsWith("\n")) {
|
|
157
|
+
process.stdout.write("\n");
|
|
158
|
+
}
|
|
159
|
+
} catch (e) {
|
|
160
|
+
// Not a JSON object, print as is
|
|
161
|
+
process.stdout.write(line);
|
|
162
|
+
if (index < lines.length - 1 || text.endsWith("\n")) {
|
|
163
|
+
process.stdout.write("\n");
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
});
|
|
167
|
+
|
|
168
|
+
output += text;
|
|
169
|
+
});
|
|
170
|
+
|
|
171
|
+
// Handle stdout errors
|
|
172
|
+
claudeProcess.stdout.on("error", (error) => {
|
|
173
|
+
console.error("Error reading Claude stdout:", error);
|
|
174
|
+
});
|
|
175
|
+
|
|
176
|
+
// Pipe from named pipe to Claude
|
|
177
|
+
const pipeProcess = spawn("cat", [PIPE_PATH]);
|
|
178
|
+
pipeProcess.stdout.pipe(claudeProcess.stdin);
|
|
179
|
+
|
|
180
|
+
// Handle pipe process errors
|
|
181
|
+
pipeProcess.on("error", (error) => {
|
|
182
|
+
console.error("Error reading from named pipe:", error);
|
|
183
|
+
claudeProcess.kill("SIGTERM");
|
|
184
|
+
});
|
|
185
|
+
|
|
186
|
+
// Wait for Claude to finish
|
|
187
|
+
const exitCode = await new Promise<number>((resolve) => {
|
|
188
|
+
claudeProcess.on("close", (code) => {
|
|
189
|
+
resolve(code || 0);
|
|
190
|
+
});
|
|
191
|
+
|
|
192
|
+
claudeProcess.on("error", (error) => {
|
|
193
|
+
console.error("Claude process error:", error);
|
|
194
|
+
resolve(1);
|
|
195
|
+
});
|
|
196
|
+
});
|
|
197
|
+
|
|
198
|
+
// Clean up processes
|
|
199
|
+
try {
|
|
200
|
+
catProcess.kill("SIGTERM");
|
|
201
|
+
} catch (e) {
|
|
202
|
+
// Process may already be dead
|
|
203
|
+
}
|
|
204
|
+
try {
|
|
205
|
+
pipeProcess.kill("SIGTERM");
|
|
206
|
+
} catch (e) {
|
|
207
|
+
// Process may already be dead
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
// Clean up pipe file
|
|
211
|
+
try {
|
|
212
|
+
await unlink(PIPE_PATH);
|
|
213
|
+
} catch (e) {
|
|
214
|
+
// Ignore errors during cleanup
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
// Set conclusion based on exit code
|
|
218
|
+
if (exitCode === 0) {
|
|
219
|
+
// Try to process the output and save execution metrics
|
|
220
|
+
try {
|
|
221
|
+
await writeFile("output.txt", output);
|
|
222
|
+
|
|
223
|
+
// Process output.txt into JSON and save to execution file
|
|
224
|
+
// Increase maxBuffer from Node.js default of 1MB to 10MB to handle large Claude outputs
|
|
225
|
+
const { stdout: jsonOutput } = await execAsync("jq -s '.' output.txt", {
|
|
226
|
+
maxBuffer: 10 * 1024 * 1024,
|
|
227
|
+
});
|
|
228
|
+
await writeFile(EXECUTION_FILE, jsonOutput);
|
|
229
|
+
|
|
230
|
+
console.log(`Log saved to ${EXECUTION_FILE}`);
|
|
231
|
+
} catch (e) {
|
|
232
|
+
core.warning(`Failed to process output for execution metrics: ${e}`);
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
core.setOutput("conclusion", "success");
|
|
236
|
+
core.setOutput("execution_file", EXECUTION_FILE);
|
|
237
|
+
} else {
|
|
238
|
+
core.setOutput("conclusion", "failure");
|
|
239
|
+
|
|
240
|
+
// Still try to save execution file if we have output
|
|
241
|
+
if (output) {
|
|
242
|
+
try {
|
|
243
|
+
await writeFile("output.txt", output);
|
|
244
|
+
// Increase maxBuffer from Node.js default of 1MB to 10MB to handle large Claude outputs
|
|
245
|
+
const { stdout: jsonOutput } = await execAsync("jq -s '.' output.txt", {
|
|
246
|
+
maxBuffer: 10 * 1024 * 1024,
|
|
247
|
+
});
|
|
248
|
+
await writeFile(EXECUTION_FILE, jsonOutput);
|
|
249
|
+
core.setOutput("execution_file", EXECUTION_FILE);
|
|
250
|
+
} catch (e) {
|
|
251
|
+
// Ignore errors when processing output during failure
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
process.exit(exitCode);
|
|
256
|
+
}
|
|
257
|
+
}
|