Commit Graph

157 Commits

Author SHA1 Message Date
Kazuki Yamada e5f7a1f311 fix(shared): Address PR review feedback
- shared/errorHandle: recognize duck-typed OperationCancelledError from
  worker boundaries in isRepomixError (it extends RepomixError but the
  name was missing from the structured-clone fallback comparison).
  Add a regression test for the worker-boundary case.

Test improvements per coderabbit / claude review:
- cliReport: assert skill-directory + relative path on the same log line.
- processConcurrency: restore process.versions.bun by removing the property
  when it didn't originally exist, instead of leaving it defined-as-undefined.
- logger: drop the no-op `process.env.REPOMIX_LOG_LEVEL = undefined` (it
  coerces to the string "undefined" and is overwritten by the next delete).
- unifiedWorker: replace the tautological cache test with one that proves
  cache uniqueness via onWorkerTermination cleanup count; add a test for
  task-based inference overriding workerData (bundled-env reuse).
- calculateMetricsWorker: new direct test for the default export's items
  vs. single-mode dispatch — unifiedWorker mocks this module so the branch
  was otherwise untested.
- packRemoteRepositoryTool: hard-code the expected output path instead of
  expect.any(String) to catch arg-swap regressions.
- memoryUtils: tighten getMemoryStats assertions with sanity bounds
  (heapUsed <= heapTotal, rss > 0, heapUsagePercent <= 100) so a
  unit-conversion regression (bytes vs MB) would fail the test.
2026-04-26 22:20:42 +09:00
Kazuki Yamada 94cf791102 fix(test): Use path.join in cliReport skill-directory assertion for Windows
The test asserted on a literal '.claude/skills/test-skill' substring, but
getDisplayPath calls path.relative which produces backslashes on Windows.
CI failed on all Windows runners. Constructing the expected substring
with path.join makes the assertion OS-native.
2026-04-26 19:55:58 +09:00
Kazuki Yamada 9aac452504 test: Raise overall coverage from 87.9% to 90.1%
Cover previously-untested paths across the shared, cli, core, and mcp
layers, focusing on branches that represent real user-facing behavior
rather than line-coverage chasing.

Highlights:
- shared/errorHandle: cover handleError (RepomixError, unexpected Error,
  unknown values, duck-typed worker errors, debug-level branches) and
  the three error class constructors.
- shared/logger: cover setLogLevelByWorkerData for env-var, workerData
  (array and object shapes), and invalid/missing inputs.
- shared/memoryUtils: add a fresh test file covering stats, log helpers,
  and withMemoryLogging success/error paths.
- shared/processConcurrency: cover cleanupWorkerPool (Node, Bun-skip,
  swallowed teardown errors) and the run/cleanup delegation.
- shared/unifiedWorker: cover the cache-hit path and the workerData
  (array/object) and REPOMIX_WORKER_TYPE detection branches.
- core/metrics/TokenCounter: cover the catch branch (Error,
  non-Error throws, with/without filePath).
- core/file/fileManipulate: cover removeEmptyLines on inherited base
  and composite manipulators.
- cli/cliReport: cover skill-directory and split-output summary lines.
- mcp/tools/packRemoteRepositoryTool: add tests mirroring the
  packCodebaseTool pattern (success, runCli failure, runCli throw,
  workspace creation failure).
- mcp/tools/fileSystemReadDirectoryTool: switch to mocking
  node:fs/promises so existing mocks actually intercept calls, and
  cover the file-vs-dir, listing, empty-directory, and readdir-error
  paths.

Result:
- Statements 87.29% -> 89.51%
- Branches   76.16% -> 79.31%
- Functions  87.60% -> 89.37%
- Lines      87.89% -> 90.06%
2026-04-26 19:28:09 +09:00
Kazuki Yamada 6c3ea34ca4 test(cli): Assert cancel side-effect in cancellation-path tests
Add assertions that mockDeps.cancel is called with the expected message
in all three cancellation test cases for promptSkillLocation.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-11 12:59:00 +09:00
Kazuki Yamada 659b0ae894 perf(core): Lazy-load handlebars, fast-xml-builder, and @clack/prompts to reduce startup cost
Defer importing three expensive modules from CLI startup to actual usage:
- handlebars (~25ms): loaded in outputGenerate.ts on first template compile
- fast-xml-builder (~3ms): loaded in generateParsableXmlOutput on demand
- @clack/prompts (~16ms): loaded in migrationAction/skillPrompts when needed
- packSkill module chain: lazy-loaded via dynamic import in packager.ts

