├── .envrc ├── .eslintrc.cjs ├── .gitattributes ├── .github ├── CODEOWNERS ├── pull_request_template.md ├── release-drafter.yml └── workflows │ ├── ci.yaml │ ├── publish.yml │ └── release-drafter.yml ├── .gitignore ├── .prettierignore ├── .prettierrc ├── .replit ├── LICENSE ├── PROTOCOL.md ├── README.md ├── __tests__ ├── __snapshots__ │ └── serialize.test.ts.snap ├── allocation.test.ts ├── bandwidth.bench.ts ├── cancellation.test.ts ├── cleanup.test.ts ├── context.test.ts ├── disconnects.test.ts ├── e2e.test.ts ├── globalSetup.ts ├── handler.test.ts ├── invalid-request.test.ts ├── middleware.test.ts ├── negative.test.ts ├── serialize.test.ts ├── streams.test.ts └── typescript-stress.test.ts ├── codec ├── adapter.ts ├── binary.ts ├── codec.test.ts ├── index.ts ├── json.ts └── types.ts ├── flake.lock ├── flake.nix ├── flake.sh ├── logging ├── index.ts └── log.ts ├── package.json ├── replit.nix ├── router ├── client.ts ├── context.ts ├── errors.ts ├── handshake.ts ├── index.ts ├── procedures.ts ├── result.ts ├── server.ts ├── services.ts └── streams.ts ├── testUtil ├── duplex │ ├── duplexPair.test.ts │ └── duplexPair.ts ├── fixtures │ ├── cleanup.ts │ ├── codec.ts │ ├── matrix.ts │ ├── mockTransport.ts │ ├── services.ts │ └── transports.ts ├── index.ts └── observable │ ├── observable.test.ts │ └── observable.ts ├── tracing ├── index.ts └── tracing.test.ts ├── transport ├── client.ts ├── connection.ts ├── events.test.ts ├── events.ts ├── id.ts ├── impls │ └── ws │ │ ├── client.ts │ │ ├── connection.ts │ │ ├── server.ts │ │ ├── ws.test.ts │ │ └── wslike.ts ├── index.ts ├── message.test.ts ├── message.ts ├── options.ts ├── rateLimit.test.ts ├── rateLimit.ts ├── results.ts ├── server.ts ├── sessionStateMachine │ ├── SessionBackingOff.ts │ ├── SessionConnected.ts │ ├── SessionConnecting.ts │ ├── SessionHandshaking.ts │ ├── SessionNoConnection.ts │ ├── SessionWaitingForHandshake.ts │ ├── common.ts │ ├── index.ts │ ├── stateMachine.test.ts │ └── transitions.ts ├── stringifyError.ts ├── transport.test.ts └── transport.ts ├── tsconfig.json ├── tsup.config.ts └── vitest.config.ts /.envrc: -------------------------------------------------------------------------------- 1 | use flake 2 | dotenv_if_exists 3 | PATH_add ./node_modules/.bin 4 | -------------------------------------------------------------------------------- /.eslintrc.cjs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/replit/river/HEAD/.eslintrc.cjs -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | * text=auto eol=lf 2 | -------------------------------------------------------------------------------- /.github/CODEOWNERS: -------------------------------------------------------------------------------- 1 | * @replit/agent-infrastructure 2 | -------------------------------------------------------------------------------- /.github/pull_request_template.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/replit/river/HEAD/.github/pull_request_template.md -------------------------------------------------------------------------------- /.github/release-drafter.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/replit/river/HEAD/.github/release-drafter.yml -------------------------------------------------------------------------------- /.github/workflows/ci.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/replit/river/HEAD/.github/workflows/ci.yaml -------------------------------------------------------------------------------- /.github/workflows/publish.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/replit/river/HEAD/.github/workflows/publish.yml -------------------------------------------------------------------------------- /.github/workflows/release-drafter.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/replit/river/HEAD/.github/workflows/release-drafter.yml -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | dist 2 | node_modules 3 | example 4 | 5 | # Nix 6 | /.direnv/ 7 | -------------------------------------------------------------------------------- /.prettierignore: -------------------------------------------------------------------------------- 1 | .cache 2 | node_modules 3 | -------------------------------------------------------------------------------- /.prettierrc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/replit/river/HEAD/.prettierrc -------------------------------------------------------------------------------- /.replit: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/replit/river/HEAD/.replit -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/replit/river/HEAD/LICENSE -------------------------------------------------------------------------------- /PROTOCOL.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/replit/river/HEAD/PROTOCOL.md -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/replit/river/HEAD/README.md -------------------------------------------------------------------------------- /__tests__/__snapshots__/serialize.test.ts.snap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/replit/river/HEAD/__tests__/__snapshots__/serialize.test.ts.snap -------------------------------------------------------------------------------- /__tests__/allocation.test.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/replit/river/HEAD/__tests__/allocation.test.ts -------------------------------------------------------------------------------- /__tests__/bandwidth.bench.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/replit/river/HEAD/__tests__/bandwidth.bench.ts -------------------------------------------------------------------------------- /__tests__/cancellation.test.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/replit/river/HEAD/__tests__/cancellation.test.ts -------------------------------------------------------------------------------- /__tests__/cleanup.test.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/replit/river/HEAD/__tests__/cleanup.test.ts -------------------------------------------------------------------------------- /__tests__/context.test.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/replit/river/HEAD/__tests__/context.test.ts -------------------------------------------------------------------------------- /__tests__/disconnects.test.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/replit/river/HEAD/__tests__/disconnects.test.ts -------------------------------------------------------------------------------- /__tests__/e2e.test.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/replit/river/HEAD/__tests__/e2e.test.ts -------------------------------------------------------------------------------- /__tests__/globalSetup.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/replit/river/HEAD/__tests__/globalSetup.ts -------------------------------------------------------------------------------- /__tests__/handler.test.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/replit/river/HEAD/__tests__/handler.test.ts -------------------------------------------------------------------------------- /__tests__/invalid-request.test.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/replit/river/HEAD/__tests__/invalid-request.test.ts -------------------------------------------------------------------------------- /__tests__/middleware.test.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/replit/river/HEAD/__tests__/middleware.test.ts -------------------------------------------------------------------------------- /__tests__/negative.test.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/replit/river/HEAD/__tests__/negative.test.ts -------------------------------------------------------------------------------- /__tests__/serialize.test.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/replit/river/HEAD/__tests__/serialize.test.ts -------------------------------------------------------------------------------- /__tests__/streams.test.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/replit/river/HEAD/__tests__/streams.test.ts -------------------------------------------------------------------------------- /__tests__/typescript-stress.test.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/replit/river/HEAD/__tests__/typescript-stress.test.ts -------------------------------------------------------------------------------- /codec/adapter.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/replit/river/HEAD/codec/adapter.ts -------------------------------------------------------------------------------- /codec/binary.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/replit/river/HEAD/codec/binary.ts -------------------------------------------------------------------------------- /codec/codec.test.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/replit/river/HEAD/codec/codec.test.ts -------------------------------------------------------------------------------- /codec/index.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/replit/river/HEAD/codec/index.ts -------------------------------------------------------------------------------- /codec/json.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/replit/river/HEAD/codec/json.ts -------------------------------------------------------------------------------- /codec/types.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/replit/river/HEAD/codec/types.ts -------------------------------------------------------------------------------- /flake.lock: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/replit/river/HEAD/flake.lock -------------------------------------------------------------------------------- /flake.nix: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/replit/river/HEAD/flake.nix -------------------------------------------------------------------------------- /flake.sh: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/replit/river/HEAD/flake.sh -------------------------------------------------------------------------------- /logging/index.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/replit/river/HEAD/logging/index.ts -------------------------------------------------------------------------------- /logging/log.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/replit/river/HEAD/logging/log.ts -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/replit/river/HEAD/package.json -------------------------------------------------------------------------------- /replit.nix: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/replit/river/HEAD/replit.nix -------------------------------------------------------------------------------- /router/client.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/replit/river/HEAD/router/client.ts -------------------------------------------------------------------------------- /router/context.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/replit/river/HEAD/router/context.ts -------------------------------------------------------------------------------- /router/errors.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/replit/river/HEAD/router/errors.ts -------------------------------------------------------------------------------- /router/handshake.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/replit/river/HEAD/router/handshake.ts -------------------------------------------------------------------------------- /router/index.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/replit/river/HEAD/router/index.ts -------------------------------------------------------------------------------- /router/procedures.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/replit/river/HEAD/router/procedures.ts -------------------------------------------------------------------------------- /router/result.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/replit/river/HEAD/router/result.ts -------------------------------------------------------------------------------- /router/server.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/replit/river/HEAD/router/server.ts -------------------------------------------------------------------------------- /router/services.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/replit/river/HEAD/router/services.ts -------------------------------------------------------------------------------- /router/streams.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/replit/river/HEAD/router/streams.ts -------------------------------------------------------------------------------- /testUtil/duplex/duplexPair.test.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/replit/river/HEAD/testUtil/duplex/duplexPair.test.ts -------------------------------------------------------------------------------- /testUtil/duplex/duplexPair.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/replit/river/HEAD/testUtil/duplex/duplexPair.ts -------------------------------------------------------------------------------- /testUtil/fixtures/cleanup.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/replit/river/HEAD/testUtil/fixtures/cleanup.ts -------------------------------------------------------------------------------- /testUtil/fixtures/codec.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/replit/river/HEAD/testUtil/fixtures/codec.ts -------------------------------------------------------------------------------- /testUtil/fixtures/matrix.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/replit/river/HEAD/testUtil/fixtures/matrix.ts -------------------------------------------------------------------------------- /testUtil/fixtures/mockTransport.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/replit/river/HEAD/testUtil/fixtures/mockTransport.ts -------------------------------------------------------------------------------- /testUtil/fixtures/services.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/replit/river/HEAD/testUtil/fixtures/services.ts -------------------------------------------------------------------------------- /testUtil/fixtures/transports.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/replit/river/HEAD/testUtil/fixtures/transports.ts -------------------------------------------------------------------------------- /testUtil/index.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/replit/river/HEAD/testUtil/index.ts -------------------------------------------------------------------------------- /testUtil/observable/observable.test.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/replit/river/HEAD/testUtil/observable/observable.test.ts -------------------------------------------------------------------------------- /testUtil/observable/observable.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/replit/river/HEAD/testUtil/observable/observable.ts -------------------------------------------------------------------------------- /tracing/index.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/replit/river/HEAD/tracing/index.ts -------------------------------------------------------------------------------- /tracing/tracing.test.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/replit/river/HEAD/tracing/tracing.test.ts -------------------------------------------------------------------------------- /transport/client.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/replit/river/HEAD/transport/client.ts -------------------------------------------------------------------------------- /transport/connection.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/replit/river/HEAD/transport/connection.ts -------------------------------------------------------------------------------- /transport/events.test.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/replit/river/HEAD/transport/events.test.ts -------------------------------------------------------------------------------- /transport/events.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/replit/river/HEAD/transport/events.ts -------------------------------------------------------------------------------- /transport/id.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/replit/river/HEAD/transport/id.ts -------------------------------------------------------------------------------- /transport/impls/ws/client.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/replit/river/HEAD/transport/impls/ws/client.ts -------------------------------------------------------------------------------- /transport/impls/ws/connection.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/replit/river/HEAD/transport/impls/ws/connection.ts -------------------------------------------------------------------------------- /transport/impls/ws/server.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/replit/river/HEAD/transport/impls/ws/server.ts -------------------------------------------------------------------------------- /transport/impls/ws/ws.test.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/replit/river/HEAD/transport/impls/ws/ws.test.ts -------------------------------------------------------------------------------- /transport/impls/ws/wslike.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/replit/river/HEAD/transport/impls/ws/wslike.ts -------------------------------------------------------------------------------- /transport/index.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/replit/river/HEAD/transport/index.ts -------------------------------------------------------------------------------- /transport/message.test.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/replit/river/HEAD/transport/message.test.ts -------------------------------------------------------------------------------- /transport/message.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/replit/river/HEAD/transport/message.ts -------------------------------------------------------------------------------- /transport/options.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/replit/river/HEAD/transport/options.ts -------------------------------------------------------------------------------- /transport/rateLimit.test.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/replit/river/HEAD/transport/rateLimit.test.ts -------------------------------------------------------------------------------- /transport/rateLimit.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/replit/river/HEAD/transport/rateLimit.ts -------------------------------------------------------------------------------- /transport/results.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/replit/river/HEAD/transport/results.ts -------------------------------------------------------------------------------- /transport/server.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/replit/river/HEAD/transport/server.ts -------------------------------------------------------------------------------- /transport/sessionStateMachine/SessionBackingOff.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/replit/river/HEAD/transport/sessionStateMachine/SessionBackingOff.ts -------------------------------------------------------------------------------- /transport/sessionStateMachine/SessionConnected.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/replit/river/HEAD/transport/sessionStateMachine/SessionConnected.ts -------------------------------------------------------------------------------- /transport/sessionStateMachine/SessionConnecting.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/replit/river/HEAD/transport/sessionStateMachine/SessionConnecting.ts -------------------------------------------------------------------------------- /transport/sessionStateMachine/SessionHandshaking.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/replit/river/HEAD/transport/sessionStateMachine/SessionHandshaking.ts -------------------------------------------------------------------------------- /transport/sessionStateMachine/SessionNoConnection.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/replit/river/HEAD/transport/sessionStateMachine/SessionNoConnection.ts -------------------------------------------------------------------------------- /transport/sessionStateMachine/SessionWaitingForHandshake.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/replit/river/HEAD/transport/sessionStateMachine/SessionWaitingForHandshake.ts -------------------------------------------------------------------------------- /transport/sessionStateMachine/common.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/replit/river/HEAD/transport/sessionStateMachine/common.ts -------------------------------------------------------------------------------- /transport/sessionStateMachine/index.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/replit/river/HEAD/transport/sessionStateMachine/index.ts -------------------------------------------------------------------------------- /transport/sessionStateMachine/stateMachine.test.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/replit/river/HEAD/transport/sessionStateMachine/stateMachine.test.ts -------------------------------------------------------------------------------- /transport/sessionStateMachine/transitions.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/replit/river/HEAD/transport/sessionStateMachine/transitions.ts -------------------------------------------------------------------------------- /transport/stringifyError.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/replit/river/HEAD/transport/stringifyError.ts -------------------------------------------------------------------------------- /transport/transport.test.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/replit/river/HEAD/transport/transport.test.ts -------------------------------------------------------------------------------- /transport/transport.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/replit/river/HEAD/transport/transport.ts -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/replit/river/HEAD/tsconfig.json -------------------------------------------------------------------------------- /tsup.config.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/replit/river/HEAD/tsup.config.ts -------------------------------------------------------------------------------- /vitest.config.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/replit/river/HEAD/vitest.config.ts --------------------------------------------------------------------------------