Commit Graph

8 Commits

Author SHA1 Message Date
Winlin
6ee6f1ca5f Proxy: Refactor for testability; add SRT/WHIP E2E and unit tests. v7.0.148 (#4675)
- Refactor the Go proxy for dependency injection: every proxy server,
the bootstrap, the signal handler, the load balancers, and AMF0 now accept
functional-option seams (factories/closures) so tests can inject fakes
without binding real sockets, talking to real Redis, or racing on
package globals.

- Drop the package-global `lb.SrsLoadBalancer`. The bootstrap creates
the LB locally and threads it through every proxy server constructor. Two old
global indirections in `internal/signal` and `internal/rtmp/amf0` are
likewise replaced by per-instance fields.

- Rename `internal/server` → `internal/proxy` and rename the `lb` public
surface for clarity: `SRSLoadBalancer` is split into `OriginService` /
`HLSService` / `RTCService` and recomposed as `OriginLoadBalancer`;
`SRSServer` → `OriginServer`; all proxy server types gain a `Proxy`
qualifier (e.g. `RTMPServer` → `RTMPProxyServer`).

- Extract the Redis client behind a new `internal/redisclient` package
with a minimal `RedisClient` interface and a counterfeiter fake.

- Add counterfeiter fakes (`proxyfakes`, `lbfakes`, `redisclientfakes`)
and ~7.5k lines of unit tests covering bootstrap, memory + Redis LBs, all
five proxy servers, the signal handler, and AMF0.

- Add two new E2E flows — `proxy-e2e-srt-test.sh` (SRT publish through
proxy, verify SRT/RTMP/HTTP-FLV/HLS playback) and `proxy-e2e-whip-test.sh`
(WHIP publish, verify RTMP/HTTP-FLV/HLS via origin `rtc_to_rtmp`) — plus
`setup-ffmpeg-with-whip.sh`, a macOS builder for an ffmpeg with
openssl-DTLS WHIP and SRT support that the two scripts auto-invoke when needed.

- Workspace reorg: move `memory/` and `skills/` to the repo root so all
agent tools (Claude / Codex / Kiro / OpenClaw) share one source of truth via
symlinks. Sync `docs/proxy/proxy-load-balancer.md` and
`memory/srs-codebase-map.md` with the new names.

No protocol, log, HTTP API, or wire-format changes. Refactor only — all
  externally observable proxy behavior is unchanged.

---------

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Co-authored-by: chatgpt-codex-connector[bot] <199175422+chatgpt-codex-connector[bot]@users.noreply.github.com>
2026-05-17 12:09:07 -04:00
Winlin
d8696434cb
Proxy: Refine logger and environment APIs. v7.0.146 (#4670)
This PR refines the next-generation proxy internals and workspace
documentation:

  - Reworks internal/logger to expose clearer slog-style APIs:
      - Replaces Vf/Df/Wf/Ef with Info/Debug/Warn/Error.
      - Adds structured key/value log arguments.
      - Adds version to every log record.
      - Uses standard slog level labels (DEBUG, INFO, WARN, ERROR).
      - Keeps compatibility for existing printf-style messages.
  - Renames proxy configuration abstractions:
      - Environment → ProxyEnvironment.
      - NewEnvironment → NewProxyEnvironment.
- Regenerates/renames the counterfeiter fake to FakeProxyEnvironment.
- Updates all proxy bootstrap, load balancer, protocol, signal, debug,
and utility call sites for the new logger and
    environment APIs.
  - Consolidates proxy codebase navigation:
      - Deletes docs/proxy/proxy-files.md.
- Moves the useful file/module map details into
.openclaw/memory/srs-codebase-map.md.
- Replaces agent instruction symlinks with explicit workspace
instruction files for Claude, Codex, and Kiro.
  - Updates OpenClaw tool notes with Codex commit-prefix guidance.

---------

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-28 07:18:45 -04:00
Winlin
460412c4b5
Move build output to bin/, replace godotenv with custom .env parser, and update docs. v7.0.143 (#4661)
- Move build output from `./srs-proxy` to `bin/srs-proxy` following Go
project conventions, updating Makefile, .gitignore, and all
documentation references
- Replace third-party `godotenv` dependency with a custom `.env` parser
that supports comments, `export` prefix, quoted values, escape
sequences, and inline comments — with full unit tests
- Remove `ignore-worklog.md` and update `README.md` with skill-based AI
prompts
- Bump copyright year from 2025 to 2026 across all source files

---------

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-12 14:26:33 -04:00
Winlin
7c17c93b70
Refactor bootstrap for multi-server support and add srs-develop skill. v7.0.142 (#4657)
Summary
- Extract proxy bootstrap implementation from bootstrap.go into
internal/bootstrap/proxy.go, keeping only the Bootstrap interface in the
shared file. This prepares for origin/edge servers
  to have their own bootstrap implementations.
- Rename NewBootstrap() → NewProxyBootstrap() to follow the explicit
factory naming convention.
- Rebrand signature from SRSProxy to SRSX and update logger context key
accordingly.
- Add srs-develop skill with task router, module routing workflow, proxy
unit test script, and RTMP E2E test script.
- Remove st-develop skill (superseded by srs-develop).
- Add srs-support eval #21 for HLS AnnexB decode error scenario.
Test plan
- go build ./cmd/proxy/... compiles successfully
  - go test ./cmd/... ./internal/... passes
- E2E RTMP proxy test (proxy-e2e-test.sh) passes
  - Verify proxy starts and logs SRSX-Proxy/<version> started

---------

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-06 08:28:00 -04:00
Winlin
5f47cee19c
OpenClaw: Improve SRS support skill with docs integration, troubleshooting, and workspace updates (#4655)
Enhance the srs-support skill with doc-based knowledge layers, a full
troubleshooting section, and new eval cases. Update workspace config
files with model auth notes, voice dictation dictionary, and gitignore
patterns.

srs-support skill:
- Reframe skill scope: operators and users, not developers
- Add Layer 2 doc file mapping (25+ topic-to-doc-file entries) so the
  skill loads relevant doc files instead of jumping to source code
- Add Step 4 troubleshooting section covering WebRTC candidate issues,
  HLS latency tuning, stream-not-found diagnostics, reverse proxy
  problems, VLC buffering trap, and firewall port reference
- Add Oryx out-of-scope policy (planned but not available yet)
- Add 6 new eval cases (ids 15-20) for troubleshooting scenarios
- Fix unicode arrows in evals for cross-platform compatibility

Workspace updates:
- TOOLS.md: Add model auth refresh instructions and git commit workflow
- USER.md: Add voice dictation dictionary for speech-to-text corrections
- srs-overview.md: Replace ASCII diagram with Mermaid, expand browser
  publisher description for mobile WHIP support
- .claude/settings.local.json: Add read-only shell command permissions
- .gitignore: Add workspace pattern exclusions

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-30 07:11:24 -04:00
winlin
ada9396e48 OpenClaw: Rename openclaw/ to .openclaw/ and update all symlinks and paths
- Rename workspace directory from openclaw/ to .openclaw/ (hidden)
- Update all symlinks in .claude/, .codex/, .kiro/ to point to ../.openclaw/
- Add memory symlinks for .claude/, .codex/, .kiro/
- Replace .codex/CODEX.md regular file with symlink to AGENTS.md
- Remove .codex/AGENTS.md symlink (replaced by CODEX.md symlink)
- Update internal paths in MEMORY.md, TOOLS.md
- Remove kb-review and srs-learn skills
- Update srs-support and st-develop skills: unified SRS_ROOT resolution, relative knowledge base paths
2026-03-22 11:14:24 -04:00
Winlin
f48b2b31d9
OpenClaw: Unify AI agent configs with shared persona symlinks (#4653)
Replace vendor-specific config (.augment-guidelines, .augmentignore) with
a unified approach: .claude/, .codex/, and .kiro/ directories all symlink
to the canonical persona files in openclaw/ (SOUL.md, USER.md, MEMORY.md,
IDENTITY.md, TOOLS.md, AGENTS.md).

All artificial intelligence programming entities, including Claude Code, Codex, 
and Kiro, possess commonality. the same identity, memory, and conventions 
without file duplication.

- Remove .augment-guidelines and .augmentignore (Augment AI)
- Add .claude/ with settings.local.json hook to auto-load persona files
- Add .codex/ with config.toml and CODEX.md instruction entrypoint
- Rename .agents/skills to .codex/skills
- Add .kiro/steering/ with persona symlinks
- Document ACP working directory convention in TOOLS.md
- Update openclaw/.gitignore for .pi and extensions directories

---------

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-22 10:37:09 -04:00
Winlin
024342910d
OpenClaw: add and refine ST knowledge-base and learning/review skills (#4643)
- Add a comprehensive ST knowledge base document:
- openclaw/memory/srs-coroutines.md
- Add ST-focused developer skill:
- openclaw/skills/st-develop/SKILL.md
- openclaw/skills/st-develop/scripts/verify.sh
- Add KB workflow skills that support ST documentation quality and
learning:
- openclaw/skills/kb-review/SKILL.md
- openclaw/skills/srs-learn/SKILL.md
- Update openclaw/skills/srs-support/SKILL.md to use dynamic SRS_ROOT
path resolution, improving portability for KB/source
 loading.

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Co-authored-by: chatgpt-codex-connector[bot] <199175422+chatgpt-codex-connector[bot]@users.noreply.github.com>
2026-03-05 09:57:08 -05:00