#939 by GitHub stars

Yeachan-Heo/clawhip

claw + whip: Event-to-channel notification router — bypasses gateway sessions to avoid context pollution

History

Review weekly changes to SKILL.md before updating. Dates mark the weeks in which we observed each version; checks apply to the recorded commits.

View weekly changes

SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Network or broad shell → After Network or broad shell

04a883f86536 → 04a883f86536

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → 04a883f86536

No earlier version was observed for comparison.

Compare on GitHub

skills/memory-offload/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Instructions only → After Instructions only

04a883f86536 → 04a883f86536

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Instructions only

First observation → 04a883f86536

No earlier version was observed for comparison.

Compare on GitHub

skills/omc/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Network or broad shell → After Network or broad shell

04a883f86536 → 04a883f86536

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → 04a883f86536

No earlier version was observed for comparison.

Compare on GitHub

skills/omx/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Network or broad shell → After Network or broad shell

04a883f86536 → 04a883f86536

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → 04a883f86536

No earlier version was observed for comparison.

Compare on GitHub

View on GitHubAdd to my skills

Verified commit 04a883f86536eef73d8e6e31c261985982a72528

git clone --filter=blob:none --no-checkout https://github.com/Yeachan-Heo/clawhip.git .hotskills/yeachan-heo-clawhip && git -C .hotskills/yeachan-heo-clawhip checkout --detach 04a883f86536eef73d8e6e31c261985982a72528 # Copy each selected skill directory from .hotskills/yeachan-heo-clawhip into .agents/skills/<skill-name>/
937GitHub stars
0stars in 7 days
4skills in this repository
49commits in 30 days

Heat

1.4
  • Star growth, last 7 daysAhead of 6% of tracked repositories
  • Star growth, last 24 hoursAhead of 0% of tracked repositories
  • Rank movement, last 7 daysAhead of 1% of tracked repositories
  • Commits, last 30 daysAhead of 90% of tracked repositories
  • Accounts asking about it through MCP, last 7 daysNot available
  • Hot votes this weekAhead of 0% of tracked repositories

Heat never changes the order by stars, and sponsorship never touches it. How heat works

Stars over time

Aug 2, 2026Nov 5, 2026939

Individual skills in this repository

How it works

clawhip

When your agent uses it

Attach/install/use clawhip as a daemon-first notification gateway runtime for OpenClaw / Clawdbot

What it loads into context

Frontmatter

28 tokens

Always available to the agent

SKILL.md

1,156 tokens

When the skill is activated

Reference documents

33,139 tokens

Loaded on request

Token counts are estimates. Scripts run separately; they are not counted as reference context.

The playbook

  1. Intent
  2. Prerequisites
  3. Primary install flow
  4. Runtime surface
  5. Lifecycle surface
  6. Discord bot token (recommended setup)
  7. Config scaffold expectations
  8. Dynamic template opt-in
  9. Filesystem-offloaded memory pattern
  10. Verification surface
  11. Attachment summary

Scripts executed separately

  • install.sh
  • integrations/git/install-hooks.sh
  • integrations/git/post-checkout.sh
  • integrations/git/post-commit.sh
  • integrations/tmux/notify-keyword.sh
  • integrations/tmux/scan-keywords.sh
  • integrations/tmux/stale-check.sh
  • plugins/claude-code/bridge.sh
  • plugins/codex/bridge.sh
  • scripts/internal-pr-format-gate.sh
  • scripts/live-verify-default-presets.sh
  • tests/install_star_prompt.rs

Files

  • .github/workflows/ci.ymlasset9,656 bytes
  • .github/workflows/release.ymlasset17,059 bytes
  • .gitignoreasset126 bytes
  • AGENTS.mddoc1,149 bytes
  • ARCHITECTURE.mddoc5,346 bytes
  • CHANGELOG.mddoc19,744 bytes
  • Cargo.lockasset58,523 bytes
  • Cargo.tomlasset1,393 bytes
  • LICENSEasset1,068 bytes
  • README.mddoc61,303 bytes
  • SKILL.mdcore4,319 bytes
  • SKILL.mdcore4,319 bytes
  • SKILL.mdcore4,319 bytes
  • SKILL.mdcore4,319 bytes
  • artifacts/issue-360-qa.jsonasset2,795 bytes
  • assets/clawhip-mascot.jpgasset73,237 bytes
  • build.rsasset5,846 bytes
  • build/gitdir.rsasset7,144 bytes
  • deploy/clawhip.serviceasset244 bytes
  • dist-workspace.tomlasset683 bytes
  • docs/canonical-contract-cleanup.mddoc1,850 bytes
  • docs/event-contract-v1.mddoc3,718 bytes
  • docs/event-ledger.mddoc5,848 bytes
  • docs/examples/MEMORY.example.mddoc1,159 bytes
  • docs/examples/memory/README.example.mddoc817 bytes
  • docs/examples/memory/channels/example-channel.mddoc404 bytes
  • docs/examples/memory/daily/2026-03-10.mddoc445 bytes
  • docs/examples/memory/projects/clawhip.mddoc266 bytes
  • docs/examples/memory/topics/lessons.mddoc193 bytes
  • docs/examples/memory/topics/rules.mddoc141 bytes
  • docs/geobench.mddoc872 bytes
  • docs/gjc-sdk-event-bridge.mddoc8,070 bytes
  • docs/gjc-sdk-integration.mddoc7,895 bytes
  • docs/live-verification.mddoc7,719 bytes
  • docs/memory-offload-architecture.mddoc6,408 bytes
  • docs/memory-offload-guide.mddoc6,189 bytes
  • docs/native-event-contract.mddoc5,003 bytes
  • geobench/clawhip.yamlasset2,500 bytes
  • install.shruns8,420 bytes
  • integrations/git/install-hooks.shruns476 bytes
  • integrations/git/post-checkout.shruns648 bytes
  • integrations/git/post-commit.shruns443 bytes
  • integrations/omx/README.mddoc457 bytes
  • integrations/tmux/notify-keyword.shruns507 bytes
  • integrations/tmux/scan-keywords.shruns1,403 bytes
  • integrations/tmux/stale-check.shruns1,697 bytes
  • plugins/claude-code/bridge.shruns76 bytes
  • plugins/claude-code/plugin.tomlasset109 bytes
  • plugins/codex/bridge.shruns70 bytes
  • plugins/codex/plugin.tomlasset97 bytes
  • scripts/internal-pr-format-gate.shruns1,271 bytes
  • scripts/live-verify-default-presets.shruns3,431 bytes
  • src/binding_verify.rsasset49,253 bytes
  • src/build_info.rsasset6,664 bytes
  • src/cli.rsasset83,005 bytes
  • src/client.rsasset22,030 bytes
  • src/config.rsasset280,620 bytes
  • src/core/circuit_breaker.rsasset4,735 bytes
  • src/core/dlq.rsasset1,787 bytes
  • src/core/mod.rsasset79 bytes
  • src/core/rate_limit.rsasset2,604 bytes
  • src/core/timer_wheel.rsasset4,647 bytes
  • src/cron.rsasset62,333 bytes
  • src/daemon.rsasset250,103 bytes
  • src/deployment.rsasset15,638 bytes
  • src/discord.rsasset70,106 bytes
  • src/discord_watch.rsasset37,047 bytes
  • src/dispatch.rsasset102,479 bytes
  • src/dynamic_tokens.rsasset5,420 bytes
  • src/event/body.rsasset4,592 bytes
  • src/event/compat.rsasset39,525 bytes
  • src/event/mod.rsasset2,917 bytes
  • src/events.rsasset86,754 bytes
  • src/gajae.rsasset103,252 bytes
  • src/gateway_allowlist.rsasset14,473 bytes
  • src/gjc/api.rsasset19,998 bytes
  • src/gjc/cli.rsasset10,657 bytes
  • src/gjc/control.rsasset74,039 bytes
  • src/gjc/mod.rsasset562 bytes
  • src/gjc/model.rsasset26,726 bytes
  • src/gjc/transport.rsasset20,548 bytes
  • src/gjc_lane.rsasset228,098 bytes
  • src/gjc_sdk.rsasset108,789 bytes
  • src/gjc_sdk_events.rsasset85,889 bytes
  • src/hooks/mod.rsasset13,354 bytes
  • src/hooks/prompt_deliver.rsasset46,098 bytes
  • src/keyword_window.rsasset92,425 bytes
  • src/lane.rsasset30,122 bytes
  • src/ledger.rsasset53,489 bytes
  • src/lib.rsasset1 bytes
  • src/lifecycle.rsasset17,007 bytes
  • src/main.rsasset59,770 bytes
  • src/memory.rsasset46,674 bytes
  • src/monitor.rsasset68 bytes
  • src/native_hooks.rsasset63,417 bytes
  • src/native_observability.rsasset20,544 bytes
  • src/plugins.rsasset7,343 bytes
  • src/provenance.rsasset9,094 bytes
  • src/release_preflight.rsasset16,832 bytes
  • src/render/default.rsasset71,727 bytes
  • src/render/mod.rsasset247 bytes
  • src/router.rsasset113,832 bytes
  • src/sender_identity.rsasset12,704 bytes
  • src/sink/discord.rsasset669 bytes
  • src/sink/http.rsasset62,076 bytes
  • src/sink/local_file.rsasset4,931 bytes
  • src/sink/mod.rsasset1,136 bytes
  • src/sink/slack.rsasset576 bytes
  • src/slack.rsasset4,356 bytes
  • src/source/git.rsasset51,193 bytes
  • src/source/github.rsasset415,993 bytes
  • src/source/github_notifications.rsasset101,321 bytes
  • src/source/github_pr_activity_metadata_tests.rsasset20,294 bytes
  • src/source/github_status.rsasset27,673 bytes
  • src/source/mod.rsasset1,253 bytes
  • src/source/subscription.rsasset42,015 bytes
  • src/source/tmux.rsasset195,136 bytes
  • src/source/workspace.rsasset38,377 bytes
  • src/source_checkout.rsasset45,078 bytes
  • src/telemetry.rsasset10,826 bytes
  • src/tmux_wrapper.rsasset84,406 bytes
  • src/update.rsasset10,105 bytes
  • tests/build_rs_worktree.rsasset25,800 bytes
  • tests/common/gjc_fake_server.rsasset19,367 bytes
  • tests/common/gjc_wire.rsasset12,128 bytes
  • tests/common/mod.rsasset283 bytes
  • tests/config_backup_cleanup.rsasset12,133 bytes
  • tests/event_ledger_e2e.rsasset6,162 bytes
  • tests/gajae_profile_install_stdin.rsasset26,964 bytes
  • tests/gjc_fake_server_contract.rsasset15,947 bytes
  • tests/gjc_sdk_event_bridge.rsasset16,704 bytes
  • tests/gjc_sdk_full_loop_e2e.rsasset30,542 bytes
  • tests/gjc_sdk_transport.rsasset30,094 bytes
  • tests/install_star_prompt.rsruns14,059 bytes
  • tests/lane_thread_verification.rsasset78,431 bytes
  • tests/provider_native_docs_regression.rsasset1,887 bytes
  • tests/runtime_config.rsasset805 bytes
  • tests/sender_identity_verification.rsasset17,708 bytes
  • tests/setup_bind_legacy_route_only.rsasset2,438 bytes
Read SKILL.md

# clawhip skill attachment surface

## Intent

Use this repo as:
- executable/runtime repo
- daemon process for Discord notification routing
- attachable skill surface for OpenClaw / Clawdbot

## Prerequisites

⭐ If you want to support clawhip, star this repository. The interactive repo-local installer and `clawhip install` can offer an optional post-install GitHub star prompt via authenticated `gh api` access when `gh` is installed and authenticated. Skip it with `--skip-star-prompt` or `CLAWHIP_SKIP_STAR_PROMPT=1`.

