From cc47007fa9d9b9d0c5d53f55b095855292f947d5 Mon Sep 17 00:00:00 2001 From: -Puter <22245429+puterhimself@users.noreply.github.com> Date: Mon, 27 Jul 2026 16:34:17 +0530 Subject: [PATCH] Slice 1 polish: archive dormant code, merge work-os into primitives, add futures - Archive dormant apps (daemon, desktop, native, tui) and superseded packages/server into repos/ for reference - Archive 21 dead web components (chat page shell, work-os cluster, strays) into repos/web/; keep reused message-rendering primitives in components/chat - Merge @code/work-os into @code/primitives; work.ts absorbed via ./work subpath and barrel export; update all four importers - Add docs/futures.md tracking audio/video (blocked at Flue + provider), web layout cleanup, and message rendering quality - Repoint dev:zopu script to @code/agents (the live Flue server) - Note repos/ reference-code convention in AGENTS.md --- AGENTS.md | 2 +- apps/web/package.json | 1 - .../components/slice-one/slice-one-page.tsx | 2 +- .../src/lib/slice-one/presentation.test.ts | 2 +- apps/web/src/lib/slice-one/presentation.ts | 2 +- bun.lock | 51 ++---------------- docs/futures.md | 22 ++++++++ package.json | 7 ++- packages/agents/package.json | 1 - packages/backend/convex/works.ts | 2 +- packages/backend/package.json | 1 - packages/primitives/package.json | 7 +-- packages/primitives/src/index.ts | 1 + .../{work-os => primitives}/src/work.test.ts | 0 packages/{work-os => primitives}/src/work.ts | 0 packages/work-os/package.json | 22 -------- packages/work-os/tsconfig.json | 8 --- {apps => repos}/daemon/package.json | 0 {apps => repos}/daemon/src/agent-os.ts | 0 {apps => repos}/daemon/src/convex.ts | 0 {apps => repos}/daemon/src/index.ts | 0 {apps => repos}/daemon/src/runtime.ts | 0 {apps => repos}/daemon/tsconfig.json | 0 {apps => repos}/desktop/.gitignore | 0 {apps => repos}/desktop/electrobun.config.ts | 0 {apps => repos}/desktop/package.json | 0 {apps => repos}/desktop/src/bun/index.ts | 0 {apps => repos}/desktop/tsconfig.json | 0 {apps => repos}/native/.gitignore | 0 {apps => repos}/native/app.json | 0 {apps => repos}/native/app/(auth)/_layout.tsx | 0 {apps => repos}/native/app/(auth)/login.tsx | 0 {apps => repos}/native/app/(auth)/signup.tsx | 0 .../native/app/(drawer)/(tabs)/_layout.tsx | 0 .../native/app/(drawer)/(tabs)/index.tsx | 0 .../native/app/(drawer)/(tabs)/two.tsx | 0 .../native/app/(drawer)/_layout.tsx | 0 {apps => repos}/native/app/(drawer)/index.tsx | 0 {apps => repos}/native/app/(drawer)/todos.tsx | 0 {apps => repos}/native/app/+not-found.tsx | 0 {apps => repos}/native/app/_layout.tsx | 0 {apps => repos}/native/app/modal.tsx | 0 .../assets/images/android-icon-background.png | Bin .../assets/images/android-icon-foreground.png | Bin .../assets/images/android-icon-monochrome.png | Bin .../native/assets/images/favicon.png | Bin {apps => repos}/native/assets/images/icon.png | Bin .../assets/images/partial-react-logo.png | Bin .../native/assets/images/react-logo.png | Bin .../native/assets/images/react-logo@2x.png | Bin .../native/assets/images/react-logo@3x.png | Bin .../native/assets/images/splash-icon.png | Bin .../native/components/container.tsx | 0 .../native/components/theme-toggle.tsx | 0 .../native/contexts/app-theme-context.tsx | 0 {apps => repos}/native/global.css | 0 {apps => repos}/native/metro.config.js | 0 {apps => repos}/native/package.json | 0 {apps => repos}/native/tsconfig.json | 0 {apps => repos}/native/uniwind-env.d.ts | 0 {packages => repos}/server/data/zopu.db | Bin {packages => repos}/server/flue.config.ts | 0 {packages => repos}/server/package.json | 0 {packages => repos}/server/src/agents/zopu.ts | 0 {packages => repos}/server/src/app.ts | 0 {packages => repos}/server/src/db.ts | 0 {packages => repos}/server/src/env.ts | 0 .../server/src/git/gitea-service.ts | 0 .../server/src/sandboxes/agentos.ts | 0 .../server/src/tools/issues.ts | 0 .../server/src/tools/pull-requests.ts | 0 .../server/src/tools/runtime.ts | 0 .../server/src/tools/workflows.ts | 0 .../server/src/workflows/resolve-issue.ts | 0 {packages => repos}/server/tsconfig.json | 0 {apps => repos}/tui/.gitignore | 0 {apps => repos}/tui/README.md | 0 {apps => repos}/tui/package.json | 0 {apps => repos}/tui/src/index.tsx | 0 {apps => repos}/tui/tsconfig.json | 0 .../web}/components/chat/chat-composer.tsx | 0 .../components/chat/chat-conversation.tsx | 0 .../web}/components/chat/chat-header.tsx | 0 .../web}/components/chat/chat-page.tsx | 0 .../src => repos/web}/components/header.tsx | 0 .../src => repos/web}/components/loader.tsx | 0 .../web}/components/mode-toggle.tsx | 0 .../projects/project-workspace-page.tsx | 0 .../web}/components/user-menu.tsx | 0 .../components/work-os/conversation-panel.tsx | 0 .../web}/components/work-os/empty-state.tsx | 0 .../web}/components/work-os/signals-panel.tsx | 0 .../components/work-os/work-os-composer.tsx | 0 .../components/work-os/work-os-header.tsx | 0 .../web}/components/work-os/work-os-page.tsx | 0 .../components/work-os/work-unit-card.tsx | 0 .../components/work-os/work-unit-detail.tsx | 0 .../web}/hooks/chat/use-chat-composer.ts | 0 .../web}/hooks/work-os/use-work-os.ts | 0 .../lib/work-os/work-unit-projection.test.ts | 0 .../web}/lib/work-os/work-unit-projection.ts | 0 101 files changed, 38 insertions(+), 93 deletions(-) create mode 100644 docs/futures.md rename packages/{work-os => primitives}/src/work.test.ts (100%) rename packages/{work-os => primitives}/src/work.ts (100%) delete mode 100644 packages/work-os/package.json delete mode 100644 packages/work-os/tsconfig.json rename {apps => repos}/daemon/package.json (100%) rename {apps => repos}/daemon/src/agent-os.ts (100%) rename {apps => repos}/daemon/src/convex.ts (100%) rename {apps => repos}/daemon/src/index.ts (100%) rename {apps => repos}/daemon/src/runtime.ts (100%) rename {apps => repos}/daemon/tsconfig.json (100%) rename {apps => repos}/desktop/.gitignore (100%) rename {apps => repos}/desktop/electrobun.config.ts (100%) rename {apps => repos}/desktop/package.json (100%) rename {apps => repos}/desktop/src/bun/index.ts (100%) rename {apps => repos}/desktop/tsconfig.json (100%) rename {apps => repos}/native/.gitignore (100%) rename {apps => repos}/native/app.json (100%) rename {apps => repos}/native/app/(auth)/_layout.tsx (100%) rename {apps => repos}/native/app/(auth)/login.tsx (100%) rename {apps => repos}/native/app/(auth)/signup.tsx (100%) rename {apps => repos}/native/app/(drawer)/(tabs)/_layout.tsx (100%) rename {apps => repos}/native/app/(drawer)/(tabs)/index.tsx (100%) rename {apps => repos}/native/app/(drawer)/(tabs)/two.tsx (100%) rename {apps => repos}/native/app/(drawer)/_layout.tsx (100%) rename {apps => repos}/native/app/(drawer)/index.tsx (100%) rename {apps => repos}/native/app/(drawer)/todos.tsx (100%) rename {apps => repos}/native/app/+not-found.tsx (100%) rename {apps => repos}/native/app/_layout.tsx (100%) rename {apps => repos}/native/app/modal.tsx (100%) rename {apps => repos}/native/assets/images/android-icon-background.png (100%) rename {apps => repos}/native/assets/images/android-icon-foreground.png (100%) rename {apps => repos}/native/assets/images/android-icon-monochrome.png (100%) rename {apps => repos}/native/assets/images/favicon.png (100%) rename {apps => repos}/native/assets/images/icon.png (100%) rename {apps => repos}/native/assets/images/partial-react-logo.png (100%) rename {apps => repos}/native/assets/images/react-logo.png (100%) rename {apps => repos}/native/assets/images/react-logo@2x.png (100%) rename {apps => repos}/native/assets/images/react-logo@3x.png (100%) rename {apps => repos}/native/assets/images/splash-icon.png (100%) rename {apps => repos}/native/components/container.tsx (100%) rename {apps => repos}/native/components/theme-toggle.tsx (100%) rename {apps => repos}/native/contexts/app-theme-context.tsx (100%) rename {apps => repos}/native/global.css (100%) rename {apps => repos}/native/metro.config.js (100%) rename {apps => repos}/native/package.json (100%) rename {apps => repos}/native/tsconfig.json (100%) rename {apps => repos}/native/uniwind-env.d.ts (100%) rename {packages => repos}/server/data/zopu.db (100%) rename {packages => repos}/server/flue.config.ts (100%) rename {packages => repos}/server/package.json (100%) rename {packages => repos}/server/src/agents/zopu.ts (100%) rename {packages => repos}/server/src/app.ts (100%) rename {packages => repos}/server/src/db.ts (100%) rename {packages => repos}/server/src/env.ts (100%) rename {packages => repos}/server/src/git/gitea-service.ts (100%) rename {packages => repos}/server/src/sandboxes/agentos.ts (100%) rename {packages => repos}/server/src/tools/issues.ts (100%) rename {packages => repos}/server/src/tools/pull-requests.ts (100%) rename {packages => repos}/server/src/tools/runtime.ts (100%) rename {packages => repos}/server/src/tools/workflows.ts (100%) rename {packages => repos}/server/src/workflows/resolve-issue.ts (100%) rename {packages => repos}/server/tsconfig.json (100%) rename {apps => repos}/tui/.gitignore (100%) rename {apps => repos}/tui/README.md (100%) rename {apps => repos}/tui/package.json (100%) rename {apps => repos}/tui/src/index.tsx (100%) rename {apps => repos}/tui/tsconfig.json (100%) rename {apps/web/src => repos/web}/components/chat/chat-composer.tsx (100%) rename {apps/web/src => repos/web}/components/chat/chat-conversation.tsx (100%) rename {apps/web/src => repos/web}/components/chat/chat-header.tsx (100%) rename {apps/web/src => repos/web}/components/chat/chat-page.tsx (100%) rename {apps/web/src => repos/web}/components/header.tsx (100%) rename {apps/web/src => repos/web}/components/loader.tsx (100%) rename {apps/web/src => repos/web}/components/mode-toggle.tsx (100%) rename {apps/web/src => repos/web}/components/projects/project-workspace-page.tsx (100%) rename {apps/web/src => repos/web}/components/user-menu.tsx (100%) rename {apps/web/src => repos/web}/components/work-os/conversation-panel.tsx (100%) rename {apps/web/src => repos/web}/components/work-os/empty-state.tsx (100%) rename {apps/web/src => repos/web}/components/work-os/signals-panel.tsx (100%) rename {apps/web/src => repos/web}/components/work-os/work-os-composer.tsx (100%) rename {apps/web/src => repos/web}/components/work-os/work-os-header.tsx (100%) rename {apps/web/src => repos/web}/components/work-os/work-os-page.tsx (100%) rename {apps/web/src => repos/web}/components/work-os/work-unit-card.tsx (100%) rename {apps/web/src => repos/web}/components/work-os/work-unit-detail.tsx (100%) rename {apps/web/src => repos/web}/hooks/chat/use-chat-composer.ts (100%) rename {apps/web/src => repos/web}/hooks/work-os/use-work-os.ts (100%) rename {apps/web/src => repos/web}/lib/work-os/work-unit-projection.test.ts (100%) rename {apps/web/src => repos/web}/lib/work-os/work-unit-projection.ts (100%) diff --git a/AGENTS.md b/AGENTS.md index d3811f5..1becc14 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -1 +1 @@ -This Bun/TypeScript monorepo uses Bun/Vite+, Convex, Effect v4, and Flue; use `@code/*` exports, validate env in `packages/env`, never edit generated files or `repos/`, and keep UI presentational by moving UI state to reusable hooks and business/services/pure logic to dedicated modules. Treat `docs/PRODUCT.md`, `docs/DESIGN.md`, and `docs/TECH.md` as the canonical product, experience, and architecture specifications; read the relevant files before decisions or changes in those domains. Before Flue work, MUST read `.agents/skills/flue/SKILL.md` and use installed-version `flue docs`; after every change, MUST run `bunx ultracite check` on every changed source, script, and agent file (apply `bunx ultracite fix` first when needed), run the affected package's `bun run check-types`, exercise the changed behavior with its targeted runtime or smoke test, then run root `bun run check` and report unrelated pre-existing failures separately. Keep each individual instruction in any `AGENTS.md` to 1–2 dense sentences, replacing stale guidance rather than appending; this limit applies per instruction, not to the whole file. +This Bun/TypeScript monorepo uses Bun/Vite+, Convex, Effect v4, and Flue; use `@code/*` exports, validate env in `packages/env`, never edit generated files or `repos/` (archived reference code — dormant apps, superseded web components, and prior implementations kept for reference), and keep UI presentational by moving UI state to reusable hooks and business/services/pure logic to dedicated modules. Treat `docs/PRODUCT.md`, `docs/DESIGN.md`, and `docs/TECH.md` as the canonical product, experience, and architecture specifications; read the relevant files before decisions or changes in those domains. Before Flue work, MUST read `.agents/skills/flue/SKILL.md` and use installed-version `flue docs`; after every change, MUST run `bunx ultracite check` on every changed source, script, and agent file (apply `bunx ultracite fix` first when needed), run the affected package's `bun run check-types`, exercise the changed behavior with its targeted runtime or smoke test, then run root `bun run check` and report unrelated pre-existing failures separately. Keep each individual instruction in any `AGENTS.md` to 1–2 dense sentences, replacing stale guidance rather than appending; this limit applies per instruction, not to the whole file. diff --git a/apps/web/package.json b/apps/web/package.json index 18306c5..bc779f4 100644 --- a/apps/web/package.json +++ b/apps/web/package.json @@ -15,7 +15,6 @@ "@code/env": "workspace:*", "@code/primitives": "workspace:*", "@code/ui": "workspace:*", - "@code/work-os": "workspace:*", "@flue/react": "1.0.0-beta.9", "@flue/sdk": "1.0.0-beta.9", "@react-router/fs-routes": "^8.1.0", diff --git a/apps/web/src/components/slice-one/slice-one-page.tsx b/apps/web/src/components/slice-one/slice-one-page.tsx index 928390e..4388e6c 100644 --- a/apps/web/src/components/slice-one/slice-one-page.tsx +++ b/apps/web/src/components/slice-one/slice-one-page.tsx @@ -1,9 +1,9 @@ +import { projectWorkNotices } from "@code/primitives/work"; import { Conversation, ConversationContent, } from "@code/ui/components/ai-elements/conversation"; import { Button } from "@code/ui/components/button"; -import { projectWorkNotices } from "@code/work-os"; import { ChevronRight, FolderGit2, diff --git a/apps/web/src/lib/slice-one/presentation.test.ts b/apps/web/src/lib/slice-one/presentation.test.ts index c36f440..4437b7e 100644 --- a/apps/web/src/lib/slice-one/presentation.test.ts +++ b/apps/web/src/lib/slice-one/presentation.test.ts @@ -1,4 +1,4 @@ -import type { WorkNotice } from "@code/work-os"; +import type { WorkNotice } from "@code/primitives/work"; import type { FlueConversationMessage } from "@flue/react"; import { describe, expect, test } from "vitest"; diff --git a/apps/web/src/lib/slice-one/presentation.ts b/apps/web/src/lib/slice-one/presentation.ts index 3b4e089..63f5a99 100644 --- a/apps/web/src/lib/slice-one/presentation.ts +++ b/apps/web/src/lib/slice-one/presentation.ts @@ -1,4 +1,4 @@ -import type { WorkNotice } from "@code/work-os"; +import type { WorkNotice } from "@code/primitives/work"; import type { FlueConversationMessage } from "@flue/react"; import { diff --git a/bun.lock b/bun.lock index f2e713c..af415a5 100644 --- a/bun.lock +++ b/bun.lock @@ -9,7 +9,6 @@ "@code/config": "workspace:*", "@code/env": "workspace:*", "@code/primitives": "workspace:*", - "@code/work-os": "workspace:*", "@flue/sdk": "1.0.0-beta.9", "@types/bun": "catalog:", "@types/node": "^22.13.14", @@ -33,7 +32,6 @@ "@code/env": "workspace:*", "@code/primitives": "workspace:*", "@code/ui": "workspace:*", - "@code/work-os": "workspace:*", "@flue/react": "1.0.0-beta.9", "@flue/sdk": "1.0.0-beta.9", "@react-router/fs-routes": "^8.1.0", @@ -72,7 +70,6 @@ "@code/backend": "workspace:*", "@code/env": "workspace:*", "@code/primitives": "workspace:*", - "@code/work-os": "workspace:*", "@flue/runtime": "latest", "@rivet-dev/agentos-core": "catalog:", "convex": "catalog:", @@ -126,7 +123,6 @@ "@better-auth/expo": "catalog:", "@code/env": "workspace:*", "@code/primitives": "workspace:*", - "@code/work-os": "workspace:*", "@convex-dev/better-auth": "catalog:", "better-auth": "catalog:", "convex": "catalog:", @@ -174,27 +170,6 @@ "vitest": "catalog:", }, }, - "packages/server": { - "name": "@code/server", - "version": "0.0.0", - "dependencies": { - "@agentos-software/codex-cli": "0.3.4", - "@agentos-software/git": "0.3.3", - "@agentos-software/opencode": "0.2.7", - "@agentos-software/pi": "0.2.7", - "@flue/runtime": "1.0.0-beta.9", - "@rivet-dev/agentos-core": "catalog:", - "effect": "catalog:", - "hono": "4.12.30", - "valibot": "^1.4.2", - }, - "devDependencies": { - "@code/config": "workspace:*", - "@flue/cli": "latest", - "@types/bun": "catalog:", - "typescript": "catalog:", - }, - }, "packages/ui": { "name": "@code/ui", "version": "0.0.0", @@ -229,18 +204,6 @@ "typescript": "catalog:", }, }, - "packages/work-os": { - "name": "@code/work-os", - "dependencies": { - "effect": "catalog:", - }, - "devDependencies": { - "@code/config": "workspace:*", - "@types/node": "^22.13.14", - "typescript": "catalog:", - "vitest": "catalog:", - }, - }, }, "overrides": { "vite": "npm:@voidzero-dev/vite-plus-core@0.2.2", @@ -601,12 +564,8 @@ "@code/primitives": ["@code/primitives@workspace:packages/primitives"], - "@code/server": ["@code/server@workspace:packages/server"], - "@code/ui": ["@code/ui@workspace:packages/ui"], - "@code/work-os": ["@code/work-os@workspace:packages/work-os"], - "@convex-dev/better-auth": ["@convex-dev/better-auth@0.12.5", "", { "dependencies": { "@better-fetch/fetch": "^1.1.18", "common-tags": "^1.8.2", "convex-helpers": "^0.1.95", "jose": "^6.1.0", "remeda": "^2.32.0", "semver": "^7.7.3", "type-fest": "^5.0.0", "zod": "^4.0.0" }, "peerDependencies": { "better-auth": ">=1.6.11 <1.7.0", "convex": "^1.25.0", "react": "^18.3.1 || ^19.0.0" } }, "sha512-YFUbGk04OlINno9FpOTNZN67AP+kSQsblfep5zs1f/WTgMWjD5FymU6rSSh3mu52gukmDNnBJTjC/lj4QRpjlQ=="], "@cspotcode/source-map-support": ["@cspotcode/source-map-support@0.8.1", "", { "dependencies": { "@jridgewell/trace-mapping": "0.3.9" } }, "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw=="], @@ -3079,7 +3038,7 @@ "parse-png": ["parse-png@2.1.0", "", { "dependencies": { "pngjs": "^3.3.0" } }, "sha512-Nt/a5SfCLiTnQAjx3fHlqp8hRgTL3z7kTQZzvIMS9uCAepnCyjpdEc6M/sz69WqMBdaDBw9sF1F1UaHROYzGkQ=="], - "parse5": ["parse5@5.1.1", "", {}, "sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug=="], + "parse5": ["parse5@7.3.0", "", { "dependencies": { "entities": "^6.0.0" } }, "sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw=="], "parse5-htmlparser2-tree-adapter": ["parse5-htmlparser2-tree-adapter@6.0.1", "", { "dependencies": { "parse5": "^6.0.1" } }, "sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA=="], @@ -3851,8 +3810,6 @@ "@code/backend/@types/node": ["@types/node@24.13.3", "", { "dependencies": { "undici-types": "~7.18.0" } }, "sha512-Dh8vAsV36ig5wa9OX4pXvMc9D3Veibfw2wix0CUwYODLD8nkj9UsLjASr49nPg+2eKzxhBV+v7L8pXvT4e639Q=="], - "@code/server/hono": ["hono@4.12.30", "", {}, "sha512-emn+JoJjrN9YTpRDS5it/UI2SO9BAE37T6I3d963RxcZ81G9A4pr2SZTEiiaiKbzx+NKRg5BZ89fCL7gCJCUog=="], - "@cspotcode/source-map-support/@jridgewell/trace-mapping": ["@jridgewell/trace-mapping@0.3.9", "", { "dependencies": { "@jridgewell/resolve-uri": "^3.0.3", "@jridgewell/sourcemap-codec": "^1.4.10" } }, "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ=="], "@dotenvx/dotenvx/commander": ["commander@11.1.0", "", {}, "sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ=="], @@ -4013,6 +3970,8 @@ "cli-highlight/chalk": ["chalk@4.1.2", "", { "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" } }, "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA=="], + "cli-highlight/parse5": ["parse5@5.1.1", "", {}, "sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug=="], + "cli-highlight/yargs": ["yargs@16.2.2", "", { "dependencies": { "cliui": "^7.0.2", "escalade": "^3.1.1", "get-caller-file": "^2.0.5", "require-directory": "^2.1.1", "string-width": "^4.2.0", "y18n": "^5.0.5", "yargs-parser": "^20.2.2" } }, "sha512-Nt9ZJjXTv5R8MHbqby/wXQ6Gi0Bb3TcYZkR1bzuL4yB2OxWPkXknz513gEF0GoA6tn00UpbPvERW8rzCuWCA6w=="], "cliui/strip-ansi": ["strip-ansi@6.0.1", "", { "dependencies": { "ansi-regex": "^5.0.1" } }, "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A=="], @@ -4095,10 +4054,6 @@ "googleapis-common/uuid": ["uuid@9.0.1", "", { "bin": { "uuid": "dist/bin/uuid" } }, "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA=="], - "hast-util-from-html/parse5": ["parse5@7.3.0", "", { "dependencies": { "entities": "^6.0.0" } }, "sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw=="], - - "hast-util-raw/parse5": ["parse5@7.3.0", "", { "dependencies": { "entities": "^6.0.0" } }, "sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw=="], - "hoist-non-react-statics/react-is": ["react-is@16.13.1", "", {}, "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ=="], "import-fresh/resolve-from": ["resolve-from@4.0.0", "", {}, "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g=="], diff --git a/docs/futures.md b/docs/futures.md new file mode 100644 index 0000000..593acaf --- /dev/null +++ b/docs/futures.md @@ -0,0 +1,22 @@ +# Futures + +Work that is intentionally deferred from the current slice. Each item records enough context that a future thread can pick it up without re-investigating. + +## Audio and video input + +Status: blocked at two layers; not viable through the current transport. + +MiMo V2.5 lists audio and video in its model spec, but the live stack cannot carry either modality today: + +- Flue agent transport exposes only `images: AgentPromptImage[]` on `AgentPromptOptions`, with `AgentPromptImage.type` pinned to `'image'`. There is no `audio` or `video` field, so the client cannot attach either. +- The Cheaptricks gateway rejects non-image content parts upstream. Probed directly with OpenAI-style `input_audio` and `video_url` parts, both returned `"Error from provider (Console Go): Upstream request failed"` while a plain text probe on the same endpoint returned a normal completion. + +Cheapest real path, if this is revisited: video via client-side frame extraction sent as image attachments (Flue already supports image input). True audio/video would need a Flue provider adapter (Provider API) plus an upstream that actually accepts the modality, which the current probe suggests it does not. + +## Web layout cleanup + +Polish pass on the mobile-first layout: spacing, alignment, responsive edge cases, and removing dead or vestigial UI introduced during the slice-one build. Goal is a tightened, consistent layout before slice two adds more surfaces. + +## Message rendering and streaming quality + +Improve the read experience for streamed assistant messages: markdown fidelity, reasoning-trace presentation, code block and Mermaid rendering stability, and the perceived smoothness of token streaming. Covers both correctness of the rendered output and the feel of the live update. diff --git a/package.json b/package.json index 3073c91..3fe7aba 100644 --- a/package.json +++ b/package.json @@ -11,7 +11,7 @@ "packages/env", "packages/primitives", "packages/ui", - "packages/work-os" + "packages/ui" ], "catalog": { "@rivet-dev/agentos": "^0.2.7", @@ -44,7 +44,7 @@ "dev": "vp run -r dev", "build": "vp run -r build", "check-types": "vp run -r check-types", - "check": "ultracite check package.json vite.config.ts apps/web/package.json apps/web/src/root.tsx apps/web/src/index.css apps/web/src/components/chat/chat-attachments.tsx apps/web/src/components/chat/chat-message.tsx apps/web/src/components/slice-one apps/web/src/hooks/chat/use-chat-agent.test.ts apps/web/src/hooks/chat/use-chat-images.ts apps/web/src/hooks/slice-one apps/web/src/lib/chat/attachments.ts apps/web/src/lib/chat/attachments.test.ts apps/web/src/lib/chat/transforms.ts apps/web/src/lib/chat/transforms.test.ts apps/web/src/lib/flue-transport.ts apps/web/src/lib/flue-transport.test.ts apps/web/src/lib/slice-one apps/web/src/routes/app/dashboard/page.tsx apps/web/src/routes/app/mobile/chat/page.tsx apps/web/src/routes/app/mobile/page.tsx packages/agents/package.json packages/agents/src/agents/zopu.ts packages/agents/src/tools/slice-one.ts packages/backend/package.json packages/backend/convex/schema.ts packages/backend/convex/works.ts packages/backend/convex/works.test.ts packages/work-os", + "check": "ultracite check package.json vite.config.ts apps/web/package.json apps/web/src/root.tsx apps/web/src/index.css apps/web/src/components/chat/chat-attachments.tsx apps/web/src/components/chat/chat-message.tsx apps/web/src/components/slice-one apps/web/src/hooks/chat/use-chat-agent.test.ts apps/web/src/hooks/chat/use-chat-images.ts apps/web/src/hooks/slice-one apps/web/src/lib/chat/attachments.ts apps/web/src/lib/chat/attachments.test.ts apps/web/src/lib/chat/transforms.ts apps/web/src/lib/chat/transforms.test.ts apps/web/src/lib/flue-transport.ts apps/web/src/lib/flue-transport.test.ts apps/web/src/lib/slice-one apps/web/src/routes/app/dashboard/page.tsx apps/web/src/routes/app/mobile/chat/page.tsx apps/web/src/routes/app/mobile/page.tsx packages/agents/package.json packages/agents/src/agents/zopu.ts packages/agents/src/tools/slice-one.ts packages/backend/package.json packages/backend/convex/schema.ts packages/backend/convex/works.ts packages/backend/convex/works.test.ts packages/primitives/src/work.ts packages/primitives/src/work.test.ts", "lint": "vp lint", "format": "vp fmt", "smoke:zopu": "bun scripts/zopu-smoke.ts", @@ -63,7 +63,7 @@ "slice1": "vp run -r dev", "orb:proof": "bun run scripts/orb-proof.ts", "orb:run": "bun run scripts/orb-project-run.ts", - "dev:zopu": "vp run --filter @code/server dev", + "dev:zopu": "vp run --filter @code/agents dev", "dev:zopu:web": "vp run --filter web dev" }, "dependencies": {}, @@ -72,7 +72,6 @@ "@code/config": "workspace:*", "@code/env": "workspace:*", "@code/primitives": "workspace:*", - "@code/work-os": "workspace:*", "@flue/sdk": "1.0.0-beta.9", "@types/bun": "catalog:", "@types/node": "^22.13.14", diff --git a/packages/agents/package.json b/packages/agents/package.json index 9fa5e16..8b3b7fb 100644 --- a/packages/agents/package.json +++ b/packages/agents/package.json @@ -17,7 +17,6 @@ "@code/backend": "workspace:*", "@code/env": "workspace:*", "@code/primitives": "workspace:*", - "@code/work-os": "workspace:*", "@flue/runtime": "latest", "@rivet-dev/agentos-core": "catalog:", "convex": "catalog:", diff --git a/packages/backend/convex/works.ts b/packages/backend/convex/works.ts index c122852..c183c65 100644 --- a/packages/backend/convex/works.ts +++ b/packages/backend/convex/works.ts @@ -3,7 +3,7 @@ import { signalAttachedEvent, workDraftFromSignal, workProposedEventFromSignal, -} from "@code/work-os"; +} from "@code/primitives/work"; import { ConvexError, v } from "convex/values"; import { Effect } from "effect"; diff --git a/packages/backend/package.json b/packages/backend/package.json index 41afdd3..f3bcba2 100644 --- a/packages/backend/package.json +++ b/packages/backend/package.json @@ -15,7 +15,6 @@ "@better-auth/expo": "catalog:", "@code/env": "workspace:*", "@code/primitives": "workspace:*", - "@code/work-os": "workspace:*", "@convex-dev/better-auth": "catalog:", "better-auth": "catalog:", "convex": "catalog:", diff --git a/packages/primitives/package.json b/packages/primitives/package.json index c0da7d4..678830c 100644 --- a/packages/primitives/package.json +++ b/packages/primitives/package.json @@ -14,7 +14,8 @@ "./project-work": "./src/project-work.ts", "./project-workspace": "./src/project-workspace.ts", "./signal": "./src/signal.ts", - "./smoke": "./src/smoke.ts" + "./smoke": "./src/smoke.ts", + "./work": "./src/work.ts" }, "scripts": { "check-types": "tsc --noEmit", @@ -22,10 +23,10 @@ "test:watch": "vitest" }, "dependencies": { + "@agentos-software/codex-cli": "0.3.4", "@agentos-software/git": "0.3.3", "@rivet-dev/agentos": "catalog:", - "effect": "catalog:", - "@agentos-software/codex-cli": "0.3.4" + "effect": "catalog:" }, "devDependencies": { "@code/config": "workspace:*", diff --git a/packages/primitives/src/index.ts b/packages/primitives/src/index.ts index 6b835ea..635fe29 100644 --- a/packages/primitives/src/index.ts +++ b/packages/primitives/src/index.ts @@ -9,3 +9,4 @@ export * from "./project-workspace"; export * from "./project-work"; export * from "./signal"; export * from "./smoke"; +export * from "./work"; diff --git a/packages/work-os/src/work.test.ts b/packages/primitives/src/work.test.ts similarity index 100% rename from packages/work-os/src/work.test.ts rename to packages/primitives/src/work.test.ts diff --git a/packages/work-os/src/work.ts b/packages/primitives/src/work.ts similarity index 100% rename from packages/work-os/src/work.ts rename to packages/primitives/src/work.ts diff --git a/packages/work-os/package.json b/packages/work-os/package.json deleted file mode 100644 index 24c4a97..0000000 --- a/packages/work-os/package.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "name": "@code/work-os", - "version": "0.0.0", - "private": true, - "type": "module", - "exports": { - ".": "./src/work.ts" - }, - "scripts": { - "check-types": "tsc --noEmit", - "test": "vitest run" - }, - "dependencies": { - "effect": "catalog:" - }, - "devDependencies": { - "@code/config": "workspace:*", - "@types/node": "^22.13.14", - "typescript": "catalog:", - "vitest": "catalog:" - } -} diff --git a/packages/work-os/tsconfig.json b/packages/work-os/tsconfig.json deleted file mode 100644 index a901973..0000000 --- a/packages/work-os/tsconfig.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "extends": "@code/config/tsconfig.base.json", - "compilerOptions": { - "outDir": "dist", - "rootDir": "src" - }, - "include": ["src"] -} diff --git a/apps/daemon/package.json b/repos/daemon/package.json similarity index 100% rename from apps/daemon/package.json rename to repos/daemon/package.json diff --git a/apps/daemon/src/agent-os.ts b/repos/daemon/src/agent-os.ts similarity index 100% rename from apps/daemon/src/agent-os.ts rename to repos/daemon/src/agent-os.ts diff --git a/apps/daemon/src/convex.ts b/repos/daemon/src/convex.ts similarity index 100% rename from apps/daemon/src/convex.ts rename to repos/daemon/src/convex.ts diff --git a/apps/daemon/src/index.ts b/repos/daemon/src/index.ts similarity index 100% rename from apps/daemon/src/index.ts rename to repos/daemon/src/index.ts diff --git a/apps/daemon/src/runtime.ts b/repos/daemon/src/runtime.ts similarity index 100% rename from apps/daemon/src/runtime.ts rename to repos/daemon/src/runtime.ts diff --git a/apps/daemon/tsconfig.json b/repos/daemon/tsconfig.json similarity index 100% rename from apps/daemon/tsconfig.json rename to repos/daemon/tsconfig.json diff --git a/apps/desktop/.gitignore b/repos/desktop/.gitignore similarity index 100% rename from apps/desktop/.gitignore rename to repos/desktop/.gitignore diff --git a/apps/desktop/electrobun.config.ts b/repos/desktop/electrobun.config.ts similarity index 100% rename from apps/desktop/electrobun.config.ts rename to repos/desktop/electrobun.config.ts diff --git a/apps/desktop/package.json b/repos/desktop/package.json similarity index 100% rename from apps/desktop/package.json rename to repos/desktop/package.json diff --git a/apps/desktop/src/bun/index.ts b/repos/desktop/src/bun/index.ts similarity index 100% rename from apps/desktop/src/bun/index.ts rename to repos/desktop/src/bun/index.ts diff --git a/apps/desktop/tsconfig.json b/repos/desktop/tsconfig.json similarity index 100% rename from apps/desktop/tsconfig.json rename to repos/desktop/tsconfig.json diff --git a/apps/native/.gitignore b/repos/native/.gitignore similarity index 100% rename from apps/native/.gitignore rename to repos/native/.gitignore diff --git a/apps/native/app.json b/repos/native/app.json similarity index 100% rename from apps/native/app.json rename to repos/native/app.json diff --git a/apps/native/app/(auth)/_layout.tsx b/repos/native/app/(auth)/_layout.tsx similarity index 100% rename from apps/native/app/(auth)/_layout.tsx rename to repos/native/app/(auth)/_layout.tsx diff --git a/apps/native/app/(auth)/login.tsx b/repos/native/app/(auth)/login.tsx similarity index 100% rename from apps/native/app/(auth)/login.tsx rename to repos/native/app/(auth)/login.tsx diff --git a/apps/native/app/(auth)/signup.tsx b/repos/native/app/(auth)/signup.tsx similarity index 100% rename from apps/native/app/(auth)/signup.tsx rename to repos/native/app/(auth)/signup.tsx diff --git a/apps/native/app/(drawer)/(tabs)/_layout.tsx b/repos/native/app/(drawer)/(tabs)/_layout.tsx similarity index 100% rename from apps/native/app/(drawer)/(tabs)/_layout.tsx rename to repos/native/app/(drawer)/(tabs)/_layout.tsx diff --git a/apps/native/app/(drawer)/(tabs)/index.tsx b/repos/native/app/(drawer)/(tabs)/index.tsx similarity index 100% rename from apps/native/app/(drawer)/(tabs)/index.tsx rename to repos/native/app/(drawer)/(tabs)/index.tsx diff --git a/apps/native/app/(drawer)/(tabs)/two.tsx b/repos/native/app/(drawer)/(tabs)/two.tsx similarity index 100% rename from apps/native/app/(drawer)/(tabs)/two.tsx rename to repos/native/app/(drawer)/(tabs)/two.tsx diff --git a/apps/native/app/(drawer)/_layout.tsx b/repos/native/app/(drawer)/_layout.tsx similarity index 100% rename from apps/native/app/(drawer)/_layout.tsx rename to repos/native/app/(drawer)/_layout.tsx diff --git a/apps/native/app/(drawer)/index.tsx b/repos/native/app/(drawer)/index.tsx similarity index 100% rename from apps/native/app/(drawer)/index.tsx rename to repos/native/app/(drawer)/index.tsx diff --git a/apps/native/app/(drawer)/todos.tsx b/repos/native/app/(drawer)/todos.tsx similarity index 100% rename from apps/native/app/(drawer)/todos.tsx rename to repos/native/app/(drawer)/todos.tsx diff --git a/apps/native/app/+not-found.tsx b/repos/native/app/+not-found.tsx similarity index 100% rename from apps/native/app/+not-found.tsx rename to repos/native/app/+not-found.tsx diff --git a/apps/native/app/_layout.tsx b/repos/native/app/_layout.tsx similarity index 100% rename from apps/native/app/_layout.tsx rename to repos/native/app/_layout.tsx diff --git a/apps/native/app/modal.tsx b/repos/native/app/modal.tsx similarity index 100% rename from apps/native/app/modal.tsx rename to repos/native/app/modal.tsx diff --git a/apps/native/assets/images/android-icon-background.png b/repos/native/assets/images/android-icon-background.png similarity index 100% rename from apps/native/assets/images/android-icon-background.png rename to repos/native/assets/images/android-icon-background.png diff --git a/apps/native/assets/images/android-icon-foreground.png b/repos/native/assets/images/android-icon-foreground.png similarity index 100% rename from apps/native/assets/images/android-icon-foreground.png rename to repos/native/assets/images/android-icon-foreground.png diff --git a/apps/native/assets/images/android-icon-monochrome.png b/repos/native/assets/images/android-icon-monochrome.png similarity index 100% rename from apps/native/assets/images/android-icon-monochrome.png rename to repos/native/assets/images/android-icon-monochrome.png diff --git a/apps/native/assets/images/favicon.png b/repos/native/assets/images/favicon.png similarity index 100% rename from apps/native/assets/images/favicon.png rename to repos/native/assets/images/favicon.png diff --git a/apps/native/assets/images/icon.png b/repos/native/assets/images/icon.png similarity index 100% rename from apps/native/assets/images/icon.png rename to repos/native/assets/images/icon.png diff --git a/apps/native/assets/images/partial-react-logo.png b/repos/native/assets/images/partial-react-logo.png similarity index 100% rename from apps/native/assets/images/partial-react-logo.png rename to repos/native/assets/images/partial-react-logo.png diff --git a/apps/native/assets/images/react-logo.png b/repos/native/assets/images/react-logo.png similarity index 100% rename from apps/native/assets/images/react-logo.png rename to repos/native/assets/images/react-logo.png diff --git a/apps/native/assets/images/react-logo@2x.png b/repos/native/assets/images/react-logo@2x.png similarity index 100% rename from apps/native/assets/images/react-logo@2x.png rename to repos/native/assets/images/react-logo@2x.png diff --git a/apps/native/assets/images/react-logo@3x.png b/repos/native/assets/images/react-logo@3x.png similarity index 100% rename from apps/native/assets/images/react-logo@3x.png rename to repos/native/assets/images/react-logo@3x.png diff --git a/apps/native/assets/images/splash-icon.png b/repos/native/assets/images/splash-icon.png similarity index 100% rename from apps/native/assets/images/splash-icon.png rename to repos/native/assets/images/splash-icon.png diff --git a/apps/native/components/container.tsx b/repos/native/components/container.tsx similarity index 100% rename from apps/native/components/container.tsx rename to repos/native/components/container.tsx diff --git a/apps/native/components/theme-toggle.tsx b/repos/native/components/theme-toggle.tsx similarity index 100% rename from apps/native/components/theme-toggle.tsx rename to repos/native/components/theme-toggle.tsx diff --git a/apps/native/contexts/app-theme-context.tsx b/repos/native/contexts/app-theme-context.tsx similarity index 100% rename from apps/native/contexts/app-theme-context.tsx rename to repos/native/contexts/app-theme-context.tsx diff --git a/apps/native/global.css b/repos/native/global.css similarity index 100% rename from apps/native/global.css rename to repos/native/global.css diff --git a/apps/native/metro.config.js b/repos/native/metro.config.js similarity index 100% rename from apps/native/metro.config.js rename to repos/native/metro.config.js diff --git a/apps/native/package.json b/repos/native/package.json similarity index 100% rename from apps/native/package.json rename to repos/native/package.json diff --git a/apps/native/tsconfig.json b/repos/native/tsconfig.json similarity index 100% rename from apps/native/tsconfig.json rename to repos/native/tsconfig.json diff --git a/apps/native/uniwind-env.d.ts b/repos/native/uniwind-env.d.ts similarity index 100% rename from apps/native/uniwind-env.d.ts rename to repos/native/uniwind-env.d.ts diff --git a/packages/server/data/zopu.db b/repos/server/data/zopu.db similarity index 100% rename from packages/server/data/zopu.db rename to repos/server/data/zopu.db diff --git a/packages/server/flue.config.ts b/repos/server/flue.config.ts similarity index 100% rename from packages/server/flue.config.ts rename to repos/server/flue.config.ts diff --git a/packages/server/package.json b/repos/server/package.json similarity index 100% rename from packages/server/package.json rename to repos/server/package.json diff --git a/packages/server/src/agents/zopu.ts b/repos/server/src/agents/zopu.ts similarity index 100% rename from packages/server/src/agents/zopu.ts rename to repos/server/src/agents/zopu.ts diff --git a/packages/server/src/app.ts b/repos/server/src/app.ts similarity index 100% rename from packages/server/src/app.ts rename to repos/server/src/app.ts diff --git a/packages/server/src/db.ts b/repos/server/src/db.ts similarity index 100% rename from packages/server/src/db.ts rename to repos/server/src/db.ts diff --git a/packages/server/src/env.ts b/repos/server/src/env.ts similarity index 100% rename from packages/server/src/env.ts rename to repos/server/src/env.ts diff --git a/packages/server/src/git/gitea-service.ts b/repos/server/src/git/gitea-service.ts similarity index 100% rename from packages/server/src/git/gitea-service.ts rename to repos/server/src/git/gitea-service.ts diff --git a/packages/server/src/sandboxes/agentos.ts b/repos/server/src/sandboxes/agentos.ts similarity index 100% rename from packages/server/src/sandboxes/agentos.ts rename to repos/server/src/sandboxes/agentos.ts diff --git a/packages/server/src/tools/issues.ts b/repos/server/src/tools/issues.ts similarity index 100% rename from packages/server/src/tools/issues.ts rename to repos/server/src/tools/issues.ts diff --git a/packages/server/src/tools/pull-requests.ts b/repos/server/src/tools/pull-requests.ts similarity index 100% rename from packages/server/src/tools/pull-requests.ts rename to repos/server/src/tools/pull-requests.ts diff --git a/packages/server/src/tools/runtime.ts b/repos/server/src/tools/runtime.ts similarity index 100% rename from packages/server/src/tools/runtime.ts rename to repos/server/src/tools/runtime.ts diff --git a/packages/server/src/tools/workflows.ts b/repos/server/src/tools/workflows.ts similarity index 100% rename from packages/server/src/tools/workflows.ts rename to repos/server/src/tools/workflows.ts diff --git a/packages/server/src/workflows/resolve-issue.ts b/repos/server/src/workflows/resolve-issue.ts similarity index 100% rename from packages/server/src/workflows/resolve-issue.ts rename to repos/server/src/workflows/resolve-issue.ts diff --git a/packages/server/tsconfig.json b/repos/server/tsconfig.json similarity index 100% rename from packages/server/tsconfig.json rename to repos/server/tsconfig.json diff --git a/apps/tui/.gitignore b/repos/tui/.gitignore similarity index 100% rename from apps/tui/.gitignore rename to repos/tui/.gitignore diff --git a/apps/tui/README.md b/repos/tui/README.md similarity index 100% rename from apps/tui/README.md rename to repos/tui/README.md diff --git a/apps/tui/package.json b/repos/tui/package.json similarity index 100% rename from apps/tui/package.json rename to repos/tui/package.json diff --git a/apps/tui/src/index.tsx b/repos/tui/src/index.tsx similarity index 100% rename from apps/tui/src/index.tsx rename to repos/tui/src/index.tsx diff --git a/apps/tui/tsconfig.json b/repos/tui/tsconfig.json similarity index 100% rename from apps/tui/tsconfig.json rename to repos/tui/tsconfig.json diff --git a/apps/web/src/components/chat/chat-composer.tsx b/repos/web/components/chat/chat-composer.tsx similarity index 100% rename from apps/web/src/components/chat/chat-composer.tsx rename to repos/web/components/chat/chat-composer.tsx diff --git a/apps/web/src/components/chat/chat-conversation.tsx b/repos/web/components/chat/chat-conversation.tsx similarity index 100% rename from apps/web/src/components/chat/chat-conversation.tsx rename to repos/web/components/chat/chat-conversation.tsx diff --git a/apps/web/src/components/chat/chat-header.tsx b/repos/web/components/chat/chat-header.tsx similarity index 100% rename from apps/web/src/components/chat/chat-header.tsx rename to repos/web/components/chat/chat-header.tsx diff --git a/apps/web/src/components/chat/chat-page.tsx b/repos/web/components/chat/chat-page.tsx similarity index 100% rename from apps/web/src/components/chat/chat-page.tsx rename to repos/web/components/chat/chat-page.tsx diff --git a/apps/web/src/components/header.tsx b/repos/web/components/header.tsx similarity index 100% rename from apps/web/src/components/header.tsx rename to repos/web/components/header.tsx diff --git a/apps/web/src/components/loader.tsx b/repos/web/components/loader.tsx similarity index 100% rename from apps/web/src/components/loader.tsx rename to repos/web/components/loader.tsx diff --git a/apps/web/src/components/mode-toggle.tsx b/repos/web/components/mode-toggle.tsx similarity index 100% rename from apps/web/src/components/mode-toggle.tsx rename to repos/web/components/mode-toggle.tsx diff --git a/apps/web/src/components/projects/project-workspace-page.tsx b/repos/web/components/projects/project-workspace-page.tsx similarity index 100% rename from apps/web/src/components/projects/project-workspace-page.tsx rename to repos/web/components/projects/project-workspace-page.tsx diff --git a/apps/web/src/components/user-menu.tsx b/repos/web/components/user-menu.tsx similarity index 100% rename from apps/web/src/components/user-menu.tsx rename to repos/web/components/user-menu.tsx diff --git a/apps/web/src/components/work-os/conversation-panel.tsx b/repos/web/components/work-os/conversation-panel.tsx similarity index 100% rename from apps/web/src/components/work-os/conversation-panel.tsx rename to repos/web/components/work-os/conversation-panel.tsx diff --git a/apps/web/src/components/work-os/empty-state.tsx b/repos/web/components/work-os/empty-state.tsx similarity index 100% rename from apps/web/src/components/work-os/empty-state.tsx rename to repos/web/components/work-os/empty-state.tsx diff --git a/apps/web/src/components/work-os/signals-panel.tsx b/repos/web/components/work-os/signals-panel.tsx similarity index 100% rename from apps/web/src/components/work-os/signals-panel.tsx rename to repos/web/components/work-os/signals-panel.tsx diff --git a/apps/web/src/components/work-os/work-os-composer.tsx b/repos/web/components/work-os/work-os-composer.tsx similarity index 100% rename from apps/web/src/components/work-os/work-os-composer.tsx rename to repos/web/components/work-os/work-os-composer.tsx diff --git a/apps/web/src/components/work-os/work-os-header.tsx b/repos/web/components/work-os/work-os-header.tsx similarity index 100% rename from apps/web/src/components/work-os/work-os-header.tsx rename to repos/web/components/work-os/work-os-header.tsx diff --git a/apps/web/src/components/work-os/work-os-page.tsx b/repos/web/components/work-os/work-os-page.tsx similarity index 100% rename from apps/web/src/components/work-os/work-os-page.tsx rename to repos/web/components/work-os/work-os-page.tsx diff --git a/apps/web/src/components/work-os/work-unit-card.tsx b/repos/web/components/work-os/work-unit-card.tsx similarity index 100% rename from apps/web/src/components/work-os/work-unit-card.tsx rename to repos/web/components/work-os/work-unit-card.tsx diff --git a/apps/web/src/components/work-os/work-unit-detail.tsx b/repos/web/components/work-os/work-unit-detail.tsx similarity index 100% rename from apps/web/src/components/work-os/work-unit-detail.tsx rename to repos/web/components/work-os/work-unit-detail.tsx diff --git a/apps/web/src/hooks/chat/use-chat-composer.ts b/repos/web/hooks/chat/use-chat-composer.ts similarity index 100% rename from apps/web/src/hooks/chat/use-chat-composer.ts rename to repos/web/hooks/chat/use-chat-composer.ts diff --git a/apps/web/src/hooks/work-os/use-work-os.ts b/repos/web/hooks/work-os/use-work-os.ts similarity index 100% rename from apps/web/src/hooks/work-os/use-work-os.ts rename to repos/web/hooks/work-os/use-work-os.ts diff --git a/apps/web/src/lib/work-os/work-unit-projection.test.ts b/repos/web/lib/work-os/work-unit-projection.test.ts similarity index 100% rename from apps/web/src/lib/work-os/work-unit-projection.test.ts rename to repos/web/lib/work-os/work-unit-projection.test.ts diff --git a/apps/web/src/lib/work-os/work-unit-projection.ts b/repos/web/lib/work-os/work-unit-projection.ts similarity index 100% rename from apps/web/src/lib/work-os/work-unit-projection.ts rename to repos/web/lib/work-os/work-unit-projection.ts