Files
zopu-code/packages/backend/convex
-Puter 477e54240d feat: consolidate web auth and add Effect v4 Project primitives
Auth:
- Add useWebAuth hook as the single web-facing auth interface with four
  states (loading/unauthenticated/authenticated/inconsistent)
- Normalize getCurrentUser to return {id: tokenIdentifier, name, email}
- Rename requireOwnerId to requireAuthUserId across all backend callers
- Set expectAuth:true on ConvexReactClient singleton
- Migrate _app, _auth, user-menu, use-personal-organization to useWebAuth
- Remove unused @code/auth/server export (zero callers confirmed)

Primitives:
- Add packages/primitives/src/project.ts with Effect v4 Project domain:
  URL normalization, six canonical context kinds, strict remote decoding,
  context write decisioning with revision tracking, and no-op detection
- Define PublicGit and ProjectStore replaceable ports
- Define ProjectApplication service orchestrating domain+ports with
  deterministic error mapping
- Add comprehensive test suite (28 tests) with in-memory store and fake
  PublicGit covering normalization, seeds, idempotency, tenant isolation,
  last-write-wins, and typed error mapping
2026-07-23 18:04:02 +05:30
..
2026-07-19 02:46:47 +05:30
2026-07-19 02:46:47 +05:30
2026-07-19 02:46:47 +05:30
2026-07-19 02:46:47 +05:30
2026-07-19 02:46:47 +05:30
2026-07-19 02:46:47 +05:30

Convex Backend

This directory contains the Convex control plane for the app and daemon runtime. Generated files under _generated/ are maintained by Convex and should not be edited by hand.

Daemon Control Plane

  • schema.ts defines daemon definitions, high-churn daemon presence, leased daemon commands, append-only command events, and the sample todos table.
  • daemons.ts manages stable daemon definitions with upsert, get, and list.
  • daemonRuntime.ts records daemon session lifecycle: connect, heartbeat, disconnect, recordEvent, and bounded event listing.
  • daemonCommands.ts owns the command queue: enqueue, available, claim, start, succeed, fail, cancel, and bounded command listing.

Commands are claimed by daemon session. Preserve the claimedBySessionId ownership checks, leaseExpiresAt expiry semantics, terminal statuses, and bounded query results when changing this flow.

Usage

Convex functions are exposed by file path through the generated api object, for example api.daemonCommands.enqueue or api.daemonRuntime.connect. Run bun run dev:server from the repository root to start the development deployment, and bun run dev:setup when configuring Convex for the first time.