```bash
View the complete source on GitHub

Skills included

  • clawhip

Repository facts

License
MIT
Created
Mar 8, 2026
Last pushed
Oct 22, 2026
Forks
166
Open issues
0
Project activity
Active

Rank over the last 12 weeks

Now #939 · best #630 · down 240 in 30 days

  1. #920 on Nov 1
  2. #930 on Nov 2
  3. #935 on Nov 3
  4. #934 on Nov 4
  5. #937 on Nov 5
  6. #939 since Nov 6
22 earlier periods
  1. #565 on Aug 2
  2. #564 on Aug 5
  3. #601 on Aug 11
  4. #640 on Aug 27
  5. #661 on Aug 28
  6. #630 on Sep 4
  7. #675 on Sep 8
  8. #652 on Sep 11
  9. #682 on Sep 16
  10. #671 on Sep 20
  11. #693 on Sep 27
  12. #699 on Sep 28
  13. #724 on Oct 10
  14. #752 on Oct 15
  15. #787 on Oct 21
  16. #768 on Oct 22
  17. #773 on Oct 23
  18. #891 on Oct 25
  19. #903 on Oct 28
  20. #908 on Oct 29
  21. #912 on Oct 30
  22. #916 on Oct 31

Before you install

Network or broad shell

Automated signals, not a guarantee

Checked Nov 4, 2026

Not fully analyzed: some files were too long, unreadable or missing. This never lowers the level.

Show 8 notes
  • SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • src/source/github.rs:10380 Analysis incomplete: regex work limit reached
  • skills/omc/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/omc/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/omx/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/omx/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
Show all 2,006 signals by file

.github/workflows/ci.yml

  • Dangerous shell operationline 44
    elif command -v sudo >/dev/null 2>&1 && sudo -n true 2>/dev/null; then
  • Dangerous shell operationline 45
    apt_get=(sudo apt-get)
  • Dangerous shell operationline 93
    elif command -v sudo >/dev/null 2>&1 && sudo -n true 2>/dev/null; then
  • Dangerous shell operationline 94
    apt_get=(sudo apt-get)
  • Dangerous shell operationline 155
    elif command -v sudo >/dev/null 2>&1 && sudo -n true 2>/dev/null; then
  • Dangerous shell operationline 156
    apt_get=(sudo apt-get)
  • Dangerous shell operationline 205
    elif command -v sudo >/dev/null 2>&1 && sudo -n true 2>/dev/null; then
  • Dangerous shell operationline 206
    apt_get=(sudo apt-get)
  • Dangerous shell operationline 255
    elif command -v sudo >/dev/null 2>&1 && sudo -n true 2>/dev/null; then
  • Dangerous shell operationline 256
    apt_get=(sudo apt-get)

.github/workflows/release.yml

  • Network accessline 1
    # This file was autogenerated by dist: https://axodotdev.github.io/cargo-dist
  • Dangerous shell operationline 81
    elif command -v sudo >/dev/null 2>&1 && sudo -n true 2>/dev/null; then
  • Dangerous shell operationline 82
    apt_get=(sudo apt-get)
  • Dangerous shell operationline 144
    elif command -v sudo >/dev/null 2>&1 && sudo -n true 2>/dev/null; then
  • Dangerous shell operationline 145
    apt_get=(sudo apt-get)
  • Network accessline 162
    # failing. otherwise `sh` won't catch that `curl` returned non-0         shell: bash         run: "curl --proto '=https' --tlsv1.2 -LsSf https://github.com/axodotdev/cargo-dist/releases/download/v0.31.0/cargo-dist-installer.sh | sh"
  • Network accessline 163
    shell: bash         run: "curl --proto '=https' --tlsv1.2 -LsSf https://github.com/axodotdev/cargo-dist/releases/download/v0.31.0/cargo-dist-installer.sh | sh"       - name: Cache dist
  • Dangerous shell operationline 164
    run: "curl --proto '=https' --tlsv1.2 -LsSf https://github.com/axodotdev/cargo-dist/releases/download/v0.31.0/cargo-dist-installer.sh | sh"
  • Network accessline 164
    run: "curl --proto '=https' --tlsv1.2 -LsSf https://github.com/axodotdev/cargo-dist/releases/download/v0.31.0/cargo-dist-installer.sh | sh"
  • Network accessline 219
    run: |           if ! command -v cargo > /dev/null 2>&1; then             curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y
  • Network accessline 220
    if ! command -v cargo > /dev/null 2>&1; then             curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y             echo "$HOME/.cargo/bin" >> $GITHUB_PATH
  • Dangerous shell operationline 221
    curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y
  • Network accessline 221
    curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y
  • Dangerous shell operationline 360
    rm -f artifacts/*-dist-manifest.json
  • Access to secretsline 377
    [Credential-related source omitted]

ARCHITECTURE.md

  • Network accessline 115
    [providers.http] endpoint = "http://127.0.0.1:8644/webhooks/clawhip-controller"
  • Network accessline 116
    endpoint = "http://127.0.0.1:8644/webhooks/clawhip-controller"

CHANGELOG.md

  • Access to secretsline 43
    [Credential-related source omitted]

Cargo.lock

  • Network accessline 6
    name = "anstream" version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 7
    version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "824a212faf96e9acacdbd09febd34438f8f711fb84e09a8916013cd7815ca28d"
  • Network accessline 8
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 21
    name = "anstyle" version = "1.0.14" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 22
    version = "1.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "940b3a0ca603d1eade50a4846a2afffd5ef57a9feac2c0e2ec2e14f9ead76000"
  • Network accessline 23
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 27
    name = "anstyle-parse" version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 28
    version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "52ce7f38b242319f7cabaa6813055467063ecdc9d355bbb4ce0c68908cd8130e"
  • Network accessline 29
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 36
    name = "anstyle-query" version = "1.1.5" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 37
    version = "1.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "40c48f72fd53cd289104fc64099abca73db4166ad86ea0b4341abe65af83dadc"
  • Network accessline 38
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 45
    name = "anstyle-wincon" version = "3.0.11" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 46
    version = "3.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "291e6a250ff86cd4a820112fb8898808a366d8f9f58ce16d1f538353ad55747d"
  • Network accessline 47
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 56
    name = "anyhow" version = "1.0.102" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 57
    version = "1.0.102" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7f202df86484c868dbad7eaa557ef785d5c66295e41b460ef922eca0723b842c"
  • Network accessline 58
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 62
    name = "async-trait" version = "0.1.89" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 63
    version = "0.1.89" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb"
  • Network accessline 64
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 73
    name = "atomic-waker" version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 74
    version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0"
  • Network accessline 75
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 79
    name = "axum" version = "0.8.8" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 80
    version = "0.8.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8b52af3cb4058c895d37317bb27508dccc8e5f2d39454016b297bf4a400597b8"
  • Network accessline 81
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 115
    name = "axum-core" version = "0.5.6" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 116
    version = "0.5.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "08c78f31d7b1291f7ee735c1c6780ccde7785daae9a9206026862dab7d8792d1"
  • Network accessline 117
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 134
    name = "base64" version = "0.22.1" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 135
    version = "0.22.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6"
  • Network accessline 136
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 140
    name = "bitflags" version = "2.11.0" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 141
    version = "2.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "843867be96c8daad0d758b57df9392b6d8d271134fce549de6ce169ff98a92af"
  • Network accessline 142
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 146
    name = "block-buffer" version = "0.10.4" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 147
    version = "0.10.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71"
  • Network accessline 148
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 155
    name = "bumpalo" version = "3.20.2" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 156
    version = "3.20.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5d20789868f4b01b2f2caec9f5c4e0213b41e3e5702a50157d699ae31ced2fcb"
  • Network accessline 157
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 161
    name = "bytes" version = "1.11.1" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 162
    version = "1.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1e748733b7cbc798e1434b6ac524f0c1ff2ab456fe201501e6497c8417a4fc33"
  • Network accessline 163
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 167
    name = "cc" version = "1.2.59" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 168
    version = "1.2.59" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b7a4d3ec6524d28a329fc53654bbadc9bdd7b0431f5d65f1a56ffb28a1ee5283"
  • Network accessline 169
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 177
    name = "cfg-if" version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 178
    version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801"
  • Network accessline 179
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 183
    name = "cfg_aliases" version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 184
    version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724"
  • Network accessline 185
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 189
    name = "clap" version = "4.6.0" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 190
    version = "4.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b193af5b67834b676abd72466a96c1024e6a6ad978a1f484bd90b85c94041351"
  • Network accessline 191
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 199
    name = "clap_builder" version = "4.6.0" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 200
    version = "4.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "714a53001bf66416adb0e2ef5ac857140e7dc3a0c48fb28b2f10762fc4b5069f"
  • Network accessline 201
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 211
    name = "clap_derive" version = "4.6.0" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 212
    version = "4.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1110bd8a634a1ab8cb04345d8d878267d57c3cf1b38d91b71af6686408bbca6a"
  • Network accessline 213
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 223
    name = "clap_lex" version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 224
    version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c8d4a3bb8b1e0c1050499d1815f5ab16d04f0959b233085fb31653fbfc9d98f9"
  • Network accessline 225
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 254
    name = "colorchoice" version = "1.0.5" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 255
    version = "1.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1d07550c9036bf2ae0c684c4297d503f838287c83c53686d05370d0e139ae570"
  • Network accessline 256
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 260
    name = "cpufeatures" version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 261
    version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280"
  • Network accessline 262
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 269
    name = "crypto-common" version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 270
    version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "78c8292055d1c1df0cce5d180393dc8cce0abec0a7102adb6c7b1eef6016d60a"
  • Network accessline 271
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 279
    name = "data-encoding" version = "2.11.0" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 280
    version = "2.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a4ae5f15dda3c708c0ade84bfee31ccab44a3da4f88015ed22f63732abe300c8"
  • Network accessline 281
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 285
    name = "deranged" version = "0.5.8" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 286
    version = "0.5.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7cd812cc2bc1d69d4764bd80df88b4317eaef9e773c75226407d9bc0876b211c"
  • Network accessline 287
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 294
    name = "digest" version = "0.10.7" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 295
    version = "0.10.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292"
  • Network accessline 296
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 304
    name = "displaydoc" version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 305
    version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0"
  • Network accessline 306
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 315
    name = "equivalent" version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 316
    version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f"
  • Network accessline 317
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 321
    name = "errno" version = "0.3.14" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 322
    version = "0.3.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb"
  • Network accessline 323
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 331
    name = "fastrand" version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 332
    version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a043dc74da1e37d6afe657061213aa6f425f855399a11d3463c6ecccc4dfda1f"
  • Network accessline 333
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 337
    name = "find-msvc-tools" version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 338
    version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5baebc0774151f905a1a2cc41989300b1e6fbb29aff0ceffa1064fdd3088d582"
  • Network accessline 339
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 343
    name = "foldhash" version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 344
    version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2"
  • Network accessline 345
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 349
    name = "form_urlencoded" version = "1.2.2" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 350
    version = "1.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cb4cb245038516f5f85277875cdaa4f7d2c9a0fa0468de06ed190163b1581fcf"
  • Network accessline 351
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 358
    name = "fs2" version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 359
    version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9564fc758e15025b46aa6643b1b77d047d1a56a1aea6e01002ac0c7026876213"
  • Network accessline 360
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 368
    name = "futures-channel" version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 369
    version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "07bbe89c50d7a535e539b8c17bc0b49bdb77747034daa8087407d655f3f7cc1d"
  • Network accessline 370
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 377
    name = "futures-core" version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 378
    version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7e3450815272ef58cec6d564423f6e755e25379b217b0bc688e295ba24df6b1d"
  • Network accessline 379
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 383
    name = "futures-executor" version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 384
    version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "baf29c38818342a3b26b5b923639e7b1f4a61fc5e76102d4b1981c6dc7a7579d"
  • Network accessline 385
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 394
    name = "futures-macro" version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 395
    version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e835b70203e41293343137df5c0664546da5745f82ec9b84d40be8336958447b"
  • Network accessline 396
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 405
    name = "futures-sink" version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 406
    version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c39754e157331b013978ec91992bde1ac089843443c49cbc7f46150b0fad0893"
  • Network accessline 407
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 411
    name = "futures-task" version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 412
    version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "037711b3d59c33004d3856fbdc83b99d4ff37a24768fa1be9ce3538a1cde4393"
  • Network accessline 413
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 417
    name = "futures-util" version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 418
    version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "389ca41296e6190b48053de0321d02a77f32f8a5d2461dd38762c0593805c6d6"
  • Network accessline 419
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 431
    name = "generic-array" version = "0.14.7" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 432
    version = "0.14.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a"
  • Network accessline 433
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 441
    name = "getrandom" version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 442
    version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ff2abc00be7fca6ebc474524697ae276ad847ad0a6b3faa4bcb027e9a4614ad0"
  • Network accessline 443
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 454
    name = "getrandom" version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 455
    version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd"
  • Network accessline 456
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 468
    name = "getrandom" version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 469
    version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0de51e6874e94e7bf76d726fc5d13ba782deca734ff60d5bb2fb2607c7406555"
  • Network accessline 470
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 481
    name = "hashbrown" version = "0.15.5" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 482
    version = "0.15.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1"
  • Network accessline 483
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 490
    name = "hashbrown" version = "0.16.1" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 491
    version = "0.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100"
  • Network accessline 492
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 496
    name = "heck" version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 497
    version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea"
  • Network accessline 498
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 502
    name = "http" version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 503
    version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e3ba2a386d7f85a81f119ad7498ebe444d2e22c2af0b86b069416ace48b3311a"
  • Network accessline 504
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 512
    name = "http-body" version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 513
    version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184"
  • Network accessline 514
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 522
    name = "http-body-util" version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 523
    version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b021d93e26becf5dc7e1b75b1bed1fd93124b374ceb73f43d4d4eafec896a64a"
  • Network accessline 524
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 535
    name = "httparse" version = "1.10.1" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 536
    version = "1.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87"
  • Network accessline 537
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 541
    name = "httpdate" version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 542
    version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9"
  • Network accessline 543
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 547
    name = "hyper" version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 548
    version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6299f016b246a94207e63da54dbe807655bf9e00044f73ded42c3ac5305fbcca"
  • Network accessline 549
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 568
    name = "hyper-rustls" version = "0.27.7" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 569
    version = "0.27.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e3c93eb611681b207e1fe55d5a71ecf91572ec8a6705cdb6857f7d8d5242cf58"
  • Network accessline 570
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 585
    name = "hyper-util" version = "0.1.20" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 586
    version = "0.1.20" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "96547c2556ec9d12fb1578c4eaf448b04993e7fb79cbaad930a656880a6bdfa0"
  • Network accessline 587
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 608
    name = "icu_collections" version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 609
    version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2984d1cd16c883d7935b9e07e44071dca8d917fd52ecc02c04d5fa0b5a3f191c"
  • Network accessline 610
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 622
    name = "icu_locale_core" version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 623
    version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "92219b62b3e2b4d88ac5119f8904c10f8f61bf7e95b640d25ba3075e6cac2c29"
  • Network accessline 624
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 635
    name = "icu_normalizer" version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 636
    version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c56e5ee99d6e3d33bd91c5d85458b6005a22140021cc324cea84dd0e72cff3b4"
  • Network accessline 637
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 649
    name = "icu_normalizer_data" version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 650
    version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "da3be0ae77ea334f4da67c12f149704f19f81d1adf7c51cf482943e84a2bad38"
  • Network accessline 651
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 655
    name = "icu_properties" version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 656
    version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bee3b67d0ea5c2cca5003417989af8996f8604e34fb9ddf96208a033901e70de"
  • Network accessline 657
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 669
    name = "icu_properties_data" version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 670
    version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8e2bbb201e0c04f7b4b3e14382af113e17ba4f63e2c9d2ee626b720cbce54a14"
  • Network accessline 671
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 675
    name = "icu_provider" version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 676
    version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "139c4cf31c8b5f33d7e199446eff9c1e02decfc2f0eec2c8d71f65befa45b421"
  • Network accessline 677
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 690
    name = "id-arena" version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 691
    version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3d3067d79b975e8844ca9eb072e16b31c3c1c36928edf9c6789548c524d0d954"
  • Network accessline 692
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 696
    name = "idna" version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 697
    version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3b0875f23caa03898994f6ddc501886a45c7d3d62d04d2d90788d47be1b1e4de"
  • Network accessline 698
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 707
    name = "idna_adapter" version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 708
    version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3acae9609540aa318d1bc588455225fb2085b9ed0c4f6bd0d9d5bcd86f1a0344"
  • Network accessline 709
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 717
    name = "indexmap" version = "2.13.1" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 718
    version = "2.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "45a8a2b9cb3e0b0c1803dbb0758ffac5de2f425b23c28f518faabd9d805342ff"
  • Network accessline 719
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 729
    name = "ipnet" version = "2.12.0" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 730
    version = "2.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d98f6fed1fde3f8c21bc40a1abb88dd75e67924f9cffc3ef95607bad8017f8e2"
  • Network accessline 731
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 735
    name = "iri-string" version = "0.7.12" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 736
    version = "0.7.12" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "25e659a4bb38e810ebc252e53b5814ff908a8c58c2a9ce2fae1bbec24cbf4e20"
  • Network accessline 737
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 745
    name = "is_terminal_polyfill" version = "1.70.2" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 746
    version = "1.70.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a6cb138bb79a146c1bd460005623e142ef0181e3d0219cb493e02f7d08a35695"
  • Network accessline 747
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 751
    name = "itoa" version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 752
    version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8f42a60cbdf9a97f5d2305f08a87dc4e09308d1276d28c869c684d7777685682"
  • Network accessline 753
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 757
    name = "js-sys" version = "0.3.94" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 758
    version = "0.3.94" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2e04e2ef80ce82e13552136fabeef8a5ed1f985a96805761cbb9a2c34e7664d9"
  • Network accessline 759
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 769
    name = "leb128fmt" version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 770
    version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "09edd9e8b54e49e587e4f6295a7d29c3ea94d469cb40ab8ca70b288248a81db2"
  • Network accessline 771
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 775
    name = "libc" version = "0.2.184" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 776
    version = "0.2.184" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "48f5d2a454e16a5ea0f4ced81bd44e4cfc7bd3a507b61887c99fd3538b28e4af"
  • Network accessline 777
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 781
    name = "linux-raw-sys" version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 782
    version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "32a66949e030da00e8c7d4434b251670a91556f4144941d37452769c25d58a53"
  • Network accessline 783
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 787
    name = "litemap" version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 788
    version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "92daf443525c4cce67b150400bc2316076100ce0b3686209eb8cf3c31612e6f0"
  • Network accessline 789
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 793
    name = "lock_api" version = "0.4.14" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 794
    version = "0.4.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "224399e74b87b5f3557511d98dff8b14089b3dadafcab6bb93eab67d3aace965"
  • Network accessline 795
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 802
    name = "log" version = "0.4.29" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 803
    version = "0.4.29" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897"
  • Network accessline 804
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 808
    name = "lru-slab" version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 809
    version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "112b39cec0b298b6c1999fee3e31427f74f676e4cb9879ed1a121b43661a4154"
  • Network accessline 810
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 814
    name = "matchit" version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 815
    version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "47e1ffaa40ddd1f3ed91f717a33c8c0ee23fff369e3aa8772b9605cc1d22f4c3"
  • Network accessline 816
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 820
    name = "memchr" version = "2.8.0" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 821
    version = "2.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f8ca58f447f06ed17d5fc4043ce1b10dd205e060fb3ce5b979b8ed8e59ff3f79"
  • Network accessline 822
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 826
    name = "mime" version = "0.3.17" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 827
    version = "0.3.17" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a"
  • Network accessline 828
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 832
    name = "mio" version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 833
    version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "50b7e5b27aa02a74bac8c3f23f448f8d87ff11f92d3aac1a6ed369ee08cc56c1"
  • Network accessline 834
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 843
    name = "num-conv" version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 844
    version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c6673768db2d862beb9b39a78fdcb1a69439615d5794a1be50caa9bc92c81967"
  • Network accessline 845
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 849
    name = "once_cell" version = "1.21.4" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 850
    version = "1.21.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50"
  • Network accessline 851
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 855
    name = "once_cell_polyfill" version = "1.70.2" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 856
    version = "1.70.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "384b8ab6d37215f3c5301a95a4accb5d64aa607f1fcb26a11b5303878451b4fe"
  • Network accessline 857
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 861
    name = "parking_lot" version = "0.12.5" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 862
    version = "0.12.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "93857453250e3077bd71ff98b6a65ea6621a19bb0f559a85248955ac12c45a1a"
  • Network accessline 863
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 871
    name = "parking_lot_core" version = "0.9.12" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 872
    version = "0.9.12" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2621685985a2ebf1c516881c026032ac7deafcda1a2c9b7850dc81e3dfcb64c1"
  • Network accessline 873
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 884
    name = "percent-encoding" version = "2.3.2" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 885
    version = "2.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220"
  • Network accessline 886
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 890
    name = "pin-project-lite" version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 891
    version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a89322df9ebe1c1578d689c92318e070967d1042b512afbe49518723f4e6d5cd"
  • Network accessline 892
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 896
    name = "potential_utf" version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 897
    version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0103b1cef7ec0cf76490e969665504990193874ea05c85ff9bab8b911d0a0564"
  • Network accessline 898
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 905
    name = "powerfmt" version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 906
    version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391"
  • Network accessline 907
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 911
    name = "ppv-lite86" version = "0.2.21" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 912
    version = "0.2.21" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9"
  • Network accessline 913
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 920
    name = "prettyplease" version = "0.2.37" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 921
    version = "0.2.37" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "479ca8adacdd7ce8f1fb39ce9ecccbfe93a3f1344b3d0d97f20bc0196208f62b"
  • Network accessline 922
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 930
    name = "proc-macro2" version = "1.0.106" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 931
    version = "1.0.106" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8fd00f0bb2e90d81d1044c2b32617f68fcb9fa3bb7640c23e9c748e53fb30934"
  • Network accessline 932
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 939
    name = "quinn" version = "0.11.9" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 940
    version = "0.11.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b9e20a958963c291dc322d98411f541009df2ced7b5a4f2bd52337638cfccf20"
  • Network accessline 941
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 959
    name = "quinn-proto" version = "0.11.14" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 960
    version = "0.11.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "434b42fec591c96ef50e21e886936e66d3cc3f737104fdb9b737c40ffb94c098"
  • Network accessline 961
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 980
    name = "quinn-udp" version = "0.5.14" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 981
    version = "0.5.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "addec6a0dcad8a8d96a771f815f0eaf55f9d1805756410b39f5fa81332574cbd"
  • Network accessline 982
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 994
    name = "quote" version = "1.0.45" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 995
    version = "1.0.45" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "41f2619966050689382d2b44f664f4bc593e129785a36d6ee376ddf37259b924"
  • Network accessline 996
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 1003
    name = "r-efi" version = "5.3.0" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 1004
    version = "5.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f"
  • Network accessline 1005
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 1009
    name = "r-efi" version = "6.0.0" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 1010
    version = "6.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f8dcc9c7d52a811697d2151c701e0d08956f92b0e24136cf4cf27b57a6a0d9bf"
  • Network accessline 1011
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 1015
    name = "rand" version = "0.9.2" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 1016
    version = "0.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6db2770f06117d490610c7488547d543617b21bfa07796d7a12f6f1bd53850d1"
  • Network accessline 1017
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 1025
    name = "rand_chacha" version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 1026
    version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb"
  • Network accessline 1027
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 1035
    name = "rand_core" version = "0.9.5" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 1036
    version = "0.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "76afc826de14238e6e8c374ddcc1fa19e374fd8dd986b0d2af0d02377261d83c"
  • Network accessline 1037
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 1044
    name = "redox_syscall" version = "0.5.18" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 1045
    version = "0.5.18" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d"
  • Network accessline 1046
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 1053
    name = "reqwest" version = "0.12.28" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 1054
    version = "0.12.28" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "eddd3ca559203180a307f12d114c268abf583f59b03cb906fd0b3ff8646c1147"
  • Network accessline 1055
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 1091
    name = "ring" version = "0.17.14" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 1092
    version = "0.17.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a4689e6c2294d81e88dc6261c768b63bc4fcdb852be6d1352498b114f61383b7"
  • Network accessline 1093
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 1105
    name = "rustc-hash" version = "2.1.2" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 1106
    version = "2.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "94300abf3f1ae2e2b8ffb7b58043de3d399c73fa6f4b73826402a5c457614dbe"
  • Network accessline 1107
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 1111
    name = "rustix" version = "1.1.4" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 1112
    version = "1.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b6fe4565b9518b83ef4f91bb47ce29620ca828bd32cb7e408f0062e9930ba190"
  • Network accessline 1113
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 1124
    name = "rustls" version = "0.23.37" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 1125
    version = "0.23.37" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "758025cb5fccfd3bc2fd74708fd4682be41d99e5dff73c377c0646c6012c73a4"
  • Network accessline 1126
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 1138
    name = "rustls-pki-types" version = "1.14.0" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 1139
    version = "1.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "be040f8b0a225e40375822a563fa9524378b9d63112f53e19ffff34df5d33fdd"
  • Network accessline 1140
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 1148
    name = "rustls-webpki" version = "0.103.10" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 1149
    version = "0.103.10" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "df33b2b81ac578cabaf06b89b0631153a3f416b0a886e8a7a1707fb51abbd1ef"
  • Network accessline 1150
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 1159
    name = "rustversion" version = "1.0.22" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 1160
    version = "1.0.22" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d"
  • Network accessline 1161
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 1165
    name = "ryu" version = "1.0.23" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 1166
    version = "1.0.23" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9774ba4a74de5f7b1c1451ed6cd5285a32eddb5cccb8cc655a4e50009e06477f"
  • Network accessline 1167
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 1171
    name = "scc" version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 1172
    version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "46e6f046b7fef48e2660c57ed794263155d713de679057f2d0c169bfc6e756cc"
  • Network accessline 1173
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 1180
    name = "scopeguard" version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 1181
    version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49"
  • Network accessline 1182
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 1186
    name = "sdd" version = "3.0.10" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 1187
    version = "3.0.10" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "490dcfcbfef26be6800d11870ff2df8774fa6e86d047e3e8c8a76b25655e41ca"
  • Network accessline 1188
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 1192
    name = "semver" version = "1.0.28" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 1193
    version = "1.0.28" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8a7852d02fc848982e0c167ef163aaff9cd91dc640ba85e263cb1ce46fae51cd"
  • Network accessline 1194
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 1198
    name = "serde" version = "1.0.228" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 1199
    version = "1.0.228" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e"
  • Network accessline 1200
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 1208
    name = "serde_core" version = "1.0.228" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 1209
    version = "1.0.228" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad"
  • Network accessline 1210
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 1217
    name = "serde_derive" version = "1.0.228" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 1218
    version = "1.0.228" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79"
  • Network accessline 1219
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 1228
    name = "serde_json" version = "1.0.149" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 1229
    version = "1.0.149" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "83fc039473c5595ace860d8c4fafa220ff474b3fc6bfdb4293327f1a37e94d86"
  • Network accessline 1230
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 1241
    name = "serde_path_to_error" version = "0.1.20" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 1242
    version = "0.1.20" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "10a9ff822e371bb5403e391ecd83e182e0e77ba7f6fe0160b795797109d1b457"
  • Network accessline 1243
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 1252
    name = "serde_spanned" version = "0.6.9" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 1253
    version = "0.6.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bf41e0cfaf7226dca15e8197172c295a782857fcb97fad1808a166870dee75a3"
  • Network accessline 1254
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 1261
    name = "serde_urlencoded" version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 1262
    version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd"
  • Network accessline 1263
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 1273
    name = "serial_test" version = "3.4.0" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 1274
    version = "3.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "911bd979bf1070a3f3aa7b691a3b3e9968f339ceeec89e08c280a8a22207a32f"
  • Network accessline 1275
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 1288
    name = "serial_test_derive" version = "3.4.0" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 1289
    version = "3.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0a7d91949b85b0d2fb687445e448b40d322b6b3e4af6b44a29b21d9a5f33e6d9"
  • Network accessline 1290
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 1299
    name = "sha1" version = "0.10.7" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 1300
    version = "0.10.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a978451301f4db1d02937a4ab3ccce137717b81826e79b7d49ffe3244a13c3b8"
  • Network accessline 1301
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 1310
    name = "sha2" version = "0.10.9" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 1311
    version = "0.10.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283"
  • Network accessline 1312
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 1321
    name = "shlex" version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 1322
    version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64"
  • Network accessline 1323
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 1327
    name = "signal-hook-registry" version = "1.4.8" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 1328
    version = "1.4.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c4db69cba1110affc0e9f7bcd48bbf87b3f4fc7c61fc9155afd4c469eb3d6c1b"
  • Network accessline 1329
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 1337
    name = "slab" version = "0.4.12" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 1338
    version = "0.4.12" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0c790de23124f9ab44544d7ac05d60440adc586479ce501c1d6d7da3cd8c9cf5"
  • Network accessline 1339
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 1343
    name = "smallvec" version = "1.15.1" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 1344
    version = "1.15.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03"
  • Network accessline 1345
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 1349
    name = "socket2" version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 1350
    version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3a766e1110788c36f4fa1c2b71b387a7815aa65f88ce0229841826633d93723e"
  • Network accessline 1351
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 1359
    name = "stable_deref_trait" version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 1360
    version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6ce2be8dc25455e1f91df71bfa12ad37d7af1092ae736f3a6cd0e37bc7810596"
  • Network accessline 1361
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 1365
    name = "strsim" version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 1366
    version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f"
  • Network accessline 1367
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 1371
    name = "subtle" version = "2.6.1" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 1372
    version = "2.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292"
  • Network accessline 1373
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 1377
    name = "syn" version = "2.0.117" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 1378
    version = "2.0.117" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e665b8803e7b1d2a727f4023456bbbbe74da67099c585258af0ad9c5013b9b99"
  • Network accessline 1379
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 1388
    name = "sync_wrapper" version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 1389
    version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0bf256ce5efdfa370213c1dabab5935a12e49f2c58d15e9eac2870d3b4f27263"
  • Network accessline 1390
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 1397
    name = "synstructure" version = "0.13.2" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 1398
    version = "0.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2"
  • Network accessline 1399
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 1408
    name = "tempfile" version = "3.27.0" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 1409
    version = "3.27.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "32497e9a4c7b38532efcdebeef879707aa9f794296a4f0244f6f69e9bc8574bd"
  • Network accessline 1410
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 1421
    name = "thiserror" version = "2.0.18" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 1422
    version = "2.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4288b5bcbc7920c07a1149a35cf9590a2aa808e0bc1eafaade0b80947865fbc4"
  • Network accessline 1423
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 1430
    name = "thiserror-impl" version = "2.0.18" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 1431
    version = "2.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5"
  • Network accessline 1432
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 1441
    name = "time" version = "0.3.47" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 1442
    version = "0.3.47" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "743bd48c283afc0388f9b8827b976905fb217ad9e647fae3a379a9283c4def2c"
  • Network accessline 1443
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 1456
    name = "time-core" version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 1457
    version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7694e1cfe791f8d31026952abf09c69ca6f6fa4e1a1229e18988f06a04a12dca"
  • Network accessline 1458
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 1462
    name = "time-macros" version = "0.2.27" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 1463
    version = "0.2.27" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2e70e4c5a0e0a8a4823ad65dfe1a6930e4f4d756dcd9dd7939022b5e8c501215"
  • Network accessline 1464
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 1472
    name = "tinystr" version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 1473
    version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c8323304221c2a851516f22236c5722a72eaa19749016521d6dff0824447d96d"
  • Network accessline 1474
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 1482
    name = "tinyvec" version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 1483
    version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3e61e67053d25a4e82c844e8424039d9745781b3fc4f32b8d55ed50f5f667ef3"
  • Network accessline 1484
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 1491
    name = "tinyvec_macros" version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 1492
    version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20"
  • Network accessline 1493
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 1497
    name = "tokio" version = "1.51.0" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 1498
    version = "1.51.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2bd1c4c0fc4a7ab90fc15ef6daaa3ec3b893f004f915f2392557ed23237820cd"
  • Network accessline 1499
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 1514
    name = "tokio-macros" version = "2.7.0" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 1515
    version = "2.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "385a6cb71ab9ab790c5fe8d67f1645e6c450a7ce006a33de03daa956cf70a496"
  • Network accessline 1516
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 1525
    name = "tokio-rustls" version = "0.26.4" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 1526
    version = "0.26.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1729aa945f29d91ba541258c8df89027d5792d85a8841fb65e8bf0f4ede4ef61"
  • Network accessline 1527
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 1535
    name = "tokio-tungstenite" version = "0.26.2" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 1536
    version = "0.26.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7a9daff607c6d2bf6c16fd681ccb7eecc83e4e2cdc1ca067ffaadfca5de7f084"
  • Network accessline 1537
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 1551
    name = "tokio-tungstenite" version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 1552
    version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d25a406cddcc431a75d3d9afc6a7c0f7428d4891dd973e4d54c56b46127bf857"
  • Network accessline 1553
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 1563
    name = "toml" version = "0.8.23" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 1564
    version = "0.8.23" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dc1beb996b9d83529a9e75c17a1686767d148d70663143c7854d8b4a09ced362"
  • Network accessline 1565
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 1575
    name = "toml_datetime" version = "0.6.11" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 1576
    version = "0.6.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "22cddaf88f4fbc13c51aebbf5f8eceb5c7c5a9da2ac40a13519eb5b0a0e8f11c"
  • Network accessline 1577
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 1584
    name = "toml_edit" version = "0.22.27" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 1585
    version = "0.22.27" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "41fe8c660ae4257887cf66394862d21dbca4a6ddd26f04a3560410406a2f819a"
  • Network accessline 1586
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 1598
    name = "toml_write" version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 1599
    version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5d99f8c9a7727884afe522e9bd5edbfc91a3312b36a77b5fb8926e4c31a41801"
  • Network accessline 1600
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 1604
    name = "tower" version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 1605
    version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ebe5ef63511595f1344e2d5cfa636d973292adc0eec1f0ad45fae9f0851ab1d4"
  • Network accessline 1606
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 1620
    name = "tower-http" version = "0.6.8" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 1621
    version = "0.6.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d4e6559d53cc268e5031cd8429d05415bc4cb4aefc4aa5d6cc35fbf5b924a1f8"
  • Network accessline 1622
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 1638
    name = "tower-layer" version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 1639
    version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e"
  • Network accessline 1640
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 1644
    name = "tower-service" version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 1645
    version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3"
  • Network accessline 1646
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 1650
    name = "tracing" version = "0.1.44" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 1651
    version = "0.1.44" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "63e71662fa4b2a2c3a26f570f037eb95bb1f85397f3cd8076caed2f026a6d100"
  • Network accessline 1652
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 1661
    name = "tracing-core" version = "0.1.36" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 1662
    version = "0.1.36" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "db97caf9d906fbde555dd62fa95ddba9eecfd14cb388e4f491a66d74cd5fb79a"
  • Network accessline 1663
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 1670
    name = "try-lock" version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 1671
    version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b"
  • Network accessline 1672
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 1676
    name = "tungstenite" version = "0.26.2" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 1677
    version = "0.26.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4793cb5e56680ecbb1d843515b23b6de9a75eb04b66643e256a396d43be33c13"
  • Network accessline 1678
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 1695
    name = "tungstenite" version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 1696
    version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8628dcc84e5a09eb3d8423d6cb682965dea9133204e8fb3efee74c2a0c259442"
  • Network accessline 1697
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 1712
    name = "typenum" version = "1.20.1" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 1713
    version = "1.20.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b6f5e870be6c3b371b77fe0ee0bafb859fa4964b4404c27de1d380043c4dda20"
  • Network accessline 1714
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 1718
    name = "unicode-ident" version = "1.0.24" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 1719
    version = "1.0.24" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75"
  • Network accessline 1720
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 1724
    name = "unicode-xid" version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 1725
    version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853"
  • Network accessline 1726
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 1730
    name = "untrusted" version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 1731
    version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1"
  • Network accessline 1732
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 1736
    name = "url" version = "2.5.8" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 1737
    version = "2.5.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ff67a8a4397373c3ef660812acab3268222035010ab8680ec4215f38ba3d0eed"
  • Network accessline 1738
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 1748
    name = "utf-8" version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 1749
    version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9"
  • Network accessline 1750
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 1754
    name = "utf8_iter" version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 1755
    version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be"
  • Network accessline 1756
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 1760
    name = "utf8parse" version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 1761
    version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821"
  • Network accessline 1762
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 1766
    name = "uuid" version = "1.23.0" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 1767
    version = "1.23.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5ac8b6f42ead25368cf5b098aeb3dc8a1a2c05a3eee8a9a1a68c640edbfc79d9"
  • Network accessline 1768
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 1777
    name = "version_check" version = "0.9.5" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 1778
    version = "0.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a"
  • Network accessline 1779
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 1783
    name = "want" version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 1784
    version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e"
  • Network accessline 1785
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 1792
    name = "wasi" version = "0.11.1+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 1793
    version = "0.11.1+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b"
  • Network accessline 1794
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 1798
    name = "wasip2" version = "1.0.2+wasi-0.2.9" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 1799
    version = "1.0.2+wasi-0.2.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9517f9239f02c069db75e65f174b3da828fe5f5b945c4dd26bd25d89c03ebcf5"
  • Network accessline 1800
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 1807
    name = "wasip3" version = "0.4.0+wasi-0.3.0-rc-2026-01-06" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 1808
    version = "0.4.0+wasi-0.3.0-rc-2026-01-06" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5428f8bf88ea5ddc08faddef2ac4a67e390b88186c703ce6dbd955e1c145aca5"
  • Network accessline 1809
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 1816
    name = "wasm-bindgen" version = "0.2.117" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 1817
    version = "0.2.117" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0551fc1bb415591e3372d0bc4780db7e587d84e2a7e79da121051c5c4b89d0b0"
  • Network accessline 1818
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 1829
    name = "wasm-bindgen-futures" version = "0.4.67" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 1830
    version = "0.4.67" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "03623de6905b7206edd0a75f69f747f134b7f0a2323392d664448bf2d3c5d87e"
  • Network accessline 1831
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 1839
    name = "wasm-bindgen-macro" version = "0.2.117" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 1840
    version = "0.2.117" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7fbdf9a35adf44786aecd5ff89b4563a90325f9da0923236f6104e603c7e86be"
  • Network accessline 1841
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 1849
    name = "wasm-bindgen-macro-support" version = "0.2.117" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 1850
    version = "0.2.117" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dca9693ef2bab6d4e6707234500350d8dad079eb508dca05530c85dc3a529ff2"
  • Network accessline 1851
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 1862
    name = "wasm-bindgen-shared" version = "0.2.117" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 1863
    version = "0.2.117" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "39129a682a6d2d841b6c429d0c51e5cb0ed1a03829d8b3d1e69a011e62cb3d3b"
  • Network accessline 1864
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 1871
    name = "wasm-encoder" version = "0.244.0" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 1872
    version = "0.244.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "990065f2fe63003fe337b932cfb5e3b80e0b4d0f5ff650e6985b1048f62c8319"
  • Network accessline 1873
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 1881
    name = "wasm-metadata" version = "0.244.0" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 1882
    version = "0.244.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bb0e353e6a2fbdc176932bbaab493762eb1255a7900fe0fea1a2f96c296cc909"
  • Network accessline 1883
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 1893
    name = "wasmparser" version = "0.244.0" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 1894
    version = "0.244.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "47b807c72e1bac69382b3a6fb3dbe8ea4c0ed87ff5629b8685ae6b9a611028fe"
  • Network accessline 1895
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 1905
    name = "web-sys" version = "0.3.94" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 1906
    version = "0.3.94" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cd70027e39b12f0849461e08ffc50b9cd7688d942c1c8e3c7b22273236b4dd0a"
  • Network accessline 1907
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 1915
    name = "web-time" version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 1916
    version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5a6580f308b1fad9207618087a65c04e7a10bc77e02c8e84e9b00dd4b12fa0bb"
  • Network accessline 1917
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 1925
    name = "webpki-roots" version = "0.26.11" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 1926
    version = "0.26.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "521bc38abb08001b01866da9f51eb7c5d647a19260e00054a8c7fd5f9e57f7a9"
  • Network accessline 1927
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 1934
    name = "webpki-roots" version = "1.0.6" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 1935
    version = "1.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "22cfaf3c063993ff62e73cb4311efde4db1efb31ab78a3e5c457939ad5cc0bed"
  • Network accessline 1936
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 1943
    name = "winapi" version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 1944
    version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419"
  • Network accessline 1945
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 1953
    name = "winapi-i686-pc-windows-gnu" version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 1954
    version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
  • Network accessline 1955
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 1959
    name = "winapi-x86_64-pc-windows-gnu" version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 1960
    version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
  • Network accessline 1961
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 1965
    name = "windows-link" version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 1966
    version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5"
  • Network accessline 1967
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 1971
    name = "windows-sys" version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 1972
    version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d"
  • Network accessline 1973
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 1980
    name = "windows-sys" version = "0.60.2" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 1981
    version = "0.60.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb"
  • Network accessline 1982
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 1989
    name = "windows-sys" version = "0.61.2" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 1990
    version = "0.61.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc"
  • Network accessline 1991
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 1998
    name = "windows-targets" version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 1999
    version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973"
  • Network accessline 2000
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 2014
    name = "windows-targets" version = "0.53.5" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 2015
    version = "0.53.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4945f9f551b88e0d65f3db0bc25c33b8acea4d9e41163edf90dcd0b19f9069f3"
  • Network accessline 2016
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 2031
    name = "windows_aarch64_gnullvm" version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 2032
    version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3"
  • Network accessline 2033
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 2037
    name = "windows_aarch64_gnullvm" version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 2038
    version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a9d8416fa8b42f5c947f8482c43e7d89e73a173cead56d044f6a56104a6d1b53"
  • Network accessline 2039
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 2043
    name = "windows_aarch64_msvc" version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 2044
    version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469"
  • Network accessline 2045
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 2049
    name = "windows_aarch64_msvc" version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 2050
    version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b9d782e804c2f632e395708e99a94275910eb9100b2114651e04744e9b125006"
  • Network accessline 2051
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 2055
    name = "windows_i686_gnu" version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 2056
    version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b"
  • Network accessline 2057
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 2061
    name = "windows_i686_gnu" version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 2062
    version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "960e6da069d81e09becb0ca57a65220ddff016ff2d6af6a223cf372a506593a3"
  • Network accessline 2063
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 2067
    name = "windows_i686_gnullvm" version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 2068
    version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66"
  • Network accessline 2069
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 2073
    name = "windows_i686_gnullvm" version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 2074
    version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fa7359d10048f68ab8b09fa71c3daccfb0e9b559aed648a8f95469c27057180c"
  • Network accessline 2075
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 2079
    name = "windows_i686_msvc" version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 2080
    version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66"
  • Network accessline 2081
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 2085
    name = "windows_i686_msvc" version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 2086
    version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1e7ac75179f18232fe9c285163565a57ef8d3c89254a30685b57d83a38d326c2"
  • Network accessline 2087
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 2091
    name = "windows_x86_64_gnu" version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 2092
    version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78"
  • Network accessline 2093
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 2097
    name = "windows_x86_64_gnu" version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 2098
    version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9c3842cdd74a865a8066ab39c8a7a473c0778a3f29370b5fd6b4b9aa7df4a499"
  • Network accessline 2099
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 2103
    name = "windows_x86_64_gnullvm" version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 2104
    version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d"
  • Network accessline 2105
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 2109
    name = "windows_x86_64_gnullvm" version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 2110
    version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0ffa179e2d07eee8ad8f57493436566c7cc30ac536a3379fdf008f47f6bb7ae1"
  • Network accessline 2111
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 2115
    name = "windows_x86_64_msvc" version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 2116
    version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec"
  • Network accessline 2117
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 2121
    name = "windows_x86_64_msvc" version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 2122
    version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d6bbff5f0aada427a1e5a6da5f1f98158182f26556f345ac9e04d36d0ebed650"
  • Network accessline 2123
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 2127
    name = "winnow" version = "0.7.15" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 2128
    version = "0.7.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "df79d97927682d2fd8adb29682d1140b343be4ac0f08fd68b7765d9c059d3945"
  • Network accessline 2129
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 2136
    name = "wit-bindgen" version = "0.51.0" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 2137
    version = "0.51.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d7249219f66ced02969388cf2bb044a09756a083d0fab1e566056b04d9fbcaa5"
  • Network accessline 2138
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 2145
    name = "wit-bindgen-core" version = "0.51.0" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 2146
    version = "0.51.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ea61de684c3ea68cb082b7a88508a8b27fcc8b797d738bfc99a82facf1d752dc"
  • Network accessline 2147
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 2156
    name = "wit-bindgen-rust" version = "0.51.0" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 2157
    version = "0.51.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b7c566e0f4b284dd6561c786d9cb0142da491f46a9fbed79ea69cdad5db17f21"
  • Network accessline 2158
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 2172
    name = "wit-bindgen-rust-macro" version = "0.51.0" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 2173
    version = "0.51.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0c0f9bfd77e6a48eccf51359e3ae77140a7f50b1e2ebfe62422d8afdaffab17a"
  • Network accessline 2174
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 2187
    name = "wit-component" version = "0.244.0" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 2188
    version = "0.244.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9d66ea20e9553b30172b5e831994e35fbde2d165325bec84fc43dbf6f4eb9cb2"
  • Network accessline 2189
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 2206
    name = "wit-parser" version = "0.244.0" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 2207
    version = "0.244.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ecc8ac4bc1dc3381b7f59c34f00b67e18f910c2c0f50015669dde7def656a736"
  • Network accessline 2208
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 2224
    name = "writeable" version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 2225
    version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1ffae5123b2d3fc086436f8834ae3ab053a283cfac8fe0a0b8eaae044768a4c4"
  • Network accessline 2226
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 2230
    name = "yoke" version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 2231
    version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "abe8c5fda708d9ca3df187cae8bfb9ceda00dd96231bed36e445a1a48e66f9ca"
  • Network accessline 2232
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 2241
    name = "yoke-derive" version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 2242
    version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "de844c262c8848816172cef550288e7dc6c7b7814b4ee56b3e1553f275f1858e"
  • Network accessline 2243
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 2253
    name = "zerocopy" version = "0.8.48" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 2254
    version = "0.8.48" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "eed437bf9d6692032087e337407a86f04cd8d6a16a37199ed57949d415bd68e9"
  • Network accessline 2255
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 2262
    name = "zerocopy-derive" version = "0.8.48" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 2263
    version = "0.8.48" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "70e3cd084b1788766f53af483dd21f93881ff30d7320490ec3ef7526d203bad4"
  • Network accessline 2264
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 2273
    name = "zerofrom" version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 2274
    version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "69faa1f2a1ea75661980b013019ed6687ed0e83d069bc1114e2cc74c6c04c4df"
  • Network accessline 2275
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 2282
    name = "zerofrom-derive" version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 2283
    version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "11532158c46691caf0f2593ea8358fed6bbf68a0315e80aae9bd41fbade684a1"
  • Network accessline 2284
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 2294
    name = "zeroize" version = "1.8.2" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 2295
    version = "1.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b97154e67e32c85465826e8bcc1c59429aaaf107c1e4a9e53c8d8ccd5eff88d0"
  • Network accessline 2296
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 2300
    name = "zerotrie" version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 2301
    version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0f9152d31db0792fa83f70fb2f83148effb5c1f5b8c7686c3459e361d9bc20bf"
  • Network accessline 2302
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 2311
    name = "zerovec" version = "0.11.6" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 2312
    version = "0.11.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "90f911cbc359ab6af17377d242225f4d75119aec87ea711a880987b18cd7b239"
  • Network accessline 2313
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 2322
    name = "zerovec-derive" version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 2323
    version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "625dc425cab0dca6dc3c3319506e6593dcb08a9f387ea3b284dbd52a92c40555"
  • Network accessline 2324
    source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 2333
    name = "zmij" version = "1.0.21" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 2334
    version = "1.0.21" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b8848ee67ecc8aedbaf3e4122217aff892639231befc6a1b58d29fff4c2cabaa"
  • Network accessline 2335
    source = "registry+https://github.com/rust-lang/crates.io-index"

Cargo.toml

  • Network accessline 5
    description = "Event-to-channel notification router for Discord — bypass gateway sessions, just events in, messages out" license = "MIT" repository = "https://github.com/Yeachan-Heo/clawhip"
  • Network accessline 6
    license = "MIT" repository = "https://github.com/Yeachan-Heo/clawhip" keywords = ["discord", "notifications", "tmux", "github", "devops"]
  • Network accessline 7
    repository = "https://github.com/Yeachan-Heo/clawhip"

README.md

  • Network accessline 13
    <p align="center">   <a href="https://crates.io/crates/clawhip"><img src="https://img.shields.io/crates/v/clawhip.svg" alt="crates.io" /></a>
  • Network accessline 14
    <a href="https://crates.io/crates/clawhip"><img src="https://img.shields.io/crates/v/clawhip.svg" alt="crates.io" /></a>
  • Network accessline 15
    <a href="https://github.com/Yeachan-Heo/clawhip/stargazers"><img src="https://img.shields.io/github/stars/Yeachan-Heo/clawhip?style=social" alt="GitHub stars" /></a>
  • Network accessline 18
    > **⭐ Optional support:** the interactive repo-local install paths (`./install.sh` and `clawhip install` from a clone) can offer to star this repo after a successful install when `gh` is installed and authenticated. Skip it with `--skip-sta
  • Network accessline 19
    > **Community:** Join the clawhip Discord at https://discord.gg/wSyUQYfhAw.
  • Network accessline 127
    Just tag @openclaw and say: install this https://github.com/Yeachan-Heo/clawhip
  • Network accessline 260
    Default daemon endpoint: - `http://127.0.0.1:25294`
  • Network accessline 261
    - `http://127.0.0.1:25294`
  • Network accessline 284
    https://github.com/Yeachan-Heo/clawhip
  • Network accessline 293
    1. Create a new bot at [Discord Developer Portal](https://discord.com/developers/applications) (e.g. "CCNotifier")
  • Network accessline 321
    clawhip setup --webhook "https://discord.com/api/webhooks/..."
  • Network accessline 327
    clawhip setup    --bot-token "discord-bot-token"    --default-channel "1234567890"    --default-format alert    --daemon-base-url "http://127.0.0.1:25294"
  • Network accessline 329
    --default-channel "1234567890" \   --default-format alert \   --daemon-base-url "http://127.0.0.1:25294"
  • Network accessline 331
    --daemon-base-url "http://127.0.0.1:25294"
  • Network accessline 365
    event = "tmux.keyword" sink = "discord" webhook = "https://discord.com/api/webhooks/..."
  • Network accessline 367
    webhook = "https://discord.com/api/webhooks/..."
  • Network accessline 374
    1. In Slack, open the app settings for your workspace and enable **Incoming Webhooks** 2. Add a new webhook to the channel you want clawhip to notify 3. Copy the generated `https://hooks.slack.com/services/...` URL into a route
  • Network accessline 376
    3. Copy the generated `https://hooks.slack.com/services/...` URL into a route
  • Network accessline 382
    event = "git.commit" filter = { repo = "my-app" } slack_webhook = "https://hooks.slack.com/services/T.../B.../xxx"
  • Network accessline 383
    filter = { repo = "my-app" } slack_webhook = "https://hooks.slack.com/services/T.../B.../xxx" format = "compact"
  • Network accessline 384
    slack_webhook = "https://hooks.slack.com/services/T.../B.../xxx"
  • Network accessline 388
    event = "tmux.keyword" sink = "slack" webhook = "https://hooks.slack.com/services/T.../B.../yyy"
  • Network accessline 389
    sink = "slack" webhook = "https://hooks.slack.com/services/T.../B.../yyy" format = "alert"
  • Network accessline 390
    webhook = "https://hooks.slack.com/services/T.../B.../yyy"
  • Access to secretsline 403
    [Credential-related source omitted]
  • Network accessline 407
    [providers.http] endpoint = "http://127.0.0.1:8644/webhooks/clawhip-controller"
  • Network accessline 408
    endpoint = "http://127.0.0.1:8644/webhooks/clawhip-controller"
  • Network accessline 911
    Credentials use `CLAWHIP_GITHUB_TOKEN`, then `monitors.github_token`, then `gh auth token`. GitHub's [notifications REST documentation](https://docs.github.com/en/rest/activity/notifications)
  • Network accessline 912
    [Credential-related source omitted]
  • Access to secretsline 912
    [Credential-related source omitted]
  • Network accessline 1202
    Published at [crates.io/crates/clawhip](https://crates.io/crates/clawhip). Requires Rust toolchain.
  • Dangerous shell operationline 1207
    curl --proto '=https' --tlsv1.2 -LsSf https://github.com/Yeachan-Heo/clawhip/releases/latest/download/clawhip-installer.sh | sh
  • Network accessline 1207
    curl --proto '=https' --tlsv1.2 -LsSf https://github.com/Yeachan-Heo/clawhip/releases/latest/download/clawhip-installer.sh | sh
  • Network accessline 1264
    curl -s localhost:25294/health | jq .build
  • Network accessline 1296
    curl -s localhost:25294/health | jq .deployment
  • Network accessline 1408
    clawhip includes a [`geobench`](https://github.com/NomaDamas/geobench) product spec for measuring LLM hit rate, MRR, share of voice, and citations for event-to-channel AI-agent operations queries.
  • Network accessline 1421
    - `https://www.githubstatus.com/api/v2/summary.json`
  • Network accessline 1422
    - `https://www.githubstatus.com/api/v2/status.json`
  • Network accessline 1423
    - `https://www.githubstatus.com/api/v2/components.json`
  • Network accessline 1424
    - `https://www.githubstatus.com/api/v2/incidents.json`
  • Network accessline 1430
    enabled = true # Public Statuspage API; no token. Override only for tests/mirrors. api_base = "https://www.githubstatus.com/api/v2"
  • Network accessline 1431
    # Public Statuspage API; no token. Override only for tests/mirrors. api_base = "https://www.githubstatus.com/api/v2" components = ["Actions"]
  • Network accessline 1432
    api_base = "https://www.githubstatus.com/api/v2"

SKILL.md

  • Network accessline 28
    @openclaw install https://github.com/Yeachan-Heo/clawhip
  • Network accessline 46
    http://127.0.0.1:25294
  • Network accessline 89
    Setup: 1. Go to [Discord Developer Portal](https://discord.com/developers/applications)
  • Network accessline 90
    1. Go to [Discord Developer Portal](https://discord.com/developers/applications)

docs/geobench.md

  • Network accessline 3
    clawhip ships a [`geobench`](https://github.com/NomaDamas/geobench) product spec to measure whether LLM answer surfaces mention and cite the router when users ask about event-to-channel automation for AI-agent operations.
  • Network accessline 7
    - Product spec: [`../geobench/clawhip.yaml`](../geobench/clawhip.yaml) - Repository: <https://github.com/Yeachan-Heo/clawhip>
  • Network accessline 8
    - Repository: <https://github.com/Yeachan-Heo/clawhip>
  • Network accessline 9
    - Project page: <https://blog.gaebal-gajae.dev/projects/clawhip.html>

docs/live-verification.md

  • Network accessline 16
    export CLAWHIP_REPO=Yeachan-Heo/clawhip export CLAWHIP_CHANNEL=TEST_CHANNEL_ID export CLAWHIP_DAEMON_URL=http://127.0.0.1:25294
  • Network accessline 17
    [Credential-related source omitted]
  • Network accessline 18
    export CLAWHIP_DAEMON_URL=http://127.0.0.1:25294
  • Access to secretsline 19
    [Credential-related source omitted]
  • Network accessline 149
    - local daemon health/status returned ok on `http://127.0.0.1:25294`

geobench/clawhip.yaml

  • Network accessline 23
    - "automation engineers building notification loops" discovery_sources:   - "https://github.com/Yeachan-Heo/clawhip"
  • Network accessline 24
    discovery_sources:   - "https://github.com/Yeachan-Heo/clawhip"   - "https://blog.gaebal-gajae.dev/projects/clawhip.html"
  • Network accessline 25
    - "https://github.com/Yeachan-Heo/clawhip"
  • Network accessline 26
    - "https://blog.gaebal-gajae.dev/projects/clawhip.html"

install.sh

  • Executable scriptline 1
    #!/usr/bin/env bash
  • Network accessline 5
    INVOCATION_CWD="$(pwd -P)" GITHUB_REPO="Yeachan-Heo/clawhip" INSTALLER_URL="${CLAWHIP_INSTALLER_URL:-https://github.com/${GITHUB_REPO}/releases/latest/download/clawhip-installer.sh}"
  • Network accessline 6
    GITHUB_REPO="Yeachan-Heo/clawhip" INSTALLER_URL="${CLAWHIP_INSTALLER_URL:-https://github.com/${GITHUB_REPO}/releases/latest/download/clawhip-installer.sh}" CARGO_HOME="${CARGO_HOME:-$HOME/.cargo}"
  • Network accessline 7
    INSTALLER_URL="${CLAWHIP_INSTALLER_URL:-https://github.com/${GITHUB_REPO}/releases/latest/download/clawhip-installer.sh}"
  • Network accessline 161
    install_prebuilt_binary() {   if ! command -v curl >/dev/null 2>&1; then
  • Network accessline 162
    if ! command -v curl >/dev/null 2>&1; then
  • Network accessline 163
    log "curl is not installed; skipping prebuilt binary download"
  • Network accessline 169
    log "attempting prebuilt binary install from ${INSTALLER_URL}"
  • Network accessline 174
    if ! curl --proto '=https' --tlsv1.2 -LsSf "$INSTALLER_URL" -o "$installer"; then
  • Dangerous shell operationline 176
    rm -f "$installer"
  • Dangerous shell operationline 181
    rm -f "$installer"
  • Dangerous shell operationline 186
    rm -f "$installer"
  • Network accessline 194
    [clawhip] A prebuilt binary was not available and Cargo is not installed. [clawhip] Install Rust with rustup, then rerun this installer: [clawhip]   curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
  • Network accessline 195
    [clawhip] Install Rust with rustup, then rerun this installer: [clawhip]   curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh [clawhip]   source "$HOME/.cargo/env"
  • Dangerous shell operationline 196
    [clawhip]   curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
  • Network accessline 196
    [clawhip]   curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
  • Dangerous shell operationline 234
    rm -rf "$target_dir"
  • Network accessline 274
    log "webhook config scaffolded at $config_path"   else     log "recommended quick start: clawhip setup --webhook 'https://discord.com/api/webhooks/...'"
  • Network accessline 275
    else     log "recommended quick start: clawhip setup --webhook 'https://discord.com/api/webhooks/...'"     log "bot-token mode is still supported via ~/.clawhip/config.toml"
  • Network accessline 276
    log "recommended quick start: clawhip setup --webhook 'https://discord.com/api/webhooks/...'"
  • Dangerous shell operationline 289
    sudo install -m 755 "$binary_path" /usr/local/bin/clawhip
  • Dangerous shell operationline 314
    sudo cp deploy/clawhip.service /etc/systemd/system/clawhip.service
  • Dangerous shell operationline 315
    sudo systemctl daemon-reload
  • Dangerous shell operationline 316
    sudo systemctl enable --now clawhip

integrations/git/install-hooks.sh

  • Executable scriptline 1
    #!/usr/bin/env bash

integrations/git/post-checkout.sh

  • Executable scriptline 1
    #!/usr/bin/env bash

integrations/git/post-commit.sh

  • Executable scriptline 1
    #!/usr/bin/env bash

integrations/tmux/notify-keyword.sh

  • Executable scriptline 1
    #!/usr/bin/env bash

integrations/tmux/scan-keywords.sh

  • Executable scriptline 1
    #!/usr/bin/env bash

integrations/tmux/stale-check.sh

  • Executable scriptline 1
    #!/usr/bin/env bash

plugins/claude-code/bridge.sh

  • Executable scriptline 1
    #!/usr/bin/env bash

plugins/codex/bridge.sh

  • Executable scriptline 1
    #!/usr/bin/env bash

scripts/internal-pr-format-gate.sh

  • Executable scriptline 1
    #!/usr/bin/env bash

scripts/live-verify-default-presets.sh

  • Executable scriptline 1
    #!/usr/bin/env bash
  • Network accessline 18
    CLAWHIP_CHANNEL        Discord test channel id   CLAWHIP_BOT_TOKEN      Discord bot token   CLAWHIP_DAEMON_URL     e.g. http://127.0.0.1:25294
  • Network accessline 19
    CLAWHIP_BOT_TOKEN      Discord bot token   CLAWHIP_DAEMON_URL     e.g. http://127.0.0.1:25294 Optional:
  • Network accessline 20
    CLAWHIP_DAEMON_URL     e.g. http://127.0.0.1:25294
  • Access to secretsline 32
    [Credential-related source omitted]
  • Network accessline 36
    fetch_messages() {   curl -fsS \
  • Network accessline 37
    [Credential-related source omitted]
  • Access to secretsline 37
    [Credential-related source omitted]
  • Network accessline 38
    [Credential-related source omitted]
  • Access to secretsline 38
    [Credential-related source omitted]
  • Network accessline 39
    -H 'Content-Type: application/json' \     "https://discord.com/api/v10/channels/$CLAWHIP_CHANNEL/messages?limit=20" }
  • Network accessline 40
    "https://discord.com/api/v10/channels/$CLAWHIP_CHANNEL/messages?limit=20"

src/cli.rs

  • Network accessline 1736
    "setup",             "--webhook",             "https://discord.com/api/webhooks/123/abc",
  • Network accessline 1737
    "--webhook",             "https://discord.com/api/webhooks/123/abc",         ]);
  • Network accessline 1738
    "https://discord.com/api/webhooks/123/abc",
  • Network accessline 1745
    assert_eq!(             args.webhook.as_deref(),             Some("https://discord.com/api/webhooks/123/abc")
  • Network accessline 1746
    args.webhook.as_deref(),             Some("https://discord.com/api/webhooks/123/abc")         );
  • Network accessline 1747
    Some("https://discord.com/api/webhooks/123/abc")
  • Network accessline 1756
    "setup",             "--webhook",             "https://discord.com/api/webhooks/123/abc",
  • Network accessline 1757
    "--webhook",             "https://discord.com/api/webhooks/123/abc",             "--bot-token",
  • Network accessline 1758
    "https://discord.com/api/webhooks/123/abc",
  • Network accessline 1764
    "alert",             "--daemon-base-url",             "http://127.0.0.1:31337",
  • Network accessline 1765
    "--daemon-base-url",             "http://127.0.0.1:31337",         ]);
  • Network accessline 1766
    "http://127.0.0.1:31337",
  • Network accessline 1773
    assert_eq!(             args.webhook.as_deref(),             Some("https://discord.com/api/webhooks/123/abc")
  • Network accessline 1774
    args.webhook.as_deref(),             Some("https://discord.com/api/webhooks/123/abc")         );
  • Network accessline 1775
    Some("https://discord.com/api/webhooks/123/abc")
  • Network accessline 1780
    assert_eq!(             args.daemon_base_url.as_deref(),             Some("http://127.0.0.1:31337")
  • Network accessline 1781
    args.daemon_base_url.as_deref(),             Some("http://127.0.0.1:31337")         );
  • Network accessline 1782
    Some("http://127.0.0.1:31337")

src/client.rs

  • Network accessline 512
    let remote = DaemonClient {             http: reqwest::Client::new(),             base_url: "http://example.com".into(),
  • Network accessline 513
    http: reqwest::Client::new(),             base_url: "http://example.com".into(),         };
  • Network accessline 514
    base_url: "http://example.com".into(),
  • Network accessline 516
    let ipv4 = DaemonClient {             http: reqwest::Client::new(),             base_url: "http://127.0.0.1:8080".into(),
  • Network accessline 517
    http: reqwest::Client::new(),             base_url: "http://127.0.0.1:8080".into(),         };
  • Network accessline 518
    base_url: "http://127.0.0.1:8080".into(),
  • Network accessline 520
    let ipv6 = DaemonClient {             http: reqwest::Client::new(),             base_url: "http://[::1]:8080".into(),
  • Network accessline 521
    http: reqwest::Client::new(),             base_url: "http://[::1]:8080".into(),         };
  • Network accessline 522
    base_url: "http://[::1]:8080".into(),
  • Network accessline 529
    #[test]     fn lane_detail_path_segments_escape_unsafe_session_text() {         let mut url = reqwest::Url::parse("http://127.0.0.1:8080").unwrap();
  • Network accessline 530
    fn lane_detail_path_segments_escape_unsafe_session_text() {         let mut url = reqwest::Url::parse("http://127.0.0.1:8080").unwrap();         url.path_segments_mut()
  • Network accessline 531
    let mut url = reqwest::Url::parse("http://127.0.0.1:8080").unwrap();
  • Network accessline 555
    let (mut stream, _) = redirector.accept().await.unwrap();             let response = format!(                 "HTTP/1.1 307 Temporary Redirect\r\nLocation: http://{target_address}/private\r\nContent-Length: 0\r\nConnection: close\r\n\r\n"
  • Network accessline 556
    let response = format!(                 "HTTP/1.1 307 Temporary Redirect\r\nLocation: http://{target_address}/private\r\nContent-Length: 0\r\nConnection: close\r\n\r\n"             );
  • Network accessline 557
    "HTTP/1.1 307 Temporary Redirect\r\nLocation: http://{target_address}/private\r\nContent-Length: 0\r\nConnection: close\r\n\r\n"
  • Network accessline 564
    .build()                 .unwrap(),             base_url: format!("http://{redirector_address}"),
  • Network accessline 565
    .unwrap(),             base_url: format!("http://{redirector_address}"),         };
  • Network accessline 566
    base_url: format!("http://{redirector_address}"),
  • Network accessline 581
    let client = DaemonClient {             http: reqwest::Client::new(),             base_url: "http://example.com".into(),
  • Network accessline 582
    http: reqwest::Client::new(),             base_url: "http://example.com".into(),         };
  • Network accessline 583
    base_url: "http://example.com".into(),
  • Network accessline 597
    assert!(request.starts_with("POST /api/subscriptions/safe/start HTTP/1.1"));             assert!(request.contains("x-clawhip-local-control: 1\r\n"));             assert!(request.contains("origin: http://127.0.0.1:"));
  • Network accessline 598
    assert!(request.contains("x-clawhip-local-control: 1\r\n"));             assert!(request.contains("origin: http://127.0.0.1:"));             stream
  • Network accessline 599
    assert!(request.contains("origin: http://127.0.0.1:"));
  • Network accessline 607
    let client = DaemonClient {             http: reqwest::Client::new(),             base_url: format!("http://{address}"),
  • Network accessline 608
    http: reqwest::Client::new(),             base_url: format!("http://{address}"),         };
  • Network accessline 609
    base_url: format!("http://{address}"),

src/config.rs

  • Network accessline 770
    /// /// Uses machine-readable endpoints under `api_base` (default /// `https://www.githubstatus.com/api/v2`). No authentication is required or stored.
  • Network accessline 771
    /// Uses machine-readable endpoints under `api_base` (default /// `https://www.githubstatus.com/api/v2`). No authentication is required or stored. #[derive(Debug, Clone, Serialize, Deserialize)]
  • Network accessline 772
    /// `https://www.githubstatus.com/api/v2`). No authentication is required or stored.
  • Network accessline 1024
    } fn default_base_url() -> String {     format!("http://127.0.0.1:{}", default_port())
  • Network accessline 1025
    fn default_base_url() -> String {     format!("http://127.0.0.1:{}", default_port()) }
  • Network accessline 1026
    format!("http://127.0.0.1:{}", default_port())
  • Network accessline 1030
    } fn default_github_api_base() -> String {     "https://api.github.com".to_string()
  • Network accessline 1031
    fn default_github_api_base() -> String {     "https://api.github.com".to_string() }
  • Network accessline 1032
    "https://api.github.com".to_string()
  • Network accessline 1033
    } fn default_github_status_api_base() -> String {     "https://www.githubstatus.com/api/v2".to_string()
  • Network accessline 1034
    fn default_github_status_api_base() -> String {     "https://www.githubstatus.com/api/v2".to_string() }
  • Network accessline 1035
    "https://www.githubstatus.com/api/v2".to_string()
  • Access to secretsline 2516
    [Credential-related source omitted]
  • Network accessline 2609
    );         println!(             r#"Webhook example: [[routes]] event = "tmux.keyword" webhook = "https://discord.com/api/webhooks/...""#
  • Network accessline 2610
    println!(             r#"Webhook example: [[routes]] event = "tmux.keyword" webhook = "https://discord.com/api/webhooks/...""#         );
  • Network accessline 2611
    r#"Webhook example: [[routes]] event = "tmux.keyword" webhook = "https://discord.com/api/webhooks/...""#
  • Network accessline 4748
    routes: vec![RouteRule {                 event: "tmux.keyword".into(),                 webhook: Some("https://discord.com/api/webhooks/123/abc".into()),
  • Network accessline 4749
    event: "tmux.keyword".into(),                 webhook: Some("https://discord.com/api/webhooks/123/abc".into()),                 ..RouteRule::default()
  • Network accessline 4750
    webhook: Some("https://discord.com/api/webhooks/123/abc".into()),
  • Network accessline 4767
    routes: vec![RouteRule {                 event: "*".into(),                 webhook: Some("https://discord.com/api/webhooks/123/abc".into()),
  • Network accessline 4768
    event: "*".into(),                 webhook: Some("https://discord.com/api/webhooks/123/abc".into()),                 ..RouteRule::default()
  • Network accessline 4769
    webhook: Some("https://discord.com/api/webhooks/123/abc".into()),
  • Network accessline 4781
    routes: vec![RouteRule {                 event: "tmux.keyword".into(),                 slack_webhook: Some("https://hooks.slack.com/services/T/B/abc".into()),
  • Network accessline 4782
    event: "tmux.keyword".into(),                 slack_webhook: Some("https://hooks.slack.com/services/T/B/abc".into()),                 ..RouteRule::default()
  • Network accessline 4783
    slack_webhook: Some("https://hooks.slack.com/services/T/B/abc".into()),
  • Network accessline 4932
    providers: ProvidersConfig {                 http: HttpConfig {                     endpoint: Some("http://127.0.0.1:8644/webhooks/clawhip-controller".into()),
  • Network accessline 4933
    http: HttpConfig {                     endpoint: Some("http://127.0.0.1:8644/webhooks/clawhip-controller".into()),                     hmac_secret_env: Some("HERMES_CLAWHIP_HMAC_SECRET".into()),
  • Network accessline 4934
    endpoint: Some("http://127.0.0.1:8644/webhooks/clawhip-controller".into()),
  • Network accessline 4958
    r#" [providers.http] endpoint = "http://127.0.0.1:8644/webhooks/clawhip-controller"
  • Network accessline 4959
    [providers.http] endpoint = "http://127.0.0.1:8644/webhooks/clawhip-controller" secret_env = "HERMES_CLAWHIP_HMAC_SECRET"
  • Network accessline 4960
    endpoint = "http://127.0.0.1:8644/webhooks/clawhip-controller"
  • Network accessline 4972
    assert_eq!(             config.providers.http.endpoint(),             Some("http://127.0.0.1:8644/webhooks/clawhip-controller")
  • Network accessline 4973
    config.providers.http.endpoint(),             Some("http://127.0.0.1:8644/webhooks/clawhip-controller")         );
  • Network accessline 4974
    Some("http://127.0.0.1:8644/webhooks/clawhip-controller")
  • Network accessline 5023
    fn http_endpoint_policy_allows_loopback_http_and_https() {         for endpoint in [             "http://127.0.0.1:8644/webhooks/clawhip-controller",
  • Network accessline 5024
    for endpoint in [             "http://127.0.0.1:8644/webhooks/clawhip-controller",             "http://[::1]:8644/webhooks/clawhip-controller",
  • Network accessline 5025
    "http://127.0.0.1:8644/webhooks/clawhip-controller",
  • Network accessline 5026
    "http://[::1]:8644/webhooks/clawhip-controller",
  • Network accessline 5027
    "http://localhost:8644/webhooks/clawhip-controller",
  • Network accessline 5028
    "https://controller.example/webhooks/clawhip-controller",
  • Network accessline 5038
    [Credential-related source omitted]
  • Network accessline 5039
    [Credential-related source omitted]
  • Network accessline 5040
    [Credential-related source omitted]
  • Network accessline 5048
    let credentials = validate_http_endpoint(             "https://user:password@controller.example/webhooks/clawhip-controller",
  • Network accessline 5049
    "https://user:password@controller.example/webhooks/clawhip-controller",
  • Network accessline 5084
    providers: ProvidersConfig {                 http: HttpConfig {                     endpoint: Some("https://controller.example/webhook".into()),
  • Network accessline 5085
    http: HttpConfig {                     endpoint: Some("https://controller.example/webhook".into()),                     hmac_secret_env: Some("NOT VALID".into()),
  • Network accessline 5086
    endpoint: Some("https://controller.example/webhook".into()),
  • Network accessline 5110
    providers: ProvidersConfig {                 http: HttpConfig {                     endpoint: Some("https://controller.example/webhook".into()),
  • Network accessline 5111
    http: HttpConfig {                     endpoint: Some("https://controller.example/webhook".into()),                     hmac_secret_env: Some("HERMES_CLAWHIP_HMAC_SECRET".into()),
  • Network accessline 5112
    endpoint: Some("https://controller.example/webhook".into()),
  • Network accessline 5118
    event: "*".into(),                 sink: "http".into(),                 webhook: Some("https://must-not-be-used.example/secret".into()),
  • Network accessline 5119
    sink: "http".into(),                 webhook: Some("https://must-not-be-used.example/secret".into()),                 ..RouteRule::default()
  • Network accessline 5120
    webhook: Some("https://must-not-be-used.example/secret".into()),
  • Network accessline 5166
    event: "git.commit".into(),                     sink: "discord".into(),                     webhook: Some("https://discord.com/api/webhooks/123/abc".into()),
  • Network accessline 5167
    sink: "discord".into(),                     webhook: Some("https://discord.com/api/webhooks/123/abc".into()),                     ..RouteRule::default()
  • Network accessline 5168
    webhook: Some("https://discord.com/api/webhooks/123/abc".into()),
  • Network accessline 5211
    sink: "slack".into(),                 channel: Some("123".into()),                 webhook: Some("https://hooks.slack.com/services/T/B/abc".into()),
  • Network accessline 5212
    channel: Some("123".into()),                 webhook: Some("https://hooks.slack.com/services/T/B/abc".into()),                 ..RouteRule::default()
  • Network accessline 5213
    webhook: Some("https://hooks.slack.com/services/T/B/abc".into()),
  • Network accessline 5227
    event: "tmux.keyword".into(),                 sink: "slack".into(),                 webhook: Some("https://hooks.slack.com/services/T/B/abc".into()),
  • Network accessline 5228
    sink: "slack".into(),                 webhook: Some("https://hooks.slack.com/services/T/B/abc".into()),                 ..RouteRule::default()
  • Network accessline 5229
    webhook: Some("https://hooks.slack.com/services/T/B/abc".into()),
  • Network accessline 5241
    let mut config = AppConfig::default();         config             .scaffold_webhook_quickstart(" https://discord.com/api/webhooks/123/abc ".into())
  • Network accessline 5242
    config             .scaffold_webhook_quickstart(" https://discord.com/api/webhooks/123/abc ".into())             .unwrap();
  • Network accessline 5243
    .scaffold_webhook_quickstart(" https://discord.com/api/webhooks/123/abc ".into())
  • Network accessline 5248
    assert_eq!(             config.routes[0].webhook.as_deref(),             Some("https://discord.com/api/webhooks/123/abc")
  • Network accessline 5249
    config.routes[0].webhook.as_deref(),             Some("https://discord.com/api/webhooks/123/abc")         );
  • Network accessline 5250
    Some("https://discord.com/api/webhooks/123/abc")
  • Network accessline 5268
    },             daemon: DaemonConfig {                 base_url: "http://127.0.0.1:25294".into(),
  • Network accessline 5269
    daemon: DaemonConfig {                 base_url: "http://127.0.0.1:25294".into(),                 ..DaemonConfig::default()
  • Network accessline 5270
    base_url: "http://127.0.0.1:25294".into(),
  • Network accessline 5290
    config             .apply_setup_edits(SetupEdits {                 webhook: Some("https://discord.com/api/webhooks/123/new".into()),
  • Network accessline 5291
    [Credential-related source omitted]
  • Network accessline 5292
    webhook: Some("https://discord.com/api/webhooks/123/new".into()),
  • Network accessline 5294
    default_channel: Some("alerts".into()),                 default_format: Some(MessageFormat::Alert),                 daemon_base_url: Some("http://127.0.0.1:9999".into()),
  • Network accessline 5295
    default_format: Some(MessageFormat::Alert),                 daemon_base_url: Some("http://127.0.0.1:9999".into()),             })
  • Network accessline 5296
    daemon_base_url: Some("http://127.0.0.1:9999".into()),
  • Network accessline 5304
    assert_eq!(config.defaults.channel.as_deref(), Some("alerts"));         assert_eq!(config.defaults.format, MessageFormat::Alert);         assert_eq!(config.daemon.base_url, "http://127.0.0.1:9999");
  • Network accessline 5305
    assert_eq!(config.defaults.format, MessageFormat::Alert);         assert_eq!(config.daemon.base_url, "http://127.0.0.1:9999");         assert_eq!(config.routes.len(), 2);
  • Network accessline 5306
    assert_eq!(config.daemon.base_url, "http://127.0.0.1:9999");
  • Network accessline 5311
    assert_eq!(             config.routes[1].webhook.as_deref(),             Some("https://discord.com/api/webhooks/123/new")
  • Network accessline 5312
    config.routes[1].webhook.as_deref(),             Some("https://discord.com/api/webhooks/123/new")         );
  • Network accessline 5313
    Some("https://discord.com/api/webhooks/123/new")
  • Network accessline 5320
    routes: vec![RouteRule {                 event: "tmux.keyword".into(),                 webhook: Some("https://discord.com/api/webhooks/123/original".into()),
  • Network accessline 5321
    event: "tmux.keyword".into(),                 webhook: Some("https://discord.com/api/webhooks/123/original".into()),                 mention: Some("<@1>".into()),
  • Network accessline 5322
    webhook: Some("https://discord.com/api/webhooks/123/original".into()),
  • Network accessline 5332
    default_channel: Some("alerts".into()),                 default_format: Some(MessageFormat::Raw),                 daemon_base_url: Some("http://127.0.0.1:4444".into()),
  • Network accessline 5333
    default_format: Some(MessageFormat::Raw),                 daemon_base_url: Some("http://127.0.0.1:4444".into()),                 ..SetupEdits::default()
  • Network accessline 5334
    daemon_base_url: Some("http://127.0.0.1:4444".into()),
  • Network accessline 5341
    assert_eq!(             config.routes[0].webhook.as_deref(),             Some("https://discord.com/api/webhooks/123/original")
  • Network accessline 5342
    config.routes[0].webhook.as_deref(),             Some("https://discord.com/api/webhooks/123/original")         );
  • Network accessline 5343
    Some("https://discord.com/api/webhooks/123/original")
  • Network accessline 5352
    RouteRule {                     event: "*".into(),                     webhook: Some("https://discord.com/api/webhooks/123/old".into()),
  • Network accessline 5353
    event: "*".into(),                     webhook: Some("https://discord.com/api/webhooks/123/old".into()),                     ..RouteRule::default()
  • Network accessline 5354
    webhook: Some("https://discord.com/api/webhooks/123/old".into()),
  • Network accessline 5357
    RouteRule {                     event: "git.commit".into(),                     webhook: Some("https://discord.com/api/webhooks/123/other".into()),
  • Network accessline 5358
    event: "git.commit".into(),                     webhook: Some("https://discord.com/api/webhooks/123/other".into()),                     mention: Some("<@1>".into()),
  • Network accessline 5359
    webhook: Some("https://discord.com/api/webhooks/123/other".into()),
  • Network accessline 5367
    config             .scaffold_webhook_quickstart("https://discord.com/api/webhooks/123/new".into())
  • Network accessline 5368
    .scaffold_webhook_quickstart("https://discord.com/api/webhooks/123/new".into())
  • Network accessline 5372
    assert_eq!(             config.routes[0].webhook.as_deref(),             Some("https://discord.com/api/webhooks/123/new")
  • Network accessline 5373
    config.routes[0].webhook.as_deref(),             Some("https://discord.com/api/webhooks/123/new")         );
  • Network accessline 5374
    Some("https://discord.com/api/webhooks/123/new")
  • Network accessline 5376
    assert_eq!(             config.routes[1].webhook.as_deref(),             Some("https://discord.com/api/webhooks/123/other")
  • Network accessline 5377
    config.routes[1].webhook.as_deref(),             Some("https://discord.com/api/webhooks/123/other")         );
  • Network accessline 5378
    Some("https://discord.com/api/webhooks/123/other")
  • Network accessline 5386
    RouteRule {                     event: "*".into(),                     webhook: Some("https://discord.com/api/webhooks/123/a".into()),
  • Network accessline 5387
    event: "*".into(),                     webhook: Some("https://discord.com/api/webhooks/123/a".into()),                     ..RouteRule::default()
  • Network accessline 5388
    webhook: Some("https://discord.com/api/webhooks/123/a".into()),
  • Network accessline 5391
    RouteRule {                     event: "*".into(),                     webhook: Some("https://discord.com/api/webhooks/123/b".into()),
  • Network accessline 5392
    event: "*".into(),                     webhook: Some("https://discord.com/api/webhooks/123/b".into()),                     ..RouteRule::default()
  • Network accessline 5393
    webhook: Some("https://discord.com/api/webhooks/123/b".into()),
  • Network accessline 5400
    let error = config             .scaffold_webhook_quickstart("https://discord.com/api/webhooks/123/new".into())
  • Network accessline 5401
    .scaffold_webhook_quickstart("https://discord.com/api/webhooks/123/new".into())
  • Network accessline 5407
    assert_eq!(             config.routes[0].webhook.as_deref(),             Some("https://discord.com/api/webhooks/123/a")
  • Network accessline 5408
    config.routes[0].webhook.as_deref(),             Some("https://discord.com/api/webhooks/123/a")         );
  • Network accessline 5409
    Some("https://discord.com/api/webhooks/123/a")
  • Network accessline 5411
    assert_eq!(             config.routes[1].webhook.as_deref(),             Some("https://discord.com/api/webhooks/123/b")
  • Network accessline 5412
    config.routes[1].webhook.as_deref(),             Some("https://discord.com/api/webhooks/123/b")         );
  • Network accessline 5413
    Some("https://discord.com/api/webhooks/123/b")
  • Network accessline 7723
    [gjc] enabled = true discovery_roots = ["http://127.0.0.1"]
  • Network accessline 7724
    enabled = true discovery_roots = ["http://127.0.0.1"] "#,
  • Network accessline 7725
    discovery_roots = ["http://127.0.0.1"]
  • Network accessline 7802
    [monitors.github_status] enabled = true api_base = "https://www.githubstatus.com/api/v2"
  • Network accessline 7803
    enabled = true api_base = "https://www.githubstatus.com/api/v2" components = ["Actions"]
  • Network accessline 7804
    api_base = "https://www.githubstatus.com/api/v2"
  • Network accessline 7825
    assert_eq!(             config.monitors.github_status.api_base,             "https://www.githubstatus.com/api/v2"
  • Network accessline 7826
    config.monitors.github_status.api_base,             "https://www.githubstatus.com/api/v2"         );
  • Network accessline 7827
    "https://www.githubstatus.com/api/v2"

src/daemon.rs

  • Network accessline 430
    let local_addr = listener.local_addr()?;     println!(         "clawhip daemon v{VERSION} listening on http://{} (token_source: {token_source})",
  • Network accessline 431
    println!(         "clawhip daemon v{VERSION} listening on http://{} (token_source: {token_source})",         local_addr
  • Network accessline 432
    "clawhip daemon v{VERSION} listening on http://{} (token_source: {token_source})",
  • Access to secretsline 919
    [Credential-related source omitted]
  • Network accessline 2646
    return false;     };     reqwest::Url::parse(&format!("http://{host}"))
  • Network accessline 2647
    };     reqwest::Url::parse(&format!("http://{host}"))         .ok()
  • Network accessline 2648
    reqwest::Url::parse(&format!("http://{host}"))
  • Network accessline 3522
    parts.headers.insert(                 axum::http::header::ORIGIN,                 "http://127.0.0.1:25294".parse().unwrap(),
  • Network accessline 3523
    axum::http::header::ORIGIN,                 "http://127.0.0.1:25294".parse().unwrap(),             );
  • Network accessline 3524
    "http://127.0.0.1:25294".parse().unwrap(),
  • Network accessline 3600
    Some("127.0.0.1:1"),                 Some("127.0.0.1:25294"),                 Some("https://example.invalid"),
  • Network accessline 3601
    Some("127.0.0.1:25294"),                 Some("https://example.invalid"),                 Some("1"),
  • Network accessline 3602
    Some("https://example.invalid"),
  • Network accessline 3618
    Some("127.0.0.1:1"),             Some("127.0.0.1:25294"),             Some("http://127.0.0.1:3000"),
  • Network accessline 3619
    Some("127.0.0.1:25294"),             Some("http://127.0.0.1:3000"),             Some("1"),
  • Network accessline 3620
    Some("http://127.0.0.1:3000"),
  • Network accessline 3871
    "name": "clawhip 0.6.9",                 "prerelease": false,                 "html_url": "https://github.com/Yeachan-Heo/clawhip/releases/tag/v0.6.9"
  • Network accessline 3872
    "prerelease": false,                 "html_url": "https://github.com/Yeachan-Heo/clawhip/releases/tag/v0.6.9"             },
  • Network accessline 3873
    "html_url": "https://github.com/Yeachan-Heo/clawhip/releases/tag/v0.6.9"
  • Network accessline 3927
    "number": 252,                 "title": "approval hold events",                 "html_url": "https://github.com/Yeachan-Heo/clawhip/pull/252",
  • Network accessline 3928
    "title": "approval hold events",                 "html_url": "https://github.com/Yeachan-Heo/clawhip/pull/252",                 "merged": true,
  • Network accessline 3929
    "html_url": "https://github.com/Yeachan-Heo/clawhip/pull/252",
  • Network accessline 4009
    .await                 .unwrap();             let url = format!("http://{}/github", listener.local_addr().unwrap());
  • Network accessline 4010
    .unwrap();             let url = format!("http://{}/github", listener.local_addr().unwrap());             let app = AxumRouter::new()
  • Network accessline 4011
    let url = format!("http://{}/github", listener.local_addr().unwrap());
  • Network accessline 4091
    "issue": {"number": 42, "title": "A title", "comments": 7, "user": {"login": "pr-owner"}},             "pull_request": {"number": 42, "title": "A title", "user": {"login": "pr-owner"}},             "comment": {"id": 123, "user": {"login": "
  • Network accessline 4092
    "pull_request": {"number": 42, "title": "A title", "user": {"login": "pr-owner"}},             "comment": {"id": 123, "user": {"login": "commenter"}, "html_url": "https://github.com/owner/repo/pull/42#comment-123", "path": "src/main.rs", "b
  • Network accessline 4093
    "comment": {"id": 123, "user": {"login": "commenter"}, "html_url": "https://github.com/owner/repo/pull/42#comment-123", "path": "src/main.rs", "body": "PRIVATE COMMENT BODY"},
  • Network accessline 4094
    "review": {"id": 456, "user": {"login": "reviewer"}, "html_url": "https://github.com/owner/repo/pull/42#review-456", "state": "approved", "body": "PRIVATE REVIEW BODY"}
  • Network accessline 4139
    payload["issue"]["pull_request"] =             json!({"url": "https://api.github.com/repos/owner/repo/pulls/42"});
  • Network accessline 4140
    json!({"url": "https://api.github.com/repos/owner/repo/pulls/42"});
  • Network accessline 4261
    let mut payload = github_activity_payload();                 payload["action"] = json!(action);                 payload["release"] = json!({"tag_name": "v1.0.0", "name": "Release", "prerelease": false, "html_url": "https://github.com/owner/
  • Network accessline 4262
    payload["action"] = json!(action);                 payload["release"] = json!({"tag_name": "v1.0.0", "name": "Release", "prerelease": false, "html_url": "https://github.com/owner/repo/releases/tag/v1.0.0"});                 payload["pull_re
  • Network accessline 4263
    payload["release"] = json!({"tag_name": "v1.0.0", "name": "Release", "prerelease": false, "html_url": "https://github.com/owner/repo/releases/tag/v1.0.0"});
  • Network accessline 4264
    payload["pull_request"]["html_url"] =                     json!("https://github.com/owner/repo/pull/42");                 assert_eq!(
  • Network accessline 4265
    json!("https://github.com/owner/repo/pull/42");
  • Network accessline 5034
    [Credential-related source omitted]
  • Network accessline 5035
    [Credential-related source omitted]
  • Network accessline 5036
    [Credential-related source omitted]
  • Network accessline 6391
    current_version: "0.5.4".into(),             latest_version: "0.6.0".into(),             release_url: "https://github.com/Yeachan-Heo/clawhip/releases/tag/v0.6.0".into(),
  • Network accessline 6392
    latest_version: "0.6.0".into(),             release_url: "https://github.com/Yeachan-Heo/clawhip/releases/tag/v0.6.0".into(),             detected_at: "2026-04-07T00:00:00Z".into(),
  • Network accessline 6393
    release_url: "https://github.com/Yeachan-Heo/clawhip/releases/tag/v0.6.0".into(),
  • Network accessline 6463
    current_version: "0.5.4".into(),             latest_version: "0.6.0".into(),             release_url: "https://example.com".into(),
  • Network accessline 6464
    latest_version: "0.6.0".into(),             release_url: "https://example.com".into(),             detected_at: "2026-04-07T00:00:00Z".into(),
  • Network accessline 6465
    release_url: "https://example.com".into(),

src/discord.rs

  • Network accessline 190
    };         let api_base = std::env::var("CLAWHIP_DISCORD_API_BASE")             .unwrap_or_else(|_| "https://discord.com/api/v10".to_string());
  • Network accessline 191
    let api_base = std::env::var("CLAWHIP_DISCORD_API_BASE")             .unwrap_or_else(|_| "https://discord.com/api/v10".to_string());         let webhook_client = reqwest::Client::new();
  • Network accessline 192
    .unwrap_or_else(|_| "https://discord.com/api/v10".to_string());
  • Network accessline 1140
    fn webhook_urls_gain_wait_true_by_default() {         assert_eq!(             webhook_url_with_wait("https://discord.com/api/webhooks/1/abc"),
  • Network accessline 1141
    assert_eq!(             webhook_url_with_wait("https://discord.com/api/webhooks/1/abc"),             "https://discord.com/api/webhooks/1/abc?wait=true"
  • Network accessline 1142
    webhook_url_with_wait("https://discord.com/api/webhooks/1/abc"),
  • Network accessline 1143
    "https://discord.com/api/webhooks/1/abc?wait=true"
  • Network accessline 1144
    );         assert_eq!(             webhook_url_with_wait("https://discord.com/api/webhooks/1/abc?thread_id=7"),
  • Network accessline 1145
    assert_eq!(             webhook_url_with_wait("https://discord.com/api/webhooks/1/abc?thread_id=7"),             "https://discord.com/api/webhooks/1/abc?thread_id=7&wait=true"
  • Network accessline 1146
    webhook_url_with_wait("https://discord.com/api/webhooks/1/abc?thread_id=7"),
  • Network accessline 1147
    "https://discord.com/api/webhooks/1/abc?thread_id=7&wait=true"
  • Network accessline 1148
    );         assert_eq!(             webhook_url_with_wait("https://discord.com/api/webhooks/1/abc?wait=false"),
  • Network accessline 1149
    assert_eq!(             webhook_url_with_wait("https://discord.com/api/webhooks/1/abc?wait=false"),             "https://discord.com/api/webhooks/1/abc?wait=false"
  • Network accessline 1150
    webhook_url_with_wait("https://discord.com/api/webhooks/1/abc?wait=false"),
  • Network accessline 1151
    "https://discord.com/api/webhooks/1/abc?wait=false"
  • Network accessline 1198
    client             .send(                 &SinkTarget::DiscordWebhook(format!("http://{addr}/webhook")),
  • Network accessline 1199
    .send(                 &SinkTarget::DiscordWebhook(format!("http://{addr}/webhook")),                 &message,
  • Network accessline 1200
    &SinkTarget::DiscordWebhook(format!("http://{addr}/webhook")),
  • Network accessline 1250
    let client =             DiscordClient::for_tests_with_api_base("test-token", format!("http://{addr}")).unwrap();
  • Network accessline 1251
    DiscordClient::for_tests_with_api_base("test-token", format!("http://{addr}")).unwrap();
  • Network accessline 1282
    let client =             DiscordClient::for_tests_with_api_base("test-token", format!("http://{addr}")).unwrap();
  • Network accessline 1283
    DiscordClient::for_tests_with_api_base("test-token", format!("http://{addr}")).unwrap();
  • Network accessline 1321
    let client =             DiscordClient::for_tests_with_api_base("test-token", format!("http://{addr}")).unwrap();
  • Network accessline 1322
    DiscordClient::for_tests_with_api_base("test-token", format!("http://{addr}")).unwrap();
  • Network accessline 1345
    let client =             DiscordClient::for_tests_with_api_base("test-token", format!("http://{addr}")).unwrap();
  • Network accessline 1346
    DiscordClient::for_tests_with_api_base("test-token", format!("http://{addr}")).unwrap();
  • Network accessline 1363
    let client =             DiscordClient::for_tests_with_api_base("test-token", format!("http://{addr}")).unwrap();
  • Network accessline 1364
    DiscordClient::for_tests_with_api_base("test-token", format!("http://{addr}")).unwrap();
  • Network accessline 1381
    let client =             DiscordClient::for_tests_with_api_base("bad-token", format!("http://{addr}")).unwrap();
  • Network accessline 1382
    DiscordClient::for_tests_with_api_base("bad-token", format!("http://{addr}")).unwrap();
  • Network accessline 1392
    // Use a bogus env override so we never hit the real API.         unsafe {             std::env::set_var("CLAWHIP_DISCORD_API_BASE", "http://127.0.0.1:1");
  • Network accessline 1393
    unsafe {             std::env::set_var("CLAWHIP_DISCORD_API_BASE", "http://127.0.0.1:1");         }
  • Network accessline 1394
    std::env::set_var("CLAWHIP_DISCORD_API_BASE", "http://127.0.0.1:1");
  • Network accessline 1415
    let client =             DiscordClient::for_tests_with_api_base("test-token", format!("http://{addr}")).unwrap();
  • Network accessline 1416
    DiscordClient::for_tests_with_api_base("test-token", format!("http://{addr}")).unwrap();
  • Network accessline 1451
    let error = client             .send(                 &SinkTarget::DiscordWebhook(format!("http://{addr}/webhook")),
  • Network accessline 1452
    .send(                 &SinkTarget::DiscordWebhook(format!("http://{addr}/webhook")),                 &message,
  • Network accessline 1453
    &SinkTarget::DiscordWebhook(format!("http://{addr}/webhook")),
  • Network accessline 1463
    assert_eq!(dlq[0].retry_count, 3);         assert!(dlq[0].target.starts_with("discord:webhook:"));         assert!(!dlq[0].target.contains(&format!("http://{addr}/webhook")));
  • Network accessline 1464
    assert!(dlq[0].target.starts_with("discord:webhook:"));         assert!(!dlq[0].target.contains(&format!("http://{addr}/webhook")));         assert_eq!(dlq[0].correlation_id.as_deref(), Some("corr-214"));
  • Network accessline 1465
    assert!(!dlq[0].target.contains(&format!("http://{addr}/webhook")));
  • Network accessline 1480
    };         let target = SinkTarget::DiscordWebhook(             "https://discord.com/api/webhooks/123456/secret-token".into(),
  • Network accessline 1481
    let target = SinkTarget::DiscordWebhook(             "https://discord.com/api/webhooks/123456/secret-token".into(),         );
  • Network accessline 1482
    "https://discord.com/api/webhooks/123456/secret-token".into(),
  • Network accessline 1603
    fn poisoned_delivery_state_still_serves_limiter_circuit_and_dlq() {         let client =             DiscordClient::for_tests_with_api_base("test-token", "http://127.0.0.1:1".to_string())
  • Network accessline 1604
    let client =             DiscordClient::for_tests_with_api_base("test-token", "http://127.0.0.1:1".to_string())                 .unwrap();
  • Network accessline 1605
    DiscordClient::for_tests_with_api_base("test-token", "http://127.0.0.1:1".to_string())
  • Network accessline 1639
    ));         let client =             DiscordClient::for_tests_with_api_base("test-token", format!("http://{addr}")).unwrap();
  • Network accessline 1640
    let client =             DiscordClient::for_tests_with_api_base("test-token", format!("http://{addr}")).unwrap();         let result = client.list_thread_messages("12345678901234567890").await;
  • Network accessline 1641
    DiscordClient::for_tests_with_api_base("test-token", format!("http://{addr}")).unwrap();
  • Network accessline 1658
    ));         let client =             DiscordClient::for_tests_with_api_base("test-token", format!("http://{addr}")).unwrap();
  • Network accessline 1659
    let client =             DiscordClient::for_tests_with_api_base("test-token", format!("http://{addr}")).unwrap();         assert!(matches!(
  • Network accessline 1660
    DiscordClient::for_tests_with_api_base("test-token", format!("http://{addr}")).unwrap();
  • Network accessline 1701
    ));         let client =             DiscordClient::for_tests_with_api_base("test-token", format!("http://{addr}")).unwrap();
  • Network accessline 1702
    let client =             DiscordClient::for_tests_with_api_base("test-token", format!("http://{addr}")).unwrap();         let error = client
  • Network accessline 1703
    DiscordClient::for_tests_with_api_base("test-token", format!("http://{addr}")).unwrap();
  • Network accessline 1723
    ));         let client =             DiscordClient::for_tests_with_api_base("test-token", format!("http://{addr}")).unwrap();
  • Network accessline 1724
    let client =             DiscordClient::for_tests_with_api_base("test-token", format!("http://{addr}")).unwrap();         let error = client
  • Network accessline 1725
    DiscordClient::for_tests_with_api_base("test-token", format!("http://{addr}")).unwrap();
  • Network accessline 1744
    ));         let client =             DiscordClient::for_tests_with_api_base("test-token", format!("http://{addr}")).unwrap();
  • Network accessline 1745
    let client =             DiscordClient::for_tests_with_api_base("test-token", format!("http://{addr}")).unwrap();         let error = client
  • Network accessline 1746
    DiscordClient::for_tests_with_api_base("test-token", format!("http://{addr}")).unwrap();
  • Network accessline 1761
    async fn lane_transport_failure_is_ambiguous_and_never_enters_dlq() {         let client =             DiscordClient::for_tests_with_api_base("test-token", "http://127.0.0.1:1".into())
  • Network accessline 1762
    let client =             DiscordClient::for_tests_with_api_base("test-token", "http://127.0.0.1:1".into())                 .unwrap();
  • Network accessline 1763
    DiscordClient::for_tests_with_api_base("test-token", "http://127.0.0.1:1".into())
  • Network accessline 1793
    });         let client =             DiscordClient::for_tests_with_api_base("test-token", format!("http://{addr}")).unwrap();
  • Network accessline 1794
    let client =             DiscordClient::for_tests_with_api_base("test-token", format!("http://{addr}")).unwrap();         let error = client
  • Network accessline 1795
    DiscordClient::for_tests_with_api_base("test-token", format!("http://{addr}")).unwrap();
  • Network accessline 1820
    });         let client =             DiscordClient::for_tests_with_api_base("test-token", format!("http://{addr}")).unwrap();
  • Network accessline 1821
    let client =             DiscordClient::for_tests_with_api_base("test-token", format!("http://{addr}")).unwrap();         for invalid in ["/", "?", "#", "../1", "123456789012345678901", "123"] {
  • Network accessline 1822
    DiscordClient::for_tests_with_api_base("test-token", format!("http://{addr}")).unwrap();
  • Network accessline 1848
    ));         let client =             DiscordClient::for_tests_with_api_base("test-token", format!("http://{addr}")).unwrap();
  • Network accessline 1849
    let client =             DiscordClient::for_tests_with_api_base("test-token", format!("http://{addr}")).unwrap();         client
  • Network accessline 1850
    DiscordClient::for_tests_with_api_base("test-token", format!("http://{addr}")).unwrap();

src/dispatch.rs

  • Network accessline 1581
    (format!("http://{addr}/webhook"), request_rx, handle)
  • Network accessline 1613
    (format!("http://{addr}/webhook"), server)
  • Network accessline 1701
    routes: vec![RouteRule {                 event: "tmux.keyword".into(),                 slack_webhook: Some(format!("http://{addr}/webhook")),
  • Network accessline 1702
    event: "tmux.keyword".into(),                 slack_webhook: Some(format!("http://{addr}/webhook")),                 format: Some(crate::events::MessageFormat::Alert),
  • Network accessline 1703
    slack_webhook: Some(format!("http://{addr}/webhook")),
  • Network accessline 1828
    let mut buf = vec![0_u8; 4096];                 let n = stream.read(&mut buf).await.unwrap();                 requests.push(String::from_utf8_lossy(&buf[..n]).to_string());
  • Network accessline 1829
    let n = stream.read(&mut buf).await.unwrap();                 requests.push(String::from_utf8_lossy(&buf[..n]).to_string());                 stream
  • Network accessline 1830
    requests.push(String::from_utf8_lossy(&buf[..n]).to_string());
  • Network accessline 1841
    event: "github.ci-*".into(),                 sink: "discord".into(),                 webhook: Some(format!("http://{addr}/webhook")),
  • Network accessline 1842
    sink: "discord".into(),                 webhook: Some(format!("http://{addr}/webhook")),                 ..RouteRule::default()
  • Network accessline 1843
    webhook: Some(format!("http://{addr}/webhook")),
  • Network accessline 1862
    Some("success".into()),                 "abcdef1234567".into(),                 format!("https://github.com/Yeachan-Heo/clawhip/actions/runs/123/jobs/{workflow}"),
  • Network accessline 1863
    "abcdef1234567".into(),                 format!("https://github.com/Yeachan-Heo/clawhip/actions/runs/123/jobs/{workflow}"),                 Some("feat/retry".into()),
  • Network accessline 1864
    format!("https://github.com/Yeachan-Heo/clawhip/actions/runs/123/jobs/{workflow}"),
  • Network accessline 1878
    .unwrap()             .unwrap();         assert_eq!(requests.len(), 1);
  • Network accessline 1879
    .unwrap();         assert_eq!(requests.len(), 1);         assert!(requests[0].contains("2/2 passed"));
  • Network accessline 1880
    assert_eq!(requests.len(), 1);
  • Network accessline 1924
    let request = timeout(Duration::from_secs(2), requests.recv())
  • Network accessline 1969
    assert!(             timeout(Duration::from_millis(250), requests.recv())
  • Network accessline 1970
    timeout(Duration::from_millis(250), requests.recv())
  • Network accessline 2037
    // was enqueued second — the routine delivery (tmux.keyword) is still         // held by the 30s batch window.         let first = timeout(Duration::from_secs(2), requests.recv())
  • Network accessline 2038
    // held by the 30s batch window.         let first = timeout(Duration::from_secs(2), requests.recv())             .await
  • Network accessline 2039
    let first = timeout(Duration::from_secs(2), requests.recv())
  • Network accessline 2049
    // the wait, so any second request would indicate a bypass leak.         assert!(             timeout(Duration::from_millis(50), requests.recv())
  • Network accessline 2050
    assert!(             timeout(Duration::from_millis(50), requests.recv())                 .await
  • Network accessline 2051
    timeout(Duration::from_millis(50), requests.recv())
  • Network accessline 2059
    drop(tx);         assert!(             timeout(Duration::from_millis(250), requests.recv())
  • Network accessline 2060
    assert!(             timeout(Duration::from_millis(250), requests.recv())                 .await
  • Network accessline 2061
    timeout(Duration::from_millis(250), requests.recv())
  • Network accessline 2099
    Some("success".into()),                 "abcdef1234567".into(),                 format!("https://github.com/Yeachan-Heo/clawhip/actions/runs/456/jobs/{workflow}"),
  • Network accessline 2100
    "abcdef1234567".into(),                 format!("https://github.com/Yeachan-Heo/clawhip/actions/runs/456/jobs/{workflow}"),                 Some("feat/routine-batch".into()),
  • Network accessline 2101
    format!("https://github.com/Yeachan-Heo/clawhip/actions/runs/456/jobs/{workflow}"),
  • Network accessline 2110
    let request = timeout(Duration::from_millis(250), requests.recv())
  • Network accessline 2161
    let first = timeout(Duration::from_secs(2), requests.recv())
  • Network accessline 2163
    .unwrap()             .unwrap();         let second = timeout(Duration::from_secs(2), requests.recv())
  • Network accessline 2164
    .unwrap();         let second = timeout(Duration::from_secs(2), requests.recv())             .await
  • Network accessline 2165
    let second = timeout(Duration::from_secs(2), requests.recv())
  • Network accessline 2228
    let first = timeout(Duration::from_secs(2), requests.recv())
  • Network accessline 2230
    .unwrap()             .unwrap();         let second = timeout(Duration::from_secs(2), requests.recv())
  • Network accessline 2231
    .unwrap();         let second = timeout(Duration::from_secs(2), requests.recv())             .await
  • Network accessline 2232
    let second = timeout(Duration::from_secs(2), requests.recv())
  • Network accessline 2266
    "number": 86,             "sha": "abc",             "url": "https://github.com/org/repo/actions/runs/123456789/jobs/42"
  • Network accessline 2267
    "sha": "abc",             "url": "https://github.com/org/repo/actions/runs/123456789/jobs/42"         });
  • Network accessline 2268
    "url": "https://github.com/org/repo/actions/runs/123456789/jobs/42"
  • Network accessline 2300
    None,             "abc".into(),             "https://github.com/org/repo/actions/runs/123/jobs/1".into(),
  • Network accessline 2301
    "abc".into(),             "https://github.com/org/repo/actions/runs/123/jobs/1".into(),             Some("feat/batch".into()),
  • Network accessline 2302
    "https://github.com/org/repo/actions/runs/123/jobs/1".into(),
  • Network accessline 2316
    Some("success".into()),             "abc".into(),             "https://github.com/org/repo/actions/runs/123/jobs/1".into(),
  • Network accessline 2317
    "abc".into(),             "https://github.com/org/repo/actions/runs/123/jobs/1".into(),             Some("feat/batch".into()),
  • Network accessline 2318
    "https://github.com/org/repo/actions/runs/123/jobs/1".into(),
  • Network accessline 2332
    Some("failure".into()),             "abc".into(),             "https://github.com/org/repo/actions/runs/123/jobs/2".into(),
  • Network accessline 2333
    "abc".into(),             "https://github.com/org/repo/actions/runs/123/jobs/2".into(),             Some("feat/batch".into()),
  • Network accessline 2334
    "https://github.com/org/repo/actions/runs/123/jobs/2".into(),
  • Network accessline 2633
    let mut all_contents = Vec::new();         for _ in 0..2 {             let request = timeout(Duration::from_millis(300), requests.recv())
  • Network accessline 2634
    for _ in 0..2 {             let request = timeout(Duration::from_millis(300), requests.recv())                 .await
  • Network accessline 2635
    let request = timeout(Duration::from_millis(300), requests.recv())
  • Network accessline 2830
    let request = timeout(Duration::from_millis(300), requests.recv())

src/event/compat.rs

  • Network accessline 534
    author: "reviewer".into(),             pr_author: "owner".into(),             url: "https://github.com/org/repo/pull/42#comment-7".into(),
  • Network accessline 535
    pr_author: "owner".into(),             url: "https://github.com/org/repo/pull/42#comment-7".into(),             comment_id: 7,
  • Network accessline 536
    url: "https://github.com/org/repo/pull/42#comment-7".into(),
  • Network accessline 651
    "<new>".into(),             "open".into(),             "https://example.test/pr/48".into(),
  • Network accessline 652
    "open".into(),             "https://example.test/pr/48".into(),             None,
  • Network accessline 653
    "https://example.test/pr/48".into(),
  • Network accessline 660
    "open".into(),             "merged".into(),             "https://example.test/pr/48".into(),
  • Network accessline 661
    "merged".into(),             "https://example.test/pr/48".into(),             None,
  • Network accessline 662
    "https://example.test/pr/48".into(),
  • Network accessline 706
    Some("failure".into()),             "abcdef1234567890".into(),             "https://github.com/Yeachan-Heo/clawhip/actions/runs/1".into(),
  • Network accessline 707
    "abcdef1234567890".into(),             "https://github.com/Yeachan-Heo/clawhip/actions/runs/1".into(),             Some("feat/branch".into()),
  • Network accessline 708
    "https://github.com/Yeachan-Heo/clawhip/actions/runs/1".into(),
  • Network accessline 723
    assert_eq!(                     body.url.as_deref(),                     Some("https://github.com/Yeachan-Heo/clawhip/actions/runs/1")
  • Network accessline 724
    body.url.as_deref(),                     Some("https://github.com/Yeachan-Heo/clawhip/actions/runs/1")                 );
  • Network accessline 725
    Some("https://github.com/Yeachan-Heo/clawhip/actions/runs/1")
  • Network accessline 844
    "issue_number": 65,             "pr_number": 72,             "pr_url": "https://github.com/Yeachan-Heo/clawhip/pull/72",
  • Network accessline 845
    "pr_number": 72,             "pr_url": "https://github.com/Yeachan-Heo/clawhip/pull/72",             "command": "cargo test",
  • Network accessline 846
    "pr_url": "https://github.com/Yeachan-Heo/clawhip/pull/72",
  • Network accessline 872
    issue_number: Some(65),             pr_number: Some(72),             pr_url: Some("https://github.com/Yeachan-Heo/clawhip/pull/72".into()),
  • Network accessline 873
    pr_number: Some(72),             pr_url: Some("https://github.com/Yeachan-Heo/clawhip/pull/72".into()),             command: Some("cargo test".into()),
  • Network accessline 874
    pr_url: Some("https://github.com/Yeachan-Heo/clawhip/pull/72".into()),
  • Network accessline 929
    "clawhip 0.6.0".into(),             false,             "https://github.com/Yeachan-Heo/clawhip/releases/tag/v0.6.0".into(),
  • Network accessline 930
    false,             "https://github.com/Yeachan-Heo/clawhip/releases/tag/v0.6.0".into(),             Some("Yeachan-Heo".into()),
  • Network accessline 931
    "https://github.com/Yeachan-Heo/clawhip/releases/tag/v0.6.0".into(),
  • Network accessline 958
    "clawhip 0.6.0-rc.1".into(),             true,             "https://github.com/Yeachan-Heo/clawhip/releases/tag/v0.6.0-rc.1".into(),
  • Network accessline 959
    true,             "https://github.com/Yeachan-Heo/clawhip/releases/tag/v0.6.0-rc.1".into(),             None,
  • Network accessline 960
    "https://github.com/Yeachan-Heo/clawhip/releases/tag/v0.6.0-rc.1".into(),
  • Network accessline 983
    "clawhip 0.5.4".into(),             false,             "https://github.com/Yeachan-Heo/clawhip/releases/tag/v0.5.4".into(),
  • Network accessline 984
    false,             "https://github.com/Yeachan-Heo/clawhip/releases/tag/v0.5.4".into(),             Some("Yeachan-Heo".into()),
  • Network accessline 985
    "https://github.com/Yeachan-Heo/clawhip/releases/tag/v0.5.4".into(),

src/events.rs

  • Network accessline 2062
    Some("failure".into()),             "abcdef1234567890".into(),             "https://github.com/Yeachan-Heo/clawhip/actions/runs/1".into(),
  • Network accessline 2063
    "abcdef1234567890".into(),             "https://github.com/Yeachan-Heo/clawhip/actions/runs/1".into(),             Some("feat/branch".into()),
  • Network accessline 2064
    "https://github.com/Yeachan-Heo/clawhip/actions/runs/1".into(),
  • Network accessline 2069
    assert_eq!(             event.render_default(&MessageFormat::Compact).unwrap(),             "CI failed · clawhip#58 · CI / test · failure · abcdef1 · https://github.com/Yeachan-Heo/clawhip/actions/runs/1"
  • Network accessline 2070
    event.render_default(&MessageFormat::Compact).unwrap(),             "CI failed · clawhip#58 · CI / test · failure · abcdef1 · https://github.com/Yeachan-Heo/clawhip/actions/runs/1"         );
  • Network accessline 2071
    "CI failed · clawhip#58 · CI / test · failure · abcdef1 · https://github.com/Yeachan-Heo/clawhip/actions/runs/1"
  • Network accessline 2073
    assert_eq!(             event.render_default(&MessageFormat::Alert).unwrap(),             "🚨 CI failed · clawhip#58 · CI / test · failure · abcdef1 · https://github.com/Yeachan-Heo/clawhip/actions/runs/1"
  • Network accessline 2074
    event.render_default(&MessageFormat::Alert).unwrap(),             "🚨 CI failed · clawhip#58 · CI / test · failure · abcdef1 · https://github.com/Yeachan-Heo/clawhip/actions/runs/1"         );
  • Network accessline 2075
    "🚨 CI failed · clawhip#58 · CI / test · failure · abcdef1 · https://github.com/Yeachan-Heo/clawhip/actions/runs/1"
  • Network accessline 2088
    None,             "abcdef1234567890".into(),             "https://github.com/Yeachan-Heo/clawhip/actions/runs/1".into(),
  • Network accessline 2089
    "abcdef1234567890".into(),             "https://github.com/Yeachan-Heo/clawhip/actions/runs/1".into(),             None,
  • Network accessline 2090
    "https://github.com/Yeachan-Heo/clawhip/actions/runs/1".into(),
  • Network accessline 2095
    assert_eq!(             event.render_default(&MessageFormat::Compact).unwrap(),             "CI started · clawhip#58 · CI / test · in_progress · abcdef1 · https://github.com/Yeachan-Heo/clawhip/actions/runs/1"
  • Network accessline 2096
    event.render_default(&MessageFormat::Compact).unwrap(),             "CI started · clawhip#58 · CI / test · in_progress · abcdef1 · https://github.com/Yeachan-Heo/clawhip/actions/runs/1"         );
  • Network accessline 2097
    "CI started · clawhip#58 · CI / test · in_progress · abcdef1 · https://github.com/Yeachan-Heo/clawhip/actions/runs/1"
  • Network accessline 2099
    assert_eq!(             event.render_default(&MessageFormat::Alert).unwrap(),             "🚨 CI started · clawhip#58 · CI / test · in_progress · abcdef1 · https://github.com/Yeachan-Heo/clawhip/actions/runs/1"
  • Network accessline 2100
    event.render_default(&MessageFormat::Alert).unwrap(),             "🚨 CI started · clawhip#58 · CI / test · in_progress · abcdef1 · https://github.com/Yeachan-Heo/clawhip/actions/runs/1"         );
  • Network accessline 2101
    "🚨 CI started · clawhip#58 · CI / test · in_progress · abcdef1 · https://github.com/Yeachan-Heo/clawhip/actions/runs/1"
  • Network accessline 2256
    "routeKey": "pull-request.created",                     "phase": "finished",                     "summary": "https://github.com/Yeachan-Heo/clawhip/pull/67"
  • Network accessline 2257
    "phase": "finished",                     "summary": "https://github.com/Yeachan-Heo/clawhip/pull/67"                 },
  • Network accessline 2258
    "summary": "https://github.com/Yeachan-Heo/clawhip/pull/67"
  • Network accessline 2282
    assert_eq!(             event.payload["pr_url"],             json!("https://github.com/Yeachan-Heo/clawhip/pull/67")
  • Network accessline 2283
    event.payload["pr_url"],             json!("https://github.com/Yeachan-Heo/clawhip/pull/67")         );
  • Network accessline 2284
    json!("https://github.com/Yeachan-Heo/clawhip/pull/67")
  • Network accessline 2301
    "toolName": "Bash",                     "command": "gh pr create",                     "summary": "https://github.com/Yeachan-Heo/clawhip/pull/71"
  • Network accessline 2302
    "command": "gh pr create",                     "summary": "https://github.com/Yeachan-Heo/clawhip/pull/71"                 },
  • Network accessline 2303
    "summary": "https://github.com/Yeachan-Heo/clawhip/pull/71"
  • Network accessline 2322
    assert_eq!(             event.payload["summary"],             json!("https://github.com/Yeachan-Heo/clawhip/pull/71")
  • Network accessline 2323
    event.payload["summary"],             json!("https://github.com/Yeachan-Heo/clawhip/pull/71")         );
  • Network accessline 2324
    json!("https://github.com/Yeachan-Heo/clawhip/pull/71")
  • Network accessline 2340
    "routeKey": "pull-request.created",                     "phase": "finished",                     "summary": "https://github.com/Yeachan-Heo/clawhip/pull/67"
  • Network accessline 2341
    "phase": "finished",                     "summary": "https://github.com/Yeachan-Heo/clawhip/pull/67"                 },
  • Network accessline 2342
    "summary": "https://github.com/Yeachan-Heo/clawhip/pull/67"
  • Network accessline 2352
    assert_eq!(             event.render_default(&MessageFormat::Compact).unwrap(),             "omc issue-65 pr-created (repo=clawhip, issue=#65, pr=#67, summary=https://github.com/Yeachan-Heo/clawhip/pull/67)"
  • Network accessline 2353
    event.render_default(&MessageFormat::Compact).unwrap(),             "omc issue-65 pr-created (repo=clawhip, issue=#65, pr=#67, summary=https://github.com/Yeachan-Heo/clawhip/pull/67)"         );
  • Network accessline 2354
    "omc issue-65 pr-created (repo=clawhip, issue=#65, pr=#67, summary=https://github.com/Yeachan-Heo/clawhip/pull/67)"
  • Network accessline 2372
    "issue_number": 65,                     "pr_number": 71,                     "pr_url": "https://github.com/Yeachan-Heo/clawhip/pull/71"
  • Network accessline 2373
    "pr_number": 71,                     "pr_url": "https://github.com/Yeachan-Heo/clawhip/pull/71"                 }
  • Network accessline 2374
    "pr_url": "https://github.com/Yeachan-Heo/clawhip/pull/71"

src/gajae.rs

  • Access to secretsline 2387
    [Credential-related source omitted]
  • Dangerous shell operationline 2872
    command: rm -rf /tmp/example
  • Network accessline 2949
    fn profile_command_summary_redacts_raw_command_details() {         let event = "github.issue-opened";         let secret_command = "gajae handle github.issue-opened --token secret-token-123 --webhook https://hooks.example/secret --path /hom
  • Network accessline 2951
    let secret_command = "gajae handle github.issue-opened --token secret-token-123 --webhook https://hooks.example/secret --path /home/operator/private";
  • Network accessline 2958
    assert_eq!(summary, "unsupported command (redacted)");         assert!(!summary.contains("secret-token-123"));         assert!(!summary.contains("https://hooks.example/secret"));
  • Network accessline 2959
    assert!(!summary.contains("secret-token-123"));         assert!(!summary.contains("https://hooks.example/secret"));         assert!(!summary.contains("/home/operator/private"));
  • Network accessline 2960
    assert!(!summary.contains("https://hooks.example/secret"));

src/gateway_allowlist.rs

  • Network accessline 407
    RouteRule {                     event: "discord-webhook".into(),                     webhook: Some("https://discord.com/api/webhooks/secret".into()),
  • Network accessline 408
    event: "discord-webhook".into(),                     webhook: Some("https://discord.com/api/webhooks/secret".into()),                     ..RouteRule::default()
  • Network accessline 409
    webhook: Some("https://discord.com/api/webhooks/secret".into()),
  • Network accessline 413
    event: "slack".into(),                     sink: "slack".into(),                     slack_webhook: Some("https://hooks.slack.test/secret".into()),
  • Network accessline 414
    sink: "slack".into(),                     slack_webhook: Some("https://hooks.slack.test/secret".into()),                     ..RouteRule::default()
  • Network accessline 415
    slack_webhook: Some("https://hooks.slack.test/secret".into()),

src/gjc/control.rs

  • Access to secretsline 908
    [Credential-related source omitted]
  • Access to secretsline 936
    [Credential-related source omitted]
  • Access to secretsline 952
    [Credential-related source omitted]
  • Access to secretsline 963
    [Credential-related source omitted]
  • Access to secretsline 993
    [Credential-related source omitted]
  • Access to secretsline 997
    [Credential-related source omitted]
  • Access to secretsline 1003
    [Credential-related source omitted]
  • Access to secretsline 1007
    [Credential-related source omitted]
  • Access to secretsline 1077
    [Credential-related source omitted]
  • Access to secretsline 1097
    [Credential-related source omitted]
  • Access to secretsline 1129
    [Credential-related source omitted]
  • Access to secretsline 1142
    [Credential-related source omitted]
  • Access to secretsline 1207
    [Credential-related source omitted]

src/gjc_lane.rs

  • Network accessline 2849
    fn default_gjc_pr_api_base() -> String {     "https://api.github.com".to_string()
  • Network accessline 2850
    "https://api.github.com".to_string()
  • Access to secretsline 3605
    [Credential-related source omitted]
  • Network accessline 4540
    [Credential-related source omitted]
  • Network accessline 4541
    [Credential-related source omitted]
  • Network accessline 4542
    failed.profile = Some("https://endpoint.invalid/private_key".to_string());

src/gjc_sdk.rs

  • Network accessline 1429
    "ws://localhost:1234/",             "wss://127.0.0.1:1234/",             "http://127.0.0.1:1234/",
  • Network accessline 1430
    "wss://127.0.0.1:1234/",             "http://127.0.0.1:1234/",             "ws://user:pass@127.0.0.1:1234/",
  • Network accessline 1431
    "http://127.0.0.1:1234/",

src/gjc_sdk_events.rs

  • Access to secretsline 1097
    [Credential-related source omitted]

src/ledger.rs

  • Network accessline 1062
    [Credential-related source omitted]
  • Network accessline 1063
    [Credential-related source omitted]
  • Network accessline 1064
    [Credential-related source omitted]
  • Network accessline 1110
    let mut ledger = EventLedger::open(config(dir.path()), dir.path()).unwrap();         for (index, source_url) in [             "https://discord.com/api/webhooks/123/secret-token",
  • Network accessline 1111
    for (index, source_url) in [             "https://discord.com/api/webhooks/123/secret-token",             "https://discord.com/api/v10/webhooks/123/secret-token",
  • Network accessline 1112
    "https://discord.com/api/webhooks/123/secret-token",
  • Network accessline 1113
    "https://discord.com/api/v10/webhooks/123/secret-token",
  • Network accessline 1114
    "https://hooks.slack.com/services/T000/B000/secret",
  • Network accessline 1115
    "https://api.telegram.org/bot123:secret/sendMessage",
  • Network accessline 1152
    "session_id": "s1",                     "status": "finished",                     "source_url": "https://github.com/owner/repo/issues/304"
  • Network accessline 1153
    "status": "finished",                     "source_url": "https://github.com/owner/repo/issues/304"                 }),
  • Network accessline 1154
    "source_url": "https://github.com/owner/repo/issues/304"
  • Network accessline 1279
    payload: json!({                 "event_id": "raw-verify",                 "source_url": "https://github.com/owner/repo/issues/304",
  • Network accessline 1280
    "event_id": "raw-verify",                 "source_url": "https://github.com/owner/repo/issues/304",                 "timestamp": "2026-08-01T12:00:00Z"
  • Network accessline 1281
    "source_url": "https://github.com/owner/repo/issues/304",
  • Network accessline 1287
    let line = fs::read_to_string(&path).unwrap();         let mut record: LedgerRecord = serde_json::from_str(line.trim()).unwrap();         record.source_links = vec!["https://discord.com/api/webhooks/123/secret-token".into()];
  • Network accessline 1288
    let mut record: LedgerRecord = serde_json::from_str(line.trim()).unwrap();         record.source_links = vec!["https://discord.com/api/webhooks/123/secret-token".into()];         fs::write(
  • Network accessline 1289
    record.source_links = vec!["https://discord.com/api/webhooks/123/secret-token".into()];
  • Network accessline 1362
    "event_id": "summary-verify",                 "repo": "owner/repo",                 "source_url": "https://github.com/owner/repo/issues/304",
  • Network accessline 1363
    "repo": "owner/repo",                 "source_url": "https://github.com/owner/repo/issues/304",                 "timestamp": "2026-07-01T00:00:00Z"
  • Network accessline 1364
    "source_url": "https://github.com/owner/repo/issues/304",
  • Network accessline 1397
    format: None,             template: None,             payload: json!({"event_id":"old","repo":"owner/repo","session_id":"s1","source_url":"https://github.com/owner/repo/issues/304","timestamp":"2026-07-01T00:00:00Z"}),
  • Network accessline 1398
    template: None,             payload: json!({"event_id":"old","repo":"owner/repo","session_id":"s1","source_url":"https://github.com/owner/repo/issues/304","timestamp":"2026-07-01T00:00:00Z"}),         };
  • Network accessline 1399
    payload: json!({"event_id":"old","repo":"owner/repo","session_id":"s1","source_url":"https://github.com/owner/repo/issues/304","timestamp":"2026-07-01T00:00:00Z"}),

src/memory.rs

  • Network accessline 1352
    channel: Some("123456789".into()),             channel_name: Some("dev".into()),             webhook: Some("https://discord.com/api/webhooks/SECRET".into()),
  • Network accessline 1353
    channel_name: Some("dev".into()),             webhook: Some("https://discord.com/api/webhooks/SECRET".into()),             slack_webhook: Some("https://hooks.slack.com/services/SECRET".into()),
  • Network accessline 1354
    webhook: Some("https://discord.com/api/webhooks/SECRET".into()),
  • Network accessline 1355
    slack_webhook: Some("https://hooks.slack.com/services/SECRET".into()),

src/native_hooks.rs

  • Network accessline 1497
    std::fs::write(             &fake_clawhip,             "#!/bin/sh\ncat >/dev/null\necho 'fake native hook bridge failure' >&2\nexit 7\n",
  • Network accessline 1498
    &fake_clawhip,             "#!/bin/sh\ncat >/dev/null\necho 'fake native hook bridge failure' >&2\nexit 7\n",         )
  • Network accessline 1499
    "#!/bin/sh\ncat >/dev/null\necho 'fake native hook bridge failure' >&2\nexit 7\n",
  • Network accessline 1743
    std::fs::write(             &fake_clawhip,             format!("#!/bin/sh\ncat > '{}'\nexit 0\n", capture_path.display()),
  • Network accessline 1744
    &fake_clawhip,             format!("#!/bin/sh\ncat > '{}'\nexit 0\n", capture_path.display()),         )
  • Network accessline 1745
    format!("#!/bin/sh\ncat > '{}'\nexit 0\n", capture_path.display()),

src/native_observability.rs

  • Access to secretsline 261
    [Credential-related source omitted]
  • Access to secretsline 262
    [Credential-related source omitted]

src/release_preflight.rs

  • Network accessline 323
    name = "anyhow" version = "1.0.99" source = "registry+https://github.com/rust-lang/crates.io-index"
  • Network accessline 325
    source = "registry+https://github.com/rust-lang/crates.io-index"

src/render/default.rs

  • Network accessline 1396
    "clawhip 0.6.0".into(),             false,             "https://github.com/Yeachan-Heo/clawhip/releases/tag/v0.6.0".into(),
  • Network accessline 1397
    false,             "https://github.com/Yeachan-Heo/clawhip/releases/tag/v0.6.0".into(),             Some("Yeachan-Heo".into()),
  • Network accessline 1398
    "https://github.com/Yeachan-Heo/clawhip/releases/tag/v0.6.0".into(),
  • Network accessline 1418
    "v0.6.0-rc.1".into(),             true,             "https://github.com/Yeachan-Heo/clawhip/releases/tag/v0.6.0-rc.1".into(),
  • Network accessline 1419
    true,             "https://github.com/Yeachan-Heo/clawhip/releases/tag/v0.6.0-rc.1".into(),             None,
  • Network accessline 1420
    "https://github.com/Yeachan-Heo/clawhip/releases/tag/v0.6.0-rc.1".into(),
  • Network accessline 1438
    "clawhip 0.6.0".into(),             false,             "https://github.com/Yeachan-Heo/clawhip/releases/tag/v0.6.0".into(),
  • Network accessline 1439
    false,             "https://github.com/Yeachan-Heo/clawhip/releases/tag/v0.6.0".into(),             None,
  • Network accessline 1440
    "https://github.com/Yeachan-Heo/clawhip/releases/tag/v0.6.0".into(),
  • Network accessline 1457
    "clawhip 0.6.0".into(),             false,             "https://github.com/Yeachan-Heo/clawhip/releases/tag/v0.6.0".into(),
  • Network accessline 1458
    false,             "https://github.com/Yeachan-Heo/clawhip/releases/tag/v0.6.0".into(),             None,
  • Network accessline 1459
    "https://github.com/Yeachan-Heo/clawhip/releases/tag/v0.6.0".into(),
  • Network accessline 1497
    "operational".into(),             "degraded_performance".into(),             "https://www.githubstatus.com".into(),
  • Network accessline 1498
    "degraded_performance".into(),             "https://www.githubstatus.com".into(),             Some("dev".into()),
  • Network accessline 1499
    "https://www.githubstatus.com".into(),
  • Network accessline 1518
    Some("Mitigated; monitoring".into()),             vec!["Actions".into()],             "https://stspg.io/example".into(),
  • Network accessline 1519
    vec!["Actions".into()],             "https://stspg.io/example".into(),             Some("dev".into()),
  • Network accessline 1520
    "https://stspg.io/example".into(),
  • Network accessline 1548
    "status": "in_progress",                 "conclusion": null,                 "url": "https://github.com/Yeachan-Heo/clawhip/actions/runs/1",
  • Network accessline 1549
    "conclusion": null,                 "url": "https://github.com/Yeachan-Heo/clawhip/actions/runs/1",             }));
  • Network accessline 1550
    "url": "https://github.com/Yeachan-Heo/clawhip/actions/runs/1",
  • Network accessline 1563
    "branch": "main",                 "sha": "abcdef1234567890",                 "url": "https://github.com/Yeachan-Heo/clawhip/actions/runs/1",
  • Network accessline 1564
    "sha": "abcdef1234567890",                 "url": "https://github.com/Yeachan-Heo/clawhip/actions/runs/1",                 "batched": true,
  • Network accessline 1565
    "url": "https://github.com/Yeachan-Heo/clawhip/actions/runs/1",
  • Network accessline 1595
    );         assert!(             rendered.contains("https://github.com/Yeachan-Heo/clawhip/actions/runs/1"),
  • Network accessline 1596
    assert!(             rendered.contains("https://github.com/Yeachan-Heo/clawhip/actions/runs/1"),             "link missing from bounded output"
  • Network accessline 1597
    rendered.contains("https://github.com/Yeachan-Heo/clawhip/actions/runs/1"),
  • Network accessline 1617
    "status": "completed",                 "conclusion": "failure",                 "url": "https://github.com/Yeachan-Heo/clawhip/actions/runs/2",
  • Network accessline 1618
    "conclusion": "failure",                 "url": "https://github.com/Yeachan-Heo/clawhip/actions/runs/2",             }));
  • Network accessline 1619
    "url": "https://github.com/Yeachan-Heo/clawhip/actions/runs/2",
  • Network accessline 1632
    "branch": "fix/issue-313",                 "sha": "abcdef1234567890",                 "url": "https://github.com/Yeachan-Heo/clawhip/actions/runs/2",
  • Network accessline 1633
    "sha": "abcdef1234567890",                 "url": "https://github.com/Yeachan-Heo/clawhip/actions/runs/2",                 "batched": true,
  • Network accessline 1634
    "url": "https://github.com/Yeachan-Heo/clawhip/actions/runs/2",
  • Network accessline 1657
    assert!(rendered.contains("Yeachan-Heo/clawhip#59"));         assert!(             rendered.contains("https://github.com/Yeachan-Heo/clawhip/actions/runs/2"),
  • Network accessline 1658
    assert!(             rendered.contains("https://github.com/Yeachan-Heo/clawhip/actions/runs/2"),             "link missing from bounded failed output"
  • Network accessline 1659
    rendered.contains("https://github.com/Yeachan-Heo/clawhip/actions/runs/2"),
  • Network accessline 1676
    "status": "in_progress",                 "conclusion": null,                 "url": "https://github.com/Yeachan-Heo/clawhip/actions/runs/4",
  • Network accessline 1677
    "conclusion": null,                 "url": "https://github.com/Yeachan-Heo/clawhip/actions/runs/4",             }));
  • Network accessline 1678
    "url": "https://github.com/Yeachan-Heo/clawhip/actions/runs/4",
  • Network accessline 1691
    "branch": "main",                 "sha": "abcdef1234567890",                 "url": "https://github.com/Yeachan-Heo/clawhip/actions/runs/4",
  • Network accessline 1692
    "sha": "abcdef1234567890",                 "url": "https://github.com/Yeachan-Heo/clawhip/actions/runs/4",                 "batched": true,
  • Network accessline 1693
    "url": "https://github.com/Yeachan-Heo/clawhip/actions/runs/4",
  • Network accessline 1723
    let huge_repo = "x".repeat(1_000);         let huge_url = format!(             "https://github.com/Yeachan-Heo/clawhip/actions/runs/{}",
  • Network accessline 1724
    let huge_url = format!(             "https://github.com/Yeachan-Heo/clawhip/actions/runs/{}",             "y".repeat(1_000)
  • Network accessline 1725
    "https://github.com/Yeachan-Heo/clawhip/actions/runs/{}",
  • Network accessline 1795
    "branch": "main",                 "sha": "abcdef1",                 "url": "https://github.com/Yeachan-Heo/clawhip/actions/runs/3",
  • Network accessline 1796
    "sha": "abcdef1",                 "url": "https://github.com/Yeachan-Heo/clawhip/actions/runs/3",                 "batched": true,
  • Network accessline 1797
    "url": "https://github.com/Yeachan-Heo/clawhip/actions/runs/3",
  • Network accessline 1803
    "cancelled_count": 0,                 "jobs": [                     {"workflow": "CI / test", "status": "completed", "conclusion": "success", "url": "https://github.com/Yeachan-Heo/clawhip/actions/runs/3"},
  • Network accessline 1804
    "jobs": [                     {"workflow": "CI / test", "status": "completed", "conclusion": "success", "url": "https://github.com/Yeachan-Heo/clawhip/actions/runs/3"},                     {"workflow": "CI / lint", "status": "completed", "c
  • Network accessline 1805
    {"workflow": "CI / test", "status": "completed", "conclusion": "success", "url": "https://github.com/Yeachan-Heo/clawhip/actions/runs/3"},
  • Network accessline 1806
    {"workflow": "CI / lint", "status": "completed", "conclusion": "success", "url": "https://github.com/Yeachan-Heo/clawhip/actions/runs/3"},
  • Network accessline 1832
    "status": "in_progress",                 "conclusion": null,                 "url": "https://github.com/Yeachan-Heo/clawhip/actions/runs/5",
  • Network accessline 1833
    "conclusion": null,                 "url": "https://github.com/Yeachan-Heo/clawhip/actions/runs/5",             }));
  • Network accessline 1834
    "url": "https://github.com/Yeachan-Heo/clawhip/actions/runs/5",
  • Network accessline 1847
    "branch": "main",                 "sha": "abcdef1234567890",                 "url": "https://github.com/Yeachan-Heo/clawhip/actions/runs/5",
  • Network accessline 1848
    "sha": "abcdef1234567890",                 "url": "https://github.com/Yeachan-Heo/clawhip/actions/runs/5",                 "batched": true,
  • Network accessline 1849
    "url": "https://github.com/Yeachan-Heo/clawhip/actions/runs/5",

src/router.rs

  • Network accessline 850
    [Credential-related source omitted]
  • Network accessline 851
    [Credential-related source omitted]
  • Network accessline 852
    [Credential-related source omitted]
  • Network accessline 1035
    (format!("http://{addr}/webhook"), server)
  • Network accessline 1670
    "routeKey": "pull-request.created",                     "phase": "finished",                     "summary": "https://github.com/Yeachan-Heo/clawhip/pull/67"
  • Network accessline 1671
    "phase": "finished",                     "summary": "https://github.com/Yeachan-Heo/clawhip/pull/67"                 },
  • Network accessline 1672
    "summary": "https://github.com/Yeachan-Heo/clawhip/pull/67"
  • Network accessline 2051
    thread: None,                 channel_name: None,                 webhook: Some("https://discord.com/api/webhooks/123/abc".into()),
  • Network accessline 2052
    channel_name: None,                 webhook: Some("https://discord.com/api/webhooks/123/abc".into()),                 slack_webhook: None,
  • Network accessline 2053
    webhook: Some("https://discord.com/api/webhooks/123/abc".into()),
  • Network accessline 2069
    assert_eq!(             delivery.target,             SinkTarget::DiscordWebhook("https://discord.com/api/webhooks/123/abc".into())
  • Network accessline 2070
    delivery.target,             SinkTarget::DiscordWebhook("https://discord.com/api/webhooks/123/abc".into())         );
  • Network accessline 2071
    SinkTarget::DiscordWebhook("https://discord.com/api/webhooks/123/abc".into())
  • Network accessline 2095
    thread: None,                 channel_name: None,                 webhook: Some("https://discord.com/api/webhooks/123/abc".into()),
  • Network accessline 2096
    channel_name: None,                 webhook: Some("https://discord.com/api/webhooks/123/abc".into()),                 slack_webhook: None,
  • Network accessline 2097
    webhook: Some("https://discord.com/api/webhooks/123/abc".into()),
  • Network accessline 2117
    assert_eq!(             delivery.target,             SinkTarget::DiscordWebhook("https://discord.com/api/webhooks/123/abc".into())
  • Network accessline 2118
    delivery.target,             SinkTarget::DiscordWebhook("https://discord.com/api/webhooks/123/abc".into())         );
  • Network accessline 2119
    SinkTarget::DiscordWebhook("https://discord.com/api/webhooks/123/abc".into())
  • Network accessline 2289
    routes: vec![RouteRule {                 event: "tmux.keyword".into(),                 slack_webhook: Some("https://hooks.slack.com/services/T/B/abc".into()),
  • Network accessline 2290
    event: "tmux.keyword".into(),                 slack_webhook: Some("https://hooks.slack.com/services/T/B/abc".into()),                 format: Some(MessageFormat::Alert),
  • Network accessline 2291
    slack_webhook: Some("https://hooks.slack.com/services/T/B/abc".into()),
  • Network accessline 2303
    assert_eq!(             delivery.target,             SinkTarget::SlackWebhook("https://hooks.slack.com/services/T/B/abc".into())
  • Network accessline 2304
    delivery.target,             SinkTarget::SlackWebhook("https://hooks.slack.com/services/T/B/abc".into())         );
  • Network accessline 2305
    SinkTarget::SlackWebhook("https://hooks.slack.com/services/T/B/abc".into())
  • Network accessline 2320
    event: "custom".into(),                 sink: "slack".into(),                 webhook: Some("https://hooks.slack.com/services/T/B/generic".into()),
  • Network accessline 2321
    sink: "slack".into(),                 webhook: Some("https://hooks.slack.com/services/T/B/generic".into()),                 ..RouteRule::default()
  • Network accessline 2322
    webhook: Some("https://hooks.slack.com/services/T/B/generic".into()),
  • Network accessline 2334
    assert_eq!(             delivery.target,             SinkTarget::SlackWebhook("https://hooks.slack.com/services/T/B/generic".into())
  • Network accessline 2335
    delivery.target,             SinkTarget::SlackWebhook("https://hooks.slack.com/services/T/B/generic".into())         );
  • Network accessline 2336
    SinkTarget::SlackWebhook("https://hooks.slack.com/services/T/B/generic".into())
  • Network accessline 2496
    thread: None,                 channel_name: None,                 webhook: Some("https://discord.com/api/webhooks/123/abc".into()),
  • Network accessline 2497
    channel_name: None,                 webhook: Some("https://discord.com/api/webhooks/123/abc".into()),                 slack_webhook: None,
  • Network accessline 2498
    webhook: Some("https://discord.com/api/webhooks/123/abc".into()),
  • Network accessline 2534
    routes: vec![RouteRule {                 event: "custom".into(),                 slack_webhook: Some(format!("http://{addr}/webhook")),
  • Network accessline 2535
    event: "custom".into(),                 slack_webhook: Some(format!("http://{addr}/webhook")),                 ..RouteRule::default()
  • Network accessline 2536
    slack_webhook: Some(format!("http://{addr}/webhook")),
  • Network accessline 2910
    "status": "in_progress",                 "conclusion": null,                 "url": "https://github.com/Yeachan-Heo/clawhip/actions/runs/9",
  • Network accessline 2911
    "conclusion": null,                 "url": "https://github.com/Yeachan-Heo/clawhip/actions/runs/9",             }));
  • Network accessline 2912
    "url": "https://github.com/Yeachan-Heo/clawhip/actions/runs/9",
  • Network accessline 2925
    "branch": "main",                 "sha": "abcdef1234567890",                 "url": "https://github.com/Yeachan-Heo/clawhip/actions/runs/9",
  • Network accessline 2926
    "sha": "abcdef1234567890",                 "url": "https://github.com/Yeachan-Heo/clawhip/actions/runs/9",                 "batched": true,
  • Network accessline 2927
    "url": "https://github.com/Yeachan-Heo/clawhip/actions/runs/9",
  • Network accessline 2987
    "status": "completed",                 "conclusion": "failure",                 "url": "https://github.com/Yeachan-Heo/clawhip/actions/runs/10",
  • Network accessline 2988
    "conclusion": "failure",                 "url": "https://github.com/Yeachan-Heo/clawhip/actions/runs/10",             }));
  • Network accessline 2989
    "url": "https://github.com/Yeachan-Heo/clawhip/actions/runs/10",
  • Network accessline 3002
    "branch": "main",                 "sha": "abcdef1234567890",                 "url": "https://github.com/Yeachan-Heo/clawhip/actions/runs/10",
  • Network accessline 3003
    "sha": "abcdef1234567890",                 "url": "https://github.com/Yeachan-Heo/clawhip/actions/runs/10",                 "batched": true,
  • Network accessline 3004
    "url": "https://github.com/Yeachan-Heo/clawhip/actions/runs/10",
  • Network accessline 3060
    channel_name: None,                 webhook: None,                 slack_webhook: Some("https://hooks.slack.com/services/test".into()),
  • Network accessline 3061
    webhook: None,                 slack_webhook: Some("https://hooks.slack.com/services/test".into()),                 local_path: None,
  • Network accessline 3062
    slack_webhook: Some("https://hooks.slack.com/services/test".into()),
  • Network accessline 3160
    [Credential-related source omitted]
  • Network accessline 3161
    [Credential-related source omitted]
  • Network accessline 3162
    [Credential-related source omitted]

src/sink/http.rs

  • Network accessline 1053
    [Credential-related source omitted]
  • Network accessline 1054
    [Credential-related source omitted]
  • Network accessline 1055
    [Credential-related source omitted]
  • Network accessline 1059
    [Credential-related source omitted]
  • Network accessline 1060
    [Credential-related source omitted]
  • Network accessline 1061
    [Credential-related source omitted]
  • Network accessline 1143
    [Credential-related source omitted]
  • Network accessline 1144
    [Credential-related source omitted]
  • Network accessline 1145
    [Credential-related source omitted]
  • Network accessline 1146
    );         let mut message = message();         message.content = format!("{} https://hooks.example/secret/token", "x".repeat(30_000));
  • Network accessline 1148
    message.content = format!("{} https://hooks.example/secret/token", "x".repeat(30_000));
  • Network accessline 1168
    "must-not-leak",             "endpoint-secret",             "https://controller.example/webhooks/clawhip-controller",
  • Network accessline 1169
    "endpoint-secret",             "https://controller.example/webhooks/clawhip-controller",         ] {
  • Network accessline 1170
    "https://controller.example/webhooks/clawhip-controller",
  • Network accessline 1176
    #[test]     fn notifications_event_body_preserves_public_fields_and_redacts_secrets() {         let target = SinkTarget::HttpEndpoint("https://controller.example/events".into());
  • Network accessline 1177
    fn notifications_event_body_preserves_public_fields_and_redacts_secrets() {         let target = SinkTarget::HttpEndpoint("https://controller.example/events".into());         let mut message = message();
  • Network accessline 1178
    let target = SinkTarget::HttpEndpoint("https://controller.example/events".into());
  • Network accessline 1181
    let expected = json!({"repo": "owner/repo", "thread_id": "12345678901234567890",             "reason": "review_requested", "subject_type": "PullRequest", "title": "A PR",             "number": 12, "url": "https://github.com/owner/repo/pull/
  • Network accessline 1182
    "reason": "review_requested", "subject_type": "PullRequest", "title": "A PR",             "number": 12, "url": "https://github.com/owner/repo/pull/12",             "updated_at": "2026-10-15T00:00:01Z"});
  • Network accessline 1183
    "number": 12, "url": "https://github.com/owner/repo/pull/12",
  • Network accessline 1196
    #[test]     fn top_level_timestamp_prefers_valid_event_timestamp_then_timestamp() {         let target = SinkTarget::HttpEndpoint("https://controller.example/events".into());
  • Network accessline 1197
    fn top_level_timestamp_prefers_valid_event_timestamp_then_timestamp() {         let target = SinkTarget::HttpEndpoint("https://controller.example/events".into());         let mut message = message();
  • Network accessline 1198
    let target = SinkTarget::HttpEndpoint("https://controller.example/events".into());
  • Network accessline 1216
    #[test]     fn top_level_timestamp_uses_stable_ingress_and_epoch_fallbacks() {         let target = SinkTarget::HttpEndpoint("https://controller.example/events".into());
  • Network accessline 1217
    fn top_level_timestamp_uses_stable_ingress_and_epoch_fallbacks() {         let target = SinkTarget::HttpEndpoint("https://controller.example/events".into());         let mut message = message();
  • Network accessline 1218
    let target = SinkTarget::HttpEndpoint("https://controller.example/events".into());
  • Network accessline 1254
    (headers, body)         });         let endpoint = format!("http://{addr}/webhooks/clawhip-controller");
  • Network accessline 1255
    });         let endpoint = format!("http://{addr}/webhooks/clawhip-controller");         let target = SinkTarget::HttpEndpoint(endpoint);
  • Network accessline 1256
    let endpoint = format!("http://{addr}/webhooks/clawhip-controller");
  • Network accessline 1299
    let _ = read_request(&mut stream).await;             let response = format!(                 "HTTP/1.1 302 Found\r\nlocation: http://{target_addr}/redirected\r\ncontent-length: 0\r\nconnection: close\r\n\r\n"
  • Network accessline 1300
    let response = format!(                 "HTTP/1.1 302 Found\r\nlocation: http://{target_addr}/redirected\r\ncontent-length: 0\r\nconnection: close\r\n\r\n"             );
  • Network accessline 1301
    "HTTP/1.1 302 Found\r\nlocation: http://{target_addr}/redirected\r\ncontent-length: 0\r\nconnection: close\r\n\r\n"
  • Network accessline 1306
    let sink = HttpSink::new(b"secret").unwrap();         let endpoint = SinkTarget::HttpEndpoint(format!(             "http://{redirector_addr}/webhooks/clawhip-controller"
  • Network accessline 1307
    let endpoint = SinkTarget::HttpEndpoint(format!(             "http://{redirector_addr}/webhooks/clawhip-controller"         ));
  • Network accessline 1308
    "http://{redirector_addr}/webhooks/clawhip-controller"
  • Network accessline 1337
    stream.write_all(response.as_bytes()).await.unwrap();         });         let endpoint = format!("http://{addr}/webhooks/private-controller");
  • Network accessline 1338
    });         let endpoint = format!("http://{addr}/webhooks/private-controller");         let sink = HttpSink::new(b"secret").unwrap();
  • Network accessline 1339
    let endpoint = format!("http://{addr}/webhooks/private-controller");
  • Network accessline 1362
    tokio::time::sleep(Duration::from_millis(200)).await;         });         let endpoint = format!("http://{addr}/webhooks/private-controller");
  • Network accessline 1363
    });         let endpoint = format!("http://{addr}/webhooks/private-controller");         let sink = HttpSink::with_request_timeout(b"secret", Duration::from_millis(50)).unwrap();
  • Network accessline 1364
    let endpoint = format!("http://{addr}/webhooks/private-controller");
  • Network accessline 1386
    unsafe { std::env::set_var(name, "env-secret") };         let config = HttpConfig {             endpoint: Some("http://127.0.0.1:8644/webhooks/clawhip-controller".into()),
  • Network accessline 1387
    let config = HttpConfig {             endpoint: Some("http://127.0.0.1:8644/webhooks/clawhip-controller".into()),             hmac_secret_env: Some(name.into()),
  • Network accessline 1388
    endpoint: Some("http://127.0.0.1:8644/webhooks/clawhip-controller".into()),
  • Network accessline 1398
    #[test]     fn json_shaped_secrets_are_redacted() {         let target = SinkTarget::HttpEndpoint("https://controller.example/events".into());
  • Network accessline 1399
    fn json_shaped_secrets_are_redacted() {         let target = SinkTarget::HttpEndpoint("https://controller.example/events".into());         let mut message = message();
  • Network accessline 1400
    let target = SinkTarget::HttpEndpoint("https://controller.example/events".into());
  • Network accessline 1422
    [Credential-related source omitted]
  • Network accessline 1423
    [Credential-related source omitted]
  • Network accessline 1424
    [Credential-related source omitted]
  • Network accessline 1443
    // P1 regression: when a JSON secret starts before the summary limit but         // its closing quote falls after truncation, the prefix must be redacted         let target = SinkTarget::HttpEndpoint("https://controller.example/events".into
  • Network accessline 1444
    // its closing quote falls after truncation, the prefix must be redacted         let target = SinkTarget::HttpEndpoint("https://controller.example/events".into());         let mut message = message();
  • Network accessline 1445
    let target = SinkTarget::HttpEndpoint("https://controller.example/events".into());
  • Access to secretsline 1449
    [Credential-related source omitted]
  • Network accessline 1467
    [Credential-related source omitted]
  • Access to secretsline 1467
    [Credential-related source omitted]
  • Network accessline 1468
    // must be redacted, not just simple 'token' and 'secret'         let target = SinkTarget::HttpEndpoint("https://controller.example/events".into());         let mut message = message();
  • Network accessline 1469
    let target = SinkTarget::HttpEndpoint("https://controller.example/events".into());
  • Access to secretsline 1472
    [Credential-related source omitted]
  • Access to secretsline 1474
    [Credential-related source omitted]
  • Access to secretsline 1475
    [Credential-related source omitted]
  • Access to secretsline 1486
    [Credential-related source omitted]
  • Access to secretsline 1494
    [Credential-related source omitted]
  • Access to secretsline 1496
    [Credential-related source omitted]
  • Network accessline 1507
    // This test verifies that the function completes efficiently (no panic)         // and produces valid output for normal text.         let target = SinkTarget::HttpEndpoint("https://controller.example/events".into());
  • Network accessline 1508
    // and produces valid output for normal text.         let target = SinkTarget::HttpEndpoint("https://controller.example/events".into());         let mut message = message();
  • Network accessline 1509
    let target = SinkTarget::HttpEndpoint("https://controller.example/events".into());
  • Network accessline 1531
    // like {"id":"123"}, the old code would panic on array indexing.         // Verify it now handles this gracefully.         let target = SinkTarget::HttpEndpoint("https://controller.example/events".into());
  • Network accessline 1532
    // Verify it now handles this gracefully.         let target = SinkTarget::HttpEndpoint("https://controller.example/events".into());         let mut message = message();
  • Network accessline 1533
    let target = SinkTarget::HttpEndpoint("https://controller.example/events".into());
  • Network accessline 1550
    [Credential-related source omitted]
  • Network accessline 1551
    [Credential-related source omitted]
  • Access to secretsline 1551
    [Credential-related source omitted]
  • Network accessline 1552
    let target = SinkTarget::HttpEndpoint("https://controller.example/events".into());
  • Access to secretsline 1554
    [Credential-related source omitted]
  • Access to secretsline 1562
    [Credential-related source omitted]
  • Network accessline 1569
    // P1 regression: the JSON redactor must use the full is_sensitive_field         // predicate, including "cookie", "webhook", and other fields.         let target = SinkTarget::HttpEndpoint("https://controller.example/events".into());
  • Network accessline 1570
    // predicate, including "cookie", "webhook", and other fields.         let target = SinkTarget::HttpEndpoint("https://controller.example/events".into());         let mut message = message();
  • Network accessline 1571
    let target = SinkTarget::HttpEndpoint("https://controller.example/events".into());
  • Network accessline 1573
    [Credential-related source omitted]
  • Network accessline 1574
    [Credential-related source omitted]
  • Network accessline 1575
    [Credential-related source omitted]
  • Dangerous shell operationline 1576
    "command":"rm -rf /",
  • Dangerous shell operationline 1590
    assert!(!rendered.contains("rm -rf"), "command value leaked");
  • Network accessline 1596
    // P1 regression: non-string JSON values like numbers, objects, and arrays         // must be redacted, not just quoted strings.         let target = SinkTarget::HttpEndpoint("https://controller.example/events".into());
  • Network accessline 1597
    // must be redacted, not just quoted strings.         let target = SinkTarget::HttpEndpoint("https://controller.example/events".into());         let mut message = message();
  • Network accessline 1598
    let target = SinkTarget::HttpEndpoint("https://controller.example/events".into());
  • Access to secretsline 1604
    [Credential-related source omitted]
  • Access to secretsline 1622
    [Credential-related source omitted]
  • Access to secretsline 1623
    [Credential-related source omitted]
  • Network accessline 1629
    // P1 regression: JSON keys with Unicode escapes like {"to\u006ben":"secret"}         // represent a "token" field but were not recognized.         let target = SinkTarget::HttpEndpoint("https://controller.example/events".into());
  • Network accessline 1630
    // represent a "token" field but were not recognized.         let target = SinkTarget::HttpEndpoint("https://controller.example/events".into());         let mut message = message();
  • Network accessline 1631
    let target = SinkTarget::HttpEndpoint("https://controller.example/events".into());
  • Network accessline 1649
    // P1 regression: if the input begins with ":, the old code would search         // backwards for a quote and panic on range 1..0. Now it must guard against this.         let target = SinkTarget::HttpEndpoint("https://controller.example/eve
  • Network accessline 1650
    // backwards for a quote and panic on range 1..0. Now it must guard against this.         let target = SinkTarget::HttpEndpoint("https://controller.example/events".into());         let mut message = message();
  • Network accessline 1651
    let target = SinkTarget::HttpEndpoint("https://controller.example/events".into());
  • Network accessline 1669
    // P1 regression: fallback scanner must handle truncated and malformed JSON,         // including missing closing braces, unclosed strings, etc.         let target = SinkTarget::HttpEndpoint("https://controller.example/events".into());
  • Network accessline 1670
    // including missing closing braces, unclosed strings, etc.         let target = SinkTarget::HttpEndpoint("https://controller.example/events".into());         let mut message = message();
  • Network accessline 1671
    let target = SinkTarget::HttpEndpoint("https://controller.example/events".into());
  • Network accessline 1690
    // lowercase allocations in the primary path. This completes without         // quadratic copying overhead.         let target = SinkTarget::HttpEndpoint("https://controller.example/events".into());
  • Network accessline 1691
    // quadratic copying overhead.         let target = SinkTarget::HttpEndpoint("https://controller.example/events".into());         let mut message = message();
  • Network accessline 1692
    let target = SinkTarget::HttpEndpoint("https://controller.example/events".into());

src/source/git.rs

  • Network accessline 973
    return Some(rest.to_string());     }     if let Some(rest) = trimmed.strip_prefix("https://github.com/") {
  • Network accessline 974
    }     if let Some(rest) = trimmed.strip_prefix("https://github.com/") {         return Some(rest.to_string());
  • Network accessline 975
    if let Some(rest) = trimmed.strip_prefix("https://github.com/") {
  • Network accessline 1047
    );         assert_eq!(             parse_github_repo("https://github.com/bellman/clawhip.git"),
  • Network accessline 1048
    assert_eq!(             parse_github_repo("https://github.com/bellman/clawhip.git"),             Some("bellman/clawhip".to_string())
  • Network accessline 1049
    parse_github_repo("https://github.com/bellman/clawhip.git"),

src/source/github.rs

  • Access to secretsline 99
    [Credential-related source omitted]
  • Network accessline 4626
    client.backoff.lock().unwrap().until =             Some(std::time::Instant::now() + Duration::from_secs(60));         let error = github_get(&client, "http://127.0.0.1:1", "rate-limit", &[], "test")
  • Network accessline 4627
    Some(std::time::Instant::now() + Duration::from_secs(60));         let error = github_get(&client, "http://127.0.0.1:1", "rate-limit", &[], "test")             .await
  • Network accessline 4628
    let error = github_get(&client, "http://127.0.0.1:1", "rate-limit", &[], "test")
  • Network accessline 4660
    github_get(                 &successful_client,                 &format!("http://{addr}"),
  • Network accessline 4661
    &successful_client,                 &format!("http://{addr}"),                 "success",
  • Network accessline 4662
    &format!("http://{addr}"),
  • Network accessline 4678
    let error = github_get(             &backed_off_client,             "http://127.0.0.1:1",
  • Network accessline 4679
    &backed_off_client,             "http://127.0.0.1:1",             "rate-limit",
  • Network accessline 4680
    "http://127.0.0.1:1",
  • Network accessline 4802
    conclusion: conclusion.map(ToString::to_string),             sha: "abcdef1234567890".into(),             url: "https://github.com/Yeachan-Heo/clawhip/actions/runs/1".into(),
  • Network accessline 4803
    sha: "abcdef1234567890".into(),             url: "https://github.com/Yeachan-Heo/clawhip/actions/runs/1".into(),             branch: Some("feat/github-ci-events".into()),
  • Network accessline 4804
    url: "https://github.com/Yeachan-Heo/clawhip/actions/runs/1".into(),
  • Network accessline 4825
    conclusion: conclusion.map(ToString::to_string),             sha: format!("sha-{run_id}"),             url: format!("https://github.com/org/repo/actions/runs/{run_id}"),
  • Network accessline 4826
    sha: format!("sha-{run_id}"),             url: format!("https://github.com/org/repo/actions/runs/{run_id}"),             branch: Some(branch.into()),
  • Network accessline 4827
    url: format!("https://github.com/org/repo/actions/runs/{run_id}"),
  • Network accessline 5059
    conclusion: Some("success".into()),             sha: sha.into(),             url: "https://github.com/org/repo/pull/58".into(),
  • Network accessline 5060
    sha: sha.into(),             url: "https://github.com/org/repo/pull/58".into(),             branch: Some("feat/x".into()),
  • Network accessline 5061
    url: "https://github.com/org/repo/pull/58".into(),
  • Network accessline 5075
    let with_run_id = GitHubCISnapshot {             run_id: Some("4242".into()),             url: "https://github.com/org/repo/actions/runs/4242".into(),
  • Network accessline 5076
    run_id: Some("4242".into()),             url: "https://github.com/org/repo/actions/runs/4242".into(),             ..fallback.clone()
  • Network accessline 5077
    url: "https://github.com/org/repo/actions/runs/4242".into(),
  • Network accessline 5233
    let mut buf = vec![0_u8; 4096];                 let _ = stream.read(&mut buf).await;                 let body = r#"{"workflow_runs":[{"id": 9001, "name": "CI", "status": "completed", "conclusion": "success", "head_branch": "main", "head_sha
  • Network accessline 5234
    let _ = stream.read(&mut buf).await;                 let body = r#"{"workflow_runs":[{"id": 9001, "name": "CI", "status": "completed", "conclusion": "success", "head_branch": "main", "head_sha": "abc", "html_url": "https://github.com/org/re
  • Network accessline 5235
    let body = r#"{"workflow_runs":[{"id": 9001, "name": "CI", "status": "completed", "conclusion": "success", "head_branch": "main", "head_sha": "abc", "html_url": "https://github.com/org/repo/actions/runs/9001", "pull_requests": [], "created_
  • Network accessline 5244
    let mut config = AppConfig::default();         config.monitors.github_api_base = format!("http://{addr}");
  • Network accessline 5245
    config.monitors.github_api_base = format!("http://{addr}");
  • Network accessline 5753
    let request = String::from_utf8_lossy(&buf[..n]).to_string();                 let body = if request.contains("/pulls") {                     r#"[{"number":42,"title":"PR","state":"open","html_url":"https://github.com/org/repo/pull/42","head
  • Network accessline 5754
    let body = if request.contains("/pulls") {                     r#"[{"number":42,"title":"PR","state":"open","html_url":"https://github.com/org/repo/pull/42","head":{"ref":"feat/pr","sha":"prsha"}}]"#.to_string()                 } else if re
  • Network accessline 5755
    r#"[{"number":42,"title":"PR","state":"open","html_url":"https://github.com/org/repo/pull/42","head":{"ref":"feat/pr","sha":"prsha"}}]"#.to_string()
  • Network accessline 5757
    check_polls += 1;                     if check_polls <= 2 {                         r#"{"check_runs":[{"id":11,"name":"CI","status":"completed","conclusion":"success","details_url":"https://github.com/org/repo/actions/runs/4242/jobs/11","he
  • Network accessline 5758
    if check_polls <= 2 {                         r#"{"check_runs":[{"id":11,"name":"CI","status":"completed","conclusion":"success","details_url":"https://github.com/org/repo/actions/runs/4242/jobs/11","head_sha":"prsha"}]}"#.to_string()      
  • Network accessline 5759
    r#"{"check_runs":[{"id":11,"name":"CI","status":"completed","conclusion":"success","details_url":"https://github.com/org/repo/actions/runs/4242/jobs/11","head_sha":"prsha"}]}"#.to_string()
  • Network accessline 5760
    } else {                         r#"{"check_runs":[{"id":22,"name":"CI","status":"completed","conclusion":"failure","details_url":"https://github.com/org/repo/actions/runs/4242/jobs/22","head_sha":"prsha"}]}"#.to_string()                   
  • Network accessline 5761
    r#"{"check_runs":[{"id":22,"name":"CI","status":"completed","conclusion":"failure","details_url":"https://github.com/org/repo/actions/runs/4242/jobs/22","head_sha":"prsha"}]}"#.to_string()
  • Network accessline 5764
    if request.contains("head_sha=prsha") {                         if check_polls <= 2 {                             r#"{"workflow_runs":[{"id":4242,"name":"CI","status":"completed","conclusion":"success","head_branch":"feat/pr","head_sha":"pr
  • Network accessline 5765
    if check_polls <= 2 {                             r#"{"workflow_runs":[{"id":4242,"name":"CI","status":"completed","conclusion":"success","head_branch":"feat/pr","head_sha":"prsha","html_url":"https://github.com/org/repo/actions/runs/4242",
  • Network accessline 5766
    r#"{"workflow_runs":[{"id":4242,"name":"CI","status":"completed","conclusion":"success","head_branch":"feat/pr","head_sha":"prsha","html_url":"https://github.com/org/repo/actions/runs/4242","run_attempt":1,"pull_requests":[{"number":42}]}]}
  • Network accessline 5767
    } else {                             r#"{"workflow_runs":[{"id":4242,"name":"CI","status":"completed","conclusion":"failure","head_branch":"feat/pr","head_sha":"prsha","html_url":"https://github.com/org/repo/actions/runs/4242","run_attempt"
  • Network accessline 5768
    r#"{"workflow_runs":[{"id":4242,"name":"CI","status":"completed","conclusion":"failure","head_branch":"feat/pr","head_sha":"prsha","html_url":"https://github.com/org/repo/actions/runs/4242","run_attempt":2,"pull_requests":[{"number":42}]}]}
  • Network accessline 5785
    let baseline_path = dir.path().join("github-ci-baseline.json");         let mut config = AppConfig::default();         config.monitors.github_api_base = format!("http://{addr}");
  • Network accessline 5786
    let mut config = AppConfig::default();         config.monitors.github_api_base = format!("http://{addr}");         config.monitors.git.repos = vec![GitRepoMonitor {
  • Network accessline 5787
    config.monitors.github_api_base = format!("http://{addr}");
  • Network accessline 5928
    #[test]     fn issue_317_pagination_cycle_keys_normalize_variants_and_self_cycles() {         let first = "https://API.GITHUB.com:443/repos/org/repo/actions/runs/?b=2&a=1#ignored";
  • Network accessline 5929
    fn issue_317_pagination_cycle_keys_normalize_variants_and_self_cycles() {         let first = "https://API.GITHUB.com:443/repos/org/repo/actions/runs/?b=2&a=1#ignored";         let equivalent = "https://api.github.com/repos/org/repo/actions
  • Network accessline 5930
    let first = "https://API.GITHUB.com:443/repos/org/repo/actions/runs/?b=2&a=1#ignored";
  • Network accessline 5931
    let equivalent = "https://api.github.com/repos/org/repo/actions/runs?a=1&b=2";
  • Network accessline 5934
    let current = "https://api.github.com/repos/org/repo/actions/runs?page=1";
  • Network accessline 5935
    let self_cycle = "https://API.GITHUB.com:443/repos/org/repo/actions/runs/?page=1#next";
  • Network accessline 7104
    let conclusion = if *id == 9_001 { "failure" } else { "success" };                         format!(                             r#"{{"id":{id},"name":"CI","status":"completed","conclusion":"{conclusion}","head_branch":"main","head_sha":"sha
  • Network accessline 7105
    format!(                             r#"{{"id":{id},"name":"CI","status":"completed","conclusion":"{conclusion}","head_branch":"main","head_sha":"sha-{id}","html_url":"https://github.com/org/repo/actions/runs/{id}","pull_requests":[],"creat
  • Network accessline 7106
    r#"{{"id":{id},"name":"CI","status":"completed","conclusion":"{conclusion}","head_branch":"main","head_sha":"sha-{id}","html_url":"https://github.com/org/repo/actions/runs/{id}","pull_requests":[],"created_at":"2026-01-01T00:00:00Z","run_at
  • Network accessline 7111
    let next = page + 1;                 let response = format!(                     "HTTP/1.1 200 OK\r\ncontent-type: application/json\r\nlink: <http://{addr}/repos/org/repo/actions/runs?per_page=100&page={next}>; rel=\"next\"\r\nconnection: c
  • Network accessline 7112
    let response = format!(                     "HTTP/1.1 200 OK\r\ncontent-type: application/json\r\nlink: <http://{addr}/repos/org/repo/actions/runs?per_page=100&page={next}>; rel=\"next\"\r\nconnection: close\r\ncontent-length: {}\r\n\r\n{bo
  • Network accessline 7113
    "HTTP/1.1 200 OK\r\ncontent-type: application/json\r\nlink: <http://{addr}/repos/org/repo/actions/runs?per_page=100&page={next}>; rel=\"next\"\r\nconnection: close\r\ncontent-length: {}\r\n\r\n{body}",
  • Network accessline 7124
    let baseline_path = dir.path().join("github-ci-baseline.json");         let mut config = AppConfig::default();         config.monitors.github_api_base = format!("http://{addr}");
  • Network accessline 7125
    let mut config = AppConfig::default();         config.monitors.github_api_base = format!("http://{addr}");         config.monitors.git.repos = vec![GitRepoMonitor {
  • Network accessline 7126
    config.monitors.github_api_base = format!("http://{addr}");
  • Network accessline 7227
    let mut config = AppConfig::default();         config.monitors.github_api_base = format!("http://{addr}");
  • Network accessline 7228
    config.monitors.github_api_base = format!("http://{addr}");
  • Network accessline 7635
    .map(|id| {                         format!(                             r#"{{"id":{},"name":"CI","status":"completed","conclusion":"success","details_url":"https://github.com/org/repo/actions/runs/4242/jobs/{id}","head_sha":"prsha"}}"#,
  • Network accessline 7636
    format!(                             r#"{{"id":{},"name":"CI","status":"completed","conclusion":"success","details_url":"https://github.com/org/repo/actions/runs/4242/jobs/{id}","head_sha":"prsha"}}"#,                             id + 1
  • Network accessline 7637
    r#"{{"id":{},"name":"CI","status":"completed","conclusion":"success","details_url":"https://github.com/org/repo/actions/runs/4242/jobs/{id}","head_sha":"prsha"}}"#,
  • Network accessline 7643
    let next = page_hits + 1;                 let response = format!(                     "HTTP/1.1 200 OK\r\ncontent-type: application/json\r\nlink: <http://{addr}/repos/org/repo/commits/prsha/check-runs?page={next}>; rel=\"next\"\r\nconnectio
  • Network accessline 7644
    let response = format!(                     "HTTP/1.1 200 OK\r\ncontent-type: application/json\r\nlink: <http://{addr}/repos/org/repo/commits/prsha/check-runs?page={next}>; rel=\"next\"\r\nconnection: close\r\ncontent-length: {}\r\n\r\n{bod
  • Network accessline 7645
    "HTTP/1.1 200 OK\r\ncontent-type: application/json\r\nlink: <http://{addr}/repos/org/repo/commits/prsha/check-runs?page={next}>; rel=\"next\"\r\nconnection: close\r\ncontent-length: {}\r\n\r\n{body}",
  • Network accessline 7656
    title: "PR".into(),             status: "open".into(),             url: "https://github.com/org/repo/pull/42".into(),
  • Network accessline 7657
    status: "open".into(),             url: "https://github.com/org/repo/pull/42".into(),             head_branch: "feat/pr".into(),
  • Network accessline 7658
    url: "https://github.com/org/repo/pull/42".into(),
  • Network accessline 7664
    let client = build_github_client(None).unwrap();         let (runs, complete) =             fetch_check_runs(&client, &format!("http://{addr}"), "org/repo", 42, &pr)
  • Network accessline 7665
    let (runs, complete) =             fetch_check_runs(&client, &format!("http://{addr}"), "org/repo", 42, &pr)                 .await
  • Network accessline 7666
    fetch_check_runs(&client, &format!("http://{addr}"), "org/repo", 42, &pr)
  • Network accessline 7880
    };                     format!(                         r#"{{"id": {id}, "name": "CI", "status": "completed", "conclusion": "{conclusion}", "head_branch": "main", "head_sha": "sha-{id}", "html_url": "https://github.com/org/repo/actions/runs
  • Network accessline 7881
    format!(                         r#"{{"id": {id}, "name": "CI", "status": "completed", "conclusion": "{conclusion}", "head_branch": "main", "head_sha": "sha-{id}", "html_url": "https://github.com/org/repo/actions/runs/{id}", "pull_requests"
  • Network accessline 7882
    r#"{{"id": {id}, "name": "CI", "status": "completed", "conclusion": "{conclusion}", "head_branch": "main", "head_sha": "sha-{id}", "html_url": "https://github.com/org/repo/actions/runs/{id}", "pull_requests": []}}"#
  • Network accessline 7919
    let n = stream.read(&mut buf).await.unwrap();                 let request = String::from_utf8_lossy(&buf[..n]).to_string();                 requests.push(request.clone());
  • Network accessline 7920
    let request = String::from_utf8_lossy(&buf[..n]).to_string();                 requests.push(request.clone());                 request_count_for_server.fetch_add(1, Ordering::SeqCst);
  • Network accessline 7921
    requests.push(request.clone());
  • Network accessline 7947
    let mut config = AppConfig::default();         config.monitors.github_api_base = format!("http://{addr}");
  • Network accessline 7948
    config.monitors.github_api_base = format!("http://{addr}");
  • Network accessline 8042
    let requests = server.await.unwrap();         // Four CI polls; issues, pulls, and issue comments add three requests per poll.         assert_eq!(requests.len(), 16);
  • Network accessline 8043
    // Four CI polls; issues, pulls, and issue comments add three requests per poll.         assert_eq!(requests.len(), 16);         assert_eq!(
  • Network accessline 8044
    assert_eq!(requests.len(), 16);
  • Network accessline 8072
    "head_branch": "main",                     "head_sha": "deadbeef",                     "html_url": "https://github.com/ultraworkers/claw-code/actions/runs/24007460067",
  • Network accessline 8073
    "head_sha": "deadbeef",                     "html_url": "https://github.com/ultraworkers/claw-code/actions/runs/24007460067",                     "pull_requests": []
  • Network accessline 8074
    "html_url": "https://github.com/ultraworkers/claw-code/actions/runs/24007460067",
  • Network accessline 8088
    let mut config = AppConfig::default();         config.monitors.github_api_base = format!("http://{addr}");
  • Network accessline 8089
    config.monitors.github_api_base = format!("http://{addr}");
  • Network accessline 8134
    "status": "completed",                         "conclusion": "failure",                         "details_url": "https://github.com/org/repo/actions/runs/123/jobs/1",
  • Network accessline 8135
    "conclusion": "failure",                         "details_url": "https://github.com/org/repo/actions/runs/123/jobs/1",                         "head_sha": "prsha"
  • Network accessline 8136
    "details_url": "https://github.com/org/repo/actions/runs/123/jobs/1",
  • Network accessline 8147
    "head_branch": "feat/pr",                         "head_sha": "prsha",                         "html_url": "https://github.com/org/repo/actions/runs/123",
  • Network accessline 8148
    "head_sha": "prsha",                         "html_url": "https://github.com/org/repo/actions/runs/123",                         "run_attempt": 1,
  • Network accessline 8149
    "html_url": "https://github.com/org/repo/actions/runs/123",
  • Network accessline 8161
    "head_branch": "main",                         "head_sha": "mainsha",                         "html_url": "https://github.com/org/repo/actions/runs/456",
  • Network accessline 8162
    "head_sha": "mainsha",                         "html_url": "https://github.com/org/repo/actions/runs/456",                         "pull_requests": []
  • Network accessline 8163
    "html_url": "https://github.com/org/repo/actions/runs/456",
  • Network accessline 8172
    let mut buf = vec![0_u8; 4096];                 let n = stream.read(&mut buf).await.unwrap();                 requests.push(String::from_utf8_lossy(&buf[..n]).to_string());
  • Network accessline 8173
    let n = stream.read(&mut buf).await.unwrap();                 requests.push(String::from_utf8_lossy(&buf[..n]).to_string());                 // connection: close prevents reqwest from reusing the TCP
  • Network accessline 8174
    requests.push(String::from_utf8_lossy(&buf[..n]).to_string());
  • Network accessline 8201
    title: "PR".into(),             status: "open".into(),             url: "https://github.com/org/repo/pull/42".into(),
  • Network accessline 8202
    status: "open".into(),             url: "https://github.com/org/repo/pull/42".into(),             head_branch: "feat/pr".into(),
  • Network accessline 8203
    url: "https://github.com/org/repo/pull/42".into(),
  • Network accessline 8211
    let (ci, window_complete) = fetch_ci_statuses(             &client,             &format!("http://{addr}"),
  • Network accessline 8212
    &client,             &format!("http://{addr}"),             &GitRepoMonitor::default(),
  • Network accessline 8213
    &format!("http://{addr}"),
  • Network accessline 8236
    let requests = server.await.unwrap();         assert_eq!(requests.len(), 3);
  • Network accessline 8237
    assert_eq!(requests.len(), 3);
  • Network accessline 8273
    assert_eq!(             events[0].payload["url"],             json!("https://github.com/Yeachan-Heo/clawhip/actions/runs/1")
  • Network accessline 8274
    events[0].payload["url"],             json!("https://github.com/Yeachan-Heo/clawhip/actions/runs/1")         );
  • Network accessline 8275
    json!("https://github.com/Yeachan-Heo/clawhip/actions/runs/1")
  • Network accessline 8426
    let _ = client             .http             .get(format!("http://{}/repos/x/y/pulls", addr))
  • Network accessline 8427
    .http             .get(format!("http://{}/repos/x/y/pulls", addr))             .send()
  • Network accessline 8428
    .get(format!("http://{}/repos/x/y/pulls", addr))
  • Network accessline 8473
    let mut buf = vec![0_u8; 4096];                 let n = stream.read(&mut buf).await.unwrap();                 requests.push(String::from_utf8_lossy(&buf[..n]).to_string());
  • Network accessline 8474
    let n = stream.read(&mut buf).await.unwrap();                 requests.push(String::from_utf8_lossy(&buf[..n]).to_string());                 request_count_for_server.fetch_add(1, Ordering::SeqCst);
  • Network accessline 8475
    requests.push(String::from_utf8_lossy(&buf[..n]).to_string());
  • Network accessline 8483
    let mut config = AppConfig::default();         config.monitors.poll_interval_secs = 1;         config.monitors.github_api_base = format!("http://{addr}");
  • Network accessline 8484
    config.monitors.poll_interval_secs = 1;         config.monitors.github_api_base = format!("http://{addr}");         config.monitors.git.repos = vec![GitRepoMonitor {
  • Network accessline 8485
    config.monitors.github_api_base = format!("http://{addr}");
  • Network accessline 8518
    let requests = server.await.unwrap();         assert_eq!(requests.len(), 4);
  • Network accessline 8519
    assert_eq!(requests.len(), 4);
  • Network accessline 8548
    use tokio::io::{AsyncReadExt, AsyncWriteExt};         let listener = tokio::net::TcpListener::bind("127.0.0.1:0").await.unwrap();         let base = format!("http://{}", listener.local_addr().unwrap());
  • Network accessline 8549
    let listener = tokio::net::TcpListener::bind("127.0.0.1:0").await.unwrap();         let base = format!("http://{}", listener.local_addr().unwrap());         let requests = Arc::new(Mutex::new(Vec::new()));
  • Network accessline 8550
    let base = format!("http://{}", listener.local_addr().unwrap());         let requests = Arc::new(Mutex::new(Vec::new()));         let captured = requests.clone();
  • Network accessline 8551
    let requests = Arc::new(Mutex::new(Vec::new()));         let captured = requests.clone();         let server_base = base.clone();
  • Network accessline 8552
    let captured = requests.clone();
  • Network accessline 8590
    fn activity_pr(number: u64, updated_at: &str) -> serde_json::Value {         json!({"number": number, "title": "A PR", "state": "open", "html_url": "https://github.com/org/repo/pull/1",
  • Network accessline 8591
    json!({"number": number, "title": "A PR", "state": "open", "html_url": "https://github.com/org/repo/pull/1",
  • Network accessline 8600
    updated_at: &str,     ) -> serde_json::Value {         json!({"id": id, "issue_url": format!("https://api.github.com/repos/org/repo/issues/{number}"),
  • Network accessline 8601
    ) -> serde_json::Value {         json!({"id": id, "issue_url": format!("https://api.github.com/repos/org/repo/issues/{number}"),             "pull_request_url": format!("https://api.github.com/repos/org/repo/pulls/{number}"),
  • Network accessline 8602
    json!({"id": id, "issue_url": format!("https://api.github.com/repos/org/repo/issues/{number}"),
  • Network accessline 8603
    "pull_request_url": format!("https://api.github.com/repos/org/repo/pulls/{number}"),
  • Network accessline 8604
    "html_url": format!("https://github.com/org/repo/pull/{number}#comment-{id}"),
  • Network accessline 8609
    fn activity_review(id: u64, state: &str, submitted_at: &str) -> serde_json::Value {         json!({"id": id, "state": state, "submitted_at": submitted_at,             "user": {"login": "reviewer"}, "html_url": format!("https://github.com/or
  • Network accessline 8610
    json!({"id": id, "state": state, "submitted_at": submitted_at,             "user": {"login": "reviewer"}, "html_url": format!("https://github.com/org/repo/pull/1#review-{id}"),             "body": "private review text"})
  • Network accessline 8611
    "user": {"login": "reviewer"}, "html_url": format!("https://github.com/org/repo/pull/1#review-{id}"),
  • Network accessline 8772
    let mut comment = activity_comment(id, 10, created, updated);         comment["html_url"] = json!(format!(             "https://github.com/org/repo/issues/10#issuecomment-{id}"
  • Network accessline 8773
    comment["html_url"] = json!(format!(             "https://github.com/org/repo/issues/10#issuecomment-{id}"         ));
  • Network accessline 8774
    "https://github.com/org/repo/issues/10#issuecomment-{id}"
  • Network accessline 8908
    {"number": 10, "title": "An issue", "state": "open", "comments": comments},                     {"number": 1, "title": "A PR", "state": "open", "comments": comments,                      "pull_request": {"url": "https://api.github.com/repos
  • Network accessline 8909
    {"number": 1, "title": "A PR", "state": "open", "comments": comments,                      "pull_request": {"url": "https://api.github.com/repos/org/repo/pulls/1"}}                 ]),
  • Network accessline 8910
    "pull_request": {"url": "https://api.github.com/repos/org/repo/pulls/1"}}
  • Network accessline 8936
    );         assert_eq!(             *requests.lock().unwrap(),
  • Network accessline 8937
    assert_eq!(             *requests.lock().unwrap(),             [
  • Network accessline 8938
    *requests.lock().unwrap(),
  • Network accessline 8987
    json!({"repo": "repo", "number": 2, "title": "A PR",             "author": "commenter", "pr_author": "pr-owner", "comment_id": 2,             "url": "https://github.com/org/repo/pull/2#comment-2"})
  • Network accessline 8988
    "author": "commenter", "pr_author": "pr-owner", "comment_id": 2,             "url": "https://github.com/org/repo/pull/2#comment-2"})         );
  • Network accessline 8989
    "url": "https://github.com/org/repo/pull/2#comment-2"})
  • Network accessline 9056
    assert!(harness.poll().await.is_empty());         assert_eq!(             requests.lock().unwrap().len(),
  • Network accessline 9057
    assert_eq!(             requests.lock().unwrap().len(),             4,
  • Network accessline 9058
    requests.lock().unwrap().len(),
  • Network accessline 9229
    assert!(harness.client.backoff.lock().unwrap().until.is_some());             assert!(harness.poll().await.is_empty());             assert_eq!(requests.lock().unwrap().len(), 9);
  • Network accessline 9230
    assert!(harness.poll().await.is_empty());             assert_eq!(requests.lock().unwrap().len(), 9);             let activity = &harness.repo_state().activity;
  • Network accessline 9231
    assert_eq!(requests.lock().unwrap().len(), 9);
  • Network accessline 9300
    Some(ACTIVITY_T1)         );         let first_poll_requests = requests.lock().unwrap().len();
  • Network accessline 9301
    );         let first_poll_requests = requests.lock().unwrap().len();         assert_eq!(first_poll_requests, 8 + MAX_PR_METADATA_LOOKUPS);
  • Network accessline 9302
    let first_poll_requests = requests.lock().unwrap().len();
  • Network accessline 9578
    Some(ACTIVITY_T2)         );         let requests = requests.lock().unwrap().clone();
  • Network accessline 9579
    );         let requests = requests.lock().unwrap().clone();         let feed = &requests[7];
  • Network accessline 9580
    let requests = requests.lock().unwrap().clone();
  • Network accessline 9894
    Some(ACTIVITY_T1)         );         let requests = requests.lock().unwrap().clone();
  • Network accessline 9895
    );         let requests = requests.lock().unwrap().clone();         assert!(requests[5].contains("sort=updated") && requests[5].contains("direction=desc"));
  • Network accessline 9896
    let requests = requests.lock().unwrap().clone();
  • Network accessline 9948
    Some(ACTIVITY_T1)         );         let requests = requests.lock().unwrap().clone();
  • Network accessline 9949
    );         let requests = requests.lock().unwrap().clone();         assert!(requests[5].contains("page=1") && requests[6].contains("page=2"));
  • Network accessline 9950
    let requests = requests.lock().unwrap().clone();
  • Network accessline 9951
    assert!(requests[5].contains("page=1") && requests[6].contains("page=2"));         assert_eq!(requests.len(), 12);         server.await.unwrap();
  • Network accessline 9952
    assert_eq!(requests.len(), 12);
  • Network accessline 10164
    (1002..=1101).rev().collect::<VecDeque<_>>()         );         assert_eq!(requests.lock().unwrap().len(), 4);
  • Network accessline 10165
    );         assert_eq!(requests.lock().unwrap().len(), 4);         assert!(requests.lock().unwrap()[3].contains("direction=desc"));
  • Network accessline 10166
    assert_eq!(requests.lock().unwrap().len(), 4);
  • Network accessline 10167
    assert!(requests.lock().unwrap()[3].contains("direction=desc"));
  • Network accessline 10213
    assert!(harness.repo_state().activity.review_scan.is_none());         assert_eq!(harness.repo_state().activity.emitted_review_ids, [1]);         assert_eq!(requests.lock().unwrap().len(), 5);
  • Network accessline 10214
    assert_eq!(harness.repo_state().activity.emitted_review_ids, [1]);         assert_eq!(requests.lock().unwrap().len(), 5);         let events = harness.poll().await;
  • Network accessline 10215
    assert_eq!(requests.lock().unwrap().len(), 5);
  • Network accessline 10303
    let mut comment = activity_comment(id, 2, ACTIVITY_T1, ACTIVITY_T1);             comment["html_url"] = json!(format!(                 "https://github.com/org/repo/issues/2#issuecomment-{id}"
  • Network accessline 10304
    comment["html_url"] = json!(format!(                 "https://github.com/org/repo/issues/2#issuecomment-{id}"             ));
  • Network accessline 10305
    "https://github.com/org/repo/issues/2#issuecomment-{id}"

src/source/github_notifications.rs

  • Network accessline 521
    .filter(|url| url.host_str() != Some("api.github.com"))         .map(|url| url.origin().ascii_serialization())         .unwrap_or_else(|| "https://github.com".into());
  • Network accessline 522
    .map(|url| url.origin().ascii_serialization())         .unwrap_or_else(|| "https://github.com".into());     let fallback = format!("{web_base}/{repo}");
  • Network accessline 523
    .unwrap_or_else(|| "https://github.com".into());
  • Network accessline 597
    "repository": {"full_name": "owner/repo", "private": true},             "subject": {"title": "A PR", "type": "PullRequest",                 "url": "https://api.github.com/repos/owner/repo/pulls/12",
  • Network accessline 598
    "subject": {"title": "A PR", "type": "PullRequest",                 "url": "https://api.github.com/repos/owner/repo/pulls/12",                 "latest_comment_url": "https://api.github.com/repos/owner/repo/issues/comments/123"},
  • Network accessline 599
    "url": "https://api.github.com/repos/owner/repo/pulls/12",
  • Network accessline 600
    "latest_comment_url": "https://api.github.com/repos/owner/repo/issues/comments/123"},
  • Network accessline 651
    ) -> Server {         let listener = tokio::net::TcpListener::bind("127.0.0.1:0").await.unwrap();         let base = format!("http://{}", listener.local_addr().unwrap());
  • Network accessline 652
    let listener = tokio::net::TcpListener::bind("127.0.0.1:0").await.unwrap();         let base = format!("http://{}", listener.local_addr().unwrap());         let requests = Arc::new(Mutex::new(Vec::new()));
  • Network accessline 653
    let base = format!("http://{}", listener.local_addr().unwrap());         let requests = Arc::new(Mutex::new(Vec::new()));         let captured = requests.clone();
  • Network accessline 654
    let requests = Arc::new(Mutex::new(Vec::new()));         let captured = requests.clone();         let server_base = base.clone();
  • Network accessline 655
    let captured = requests.clone();
  • Network accessline 758
    }             let path = request.split_whitespace().nth(1).unwrap();             let url = reqwest::Url::parse(&format!("http://localhost{path}")).unwrap();
  • Network accessline 759
    let path = request.split_whitespace().nth(1).unwrap();             let url = reqwest::Url::parse(&format!("http://localhost{path}")).unwrap();             let query: HashMap<_, _> = url.query_pairs().into_owned().collect();
  • Network accessline 760
    let url = reqwest::Url::parse(&format!("http://localhost{path}")).unwrap();
  • Network accessline 843
    state: &mut MonitorState,     ) {         let start = server.requests.lock().unwrap().len();
  • Network accessline 844
    ) {         let start = server.requests.lock().unwrap().len();         let catch_up = state.catch_up.clone();
  • Network accessline 845
    let start = server.requests.lock().unwrap().len();
  • Network accessline 847
    let watermark = state.watermark;         poll_once(config, client, tx, state).await.unwrap();         let requests = server.requests.lock().unwrap();
  • Network accessline 848
    poll_once(config, client, tx, state).await.unwrap();         let requests = server.requests.lock().unwrap();         assert!(requests.len() - start <= MAX_PAGES);
  • Network accessline 849
    let requests = server.requests.lock().unwrap();
  • Network accessline 850
    assert!(requests.len() - start <= MAX_PAGES);
  • Network accessline 925
    json!({"repo": "owner/repo", "thread_id": "1",             "reason": "review_requested", "subject_type": "PullRequest", "title": "A PR",             "number": 12, "url": "https://github.com/owner/repo/pull/12#issuecomment-123",
  • Network accessline 926
    "reason": "review_requested", "subject_type": "PullRequest", "title": "A PR",             "number": 12, "url": "https://github.com/owner/repo/pull/12#issuecomment-123",             "updated_at": NEW})
  • Network accessline 927
    "number": 12, "url": "https://github.com/owner/repo/pull/12#issuecomment-123",
  • Network accessline 971
    poll_once(&config, &client, &tx, &mut state).await.unwrap();         assert!(rx.try_recv().is_err());         let requests = server.requests.lock().unwrap();
  • Network accessline 972
    [Credential-related source omitted]
  • Network accessline 973
    let requests = server.requests.lock().unwrap();
  • Network accessline 1010
    assert_eq!(state.interval(60), Duration::from_secs(180));         assert_eq!(state.interval(300), Duration::from_secs(300));         assert!(server.requests.lock().unwrap()[1].contains(OLD_CONDITIONAL));
  • Network accessline 1011
    assert_eq!(state.interval(300), Duration::from_secs(300));         assert!(server.requests.lock().unwrap()[1].contains(OLD_CONDITIONAL));     }
  • Network accessline 1012
    assert!(server.requests.lock().unwrap()[1].contains(OLD_CONDITIONAL));
  • Network accessline 1035
    assert!(rx.try_recv().is_err());         assert!(             server.requests.lock().unwrap()[1]
  • Network accessline 1036
    assert!(             server.requests.lock().unwrap()[1]                 .contains("if-modified-since: Wed, 14 Oct 2026 23:50:00 GMT")
  • Network accessline 1037
    server.requests.lock().unwrap()[1]
  • Network accessline 1090
    assert!(rx.try_recv().is_err());         }         assert_eq!(server.requests.lock().unwrap().len(), 8);
  • Network accessline 1091
    }         assert_eq!(server.requests.lock().unwrap().len(), 8);     }
  • Network accessline 1092
    assert_eq!(server.requests.lock().unwrap().len(), 8);
  • Network accessline 1121
    assert!(rx.try_recv().is_err());         assert_eq!(state.threads.len(), 4);         for request in server.requests.lock().unwrap().iter() {
  • Network accessline 1122
    assert_eq!(state.threads.len(), 4);         for request in server.requests.lock().unwrap().iter() {             assert!(request.starts_with("GET /notifications?"));
  • Network accessline 1123
    for request in server.requests.lock().unwrap().iter() {
  • Network accessline 1179
    poll_once(&config, &client, &tx, &mut state).await.unwrap();         assert!(rx.try_recv().is_err());         assert!(server.requests.lock().unwrap()[3].contains(OLD_CONDITIONAL));
  • Network accessline 1180
    assert!(rx.try_recv().is_err());         assert!(server.requests.lock().unwrap()[3].contains(OLD_CONDITIONAL));     }
  • Network accessline 1181
    assert!(server.requests.lock().unwrap()[3].contains(OLD_CONDITIONAL));
  • Network accessline 1223
    assert!(state.last_modified.is_some());         let baseline = state.watermark;         let conditional_start = server.requests.lock().unwrap().len();
  • Network accessline 1224
    let baseline = state.watermark;         let conditional_start = server.requests.lock().unwrap().len();         bounded_poll(&server, &config, &client, &tx, &mut state).await;
  • Network accessline 1225
    let conditional_start = server.requests.lock().unwrap().len();
  • Network accessline 1227
    assert_eq!(state.watermark, baseline);         assert!(rx.try_recv().is_err());         let requests = server.requests.lock().unwrap();
  • Network accessline 1228
    assert!(rx.try_recv().is_err());         let requests = server.requests.lock().unwrap();         assert!(!requests[0].contains("since="));
  • Network accessline 1229
    let requests = server.requests.lock().unwrap();
  • Network accessline 1230
    assert!(!requests[0].contains("since="));         assert!(requests.last().unwrap().contains("since="));         assert!(requests[conditional_start].contains("if-modified-since:"));
  • Network accessline 1231
    assert!(requests.last().unwrap().contains("since="));
  • Network accessline 1372
    ids.dedup();         assert_eq!(ids.len(), 252, "all tied IDs and fresh head emitted once");         let requests = server.requests.lock().unwrap();
  • Network accessline 1373
    assert_eq!(ids.len(), 252, "all tied IDs and fresh head emitted once");         let requests = server.requests.lock().unwrap();         assert!(
  • Network accessline 1374
    let requests = server.requests.lock().unwrap();
  • Network accessline 1378
    .any(|request| request.contains("before=2026-10-15T00%3A00%3A02Z"))         );         assert!(requests.iter().any(|request| request.contains("page=6")));
  • Network accessline 1379
    );         assert!(requests.iter().any(|request| request.contains("page=6")));     }
  • Network accessline 1380
    assert!(requests.iter().any(|request| request.contains("page=6")));
  • Network accessline 1408
    inbox.fail_at = Some(inbox.requests + 2); // head succeeds, backlog fails         }         let start = server.requests.lock().unwrap().len();
  • Network accessline 1409
    }         let start = server.requests.lock().unwrap().len();         assert!(poll_once(&config, &client, &tx, &mut state).await.is_err());
  • Network accessline 1410
    let start = server.requests.lock().unwrap().len();
  • Network accessline 1411
    assert!(poll_once(&config, &client, &tx, &mut state).await.is_err());         assert_eq!(server.requests.lock().unwrap().len() - start, 2);         assert_eq!(
  • Network accessline 1412
    assert_eq!(server.requests.lock().unwrap().len() - start, 2);
  • Network accessline 1428
    ids.dedup();         assert_eq!(ids.len(), 252);         let requests = server.requests.lock().unwrap();
  • Network accessline 1429
    assert_eq!(ids.len(), 252);         let requests = server.requests.lock().unwrap();         assert_eq!(
  • Network accessline 1430
    let requests = server.requests.lock().unwrap();
  • Network accessline 1473
    inbox.fail_at = Some(inbox.requests + 3);                 }                 let start = server.requests.lock().unwrap().len();
  • Network accessline 1474
    }                 let start = server.requests.lock().unwrap().len();                 assert!(poll_once(&config, &client, &tx, &mut state).await.is_err());
  • Network accessline 1475
    let start = server.requests.lock().unwrap().len();
  • Network accessline 1476
    assert!(poll_once(&config, &client, &tx, &mut state).await.is_err());                 assert_eq!(server.requests.lock().unwrap().len() - start, 3);                 assert_eq!(
  • Network accessline 1477
    assert_eq!(server.requests.lock().unwrap().len() - start, 3);
  • Network accessline 1634
    inbox.fail_at = Some(inbox.requests + MAX_PAGES);         }         let start = server.requests.lock().unwrap().len();
  • Network accessline 1635
    }         let start = server.requests.lock().unwrap().len();         assert!(poll_once(&config, &client, &tx, &mut state).await.is_err());
  • Network accessline 1636
    let start = server.requests.lock().unwrap().len();
  • Network accessline 1637
    assert!(poll_once(&config, &client, &tx, &mut state).await.is_err());         assert_eq!(server.requests.lock().unwrap().len() - start, MAX_PAGES);         assert_eq!(
  • Network accessline 1638
    assert_eq!(server.requests.lock().unwrap().len() - start, MAX_PAGES);
  • Network accessline 1703
    }         assert_eq!(state.catch_up.as_ref().unwrap().page, 5);         let start = server.requests.lock().unwrap().len();
  • Network accessline 1704
    assert_eq!(state.catch_up.as_ref().unwrap().page, 5);         let start = server.requests.lock().unwrap().len();         bounded_poll(&server, &config, &client, &tx, &mut state).await;
  • Network accessline 1705
    let start = server.requests.lock().unwrap().len();
  • Network accessline 1706
    bounded_poll(&server, &config, &client, &tx, &mut state).await;         assert_eq!(server.requests.lock().unwrap().len() - start, 5);         assert_eq!(state.catch_up.as_ref().unwrap().page, 9);
  • Network accessline 1707
    assert_eq!(server.requests.lock().unwrap().len() - start, 5);
  • Network accessline 1737
    .threads             .retain(|thread| thread["updated_at"] == NEW);         let start = server.requests.lock().unwrap().len();
  • Network accessline 1738
    .retain(|thread| thread["updated_at"] == NEW);         let start = server.requests.lock().unwrap().len();         bounded_poll(&server, &config, &client, &tx, &mut state).await;
  • Network accessline 1739
    let start = server.requests.lock().unwrap().len();
  • Network accessline 1740
    bounded_poll(&server, &config, &client, &tx, &mut state).await;         assert_eq!(server.requests.lock().unwrap().len() - start, 5);         assert_eq!(state.catch_up.as_ref().unwrap().page, page + 3);
  • Network accessline 1741
    assert_eq!(server.requests.lock().unwrap().len() - start, 5);
  • Network accessline 1872
    assert_eq!(received_ids(&mut rx), ["X"]);         assert!(             server.requests.lock().unwrap()[2]
  • Network accessline 1873
    assert!(             server.requests.lock().unwrap()[2]                 .contains("if-modified-since: Thu, 15 Oct 2026 00:05:00 GMT")
  • Network accessline 1874
    server.requests.lock().unwrap()[2]
  • Network accessline 2041
    .await         .unwrap();         assert!(server.requests.lock().unwrap().is_empty());
  • Network accessline 2042
    .unwrap();         assert!(server.requests.lock().unwrap().is_empty());         assert!(rx.try_recv().is_err());
  • Network accessline 2043
    assert!(server.requests.lock().unwrap().is_empty());
  • Network accessline 2102
    assert_eq!(rx.try_recv().unwrap().payload["thread_id"], "2");         assert!(rx.try_recv().is_err());         let requests = server.requests.lock().unwrap();
  • Network accessline 2103
    assert!(rx.try_recv().is_err());         let requests = server.requests.lock().unwrap();         assert!(requests[3].contains("if-modified-since:"));
  • Network accessline 2104
    let requests = server.requests.lock().unwrap();
  • Network accessline 2223
    // The backlog is bounded by the cutoff instead of draining history.         let before = server.requests.lock().unwrap().len();
  • Network accessline 2224
    let before = server.requests.lock().unwrap().len();
  • Network accessline 2225
    bounded_poll(&server, &config, &client, &tx, &mut state).await;         assert_eq!(server.requests.lock().unwrap().len() - before, 2);         assert!(state.catch_up.is_none());
  • Network accessline 2226
    assert_eq!(server.requests.lock().unwrap().len() - before, 2);
  • Network accessline 2309
    server.task.abort();         let listener = tokio::net::TcpListener::bind("127.0.0.1:0").await.unwrap();         config.monitors.github_api_base = format!("http://{}", listener.local_addr().unwrap());
  • Network accessline 2310
    let listener = tokio::net::TcpListener::bind("127.0.0.1:0").await.unwrap();         config.monitors.github_api_base = format!("http://{}", listener.local_addr().unwrap());         drop(listener); // Connection refused, without relying on an
  • Network accessline 2311
    config.monitors.github_api_base = format!("http://{}", listener.local_addr().unwrap());
  • Network accessline 2358
    .to_string();             assert!(error.contains("backoff"));             assert_eq!(server.requests.lock().unwrap().len(), 2);
  • Network accessline 2359
    assert!(error.contains("backoff"));             assert_eq!(server.requests.lock().unwrap().len(), 2);             assert_eq!(state.interval(60), Duration::from_secs(180));
  • Network accessline 2360
    assert_eq!(server.requests.lock().unwrap().len(), 2);
  • Network accessline 2377
    reply.headers.push((             "Link".into(),             "<https://untrusted.example/notifications?page=2>; rel=\"next\"".into(),
  • Network accessline 2378
    "Link".into(),             "<https://untrusted.example/notifications?page=2>; rel=\"next\"".into(),         ));
  • Network accessline 2379
    "<https://untrusted.example/notifications?page=2>; rel=\"next\"".into(),
  • Network accessline 2389
    .to_string();         assert!(error.contains("unsafe"));         assert_eq!(server.requests.lock().unwrap().len(), 1);
  • Network accessline 2390
    assert!(error.contains("unsafe"));         assert_eq!(server.requests.lock().unwrap().len(), 1);         assert!(state.threads.is_empty() && state.cutoff.is_none());
  • Network accessline 2391
    assert_eq!(server.requests.lock().unwrap().len(), 1);
  • Network accessline 2431
    fn notifications_subject_links_without_metadata_requests() {         let mut value = thread("1", NEW);         value["subject"]["url"] = json!("https://api.github.com/repos/owner/repo/issues/12");
  • Network accessline 2432
    let mut value = thread("1", NEW);         value["subject"]["url"] = json!("https://api.github.com/repos/owner/repo/issues/12");         let notification = serde_json::from_value(value.clone()).unwrap();
  • Network accessline 2433
    value["subject"]["url"] = json!("https://api.github.com/repos/owner/repo/issues/12");
  • Network accessline 2434
    let notification = serde_json::from_value(value.clone()).unwrap();         assert_eq!(             subject_link(&notification, "https://api.github.com"),
  • Network accessline 2435
    assert_eq!(             subject_link(&notification, "https://api.github.com"),             (
  • Network accessline 2436
    subject_link(&notification, "https://api.github.com"),
  • Network accessline 2437
    (                 Some(12),                 "https://github.com/owner/repo/issues/12#issuecomment-123".into()
  • Network accessline 2438
    Some(12),                 "https://github.com/owner/repo/issues/12#issuecomment-123".into()             )
  • Network accessline 2439
    "https://github.com/owner/repo/issues/12#issuecomment-123".into()
  • Network accessline 2441
    );         value["subject"]["latest_comment_url"] = Value::Null;         value["subject"]["url"] = json!("https://api.github.com/repos/owner/repo/commits/abc123");
  • Network accessline 2442
    value["subject"]["latest_comment_url"] = Value::Null;         value["subject"]["url"] = json!("https://api.github.com/repos/owner/repo/commits/abc123");         let notification = serde_json::from_value(value.clone()).unwrap();
  • Network accessline 2443
    value["subject"]["url"] = json!("https://api.github.com/repos/owner/repo/commits/abc123");
  • Network accessline 2444
    let notification = serde_json::from_value(value.clone()).unwrap();         assert_eq!(             subject_link(&notification, "https://api.github.com"),
  • Network accessline 2445
    assert_eq!(             subject_link(&notification, "https://api.github.com"),             (None, "https://github.com/owner/repo/commit/abc123".into())
  • Network accessline 2446
    subject_link(&notification, "https://api.github.com"),
  • Network accessline 2447
    (None, "https://github.com/owner/repo/commit/abc123".into())
  • Network accessline 2450
    let notification = serde_json::from_value(value.clone()).unwrap();         assert_eq!(             subject_link(&notification, "https://api.github.com"),
  • Network accessline 2451
    assert_eq!(             subject_link(&notification, "https://api.github.com"),             (None, "https://github.com/owner/repo".into())
  • Network accessline 2452
    subject_link(&notification, "https://api.github.com"),
  • Network accessline 2453
    (None, "https://github.com/owner/repo".into())
  • Network accessline 2454
    );         value["subject"]["url"] = json!("https://git.example/api/v3/repos/owner/repo/pulls/12");         let notification = serde_json::from_value(value).unwrap();
  • Network accessline 2455
    value["subject"]["url"] = json!("https://git.example/api/v3/repos/owner/repo/pulls/12");
  • Network accessline 2456
    let notification = serde_json::from_value(value).unwrap();         assert_eq!(             subject_link(&notification, "https://git.example/api/v3"),
  • Network accessline 2457
    assert_eq!(             subject_link(&notification, "https://git.example/api/v3"),             (Some(12), "https://git.example/owner/repo/pull/12".into())
  • Network accessline 2458
    subject_link(&notification, "https://git.example/api/v3"),
  • Network accessline 2459
    (Some(12), "https://git.example/owner/repo/pull/12".into())
  • Network accessline 2492
    ));         assert!(rx.try_recv().is_err());         assert_eq!(server.requests.lock().unwrap().len(), 2);
  • Network accessline 2493
    assert!(rx.try_recv().is_err());         assert_eq!(server.requests.lock().unwrap().len(), 2);     }
  • Network accessline 2494
    assert_eq!(server.requests.lock().unwrap().len(), 2);

src/source/github_pr_activity_metadata_tests.rs

  • Network accessline 229
    && event.payload["comment_id"] == poll * 22), "inline must emit within the next poll");         }         assert!(requests.lock().unwrap().iter().filter(|path| {
  • Network accessline 230
    }         assert!(requests.lock().unwrap().iter().filter(|path| {             path.starts_with("/repos/org/repo/pulls/") && !path.contains("comments")
  • Network accessline 231
    assert!(requests.lock().unwrap().iter().filter(|path| {
  • Network accessline 280
    }         assert!(harness.poll().await.is_empty());         assert_eq!(requests.lock().unwrap().iter().filter(|path| path.as_str() == "/repos/org/repo/pulls/99").count(), MAX_METADATA_ATTEMPTS);
  • Network accessline 281
    assert!(harness.poll().await.is_empty());         assert_eq!(requests.lock().unwrap().iter().filter(|path| path.as_str() == "/repos/org/repo/pulls/99").count(), MAX_METADATA_ATTEMPTS);         server.await.unwrap();
  • Network accessline 282
    assert_eq!(requests.lock().unwrap().iter().filter(|path| path.as_str() == "/repos/org/repo/pulls/99").count(), MAX_METADATA_ATTEMPTS);
  • Network accessline 305
    assert!(harness.poll().await.is_empty());         assert_eq!(harness.poll().await.len(), 1);         assert_eq!(requests.lock().unwrap().iter().filter(|path| path.as_str() == "/repos/org/repo/pulls/99").count(), 1);
  • Network accessline 306
    assert_eq!(harness.poll().await.len(), 1);         assert_eq!(requests.lock().unwrap().iter().filter(|path| path.as_str() == "/repos/org/repo/pulls/99").count(), 1);         server.await.unwrap();
  • Network accessline 307
    assert_eq!(requests.lock().unwrap().iter().filter(|path| path.as_str() == "/repos/org/repo/pulls/99").count(), 1);

src/source/github_status.rs

  • Network accessline 24
    const DEFAULT_PAGE_URL: &str = "https://www.githubstatus.com";
  • Network accessline 451
    GitHubStatusMonitorConfig {             enabled: true,             api_base: "https://www.githubstatus.com/api/v2".into(),
  • Network accessline 452
    enabled: true,             api_base: "https://www.githubstatus.com/api/v2".into(),             components: vec!["Actions".into()],
  • Network accessline 453
    api_base: "https://www.githubstatus.com/api/v2".into(),
  • Network accessline 488
    status: "investigating".into(),                 impact: "major".into(),                 shortlink: Some("https://stspg.io/example".into()),
  • Network accessline 489
    impact: "major".into(),                 shortlink: Some("https://stspg.io/example".into()),                 last_update_id: Some("upd-1".into()),
  • Network accessline 490
    shortlink: Some("https://stspg.io/example".into()),
  • Network accessline 503
    let events = collect_events(             &monitor,             "https://www.githubstatus.com",
  • Network accessline 504
    &monitor,             "https://www.githubstatus.com",             &state,
  • Network accessline 505
    "https://www.githubstatus.com",
  • Network accessline 521
    let events = collect_events(             &monitor,             "https://www.githubstatus.com",
  • Network accessline 522
    &monitor,             "https://www.githubstatus.com",             &previous,
  • Network accessline 523
    "https://www.githubstatus.com",
  • Network accessline 536
    let same = collect_events(             &monitor,             "https://www.githubstatus.com",
  • Network accessline 537
    &monitor,             "https://www.githubstatus.com",             &previous,
  • Network accessline 538
    "https://www.githubstatus.com",
  • Network accessline 546
    let recovery = collect_events(             &monitor,             "https://www.githubstatus.com",
  • Network accessline 547
    &monitor,             "https://www.githubstatus.com",             &previous,
  • Network accessline 548
    "https://www.githubstatus.com",
  • Network accessline 575
    status: "investigating".into(),                 impact: "critical".into(),                 shortlink: Some("https://stspg.io/rcz3fcm83sff".into()),
  • Network accessline 576
    impact: "critical".into(),                 shortlink: Some("https://stspg.io/rcz3fcm83sff".into()),                 last_update_id: Some("upd-1".into()),
  • Network accessline 577
    shortlink: Some("https://stspg.io/rcz3fcm83sff".into()),
  • Network accessline 585
    let opened = collect_events(             &monitor,             "https://www.githubstatus.com",
  • Network accessline 586
    &monitor,             "https://www.githubstatus.com",             &previous,
  • Network accessline 587
    "https://www.githubstatus.com",
  • Network accessline 598
    let unchanged = collect_events(             &monitor,             "https://www.githubstatus.com",
  • Network accessline 599
    &monitor,             "https://www.githubstatus.com",             &previous,
  • Network accessline 600
    "https://www.githubstatus.com",
  • Network accessline 614
    let updated = collect_events(             &monitor,             "https://www.githubstatus.com",
  • Network accessline 615
    &monitor,             "https://www.githubstatus.com",             &previous,
  • Network accessline 616
    "https://www.githubstatus.com",
  • Network accessline 628
    let resolved = collect_events(             &monitor,             "https://www.githubstatus.com",
  • Network accessline 629
    &monitor,             "https://www.githubstatus.com",             &previous,
  • Network accessline 630
    "https://www.githubstatus.com",
  • Network accessline 645
    let events = collect_events(             &monitor,             "https://www.githubstatus.com",
  • Network accessline 646
    &monitor,             "https://www.githubstatus.com",             &previous,
  • Network accessline 647
    "https://www.githubstatus.com",
  • Network accessline 712
    };                 let body = json!({                     "page": {"url": "https://www.githubstatus.com"},
  • Network accessline 713
    let body = json!({                     "page": {"url": "https://www.githubstatus.com"},                     "components": [{
  • Network accessline 714
    "page": {"url": "https://www.githubstatus.com"},
  • Network accessline 733
    config.monitors.github_status = GitHubStatusMonitorConfig {             enabled: true,             api_base: format!("http://{addr}"),
  • Network accessline 734
    enabled: true,             api_base: format!("http://{addr}"),             components: vec!["Actions".into()],
  • Network accessline 735
    api_base: format!("http://{addr}"),
  • Network accessline 768
    fn parse_live_summary_shape() {         let sample = r#"{           "page": {"id":"kctbh9vrtdwd","name":"GitHub","url":"https://www.githubstatus.com"},
  • Network accessline 769
    let sample = r#"{           "page": {"id":"kctbh9vrtdwd","name":"GitHub","url":"https://www.githubstatus.com"},           "status": {"indicator":"none","description":"All Systems Operational"},
  • Network accessline 770
    "page": {"id":"kctbh9vrtdwd","name":"GitHub","url":"https://www.githubstatus.com"},
  • Network accessline 804
    let events = collect_events(             &multi,             "https://www.githubstatus.com",
  • Network accessline 805
    &multi,             "https://www.githubstatus.com",             &previous,
  • Network accessline 806
    "https://www.githubstatus.com",

src/source/subscription.rs

  • Access to secretsline 36
    [Credential-related source omitted]
  • Access to secretsline 38
    [Credential-related source omitted]
  • Access to secretsline 41
    [Credential-related source omitted]
  • Access to secretsline 1042
    [Credential-related source omitted]
  • Network accessline 1068
    std::fs::write(             &script,             format!("#!/bin/sh\ncat > /dev/null\necho '{output}'\n"),
  • Network accessline 1069
    &script,             format!("#!/bin/sh\ncat > /dev/null\necho '{output}'\n"),         )
  • Network accessline 1070
    format!("#!/bin/sh\ncat > /dev/null\necho '{output}'\n"),

src/telemetry.rs

  • Network accessline 207
    #[test]     fn safe_target_id_redacts_webhook_secret() {         let url = "https://discord.com/api/webhooks/123456/secret-token";
  • Network accessline 208
    fn safe_target_id_redacts_webhook_secret() {         let url = "https://discord.com/api/webhooks/123456/secret-token";         let safe = safe_target_id(&SinkTarget::DiscordWebhook(url.into()));
  • Network accessline 209
    let url = "https://discord.com/api/webhooks/123456/secret-token";
  • Network accessline 250
    [Credential-related source omitted]
  • Network accessline 251
    [Credential-related source omitted]
  • Network accessline 252
    [Credential-related source omitted]
  • Network accessline 261
    [Credential-related source omitted]
  • Network accessline 262
    [Credential-related source omitted]
  • Network accessline 263
    [Credential-related source omitted]

src/update.rs

  • Network accessline 14
    const GITHUB_API_BASE: &str = "https://api.github.com";
  • Network accessline 310
    current_version: "0.5.4".into(),             latest_version: "0.5.5".into(),             release_url: "https://example.com".into(),
  • Network accessline 311
    latest_version: "0.5.5".into(),             release_url: "https://example.com".into(),             detected_at: "2026-04-07T00:00:00Z".into(),
  • Network accessline 312
    release_url: "https://example.com".into(),

tests/event_ledger_e2e.rs

  • Network accessline 95
    bind_host = "127.0.0.1" port = {port} base_url = "http://127.0.0.1:{port}"
  • Network accessline 97
    base_url = "http://127.0.0.1:{port}"
  • Network accessline 160
    "session_id": "session-304",             "keywords": ["ledger", "verified"],             "source_url": "https://github.com/Yeachan-Heo/clawhip/issues/304"
  • Network accessline 161
    "keywords": ["ledger", "verified"],             "source_url": "https://github.com/Yeachan-Heo/clawhip/issues/304"         }
  • Network accessline 162
    "source_url": "https://github.com/Yeachan-Heo/clawhip/issues/304"

tests/gajae_profile_install_stdin.rs

  • Network accessline 828
    routes:   github.issue-opened:     command: gajae handle github.issue-opened --token secret-token-123 --webhook https://hooks.example/secret --path /home/operator/private
  • Network accessline 829
    github.issue-opened:     command: gajae handle github.issue-opened --token secret-token-123 --webhook https://hooks.example/secret --path /home/operator/private "#,
  • Network accessline 830
    command: gajae handle github.issue-opened --token secret-token-123 --webhook https://hooks.example/secret --path /home/operator/private
  • Network accessline 865
    );         assert!(             !combined.contains("https://hooks.example/secret"),
  • Network accessline 866
    assert!(             !combined.contains("https://hooks.example/secret"),             "leaked webhook URL: {combined}"
  • Network accessline 867
    !combined.contains("https://hooks.example/secret"),

tests/gjc_sdk_event_bridge.rs

  • Network accessline 174
    bind_host = "{bind_host}" port = {port} base_url = "http://127.0.0.1:{port}"
  • Network accessline 176
    base_url = "http://127.0.0.1:{port}"
  • Network accessline 500
    &[             ("x-clawhip-local-control", "1"),             ("Origin", "http://evil.example"),
  • Network accessline 501
    ("x-clawhip-local-control", "1"),             ("Origin", "http://evil.example"),         ],
  • Network accessline 502
    ("Origin", "http://evil.example"),

tests/gjc_sdk_full_loop_e2e.rs

  • Network accessline 109
    bind_host = "127.0.0.1" port = {port} base_url = "http://127.0.0.1:{port}"
  • Network accessline 111
    base_url = "http://127.0.0.1:{port}"
  • Network accessline 171
    bind_host = "127.0.0.1" port = {port} base_url = "http://127.0.0.1:{port}"
  • Network accessline 173
    base_url = "http://127.0.0.1:{port}"

tests/install_star_prompt.rs

  • Executable scriptline 1
    #![cfg(unix)]

tests/lane_thread_verification.rs

  • Network accessline 145
    }     fn api_base(&self) -> String {         format!("http://127.0.0.1:{}", self.port)
  • Network accessline 146
    fn api_base(&self) -> String {         format!("http://127.0.0.1:{}", self.port)     }
  • Network accessline 147
    format!("http://127.0.0.1:{}", self.port)
  • Dangerous shell operationline 301
    kill-session) rm -f "$S/live" ;;
  • Network accessline 317
    path,         &format!(             "[daemon]\nbind_host = \"127.0.0.1\"\nport = {port}\nbase_url = \"http://127.0.0.1:{port}\"\n\n[providers.discord]\ntoken = \"fixture-token\"\n\n[defaults]\nformat = \"compact\"\n"
  • Network accessline 318
    &format!(             "[daemon]\nbind_host = \"127.0.0.1\"\nport = {port}\nbase_url = \"http://127.0.0.1:{port}\"\n\n[providers.discord]\ntoken = \"fixture-token\"\n\n[defaults]\nformat = \"compact\"\n"         ),
  • Network accessline 319
    "[daemon]\nbind_host = \"127.0.0.1\"\nport = {port}\nbase_url = \"http://127.0.0.1:{port}\"\n\n[providers.discord]\ntoken = \"fixture-token\"\n\n[defaults]\nformat = \"compact\"\n"
  • Network accessline 326
    path,         &format!(             "[daemon]\nbind_host = \"127.0.0.1\"\nport = {port}\nbase_url = \"http://127.0.0.1:{base_port}\"\n\n[providers.discord]\ntoken = \"fixture-token\"\n\n[defaults]\nformat = \"compact\"\n"
  • Network accessline 327
    &format!(             "[daemon]\nbind_host = \"127.0.0.1\"\nport = {port}\nbase_url = \"http://127.0.0.1:{base_port}\"\n\n[providers.discord]\ntoken = \"fixture-token\"\n\n[defaults]\nformat = \"compact\"\n"         ),
  • Network accessline 328
    "[daemon]\nbind_host = \"127.0.0.1\"\nport = {port}\nbase_url = \"http://127.0.0.1:{base_port}\"\n\n[providers.discord]\ntoken = \"fixture-token\"\n\n[defaults]\nformat = \"compact\"\n"
  • Network accessline 1012
    write_file(         &config_path,         "[daemon]\nbind_host = \"127.0.0.1\"\nport = 9\nbase_url = \"http://192.0.2.1:9\"\n\n[providers.discord]\ntoken = \"fixture-token\"\n",
  • Network accessline 1013
    &config_path,         "[daemon]\nbind_host = \"127.0.0.1\"\nport = 9\nbase_url = \"http://192.0.2.1:9\"\n\n[providers.discord]\ntoken = \"fixture-token\"\n",     );
  • Network accessline 1014
    "[daemon]\nbind_host = \"127.0.0.1\"\nport = 9\nbase_url = \"http://192.0.2.1:9\"\n\n[providers.discord]\ntoken = \"fixture-token\"\n",

tests/sender_identity_verification.rs

  • Network accessline 53
    (format!("http://{addr}"), rx)
  • Access to secretsline 68
    [Credential-related source omitted]
  • Access to secretsline 69
    [Credential-related source omitted]
  • Network accessline 262
    let output = run_verify(&config_path, &format!("http://{dead_addr}"), &temp, true);
  • Network accessline 318
    [[routes]] event = "git.commit" webhook = "https://discord.com/api/webhooks/1/synthetic"
  • Network accessline 319
    event = "git.commit" webhook = "https://discord.com/api/webhooks/1/synthetic" "#
  • Network accessline 320
    webhook = "https://discord.com/api/webhooks/1/synthetic"

tests/setup_bind_legacy_route_only.rs

  • Network accessline 35
    (format!("http://{addr}"), rx)

How the signals fit together

Facts from a static read of the files at the pinned commit. They describe what the code does, not why.

Some files could not be read; the facts below still hold.

No combined signals at this commit.

Works with

Agent compatibility, from the files in this repository
AgentStatusEvidenceInstall to
Claude CodeCompatibleStandard SKILL.md SKILL.md.claude/skills/<skill-name>/
CodexNativeManifest AGENTS.md.agents/skills/<skill-name>/
CursorCompatibleStandard SKILL.md SKILL.md.cursor/skills/<skill-name>/
Gemini CLICompatibleStandard SKILL.md SKILL.md.gemini/skills/<skill-name>/
GitHub CopilotCompatibleStandard SKILL.md SKILL.md.github/skills/<skill-name>/
OpenCodeCompatibleStandard SKILL.md SKILL.md.opencode/skills/<skill-name>/
  • Native The repository ships a manifest, folder or frontmatter field for this agent.
  • Compatible A standard SKILL.md that this agent can read.
  • Unknown No evidence either way.

Derived automatically from paths, manifests and frontmatter. Not tested on each agent.

Explore alternatives and comparisons

Add this badge to your README

It updates every night and links to this page.

Yeachan-Heo/clawhip: #939 on hotskills, 937 stars

[![Yeachan-Heo/clawhip on hotskills](https://hotskills.dev/badge/yeachan-heo-clawhip.svg)](https://hotskills.dev/skill/yeachan-heo-clawhip/)