Cherry-picked from 082f8b4a (PR #1428)

Co-Authored-By: Claude <noreply@anthropic.com>
2026-04-11 12:59:00 +09:00
Kazuki Yamada cb00a7cbc0 test(core): Add test coverage for progressCallback in runDefaultAction
Add three test cases for handleProgress:
- Callback is invoked with progress messages from pack()
- Async callback rejection is isolated (pack completes, error logged)
- Spinner still updates when callback throws synchronously

Also restore the outer try-catch for sync errors — Promise.resolve()
only catches async rejections, not synchronous throws from the
callback invocation.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-06 21:56:15 +09:00
Kazuki Yamada c3fedb933f chore(cli): Clean up redundant trace log and stale test scaffolding
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-03 13:01:28 +09:00
Kazuki Yamada b1980710d4 refactor(cli): Remove unused defaultActionWorker and its references
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-03 09:18:06 +09:00
Kazuki Yamada fcfdf50ea0 perf(cli): Eliminate child process in default action
Run pack() directly in the main process instead of spawning a child
process via initTaskRunner. The child process startup cost (~250ms for
Node.js init + module re-loading) was pure overhead since the spinner
and pack ran in the same child process anyway.

This removes the defaultActionWorker indirection, the Bun-specific
ping/retry handshake, and the processConcurrency dependency from
defaultAction entirely.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-03 01:36:22 +09:00
Claude f8ed85beba test(cli): Update cliSpinner test to match deferred render behavior
Update setText assertion to verify render=false parameter and add
renderer mock export to match the picospinner import in cliSpinner.ts.

https://claude.ai/code/session_0178C4XA8aZxoLuHp22ZWRbQ
2026-03-31 00:34:06 +00:00
Kazuki Yamada 41ed574da1 fix(skill): Remove existing skill directory on overwrite confirmation
Previously, the interactive overwrite prompt confirmed but did not
remove the old directory, leaving stale files (e.g. renamed
tech-stack.md) behind. Now the directory is removed before
regeneration, consistent with --force behavior.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-28 00:27:25 +09:00
Kazuki Yamada 18e4e386c9 refactor(cli): Skip PicoSpinner construction in quiet mode
Defer PicoSpinner instantiation to avoid unnecessary object allocation
when the spinner will never be displayed (quiet, verbose, or stdout mode).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-27 00:29:08 +09:00
Kazuki Yamada 31bb9ed22d refactor(cli): Replace log-update with picospinner for spinner implementation
Replace log-update dependency with picospinner (from tinylibs) to reduce
transitive dependencies. picospinner provides built-in spinner functionality
(frames, symbols, succeed/fail states) that was previously manually
implemented on top of log-update, simplifying cliSpinner.ts.

This removes 12 transitive packages (ansi-escapes, cli-cursor, slice-ansi,
wrap-ansi, string-width, etc.) from the dependency tree.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-27 00:23:01 +09:00
autofix-ci[bot] c5d104e5c1 [autofix.ci] apply automated fixes 2026-03-22 15:54:13 +00:00
Kazuki Yamada 329eda2832 refactor(test): Extract mock helper and fix missing env var docs
- Extract duplicated DefaultActionRunnerResult mock into
  createMockDefaultActionResult() helper function
- Add missing REPOMIX_REMOTE_TRUST_CONFIG env var mention in ko, pt-br,
  ru library usage docs for consistency with other languages

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-23 00:53:04 +09:00
Kazuki Yamada 908d0c1cb5 refactor(cli): Replace isRemote flag with skipLocalConfig
Remove the intermediate isRemote flag that inverted remoteTrustConfig
only to be re-inverted back to skipLocalConfig in defaultAction. Now
remoteAction computes skipLocalConfig directly, reducing the internal
flag chain from 3 concepts to 2 (remoteTrustConfig → skipLocalConfig).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-23 00:43:56 +09:00
Kazuki Yamada 89c7875732 fix(security): Move --config validation before download and deduplicate findConfigFile
- Move absolute path validation for --config to before repository
  download/clone, avoiding wasted I/O on invalid input
- Consolidate duplicate findConfigFile calls in skipLocalConfig branch
  into a single search with conditional handling
- Add test for relative --config rejection even with --remote-trust-config

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-23 00:29:02 +09:00
Kazuki Yamada 17f5bb8062 fix(security): Require absolute path for --config in remote mode
Relative --config paths in remote mode would resolve against the cloned
temp directory, potentially loading and executing malicious config files
(e.g., repomix.config.ts) from untrusted repositories.

Now rejects relative paths with a clear error message guiding users to
use absolute paths instead.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-22 23:35:20 +09:00
Kazuki Yamada 127f561d13 test(cli): Add tests for --remote-trust-config and env var opt-in
Cover the previously untested opt-in paths:
- archive-download path passes isRemote: true
- --remote-trust-config flag sets isRemote to false
- REPOMIX_REMOTE_TRUST_CONFIG=true env var sets isRemote to false
- Non-"true" env var values (e.g., "yes") keep isRemote true

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-22 23:35:20 +09:00
Kazuki Yamada 186f74a85f fix(security): Skip config file loading from remote repositories
When using `repomix --remote <url>` or the MCP `pack_remote_repository` tool,
config files (repomix.config.ts/js) from the cloned repository were executed
via jiti, allowing a malicious repository to achieve arbitrary code execution
on the user's machine.

This commit skips all local config file loading when processing remote
repositories. The `isRemote` flag is propagated from remoteAction through
defaultAction to loadFileConfig, which skips local config auto-detection
and --config flag resolution. Global config and CLI options continue to
work normally.

Users who need to trust remote configs can do so in a future release via
an explicit opt-in flag (e.g., --trust-remote-config).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-22 23:35:20 +09:00
autofix-ci[bot] 1d5297c9a6 [autofix.ci] apply automated fixes 2026-02-17 13:55:26 +00:00
Kazuki Yamada aef7cc1f4a feat(cli): Add ssh:// and git:// protocol support to remote URL auto-detection
The existing --remote flag already supports ssh:// and git:// protocols
via git-url-parse, so auto-detection should cover them as well.
2026-02-17 22:54:03 +09:00
Kazuki Yamada 540e8dd2a3 feat(cli): Auto-detect explicit remote URLs in positional arguments
Allow users to run `repomix https://github.com/user/repo` or
`repomix git@github.com:user/repo.git` without the `--remote` flag.

Only explicit URL formats (https:// and git@) are auto-detected.
Shorthand format (owner/repo) is not auto-detected to avoid
ambiguity with local directory paths.

Closes #1120
2026-02-17 22:40:13 +09:00
Kazuki Yamada b7c4400c66 fix(cli): remove hardcoded white color from CLI output
Remove pc.white() calls from cliReport.ts to use terminal's default
foreground color instead. This fixes visibility issues on light-themed
terminals like Solarized Light where white text is unreadable.

Closes #1057
2026-01-12 14:40:22 +09:00
Kazuki Yamada a94ce0f2ff fix(tests): Update test mocks for vitest v4 compatibility
Vitest v4 changed how vi.fn() and vi.mock() work with class constructors.
Arrow functions in mockImplementation no longer work as constructors
when called with 'new' keyword.

Changes:
- Use regular function syntax instead of arrow functions for constructor mocks
- Use vi.hoisted() to define class mocks that can be used in vi.mock() factories
- Replace vi.fn().mockReturnValue() with vi.fn().mockImplementation() for class mocks
- Update mock instance retrieval to use vi.mocked().mock.results[0].value
2026-01-03 16:28:31 +09:00
Kazuki Yamada 5715b2e58e feat(worker): Add unified worker entry point for bundling support
Add a unified worker entry point that enables full bundling support by
allowing bundled files to spawn workers using themselves. This is a
prerequisite for bundling the website server to improve Cloud Run cold
start times.

Changes:
- Add src/shared/unifiedWorker.ts as single entry point for all workers
- Support both worker_threads and child_process runtimes
- Add REPOMIX_WORKER_TYPE env var for child_process worker type detection
- Add REPOMIX_WORKER_PATH env var for bundled environment worker path
- Add REPOMIX_WASM_DIR env var for WASM file location override
- Update processConcurrency.ts to use unified worker path
- Add debug logging (REPOMIX_DEBUG_WORKER=1) for worker troubleshooting
- Export unified worker handler from main index.ts

Note: This is work in progress. There's a known issue with child_process
runtime where nested worker pools (created inside a worker) may receive
incorrect REPOMIX_WORKER_TYPE environment variable, causing task routing
issues. Investigation ongoing.
2025-12-31 22:05:06 +09:00
Kazuki Yamada 6ecce38634 fix(cli): Add validation for skill-output path and improve error handling
Address review feedback:
- Add empty string validation for --skill-output option
- Add file vs directory check in prepareSkillDir to prevent silent file deletion
- Add tests for resolveAndPrepareSkillDir function
2025-12-30 18:13:59 +09:00
Kazuki Yamada 6470e5507e refactor(cli): Remove dead code for skill output copy in remote action
The copySkillOutputToCurrentDirectory function was never actually used
because skills are written directly to their final destination via the
skillDir absolute path, not to the temp directory.

- Remove copySkillOutputToCurrentDirectory function
- Remove related tests
- Simplify the copy logic in runRemoteAction
- Remove unused skillLocation variable and imports
2025-12-27 17:02:06 +09:00
Kazuki Yamada 9ce1c6e2a0 refactor(cli): Address PR review feedback for skill generation options
- Fix skillLocation detection using getSkillBaseDir for accurate path matching
- Improve error handling in prepareSkillDir to re-throw non-ENOENT errors
- Extract resolveAndPrepareSkillDir helper to reduce code duplication
- Add getSkillLocation helper for consistent location type detection
- Add tests for new error handling and getSkillLocation function
2025-12-25 00:31:37 +09:00
Kazuki Yamada 9ce1969ef0 feat(cli): Add --skill-output and --force options for non-interactive skill generation
Add two new CLI options to enable non-interactive skill generation for CI/CD
pipelines and automation scripts:

- `--skill-output <path>`: Specify skill output directory path directly,
  skipping the interactive location prompt
- `-f, --force`: Force overwrite existing skill directory without confirmation

This addresses #1012 where users needed to generate skills in automated
environments without interactive prompts.

Example usage:
```bash
repomix --skill-generate --skill-output .codebuddy --force
```
2025-12-24 00:31:23 +09:00
Dango233 e51d77a7c6 feat(cli): Add --split-output option
Adds a size-based output splitter via --split-output (kb/mb) and writes numbered parts without splitting within a top-level folder.

Also updates metrics aggregation for multi-part output and adds unit tests.
2025-12-21 21:56:39 +09:00
Kazuki Yamada dc694e7372 test(skill): Add tests for copySkillOutputToCurrentDirectory
Add unit tests for the copySkillOutputToCurrentDirectory function:
- Copy .claude/skills directory when it exists
- Skip copy when directory does not exist
- Handle EPERM and EACCES permission errors
- Handle generic errors
2025-12-12 21:02:18 +09:00
Kazuki Yamada 59a42e615a refactor(skill): Improve code quality based on review feedback
- Replace process.exit() with OperationCancelledError in skillPrompts.ts
- Centralize Handlebars helper registration in outputStyleUtils.ts
- Add path normalization validation in generateSkillTool.ts
- Set idempotentHint to true for generate_skill MCP tool
- Add skillGenerate config merge tests in configLoad.test.ts
- Add path normalization test in generateSkillTool.test.ts
2025-12-11 23:56:03 +09:00
Kazuki Yamada 6a397a01ac test(skill): Add tests for skill generation functionality
Add comprehensive tests for:
- packSkill.ts: generateSkillReferences, generateSkillMdFromReferences, packSkill
- skillPrompts.ts: getSkillBaseDir, promptSkillLocation
- generateSkillTool.ts: MCP tool registration, input validation, error handling
2025-12-11 23:30:25 +09:00
Kazuki Yamada 54a1391e30 refactor(cli): Use cliOptions directly for skillName and skillDir
Instead of creating separate variables and passing them through the task,
directly update cliOptions.skillName and cliOptions.skillDir. This simplifies
the code flow and removes redundant fields from DefaultActionTask interface.
2025-12-10 00:35:09 +09:00
Kazuki Yamada c5fb07cdbe fix(cli): Show relative path for skill output when under cwd
When the skill directory is under the current working directory,
show a relative path (e.g., .claude/skills/my-skill) instead of
an absolute path for better readability.
2025-12-10 00:27:43 +09:00
Kazuki Yamada 46094b8cd8 fix(cli): Show correct skill output path in summary
When Personal Skills location is selected, the summary was showing
a relative path (.claude/skills/) instead of the actual path
(~/.claude/skills/). Now passes the computed skillDir to reportResults.
2025-12-10 00:27:43 +09:00
Kazuki Yamada e137b56081 feat(skill): Add interactive skill location selection
Add @clack/prompts-based selection for skill output location:
- Personal Skills (~/.claude/skills/) - default, available across all projects
- Project Skills (.claude/skills/) - shared with team via git

Features:
- Interactive prompt to choose skill location
- Overwrite confirmation when skill directory already exists
- Works with both local and remote repositories
2025-12-10 00:27:43 +09:00
Kazuki Yamada f854dd4250 refactor(skill): Improve skill output generation and add tests
Refactor and improve the skill generation feature based on code review:

- Split generateSkillOutput into generateSkillReferences and
  generateSkillMdFromReferences to avoid double generation
- Add try-catch error handling to writeSkillOutput with proper
  permission error messages
- Add unit tests for skillSectionGenerators (12 tests)
- Add validation tests for --skill-generate flag combinations
- Update createMockConfig to support skillGenerate and remoteUrl
2025-12-10 00:27:43 +09:00
Kazuki Yamada e003ec6344 test(cli): Add tests for ignore-related CLI flags to improve coverage
Added unit tests for buildCliConfig function to cover --no-gitignore,
--no-dot-ignore, and --no-default-patterns flags. These tests ensure
proper handling of ignore configuration options and improve test coverage
to meet the 80% threshold.

This addresses the Codecov coverage gap where src/cli/actions/defaultAction.ts
lines 131-132 were not covered by tests.
2025-11-08 20:50:52 +09:00
Kazuki Yamada 438b79f654 docs(website): Add .ignore file documentation for all languages
Updated documentation for all supported languages to include:
- ignore.useDotIgnore configuration option
- --no-dot-ignore CLI flag
- .ignore file explanation and priority order
- Benefits of using .ignore file with ripgrep and ag tools

Also updated test files to include useDotIgnore in mock configs
to satisfy TypeScript type checking after adding the new
configuration option.

Languages updated:
- zh-cn (Simplified Chinese)
- zh-tw (Traditional Chinese)
- ko (Korean)
- vi (Vietnamese)
- id (Indonesian)
- hi (Hindi)
- fr (French)
- de (German)
- es (Spanish)
- pt-br (Brazilian Portuguese)
2025-11-08 20:02:14 +09:00
Kazuki Yamada 3811fdb8eb test(coverage): Address PR review feedback for test quality improvements
Implemented mandatory and recommended fixes from code review:

1. Fix timer cleanup in cliSpinner.test.ts
   - Added vi.useRealTimers() to afterEach hook
   - Prevents fake timers from bleeding into other test files

2. Fix isCancel mock in initAction.test.ts (3 locations)
   - Changed from mockReturnValue(true) to mockImplementation
   - Now properly tests only the actual cancel symbol
   - More accurate test behavior for cancellation scenarios

3. Add DI pattern explanation comment in configLoad.ts
   - Clarifies why dependency injection is used for jitiImport
   - Documents the double instrumentation issue
   - Helps future maintainers understand the design decision
2025-10-31 01:18:21 +09:00
Kazuki Yamada 72735cfdb1 test(coverage): Improve test coverage for CLI and core modules
Added comprehensive test coverage for critical CLI and core functionality:

- Created new test file for cliSpinner with 15 tests covering:
  * Spinner start/stop/update operations
  * Quiet/verbose/stdout mode handling
  * Success/fail message display
  * Interval management

- Enhanced initAction tests (11→17 tests):
  * Added isCancel handling for user cancellation
  * Added return value validation tests
  * Covered config and ignore file creation flows

- Enhanced cliReport tests (8→15 tests):
  * Added git diffs/logs reporting tests
  * Added security check reporting for git content
  * Added single vs multiple issue message handling

- Enhanced permissionCheck tests (13→16 tests):
  * Added macOS-specific error message tests
  * Added platform-specific error handling tests
  * Added unknown error code handling

- Enhanced outputGenerate tests (7→12 tests):
  * Added git diffs/logs inclusion tests
  * Added JSON format output tests
  * Added file/directory structure exclusion tests

Overall improvements:
- Test count: 804 → 840 (+36 tests)
- Code coverage: 70.63% → 71.00% (+0.37%)
- Branch coverage: 77.64% → 78.55% (+0.91%)
- Significant improvement in CLI modules (cliSpinner: 25% → 59.61%)
2025-10-31 01:18:21 +09:00
Kazuki Yamada 50a413d205 fix(cli): Improve error message for permission errors in remote repository output
When copying output files fails due to permission errors (EPERM/EACCES),
provide clear and actionable error messages that explain the issue and
offer specific solutions.

This commonly occurs when users run repomix from protected directories
like C:\Windows\System32 on Windows.

Fixes #868
2025-10-19 23:14:45 +09:00
Slava Kurilyak bc5f1342f5 feat(cli,core,config): Add --include-full-directory-structure and full repository tree 2025-10-17 17:50:08 -07:00
Kazuki Yamada 3233fc4812 fix(cli): Skip file copy when source and target paths are identical
When using the remote repository feature with an absolute path specified
for the output file, the previous implementation attempted to copy the file
even though source and target resolved to the same path. This resulted in
an error when trying to copy a file to itself.

This commit fixes the issue by:
- Checking if source and target paths are identical before copying
- Skipping the copy operation when they are the same
- This handles absolute paths and any other edge cases where paths resolve to the same location

The fix is implemented in copyOutputToCurrentDirectory function itself,
making it more robust and self-contained.

Fixes #873
2025-10-11 00:13:32 +09:00
Kazuki Yamada 1bb752a431 fix(cli): Move stdin processing to main process to resolve hang in child_process worker
Issue #867で報告された--stdinオプションのハング問題を修正しました。

v1.6.0でdefaultActionがchild_processで実行されるようになりましたが、
child_processではデフォルトで親プロセスのstdinが継承されないため、
worker内でprocess.stdinを読み取ろうとするとハングしていました。

Changes:
- stdin処理をメインプロセスに移動し、読み取り結果をworkerに渡すように変更
- DefaultActionTask interfaceをisStdinからstdinFilePathsに変更
- child_processによるリソース分離と安定性を維持しながら、stdin機能を復元

Fixes #867
2025-10-02 23:59:53 +09:00
Kazuki Yamada ea1cc485c2 chore(config): disable organizeImports for src/index.ts
Added override configuration to disable Biome's organizeImports feature
specifically for src/index.ts to allow manual import order management
while keeping automatic import organization enabled for other files.
2025-09-21 13:54:12 +09:00
Kazuki Yamada 1badf53c3c refactor(cli): optimize ping task and improve error handling
- Remove unnecessary config parameter from PingTask interface for better performance
- Improve error serialization using util.inspect with safety limits
- Update function signatures to match simplified ping interface
- Add comprehensive error details formatting with depth and length limits

These changes address PR review comments and improve worker efficiency.
2025-09-20 22:58:31 +09:00
autofix-ci[bot] c106ca8acb [autofix.ci] apply automated fixes 2025-09-20 12:44:54 +00:00