Add hosted repository channels #46MergedKrzysztof-Cieslakmerged 8 commits intomainfromrefs/pull/46/headConversationFiles changed109 files changed+9021-3663StackedSplit.dockerignore+22 −0.env.example+9 −0.github/workflows/ci.yml+37 −4.gitignore+2 −2Dockerfile+52 −0agents.md+54 −59apps/server/package.json+1 −0apps/server/src/agent/client.ts+86 −100apps/server/src/agent/hosted.test.ts+163 −0apps/server/src/agent/permissions.ts+36 −115apps/server/src/agent/planner.ts+13 −28apps/server/src/agent/repository.ts+268 −0apps/server/src/agent/tools.test.ts+54 −75apps/server/src/agent/tools.ts+46 −41apps/server/src/auth/config.ts+55 −0apps/server/src/auth/routes.test.ts+222 −0apps/server/src/auth/routes.ts+202 −0apps/server/src/auth/session.test.ts+110 −0apps/server/src/auth/session.ts+357 −0apps/server/src/channels/routes.test.ts+246 −0apps/server/src/channels/routes.ts+287 −0apps/server/src/chat/hosted.test.ts+95 −0apps/server/src/chat/queue.test.ts+24 −20apps/server/src/chat/service.ts+315 −94apps/server/src/client.test.ts+0 −160apps/server/src/client.ts+5 −1apps/server/src/comments.test.ts+28 −89apps/server/src/comments.wire.test.ts+0 −391apps/server/src/comments/inject.ts+3 −2apps/server/src/comments/service.ts+48 −51apps/server/src/config.test.ts+44 −86apps/server/src/config.ts+29 −65apps/server/src/github/client.test.ts+156 −0apps/server/src/github/client.ts+288 −0apps/server/src/http/router.test.ts+67 −0apps/server/src/http/router.ts+101 −0apps/server/src/main.test.ts+0 −174apps/server/src/main.ts+312 −109apps/server/src/plan.test.ts+0 −358apps/server/src/plan/persistence.test.ts+173 −0apps/server/src/plan/room.ts+31 −0apps/server/src/plan/service.ts+439 −89apps/server/src/plan/snapshot.ts+0 −206apps/server/src/questions.anchors.test.ts+6 −123apps/server/src/questions.service.test.ts+30 −24apps/server/src/questions.test.ts+21 −0apps/server/src/questions/anchors.test.ts+0 −68apps/server/src/questions/anchors.ts+1 −49apps/server/src/questions/service.ts+130 −94apps/server/src/questions/store.ts+50 −3apps/server/src/rooms.ts+3 −17apps/server/src/socket/admission.test.ts+106 −0apps/server/src/socket/admission.ts+70 −0apps/server/src/storage/contract.ts+419 −0apps/server/src/storage/errors.ts+28 −0apps/server/src/storage/memory/adapter.test.ts+4 −0apps/server/src/storage/memory/adapter.ts+485 −0apps/server/src/storage/migrate.ts+16 −0apps/server/src/storage/model.ts+169 −0apps/server/src/storage/port.ts+73 −0apps/server/src/storage/postgres/adapter.test.ts+14 −0apps/server/src/storage/postgres/adapter.ts+935 −0apps/server/src/storage/postgres/migrations.ts+75 −0apps/server/src/storage/postgres/migrations/001_initial.sql+101 −0apps/server/src/storage/postgres/startup.test.ts+83 −0apps/server/src/storage/registry.ts+13 −0apps/server/src/testing/plan.ts+110 −0apps/server/src/wire.ts+14 −1apps/web/src/api.ts+124 −0apps/web/src/app.tsx+87 −62apps/web/src/chat/chat.tsx+16 −13apps/web/src/chat/model.test.ts+1 −14apps/web/src/chat/model.ts+0 −14apps/web/src/collab.test.ts+0 −198apps/web/src/hosted.test.ts+24 −0apps/web/src/hosted.tsx+387 −0apps/web/src/identity.ts+0 −65apps/web/src/main.tsx+0 −5apps/web/src/tokens.test.ts+0 −13apps/web/src/wire.test.ts+1 −2apps/web/src/wire.ts+2 −6compose.yaml+72 −0docs/architecture.md+44 −27docs/authentication.md+76 −0docs/channels.md+42 −0docs/hosted-agent.md+42 −0docs/storage.md+62 −0e2e/collab.e2e.ts+2 −3e2e/database.ts+88 −0e2e/github.ts+44 −0e2e/hosted.e2e.ts+18 −0e2e/playwright.config.ts+19 −23e2e/room.ts+54 −76e2e/servers.ts+2 −17e2e/setup.ts+0 −27e2e/sidecar.e2e.ts+37 −35e2e/smoke.e2e.ts+52 −98package.json+8 −2packages/editor/src/plan-editor.tsx+15 −4packages/editor/src/status.tsx+5 −86packages/protocol/index.d.ts+11 −4packages/protocol/plan.d.ts+1 −15packages/question/src/draft.ts+14 −0packages/question/src/index.ts+1 −1packages/question/src/react/use-questionnaire.test.ts+22 −2packages/question/src/react/use-questionnaire.ts+35 −24readme.md+117 −108scripts/dev.ts+1 −21scripts/e2e.ts+59 −0