Files
coder/aibridge/utils/mask.go
T
Paweł Banaszewski e00e85765b chore: move aibridge library code into coder repo (#24190)
This PR merges code from `coder/aibridge` repository into `coder/coder`.
It was split into 4 PRs for easier review but stacked PRs will need to
be merged into this PR so all checks pass.

* https://github.com/coder/coder/pull/24190 -> raw code copy (this PR,
before merging PRs on top of it, it was just 1 commit:
https://github.com/coder/coder/commit/70d33f33200c7e77df910957595715f81f9bec24)
* https://github.com/coder/coder/pull/24570 -> update imports in
`coder/coder` to use copied code
* https://github.com/coder/coder/pull/24586 -> linter fixes and CI
integration (also added README.md)
* https://github.com/coder/coder/pull/24571 -> added exclude to
scripts/check_emdash.sh check

Original PR message (before PR squash):
Moves coder/aibridge code into coder/coder repository.

Omitted files:

- `go.mod`, `go.sum`, `.gitignore`, `.github/workflows/ci.yml,`
`Makefile`, `LICENSE`, `README.md` (modified README.md is added later)
- `.github`, `example`, `buildinfo,` `scripts` directories

Simple verification script (will list omitted files)

```
tmp=$(mktemp -d)
echo "$tmp"
git clone --depth=1 https://github.com/coder/aibridge "$tmp/aibridge"
git clone --depth=1 --branch pb/aibridge-code-move https://github.com/coder/coder "$tmp/coder"
diff -rq --exclude=.git "$tmp/aibridge" "$tmp/coder/aibridge"
# rm -rf "$tmp"
```
2026-04-22 17:01:01 +02:00

36 lines
682 B
Go

package utils
// MaskSecret masks the middle of a secret string, revealing a small
// prefix and suffix for identification. The number of characters
// revealed scales with string length.
func MaskSecret(s string) string {
if s == "" {
return ""
}
runes := []rune(s)
reveal := revealLength(len(runes))
if len(runes) <= reveal*2 {
return "..."
}
prefix := string(runes[:reveal])
suffix := string(runes[len(runes)-reveal:])
return prefix + "..." + suffix
}
// revealLength returns the number of runes to show at each end.
func revealLength(n int) int {
switch {
case n >= 20:
return 4
case n >= 10:
return 2
case n >= 5:
return 1
default:
return 0
}
}