From bf96794599b55050093a61c3db7684ebee4cb71f Mon Sep 17 00:00:00 2001 From: YeonGyu-Kim Date: Mon, 18 May 2026 16:44:02 +0900 Subject: [PATCH] chore(web): move site under packages --- .github/workflows/web-ci.yml | 6 ++--- .github/workflows/web-deploy.yml | 6 ++--- AGENTS.md | 14 +++++----- bunfig.toml | 2 +- {web => packages/web}/.editorconfig | 0 {web => packages/web}/.gitignore | 0 {web => packages/web}/.prettierignore | 0 {web => packages/web}/.prettierrc | 0 {web => packages/web}/AGENTS.md | 24 +++++++++--------- .../web}/app/[locale]/docs/layout.tsx | 0 .../web}/app/[locale]/docs/page.tsx | 0 {web => packages/web}/app/[locale]/layout.tsx | 0 .../web}/app/[locale]/manifesto/layout.tsx | 0 .../web}/app/[locale]/manifesto/page.tsx | 0 {web => packages/web}/app/[locale]/page.tsx | 0 .../web}/app/_components/landing-page.tsx | 0 .../app/_components/localized-page-shell.tsx | 0 .../web}/app/api/npm-downloads/route.ts | 0 {web => packages/web}/app/api/stats/route.ts | 0 {web => packages/web}/app/apple-icon.svg | 0 {web => packages/web}/app/globals.css | 0 {web => packages/web}/app/icon.svg | 0 {web => packages/web}/app/layout.tsx | 0 {web => packages/web}/app/manifest.ts | 0 {web => packages/web}/app/page.tsx | 0 {web => packages/web}/app/robots.ts | 0 {web => packages/web}/app/sitemap.ts | 0 {web => packages/web}/biome.json | 0 {web => packages/web}/bun.lock | 0 {web => packages/web}/components.json | 0 .../web}/components/docs/docs-shell.tsx | 0 .../web}/components/docs/mdx-components.tsx | 0 {web => packages/web}/components/footer.tsx | 0 .../web}/components/landing/hero-stats.tsx | 0 .../components/landing/install-command.tsx | 0 .../web}/components/landing/live-stats.tsx | 0 .../components/landing/motion-wrappers.tsx | 0 .../web}/components/nav-header.tsx | 0 .../web}/components/ui/accordion.tsx | 0 {web => packages/web}/components/ui/badge.tsx | 0 .../web}/components/ui/button.tsx | 0 {web => packages/web}/components/ui/card.tsx | 0 .../web}/components/ui/code-block.tsx | 0 {web => packages/web}/components/ui/input.tsx | 0 .../web}/components/ui/option-table.tsx | 0 .../web}/components/ui/section.tsx | 0 .../web}/components/ui/separator.tsx | 0 {web => packages/web}/e2e/example.spec.ts | 0 {web => packages/web}/e2e/hello-world.spec.ts | 0 {web => packages/web}/e2e/hero-stats.spec.ts | 0 .../web}/eslint-config-modules.d.ts | 0 {web => packages/web}/eslint.config.mjs | 0 {web => packages/web}/i18n/config.ts | 0 {web => packages/web}/i18n/request.ts | 0 {web => packages/web}/i18n/routing.ts | 0 {web => packages/web}/lib/docs-sections.ts | 0 {web => packages/web}/lib/docs-source.ts | 0 {web => packages/web}/lib/stats.ts | 0 {web => packages/web}/lib/utils.ts | 0 {web => packages/web}/messages/en.json | 0 {web => packages/web}/messages/ja.json | 0 {web => packages/web}/messages/ko.json | 0 {web => packages/web}/messages/zh.json | 0 {web => packages/web}/middleware.ts | 0 {web => packages/web}/next.config.ts | 0 {web => packages/web}/open-next.config.ts | 0 {web => packages/web}/package.json | 0 {web => packages/web}/playwright.config.ts | 0 {web => packages/web}/postcss.config.mjs | 0 {web => packages/web}/public/icon-192x192.png | Bin {web => packages/web}/public/icon-512x512.png | Bin .../web}/public/images/agent-arch.png | Bin .../web}/public/images/continuous.png | Bin .../web}/public/images/core-loop.png | Bin .../web}/public/images/delegatable.png | Bin {web => packages/web}/public/images/hero.webp | Bin .../web}/public/images/predictable.png | Bin .../web}/public/images/ultrawork-flow.png | Bin .../web}/scripts/generate-docs-content.mjs | 2 +- .../web}/scripts/prepare-build.mjs | 0 {web => packages/web}/tsconfig.json | 0 {web => packages/web}/wrangler.toml | 0 82 files changed, 27 insertions(+), 27 deletions(-) rename {web => packages/web}/.editorconfig (100%) rename {web => packages/web}/.gitignore (100%) rename {web => packages/web}/.prettierignore (100%) rename {web => packages/web}/.prettierrc (100%) rename {web => packages/web}/AGENTS.md (77%) rename {web => packages/web}/app/[locale]/docs/layout.tsx (100%) rename {web => packages/web}/app/[locale]/docs/page.tsx (100%) rename {web => packages/web}/app/[locale]/layout.tsx (100%) rename {web => packages/web}/app/[locale]/manifesto/layout.tsx (100%) rename {web => packages/web}/app/[locale]/manifesto/page.tsx (100%) rename {web => packages/web}/app/[locale]/page.tsx (100%) rename {web => packages/web}/app/_components/landing-page.tsx (100%) rename {web => packages/web}/app/_components/localized-page-shell.tsx (100%) rename {web => packages/web}/app/api/npm-downloads/route.ts (100%) rename {web => packages/web}/app/api/stats/route.ts (100%) rename {web => packages/web}/app/apple-icon.svg (100%) rename {web => packages/web}/app/globals.css (100%) rename {web => packages/web}/app/icon.svg (100%) rename {web => packages/web}/app/layout.tsx (100%) rename {web => packages/web}/app/manifest.ts (100%) rename {web => packages/web}/app/page.tsx (100%) rename {web => packages/web}/app/robots.ts (100%) rename {web => packages/web}/app/sitemap.ts (100%) rename {web => packages/web}/biome.json (100%) rename {web => packages/web}/bun.lock (100%) rename {web => packages/web}/components.json (100%) rename {web => packages/web}/components/docs/docs-shell.tsx (100%) rename {web => packages/web}/components/docs/mdx-components.tsx (100%) rename {web => packages/web}/components/footer.tsx (100%) rename {web => packages/web}/components/landing/hero-stats.tsx (100%) rename {web => packages/web}/components/landing/install-command.tsx (100%) rename {web => packages/web}/components/landing/live-stats.tsx (100%) rename {web => packages/web}/components/landing/motion-wrappers.tsx (100%) rename {web => packages/web}/components/nav-header.tsx (100%) rename {web => packages/web}/components/ui/accordion.tsx (100%) rename {web => packages/web}/components/ui/badge.tsx (100%) rename {web => packages/web}/components/ui/button.tsx (100%) rename {web => packages/web}/components/ui/card.tsx (100%) rename {web => packages/web}/components/ui/code-block.tsx (100%) rename {web => packages/web}/components/ui/input.tsx (100%) rename {web => packages/web}/components/ui/option-table.tsx (100%) rename {web => packages/web}/components/ui/section.tsx (100%) rename {web => packages/web}/components/ui/separator.tsx (100%) rename {web => packages/web}/e2e/example.spec.ts (100%) rename {web => packages/web}/e2e/hello-world.spec.ts (100%) rename {web => packages/web}/e2e/hero-stats.spec.ts (100%) rename {web => packages/web}/eslint-config-modules.d.ts (100%) rename {web => packages/web}/eslint.config.mjs (100%) rename {web => packages/web}/i18n/config.ts (100%) rename {web => packages/web}/i18n/request.ts (100%) rename {web => packages/web}/i18n/routing.ts (100%) rename {web => packages/web}/lib/docs-sections.ts (100%) rename {web => packages/web}/lib/docs-source.ts (100%) rename {web => packages/web}/lib/stats.ts (100%) rename {web => packages/web}/lib/utils.ts (100%) rename {web => packages/web}/messages/en.json (100%) rename {web => packages/web}/messages/ja.json (100%) rename {web => packages/web}/messages/ko.json (100%) rename {web => packages/web}/messages/zh.json (100%) rename {web => packages/web}/middleware.ts (100%) rename {web => packages/web}/next.config.ts (100%) rename {web => packages/web}/open-next.config.ts (100%) rename {web => packages/web}/package.json (100%) rename {web => packages/web}/playwright.config.ts (100%) rename {web => packages/web}/postcss.config.mjs (100%) rename {web => packages/web}/public/icon-192x192.png (100%) rename {web => packages/web}/public/icon-512x512.png (100%) rename {web => packages/web}/public/images/agent-arch.png (100%) rename {web => packages/web}/public/images/continuous.png (100%) rename {web => packages/web}/public/images/core-loop.png (100%) rename {web => packages/web}/public/images/delegatable.png (100%) rename {web => packages/web}/public/images/hero.webp (100%) rename {web => packages/web}/public/images/predictable.png (100%) rename {web => packages/web}/public/images/ultrawork-flow.png (100%) rename {web => packages/web}/scripts/generate-docs-content.mjs (96%) rename {web => packages/web}/scripts/prepare-build.mjs (100%) rename {web => packages/web}/tsconfig.json (100%) rename {web => packages/web}/wrangler.toml (100%) diff --git a/.github/workflows/web-ci.yml b/.github/workflows/web-ci.yml index 9007b399d..1501066db 100644 --- a/.github/workflows/web-ci.yml +++ b/.github/workflows/web-ci.yml @@ -4,13 +4,13 @@ on: push: branches: [master, dev] paths: - - "web/**" + - "packages/web/**" - "docs/**" - ".github/workflows/web-ci.yml" pull_request: branches: [master, dev] paths: - - "web/**" + - "packages/web/**" - "docs/**" - ".github/workflows/web-ci.yml" @@ -23,7 +23,7 @@ jobs: runs-on: ubuntu-latest defaults: run: - working-directory: web + working-directory: packages/web steps: - uses: actions/checkout@v4 diff --git a/.github/workflows/web-deploy.yml b/.github/workflows/web-deploy.yml index 9d265700b..590100e14 100644 --- a/.github/workflows/web-deploy.yml +++ b/.github/workflows/web-deploy.yml @@ -10,7 +10,7 @@ on: push: branches: [master, dev] paths: - - "web/**" + - "packages/web/**" - "docs/**" - ".github/workflows/web-deploy.yml" @@ -26,7 +26,7 @@ jobs: url: https://ohmyopenagent.com defaults: run: - working-directory: web + working-directory: packages/web permissions: contents: read deployments: write @@ -52,5 +52,5 @@ jobs: with: apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN }} accountId: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }} - workingDirectory: web + workingDirectory: packages/web command: ${{ inputs.environment && format('deploy --env {0}', inputs.environment) || 'deploy' }} diff --git a/AGENTS.md b/AGENTS.md index 7d272d555..c2978da33 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -4,7 +4,7 @@ ## OVERVIEW -OpenCode plugin (npm: `oh-my-opencode`, dual-published as `oh-my-openagent` during the rename transition) extending OpenCode with 11 agents, 54–61 lifecycle hooks (base / +team-mode) across 59 dirs, 20–39 tools (gated by config flags including team-mode), 3-tier MCP system (built-in + .mcp.json + skill-embedded), Hashline LINE#ID edit tool, IntentGate keyword detector, Team Mode (parallel multi-agent coordination, OFF by default), Boulder feature (boulder-state work tracking + cli/boulder subcommand), configurable agent ordering, and Claude Code compatibility. **Repository contains 2165 TypeScript files across `src/`, `script/`, `test-support/`, and `web/`, ~314k LOC; `src/` itself has 122 barrel `index.ts` files.** Entry: `src/index.ts` is now an 18-line wrapper that delegates to `src/testing/create-plugin-module.ts` `createPluginModule()` → 7-step init. +OpenCode plugin (npm: `oh-my-opencode`, dual-published as `oh-my-openagent` during the rename transition) extending OpenCode with 11 agents, 54–61 lifecycle hooks (base / +team-mode) across 59 dirs, 20–39 tools (gated by config flags including team-mode), 3-tier MCP system (built-in + .mcp.json + skill-embedded), Hashline LINE#ID edit tool, IntentGate keyword detector, Team Mode (parallel multi-agent coordination, OFF by default), Boulder feature (boulder-state work tracking + cli/boulder subcommand), configurable agent ordering, and Claude Code compatibility. **Repository contains 2165 TypeScript files across `src/`, `script/`, `test-support/`, and `packages/web/`, ~314k LOC; `src/` itself has 122 barrel `index.ts` files.** Entry: `src/index.ts` is now an 18-line wrapper that delegates to `src/testing/create-plugin-module.ts` `createPluginModule()` → 7-step init. ## STRUCTURE @@ -30,8 +30,8 @@ oh-my-opencode/ │ ├── openclaw/ # Bidirectional external integration (Discord/Telegram/HTTP/shell + reply listener daemon) │ ├── generated/ # model-capabilities.generated.json (refreshed via build:model-capabilities) │ └── testing/ # Test utilities + `create-plugin-module.ts` (extracted plugin entry factory, 182 LOC) -├── web/ # Marketing site (Next.js 15 + Cloudflare Workers, deployed to ohmyopenagent.com via opennextjs-cloudflare). Independent package with own bun.lock — see web/AGENTS.md -├── packages/ # 11 platform-specific binary packages + lsp-tools-mcp submodule +├── packages/ # 11 platform-specific binary packages, lsp-tools-mcp submodule, and web package +│ └── web/ # Marketing site (Next.js 15 + Cloudflare Workers). Independent package with own bun.lock ├── bin/ # Platform-detection JS shim (oh-my-opencode + oh-my-openagent) ├── script/ # Build/publish automation (singular, not scripts/) ├── docs/ # User-facing docs (guide/, reference/, examples/, legal/, manifesto.md, superpowers/, troubleshooting/) @@ -197,7 +197,7 @@ Schema autocomplete: `"$schema": "https://raw.githubusercontent.com/code-yeongyu - **Factory pattern:** `createXXX()` for all tools, hooks, agents. - **File naming:** kebab-case for files and directories. - **Module structure:** `index.ts` barrel exports, **no catch-all files** (`utils.ts`, `helpers.ts`, `service.ts` banned), 200 LOC soft limit per file. -- **Imports:** relative within a module, barrel imports across modules (`import { log } from "./shared"`). **No path aliases in `src/`** — never `@/`. `web/` is the only exception: it uses `@/*` (Next.js convention) and has its own tsconfig. +- **Imports:** relative within a module, barrel imports across modules (`import { log } from "./shared"`). **No path aliases in `src/`** — never `@/`. `packages/web/` is the only exception: it uses `@/*` (Next.js convention) and has its own tsconfig. - **Config format:** JSONC with comments + trailing commas, Zod v4 validation, snake_case keys. - **Dual package:** `oh-my-opencode` + `oh-my-openagent` published simultaneously during the rename transition. - **Comments:** AI slop comment patterns blocked by `comment-checker` hook (binary: `@code-yeongyu/comment-checker`). Use `// @allow` to bypass single line, `// comment-checker-disable-file` at file top to bypass file. Sparingly. @@ -247,8 +247,8 @@ bunx oh-my-opencode mcp-oauth login # Tier-3 MCP OAuth (PKCE + DCR | `refresh-model-capabilities.yml` | weekly cron / dispatch | Refresh model capabilities from models.dev API | | `cla.yml` | issue_comment / PR | CLA assistant for contributors | | `lint-workflows.yml` | push/PR touching `.github/workflows/**` | actionlint only (`shellcheck=""` disables shellcheck) | -| `web-ci.yml` | push/PR to master/dev touching `web/**`, `docs/**`, or the workflow file itself | format-check, lint, type-check, next build, opennextjs-cloudflare build | -| `web-deploy.yml` | push to master/dev touching `web/**`, `docs/**`, or the workflow file itself, OR manual dispatch | Cloudflare Workers deploy via `cloudflare/wrangler-action@v3` (requires `CLOUDFLARE_API_TOKEN` + `CLOUDFLARE_ACCOUNT_ID` secrets) | +| `web-ci.yml` | push/PR to master/dev touching `packages/web/**`, `docs/**`, or the workflow file itself | format-check, lint, type-check, next build, opennextjs-cloudflare build | +| `web-deploy.yml` | push to master/dev touching `packages/web/**`, `docs/**`, or the workflow file itself, OR manual dispatch | Cloudflare Workers deploy via `cloudflare/wrangler-action@v3` (requires `CLOUDFLARE_API_TOKEN` + `CLOUDFLARE_ACCOUNT_ID` secrets) | ## NOTES @@ -259,7 +259,7 @@ bunx oh-my-opencode mcp-oauth login # Tier-3 MCP OAuth (PKCE + DCR - **Two fallback systems:** `model-fallback` (proactive, chat.params, hardcoded chains) vs `runtime-fallback` (reactive, session.error, configurable per-category/agent). - **Config migration:** idempotent via `_migrations` tracking, atomic writes with timestamped backups. - **Build:** `bun build` (ESM) + `tsc --emitDeclarationOnly`, externals: `@ast-grep/napi`, `zod`. -- **CI tests:** root tests run through plain `bun test`; `web/**` has its own package-level CI workflow. +- **CI tests:** root tests run through plain `bun test`; `packages/web/**` has its own package-level CI workflow. - **122 barrel `index.ts` files** establish module boundaries. - **Architecture rules** enforced via the `rules-injector` hook reading `.omo/rules/*.md`. As of v4.2.0 only `test-discipline.md` ships; legacy `modular-code-enforcement.md` was retired. - **Windows builds:** run on `windows-latest` (not cross-compiled) to avoid Bun segfaults. diff --git a/bunfig.toml b/bunfig.toml index a98408ecf..7899e83fc 100644 --- a/bunfig.toml +++ b/bunfig.toml @@ -1,3 +1,3 @@ [test] preload = ["./test-setup.ts"] -pathIgnorePatterns = ["web/**", "packages/lsp-tools-mcp/**"] +pathIgnorePatterns = ["packages/web/**", "packages/lsp-tools-mcp/**"] diff --git a/web/.editorconfig b/packages/web/.editorconfig similarity index 100% rename from web/.editorconfig rename to packages/web/.editorconfig diff --git a/web/.gitignore b/packages/web/.gitignore similarity index 100% rename from web/.gitignore rename to packages/web/.gitignore diff --git a/web/.prettierignore b/packages/web/.prettierignore similarity index 100% rename from web/.prettierignore rename to packages/web/.prettierignore diff --git a/web/.prettierrc b/packages/web/.prettierrc similarity index 100% rename from web/.prettierrc rename to packages/web/.prettierrc diff --git a/web/AGENTS.md b/packages/web/AGENTS.md similarity index 77% rename from web/AGENTS.md rename to packages/web/AGENTS.md index 2e12b8996..9757b24d7 100644 --- a/web/AGENTS.md +++ b/packages/web/AGENTS.md @@ -1,4 +1,4 @@ -# web/ — Marketing Site (Next.js + Cloudflare Workers) +# packages/web/ — Marketing Site (Next.js + Cloudflare Workers) **Generated:** 2026-05-14 @@ -22,7 +22,7 @@ Public-facing marketing site for oh-my-opencode / oh-my-openagent. Next.js 15 (A ## STRUCTURE ``` -web/ +packages/web/ ├── app/[locale]/ # localized routes (App Router) ├── components/ # shared UI primitives + shadcn-generated ├── lib/ # utility helpers (cn, etc.) @@ -46,7 +46,7 @@ web/ ## SCRIPTS ```bash -# from web/ directory +# from packages/web/ directory bun install bun run dev # next dev (local Node.js) bun run lint # biome lint + eslint @@ -63,10 +63,10 @@ bun run cf-typegen # regenerate cloudflare-env.d.ts from wrangler.toml bin ## CI/CD -| Workflow | Trigger | What | -| ---------------------------------- | ------------------------------------------------------- | ----------------------------------------------------------------------- | -| `.github/workflows/web-ci.yml` | push/PR to master/dev that touches `web/**` | format check, lint, type-check, next build, opennextjs-cloudflare build | -| `.github/workflows/web-deploy.yml` | push to master that touches `web/**` OR manual dispatch | full deploy via `cloudflare/wrangler-action@v3` | +| Workflow | Trigger | What | +| ---------------------------------- | ---------------------------------------------------------------- | ----------------------------------------------------------------------- | +| `.github/workflows/web-ci.yml` | push/PR to master/dev that touches `packages/web/**` | format check, lint, type-check, next build, opennextjs-cloudflare build | +| `.github/workflows/web-deploy.yml` | push to master that touches `packages/web/**` OR manual dispatch | full deploy via `cloudflare/wrangler-action@v3` | **Required secrets** (must be configured in repo settings before deploy works): @@ -77,19 +77,19 @@ A `web-production` GitHub environment is referenced by the deploy workflow so de ## RELATIONSHIP TO npm PACKAGE -The npm package `oh-my-opencode` ships only `dist/`, `bin/`, and `postinstall.mjs` (see root `package.json` `files` field). `web/` is **not** included in any npm publish — it is exclusively a separate Cloudflare deployment target. +The npm package `oh-my-opencode` ships only `dist/`, `bin/`, and `postinstall.mjs` (see root `package.json` `files` field). `packages/web/` is **not** included in any npm publish — it is exclusively a separate Cloudflare deployment target. -Root `bun test` is scoped to `bin script src` (see root `package.json`) so `web/e2e/*.spec.ts` does not pollute plugin tests. +Root `bun test` ignores `packages/web/**` through `bunfig.toml` so `packages/web/e2e/*.spec.ts` does not pollute plugin tests. ## CONVENTIONS -- **No path aliases globally** in the omo project, but `web/` is a Next.js app where `@/*` aliases are the framework default. Keep `@/*` confined to web/. +- **No path aliases globally** in the omo project, but `packages/web/` is a Next.js app where `@/*` aliases are the framework default. Keep `@/*` confined to packages/web/. - Use the existing shadcn primitives in `components/ui/` rather than installing new UI libs. - All user-facing copy goes through `messages/{locale}.json`; never hardcode strings in components. - Format with prettier before commit — `web-ci.yml` enforces `format:check`. ## ANTI-PATTERNS -- Never run `npm install` in `web/`. Use `bun install` only. (Root `.gitignore` already blocks `package-lock.json`.) -- Never commit `.next/`, `.open-next/`, `.wrangler/`, `node_modules/` (covered by `web/.gitignore`). +- Never run `npm install` in `packages/web/`. Use `bun install` only. (Root `.gitignore` already blocks `package-lock.json`.) +- Never commit `.next/`, `.open-next/`, `.wrangler/`, `node_modules/` (covered by `packages/web/.gitignore`). - Never deploy locally with `bun run deploy` against production — use the GitHub Actions workflow so Cloudflare credentials live in one place. diff --git a/web/app/[locale]/docs/layout.tsx b/packages/web/app/[locale]/docs/layout.tsx similarity index 100% rename from web/app/[locale]/docs/layout.tsx rename to packages/web/app/[locale]/docs/layout.tsx diff --git a/web/app/[locale]/docs/page.tsx b/packages/web/app/[locale]/docs/page.tsx similarity index 100% rename from web/app/[locale]/docs/page.tsx rename to packages/web/app/[locale]/docs/page.tsx diff --git a/web/app/[locale]/layout.tsx b/packages/web/app/[locale]/layout.tsx similarity index 100% rename from web/app/[locale]/layout.tsx rename to packages/web/app/[locale]/layout.tsx diff --git a/web/app/[locale]/manifesto/layout.tsx b/packages/web/app/[locale]/manifesto/layout.tsx similarity index 100% rename from web/app/[locale]/manifesto/layout.tsx rename to packages/web/app/[locale]/manifesto/layout.tsx diff --git a/web/app/[locale]/manifesto/page.tsx b/packages/web/app/[locale]/manifesto/page.tsx similarity index 100% rename from web/app/[locale]/manifesto/page.tsx rename to packages/web/app/[locale]/manifesto/page.tsx diff --git a/web/app/[locale]/page.tsx b/packages/web/app/[locale]/page.tsx similarity index 100% rename from web/app/[locale]/page.tsx rename to packages/web/app/[locale]/page.tsx diff --git a/web/app/_components/landing-page.tsx b/packages/web/app/_components/landing-page.tsx similarity index 100% rename from web/app/_components/landing-page.tsx rename to packages/web/app/_components/landing-page.tsx diff --git a/web/app/_components/localized-page-shell.tsx b/packages/web/app/_components/localized-page-shell.tsx similarity index 100% rename from web/app/_components/localized-page-shell.tsx rename to packages/web/app/_components/localized-page-shell.tsx diff --git a/web/app/api/npm-downloads/route.ts b/packages/web/app/api/npm-downloads/route.ts similarity index 100% rename from web/app/api/npm-downloads/route.ts rename to packages/web/app/api/npm-downloads/route.ts diff --git a/web/app/api/stats/route.ts b/packages/web/app/api/stats/route.ts similarity index 100% rename from web/app/api/stats/route.ts rename to packages/web/app/api/stats/route.ts diff --git a/web/app/apple-icon.svg b/packages/web/app/apple-icon.svg similarity index 100% rename from web/app/apple-icon.svg rename to packages/web/app/apple-icon.svg diff --git a/web/app/globals.css b/packages/web/app/globals.css similarity index 100% rename from web/app/globals.css rename to packages/web/app/globals.css diff --git a/web/app/icon.svg b/packages/web/app/icon.svg similarity index 100% rename from web/app/icon.svg rename to packages/web/app/icon.svg diff --git a/web/app/layout.tsx b/packages/web/app/layout.tsx similarity index 100% rename from web/app/layout.tsx rename to packages/web/app/layout.tsx diff --git a/web/app/manifest.ts b/packages/web/app/manifest.ts similarity index 100% rename from web/app/manifest.ts rename to packages/web/app/manifest.ts diff --git a/web/app/page.tsx b/packages/web/app/page.tsx similarity index 100% rename from web/app/page.tsx rename to packages/web/app/page.tsx diff --git a/web/app/robots.ts b/packages/web/app/robots.ts similarity index 100% rename from web/app/robots.ts rename to packages/web/app/robots.ts diff --git a/web/app/sitemap.ts b/packages/web/app/sitemap.ts similarity index 100% rename from web/app/sitemap.ts rename to packages/web/app/sitemap.ts diff --git a/web/biome.json b/packages/web/biome.json similarity index 100% rename from web/biome.json rename to packages/web/biome.json diff --git a/web/bun.lock b/packages/web/bun.lock similarity index 100% rename from web/bun.lock rename to packages/web/bun.lock diff --git a/web/components.json b/packages/web/components.json similarity index 100% rename from web/components.json rename to packages/web/components.json diff --git a/web/components/docs/docs-shell.tsx b/packages/web/components/docs/docs-shell.tsx similarity index 100% rename from web/components/docs/docs-shell.tsx rename to packages/web/components/docs/docs-shell.tsx diff --git a/web/components/docs/mdx-components.tsx b/packages/web/components/docs/mdx-components.tsx similarity index 100% rename from web/components/docs/mdx-components.tsx rename to packages/web/components/docs/mdx-components.tsx diff --git a/web/components/footer.tsx b/packages/web/components/footer.tsx similarity index 100% rename from web/components/footer.tsx rename to packages/web/components/footer.tsx diff --git a/web/components/landing/hero-stats.tsx b/packages/web/components/landing/hero-stats.tsx similarity index 100% rename from web/components/landing/hero-stats.tsx rename to packages/web/components/landing/hero-stats.tsx diff --git a/web/components/landing/install-command.tsx b/packages/web/components/landing/install-command.tsx similarity index 100% rename from web/components/landing/install-command.tsx rename to packages/web/components/landing/install-command.tsx diff --git a/web/components/landing/live-stats.tsx b/packages/web/components/landing/live-stats.tsx similarity index 100% rename from web/components/landing/live-stats.tsx rename to packages/web/components/landing/live-stats.tsx diff --git a/web/components/landing/motion-wrappers.tsx b/packages/web/components/landing/motion-wrappers.tsx similarity index 100% rename from web/components/landing/motion-wrappers.tsx rename to packages/web/components/landing/motion-wrappers.tsx diff --git a/web/components/nav-header.tsx b/packages/web/components/nav-header.tsx similarity index 100% rename from web/components/nav-header.tsx rename to packages/web/components/nav-header.tsx diff --git a/web/components/ui/accordion.tsx b/packages/web/components/ui/accordion.tsx similarity index 100% rename from web/components/ui/accordion.tsx rename to packages/web/components/ui/accordion.tsx diff --git a/web/components/ui/badge.tsx b/packages/web/components/ui/badge.tsx similarity index 100% rename from web/components/ui/badge.tsx rename to packages/web/components/ui/badge.tsx diff --git a/web/components/ui/button.tsx b/packages/web/components/ui/button.tsx similarity index 100% rename from web/components/ui/button.tsx rename to packages/web/components/ui/button.tsx diff --git a/web/components/ui/card.tsx b/packages/web/components/ui/card.tsx similarity index 100% rename from web/components/ui/card.tsx rename to packages/web/components/ui/card.tsx diff --git a/web/components/ui/code-block.tsx b/packages/web/components/ui/code-block.tsx similarity index 100% rename from web/components/ui/code-block.tsx rename to packages/web/components/ui/code-block.tsx diff --git a/web/components/ui/input.tsx b/packages/web/components/ui/input.tsx similarity index 100% rename from web/components/ui/input.tsx rename to packages/web/components/ui/input.tsx diff --git a/web/components/ui/option-table.tsx b/packages/web/components/ui/option-table.tsx similarity index 100% rename from web/components/ui/option-table.tsx rename to packages/web/components/ui/option-table.tsx diff --git a/web/components/ui/section.tsx b/packages/web/components/ui/section.tsx similarity index 100% rename from web/components/ui/section.tsx rename to packages/web/components/ui/section.tsx diff --git a/web/components/ui/separator.tsx b/packages/web/components/ui/separator.tsx similarity index 100% rename from web/components/ui/separator.tsx rename to packages/web/components/ui/separator.tsx diff --git a/web/e2e/example.spec.ts b/packages/web/e2e/example.spec.ts similarity index 100% rename from web/e2e/example.spec.ts rename to packages/web/e2e/example.spec.ts diff --git a/web/e2e/hello-world.spec.ts b/packages/web/e2e/hello-world.spec.ts similarity index 100% rename from web/e2e/hello-world.spec.ts rename to packages/web/e2e/hello-world.spec.ts diff --git a/web/e2e/hero-stats.spec.ts b/packages/web/e2e/hero-stats.spec.ts similarity index 100% rename from web/e2e/hero-stats.spec.ts rename to packages/web/e2e/hero-stats.spec.ts diff --git a/web/eslint-config-modules.d.ts b/packages/web/eslint-config-modules.d.ts similarity index 100% rename from web/eslint-config-modules.d.ts rename to packages/web/eslint-config-modules.d.ts diff --git a/web/eslint.config.mjs b/packages/web/eslint.config.mjs similarity index 100% rename from web/eslint.config.mjs rename to packages/web/eslint.config.mjs diff --git a/web/i18n/config.ts b/packages/web/i18n/config.ts similarity index 100% rename from web/i18n/config.ts rename to packages/web/i18n/config.ts diff --git a/web/i18n/request.ts b/packages/web/i18n/request.ts similarity index 100% rename from web/i18n/request.ts rename to packages/web/i18n/request.ts diff --git a/web/i18n/routing.ts b/packages/web/i18n/routing.ts similarity index 100% rename from web/i18n/routing.ts rename to packages/web/i18n/routing.ts diff --git a/web/lib/docs-sections.ts b/packages/web/lib/docs-sections.ts similarity index 100% rename from web/lib/docs-sections.ts rename to packages/web/lib/docs-sections.ts diff --git a/web/lib/docs-source.ts b/packages/web/lib/docs-source.ts similarity index 100% rename from web/lib/docs-source.ts rename to packages/web/lib/docs-source.ts diff --git a/web/lib/stats.ts b/packages/web/lib/stats.ts similarity index 100% rename from web/lib/stats.ts rename to packages/web/lib/stats.ts diff --git a/web/lib/utils.ts b/packages/web/lib/utils.ts similarity index 100% rename from web/lib/utils.ts rename to packages/web/lib/utils.ts diff --git a/web/messages/en.json b/packages/web/messages/en.json similarity index 100% rename from web/messages/en.json rename to packages/web/messages/en.json diff --git a/web/messages/ja.json b/packages/web/messages/ja.json similarity index 100% rename from web/messages/ja.json rename to packages/web/messages/ja.json diff --git a/web/messages/ko.json b/packages/web/messages/ko.json similarity index 100% rename from web/messages/ko.json rename to packages/web/messages/ko.json diff --git a/web/messages/zh.json b/packages/web/messages/zh.json similarity index 100% rename from web/messages/zh.json rename to packages/web/messages/zh.json diff --git a/web/middleware.ts b/packages/web/middleware.ts similarity index 100% rename from web/middleware.ts rename to packages/web/middleware.ts diff --git a/web/next.config.ts b/packages/web/next.config.ts similarity index 100% rename from web/next.config.ts rename to packages/web/next.config.ts diff --git a/web/open-next.config.ts b/packages/web/open-next.config.ts similarity index 100% rename from web/open-next.config.ts rename to packages/web/open-next.config.ts diff --git a/web/package.json b/packages/web/package.json similarity index 100% rename from web/package.json rename to packages/web/package.json diff --git a/web/playwright.config.ts b/packages/web/playwright.config.ts similarity index 100% rename from web/playwright.config.ts rename to packages/web/playwright.config.ts diff --git a/web/postcss.config.mjs b/packages/web/postcss.config.mjs similarity index 100% rename from web/postcss.config.mjs rename to packages/web/postcss.config.mjs diff --git a/web/public/icon-192x192.png b/packages/web/public/icon-192x192.png similarity index 100% rename from web/public/icon-192x192.png rename to packages/web/public/icon-192x192.png diff --git a/web/public/icon-512x512.png b/packages/web/public/icon-512x512.png similarity index 100% rename from web/public/icon-512x512.png rename to packages/web/public/icon-512x512.png diff --git a/web/public/images/agent-arch.png b/packages/web/public/images/agent-arch.png similarity index 100% rename from web/public/images/agent-arch.png rename to packages/web/public/images/agent-arch.png diff --git a/web/public/images/continuous.png b/packages/web/public/images/continuous.png similarity index 100% rename from web/public/images/continuous.png rename to packages/web/public/images/continuous.png diff --git a/web/public/images/core-loop.png b/packages/web/public/images/core-loop.png similarity index 100% rename from web/public/images/core-loop.png rename to packages/web/public/images/core-loop.png diff --git a/web/public/images/delegatable.png b/packages/web/public/images/delegatable.png similarity index 100% rename from web/public/images/delegatable.png rename to packages/web/public/images/delegatable.png diff --git a/web/public/images/hero.webp b/packages/web/public/images/hero.webp similarity index 100% rename from web/public/images/hero.webp rename to packages/web/public/images/hero.webp diff --git a/web/public/images/predictable.png b/packages/web/public/images/predictable.png similarity index 100% rename from web/public/images/predictable.png rename to packages/web/public/images/predictable.png diff --git a/web/public/images/ultrawork-flow.png b/packages/web/public/images/ultrawork-flow.png similarity index 100% rename from web/public/images/ultrawork-flow.png rename to packages/web/public/images/ultrawork-flow.png diff --git a/web/scripts/generate-docs-content.mjs b/packages/web/scripts/generate-docs-content.mjs similarity index 96% rename from web/scripts/generate-docs-content.mjs rename to packages/web/scripts/generate-docs-content.mjs index 724138ea2..a23454723 100644 --- a/web/scripts/generate-docs-content.mjs +++ b/packages/web/scripts/generate-docs-content.mjs @@ -14,7 +14,7 @@ const SECTIONS = [ { id: "manifesto", file: "manifesto.md" }, ] -const DOCS_ROOT = path.resolve(process.cwd(), "..", "docs") +const DOCS_ROOT = path.resolve(process.cwd(), "..", "..", "docs") const OUTPUT = path.resolve(process.cwd(), "lib", "docs-content.generated.ts") const sectionIdByFile = new Map(SECTIONS.map((section) => [section.file, section.id])) diff --git a/web/scripts/prepare-build.mjs b/packages/web/scripts/prepare-build.mjs similarity index 100% rename from web/scripts/prepare-build.mjs rename to packages/web/scripts/prepare-build.mjs diff --git a/web/tsconfig.json b/packages/web/tsconfig.json similarity index 100% rename from web/tsconfig.json rename to packages/web/tsconfig.json diff --git a/web/wrangler.toml b/packages/web/wrangler.toml similarity index 100% rename from web/wrangler.toml rename to packages/web/wrangler.toml