diff --git a/.github/workflows/alpha-macos-aarch64.yml b/.github/workflows/alpha-macos-aarch64.yml index 69dc67fd..eb0b402f 100644 --- a/.github/workflows/alpha-macos-aarch64.yml +++ b/.github/workflows/alpha-macos-aarch64.yml @@ -65,8 +65,8 @@ jobs: path: | ~/.cargo/registry ~/.cargo/git - packages/desktop/src-tauri/target - key: macos-cargo-${{ hashFiles('packages/desktop/src-tauri/Cargo.lock') }} + apps/desktop/src-tauri/target + key: macos-cargo-${{ hashFiles('apps/desktop/src-tauri/Cargo.lock') }} restore-keys: | macos-cargo- @@ -75,7 +75,7 @@ jobs: - name: Create CI Tauri config (no updater artifacts) run: | - node -e "const fs=require('fs'); const configPath='packages/desktop/src-tauri/tauri.conf.json'; const ciPath='packages/desktop/src-tauri/tauri.conf.alpha.json'; const config=JSON.parse(fs.readFileSync(configPath,'utf8')); config.bundle={...config.bundle, createUpdaterArtifacts:false}; fs.writeFileSync(ciPath, JSON.stringify(config, null, 2));" + node -e "const fs=require('fs'); const configPath='apps/desktop/src-tauri/tauri.conf.json'; const ciPath='apps/desktop/src-tauri/tauri.conf.alpha.json'; const config=JSON.parse(fs.readFileSync(configPath,'utf8')); config.bundle={...config.bundle, createUpdaterArtifacts:false}; fs.writeFileSync(ciPath, JSON.stringify(config, null, 2));" - name: Setup Rust uses: dtolnay/rust-toolchain@stable @@ -126,7 +126,7 @@ jobs: } async function main() { - const pkg = JSON.parse(fs.readFileSync('./packages/desktop/package.json', 'utf8')); + const pkg = JSON.parse(fs.readFileSync('./apps/desktop/package.json', 'utf8')); const configuredRaw = (process.env.OPENCODE_VERSION || pkg.opencodeVersion || '').toString().trim(); if (configuredRaw && configuredRaw.toLowerCase() !== 'latest') { const resolved = (configuredRaw.startsWith('v') ? configuredRaw.slice(1) : configuredRaw).trim(); @@ -172,20 +172,20 @@ jobs: exit 1 fi - mkdir -p packages/desktop/src-tauri/sidecars - cp "$extract_dir/opencode" "packages/desktop/src-tauri/sidecars/opencode-aarch64-apple-darwin" - chmod 755 "packages/desktop/src-tauri/sidecars/opencode-aarch64-apple-darwin" + mkdir -p apps/desktop/src-tauri/sidecars + cp "$extract_dir/opencode" "apps/desktop/src-tauri/sidecars/opencode-aarch64-apple-darwin" + chmod 755 "apps/desktop/src-tauri/sidecars/opencode-aarch64-apple-darwin" - name: Build alpha desktop app - run: pnpm --filter @different-ai/openwork exec tauri build --config src-tauri/tauri.conf.alpha.json --target aarch64-apple-darwin --bundles dmg,app + run: pnpm --filter @openwork/desktop exec tauri build --config src-tauri/tauri.conf.alpha.json --target aarch64-apple-darwin --bundles dmg,app - name: Upload alpha artifact bundle uses: actions/upload-artifact@v4 with: name: openwork-alpha-macos-aarch64-${{ github.sha }} path: | - packages/desktop/src-tauri/target/aarch64-apple-darwin/release/bundle/dmg/*.dmg - packages/desktop/src-tauri/target/aarch64-apple-darwin/release/bundle/macos/*.app.tar.gz - packages/desktop/src-tauri/target/aarch64-apple-darwin/release/bundle/macos/*.app.tar.gz.sig + apps/desktop/src-tauri/target/aarch64-apple-darwin/release/bundle/dmg/*.dmg + apps/desktop/src-tauri/target/aarch64-apple-darwin/release/bundle/macos/*.app.tar.gz + apps/desktop/src-tauri/target/aarch64-apple-darwin/release/bundle/macos/*.app.tar.gz.sig if-no-files-found: error retention-days: 14 diff --git a/.github/workflows/build-desktop.yml b/.github/workflows/build-desktop.yml index a3d05f3a..939c6dee 100644 --- a/.github/workflows/build-desktop.yml +++ b/.github/workflows/build-desktop.yml @@ -64,7 +64,7 @@ jobs: - name: Create CI Tauri config (no updater artifacts) run: | - node -e "const fs=require('fs'); const configPath='packages/desktop/src-tauri/tauri.conf.json'; const ciPath='packages/desktop/src-tauri/tauri.conf.ci.json'; const config=JSON.parse(fs.readFileSync(configPath,'utf8')); config.bundle={...config.bundle, createUpdaterArtifacts:false}; fs.writeFileSync(ciPath, JSON.stringify(config, null, 2));" + node -e "const fs=require('fs'); const configPath='apps/desktop/src-tauri/tauri.conf.json'; const ciPath='apps/desktop/src-tauri/tauri.conf.ci.json'; const config=JSON.parse(fs.readFileSync(configPath,'utf8')); config.bundle={...config.bundle, createUpdaterArtifacts:false}; fs.writeFileSync(ciPath, JSON.stringify(config, null, 2));" - name: Download OpenCode sidecar shell: bash @@ -79,7 +79,7 @@ jobs: version="${OPENCODE_VERSION:-}" if [ -z "$version" ]; then - version="$(node -p "require('./packages/desktop/package.json').opencodeVersion || ''" 2>/dev/null || true)" + version="$(node -p "require('./apps/desktop/package.json').opencodeVersion || ''" 2>/dev/null || true)" fi version="$(echo "$version" | tr -d '\r\n' | sed 's/^v//')" @@ -133,15 +133,15 @@ jobs: fi target_name="opencode-x86_64-unknown-linux-gnu" - mkdir -p packages/desktop/src-tauri/sidecars - cp "$bin_path" "packages/desktop/src-tauri/sidecars/${target_name}" - chmod 755 "packages/desktop/src-tauri/sidecars/${target_name}" + mkdir -p apps/desktop/src-tauri/sidecars + cp "$bin_path" "apps/desktop/src-tauri/sidecars/${target_name}" + chmod 755 "apps/desktop/src-tauri/sidecars/${target_name}" - name: Prepare desktop sidecars - run: pnpm -C packages/desktop prepare:sidecar + run: pnpm -C apps/desktop prepare:sidecar - name: Run Rust tests (engine + sidecar resolution) - run: cargo test --manifest-path packages/desktop/src-tauri/Cargo.toml --locked + run: cargo test --manifest-path apps/desktop/src-tauri/Cargo.toml --locked - name: Build desktop app - run: pnpm --filter @different-ai/openwork exec tauri build --config src-tauri/tauri.conf.ci.json --target x86_64-unknown-linux-gnu --bundles deb + run: pnpm --filter @openwork/desktop exec tauri build --config src-tauri/tauri.conf.ci.json --target x86_64-unknown-linux-gnu --bundles deb diff --git a/.github/workflows/ci-tests.yml b/.github/workflows/ci-tests.yml index 76ce503d..6180f297 100644 --- a/.github/workflows/ci-tests.yml +++ b/.github/workflows/ci-tests.yml @@ -47,7 +47,7 @@ jobs: version="${OPENCODE_VERSION:-}" if [ -z "$version" ]; then - version="$(node -p "require('./packages/desktop/package.json').opencodeVersion || ''" 2>/dev/null || true)" + version="$(node -p "require('./apps/desktop/package.json').opencodeVersion || ''" 2>/dev/null || true)" fi version="$(echo "$version" | tr -d '\r\n' | sed 's/^v//')" @@ -140,4 +140,4 @@ jobs: run: pnpm install --frozen-lockfile - name: Run e2e tests - run: pnpm --filter @different-ai/openwork-ui test:e2e + run: pnpm --filter @openwork/app test:e2e diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 4bcbc32c..c2ec37fc 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -34,7 +34,7 @@ jobs: run: pnpm install --frozen-lockfile - name: Build web - run: pnpm --filter @different-ai/openwork-web build + run: pnpm --filter @openwork-ee/den-web build build-den: name: Build Den service @@ -58,7 +58,7 @@ jobs: run: pnpm install --frozen-lockfile - name: Build den service - run: pnpm --filter @openwork/den build + run: pnpm --filter @openwork-ee/den-controller build build-orchestrator-binary: name: Build openwork orchestrator binary @@ -94,5 +94,5 @@ jobs: - name: Validate compiled binary run: | - ./packages/orchestrator/dist/bin/openwork --version - ./packages/orchestrator/dist/bin/openwork --help >/dev/null + ./apps/orchestrator/dist/bin/openwork --version + ./apps/orchestrator/dist/bin/openwork --help >/dev/null diff --git a/.github/workflows/prerelease.yml b/.github/workflows/prerelease.yml index 65101e22..8b1a025f 100644 --- a/.github/workflows/prerelease.yml +++ b/.github/workflows/prerelease.yml @@ -216,7 +216,7 @@ jobs: } async function main() { - const pkg = JSON.parse(fs.readFileSync('./packages/desktop/package.json', 'utf8')); + const pkg = JSON.parse(fs.readFileSync('./apps/desktop/package.json', 'utf8')); const configuredRaw = (process.env.OPENCODE_VERSION || pkg.opencodeVersion || '').toString().trim(); if (configuredRaw && configuredRaw.toLowerCase() !== 'latest') { const normalized = configuredRaw.startsWith('v') ? configuredRaw.slice(1) : configuredRaw; @@ -305,9 +305,9 @@ jobs: target_name="${target_name}.exe" fi - mkdir -p packages/desktop/src-tauri/sidecars - cp "$bin_path" "packages/desktop/src-tauri/sidecars/${target_name}" - chmod 755 "packages/desktop/src-tauri/sidecars/${target_name}" + mkdir -p apps/desktop/src-tauri/sidecars + cp "$bin_path" "apps/desktop/src-tauri/sidecars/${target_name}" + chmod 755 "apps/desktop/src-tauri/sidecars/${target_name}" - name: Write notary API key if: matrix.os_type == 'macos' && env.MACOS_NOTARIZE == 'true' @@ -348,7 +348,7 @@ jobs: releaseBody: ${{ env.RELEASE_BODY }} prerelease: true releaseDraft: false - projectPath: packages/desktop + projectPath: apps/desktop tauriScript: pnpm exec tauri -vvv args: ${{ matrix.args }} retryAttempts: 3 @@ -374,7 +374,7 @@ jobs: releaseBody: ${{ env.RELEASE_BODY }} prerelease: true releaseDraft: false - projectPath: packages/desktop + projectPath: apps/desktop tauriScript: pnpm exec tauri -vvv args: ${{ matrix.args }} retryAttempts: 3 diff --git a/.github/workflows/release-macos-aarch64.yml b/.github/workflows/release-macos-aarch64.yml index 7cb53394..25cc1b53 100644 --- a/.github/workflows/release-macos-aarch64.yml +++ b/.github/workflows/release-macos-aarch64.yml @@ -324,8 +324,8 @@ jobs: path: | ~/.cargo/registry ~/.cargo/git - packages/desktop/src-tauri/target - key: ${{ runner.os }}-cargo-${{ hashFiles('packages/desktop/src-tauri/Cargo.lock') }} + apps/desktop/src-tauri/target + key: ${{ runner.os }}-cargo-${{ hashFiles('apps/desktop/src-tauri/Cargo.lock') }} restore-keys: | ${{ runner.os }}-cargo- @@ -405,7 +405,7 @@ jobs: } async function main() { - const pkg = JSON.parse(fs.readFileSync('./packages/desktop/package.json', 'utf8')); + const pkg = JSON.parse(fs.readFileSync('./apps/desktop/package.json', 'utf8')); const configuredRaw = (process.env.OPENCODE_VERSION || pkg.opencodeVersion || '').toString().trim(); if (configuredRaw && configuredRaw.toLowerCase() !== 'latest') { const normalized = configuredRaw.startsWith('v') ? configuredRaw.slice(1) : configuredRaw; @@ -495,9 +495,9 @@ jobs: target_name="${target_name}.exe" fi - mkdir -p packages/desktop/src-tauri/sidecars - cp "$bin_path" "packages/desktop/src-tauri/sidecars/${target_name}" - chmod 755 "packages/desktop/src-tauri/sidecars/${target_name}" + mkdir -p apps/desktop/src-tauri/sidecars + cp "$bin_path" "apps/desktop/src-tauri/sidecars/${target_name}" + chmod 755 "apps/desktop/src-tauri/sidecars/${target_name}" - name: Write notary API key if: matrix.os_type == 'macos' && env.MACOS_NOTARIZE == 'true' @@ -538,7 +538,7 @@ jobs: releaseBody: ${{ env.RELEASE_BODY }} releaseDraft: ${{ env.RELEASE_DRAFT == 'true' }} prerelease: ${{ env.RELEASE_PRERELEASE == 'true' }} - projectPath: packages/desktop + projectPath: apps/desktop tauriScript: pnpm exec tauri -vvv args: ${{ matrix.args }} retryAttempts: 3 @@ -567,7 +567,7 @@ jobs: releaseBody: ${{ env.RELEASE_BODY }} releaseDraft: ${{ env.RELEASE_DRAFT == 'true' }} prerelease: ${{ env.RELEASE_PRERELEASE == 'true' }} - projectPath: packages/desktop + projectPath: apps/desktop tauriScript: pnpm exec tauri -vvv args: ${{ matrix.args }} retryAttempts: 3 @@ -612,7 +612,7 @@ jobs: if [ ! -f "$manifest_path" ]; then echo "ERROR: versions.json missing from app bundle: $manifest_path" >&2 - echo "Hint: ensure packages/desktop/src-tauri/tauri.conf.json bundles sidecars/versions.json" >&2 + echo "Hint: ensure apps/desktop/src-tauri/tauri.conf.json bundles sidecars/versions.json" >&2 exit 1 fi @@ -701,7 +701,7 @@ jobs: id: sidecar-versions shell: bash run: | - node -e "const fs=require('fs'); const orchestrator=JSON.parse(fs.readFileSync('packages/orchestrator/package.json','utf8')); const server=JSON.parse(fs.readFileSync('packages/server/package.json','utf8')); const opencodeRouter=JSON.parse(fs.readFileSync('packages/opencode-router/package.json','utf8')); console.log('orchestrator=' + orchestrator.version); console.log('server=' + server.version); console.log('opencodeRouter=' + opencodeRouter.version);" >> "$GITHUB_OUTPUT" + node -e "const fs=require('fs'); const orchestrator=JSON.parse(fs.readFileSync('apps/orchestrator/package.json','utf8')); const server=JSON.parse(fs.readFileSync('apps/server/package.json','utf8')); const opencodeRouter=JSON.parse(fs.readFileSync('apps/opencode-router/package.json','utf8')); console.log('orchestrator=' + orchestrator.version); console.log('server=' + server.version); console.log('opencodeRouter=' + opencodeRouter.version);" >> "$GITHUB_OUTPUT" - name: Resolve SOURCE_DATE_EPOCH id: source-date @@ -753,7 +753,7 @@ jobs: GH_TOKEN: ${{ github.token }} run: | tag="openwork-orchestrator-v${{ steps.sidecar-versions.outputs.orchestrator }}" - gh release upload "$tag" packages/orchestrator/dist/sidecars/* --repo "$GITHUB_REPOSITORY" --clobber + gh release upload "$tag" apps/orchestrator/dist/sidecars/* --repo "$GITHUB_REPOSITORY" --clobber publish-npm: name: Publish npm packages @@ -810,7 +810,7 @@ jobs: id: package-versions shell: bash run: | - node -e "const fs=require('fs'); const orchestrator=JSON.parse(fs.readFileSync('packages/orchestrator/package.json','utf8')); const server=JSON.parse(fs.readFileSync('packages/server/package.json','utf8')); const opencodeRouter=JSON.parse(fs.readFileSync('packages/opencode-router/package.json','utf8')); console.log('orchestrator=' + orchestrator.version); console.log('server=' + server.version); console.log('opencodeRouter=' + opencodeRouter.version);" >> "$GITHUB_OUTPUT" + node -e "const fs=require('fs'); const orchestrator=JSON.parse(fs.readFileSync('apps/orchestrator/package.json','utf8')); const server=JSON.parse(fs.readFileSync('apps/server/package.json','utf8')); const opencodeRouter=JSON.parse(fs.readFileSync('apps/opencode-router/package.json','utf8')); console.log('orchestrator=' + orchestrator.version); console.log('server=' + server.version); console.log('opencodeRouter=' + opencodeRouter.version);" >> "$GITHUB_OUTPUT" - name: Check npm versions id: npm-versions @@ -824,7 +824,7 @@ jobs: # npm view exits non-zero for packages that don't exist yet (404). # Treat missing packages as "not published" so release can publish them. orchestrator_current="$(npm view openwork-orchestrator version 2>/dev/null || true)" - server_current="$(npm view openwork-server version 2>/dev/null || true)" + server_current="$(npm view @openwork/server version 2>/dev/null || true)" opencodeRouter_current="$(npm view opencode-router version 2>/dev/null || true)" if [ "$orchestrator_current" = "$ORCHESTRATOR_VERSION" ]; then @@ -876,7 +876,7 @@ jobs: - name: Publish openwork-server if: steps.npm-auth.outputs.enabled == 'true' && steps.npm-versions.outputs.publish_server == 'true' - run: pnpm --filter openwork-server publish --access public --no-git-checks + run: pnpm --filter @openwork/server publish --access public --no-git-checks - name: Publish opencode-router if: steps.npm-auth.outputs.enabled == 'true' && steps.npm-versions.outputs.publish_opencodeRouter == 'true' @@ -895,7 +895,7 @@ jobs: exit 1 fi pnpm --filter openwork-orchestrator build:bin:all - node packages/orchestrator/scripts/publish-npm.mjs + node apps/orchestrator/scripts/publish-npm.mjs aur-publish: name: Publish AUR diff --git a/.gitignore b/.gitignore index 6a74ff94..2d9d3709 100644 --- a/.gitignore +++ b/.gitignore @@ -1,9 +1,15 @@ node_modules/ packages/*/node_modules/ +apps/*/node_modules/ +ee/apps/*/node_modules/ +ee/packages/*/node_modules/ .next/ out/ dist/ packages/*/dist/ +apps/*/dist/ +ee/apps/*/dist/ +ee/packages/*/dist/ tmp/ # Local git worktrees @@ -12,6 +18,8 @@ _worktrees/ # Tauri/Rust packages/desktop/src-tauri/target/ packages/desktop/src-tauri/sidecars/ +apps/desktop/src-tauri/target/ +apps/desktop/src-tauri/sidecars/ # Env .env @@ -20,6 +28,7 @@ packages/desktop/src-tauri/sidecars/ # Bun build artifacts *.bun-build +apps/server/cli # pnpm store (created by Docker volume mounts) .pnpm-store/ diff --git a/.opencode/skills/cargo-lock-manager/scripts/check-lock.sh b/.opencode/skills/cargo-lock-manager/scripts/check-lock.sh index 3f3069a1..4681a1ed 100755 --- a/.opencode/skills/cargo-lock-manager/scripts/check-lock.sh +++ b/.opencode/skills/cargo-lock-manager/scripts/check-lock.sh @@ -4,7 +4,7 @@ set -e -CARGO_TOML="${1:-packages/desktop/src-tauri/Cargo.toml}" +CARGO_TOML="${1:-apps/desktop/src-tauri/Cargo.toml}" echo "🔍 Checking Cargo.lock status for: $CARGO_TOML" diff --git a/.opencode/skills/cargo-lock-manager/scripts/update-lock.sh b/.opencode/skills/cargo-lock-manager/scripts/update-lock.sh index 44862872..dd2bea69 100755 --- a/.opencode/skills/cargo-lock-manager/scripts/update-lock.sh +++ b/.opencode/skills/cargo-lock-manager/scripts/update-lock.sh @@ -3,7 +3,7 @@ set -e -CARGO_TOML="${1:-packages/desktop/src-tauri/Cargo.toml}" +CARGO_TOML="${1:-apps/desktop/src-tauri/Cargo.toml}" WORKDIR=$(dirname "$CARGO_TOML") echo "📦 Updating Cargo.lock in: $WORKDIR" diff --git a/.opencode/skills/openwork-orchestrator-npm-publish/scripts/publish-openwork-orchestrator.sh b/.opencode/skills/openwork-orchestrator-npm-publish/scripts/publish-openwork-orchestrator.sh index cefc7c6c..dc6a6749 100755 --- a/.opencode/skills/openwork-orchestrator-npm-publish/scripts/publish-openwork-orchestrator.sh +++ b/.opencode/skills/openwork-orchestrator-npm-publish/scripts/publish-openwork-orchestrator.sh @@ -9,7 +9,7 @@ if [ -n "$(git status --porcelain)" ]; then exit 1 fi -version=$(node -p "require('./packages/orchestrator/package.json').version") +version=$(node -p "require('./apps/orchestrator/package.json').version") echo "Publishing openwork-orchestrator@$version" pnpm --filter openwork-orchestrator publish --access public diff --git a/LICENSE b/LICENSE index 938463a9..dd812970 100644 --- a/LICENSE +++ b/LICENSE @@ -1,3 +1,11 @@ +Copyright (c) 2026-present Different AI, Inc. + +Portions of this software are licensed as follows: + +* All content that resides under the /ee directory of this repository (Fair Source License) is licensed under the license defined in "ee/LICENSE". +* All third party components incorporated into the OpenWork Software are licensed under the original license provided by the owner of the applicable component. +* Content outside of the above mentioned directories or restrictions above is available under the "MIT" license as defined below. + MIT License Copyright (c) 2026 Different AI diff --git a/README.md b/README.md index 747746bb..2476b45e 100644 --- a/README.md +++ b/README.md @@ -41,7 +41,7 @@ OpenWork is designed around the idea that you can easily ship your agentic workf - **OpenWork Orchestrator (CLI host)**: run OpenCode + OpenWork server without the desktop UI. - install: `npm install -g openwork-orchestrator` - run: `openwork start --workspace /path/to/workspace --approval auto` - - docs: [packages/orchestrator/README.md](./packages/orchestrator/README.md) + - docs: [apps/orchestrator/README.md](./apps/orchestrator/README.md) ## Quick start @@ -110,7 +110,7 @@ pnpm install --frozen-lockfile which bun bun --version -pnpm --filter @different-ai/openwork exec tauri --version +pnpm --filter @openwork/desktop exec tauri --version ``` ### Install @@ -119,7 +119,7 @@ pnpm --filter @different-ai/openwork exec tauri --version pnpm install ``` -OpenWork now lives in `packages/app` (UI) and `packages/desktop` (desktop shell). +OpenWork now lives in `apps/app` (UI) and `apps/desktop` (desktop shell). ### Run (Desktop) @@ -165,7 +165,7 @@ This lets you run agentic workflows, send prompts, and see progress entirely on The folder picker uses the Tauri dialog plugin. Capability permissions are defined in: -- `packages/desktop/src-tauri/capabilities/default.json` +- `apps/desktop/src-tauri/capabilities/default.json` ## OpenPackage Notes @@ -229,7 +229,7 @@ WEBKIT_DISABLE_COMPOSITING_MODE=1 openwork - Run `pnpm install` once per checkout, then verify your change with `pnpm typecheck` plus `pnpm test:e2e` (or the targeted subset of scripts) before opening a PR. - Use `.github/pull_request_template.md` when opening PRs and include exact commands, outcomes, manual verification steps, and evidence. - If CI fails, classify failures in the PR body as either code-related regressions or external/environment/auth blockers. -- Add new PRDs to `packages/app/pr/.md` following the `.opencode/skills/prd-conventions/SKILL.md` conventions described in `AGENTS.md`. +- Add new PRDs to `apps/app/pr/.md` following the `.opencode/skills/prd-conventions/SKILL.md` conventions described in `AGENTS.md`. Community docs: diff --git a/packages/app/index.html b/apps/app/index.html similarity index 100% rename from packages/app/index.html rename to apps/app/index.html diff --git a/packages/app/package.json b/apps/app/package.json similarity index 98% rename from packages/app/package.json rename to apps/app/package.json index cd6f013c..7fd203e1 100644 --- a/packages/app/package.json +++ b/apps/app/package.json @@ -1,5 +1,5 @@ { - "name": "@different-ai/openwork-ui", + "name": "@openwork/app", "private": true, "version": "0.11.170", "type": "module", diff --git a/packages/app/pr/OpenCode Server.md b/apps/app/pr/OpenCode Server.md similarity index 100% rename from packages/app/pr/OpenCode Server.md rename to apps/app/pr/OpenCode Server.md diff --git a/packages/app/pr/always-open-new-session.md b/apps/app/pr/always-open-new-session.md similarity index 100% rename from packages/app/pr/always-open-new-session.md rename to apps/app/pr/always-open-new-session.md diff --git a/packages/app/pr/browser-entry-button.md b/apps/app/pr/browser-entry-button.md similarity index 100% rename from packages/app/pr/browser-entry-button.md rename to apps/app/pr/browser-entry-button.md diff --git a/packages/app/pr/cmdk-session-model-thinking.md b/apps/app/pr/cmdk-session-model-thinking.md similarity index 100% rename from packages/app/pr/cmdk-session-model-thinking.md rename to apps/app/pr/cmdk-session-model-thinking.md diff --git a/packages/app/pr/context-panel-ux.md b/apps/app/pr/context-panel-ux.md similarity index 100% rename from packages/app/pr/context-panel-ux.md rename to apps/app/pr/context-panel-ux.md diff --git a/packages/app/pr/den-cloud-pr1-pr2-flow-evidence.md b/apps/app/pr/den-cloud-pr1-pr2-flow-evidence.md similarity index 100% rename from packages/app/pr/den-cloud-pr1-pr2-flow-evidence.md rename to apps/app/pr/den-cloud-pr1-pr2-flow-evidence.md diff --git a/packages/app/pr/fix-sidebar-multi-worker-sessions.png b/apps/app/pr/fix-sidebar-multi-worker-sessions.png similarity index 100% rename from packages/app/pr/fix-sidebar-multi-worker-sessions.png rename to apps/app/pr/fix-sidebar-multi-worker-sessions.png diff --git a/packages/app/pr/multi-workspace-config.md b/apps/app/pr/multi-workspace-config.md similarity index 100% rename from packages/app/pr/multi-workspace-config.md rename to apps/app/pr/multi-workspace-config.md diff --git a/packages/app/pr/notion-connection-fix.md b/apps/app/pr/notion-connection-fix.md similarity index 100% rename from packages/app/pr/notion-connection-fix.md rename to apps/app/pr/notion-connection-fix.md diff --git a/packages/app/pr/openwork-10x-audit.md b/apps/app/pr/openwork-10x-audit.md similarity index 100% rename from packages/app/pr/openwork-10x-audit.md rename to apps/app/pr/openwork-10x-audit.md diff --git a/packages/app/pr/openwork-10x.md b/apps/app/pr/openwork-10x.md similarity index 100% rename from packages/app/pr/openwork-10x.md rename to apps/app/pr/openwork-10x.md diff --git a/packages/app/pr/openwork-orchestrator-multi-workspace.md b/apps/app/pr/openwork-orchestrator-multi-workspace.md similarity index 100% rename from packages/app/pr/openwork-orchestrator-multi-workspace.md rename to apps/app/pr/openwork-orchestrator-multi-workspace.md diff --git a/packages/app/pr/openwork-orchestrator.md b/apps/app/pr/openwork-orchestrator.md similarity index 100% rename from packages/app/pr/openwork-orchestrator.md rename to apps/app/pr/openwork-orchestrator.md diff --git a/packages/app/pr/openwork-server.md b/apps/app/pr/openwork-server.md similarity index 100% rename from packages/app/pr/openwork-server.md rename to apps/app/pr/openwork-server.md diff --git a/packages/app/pr/orbita-layout-ui.md b/apps/app/pr/orbita-layout-ui.md similarity index 100% rename from packages/app/pr/orbita-layout-ui.md rename to apps/app/pr/orbita-layout-ui.md diff --git a/packages/app/pr/perf-composer-dom-containment-after.png b/apps/app/pr/perf-composer-dom-containment-after.png similarity index 100% rename from packages/app/pr/perf-composer-dom-containment-after.png rename to apps/app/pr/perf-composer-dom-containment-after.png diff --git a/packages/app/pr/perf-worker-url-left-curve-mobile-after.png b/apps/app/pr/perf-worker-url-left-curve-mobile-after.png similarity index 100% rename from packages/app/pr/perf-worker-url-left-curve-mobile-after.png rename to apps/app/pr/perf-worker-url-left-curve-mobile-after.png diff --git a/packages/app/pr/plugin-endpoints.md b/apps/app/pr/plugin-endpoints.md similarity index 100% rename from packages/app/pr/plugin-endpoints.md rename to apps/app/pr/plugin-endpoints.md diff --git a/packages/app/pr/reload-toast-persist.md b/apps/app/pr/reload-toast-persist.md similarity index 100% rename from packages/app/pr/reload-toast-persist.md rename to apps/app/pr/reload-toast-persist.md diff --git a/packages/app/pr/screenshots/always-open-new-session/01-app-open-empty-session.png b/apps/app/pr/screenshots/always-open-new-session/01-app-open-empty-session.png similarity index 100% rename from packages/app/pr/screenshots/always-open-new-session/01-app-open-empty-session.png rename to apps/app/pr/screenshots/always-open-new-session/01-app-open-empty-session.png diff --git a/packages/app/pr/screenshots/always-open-new-session/02-connect-remote-worker-modal.png b/apps/app/pr/screenshots/always-open-new-session/02-connect-remote-worker-modal.png similarity index 100% rename from packages/app/pr/screenshots/always-open-new-session/02-connect-remote-worker-modal.png rename to apps/app/pr/screenshots/always-open-new-session/02-connect-remote-worker-modal.png diff --git a/packages/app/pr/screenshots/always-open-new-session/03-new-worker-opens-empty-session.png b/apps/app/pr/screenshots/always-open-new-session/03-new-worker-opens-empty-session.png similarity index 100% rename from packages/app/pr/screenshots/always-open-new-session/03-new-worker-opens-empty-session.png rename to apps/app/pr/screenshots/always-open-new-session/03-new-worker-opens-empty-session.png diff --git a/packages/app/pr/screenshots/always-open-new-session/04-reload-still-opens-new-session.png b/apps/app/pr/screenshots/always-open-new-session/04-reload-still-opens-new-session.png similarity index 100% rename from packages/app/pr/screenshots/always-open-new-session/04-reload-still-opens-new-session.png rename to apps/app/pr/screenshots/always-open-new-session/04-reload-still-opens-new-session.png diff --git a/packages/app/pr/screenshots/cloud-tab-hidden-with-dev-mode-off.png b/apps/app/pr/screenshots/cloud-tab-hidden-with-dev-mode-off.png similarity index 100% rename from packages/app/pr/screenshots/cloud-tab-hidden-with-dev-mode-off.png rename to apps/app/pr/screenshots/cloud-tab-hidden-with-dev-mode-off.png diff --git a/packages/app/pr/screenshots/cloud-tab-visible-with-dev-mode-on.png b/apps/app/pr/screenshots/cloud-tab-visible-with-dev-mode-on.png similarity index 100% rename from packages/app/pr/screenshots/cloud-tab-visible-with-dev-mode-on.png rename to apps/app/pr/screenshots/cloud-tab-visible-with-dev-mode-on.png diff --git a/packages/app/pr/screenshots/cmdk-change-model.png b/apps/app/pr/screenshots/cmdk-change-model.png similarity index 100% rename from packages/app/pr/screenshots/cmdk-change-model.png rename to apps/app/pr/screenshots/cmdk-change-model.png diff --git a/packages/app/pr/screenshots/cmdk-change-thinking-options.png b/apps/app/pr/screenshots/cmdk-change-thinking-options.png similarity index 100% rename from packages/app/pr/screenshots/cmdk-change-thinking-options.png rename to apps/app/pr/screenshots/cmdk-change-thinking-options.png diff --git a/packages/app/pr/screenshots/cmdk-root-actions.png b/apps/app/pr/screenshots/cmdk-root-actions.png similarity index 100% rename from packages/app/pr/screenshots/cmdk-root-actions.png rename to apps/app/pr/screenshots/cmdk-root-actions.png diff --git a/packages/app/pr/screenshots/cmdk-search-sessions-filtered.png b/apps/app/pr/screenshots/cmdk-search-sessions-filtered.png similarity index 100% rename from packages/app/pr/screenshots/cmdk-search-sessions-filtered.png rename to apps/app/pr/screenshots/cmdk-search-sessions-filtered.png diff --git a/packages/app/pr/screenshots/cmdk-search-sessions.png b/apps/app/pr/screenshots/cmdk-search-sessions.png similarity index 100% rename from packages/app/pr/screenshots/cmdk-search-sessions.png rename to apps/app/pr/screenshots/cmdk-search-sessions.png diff --git a/packages/app/pr/screenshots/cmdk-thinking-high-applied.png b/apps/app/pr/screenshots/cmdk-thinking-high-applied.png similarity index 100% rename from packages/app/pr/screenshots/cmdk-thinking-high-applied.png rename to apps/app/pr/screenshots/cmdk-thinking-high-applied.png diff --git a/packages/app/pr/screenshots/composer-long-input-no-disappear.png b/apps/app/pr/screenshots/composer-long-input-no-disappear.png similarity index 100% rename from packages/app/pr/screenshots/composer-long-input-no-disappear.png rename to apps/app/pr/screenshots/composer-long-input-no-disappear.png diff --git a/packages/app/pr/screenshots/den-flow/01-den-signup-start.png b/apps/app/pr/screenshots/den-flow/01-den-signup-start.png similarity index 100% rename from packages/app/pr/screenshots/den-flow/01-den-signup-start.png rename to apps/app/pr/screenshots/den-flow/01-den-signup-start.png diff --git a/packages/app/pr/screenshots/den-flow/02-den-signup-filled.png b/apps/app/pr/screenshots/den-flow/02-den-signup-filled.png similarity index 100% rename from packages/app/pr/screenshots/den-flow/02-den-signup-filled.png rename to apps/app/pr/screenshots/den-flow/02-den-signup-filled.png diff --git a/packages/app/pr/screenshots/den-flow/03-den-worker-name-step.png b/apps/app/pr/screenshots/den-flow/03-den-worker-name-step.png similarity index 100% rename from packages/app/pr/screenshots/den-flow/03-den-worker-name-step.png rename to apps/app/pr/screenshots/den-flow/03-den-worker-name-step.png diff --git a/packages/app/pr/screenshots/den-flow/04-den-worker-provisioning.png b/apps/app/pr/screenshots/den-flow/04-den-worker-provisioning.png similarity index 100% rename from packages/app/pr/screenshots/den-flow/04-den-worker-provisioning.png rename to apps/app/pr/screenshots/den-flow/04-den-worker-provisioning.png diff --git a/packages/app/pr/screenshots/den-flow/05-den-dashboard-starting-worker.png b/apps/app/pr/screenshots/den-flow/05-den-dashboard-starting-worker.png similarity index 100% rename from packages/app/pr/screenshots/den-flow/05-den-dashboard-starting-worker.png rename to apps/app/pr/screenshots/den-flow/05-den-dashboard-starting-worker.png diff --git a/packages/app/pr/screenshots/den-settings-workers-list.png b/apps/app/pr/screenshots/den-settings-workers-list.png similarity index 100% rename from packages/app/pr/screenshots/den-settings-workers-list.png rename to apps/app/pr/screenshots/den-settings-workers-list.png diff --git a/packages/app/pr/screenshots/den-settings-workers-open.png b/apps/app/pr/screenshots/den-settings-workers-open.png similarity index 100% rename from packages/app/pr/screenshots/den-settings-workers-open.png rename to apps/app/pr/screenshots/den-settings-workers-open.png diff --git a/packages/app/pr/screenshots/fix-first-run-upload-share-dark/first-run-session.png b/apps/app/pr/screenshots/fix-first-run-upload-share-dark/first-run-session.png similarity index 100% rename from packages/app/pr/screenshots/fix-first-run-upload-share-dark/first-run-session.png rename to apps/app/pr/screenshots/fix-first-run-upload-share-dark/first-run-session.png diff --git a/packages/app/pr/screenshots/openwork-cloud-flow/01-openwork-cloud-hosted-default.png b/apps/app/pr/screenshots/openwork-cloud-flow/01-openwork-cloud-hosted-default.png similarity index 100% rename from packages/app/pr/screenshots/openwork-cloud-flow/01-openwork-cloud-hosted-default.png rename to apps/app/pr/screenshots/openwork-cloud-flow/01-openwork-cloud-hosted-default.png diff --git a/packages/app/pr/screenshots/openwork-cloud-flow/02-openwork-advanced-enable-developer-mode.png b/apps/app/pr/screenshots/openwork-cloud-flow/02-openwork-advanced-enable-developer-mode.png similarity index 100% rename from packages/app/pr/screenshots/openwork-cloud-flow/02-openwork-advanced-enable-developer-mode.png rename to apps/app/pr/screenshots/openwork-cloud-flow/02-openwork-advanced-enable-developer-mode.png diff --git a/packages/app/pr/screenshots/openwork-cloud-flow/03-openwork-developer-mode-enabled.png b/apps/app/pr/screenshots/openwork-cloud-flow/03-openwork-developer-mode-enabled.png similarity index 100% rename from packages/app/pr/screenshots/openwork-cloud-flow/03-openwork-developer-mode-enabled.png rename to apps/app/pr/screenshots/openwork-cloud-flow/03-openwork-developer-mode-enabled.png diff --git a/packages/app/pr/screenshots/openwork-cloud-flow/04-openwork-cloud-dev-signed-out.png b/apps/app/pr/screenshots/openwork-cloud-flow/04-openwork-cloud-dev-signed-out.png similarity index 100% rename from packages/app/pr/screenshots/openwork-cloud-flow/04-openwork-cloud-dev-signed-out.png rename to apps/app/pr/screenshots/openwork-cloud-flow/04-openwork-cloud-dev-signed-out.png diff --git a/packages/app/pr/screenshots/openwork-cloud-flow/05-openwork-cloud-filled-local-den-signin.png b/apps/app/pr/screenshots/openwork-cloud-flow/05-openwork-cloud-filled-local-den-signin.png similarity index 100% rename from packages/app/pr/screenshots/openwork-cloud-flow/05-openwork-cloud-filled-local-den-signin.png rename to apps/app/pr/screenshots/openwork-cloud-flow/05-openwork-cloud-filled-local-den-signin.png diff --git a/packages/app/pr/screenshots/openwork-cloud-flow/06-openwork-cloud-worker-list.png b/apps/app/pr/screenshots/openwork-cloud-flow/06-openwork-cloud-worker-list.png similarity index 100% rename from packages/app/pr/screenshots/openwork-cloud-flow/06-openwork-cloud-worker-list.png rename to apps/app/pr/screenshots/openwork-cloud-flow/06-openwork-cloud-worker-list.png diff --git a/packages/app/pr/screenshots/openwork-cloud-flow/07-openwork-cloud-worker-opened.png b/apps/app/pr/screenshots/openwork-cloud-flow/07-openwork-cloud-worker-opened.png similarity index 100% rename from packages/app/pr/screenshots/openwork-cloud-flow/07-openwork-cloud-worker-opened.png rename to apps/app/pr/screenshots/openwork-cloud-flow/07-openwork-cloud-worker-opened.png diff --git a/packages/app/pr/screenshots/orbita-layout-ui-session.png b/apps/app/pr/screenshots/orbita-layout-ui-session.png similarity index 100% rename from packages/app/pr/screenshots/orbita-layout-ui-session.png rename to apps/app/pr/screenshots/orbita-layout-ui-session.png diff --git a/packages/app/pr/screenshots/session-flow-humanized/01-session-two-turns.png b/apps/app/pr/screenshots/session-flow-humanized/01-session-two-turns.png similarity index 100% rename from packages/app/pr/screenshots/session-flow-humanized/01-session-two-turns.png rename to apps/app/pr/screenshots/session-flow-humanized/01-session-two-turns.png diff --git a/packages/app/pr/screenshots/session-flow-humanized/02-session-second-turn-expanded.png b/apps/app/pr/screenshots/session-flow-humanized/02-session-second-turn-expanded.png similarity index 100% rename from packages/app/pr/screenshots/session-flow-humanized/02-session-second-turn-expanded.png rename to apps/app/pr/screenshots/session-flow-humanized/02-session-second-turn-expanded.png diff --git a/packages/app/pr/screenshots/session-flow-humanized/03-session-first-turn-expanded.png b/apps/app/pr/screenshots/session-flow-humanized/03-session-first-turn-expanded.png similarity index 100% rename from packages/app/pr/screenshots/session-flow-humanized/03-session-first-turn-expanded.png rename to apps/app/pr/screenshots/session-flow-humanized/03-session-first-turn-expanded.png diff --git a/packages/app/pr/screenshots/session-no-soul-empty-state.png b/apps/app/pr/screenshots/session-no-soul-empty-state.png similarity index 100% rename from packages/app/pr/screenshots/session-no-soul-empty-state.png rename to apps/app/pr/screenshots/session-no-soul-empty-state.png diff --git a/packages/app/pr/screenshots/session-perf-compaction-smoke.png b/apps/app/pr/screenshots/session-perf-compaction-smoke.png similarity index 100% rename from packages/app/pr/screenshots/session-perf-compaction-smoke.png rename to apps/app/pr/screenshots/session-perf-compaction-smoke.png diff --git a/packages/app/pr/screenshots/session-select-dedupe-smoke.png b/apps/app/pr/screenshots/session-select-dedupe-smoke.png similarity index 100% rename from packages/app/pr/screenshots/session-select-dedupe-smoke.png rename to apps/app/pr/screenshots/session-select-dedupe-smoke.png diff --git a/packages/app/pr/screenshots/settings-advanced-runtime-status-mobile.png b/apps/app/pr/screenshots/settings-advanced-runtime-status-mobile.png similarity index 100% rename from packages/app/pr/screenshots/settings-advanced-runtime-status-mobile.png rename to apps/app/pr/screenshots/settings-advanced-runtime-status-mobile.png diff --git a/packages/app/pr/screenshots/settings-advanced-runtime-status.png b/apps/app/pr/screenshots/settings-advanced-runtime-status.png similarity index 100% rename from packages/app/pr/screenshots/settings-advanced-runtime-status.png rename to apps/app/pr/screenshots/settings-advanced-runtime-status.png diff --git a/packages/app/pr/screenshots/settings-button-refresh-advanced.png b/apps/app/pr/screenshots/settings-button-refresh-advanced.png similarity index 100% rename from packages/app/pr/screenshots/settings-button-refresh-advanced.png rename to apps/app/pr/screenshots/settings-button-refresh-advanced.png diff --git a/packages/app/pr/screenshots/settings-button-refresh-mobile.png b/apps/app/pr/screenshots/settings-button-refresh-mobile.png similarity index 100% rename from packages/app/pr/screenshots/settings-button-refresh-mobile.png rename to apps/app/pr/screenshots/settings-button-refresh-mobile.png diff --git a/packages/app/pr/screenshots/settings-button-refresh-session-smoke.png b/apps/app/pr/screenshots/settings-button-refresh-session-smoke.png similarity index 100% rename from packages/app/pr/screenshots/settings-button-refresh-session-smoke.png rename to apps/app/pr/screenshots/settings-button-refresh-session-smoke.png diff --git a/packages/app/pr/screenshots/steps-composer-docked.png b/apps/app/pr/screenshots/steps-composer-docked.png similarity index 100% rename from packages/app/pr/screenshots/steps-composer-docked.png rename to apps/app/pr/screenshots/steps-composer-docked.png diff --git a/packages/app/pr/screenshots/steps-grouping-after-docker.png b/apps/app/pr/screenshots/steps-grouping-after-docker.png similarity index 100% rename from packages/app/pr/screenshots/steps-grouping-after-docker.png rename to apps/app/pr/screenshots/steps-grouping-after-docker.png diff --git a/packages/app/pr/screenshots/steps-grouping-before-docker.png b/apps/app/pr/screenshots/steps-grouping-before-docker.png similarity index 100% rename from packages/app/pr/screenshots/steps-grouping-before-docker.png rename to apps/app/pr/screenshots/steps-grouping-before-docker.png diff --git a/packages/app/pr/screenshots/synthetic-control-text-smoke.png b/apps/app/pr/screenshots/synthetic-control-text-smoke.png similarity index 100% rename from packages/app/pr/screenshots/synthetic-control-text-smoke.png rename to apps/app/pr/screenshots/synthetic-control-text-smoke.png diff --git a/packages/app/pr/screenshots/telegram-private-pairing-code-mcp.png b/apps/app/pr/screenshots/telegram-private-pairing-code-mcp.png similarity index 100% rename from packages/app/pr/screenshots/telegram-private-pairing-code-mcp.png rename to apps/app/pr/screenshots/telegram-private-pairing-code-mcp.png diff --git a/packages/app/pr/screenshots/ui-audit-2026-02-25/automations-after-audit-pass.png b/apps/app/pr/screenshots/ui-audit-2026-02-25/automations-after-audit-pass.png similarity index 100% rename from packages/app/pr/screenshots/ui-audit-2026-02-25/automations-after-audit-pass.png rename to apps/app/pr/screenshots/ui-audit-2026-02-25/automations-after-audit-pass.png diff --git a/packages/app/pr/screenshots/ui-audit-2026-02-25/extensions-after-audit-pass.png b/apps/app/pr/screenshots/ui-audit-2026-02-25/extensions-after-audit-pass.png similarity index 100% rename from packages/app/pr/screenshots/ui-audit-2026-02-25/extensions-after-audit-pass.png rename to apps/app/pr/screenshots/ui-audit-2026-02-25/extensions-after-audit-pass.png diff --git a/packages/app/pr/screenshots/ui-audit-2026-02-25/identities-after-url-wrap.png b/apps/app/pr/screenshots/ui-audit-2026-02-25/identities-after-url-wrap.png similarity index 100% rename from packages/app/pr/screenshots/ui-audit-2026-02-25/identities-after-url-wrap.png rename to apps/app/pr/screenshots/ui-audit-2026-02-25/identities-after-url-wrap.png diff --git a/packages/app/pr/screenshots/ui-audit-2026-02-25/settings-after-url-wrap.png b/apps/app/pr/screenshots/ui-audit-2026-02-25/settings-after-url-wrap.png similarity index 100% rename from packages/app/pr/screenshots/ui-audit-2026-02-25/settings-after-url-wrap.png rename to apps/app/pr/screenshots/ui-audit-2026-02-25/settings-after-url-wrap.png diff --git a/packages/app/pr/screenshots/ui-audit-2026-02-25/skills-after-trigger-truncate.png b/apps/app/pr/screenshots/ui-audit-2026-02-25/skills-after-trigger-truncate.png similarity index 100% rename from packages/app/pr/screenshots/ui-audit-2026-02-25/skills-after-trigger-truncate.png rename to apps/app/pr/screenshots/ui-audit-2026-02-25/skills-after-trigger-truncate.png diff --git a/packages/app/pr/screenshots/ui-audit-2026-02-25/workspace-actions-visible.png b/apps/app/pr/screenshots/ui-audit-2026-02-25/workspace-actions-visible.png similarity index 100% rename from packages/app/pr/screenshots/ui-audit-2026-02-25/workspace-actions-visible.png rename to apps/app/pr/screenshots/ui-audit-2026-02-25/workspace-actions-visible.png diff --git a/packages/app/pr/screenshots/workspace-session-sidebar-ux/dashboard-right-sidebar-collapsed.png b/apps/app/pr/screenshots/workspace-session-sidebar-ux/dashboard-right-sidebar-collapsed.png similarity index 100% rename from packages/app/pr/screenshots/workspace-session-sidebar-ux/dashboard-right-sidebar-collapsed.png rename to apps/app/pr/screenshots/workspace-session-sidebar-ux/dashboard-right-sidebar-collapsed.png diff --git a/packages/app/pr/screenshots/workspace-session-sidebar-ux/session-left-sidebar-resized.png b/apps/app/pr/screenshots/workspace-session-sidebar-ux/session-left-sidebar-resized.png similarity index 100% rename from packages/app/pr/screenshots/workspace-session-sidebar-ux/session-left-sidebar-resized.png rename to apps/app/pr/screenshots/workspace-session-sidebar-ux/session-left-sidebar-resized.png diff --git a/packages/app/pr/screenshots/workspace-session-sidebar-ux/session-right-sidebar-collapsed.png b/apps/app/pr/screenshots/workspace-session-sidebar-ux/session-right-sidebar-collapsed.png similarity index 100% rename from packages/app/pr/screenshots/workspace-session-sidebar-ux/session-right-sidebar-collapsed.png rename to apps/app/pr/screenshots/workspace-session-sidebar-ux/session-right-sidebar-collapsed.png diff --git a/packages/app/pr/screenshots/workspace-session-sidebar-ux/session-right-sidebar-expanded.png b/apps/app/pr/screenshots/workspace-session-sidebar-ux/session-right-sidebar-expanded.png similarity index 100% rename from packages/app/pr/screenshots/workspace-session-sidebar-ux/session-right-sidebar-expanded.png rename to apps/app/pr/screenshots/workspace-session-sidebar-ux/session-right-sidebar-expanded.png diff --git a/packages/app/pr/screenshots/workspace-session-sidebar-ux/settings-open-from-session.png b/apps/app/pr/screenshots/workspace-session-sidebar-ux/settings-open-from-session.png similarity index 100% rename from packages/app/pr/screenshots/workspace-session-sidebar-ux/settings-open-from-session.png rename to apps/app/pr/screenshots/workspace-session-sidebar-ux/settings-open-from-session.png diff --git a/packages/app/pr/screenshots/workspace-session-sidebar-ux/settings-toggle-returned-session.png b/apps/app/pr/screenshots/workspace-session-sidebar-ux/settings-toggle-returned-session.png similarity index 100% rename from packages/app/pr/screenshots/workspace-session-sidebar-ux/settings-toggle-returned-session.png rename to apps/app/pr/screenshots/workspace-session-sidebar-ux/settings-toggle-returned-session.png diff --git a/packages/app/pr/session-flow-humanized.md b/apps/app/pr/session-flow-humanized.md similarity index 100% rename from packages/app/pr/session-flow-humanized.md rename to apps/app/pr/session-flow-humanized.md diff --git a/packages/app/pr/session-view-sans-font-proof.png b/apps/app/pr/session-view-sans-font-proof.png similarity index 100% rename from packages/app/pr/session-view-sans-font-proof.png rename to apps/app/pr/session-view-sans-font-proof.png diff --git a/packages/app/pr/session-view-sans-font.md b/apps/app/pr/session-view-sans-font.md similarity index 100% rename from packages/app/pr/session-view-sans-font.md rename to apps/app/pr/session-view-sans-font.md diff --git a/packages/app/pr/skill-creator-triggers.md b/apps/app/pr/skill-creator-triggers.md similarity index 100% rename from packages/app/pr/skill-creator-triggers.md rename to apps/app/pr/skill-creator-triggers.md diff --git a/packages/app/pr/steps-composer-docked.md b/apps/app/pr/steps-composer-docked.md similarity index 100% rename from packages/app/pr/steps-composer-docked.md rename to apps/app/pr/steps-composer-docked.md diff --git a/packages/app/pr/telegram-private-bot-pairing.md b/apps/app/pr/telegram-private-bot-pairing.md similarity index 100% rename from packages/app/pr/telegram-private-bot-pairing.md rename to apps/app/pr/telegram-private-bot-pairing.md diff --git a/packages/app/pr/workspace-session-sidebar-ux.md b/apps/app/pr/workspace-session-sidebar-ux.md similarity index 100% rename from packages/app/pr/workspace-session-sidebar-ux.md rename to apps/app/pr/workspace-session-sidebar-ux.md diff --git a/packages/app/progress.json b/apps/app/progress.json similarity index 100% rename from packages/app/progress.json rename to apps/app/progress.json diff --git a/packages/app/public/apple-touch-icon.png b/apps/app/public/apple-touch-icon.png similarity index 100% rename from packages/app/public/apple-touch-icon.png rename to apps/app/public/apple-touch-icon.png diff --git a/packages/app/public/favicon-16x16.png b/apps/app/public/favicon-16x16.png similarity index 100% rename from packages/app/public/favicon-16x16.png rename to apps/app/public/favicon-16x16.png diff --git a/packages/app/public/favicon-32x32.png b/apps/app/public/favicon-32x32.png similarity index 100% rename from packages/app/public/favicon-32x32.png rename to apps/app/public/favicon-32x32.png diff --git a/packages/app/public/openwork-logo-square.svg b/apps/app/public/openwork-logo-square.svg similarity index 100% rename from packages/app/public/openwork-logo-square.svg rename to apps/app/public/openwork-logo-square.svg diff --git a/packages/app/public/openwork-logo.svg b/apps/app/public/openwork-logo.svg similarity index 100% rename from packages/app/public/openwork-logo.svg rename to apps/app/public/openwork-logo.svg diff --git a/packages/app/public/openwork-mark.svg b/apps/app/public/openwork-mark.svg similarity index 100% rename from packages/app/public/openwork-mark.svg rename to apps/app/public/openwork-mark.svg diff --git a/packages/app/scripts/_util.mjs b/apps/app/scripts/_util.mjs similarity index 100% rename from packages/app/scripts/_util.mjs rename to apps/app/scripts/_util.mjs diff --git a/packages/app/scripts/browser-entry.mjs b/apps/app/scripts/browser-entry.mjs similarity index 100% rename from packages/app/scripts/browser-entry.mjs rename to apps/app/scripts/browser-entry.mjs diff --git a/packages/app/scripts/bump-version.mjs b/apps/app/scripts/bump-version.mjs similarity index 82% rename from packages/app/scripts/bump-version.mjs rename to apps/app/scripts/bump-version.mjs index ed3ced90..a60a9adc 100755 --- a/packages/app/scripts/bump-version.mjs +++ b/apps/app/scripts/bump-version.mjs @@ -57,10 +57,10 @@ const targetVersion = async () => { const updatePackageJson = async (nextVersion) => { const uiPath = path.join(ROOT, "package.json"); - const tauriPath = path.join(REPO_ROOT, "packages", "desktop", "package.json"); - const orchestratorPath = path.join(REPO_ROOT, "packages", "orchestrator", "package.json"); - const serverPath = path.join(REPO_ROOT, "packages", "server", "package.json"); - const opencodeRouterPath = path.join(REPO_ROOT, "packages", "opencode-router", "package.json"); + const tauriPath = path.join(REPO_ROOT, "apps", "desktop", "package.json"); + const orchestratorPath = path.join(REPO_ROOT, "apps", "orchestrator", "package.json"); + const serverPath = path.join(REPO_ROOT, "apps", "server", "package.json"); + const opencodeRouterPath = path.join(REPO_ROOT, "apps", "opencode-router", "package.json"); const uiData = await readJson(uiPath); const tauriData = await readJson(tauriPath); const orchestratorData = await readJson(orchestratorPath); @@ -74,7 +74,7 @@ const updatePackageJson = async (nextVersion) => { // Ensure openwork-orchestrator uses the same openwork-server/opencode-router versions. orchestratorData.dependencies = orchestratorData.dependencies ?? {}; - orchestratorData.dependencies["openwork-server"] = nextVersion; + orchestratorData.dependencies["@openwork/server"] = nextVersion; orchestratorData.dependencies["opencode-router"] = nextVersion; serverData.version = nextVersion; @@ -89,7 +89,7 @@ const updatePackageJson = async (nextVersion) => { }; const updateCargoToml = async (nextVersion) => { - const filePath = path.join(REPO_ROOT, "packages", "desktop", "src-tauri", "Cargo.toml"); + const filePath = path.join(REPO_ROOT, "apps", "desktop", "src-tauri", "Cargo.toml"); const raw = await readFile(filePath, "utf8"); const updated = raw.replace(/\bversion\s*=\s*"[^"]+"/m, `version = "${nextVersion}"`); if (!isDryRun) { @@ -98,7 +98,7 @@ const updateCargoToml = async (nextVersion) => { const { execFileSync } = await import("node:child_process"); try { execFileSync("cargo", ["generate-lockfile"], { - cwd: path.join(REPO_ROOT, "packages", "desktop", "src-tauri"), + cwd: path.join(REPO_ROOT, "apps", "desktop", "src-tauri"), stdio: "ignore", }); } catch { @@ -108,7 +108,7 @@ const updateCargoToml = async (nextVersion) => { }; const updateTauriConfig = async (nextVersion) => { - const filePath = path.join(REPO_ROOT, "packages", "desktop", "src-tauri", "tauri.conf.json"); + const filePath = path.join(REPO_ROOT, "apps", "desktop", "src-tauri", "tauri.conf.json"); const data = JSON.parse(await readFile(filePath, "utf8")); data.version = nextVersion; if (!isDryRun) { @@ -136,13 +136,13 @@ const main = async () => { version: nextVersion, dryRun: isDryRun, files: [ - "packages/app/package.json", - "packages/desktop/package.json", - "packages/orchestrator/package.json", - "packages/server/package.json", - "packages/opencode-router/package.json", - "packages/desktop/src-tauri/Cargo.toml", - "packages/desktop/src-tauri/tauri.conf.json", + "apps/app/package.json", + "apps/desktop/package.json", + "apps/orchestrator/package.json", + "apps/server/package.json", + "apps/opencode-router/package.json", + "apps/desktop/src-tauri/Cargo.toml", + "apps/desktop/src-tauri/tauri.conf.json", ], }, null, diff --git a/packages/app/scripts/e2e.mjs b/apps/app/scripts/e2e.mjs similarity index 100% rename from packages/app/scripts/e2e.mjs rename to apps/app/scripts/e2e.mjs diff --git a/packages/app/scripts/events.mjs b/apps/app/scripts/events.mjs similarity index 100% rename from packages/app/scripts/events.mjs rename to apps/app/scripts/events.mjs diff --git a/packages/app/scripts/fs-engine.mjs b/apps/app/scripts/fs-engine.mjs similarity index 100% rename from packages/app/scripts/fs-engine.mjs rename to apps/app/scripts/fs-engine.mjs diff --git a/packages/app/scripts/health.mjs b/apps/app/scripts/health.mjs similarity index 100% rename from packages/app/scripts/health.mjs rename to apps/app/scripts/health.mjs diff --git a/packages/app/scripts/local-file-path.mjs b/apps/app/scripts/local-file-path.mjs similarity index 100% rename from packages/app/scripts/local-file-path.mjs rename to apps/app/scripts/local-file-path.mjs diff --git a/packages/app/scripts/mention-send.mjs b/apps/app/scripts/mention-send.mjs similarity index 100% rename from packages/app/scripts/mention-send.mjs rename to apps/app/scripts/mention-send.mjs diff --git a/packages/app/scripts/permissions.mjs b/apps/app/scripts/permissions.mjs similarity index 100% rename from packages/app/scripts/permissions.mjs rename to apps/app/scripts/permissions.mjs diff --git a/packages/app/scripts/select-session-debug.mjs b/apps/app/scripts/select-session-debug.mjs similarity index 100% rename from packages/app/scripts/select-session-debug.mjs rename to apps/app/scripts/select-session-debug.mjs diff --git a/packages/app/scripts/session-switch.mjs b/apps/app/scripts/session-switch.mjs similarity index 100% rename from packages/app/scripts/session-switch.mjs rename to apps/app/scripts/session-switch.mjs diff --git a/packages/app/scripts/sessions-parallel.mjs b/apps/app/scripts/sessions-parallel.mjs similarity index 100% rename from packages/app/scripts/sessions-parallel.mjs rename to apps/app/scripts/sessions-parallel.mjs diff --git a/packages/app/scripts/sessions.mjs b/apps/app/scripts/sessions.mjs similarity index 100% rename from packages/app/scripts/sessions.mjs rename to apps/app/scripts/sessions.mjs diff --git a/packages/app/scripts/todos.mjs b/apps/app/scripts/todos.mjs similarity index 100% rename from packages/app/scripts/todos.mjs rename to apps/app/scripts/todos.mjs diff --git a/packages/app/src/app/app.tsx b/apps/app/src/app/app.tsx similarity index 100% rename from packages/app/src/app/app.tsx rename to apps/app/src/app/app.tsx diff --git a/packages/app/src/app/components/add-mcp-modal.tsx b/apps/app/src/app/components/add-mcp-modal.tsx similarity index 100% rename from packages/app/src/app/components/add-mcp-modal.tsx rename to apps/app/src/app/components/add-mcp-modal.tsx diff --git a/packages/app/src/app/components/button.tsx b/apps/app/src/app/components/button.tsx similarity index 100% rename from packages/app/src/app/components/button.tsx rename to apps/app/src/app/components/button.tsx diff --git a/packages/app/src/app/components/card.tsx b/apps/app/src/app/components/card.tsx similarity index 100% rename from packages/app/src/app/components/card.tsx rename to apps/app/src/app/components/card.tsx diff --git a/packages/app/src/app/components/confirm-modal.tsx b/apps/app/src/app/components/confirm-modal.tsx similarity index 100% rename from packages/app/src/app/components/confirm-modal.tsx rename to apps/app/src/app/components/confirm-modal.tsx diff --git a/packages/app/src/app/components/create-remote-workspace-modal.tsx b/apps/app/src/app/components/create-remote-workspace-modal.tsx similarity index 100% rename from packages/app/src/app/components/create-remote-workspace-modal.tsx rename to apps/app/src/app/components/create-remote-workspace-modal.tsx diff --git a/packages/app/src/app/components/create-workspace-modal.tsx b/apps/app/src/app/components/create-workspace-modal.tsx similarity index 100% rename from packages/app/src/app/components/create-workspace-modal.tsx rename to apps/app/src/app/components/create-workspace-modal.tsx diff --git a/packages/app/src/app/components/den-settings-panel.tsx b/apps/app/src/app/components/den-settings-panel.tsx similarity index 100% rename from packages/app/src/app/components/den-settings-panel.tsx rename to apps/app/src/app/components/den-settings-panel.tsx diff --git a/packages/app/src/app/components/desktop-only-badge.tsx b/apps/app/src/app/components/desktop-only-badge.tsx similarity index 100% rename from packages/app/src/app/components/desktop-only-badge.tsx rename to apps/app/src/app/components/desktop-only-badge.tsx diff --git a/packages/app/src/app/components/flyout-item.tsx b/apps/app/src/app/components/flyout-item.tsx similarity index 100% rename from packages/app/src/app/components/flyout-item.tsx rename to apps/app/src/app/components/flyout-item.tsx diff --git a/packages/app/src/app/components/language-picker-modal.tsx b/apps/app/src/app/components/language-picker-modal.tsx similarity index 100% rename from packages/app/src/app/components/language-picker-modal.tsx rename to apps/app/src/app/components/language-picker-modal.tsx diff --git a/packages/app/src/app/components/live-markdown-editor.tsx b/apps/app/src/app/components/live-markdown-editor.tsx similarity index 100% rename from packages/app/src/app/components/live-markdown-editor.tsx rename to apps/app/src/app/components/live-markdown-editor.tsx diff --git a/packages/app/src/app/components/mcp-auth-modal.tsx b/apps/app/src/app/components/mcp-auth-modal.tsx similarity index 100% rename from packages/app/src/app/components/mcp-auth-modal.tsx rename to apps/app/src/app/components/mcp-auth-modal.tsx diff --git a/packages/app/src/app/components/mobile-sidebar-drawer.tsx b/apps/app/src/app/components/mobile-sidebar-drawer.tsx similarity index 100% rename from packages/app/src/app/components/mobile-sidebar-drawer.tsx rename to apps/app/src/app/components/mobile-sidebar-drawer.tsx diff --git a/packages/app/src/app/components/model-picker-modal.tsx b/apps/app/src/app/components/model-picker-modal.tsx similarity index 100% rename from packages/app/src/app/components/model-picker-modal.tsx rename to apps/app/src/app/components/model-picker-modal.tsx diff --git a/packages/app/src/app/components/onboarding-workspace-selector.tsx b/apps/app/src/app/components/onboarding-workspace-selector.tsx similarity index 100% rename from packages/app/src/app/components/onboarding-workspace-selector.tsx rename to apps/app/src/app/components/onboarding-workspace-selector.tsx diff --git a/packages/app/src/app/components/openwork-logo.tsx b/apps/app/src/app/components/openwork-logo.tsx similarity index 100% rename from packages/app/src/app/components/openwork-logo.tsx rename to apps/app/src/app/components/openwork-logo.tsx diff --git a/packages/app/src/app/components/part-view.tsx b/apps/app/src/app/components/part-view.tsx similarity index 100% rename from packages/app/src/app/components/part-view.tsx rename to apps/app/src/app/components/part-view.tsx diff --git a/packages/app/src/app/components/provider-auth-modal.tsx b/apps/app/src/app/components/provider-auth-modal.tsx similarity index 100% rename from packages/app/src/app/components/provider-auth-modal.tsx rename to apps/app/src/app/components/provider-auth-modal.tsx diff --git a/packages/app/src/app/components/question-modal.tsx b/apps/app/src/app/components/question-modal.tsx similarity index 100% rename from packages/app/src/app/components/question-modal.tsx rename to apps/app/src/app/components/question-modal.tsx diff --git a/packages/app/src/app/components/reload-workspace-toast.tsx b/apps/app/src/app/components/reload-workspace-toast.tsx similarity index 100% rename from packages/app/src/app/components/reload-workspace-toast.tsx rename to apps/app/src/app/components/reload-workspace-toast.tsx diff --git a/packages/app/src/app/components/rename-session-modal.tsx b/apps/app/src/app/components/rename-session-modal.tsx similarity index 100% rename from packages/app/src/app/components/rename-session-modal.tsx rename to apps/app/src/app/components/rename-session-modal.tsx diff --git a/packages/app/src/app/components/rename-workspace-modal.tsx b/apps/app/src/app/components/rename-workspace-modal.tsx similarity index 100% rename from packages/app/src/app/components/rename-workspace-modal.tsx rename to apps/app/src/app/components/rename-workspace-modal.tsx diff --git a/packages/app/src/app/components/reset-modal.tsx b/apps/app/src/app/components/reset-modal.tsx similarity index 100% rename from packages/app/src/app/components/reset-modal.tsx rename to apps/app/src/app/components/reset-modal.tsx diff --git a/packages/app/src/app/components/session/artifacts-panel.tsx b/apps/app/src/app/components/session/artifacts-panel.tsx similarity index 100% rename from packages/app/src/app/components/session/artifacts-panel.tsx rename to apps/app/src/app/components/session/artifacts-panel.tsx diff --git a/packages/app/src/app/components/session/composer.tsx b/apps/app/src/app/components/session/composer.tsx similarity index 100% rename from packages/app/src/app/components/session/composer.tsx rename to apps/app/src/app/components/session/composer.tsx diff --git a/packages/app/src/app/components/session/context-panel.tsx b/apps/app/src/app/components/session/context-panel.tsx similarity index 100% rename from packages/app/src/app/components/session/context-panel.tsx rename to apps/app/src/app/components/session/context-panel.tsx diff --git a/packages/app/src/app/components/session/inbox-panel.tsx b/apps/app/src/app/components/session/inbox-panel.tsx similarity index 100% rename from packages/app/src/app/components/session/inbox-panel.tsx rename to apps/app/src/app/components/session/inbox-panel.tsx diff --git a/packages/app/src/app/components/session/message-list.tsx b/apps/app/src/app/components/session/message-list.tsx similarity index 100% rename from packages/app/src/app/components/session/message-list.tsx rename to apps/app/src/app/components/session/message-list.tsx diff --git a/packages/app/src/app/components/session/minimap.tsx b/apps/app/src/app/components/session/minimap.tsx similarity index 100% rename from packages/app/src/app/components/session/minimap.tsx rename to apps/app/src/app/components/session/minimap.tsx diff --git a/packages/app/src/app/components/session/sidebar.tsx b/apps/app/src/app/components/session/sidebar.tsx similarity index 100% rename from packages/app/src/app/components/session/sidebar.tsx rename to apps/app/src/app/components/session/sidebar.tsx diff --git a/packages/app/src/app/components/session/workspace-session-list.tsx b/apps/app/src/app/components/session/workspace-session-list.tsx similarity index 100% rename from packages/app/src/app/components/session/workspace-session-list.tsx rename to apps/app/src/app/components/session/workspace-session-list.tsx diff --git a/packages/app/src/app/components/share-workspace-modal.tsx b/apps/app/src/app/components/share-workspace-modal.tsx similarity index 100% rename from packages/app/src/app/components/share-workspace-modal.tsx rename to apps/app/src/app/components/share-workspace-modal.tsx diff --git a/packages/app/src/app/components/shared-bundle-import-modal.tsx b/apps/app/src/app/components/shared-bundle-import-modal.tsx similarity index 100% rename from packages/app/src/app/components/shared-bundle-import-modal.tsx rename to apps/app/src/app/components/shared-bundle-import-modal.tsx diff --git a/packages/app/src/app/components/shared-skill-destination-modal.tsx b/apps/app/src/app/components/shared-skill-destination-modal.tsx similarity index 100% rename from packages/app/src/app/components/shared-skill-destination-modal.tsx rename to apps/app/src/app/components/shared-skill-destination-modal.tsx diff --git a/packages/app/src/app/components/status-bar.tsx b/apps/app/src/app/components/status-bar.tsx similarity index 100% rename from packages/app/src/app/components/status-bar.tsx rename to apps/app/src/app/components/status-bar.tsx diff --git a/packages/app/src/app/components/status-toast.tsx b/apps/app/src/app/components/status-toast.tsx similarity index 100% rename from packages/app/src/app/components/status-toast.tsx rename to apps/app/src/app/components/status-toast.tsx diff --git a/packages/app/src/app/components/text-input.tsx b/apps/app/src/app/components/text-input.tsx similarity index 100% rename from packages/app/src/app/components/text-input.tsx rename to apps/app/src/app/components/text-input.tsx diff --git a/packages/app/src/app/components/thinking-block.tsx b/apps/app/src/app/components/thinking-block.tsx similarity index 100% rename from packages/app/src/app/components/thinking-block.tsx rename to apps/app/src/app/components/thinking-block.tsx diff --git a/packages/app/src/app/components/web-unavailable-surface.tsx b/apps/app/src/app/components/web-unavailable-surface.tsx similarity index 100% rename from packages/app/src/app/components/web-unavailable-surface.tsx rename to apps/app/src/app/components/web-unavailable-surface.tsx diff --git a/packages/app/src/app/components/workspace-chip.tsx b/apps/app/src/app/components/workspace-chip.tsx similarity index 100% rename from packages/app/src/app/components/workspace-chip.tsx rename to apps/app/src/app/components/workspace-chip.tsx diff --git a/packages/app/src/app/components/workspace-switch-overlay.tsx b/apps/app/src/app/components/workspace-switch-overlay.tsx similarity index 100% rename from packages/app/src/app/components/workspace-switch-overlay.tsx rename to apps/app/src/app/components/workspace-switch-overlay.tsx diff --git a/packages/app/src/app/constants.ts b/apps/app/src/app/constants.ts similarity index 100% rename from packages/app/src/app/constants.ts rename to apps/app/src/app/constants.ts diff --git a/packages/app/src/app/context/extensions.ts b/apps/app/src/app/context/extensions.ts similarity index 100% rename from packages/app/src/app/context/extensions.ts rename to apps/app/src/app/context/extensions.ts diff --git a/packages/app/src/app/context/global-sdk.tsx b/apps/app/src/app/context/global-sdk.tsx similarity index 100% rename from packages/app/src/app/context/global-sdk.tsx rename to apps/app/src/app/context/global-sdk.tsx diff --git a/packages/app/src/app/context/global-sync.tsx b/apps/app/src/app/context/global-sync.tsx similarity index 100% rename from packages/app/src/app/context/global-sync.tsx rename to apps/app/src/app/context/global-sync.tsx diff --git a/packages/app/src/app/context/local.tsx b/apps/app/src/app/context/local.tsx similarity index 100% rename from packages/app/src/app/context/local.tsx rename to apps/app/src/app/context/local.tsx diff --git a/packages/app/src/app/context/openwork-server.ts b/apps/app/src/app/context/openwork-server.ts similarity index 100% rename from packages/app/src/app/context/openwork-server.ts rename to apps/app/src/app/context/openwork-server.ts diff --git a/packages/app/src/app/context/platform.tsx b/apps/app/src/app/context/platform.tsx similarity index 100% rename from packages/app/src/app/context/platform.tsx rename to apps/app/src/app/context/platform.tsx diff --git a/packages/app/src/app/context/server.tsx b/apps/app/src/app/context/server.tsx similarity index 100% rename from packages/app/src/app/context/server.tsx rename to apps/app/src/app/context/server.tsx diff --git a/packages/app/src/app/context/session.ts b/apps/app/src/app/context/session.ts similarity index 100% rename from packages/app/src/app/context/session.ts rename to apps/app/src/app/context/session.ts diff --git a/packages/app/src/app/context/sync.tsx b/apps/app/src/app/context/sync.tsx similarity index 100% rename from packages/app/src/app/context/sync.tsx rename to apps/app/src/app/context/sync.tsx diff --git a/packages/app/src/app/context/updater.ts b/apps/app/src/app/context/updater.ts similarity index 100% rename from packages/app/src/app/context/updater.ts rename to apps/app/src/app/context/updater.ts diff --git a/packages/app/src/app/context/workspace.ts b/apps/app/src/app/context/workspace.ts similarity index 100% rename from packages/app/src/app/context/workspace.ts rename to apps/app/src/app/context/workspace.ts diff --git a/packages/app/src/app/data/commands/browser-setup.md b/apps/app/src/app/data/commands/browser-setup.md similarity index 100% rename from packages/app/src/app/data/commands/browser-setup.md rename to apps/app/src/app/data/commands/browser-setup.md diff --git a/packages/app/src/app/data/skill-creator.md b/apps/app/src/app/data/skill-creator.md similarity index 100% rename from packages/app/src/app/data/skill-creator.md rename to apps/app/src/app/data/skill-creator.md diff --git a/packages/app/src/app/entry.tsx b/apps/app/src/app/entry.tsx similarity index 100% rename from packages/app/src/app/entry.tsx rename to apps/app/src/app/entry.tsx diff --git a/packages/app/src/app/index.css b/apps/app/src/app/index.css similarity index 100% rename from packages/app/src/app/index.css rename to apps/app/src/app/index.css diff --git a/apps/app/src/app/lib/deep-link-bridge.ts b/apps/app/src/app/lib/deep-link-bridge.ts new file mode 100644 index 00000000..a0b716dc --- /dev/null +++ b/apps/app/src/app/lib/deep-link-bridge.ts @@ -0,0 +1,43 @@ +export const deepLinkBridgeEvent = "openwork:deep-link"; +export const nativeDeepLinkEvent = "openwork:deep-link-native"; + +export type DeepLinkBridgeDetail = { + urls: string[]; +}; + +declare global { + interface Window { + __OPENWORK__?: { + deepLinks?: string[]; + }; + } +} + +function normalizeDeepLinks(urls: readonly string[]): string[] { + return urls.map((url) => url.trim()).filter(Boolean); +} + +export function pushPendingDeepLinks(target: Window, urls: readonly string[]): string[] { + const normalized = normalizeDeepLinks(urls); + if (normalized.length === 0) { + return []; + } + + target.__OPENWORK__ ??= {}; + const pending = target.__OPENWORK__.deepLinks ?? []; + target.__OPENWORK__.deepLinks = [...pending, ...normalized]; + target.dispatchEvent( + new CustomEvent(deepLinkBridgeEvent, { + detail: { urls: normalized }, + }), + ); + return normalized; +} + +export function drainPendingDeepLinks(target: Window): string[] { + const pending = target.__OPENWORK__?.deepLinks ?? []; + if (target.__OPENWORK__) { + target.__OPENWORK__.deepLinks = []; + } + return [...pending]; +} diff --git a/packages/app/src/app/lib/den.ts b/apps/app/src/app/lib/den.ts similarity index 100% rename from packages/app/src/app/lib/den.ts rename to apps/app/src/app/lib/den.ts diff --git a/packages/app/src/app/lib/feedback.ts b/apps/app/src/app/lib/feedback.ts similarity index 100% rename from packages/app/src/app/lib/feedback.ts rename to apps/app/src/app/lib/feedback.ts diff --git a/packages/app/src/app/lib/font-zoom.ts b/apps/app/src/app/lib/font-zoom.ts similarity index 100% rename from packages/app/src/app/lib/font-zoom.ts rename to apps/app/src/app/lib/font-zoom.ts diff --git a/packages/app/src/app/lib/local-file-path.impl.d.ts b/apps/app/src/app/lib/local-file-path.impl.d.ts similarity index 100% rename from packages/app/src/app/lib/local-file-path.impl.d.ts rename to apps/app/src/app/lib/local-file-path.impl.d.ts diff --git a/packages/app/src/app/lib/local-file-path.impl.js b/apps/app/src/app/lib/local-file-path.impl.js similarity index 100% rename from packages/app/src/app/lib/local-file-path.impl.js rename to apps/app/src/app/lib/local-file-path.impl.js diff --git a/packages/app/src/app/lib/local-file-path.ts b/apps/app/src/app/lib/local-file-path.ts similarity index 100% rename from packages/app/src/app/lib/local-file-path.ts rename to apps/app/src/app/lib/local-file-path.ts diff --git a/packages/app/src/app/lib/opencode-session.ts b/apps/app/src/app/lib/opencode-session.ts similarity index 100% rename from packages/app/src/app/lib/opencode-session.ts rename to apps/app/src/app/lib/opencode-session.ts diff --git a/packages/app/src/app/lib/opencode.ts b/apps/app/src/app/lib/opencode.ts similarity index 100% rename from packages/app/src/app/lib/opencode.ts rename to apps/app/src/app/lib/opencode.ts diff --git a/packages/app/src/app/lib/openwork-deployment.ts b/apps/app/src/app/lib/openwork-deployment.ts similarity index 100% rename from packages/app/src/app/lib/openwork-deployment.ts rename to apps/app/src/app/lib/openwork-deployment.ts diff --git a/packages/app/src/app/lib/openwork-server.ts b/apps/app/src/app/lib/openwork-server.ts similarity index 100% rename from packages/app/src/app/lib/openwork-server.ts rename to apps/app/src/app/lib/openwork-server.ts diff --git a/packages/app/src/app/lib/perf-log.ts b/apps/app/src/app/lib/perf-log.ts similarity index 100% rename from packages/app/src/app/lib/perf-log.ts rename to apps/app/src/app/lib/perf-log.ts diff --git a/packages/app/src/app/lib/publisher.ts b/apps/app/src/app/lib/publisher.ts similarity index 100% rename from packages/app/src/app/lib/publisher.ts rename to apps/app/src/app/lib/publisher.ts diff --git a/packages/app/src/app/lib/safe-run.ts b/apps/app/src/app/lib/safe-run.ts similarity index 100% rename from packages/app/src/app/lib/safe-run.ts rename to apps/app/src/app/lib/safe-run.ts diff --git a/packages/app/src/app/lib/tauri.ts b/apps/app/src/app/lib/tauri.ts similarity index 100% rename from packages/app/src/app/lib/tauri.ts rename to apps/app/src/app/lib/tauri.ts diff --git a/packages/app/src/app/lib/workspace-shell-layout.ts b/apps/app/src/app/lib/workspace-shell-layout.ts similarity index 100% rename from packages/app/src/app/lib/workspace-shell-layout.ts rename to apps/app/src/app/lib/workspace-shell-layout.ts diff --git a/packages/app/src/app/mcp.ts b/apps/app/src/app/mcp.ts similarity index 100% rename from packages/app/src/app/mcp.ts rename to apps/app/src/app/mcp.ts diff --git a/packages/app/src/app/pages/config.tsx b/apps/app/src/app/pages/config.tsx similarity index 100% rename from packages/app/src/app/pages/config.tsx rename to apps/app/src/app/pages/config.tsx diff --git a/packages/app/src/app/pages/dashboard.tsx b/apps/app/src/app/pages/dashboard.tsx similarity index 100% rename from packages/app/src/app/pages/dashboard.tsx rename to apps/app/src/app/pages/dashboard.tsx diff --git a/packages/app/src/app/pages/extensions.tsx b/apps/app/src/app/pages/extensions.tsx similarity index 100% rename from packages/app/src/app/pages/extensions.tsx rename to apps/app/src/app/pages/extensions.tsx diff --git a/packages/app/src/app/pages/identities.tsx b/apps/app/src/app/pages/identities.tsx similarity index 100% rename from packages/app/src/app/pages/identities.tsx rename to apps/app/src/app/pages/identities.tsx diff --git a/packages/app/src/app/pages/mcp.tsx b/apps/app/src/app/pages/mcp.tsx similarity index 100% rename from packages/app/src/app/pages/mcp.tsx rename to apps/app/src/app/pages/mcp.tsx diff --git a/packages/app/src/app/pages/onboarding.tsx b/apps/app/src/app/pages/onboarding.tsx similarity index 100% rename from packages/app/src/app/pages/onboarding.tsx rename to apps/app/src/app/pages/onboarding.tsx diff --git a/packages/app/src/app/pages/plugins.tsx b/apps/app/src/app/pages/plugins.tsx similarity index 100% rename from packages/app/src/app/pages/plugins.tsx rename to apps/app/src/app/pages/plugins.tsx diff --git a/packages/app/src/app/pages/proto-v1-ux.tsx b/apps/app/src/app/pages/proto-v1-ux.tsx similarity index 100% rename from packages/app/src/app/pages/proto-v1-ux.tsx rename to apps/app/src/app/pages/proto-v1-ux.tsx diff --git a/packages/app/src/app/pages/proto-workspaces.tsx b/apps/app/src/app/pages/proto-workspaces.tsx similarity index 100% rename from packages/app/src/app/pages/proto-workspaces.tsx rename to apps/app/src/app/pages/proto-workspaces.tsx diff --git a/packages/app/src/app/pages/scheduled.tsx b/apps/app/src/app/pages/scheduled.tsx similarity index 100% rename from packages/app/src/app/pages/scheduled.tsx rename to apps/app/src/app/pages/scheduled.tsx diff --git a/packages/app/src/app/pages/session.tsx b/apps/app/src/app/pages/session.tsx similarity index 100% rename from packages/app/src/app/pages/session.tsx rename to apps/app/src/app/pages/session.tsx diff --git a/packages/app/src/app/pages/settings.tsx b/apps/app/src/app/pages/settings.tsx similarity index 100% rename from packages/app/src/app/pages/settings.tsx rename to apps/app/src/app/pages/settings.tsx diff --git a/packages/app/src/app/pages/skills.tsx b/apps/app/src/app/pages/skills.tsx similarity index 100% rename from packages/app/src/app/pages/skills.tsx rename to apps/app/src/app/pages/skills.tsx diff --git a/packages/app/src/app/state/extensions.ts b/apps/app/src/app/state/extensions.ts similarity index 100% rename from packages/app/src/app/state/extensions.ts rename to apps/app/src/app/state/extensions.ts diff --git a/packages/app/src/app/state/sessions.ts b/apps/app/src/app/state/sessions.ts similarity index 100% rename from packages/app/src/app/state/sessions.ts rename to apps/app/src/app/state/sessions.ts diff --git a/packages/app/src/app/state/system.ts b/apps/app/src/app/state/system.ts similarity index 100% rename from packages/app/src/app/state/system.ts rename to apps/app/src/app/state/system.ts diff --git a/packages/app/src/app/system-state.ts b/apps/app/src/app/system-state.ts similarity index 100% rename from packages/app/src/app/system-state.ts rename to apps/app/src/app/system-state.ts diff --git a/packages/app/src/app/theme.ts b/apps/app/src/app/theme.ts similarity index 100% rename from packages/app/src/app/theme.ts rename to apps/app/src/app/theme.ts diff --git a/packages/app/src/app/types.ts b/apps/app/src/app/types.ts similarity index 100% rename from packages/app/src/app/types.ts rename to apps/app/src/app/types.ts diff --git a/packages/app/src/app/utils/index.ts b/apps/app/src/app/utils/index.ts similarity index 100% rename from packages/app/src/app/utils/index.ts rename to apps/app/src/app/utils/index.ts diff --git a/packages/app/src/app/utils/persist.ts b/apps/app/src/app/utils/persist.ts similarity index 100% rename from packages/app/src/app/utils/persist.ts rename to apps/app/src/app/utils/persist.ts diff --git a/packages/app/src/app/utils/plugins.ts b/apps/app/src/app/utils/plugins.ts similarity index 100% rename from packages/app/src/app/utils/plugins.ts rename to apps/app/src/app/utils/plugins.ts diff --git a/packages/app/src/app/utils/providers.ts b/apps/app/src/app/utils/providers.ts similarity index 100% rename from packages/app/src/app/utils/providers.ts rename to apps/app/src/app/utils/providers.ts diff --git a/packages/app/src/i18n/index.ts b/apps/app/src/i18n/index.ts similarity index 100% rename from packages/app/src/i18n/index.ts rename to apps/app/src/i18n/index.ts diff --git a/packages/app/src/i18n/locales/en.ts b/apps/app/src/i18n/locales/en.ts similarity index 100% rename from packages/app/src/i18n/locales/en.ts rename to apps/app/src/i18n/locales/en.ts diff --git a/packages/app/src/i18n/locales/index.ts b/apps/app/src/i18n/locales/index.ts similarity index 100% rename from packages/app/src/i18n/locales/index.ts rename to apps/app/src/i18n/locales/index.ts diff --git a/packages/app/src/i18n/locales/ja.ts b/apps/app/src/i18n/locales/ja.ts similarity index 100% rename from packages/app/src/i18n/locales/ja.ts rename to apps/app/src/i18n/locales/ja.ts diff --git a/packages/app/src/i18n/locales/vi.ts b/apps/app/src/i18n/locales/vi.ts similarity index 100% rename from packages/app/src/i18n/locales/vi.ts rename to apps/app/src/i18n/locales/vi.ts diff --git a/packages/app/src/i18n/locales/zh.ts b/apps/app/src/i18n/locales/zh.ts similarity index 100% rename from packages/app/src/i18n/locales/zh.ts rename to apps/app/src/i18n/locales/zh.ts diff --git a/packages/app/src/index.tsx b/apps/app/src/index.tsx similarity index 100% rename from packages/app/src/index.tsx rename to apps/app/src/index.tsx diff --git a/packages/app/src/styles/colors.css b/apps/app/src/styles/colors.css similarity index 100% rename from packages/app/src/styles/colors.css rename to apps/app/src/styles/colors.css diff --git a/packages/app/src/styles/tailwind-colors.ts b/apps/app/src/styles/tailwind-colors.ts similarity index 100% rename from packages/app/src/styles/tailwind-colors.ts rename to apps/app/src/styles/tailwind-colors.ts diff --git a/packages/app/tailwind.config.ts b/apps/app/tailwind.config.ts similarity index 100% rename from packages/app/tailwind.config.ts rename to apps/app/tailwind.config.ts diff --git a/packages/app/tsconfig.json b/apps/app/tsconfig.json similarity index 100% rename from packages/app/tsconfig.json rename to apps/app/tsconfig.json diff --git a/packages/app/vercel.json b/apps/app/vercel.json similarity index 100% rename from packages/app/vercel.json rename to apps/app/vercel.json diff --git a/packages/app/vite.config.ts b/apps/app/vite.config.ts similarity index 100% rename from packages/app/vite.config.ts rename to apps/app/vite.config.ts diff --git a/packages/desktop/package.json b/apps/desktop/package.json similarity index 94% rename from packages/desktop/package.json rename to apps/desktop/package.json index f37edb44..20b3b44c 100644 --- a/packages/desktop/package.json +++ b/apps/desktop/package.json @@ -1,5 +1,5 @@ { - "name": "@different-ai/openwork", + "name": "@openwork/desktop", "private": true, "version": "0.11.170", "opencodeVersion": "1.2.26", diff --git a/packages/desktop/scripts/chrome-devtools-mcp-shim.ts b/apps/desktop/scripts/chrome-devtools-mcp-shim.ts similarity index 100% rename from packages/desktop/scripts/chrome-devtools-mcp-shim.ts rename to apps/desktop/scripts/chrome-devtools-mcp-shim.ts diff --git a/packages/desktop/scripts/prepare-sidecar.mjs b/apps/desktop/scripts/prepare-sidecar.mjs similarity index 100% rename from packages/desktop/scripts/prepare-sidecar.mjs rename to apps/desktop/scripts/prepare-sidecar.mjs diff --git a/packages/desktop/scripts/tauri-before-dev.mjs b/apps/desktop/scripts/tauri-before-dev.mjs similarity index 100% rename from packages/desktop/scripts/tauri-before-dev.mjs rename to apps/desktop/scripts/tauri-before-dev.mjs diff --git a/packages/desktop/src-tauri/Cargo.lock b/apps/desktop/src-tauri/Cargo.lock similarity index 100% rename from packages/desktop/src-tauri/Cargo.lock rename to apps/desktop/src-tauri/Cargo.lock diff --git a/packages/desktop/src-tauri/Cargo.toml b/apps/desktop/src-tauri/Cargo.toml similarity index 100% rename from packages/desktop/src-tauri/Cargo.toml rename to apps/desktop/src-tauri/Cargo.toml diff --git a/packages/desktop/src-tauri/Info.dev.plist b/apps/desktop/src-tauri/Info.dev.plist similarity index 100% rename from packages/desktop/src-tauri/Info.dev.plist rename to apps/desktop/src-tauri/Info.dev.plist diff --git a/packages/desktop/src-tauri/build.rs b/apps/desktop/src-tauri/build.rs similarity index 100% rename from packages/desktop/src-tauri/build.rs rename to apps/desktop/src-tauri/build.rs diff --git a/packages/desktop/src-tauri/capabilities/default.json b/apps/desktop/src-tauri/capabilities/default.json similarity index 100% rename from packages/desktop/src-tauri/capabilities/default.json rename to apps/desktop/src-tauri/capabilities/default.json diff --git a/packages/desktop/src-tauri/entitlements.plist b/apps/desktop/src-tauri/entitlements.plist similarity index 100% rename from packages/desktop/src-tauri/entitlements.plist rename to apps/desktop/src-tauri/entitlements.plist diff --git a/packages/desktop/src-tauri/gen/schemas/acl-manifests.json b/apps/desktop/src-tauri/gen/schemas/acl-manifests.json similarity index 100% rename from packages/desktop/src-tauri/gen/schemas/acl-manifests.json rename to apps/desktop/src-tauri/gen/schemas/acl-manifests.json diff --git a/packages/desktop/src-tauri/gen/schemas/capabilities.json b/apps/desktop/src-tauri/gen/schemas/capabilities.json similarity index 100% rename from packages/desktop/src-tauri/gen/schemas/capabilities.json rename to apps/desktop/src-tauri/gen/schemas/capabilities.json diff --git a/packages/desktop/src-tauri/gen/schemas/desktop-schema.json b/apps/desktop/src-tauri/gen/schemas/desktop-schema.json similarity index 100% rename from packages/desktop/src-tauri/gen/schemas/desktop-schema.json rename to apps/desktop/src-tauri/gen/schemas/desktop-schema.json diff --git a/packages/desktop/src-tauri/gen/schemas/macOS-schema.json b/apps/desktop/src-tauri/gen/schemas/macOS-schema.json similarity index 100% rename from packages/desktop/src-tauri/gen/schemas/macOS-schema.json rename to apps/desktop/src-tauri/gen/schemas/macOS-schema.json diff --git a/packages/desktop/src-tauri/icons/128x128.png b/apps/desktop/src-tauri/icons/128x128.png similarity index 100% rename from packages/desktop/src-tauri/icons/128x128.png rename to apps/desktop/src-tauri/icons/128x128.png diff --git a/packages/desktop/src-tauri/icons/128x128@2x.png b/apps/desktop/src-tauri/icons/128x128@2x.png similarity index 100% rename from packages/desktop/src-tauri/icons/128x128@2x.png rename to apps/desktop/src-tauri/icons/128x128@2x.png diff --git a/packages/desktop/src-tauri/icons/32x32.png b/apps/desktop/src-tauri/icons/32x32.png similarity index 100% rename from packages/desktop/src-tauri/icons/32x32.png rename to apps/desktop/src-tauri/icons/32x32.png diff --git a/packages/desktop/src-tauri/icons/android/mipmap-anydpi-v26/ic_launcher.xml b/apps/desktop/src-tauri/icons/android/mipmap-anydpi-v26/ic_launcher.xml similarity index 100% rename from packages/desktop/src-tauri/icons/android/mipmap-anydpi-v26/ic_launcher.xml rename to apps/desktop/src-tauri/icons/android/mipmap-anydpi-v26/ic_launcher.xml diff --git a/packages/desktop/src-tauri/icons/android/values/ic_launcher_background.xml b/apps/desktop/src-tauri/icons/android/values/ic_launcher_background.xml similarity index 100% rename from packages/desktop/src-tauri/icons/android/values/ic_launcher_background.xml rename to apps/desktop/src-tauri/icons/android/values/ic_launcher_background.xml diff --git a/packages/desktop/src-tauri/icons/dev/128x128.png b/apps/desktop/src-tauri/icons/dev/128x128.png similarity index 100% rename from packages/desktop/src-tauri/icons/dev/128x128.png rename to apps/desktop/src-tauri/icons/dev/128x128.png diff --git a/packages/desktop/src-tauri/icons/dev/128x128@2x.png b/apps/desktop/src-tauri/icons/dev/128x128@2x.png similarity index 100% rename from packages/desktop/src-tauri/icons/dev/128x128@2x.png rename to apps/desktop/src-tauri/icons/dev/128x128@2x.png diff --git a/packages/desktop/src-tauri/icons/dev/32x32.png b/apps/desktop/src-tauri/icons/dev/32x32.png similarity index 100% rename from packages/desktop/src-tauri/icons/dev/32x32.png rename to apps/desktop/src-tauri/icons/dev/32x32.png diff --git a/packages/desktop/src-tauri/icons/dev/icon.png b/apps/desktop/src-tauri/icons/dev/icon.png similarity index 100% rename from packages/desktop/src-tauri/icons/dev/icon.png rename to apps/desktop/src-tauri/icons/dev/icon.png diff --git a/packages/desktop/src-tauri/icons/icon-dev.icns b/apps/desktop/src-tauri/icons/icon-dev.icns similarity index 100% rename from packages/desktop/src-tauri/icons/icon-dev.icns rename to apps/desktop/src-tauri/icons/icon-dev.icns diff --git a/packages/desktop/src-tauri/icons/icon.icns b/apps/desktop/src-tauri/icons/icon.icns similarity index 100% rename from packages/desktop/src-tauri/icons/icon.icns rename to apps/desktop/src-tauri/icons/icon.icns diff --git a/packages/desktop/src-tauri/icons/icon.ico b/apps/desktop/src-tauri/icons/icon.ico similarity index 100% rename from packages/desktop/src-tauri/icons/icon.ico rename to apps/desktop/src-tauri/icons/icon.ico diff --git a/packages/desktop/src-tauri/icons/icon.png b/apps/desktop/src-tauri/icons/icon.png similarity index 100% rename from packages/desktop/src-tauri/icons/icon.png rename to apps/desktop/src-tauri/icons/icon.png diff --git a/packages/desktop/src-tauri/src/bun_env.rs b/apps/desktop/src-tauri/src/bun_env.rs similarity index 100% rename from packages/desktop/src-tauri/src/bun_env.rs rename to apps/desktop/src-tauri/src/bun_env.rs diff --git a/packages/desktop/src-tauri/src/commands/command_files.rs b/apps/desktop/src-tauri/src/commands/command_files.rs similarity index 100% rename from packages/desktop/src-tauri/src/commands/command_files.rs rename to apps/desktop/src-tauri/src/commands/command_files.rs diff --git a/packages/desktop/src-tauri/src/commands/config.rs b/apps/desktop/src-tauri/src/commands/config.rs similarity index 100% rename from packages/desktop/src-tauri/src/commands/config.rs rename to apps/desktop/src-tauri/src/commands/config.rs diff --git a/packages/desktop/src-tauri/src/commands/engine.rs b/apps/desktop/src-tauri/src/commands/engine.rs similarity index 100% rename from packages/desktop/src-tauri/src/commands/engine.rs rename to apps/desktop/src-tauri/src/commands/engine.rs diff --git a/packages/desktop/src-tauri/src/commands/misc.rs b/apps/desktop/src-tauri/src/commands/misc.rs similarity index 100% rename from packages/desktop/src-tauri/src/commands/misc.rs rename to apps/desktop/src-tauri/src/commands/misc.rs diff --git a/packages/desktop/src-tauri/src/commands/mod.rs b/apps/desktop/src-tauri/src/commands/mod.rs similarity index 100% rename from packages/desktop/src-tauri/src/commands/mod.rs rename to apps/desktop/src-tauri/src/commands/mod.rs diff --git a/packages/desktop/src-tauri/src/commands/opencode_router.rs b/apps/desktop/src-tauri/src/commands/opencode_router.rs similarity index 100% rename from packages/desktop/src-tauri/src/commands/opencode_router.rs rename to apps/desktop/src-tauri/src/commands/opencode_router.rs diff --git a/packages/desktop/src-tauri/src/commands/openwork_server.rs b/apps/desktop/src-tauri/src/commands/openwork_server.rs similarity index 100% rename from packages/desktop/src-tauri/src/commands/openwork_server.rs rename to apps/desktop/src-tauri/src/commands/openwork_server.rs diff --git a/packages/desktop/src-tauri/src/commands/opkg.rs b/apps/desktop/src-tauri/src/commands/opkg.rs similarity index 100% rename from packages/desktop/src-tauri/src/commands/opkg.rs rename to apps/desktop/src-tauri/src/commands/opkg.rs diff --git a/packages/desktop/src-tauri/src/commands/orchestrator.rs b/apps/desktop/src-tauri/src/commands/orchestrator.rs similarity index 100% rename from packages/desktop/src-tauri/src/commands/orchestrator.rs rename to apps/desktop/src-tauri/src/commands/orchestrator.rs diff --git a/packages/desktop/src-tauri/src/commands/scheduler.rs b/apps/desktop/src-tauri/src/commands/scheduler.rs similarity index 100% rename from packages/desktop/src-tauri/src/commands/scheduler.rs rename to apps/desktop/src-tauri/src/commands/scheduler.rs diff --git a/packages/desktop/src-tauri/src/commands/skills.rs b/apps/desktop/src-tauri/src/commands/skills.rs similarity index 100% rename from packages/desktop/src-tauri/src/commands/skills.rs rename to apps/desktop/src-tauri/src/commands/skills.rs diff --git a/packages/desktop/src-tauri/src/commands/updater.rs b/apps/desktop/src-tauri/src/commands/updater.rs similarity index 100% rename from packages/desktop/src-tauri/src/commands/updater.rs rename to apps/desktop/src-tauri/src/commands/updater.rs diff --git a/packages/desktop/src-tauri/src/commands/window.rs b/apps/desktop/src-tauri/src/commands/window.rs similarity index 100% rename from packages/desktop/src-tauri/src/commands/window.rs rename to apps/desktop/src-tauri/src/commands/window.rs diff --git a/packages/desktop/src-tauri/src/commands/workspace.rs b/apps/desktop/src-tauri/src/commands/workspace.rs similarity index 100% rename from packages/desktop/src-tauri/src/commands/workspace.rs rename to apps/desktop/src-tauri/src/commands/workspace.rs diff --git a/packages/desktop/src-tauri/src/config.rs b/apps/desktop/src-tauri/src/config.rs similarity index 100% rename from packages/desktop/src-tauri/src/config.rs rename to apps/desktop/src-tauri/src/config.rs diff --git a/packages/desktop/src-tauri/src/engine/doctor.rs b/apps/desktop/src-tauri/src/engine/doctor.rs similarity index 100% rename from packages/desktop/src-tauri/src/engine/doctor.rs rename to apps/desktop/src-tauri/src/engine/doctor.rs diff --git a/packages/desktop/src-tauri/src/engine/manager.rs b/apps/desktop/src-tauri/src/engine/manager.rs similarity index 100% rename from packages/desktop/src-tauri/src/engine/manager.rs rename to apps/desktop/src-tauri/src/engine/manager.rs diff --git a/packages/desktop/src-tauri/src/engine/mod.rs b/apps/desktop/src-tauri/src/engine/mod.rs similarity index 100% rename from packages/desktop/src-tauri/src/engine/mod.rs rename to apps/desktop/src-tauri/src/engine/mod.rs diff --git a/packages/desktop/src-tauri/src/engine/paths.rs b/apps/desktop/src-tauri/src/engine/paths.rs similarity index 100% rename from packages/desktop/src-tauri/src/engine/paths.rs rename to apps/desktop/src-tauri/src/engine/paths.rs diff --git a/packages/desktop/src-tauri/src/engine/spawn.rs b/apps/desktop/src-tauri/src/engine/spawn.rs similarity index 100% rename from packages/desktop/src-tauri/src/engine/spawn.rs rename to apps/desktop/src-tauri/src/engine/spawn.rs diff --git a/packages/desktop/src-tauri/src/fs.rs b/apps/desktop/src-tauri/src/fs.rs similarity index 100% rename from packages/desktop/src-tauri/src/fs.rs rename to apps/desktop/src-tauri/src/fs.rs diff --git a/packages/desktop/src-tauri/src/lib.rs b/apps/desktop/src-tauri/src/lib.rs similarity index 100% rename from packages/desktop/src-tauri/src/lib.rs rename to apps/desktop/src-tauri/src/lib.rs diff --git a/packages/desktop/src-tauri/src/main.rs b/apps/desktop/src-tauri/src/main.rs similarity index 100% rename from packages/desktop/src-tauri/src/main.rs rename to apps/desktop/src-tauri/src/main.rs diff --git a/packages/desktop/src-tauri/src/opencode_router/manager.rs b/apps/desktop/src-tauri/src/opencode_router/manager.rs similarity index 100% rename from packages/desktop/src-tauri/src/opencode_router/manager.rs rename to apps/desktop/src-tauri/src/opencode_router/manager.rs diff --git a/packages/desktop/src-tauri/src/opencode_router/mod.rs b/apps/desktop/src-tauri/src/opencode_router/mod.rs similarity index 100% rename from packages/desktop/src-tauri/src/opencode_router/mod.rs rename to apps/desktop/src-tauri/src/opencode_router/mod.rs diff --git a/packages/desktop/src-tauri/src/opencode_router/spawn.rs b/apps/desktop/src-tauri/src/opencode_router/spawn.rs similarity index 100% rename from packages/desktop/src-tauri/src/opencode_router/spawn.rs rename to apps/desktop/src-tauri/src/opencode_router/spawn.rs diff --git a/packages/desktop/src-tauri/src/openwork_server/manager.rs b/apps/desktop/src-tauri/src/openwork_server/manager.rs similarity index 100% rename from packages/desktop/src-tauri/src/openwork_server/manager.rs rename to apps/desktop/src-tauri/src/openwork_server/manager.rs diff --git a/packages/desktop/src-tauri/src/openwork_server/mod.rs b/apps/desktop/src-tauri/src/openwork_server/mod.rs similarity index 100% rename from packages/desktop/src-tauri/src/openwork_server/mod.rs rename to apps/desktop/src-tauri/src/openwork_server/mod.rs diff --git a/packages/desktop/src-tauri/src/openwork_server/spawn.rs b/apps/desktop/src-tauri/src/openwork_server/spawn.rs similarity index 100% rename from packages/desktop/src-tauri/src/openwork_server/spawn.rs rename to apps/desktop/src-tauri/src/openwork_server/spawn.rs diff --git a/packages/desktop/src-tauri/src/opkg.rs b/apps/desktop/src-tauri/src/opkg.rs similarity index 100% rename from packages/desktop/src-tauri/src/opkg.rs rename to apps/desktop/src-tauri/src/opkg.rs diff --git a/packages/desktop/src-tauri/src/orchestrator/manager.rs b/apps/desktop/src-tauri/src/orchestrator/manager.rs similarity index 100% rename from packages/desktop/src-tauri/src/orchestrator/manager.rs rename to apps/desktop/src-tauri/src/orchestrator/manager.rs diff --git a/packages/desktop/src-tauri/src/orchestrator/mod.rs b/apps/desktop/src-tauri/src/orchestrator/mod.rs similarity index 100% rename from packages/desktop/src-tauri/src/orchestrator/mod.rs rename to apps/desktop/src-tauri/src/orchestrator/mod.rs diff --git a/packages/desktop/src-tauri/src/paths.rs b/apps/desktop/src-tauri/src/paths.rs similarity index 100% rename from packages/desktop/src-tauri/src/paths.rs rename to apps/desktop/src-tauri/src/paths.rs diff --git a/packages/desktop/src-tauri/src/platform/mod.rs b/apps/desktop/src-tauri/src/platform/mod.rs similarity index 100% rename from packages/desktop/src-tauri/src/platform/mod.rs rename to apps/desktop/src-tauri/src/platform/mod.rs diff --git a/packages/desktop/src-tauri/src/platform/unix.rs b/apps/desktop/src-tauri/src/platform/unix.rs similarity index 100% rename from packages/desktop/src-tauri/src/platform/unix.rs rename to apps/desktop/src-tauri/src/platform/unix.rs diff --git a/packages/desktop/src-tauri/src/platform/windows.rs b/apps/desktop/src-tauri/src/platform/windows.rs similarity index 100% rename from packages/desktop/src-tauri/src/platform/windows.rs rename to apps/desktop/src-tauri/src/platform/windows.rs diff --git a/packages/desktop/src-tauri/src/types.rs b/apps/desktop/src-tauri/src/types.rs similarity index 100% rename from packages/desktop/src-tauri/src/types.rs rename to apps/desktop/src-tauri/src/types.rs diff --git a/packages/desktop/src-tauri/src/updater.rs b/apps/desktop/src-tauri/src/updater.rs similarity index 100% rename from packages/desktop/src-tauri/src/updater.rs rename to apps/desktop/src-tauri/src/updater.rs diff --git a/packages/desktop/src-tauri/src/utils.rs b/apps/desktop/src-tauri/src/utils.rs similarity index 100% rename from packages/desktop/src-tauri/src/utils.rs rename to apps/desktop/src-tauri/src/utils.rs diff --git a/packages/desktop/src-tauri/src/workspace/commands.rs b/apps/desktop/src-tauri/src/workspace/commands.rs similarity index 100% rename from packages/desktop/src-tauri/src/workspace/commands.rs rename to apps/desktop/src-tauri/src/workspace/commands.rs diff --git a/packages/desktop/src-tauri/src/workspace/files.rs b/apps/desktop/src-tauri/src/workspace/files.rs similarity index 100% rename from packages/desktop/src-tauri/src/workspace/files.rs rename to apps/desktop/src-tauri/src/workspace/files.rs diff --git a/packages/desktop/src-tauri/src/workspace/mod.rs b/apps/desktop/src-tauri/src/workspace/mod.rs similarity index 100% rename from packages/desktop/src-tauri/src/workspace/mod.rs rename to apps/desktop/src-tauri/src/workspace/mod.rs diff --git a/packages/desktop/src-tauri/src/workspace/state.rs b/apps/desktop/src-tauri/src/workspace/state.rs similarity index 100% rename from packages/desktop/src-tauri/src/workspace/state.rs rename to apps/desktop/src-tauri/src/workspace/state.rs diff --git a/packages/desktop/src-tauri/src/workspace/watch.rs b/apps/desktop/src-tauri/src/workspace/watch.rs similarity index 100% rename from packages/desktop/src-tauri/src/workspace/watch.rs rename to apps/desktop/src-tauri/src/workspace/watch.rs diff --git a/packages/desktop/src-tauri/tauri.conf.json b/apps/desktop/src-tauri/tauri.conf.json similarity index 92% rename from packages/desktop/src-tauri/tauri.conf.json rename to apps/desktop/src-tauri/tauri.conf.json index bbef7bdc..27dda037 100644 --- a/packages/desktop/src-tauri/tauri.conf.json +++ b/apps/desktop/src-tauri/tauri.conf.json @@ -5,7 +5,7 @@ "identifier": "com.differentai.openwork", "build": { "beforeDevCommand": "node ./scripts/tauri-before-dev.mjs", - "beforeBuildCommand": "pnpm -C ../.. --filter @different-ai/openwork run prepare:sidecar && pnpm -w build:ui", + "beforeBuildCommand": "pnpm -C ../.. --filter @openwork/desktop run prepare:sidecar && pnpm -w build:ui", "devUrl": "http://localhost:5173", "frontendDist": "../../app/dist" }, diff --git a/packages/desktop/src-tauri/tauri.dev.conf.json b/apps/desktop/src-tauri/tauri.dev.conf.json similarity index 100% rename from packages/desktop/src-tauri/tauri.dev.conf.json rename to apps/desktop/src-tauri/tauri.dev.conf.json diff --git a/packages/opencode-router/.env.example b/apps/opencode-router/.env.example similarity index 100% rename from packages/opencode-router/.env.example rename to apps/opencode-router/.env.example diff --git a/packages/opencode-router/README.md b/apps/opencode-router/README.md similarity index 91% rename from packages/opencode-router/README.md rename to apps/opencode-router/README.md index 1d36e654..149e3d0d 100644 --- a/packages/opencode-router/README.md +++ b/apps/opencode-router/README.md @@ -9,7 +9,7 @@ Runtime requirement: Bun 1.3+ (`bun --version`). One-command install (recommended): ```bash -curl -fsSL https://raw.githubusercontent.com/different-ai/openwork/dev/packages/opencode-router/install.sh | bash +curl -fsSL https://raw.githubusercontent.com/different-ai/openwork/dev/apps/opencode-router/install.sh | bash ``` Install from npm: @@ -29,10 +29,10 @@ Then configure identities and start. 1) One-command setup (installs deps, builds, creates `.env` if missing): ```bash -pnpm -C packages/opencode-router setup +pnpm -C apps/opencode-router setup ``` -2) (Optional) Fill in `packages/opencode-router/.env` (see `.env.example`). +2) (Optional) Fill in `apps/opencode-router/.env` (see `.env.example`). Required: - `OPENCODE_URL` @@ -167,7 +167,7 @@ opencode-router send --channel slack --identity default --to D123 --file ./repor ## Defaults - SQLite at `~/.openwork/opencode-router/opencode-router.db` unless overridden. -- Config stored at `~/.openwork/opencode-router/opencode-router.json` (created by `opencode-router` or `pnpm -C packages/opencode-router setup`). +- Config stored at `~/.openwork/opencode-router/opencode-router.json` (created by `opencode-router` or `pnpm -C apps/opencode-router setup`). - Group chats are disabled unless `GROUPS_ENABLED=true`. ## Tests @@ -176,13 +176,13 @@ opencode-router send --channel slack --identity default --to D123 --file ./repor ```bash opencode serve --port 4096 --hostname 127.0.0.1 -pnpm -C packages/opencode-router test:smoke +pnpm -C apps/opencode-router test:smoke ``` Other test suites: ```bash -pnpm -C packages/opencode-router test:unit -pnpm -C packages/opencode-router test:cli -pnpm -C packages/opencode-router test:npx +pnpm -C apps/opencode-router test:unit +pnpm -C apps/opencode-router test:cli +pnpm -C apps/opencode-router test:npx ``` diff --git a/apps/opencode-router/bin/opencode-router.mjs b/apps/opencode-router/bin/opencode-router.mjs new file mode 100755 index 00000000..6b6f9d11 --- /dev/null +++ b/apps/opencode-router/bin/opencode-router.mjs @@ -0,0 +1,43 @@ +#!/usr/bin/env node + +import { spawnSync } from "node:child_process"; +import { basename } from "node:path"; +import { existsSync } from "node:fs"; +import { fileURLToPath } from "node:url"; + +const packageRoot = fileURLToPath(new URL("..", import.meta.url)); +const args = process.argv.slice(2); + +const compiledBinaryName = process.platform === "win32" ? "opencode-router.exe" : "opencode-router"; +const compiledBinary = fileURLToPath(new URL(`./dist/bin/${compiledBinaryName}`, `${new URL("../", import.meta.url)}`)); +const builtCli = fileURLToPath(new URL("./dist/cli.js", `${new URL("../", import.meta.url)}`)); +const sourceCli = fileURLToPath(new URL("./src/cli.ts", `${new URL("../", import.meta.url)}`)); + +function run(command, commandArgs) { + const result = spawnSync(command, commandArgs, { stdio: "inherit" }); + if (result.error) { + if (result.error.code === "ENOENT") { + console.error(`Missing runtime dependency: ${command}`); + process.exit(1); + } + throw result.error; + } + process.exit(result.status ?? 1); +} + +if (existsSync(compiledBinary)) { + run(compiledBinary, args); +} + +if (existsSync(builtCli)) { + run("bun", [builtCli, ...args]); +} + +if (existsSync(sourceCli)) { + run("bun", [sourceCli, ...args]); +} + +console.error( + `Unable to find an opencode-router entrypoint in ${basename(packageRoot)}. Build the package or run it from a source checkout with Bun available.`, +); +process.exit(1); diff --git a/packages/opencode-router/install.sh b/apps/opencode-router/install.sh similarity index 89% rename from packages/opencode-router/install.sh rename to apps/opencode-router/install.sh index 826ea1f6..7e8db8ae 100644 --- a/packages/opencode-router/install.sh +++ b/apps/opencode-router/install.sh @@ -21,7 +21,7 @@ Environment variables: OPENCODE_ROUTER_INSTALL_METHOD Install method: npm|git (default: npm) Example: - OPENCODE_ROUTER_INSTALL_DIR=~/opencode-router curl -fsSL https://raw.githubusercontent.com/different-ai/openwork/dev/packages/opencode-router/install.sh | bash + OPENCODE_ROUTER_INSTALL_DIR=~/opencode-router curl -fsSL https://raw.githubusercontent.com/different-ai/openwork/dev/apps/opencode-router/install.sh | bash EOF } @@ -77,7 +77,7 @@ else fi fi - if [[ ! -d "$OPENCODE_ROUTER_INSTALL_DIR/packages/opencode-router" ]]; then + if [[ ! -d "$OPENCODE_ROUTER_INSTALL_DIR/apps/opencode-router" ]]; then echo "opencode-router package not found on ref '$OPENCODE_ROUTER_REF'. Trying dev/main..." >&2 git -C "$OPENCODE_ROUTER_INSTALL_DIR" fetch origin --prune if git -C "$OPENCODE_ROUTER_INSTALL_DIR" show-ref --verify --quiet refs/remotes/origin/dev; then @@ -87,7 +87,7 @@ else fi fi - if [[ ! -d "$OPENCODE_ROUTER_INSTALL_DIR/packages/opencode-router" ]]; then + if [[ ! -d "$OPENCODE_ROUTER_INSTALL_DIR/apps/opencode-router" ]]; then echo "opencode-router package not found after checkout. Aborting." >&2 exit 1 fi @@ -96,10 +96,10 @@ else pnpm -C "$OPENCODE_ROUTER_INSTALL_DIR" install echo "Building opencode-router..." - pnpm -C "$OPENCODE_ROUTER_INSTALL_DIR/packages/opencode-router" build + pnpm -C "$OPENCODE_ROUTER_INSTALL_DIR/apps/opencode-router" build - ENV_PATH="$OPENCODE_ROUTER_INSTALL_DIR/packages/opencode-router/.env" - ENV_EXAMPLE="$OPENCODE_ROUTER_INSTALL_DIR/packages/opencode-router/.env.example" + ENV_PATH="$OPENCODE_ROUTER_INSTALL_DIR/apps/opencode-router/.env" + ENV_EXAMPLE="$OPENCODE_ROUTER_INSTALL_DIR/apps/opencode-router/.env.example" if [[ ! -f "$ENV_PATH" ]]; then if [[ -f "$ENV_EXAMPLE" ]]; then cp "$ENV_EXAMPLE" "$ENV_PATH" @@ -120,7 +120,7 @@ EOF cat < "$OPENCODE_ROUTER_BIN_DIR/opencode-router" #!/usr/bin/env bash set -euo pipefail -bun "$OPENCODE_ROUTER_INSTALL_DIR/packages/opencode-router/dist/cli.js" "$@" +bun "$OPENCODE_ROUTER_INSTALL_DIR/apps/opencode-router/dist/cli.js" "$@" EOF chmod 755 "$OPENCODE_ROUTER_BIN_DIR/opencode-router" CUSTOM_SHIM_CREATED=true diff --git a/packages/opencode-router/package.json b/apps/opencode-router/package.json similarity index 94% rename from packages/opencode-router/package.json rename to apps/opencode-router/package.json index c31cd49e..b0c51443 100644 --- a/packages/opencode-router/package.json +++ b/apps/opencode-router/package.json @@ -5,13 +5,13 @@ "private": false, "type": "module", "bin": { - "opencode-router": "dist/cli.js" + "opencode-router": "bin/opencode-router.mjs" }, "license": "MIT", "repository": { "type": "git", "url": "git+https://github.com/different-ai/openwork.git", - "directory": "packages/opencode-router" + "directory": "apps/opencode-router" }, "keywords": [ "opencode", @@ -22,6 +22,7 @@ "bot" ], "files": [ + "bin", "dist", "README.md", ".env.example", diff --git a/packages/opencode-router/script/build.ts b/apps/opencode-router/script/build.ts similarity index 100% rename from packages/opencode-router/script/build.ts rename to apps/opencode-router/script/build.ts diff --git a/packages/opencode-router/scripts/setup.mjs b/apps/opencode-router/scripts/setup.mjs similarity index 100% rename from packages/opencode-router/scripts/setup.mjs rename to apps/opencode-router/scripts/setup.mjs diff --git a/packages/opencode-router/scripts/smoke.mjs b/apps/opencode-router/scripts/smoke.mjs similarity index 100% rename from packages/opencode-router/scripts/smoke.mjs rename to apps/opencode-router/scripts/smoke.mjs diff --git a/packages/opencode-router/scripts/test-cli.mjs b/apps/opencode-router/scripts/test-cli.mjs similarity index 100% rename from packages/opencode-router/scripts/test-cli.mjs rename to apps/opencode-router/scripts/test-cli.mjs diff --git a/packages/opencode-router/scripts/test-npx.mjs b/apps/opencode-router/scripts/test-npx.mjs similarity index 100% rename from packages/opencode-router/scripts/test-npx.mjs rename to apps/opencode-router/scripts/test-npx.mjs diff --git a/packages/opencode-router/src/bridge.ts b/apps/opencode-router/src/bridge.ts similarity index 100% rename from packages/opencode-router/src/bridge.ts rename to apps/opencode-router/src/bridge.ts diff --git a/packages/opencode-router/src/cli.ts b/apps/opencode-router/src/cli.ts similarity index 100% rename from packages/opencode-router/src/cli.ts rename to apps/opencode-router/src/cli.ts diff --git a/packages/opencode-router/src/config.ts b/apps/opencode-router/src/config.ts similarity index 100% rename from packages/opencode-router/src/config.ts rename to apps/opencode-router/src/config.ts diff --git a/packages/opencode-router/src/db.ts b/apps/opencode-router/src/db.ts similarity index 100% rename from packages/opencode-router/src/db.ts rename to apps/opencode-router/src/db.ts diff --git a/packages/opencode-router/src/delivery.ts b/apps/opencode-router/src/delivery.ts similarity index 100% rename from packages/opencode-router/src/delivery.ts rename to apps/opencode-router/src/delivery.ts diff --git a/packages/opencode-router/src/events.ts b/apps/opencode-router/src/events.ts similarity index 100% rename from packages/opencode-router/src/events.ts rename to apps/opencode-router/src/events.ts diff --git a/packages/opencode-router/src/health.ts b/apps/opencode-router/src/health.ts similarity index 100% rename from packages/opencode-router/src/health.ts rename to apps/opencode-router/src/health.ts diff --git a/packages/opencode-router/src/logger.ts b/apps/opencode-router/src/logger.ts similarity index 100% rename from packages/opencode-router/src/logger.ts rename to apps/opencode-router/src/logger.ts diff --git a/packages/opencode-router/src/media-store.ts b/apps/opencode-router/src/media-store.ts similarity index 100% rename from packages/opencode-router/src/media-store.ts rename to apps/opencode-router/src/media-store.ts diff --git a/packages/opencode-router/src/media.ts b/apps/opencode-router/src/media.ts similarity index 100% rename from packages/opencode-router/src/media.ts rename to apps/opencode-router/src/media.ts diff --git a/packages/opencode-router/src/opencode.ts b/apps/opencode-router/src/opencode.ts similarity index 100% rename from packages/opencode-router/src/opencode.ts rename to apps/opencode-router/src/opencode.ts diff --git a/packages/opencode-router/src/slack.ts b/apps/opencode-router/src/slack.ts similarity index 100% rename from packages/opencode-router/src/slack.ts rename to apps/opencode-router/src/slack.ts diff --git a/packages/opencode-router/src/telegram.ts b/apps/opencode-router/src/telegram.ts similarity index 100% rename from packages/opencode-router/src/telegram.ts rename to apps/opencode-router/src/telegram.ts diff --git a/packages/opencode-router/src/text.ts b/apps/opencode-router/src/text.ts similarity index 100% rename from packages/opencode-router/src/text.ts rename to apps/opencode-router/src/text.ts diff --git a/packages/opencode-router/test/bridge-e2e.test.js b/apps/opencode-router/test/bridge-e2e.test.js similarity index 100% rename from packages/opencode-router/test/bridge-e2e.test.js rename to apps/opencode-router/test/bridge-e2e.test.js diff --git a/packages/opencode-router/test/bridge-multiworkspace.test.js b/apps/opencode-router/test/bridge-multiworkspace.test.js similarity index 100% rename from packages/opencode-router/test/bridge-multiworkspace.test.js rename to apps/opencode-router/test/bridge-multiworkspace.test.js diff --git a/packages/opencode-router/test/db.test.js b/apps/opencode-router/test/db.test.js similarity index 100% rename from packages/opencode-router/test/db.test.js rename to apps/opencode-router/test/db.test.js diff --git a/packages/opencode-router/test/health-send.test.js b/apps/opencode-router/test/health-send.test.js similarity index 100% rename from packages/opencode-router/test/health-send.test.js rename to apps/opencode-router/test/health-send.test.js diff --git a/packages/opencode-router/test/slack.test.js b/apps/opencode-router/test/slack.test.js similarity index 100% rename from packages/opencode-router/test/slack.test.js rename to apps/opencode-router/test/slack.test.js diff --git a/packages/opencode-router/test/telegram.test.js b/apps/opencode-router/test/telegram.test.js similarity index 100% rename from packages/opencode-router/test/telegram.test.js rename to apps/opencode-router/test/telegram.test.js diff --git a/packages/opencode-router/tsconfig.json b/apps/opencode-router/tsconfig.json similarity index 100% rename from packages/opencode-router/tsconfig.json rename to apps/opencode-router/tsconfig.json diff --git a/packages/orchestrator/README.md b/apps/orchestrator/README.md similarity index 98% rename from packages/orchestrator/README.md rename to apps/orchestrator/README.md index f51cd18f..758dc483 100644 --- a/packages/orchestrator/README.md +++ b/apps/orchestrator/README.md @@ -219,6 +219,6 @@ Point to source CLIs for fast iteration: openwork start \ --workspace /path/to/workspace \ --allow-external \ - --openwork-server-bin packages/server/src/cli.ts \ - --opencode-router-bin ../opencode-router/dist/cli.js + --openwork-server-bin apps/server/src/cli.ts \ + --opencode-router-bin apps/opencode-router/dist/cli.js ``` diff --git a/packages/orchestrator/bin/openwork b/apps/orchestrator/bin/openwork similarity index 100% rename from packages/orchestrator/bin/openwork rename to apps/orchestrator/bin/openwork diff --git a/packages/orchestrator/bunfig.toml b/apps/orchestrator/bunfig.toml similarity index 100% rename from packages/orchestrator/bunfig.toml rename to apps/orchestrator/bunfig.toml diff --git a/packages/orchestrator/package.json b/apps/orchestrator/package.json similarity index 91% rename from packages/orchestrator/package.json rename to apps/orchestrator/package.json index 7efc08fe..313bb2fa 100644 --- a/packages/orchestrator/package.json +++ b/apps/orchestrator/package.json @@ -15,7 +15,7 @@ "typecheck": "tsc -p tsconfig.typecheck.json", "test:router": "pnpm build && node scripts/router.mjs", "test:files": "pnpm build && node scripts/files-session.mjs", - "prepublishOnly": "node -e \"console.error('openwork-orchestrator is published via packages/orchestrator/scripts/publish-npm.mjs (meta + platform packages)'); process.exit(1);\"" + "prepublishOnly": "node -e \"console.error('openwork-orchestrator is published via apps/orchestrator/scripts/publish-npm.mjs (meta + platform packages)'); process.exit(1);\"" }, "files": [ "dist", @@ -27,9 +27,9 @@ "repository": { "type": "git", "url": "git+https://github.com/different-ai/openwork.git", - "directory": "packages/orchestrator" + "directory": "apps/orchestrator" }, - "homepage": "https://github.com/different-ai/openwork/tree/dev/packages/orchestrator", + "homepage": "https://github.com/different-ai/openwork/tree/dev/apps/orchestrator", "bugs": { "url": "https://github.com/different-ai/openwork/issues" }, @@ -49,7 +49,7 @@ "@opentui/core": "0.1.77", "@opentui/solid": "0.1.77", "opencode-router": "0.11.170", - "openwork-server": "0.11.170", + "@openwork/server": "0.11.170", "solid-js": "1.9.9" }, "devDependencies": { diff --git a/packages/orchestrator/script/build.ts b/apps/orchestrator/script/build.ts similarity index 100% rename from packages/orchestrator/script/build.ts rename to apps/orchestrator/script/build.ts diff --git a/packages/orchestrator/scripts/build-bin.ts b/apps/orchestrator/scripts/build-bin.ts similarity index 91% rename from packages/orchestrator/scripts/build-bin.ts rename to apps/orchestrator/scripts/build-bin.ts index 9bc5fd3f..798ccade 100644 --- a/packages/orchestrator/scripts/build-bin.ts +++ b/apps/orchestrator/scripts/build-bin.ts @@ -14,9 +14,9 @@ const repoRoot = resolve(root, "..", ".."); const targetDir = resolve(root, "dist"); const serverBin = resolve(root, "..", "server", "dist", "bin", "openwork-server"); -const routerRepo = process.env.OPENCODE_ROUTER_DIR?.trim() || resolve(repoRoot, "packages", "opencode-router"); +const routerRepo = process.env.OPENCODE_ROUTER_DIR?.trim() || resolve(repoRoot, "apps", "opencode-router"); if (!existsSync(resolve(routerRepo, "package.json"))) { - throw new Error("OpenCodeRouter package not found. Expected packages/opencode-router in the monorepo."); + throw new Error("OpenCodeRouter package not found. Expected apps/opencode-router in the monorepo."); } const routerBin = resolve(routerRepo, "dist", "bin", "opencode-router"); diff --git a/packages/orchestrator/scripts/build-opencode-router.mjs b/apps/orchestrator/scripts/build-opencode-router.mjs similarity index 85% rename from packages/orchestrator/scripts/build-opencode-router.mjs rename to apps/orchestrator/scripts/build-opencode-router.mjs index 589143ae..bb09baf0 100644 --- a/packages/orchestrator/scripts/build-opencode-router.mjs +++ b/apps/orchestrator/scripts/build-opencode-router.mjs @@ -8,7 +8,7 @@ const repoRoot = resolve(root, "..", ".."); function resolveOpencodeRouterRepo() { const envPath = process.env.OPENCODE_ROUTER_DIR?.trim(); - const candidates = [envPath, resolve(repoRoot, "packages", "opencode-router")].filter(Boolean); + const candidates = [envPath, resolve(repoRoot, "apps", "opencode-router")].filter(Boolean); for (const candidate of candidates) { if (candidate && existsSync(resolve(candidate, "package.json"))) { @@ -16,7 +16,7 @@ function resolveOpencodeRouterRepo() { } } - throw new Error("OpenCodeRouter package not found. Expected packages/opencode-router in the monorepo."); + throw new Error("OpenCodeRouter package not found. Expected apps/opencode-router in the monorepo."); } function run(command, args, cwd) { diff --git a/packages/orchestrator/scripts/build-sidecars.mjs b/apps/orchestrator/scripts/build-sidecars.mjs similarity index 81% rename from packages/orchestrator/scripts/build-sidecars.mjs rename to apps/orchestrator/scripts/build-sidecars.mjs index a5cdcee4..a46fed2f 100644 --- a/packages/orchestrator/scripts/build-sidecars.mjs +++ b/apps/orchestrator/scripts/build-sidecars.mjs @@ -11,7 +11,7 @@ const outdir = resolve(root, "dist", "sidecars"); const orchestratorPkg = JSON.parse(readFileSync(resolve(root, "package.json"), "utf8")); const orchestratorVersion = String(orchestratorPkg.version ?? "").trim(); if (!orchestratorVersion) { - throw new Error("openwork-orchestrator version missing in packages/orchestrator/package.json"); + throw new Error("openwork-orchestrator version missing in apps/orchestrator/package.json"); } const sourceDateEpoch = process.env.SOURCE_DATE_EPOCH @@ -21,18 +21,18 @@ const generatedAt = Number.isFinite(sourceDateEpoch) ? new Date(sourceDateEpoch * 1000).toISOString() : new Date().toISOString(); -const serverPkg = JSON.parse(readFileSync(resolve(repoRoot, "packages", "server", "package.json"), "utf8")); +const serverPkg = JSON.parse(readFileSync(resolve(repoRoot, "apps", "server", "package.json"), "utf8")); const serverVersion = String(serverPkg.version ?? "").trim(); if (!serverVersion) { - throw new Error("openwork-server version missing in packages/server/package.json"); + throw new Error("openwork-server version missing in apps/server/package.json"); } const routerPkg = JSON.parse( - readFileSync(resolve(repoRoot, "packages", "opencode-router", "package.json"), "utf8"), + readFileSync(resolve(repoRoot, "apps", "opencode-router", "package.json"), "utf8"), ); const routerVersion = String(routerPkg.version ?? "").trim(); if (!routerVersion) { - throw new Error("opencode-router version missing in packages/opencode-router/package.json"); + throw new Error("opencode-router version missing in apps/opencode-router/package.json"); } const run = (command, args, cwd) => { @@ -42,7 +42,7 @@ const run = (command, args, cwd) => { } }; -run("pnpm", ["--filter", "openwork-server", "build:bin:all"], repoRoot); +run("pnpm", ["--filter", "@openwork/server", "build:bin:all"], repoRoot); run("pnpm", ["--filter", "opencode-router", "build:bin:all"], repoRoot); const targets = [ @@ -58,8 +58,8 @@ const sha256File = (path) => { return createHash("sha256").update(data).digest("hex"); }; -const serverDir = resolve(repoRoot, "packages", "server", "dist", "bin"); -const routerDir = resolve(repoRoot, "packages", "opencode-router", "dist", "bin"); +const serverDir = resolve(repoRoot, "apps", "server", "dist", "bin"); +const routerDir = resolve(repoRoot, "apps", "opencode-router", "dist", "bin"); mkdirSync(outdir, { recursive: true }); diff --git a/packages/orchestrator/scripts/clean-dist.mjs b/apps/orchestrator/scripts/clean-dist.mjs similarity index 100% rename from packages/orchestrator/scripts/clean-dist.mjs rename to apps/orchestrator/scripts/clean-dist.mjs diff --git a/packages/orchestrator/scripts/files-session.mjs b/apps/orchestrator/scripts/files-session.mjs similarity index 100% rename from packages/orchestrator/scripts/files-session.mjs rename to apps/orchestrator/scripts/files-session.mjs diff --git a/packages/orchestrator/scripts/postinstall.mjs b/apps/orchestrator/scripts/postinstall.mjs similarity index 100% rename from packages/orchestrator/scripts/postinstall.mjs rename to apps/orchestrator/scripts/postinstall.mjs diff --git a/packages/orchestrator/scripts/publish-npm.mjs b/apps/orchestrator/scripts/publish-npm.mjs similarity index 97% rename from packages/orchestrator/scripts/publish-npm.mjs rename to apps/orchestrator/scripts/publish-npm.mjs index 58b4d7dd..f5baf1c2 100755 --- a/packages/orchestrator/scripts/publish-npm.mjs +++ b/apps/orchestrator/scripts/publish-npm.mjs @@ -11,7 +11,7 @@ const root = resolve(fileURLToPath(new URL("..", import.meta.url))) const pkg = JSON.parse(readFileSync(join(root, "package.json"), "utf8")) const version = String(pkg.version || "").trim() if (!version) { - throw new Error("openwork-orchestrator version missing in packages/orchestrator/package.json") + throw new Error("openwork-orchestrator version missing in apps/orchestrator/package.json") } const outroot = join(root, "dist", "npm") diff --git a/packages/orchestrator/scripts/router.mjs b/apps/orchestrator/scripts/router.mjs similarity index 100% rename from packages/orchestrator/scripts/router.mjs rename to apps/orchestrator/scripts/router.mjs diff --git a/packages/orchestrator/src/cli.ts b/apps/orchestrator/src/cli.ts similarity index 99% rename from packages/orchestrator/src/cli.ts rename to apps/orchestrator/src/cli.ts index c7ed216e..1531e2c3 100644 --- a/packages/orchestrator/src/cli.ts +++ b/apps/orchestrator/src/cli.ts @@ -1571,7 +1571,7 @@ async function resolveExpectedVersion( const require = createRequire(import.meta.url); if (name === "openwork-server") { try { - const pkgPath = require.resolve("openwork-server/package.json"); + const pkgPath = require.resolve("@openwork/server/package.json"); const version = await readPackageVersion(pkgPath); if (version) return version; } catch { @@ -1769,7 +1769,7 @@ async function resolveOpenworkServerBin(options: { const require = createRequire(import.meta.url); try { - const pkgPath = require.resolve("openwork-server/package.json"); + const pkgPath = require.resolve("@openwork/server/package.json"); const pkgDir = dirname(pkgPath); const binaryPath = join(pkgDir, "dist", "bin", "openwork-server"); if (await isExecutable(binaryPath)) { @@ -5563,7 +5563,7 @@ async function runStart(args: ParsedArgs) { throw new Error("Runtime upgrade is only supported for non-sandbox workers"); } if (services.includes("openwork-server") && openworkServerBinary.source === "external" && openworkServerBinary.expectedVersion) { - await installGlobalPackages([`openwork-server@${openworkServerBinary.expectedVersion}`]); + await installGlobalPackages([`@openwork/server@${openworkServerBinary.expectedVersion}`]); } if (services.includes("opencode-router") && opencodeRouterBinary?.source === "external" && opencodeRouterBinary.expectedVersion) { await installGlobalPackages([`opencode-router@${opencodeRouterBinary.expectedVersion}`]); diff --git a/packages/orchestrator/src/tui/app.tsx b/apps/orchestrator/src/tui/app.tsx similarity index 100% rename from packages/orchestrator/src/tui/app.tsx rename to apps/orchestrator/src/tui/app.tsx diff --git a/packages/orchestrator/src/tui/opentui-jsx.d.ts b/apps/orchestrator/src/tui/opentui-jsx.d.ts similarity index 100% rename from packages/orchestrator/src/tui/opentui-jsx.d.ts rename to apps/orchestrator/src/tui/opentui-jsx.d.ts diff --git a/packages/orchestrator/tsconfig.json b/apps/orchestrator/tsconfig.json similarity index 100% rename from packages/orchestrator/tsconfig.json rename to apps/orchestrator/tsconfig.json diff --git a/packages/orchestrator/tsconfig.typecheck.json b/apps/orchestrator/tsconfig.typecheck.json similarity index 100% rename from packages/orchestrator/tsconfig.typecheck.json rename to apps/orchestrator/tsconfig.typecheck.json diff --git a/packages/server/README.md b/apps/server/README.md similarity index 95% rename from packages/server/README.md rename to apps/server/README.md index 771f7c9d..743b504c 100644 --- a/packages/server/README.md +++ b/apps/server/README.md @@ -1,11 +1,11 @@ # OpenWork Server -Filesystem-backed API for OpenWork remote clients. This package provides the OpenWork server layer described in `packages/app/pr/openwork-server.md` and is intentionally independent from the desktop app. +Filesystem-backed API for OpenWork remote clients. This package provides the OpenWork server layer described in `apps/app/pr/openwork-server.md` and is intentionally independent from the desktop app. ## Quick start ```bash -npm install -g openwork-server +npm install -g @openwork/server openwork-server --workspace /path/to/workspace --approval auto ``` @@ -14,7 +14,7 @@ openwork-server --workspace /path/to/workspace --approval auto Or from source: ```bash -pnpm --filter openwork-server dev -- \ +pnpm --filter @openwork/server dev -- \ --workspace /path/to/workspace \ --approval auto ``` diff --git a/apps/server/bin/openwork-server.mjs b/apps/server/bin/openwork-server.mjs new file mode 100755 index 00000000..ab8c7a7e --- /dev/null +++ b/apps/server/bin/openwork-server.mjs @@ -0,0 +1,43 @@ +#!/usr/bin/env node + +import { spawnSync } from "node:child_process"; +import { existsSync } from "node:fs"; +import { basename } from "node:path"; +import { fileURLToPath } from "node:url"; + +const packageRoot = fileURLToPath(new URL("..", import.meta.url)); +const args = process.argv.slice(2); + +const binaryName = process.platform === "win32" ? "openwork-server.exe" : "openwork-server"; +const compiledBinary = fileURLToPath(new URL(`./dist/bin/${binaryName}`, `${new URL("../", import.meta.url)}`)); +const builtCli = fileURLToPath(new URL("./dist/cli.js", `${new URL("../", import.meta.url)}`)); +const sourceCli = fileURLToPath(new URL("./src/cli.ts", `${new URL("../", import.meta.url)}`)); + +function run(command, commandArgs) { + const result = spawnSync(command, commandArgs, { stdio: "inherit" }); + if (result.error) { + if (result.error.code === "ENOENT") { + console.error(`Missing runtime dependency: ${command}`); + process.exit(1); + } + throw result.error; + } + process.exit(result.status ?? 1); +} + +if (existsSync(compiledBinary)) { + run(compiledBinary, args); +} + +if (existsSync(builtCli)) { + run("bun", [builtCli, ...args]); +} + +if (existsSync(sourceCli)) { + run("bun", [sourceCli, ...args]); +} + +console.error( + `Unable to find an OpenWork server entrypoint in ${basename(packageRoot)}. Build the package or run it from a source checkout with Bun available.`, +); +process.exit(1); diff --git a/packages/server/package.json b/apps/server/package.json similarity index 91% rename from packages/server/package.json rename to apps/server/package.json index b13fe3c4..42486adc 100644 --- a/packages/server/package.json +++ b/apps/server/package.json @@ -1,10 +1,10 @@ { - "name": "openwork-server", + "name": "@openwork/server", "version": "0.11.170", "description": "Filesystem-backed API for OpenWork remote clients", "type": "module", "bin": { - "openwork-server": "dist/bin/openwork-server" + "openwork-server": "bin/openwork-server.mjs" }, "scripts": { "dev": "OPENWORK_DEV_MODE=1 bun src/cli.ts", @@ -17,15 +17,16 @@ "prepublishOnly": "pnpm build:bin" }, "files": [ + "bin", "dist", "README.md" ], "repository": { "type": "git", "url": "git+https://github.com/different-ai/openwork.git", - "directory": "packages/server" + "directory": "apps/server" }, - "homepage": "https://github.com/different-ai/openwork/tree/dev/packages/server", + "homepage": "https://github.com/different-ai/openwork/tree/dev/apps/server", "bugs": { "url": "https://github.com/different-ai/openwork/issues" }, diff --git a/packages/server/script/build.ts b/apps/server/script/build.ts similarity index 100% rename from packages/server/script/build.ts rename to apps/server/script/build.ts diff --git a/packages/server/src/approvals.ts b/apps/server/src/approvals.ts similarity index 100% rename from packages/server/src/approvals.ts rename to apps/server/src/approvals.ts diff --git a/packages/server/src/audit.ts b/apps/server/src/audit.ts similarity index 100% rename from packages/server/src/audit.ts rename to apps/server/src/audit.ts diff --git a/packages/server/src/bun.d.ts b/apps/server/src/bun.d.ts similarity index 100% rename from packages/server/src/bun.d.ts rename to apps/server/src/bun.d.ts diff --git a/packages/server/src/cli.ts b/apps/server/src/cli.ts similarity index 100% rename from packages/server/src/cli.ts rename to apps/server/src/cli.ts diff --git a/packages/server/src/commands.ts b/apps/server/src/commands.ts similarity index 100% rename from packages/server/src/commands.ts rename to apps/server/src/commands.ts diff --git a/packages/server/src/config.ts b/apps/server/src/config.ts similarity index 100% rename from packages/server/src/config.ts rename to apps/server/src/config.ts diff --git a/packages/server/src/errors.ts b/apps/server/src/errors.ts similarity index 100% rename from packages/server/src/errors.ts rename to apps/server/src/errors.ts diff --git a/packages/server/src/events.ts b/apps/server/src/events.ts similarity index 100% rename from packages/server/src/events.ts rename to apps/server/src/events.ts diff --git a/packages/server/src/file-sessions.test.ts b/apps/server/src/file-sessions.test.ts similarity index 100% rename from packages/server/src/file-sessions.test.ts rename to apps/server/src/file-sessions.test.ts diff --git a/packages/server/src/file-sessions.ts b/apps/server/src/file-sessions.ts similarity index 100% rename from packages/server/src/file-sessions.ts rename to apps/server/src/file-sessions.ts diff --git a/packages/server/src/frontmatter.ts b/apps/server/src/frontmatter.ts similarity index 100% rename from packages/server/src/frontmatter.ts rename to apps/server/src/frontmatter.ts diff --git a/packages/server/src/jsonc.ts b/apps/server/src/jsonc.ts similarity index 100% rename from packages/server/src/jsonc.ts rename to apps/server/src/jsonc.ts diff --git a/packages/server/src/mcp.remote-connect.e2e.test.ts b/apps/server/src/mcp.remote-connect.e2e.test.ts similarity index 100% rename from packages/server/src/mcp.remote-connect.e2e.test.ts rename to apps/server/src/mcp.remote-connect.e2e.test.ts diff --git a/packages/server/src/mcp.ts b/apps/server/src/mcp.ts similarity index 100% rename from packages/server/src/mcp.ts rename to apps/server/src/mcp.ts diff --git a/packages/server/src/paths.ts b/apps/server/src/paths.ts similarity index 100% rename from packages/server/src/paths.ts rename to apps/server/src/paths.ts diff --git a/packages/server/src/plugins.ts b/apps/server/src/plugins.ts similarity index 100% rename from packages/server/src/plugins.ts rename to apps/server/src/plugins.ts diff --git a/packages/server/src/reload-watcher.ts b/apps/server/src/reload-watcher.ts similarity index 100% rename from packages/server/src/reload-watcher.ts rename to apps/server/src/reload-watcher.ts diff --git a/packages/server/src/scheduler.ts b/apps/server/src/scheduler.ts similarity index 100% rename from packages/server/src/scheduler.ts rename to apps/server/src/scheduler.ts diff --git a/packages/server/src/server.normalizeWorkspaceRelativePath.test.ts b/apps/server/src/server.normalizeWorkspaceRelativePath.test.ts similarity index 100% rename from packages/server/src/server.normalizeWorkspaceRelativePath.test.ts rename to apps/server/src/server.normalizeWorkspaceRelativePath.test.ts diff --git a/packages/server/src/server.ts b/apps/server/src/server.ts similarity index 100% rename from packages/server/src/server.ts rename to apps/server/src/server.ts diff --git a/packages/server/src/skill-hub.ts b/apps/server/src/skill-hub.ts similarity index 100% rename from packages/server/src/skill-hub.ts rename to apps/server/src/skill-hub.ts diff --git a/packages/server/src/skills.ts b/apps/server/src/skills.ts similarity index 100% rename from packages/server/src/skills.ts rename to apps/server/src/skills.ts diff --git a/packages/server/src/tokens.test.ts b/apps/server/src/tokens.test.ts similarity index 100% rename from packages/server/src/tokens.test.ts rename to apps/server/src/tokens.test.ts diff --git a/packages/server/src/tokens.ts b/apps/server/src/tokens.ts similarity index 100% rename from packages/server/src/tokens.ts rename to apps/server/src/tokens.ts diff --git a/packages/server/src/toy-ui.ts b/apps/server/src/toy-ui.ts similarity index 100% rename from packages/server/src/toy-ui.ts rename to apps/server/src/toy-ui.ts diff --git a/packages/server/src/types.ts b/apps/server/src/types.ts similarity index 100% rename from packages/server/src/types.ts rename to apps/server/src/types.ts diff --git a/packages/server/src/utils.test.ts b/apps/server/src/utils.test.ts similarity index 100% rename from packages/server/src/utils.test.ts rename to apps/server/src/utils.test.ts diff --git a/packages/server/src/utils.ts b/apps/server/src/utils.ts similarity index 100% rename from packages/server/src/utils.ts rename to apps/server/src/utils.ts diff --git a/packages/server/src/validators.test.ts b/apps/server/src/validators.test.ts similarity index 100% rename from packages/server/src/validators.test.ts rename to apps/server/src/validators.test.ts diff --git a/packages/server/src/validators.ts b/apps/server/src/validators.ts similarity index 100% rename from packages/server/src/validators.ts rename to apps/server/src/validators.ts diff --git a/packages/server/src/workspace-files.ts b/apps/server/src/workspace-files.ts similarity index 100% rename from packages/server/src/workspace-files.ts rename to apps/server/src/workspace-files.ts diff --git a/packages/server/src/workspaces.ts b/apps/server/src/workspaces.ts similarity index 100% rename from packages/server/src/workspaces.ts rename to apps/server/src/workspaces.ts diff --git a/packages/server/tsconfig.json b/apps/server/tsconfig.json similarity index 100% rename from packages/server/tsconfig.json rename to apps/server/tsconfig.json diff --git a/services/openwork-share/.gitignore b/apps/share/.gitignore similarity index 100% rename from services/openwork-share/.gitignore rename to apps/share/.gitignore diff --git a/services/openwork-share/README.md b/apps/share/README.md similarity index 95% rename from services/openwork-share/README.md rename to apps/share/README.md index d199ab9b..16e60dc3 100644 --- a/services/openwork-share/README.md +++ b/apps/share/README.md @@ -83,7 +83,7 @@ For local testing you can use: ```bash pnpm install -pnpm --dir services/openwork-share dev +pnpm --dir apps/share dev ``` Open `http://localhost:3000`. @@ -94,15 +94,16 @@ Without a `BLOB_READ_WRITE_TOKEN`, local development now stores bundles on disk Recommended project settings: -- Root directory: `services/openwork-share` +- Root directory: `apps/share` - Framework preset: Next.js -- Build command: `pnpm --dir services/openwork-share build` +- Build command: `next build` - Output directory: `.next` +- Install command: `pnpm install --frozen-lockfile` ## Tests ```bash -pnpm --dir services/openwork-share test +pnpm --dir apps/share test ``` ## Quick checks diff --git a/services/openwork-share/app/api/health/route.ts b/apps/share/app/api/health/route.ts similarity index 100% rename from services/openwork-share/app/api/health/route.ts rename to apps/share/app/api/health/route.ts diff --git a/services/openwork-share/app/api/v1/bundles/route.ts b/apps/share/app/api/v1/bundles/route.ts similarity index 100% rename from services/openwork-share/app/api/v1/bundles/route.ts rename to apps/share/app/api/v1/bundles/route.ts diff --git a/services/openwork-share/app/api/v1/package/route.ts b/apps/share/app/api/v1/package/route.ts similarity index 100% rename from services/openwork-share/app/api/v1/package/route.ts rename to apps/share/app/api/v1/package/route.ts diff --git a/services/openwork-share/app/b/[id]/data/route.ts b/apps/share/app/b/[id]/data/route.ts similarity index 100% rename from services/openwork-share/app/b/[id]/data/route.ts rename to apps/share/app/b/[id]/data/route.ts diff --git a/services/openwork-share/app/b/[id]/page.tsx b/apps/share/app/b/[id]/page.tsx similarity index 100% rename from services/openwork-share/app/b/[id]/page.tsx rename to apps/share/app/b/[id]/page.tsx diff --git a/services/openwork-share/app/layout.tsx b/apps/share/app/layout.tsx similarity index 100% rename from services/openwork-share/app/layout.tsx rename to apps/share/app/layout.tsx diff --git a/services/openwork-share/app/og/[id]/route.ts b/apps/share/app/og/[id]/route.ts similarity index 100% rename from services/openwork-share/app/og/[id]/route.ts rename to apps/share/app/og/[id]/route.ts diff --git a/services/openwork-share/app/page.tsx b/apps/share/app/page.tsx similarity index 100% rename from services/openwork-share/app/page.tsx rename to apps/share/app/page.tsx diff --git a/services/openwork-share/artifacts/share-preview-wrap-after.png b/apps/share/artifacts/share-preview-wrap-after.png similarity index 100% rename from services/openwork-share/artifacts/share-preview-wrap-after.png rename to apps/share/artifacts/share-preview-wrap-after.png diff --git a/services/openwork-share/artifacts/share-preview-wrap-before.png b/apps/share/artifacts/share-preview-wrap-before.png similarity index 100% rename from services/openwork-share/artifacts/share-preview-wrap-before.png rename to apps/share/artifacts/share-preview-wrap-before.png diff --git a/services/openwork-share/components/share-bundle-page.tsx b/apps/share/components/share-bundle-page.tsx similarity index 100% rename from services/openwork-share/components/share-bundle-page.tsx rename to apps/share/components/share-bundle-page.tsx diff --git a/services/openwork-share/components/share-home-client.tsx b/apps/share/components/share-home-client.tsx similarity index 100% rename from services/openwork-share/components/share-home-client.tsx rename to apps/share/components/share-home-client.tsx diff --git a/services/openwork-share/components/share-home-state.ts b/apps/share/components/share-home-state.ts similarity index 100% rename from services/openwork-share/components/share-home-state.ts rename to apps/share/components/share-home-state.ts diff --git a/services/openwork-share/components/share-home-types.ts b/apps/share/components/share-home-types.ts similarity index 100% rename from services/openwork-share/components/share-home-types.ts rename to apps/share/components/share-home-types.ts diff --git a/services/openwork-share/components/share-nav.tsx b/apps/share/components/share-nav.tsx similarity index 100% rename from services/openwork-share/components/share-nav.tsx rename to apps/share/components/share-nav.tsx diff --git a/services/openwork-share/components/share-preview-syntax.ts b/apps/share/components/share-preview-syntax.ts similarity index 100% rename from services/openwork-share/components/share-preview-syntax.ts rename to apps/share/components/share-preview-syntax.ts diff --git a/services/openwork-share/components/skill-editor-surface.tsx b/apps/share/components/skill-editor-surface.tsx similarity index 100% rename from services/openwork-share/components/skill-editor-surface.tsx rename to apps/share/components/skill-editor-surface.tsx diff --git a/services/openwork-share/components/skill-markdown.ts b/apps/share/components/skill-markdown.ts similarity index 100% rename from services/openwork-share/components/skill-markdown.ts rename to apps/share/components/skill-markdown.ts diff --git a/services/openwork-share/e2e/bundle-share-page.spec.ts b/apps/share/e2e/bundle-share-page.spec.ts similarity index 100% rename from services/openwork-share/e2e/bundle-share-page.spec.ts rename to apps/share/e2e/bundle-share-page.spec.ts diff --git a/services/openwork-share/e2e/fixtures/mom-test-skill.md b/apps/share/e2e/fixtures/mom-test-skill.md similarity index 100% rename from services/openwork-share/e2e/fixtures/mom-test-skill.md rename to apps/share/e2e/fixtures/mom-test-skill.md diff --git a/services/openwork-share/e2e/preview-wrap.spec.ts b/apps/share/e2e/preview-wrap.spec.ts similarity index 100% rename from services/openwork-share/e2e/preview-wrap.spec.ts rename to apps/share/e2e/preview-wrap.spec.ts diff --git a/services/openwork-share/e2e/skill-share-flow.spec.ts b/apps/share/e2e/skill-share-flow.spec.ts similarity index 100% rename from services/openwork-share/e2e/skill-share-flow.spec.ts rename to apps/share/e2e/skill-share-flow.spec.ts diff --git a/services/openwork-share/e2e/social-preview-simulator.ts b/apps/share/e2e/social-preview-simulator.ts similarity index 100% rename from services/openwork-share/e2e/social-preview-simulator.ts rename to apps/share/e2e/social-preview-simulator.ts diff --git a/services/openwork-share/next-env.d.ts b/apps/share/next-env.d.ts similarity index 100% rename from services/openwork-share/next-env.d.ts rename to apps/share/next-env.d.ts diff --git a/services/openwork-share/next.config.ts b/apps/share/next.config.ts similarity index 100% rename from services/openwork-share/next.config.ts rename to apps/share/next.config.ts diff --git a/services/openwork-share/package.json b/apps/share/package.json similarity index 96% rename from services/openwork-share/package.json rename to apps/share/package.json index 60e50e0a..c2cd0adf 100644 --- a/services/openwork-share/package.json +++ b/apps/share/package.json @@ -1,5 +1,5 @@ { - "name": "openwork-share-service", + "name": "@openwork/share", "private": true, "version": "0.0.1", "type": "module", diff --git a/services/openwork-share/playwright.config.ts b/apps/share/playwright.config.ts similarity index 100% rename from services/openwork-share/playwright.config.ts rename to apps/share/playwright.config.ts diff --git a/services/openwork-share/pr/2026-03-13-skill-share-flow/after-home.png b/apps/share/pr/2026-03-13-skill-share-flow/after-home.png similarity index 100% rename from services/openwork-share/pr/2026-03-13-skill-share-flow/after-home.png rename to apps/share/pr/2026-03-13-skill-share-flow/after-home.png diff --git a/services/openwork-share/pr/2026-03-13-skill-share-flow/before-home.png b/apps/share/pr/2026-03-13-skill-share-flow/before-home.png similarity index 100% rename from services/openwork-share/pr/2026-03-13-skill-share-flow/before-home.png rename to apps/share/pr/2026-03-13-skill-share-flow/before-home.png diff --git a/services/openwork-share/pr/openwork-share-bundle-live.png b/apps/share/pr/openwork-share-bundle-live.png similarity index 100% rename from services/openwork-share/pr/openwork-share-bundle-live.png rename to apps/share/pr/openwork-share-bundle-live.png diff --git a/services/openwork-share/pr/openwork-share-bundle-og-preview.png b/apps/share/pr/openwork-share-bundle-og-preview.png similarity index 100% rename from services/openwork-share/pr/openwork-share-bundle-og-preview.png rename to apps/share/pr/openwork-share-bundle-og-preview.png diff --git a/services/openwork-share/pr/openwork-share-bundle-page-flow.mp4 b/apps/share/pr/openwork-share-bundle-page-flow.mp4 similarity index 100% rename from services/openwork-share/pr/openwork-share-bundle-page-flow.mp4 rename to apps/share/pr/openwork-share-bundle-page-flow.mp4 diff --git a/services/openwork-share/pr/openwork-share-bundle-page-refresh.png b/apps/share/pr/openwork-share-bundle-page-refresh.png similarity index 100% rename from services/openwork-share/pr/openwork-share-bundle-page-refresh.png rename to apps/share/pr/openwork-share-bundle-page-refresh.png diff --git a/services/openwork-share/pr/openwork-share-home-live.png b/apps/share/pr/openwork-share-home-live.png similarity index 100% rename from services/openwork-share/pr/openwork-share-home-live.png rename to apps/share/pr/openwork-share-home-live.png diff --git a/services/openwork-share/pr/openwork-share-home-preview.png b/apps/share/pr/openwork-share-home-preview.png similarity index 100% rename from services/openwork-share/pr/openwork-share-home-preview.png rename to apps/share/pr/openwork-share-home-preview.png diff --git a/packages/landing/public/openwork-mark.svg b/apps/share/public/openwork-mark.svg similarity index 100% rename from packages/landing/public/openwork-mark.svg rename to apps/share/public/openwork-mark.svg diff --git a/services/openwork-share/server/_lib/blob-store.ts b/apps/share/server/_lib/blob-store.ts similarity index 100% rename from services/openwork-share/server/_lib/blob-store.ts rename to apps/share/server/_lib/blob-store.ts diff --git a/services/openwork-share/server/_lib/github-stars.ts b/apps/share/server/_lib/github-stars.ts similarity index 100% rename from services/openwork-share/server/_lib/github-stars.ts rename to apps/share/server/_lib/github-stars.ts diff --git a/services/openwork-share/server/_lib/og-image-variants.ts b/apps/share/server/_lib/og-image-variants.ts similarity index 100% rename from services/openwork-share/server/_lib/og-image-variants.ts rename to apps/share/server/_lib/og-image-variants.ts diff --git a/services/openwork-share/server/_lib/package-openwork-files.test.ts b/apps/share/server/_lib/package-openwork-files.test.ts similarity index 100% rename from services/openwork-share/server/_lib/package-openwork-files.test.ts rename to apps/share/server/_lib/package-openwork-files.test.ts diff --git a/services/openwork-share/server/_lib/package-openwork-files.ts b/apps/share/server/_lib/package-openwork-files.ts similarity index 100% rename from services/openwork-share/server/_lib/package-openwork-files.ts rename to apps/share/server/_lib/package-openwork-files.ts diff --git a/services/openwork-share/server/_lib/render-og-image-response.tsx b/apps/share/server/_lib/render-og-image-response.tsx similarity index 100% rename from services/openwork-share/server/_lib/render-og-image-response.tsx rename to apps/share/server/_lib/render-og-image-response.tsx diff --git a/services/openwork-share/server/_lib/render-og-image.test.ts b/apps/share/server/_lib/render-og-image.test.ts similarity index 100% rename from services/openwork-share/server/_lib/render-og-image.test.ts rename to apps/share/server/_lib/render-og-image.test.ts diff --git a/services/openwork-share/server/_lib/render-og-image.ts b/apps/share/server/_lib/render-og-image.ts similarity index 100% rename from services/openwork-share/server/_lib/render-og-image.ts rename to apps/share/server/_lib/render-og-image.ts diff --git a/services/openwork-share/server/_lib/request-like.ts b/apps/share/server/_lib/request-like.ts similarity index 100% rename from services/openwork-share/server/_lib/request-like.ts rename to apps/share/server/_lib/request-like.ts diff --git a/services/openwork-share/server/_lib/share-utils.test.ts b/apps/share/server/_lib/share-utils.test.ts similarity index 100% rename from services/openwork-share/server/_lib/share-utils.test.ts rename to apps/share/server/_lib/share-utils.test.ts diff --git a/services/openwork-share/server/_lib/share-utils.ts b/apps/share/server/_lib/share-utils.ts similarity index 100% rename from services/openwork-share/server/_lib/share-utils.ts rename to apps/share/server/_lib/share-utils.ts diff --git a/services/openwork-share/server/_lib/types.ts b/apps/share/server/_lib/types.ts similarity index 100% rename from services/openwork-share/server/_lib/types.ts rename to apps/share/server/_lib/types.ts diff --git a/services/openwork-share/server/b/get-bundle-page-props.ts b/apps/share/server/b/get-bundle-page-props.ts similarity index 100% rename from services/openwork-share/server/b/get-bundle-page-props.ts rename to apps/share/server/b/get-bundle-page-props.ts diff --git a/services/openwork-share/server/b/render-bundle-page.test.ts b/apps/share/server/b/render-bundle-page.test.ts similarity index 100% rename from services/openwork-share/server/b/render-bundle-page.test.ts rename to apps/share/server/b/render-bundle-page.test.ts diff --git a/services/openwork-share/server/b/render-bundle-page.ts b/apps/share/server/b/render-bundle-page.ts similarity index 100% rename from services/openwork-share/server/b/render-bundle-page.ts rename to apps/share/server/b/render-bundle-page.ts diff --git a/services/openwork-share/server/health.ts b/apps/share/server/health.ts similarity index 100% rename from services/openwork-share/server/health.ts rename to apps/share/server/health.ts diff --git a/services/openwork-share/server/og/[id].ts b/apps/share/server/og/[id].ts similarity index 100% rename from services/openwork-share/server/og/[id].ts rename to apps/share/server/og/[id].ts diff --git a/services/openwork-share/server/v1/bundles.ts b/apps/share/server/v1/bundles.ts similarity index 100% rename from services/openwork-share/server/v1/bundles.ts rename to apps/share/server/v1/bundles.ts diff --git a/services/openwork-share/server/v1/package.ts b/apps/share/server/v1/package.ts similarity index 100% rename from services/openwork-share/server/v1/package.ts rename to apps/share/server/v1/package.ts diff --git a/services/openwork-share/styles/globals.css b/apps/share/styles/globals.css similarity index 100% rename from services/openwork-share/styles/globals.css rename to apps/share/styles/globals.css diff --git a/services/openwork-share/test-results/.last-run.json b/apps/share/test-results/.last-run.json similarity index 100% rename from services/openwork-share/test-results/.last-run.json rename to apps/share/test-results/.last-run.json diff --git a/services/openwork-share/tsconfig.json b/apps/share/tsconfig.json similarity index 100% rename from services/openwork-share/tsconfig.json rename to apps/share/tsconfig.json diff --git a/packages/web/vercel.json b/apps/share/vercel.json similarity index 100% rename from packages/web/vercel.json rename to apps/share/vercel.json diff --git a/ee/LICENSE b/ee/LICENSE new file mode 100644 index 00000000..d2502e79 --- /dev/null +++ b/ee/LICENSE @@ -0,0 +1,42 @@ +The Different AI Inc Commercial License (the “Commercial License”) +Copyright (c) 2026-present Different AI Inc + +With regard to the Different AI Inc OpenWork Software: + +This software and associated documentation files (the "Software") may only be +used in production, if you (and any entity that you represent) have agreed to, +and are in compliance with, the Different AI Inc OpenWork Subscription Terms available +at https://openworklabs.com/, or other agreements governing +the use of the Software, as mutually agreed by you and Different AI Inc, +and otherwise have a valid Different AI Inc OpenWork Enterprise Edition subscription ("Commercial Subscription") +for the correct number of hosts as defined in the "Commercial Terms ("Hosts"). Subject to the foregoing sentence, +you are free to modify this Software and publish patches to the Software. You agree +that Different AI Inc and/or its licensors (as applicable) retain all right, title and interest in +and to all such modifications and/or patches, and all such modifications and/or +patches may only be used, copied, modified, displayed, distributed, or otherwise +exploited with a valid Commercial Subscription for the correct number of hosts. +Notwithstanding the foregoing, you may copy and modify the Software for development +and testing purposes, without requiring a subscription. You agree that Different AI Inc and/or +its licensors (as applicable) retain all right, title and interest in and to all such +modifications. You are not granted any other rights beyond what is expressly stated herein. +Subject to the foregoing, it is forbidden to copy, merge, publish, distribute, sublicense, +and/or sell the Software. + +This Commercial License applies only to the part of this Software that is not distributed under +the MIT license. Any part of this Software distributed under the MIT license or which +is served client-side as an image, font, cascading stylesheet (CSS), file which produces +or is compiled, arranged, augmented, or combined into client-side JavaScript, in whole or +in part, is copyrighted under the MIT license. The full text of this Commercial License shall +be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + +For all third party components incorporated into the Different AI Inc OpenWork Software, those +components are licensed under the original license provided by the owner of the +applicable component. diff --git a/services/den-v2/.env.example b/ee/apps/den-controller/.env.example similarity index 100% rename from services/den-v2/.env.example rename to ee/apps/den-controller/.env.example diff --git a/services/den-v2/AGENT_FOCUS.md b/ee/apps/den-controller/AGENT_FOCUS.md similarity index 100% rename from services/den-v2/AGENT_FOCUS.md rename to ee/apps/den-controller/AGENT_FOCUS.md diff --git a/services/den-v2/README.md b/ee/apps/den-controller/README.md similarity index 99% rename from services/den-v2/README.md rename to ee/apps/den-controller/README.md index 90e28507..58171640 100644 --- a/services/den-v2/README.md +++ b/ee/apps/den-controller/README.md @@ -36,7 +36,6 @@ The script prints the exact URLs and `docker compose ... down` command to use fo - `GOOGLE_CLIENT_ID` optional OAuth app client ID for Google sign-in - `GOOGLE_CLIENT_SECRET` optional OAuth app client secret for Google sign-in - `PORT` server port -<<<<<<< HEAD - `CORS_ORIGINS` comma-separated list of trusted browser origins (used for Better Auth origin validation + Express CORS) - `PROVISIONER_MODE` `stub`, `render`, or `daytona` - `OPENWORK_DAYTONA_ENV_PATH` optional path to a shared `.env.daytona` file; when unset, Den searches upwards from the repo for `.env.daytona` @@ -93,7 +92,7 @@ If you want Daytona workers to start from a prebuilt runtime instead of a generi The snapshot builder for this repo lives at: - `scripts/create-daytona-openwork-snapshot.sh` -- `services/den-worker-runtime/Dockerfile.daytona-snapshot` +- `ee/apps/den-worker-runtime/Dockerfile.daytona-snapshot` It builds a Linux image with: diff --git a/services/den-v2/drizzle/0001_desktop_handoff_grants.sql b/ee/apps/den-controller/drizzle/0001_desktop_handoff_grants.sql similarity index 100% rename from services/den-v2/drizzle/0001_desktop_handoff_grants.sql rename to ee/apps/den-controller/drizzle/0001_desktop_handoff_grants.sql diff --git a/services/den-v2/package.json b/ee/apps/den-controller/package.json similarity index 86% rename from services/den-v2/package.json rename to ee/apps/den-controller/package.json index 833d7aa2..c2935a35 100644 --- a/services/den-v2/package.json +++ b/ee/apps/den-controller/package.json @@ -1,11 +1,11 @@ { - "name": "@openwork/den-v2", + "name": "@openwork-ee/den-controller", "private": true, "type": "module", "scripts": { "dev": "npm run build:den-db && OPENWORK_DEV_MODE=1 tsx watch src/index.ts", "build": "npm run build:den-db && tsc -p tsconfig.json", - "build:den-db": "npm --prefix ../../packages/den-db run build", + "build:den-db": "pnpm --filter @openwork-ee/den-db build", "start": "node dist/index.js", "db:migrate:sql": "node scripts/run-sql-migrations.mjs", "test:smoke:daytona": "pnpm build && node scripts/daytona-provisioner-smoke.mjs", @@ -16,6 +16,8 @@ "auth:generate": "npx @better-auth/cli@latest generate --config src/auth.ts --output src/db/better-auth.schema.ts --yes" }, "dependencies": { + "@openwork-ee/den-db": "workspace:*", + "@openwork-ee/utils": "workspace:*", "@daytonaio/sdk": "^0.150.0", "better-auth": "^1.4.18", "cors": "^2.8.5", diff --git a/services/den-v2/public/index.html b/ee/apps/den-controller/public/index.html similarity index 100% rename from services/den-v2/public/index.html rename to ee/apps/den-controller/public/index.html diff --git a/services/den-v2/scripts/daytona-provisioner-smoke.mjs b/ee/apps/den-controller/scripts/daytona-provisioner-smoke.mjs similarity index 100% rename from services/den-v2/scripts/daytona-provisioner-smoke.mjs rename to ee/apps/den-controller/scripts/daytona-provisioner-smoke.mjs diff --git a/services/den-v2/scripts/e2e-daytona-worker.mjs b/ee/apps/den-controller/scripts/e2e-daytona-worker.mjs similarity index 100% rename from services/den-v2/scripts/e2e-daytona-worker.mjs rename to ee/apps/den-controller/scripts/e2e-daytona-worker.mjs diff --git a/services/den-v2/scripts/e2e-worker-limit.mjs b/ee/apps/den-controller/scripts/e2e-worker-limit.mjs similarity index 100% rename from services/den-v2/scripts/e2e-worker-limit.mjs rename to ee/apps/den-controller/scripts/e2e-worker-limit.mjs diff --git a/services/den-v2/scripts/run-sql-migrations.mjs b/ee/apps/den-controller/scripts/run-sql-migrations.mjs similarity index 100% rename from services/den-v2/scripts/run-sql-migrations.mjs rename to ee/apps/den-controller/scripts/run-sql-migrations.mjs diff --git a/packages/web/app/(den)/_lib/CONSTS.ts b/ee/apps/den-controller/src/CONSTS.ts similarity index 100% rename from packages/web/app/(den)/_lib/CONSTS.ts rename to ee/apps/den-controller/src/CONSTS.ts diff --git a/services/den-v2/src/admin-allowlist.ts b/ee/apps/den-controller/src/admin-allowlist.ts similarity index 100% rename from services/den-v2/src/admin-allowlist.ts rename to ee/apps/den-controller/src/admin-allowlist.ts diff --git a/services/den-v2/src/auth.ts b/ee/apps/den-controller/src/auth.ts similarity index 100% rename from services/den-v2/src/auth.ts rename to ee/apps/den-controller/src/auth.ts diff --git a/services/den-v2/src/billing/polar.ts b/ee/apps/den-controller/src/billing/polar.ts similarity index 100% rename from services/den-v2/src/billing/polar.ts rename to ee/apps/den-controller/src/billing/polar.ts diff --git a/services/den-v2/src/db/drizzle.ts b/ee/apps/den-controller/src/db/drizzle.ts similarity index 58% rename from services/den-v2/src/db/drizzle.ts rename to ee/apps/den-controller/src/db/drizzle.ts index 54698bf6..4eaa7fa1 100644 --- a/services/den-v2/src/db/drizzle.ts +++ b/ee/apps/den-controller/src/db/drizzle.ts @@ -1 +1 @@ -export { and, asc, desc, eq, gt, isNotNull, isNull, sql } from "../../../../packages/den-db/dist/drizzle.js" +export { and, asc, desc, eq, gt, isNotNull, isNull, sql } from "@openwork-ee/den-db/drizzle" diff --git a/services/den-v2/src/db/index.ts b/ee/apps/den-controller/src/db/index.ts similarity index 65% rename from services/den-v2/src/db/index.ts rename to ee/apps/den-controller/src/db/index.ts index a305df7e..fc1eb1c2 100644 --- a/services/den-v2/src/db/index.ts +++ b/ee/apps/den-controller/src/db/index.ts @@ -1,4 +1,4 @@ -import { createDenDb, isTransientDbConnectionError } from "../../../../packages/den-db/dist/index.js" +import { createDenDb, isTransientDbConnectionError } from "@openwork-ee/den-db" import { env } from "../env.js" export const { db } = createDenDb({ diff --git a/ee/apps/den-controller/src/db/schema.ts b/ee/apps/den-controller/src/db/schema.ts new file mode 100644 index 00000000..8db9cf41 --- /dev/null +++ b/ee/apps/den-controller/src/db/schema.ts @@ -0,0 +1 @@ +export * from "@openwork-ee/den-db/schema" diff --git a/ee/apps/den-controller/src/db/typeid.ts b/ee/apps/den-controller/src/db/typeid.ts new file mode 100644 index 00000000..31a8d552 --- /dev/null +++ b/ee/apps/den-controller/src/db/typeid.ts @@ -0,0 +1 @@ +export * from "@openwork-ee/utils/typeid" diff --git a/services/den-v2/src/env.ts b/ee/apps/den-controller/src/env.ts similarity index 99% rename from services/den-v2/src/env.ts rename to ee/apps/den-controller/src/env.ts index 6b8f40ac..5acf5c4e 100644 --- a/services/den-v2/src/env.ts +++ b/ee/apps/den-controller/src/env.ts @@ -169,7 +169,7 @@ export const env = { parsed.RENDER_WORKER_REPO ?? "https://github.com/different-ai/openwork", workerBranch: parsed.RENDER_WORKER_BRANCH ?? "dev", workerRootDir: - parsed.RENDER_WORKER_ROOT_DIR ?? "services/den-worker-runtime", + parsed.RENDER_WORKER_ROOT_DIR ?? "ee/apps/den-worker-runtime", workerPlan: parsed.RENDER_WORKER_PLAN ?? "standard", workerRegion: parsed.RENDER_WORKER_REGION ?? "oregon", workerOpenworkVersion: parsed.RENDER_WORKER_OPENWORK_VERSION, diff --git a/services/den-v2/src/http/admin.ts b/ee/apps/den-controller/src/http/admin.ts similarity index 100% rename from services/den-v2/src/http/admin.ts rename to ee/apps/den-controller/src/http/admin.ts diff --git a/services/den-v2/src/http/desktop-auth.ts b/ee/apps/den-controller/src/http/desktop-auth.ts similarity index 100% rename from services/den-v2/src/http/desktop-auth.ts rename to ee/apps/den-controller/src/http/desktop-auth.ts diff --git a/services/den-v2/src/http/errors.ts b/ee/apps/den-controller/src/http/errors.ts similarity index 100% rename from services/den-v2/src/http/errors.ts rename to ee/apps/den-controller/src/http/errors.ts diff --git a/services/den-v2/src/http/session.ts b/ee/apps/den-controller/src/http/session.ts similarity index 100% rename from services/den-v2/src/http/session.ts rename to ee/apps/den-controller/src/http/session.ts diff --git a/services/den-v2/src/http/workers.ts b/ee/apps/den-controller/src/http/workers.ts similarity index 100% rename from services/den-v2/src/http/workers.ts rename to ee/apps/den-controller/src/http/workers.ts diff --git a/services/den-v2/src/index.ts b/ee/apps/den-controller/src/index.ts similarity index 100% rename from services/den-v2/src/index.ts rename to ee/apps/den-controller/src/index.ts diff --git a/services/den-v2/src/load-env.ts b/ee/apps/den-controller/src/load-env.ts similarity index 100% rename from services/den-v2/src/load-env.ts rename to ee/apps/den-controller/src/load-env.ts diff --git a/services/den-v2/src/orgs.ts b/ee/apps/den-controller/src/orgs.ts similarity index 100% rename from services/den-v2/src/orgs.ts rename to ee/apps/den-controller/src/orgs.ts diff --git a/services/den-v2/src/workers/daytona.ts b/ee/apps/den-controller/src/workers/daytona.ts similarity index 100% rename from services/den-v2/src/workers/daytona.ts rename to ee/apps/den-controller/src/workers/daytona.ts diff --git a/services/den-v2/src/workers/provisioner.ts b/ee/apps/den-controller/src/workers/provisioner.ts similarity index 100% rename from services/den-v2/src/workers/provisioner.ts rename to ee/apps/den-controller/src/workers/provisioner.ts diff --git a/services/den-v2/src/workers/vanity-domain.ts b/ee/apps/den-controller/src/workers/vanity-domain.ts similarity index 100% rename from services/den-v2/src/workers/vanity-domain.ts rename to ee/apps/den-controller/src/workers/vanity-domain.ts diff --git a/services/den-v2/tsconfig.json b/ee/apps/den-controller/tsconfig.json similarity index 100% rename from services/den-v2/tsconfig.json rename to ee/apps/den-controller/tsconfig.json diff --git a/packages/landing/.gitignore b/ee/apps/den-web/.gitignore similarity index 100% rename from packages/landing/.gitignore rename to ee/apps/den-web/.gitignore diff --git a/packages/web/README.md b/ee/apps/den-web/README.md similarity index 91% rename from packages/web/README.md rename to ee/apps/den-web/README.md index a6fd655c..6c812ce1 100644 --- a/packages/web/README.md +++ b/ee/apps/den-web/README.md @@ -1,4 +1,4 @@ -# OpenWork Cloud App (`packages/web`) +# OpenWork Cloud App (`ee/apps/den-web`) Frontend for `app.openwork.software`. @@ -15,7 +15,7 @@ Frontend for `app.openwork.software`. 1. Install workspace deps from repo root: `pnpm install` 2. Run the app: - `pnpm --filter @different-ai/openwork-web dev` + `pnpm --filter @openwork-ee/den-web dev` 3. Open: `http://localhost:3005` @@ -34,7 +34,7 @@ Frontend for `app.openwork.software`. - default: `https://app.openwork.software` - this host must serve `/api/auth/*`; the included proxy route does that - `NEXT_PUBLIC_POSTHOG_KEY` (client): PostHog project key used for Den analytics. - - optional override; defaults to the same project key used by `packages/landing` + - optional override; defaults to the same project key used by `ee/apps/landing` - `NEXT_PUBLIC_POSTHOG_HOST` (client): PostHog ingest host or same-origin proxy path. - default: `/ow` - set it to `https://us.i.posthog.com` to bypass the local proxy @@ -44,11 +44,11 @@ Frontend for `app.openwork.software`. Recommended project settings: -- Root directory: `packages/web` +- Root directory: `ee/apps/den-web` - Framework preset: Next.js - Build command: `next build` - Output directory: `.next` -- Install command: `npm install` (or `pnpm install`) +- Install command: `pnpm install --frozen-lockfile` Then assign custom domain: diff --git a/packages/web/app/(den)/_components/auth-screen.tsx b/ee/apps/den-web/app/(den)/_components/auth-screen.tsx similarity index 100% rename from packages/web/app/(den)/_components/auth-screen.tsx rename to ee/apps/den-web/app/(den)/_components/auth-screen.tsx diff --git a/packages/web/app/(den)/_components/checkout-screen.tsx b/ee/apps/den-web/app/(den)/_components/checkout-screen.tsx similarity index 100% rename from packages/web/app/(den)/_components/checkout-screen.tsx rename to ee/apps/den-web/app/(den)/_components/checkout-screen.tsx diff --git a/packages/web/app/(den)/_components/dashboard-screen.tsx b/ee/apps/den-web/app/(den)/_components/dashboard-screen.tsx similarity index 100% rename from packages/web/app/(den)/_components/dashboard-screen.tsx rename to ee/apps/den-web/app/(den)/_components/dashboard-screen.tsx diff --git a/packages/web/app/(den)/_components/den-shell.tsx b/ee/apps/den-web/app/(den)/_components/den-shell.tsx similarity index 100% rename from packages/web/app/(den)/_components/den-shell.tsx rename to ee/apps/den-web/app/(den)/_components/den-shell.tsx diff --git a/services/den-v2/src/CONSTS.ts b/ee/apps/den-web/app/(den)/_lib/CONSTS.ts similarity index 100% rename from services/den-v2/src/CONSTS.ts rename to ee/apps/den-web/app/(den)/_lib/CONSTS.ts diff --git a/packages/web/app/(den)/_lib/den-flow.ts b/ee/apps/den-web/app/(den)/_lib/den-flow.ts similarity index 100% rename from packages/web/app/(den)/_lib/den-flow.ts rename to ee/apps/den-web/app/(den)/_lib/den-flow.ts diff --git a/packages/web/app/(den)/_providers/den-flow-provider.tsx b/ee/apps/den-web/app/(den)/_providers/den-flow-provider.tsx similarity index 100% rename from packages/web/app/(den)/_providers/den-flow-provider.tsx rename to ee/apps/den-web/app/(den)/_providers/den-flow-provider.tsx diff --git a/packages/web/app/(den)/checkout/page.tsx b/ee/apps/den-web/app/(den)/checkout/page.tsx similarity index 100% rename from packages/web/app/(den)/checkout/page.tsx rename to ee/apps/den-web/app/(den)/checkout/page.tsx diff --git a/packages/web/app/(den)/dashboard/page.tsx b/ee/apps/den-web/app/(den)/dashboard/page.tsx similarity index 100% rename from packages/web/app/(den)/dashboard/page.tsx rename to ee/apps/den-web/app/(den)/dashboard/page.tsx diff --git a/packages/web/app/(den)/layout.tsx b/ee/apps/den-web/app/(den)/layout.tsx similarity index 100% rename from packages/web/app/(den)/layout.tsx rename to ee/apps/den-web/app/(den)/layout.tsx diff --git a/packages/web/app/(den)/page.tsx b/ee/apps/den-web/app/(den)/page.tsx similarity index 100% rename from packages/web/app/(den)/page.tsx rename to ee/apps/den-web/app/(den)/page.tsx diff --git a/packages/web/app/admin/page.tsx b/ee/apps/den-web/app/admin/page.tsx similarity index 100% rename from packages/web/app/admin/page.tsx rename to ee/apps/den-web/app/admin/page.tsx diff --git a/packages/web/app/api/_lib/upstream-proxy.ts b/ee/apps/den-web/app/api/_lib/upstream-proxy.ts similarity index 100% rename from packages/web/app/api/_lib/upstream-proxy.ts rename to ee/apps/den-web/app/api/_lib/upstream-proxy.ts diff --git a/packages/web/app/api/auth/[...path]/route.ts b/ee/apps/den-web/app/api/auth/[...path]/route.ts similarity index 100% rename from packages/web/app/api/auth/[...path]/route.ts rename to ee/apps/den-web/app/api/auth/[...path]/route.ts diff --git a/packages/web/app/api/den/[...path]/route.ts b/ee/apps/den-web/app/api/den/[...path]/route.ts similarity index 100% rename from packages/web/app/api/den/[...path]/route.ts rename to ee/apps/den-web/app/api/den/[...path]/route.ts diff --git a/packages/web/app/api/loops/den-signup/route.ts b/ee/apps/den-web/app/api/loops/den-signup/route.ts similarity index 100% rename from packages/web/app/api/loops/den-signup/route.ts rename to ee/apps/den-web/app/api/loops/den-signup/route.ts diff --git a/packages/web/app/globals.css b/ee/apps/den-web/app/globals.css similarity index 100% rename from packages/web/app/globals.css rename to ee/apps/den-web/app/globals.css diff --git a/packages/web/app/layout.tsx b/ee/apps/den-web/app/layout.tsx similarity index 100% rename from packages/web/app/layout.tsx rename to ee/apps/den-web/app/layout.tsx diff --git a/packages/web/app/opengraph-image.tsx b/ee/apps/den-web/app/opengraph-image.tsx similarity index 100% rename from packages/web/app/opengraph-image.tsx rename to ee/apps/den-web/app/opengraph-image.tsx diff --git a/packages/web/components/den-admin-panel.tsx b/ee/apps/den-web/components/den-admin-panel.tsx similarity index 100% rename from packages/web/components/den-admin-panel.tsx rename to ee/apps/den-web/components/den-admin-panel.tsx diff --git a/packages/web/components/den-marketing-rail.tsx b/ee/apps/den-web/components/den-marketing-rail.tsx similarity index 100% rename from packages/web/components/den-marketing-rail.tsx rename to ee/apps/den-web/components/den-marketing-rail.tsx diff --git a/packages/web/middleware.ts b/ee/apps/den-web/middleware.ts similarity index 100% rename from packages/web/middleware.ts rename to ee/apps/den-web/middleware.ts diff --git a/packages/landing/next-env.d.ts b/ee/apps/den-web/next-env.d.ts similarity index 100% rename from packages/landing/next-env.d.ts rename to ee/apps/den-web/next-env.d.ts diff --git a/packages/web/next.config.js b/ee/apps/den-web/next.config.js similarity index 100% rename from packages/web/next.config.js rename to ee/apps/den-web/next.config.js diff --git a/packages/web/package.json b/ee/apps/den-web/package.json similarity index 94% rename from packages/web/package.json rename to ee/apps/den-web/package.json index 049a7dc4..e7c93eb5 100644 --- a/packages/web/package.json +++ b/ee/apps/den-web/package.json @@ -1,5 +1,5 @@ { - "name": "@different-ai/openwork-web", + "name": "@openwork-ee/den-web", "private": true, "version": "0.0.0", "scripts": { diff --git a/packages/landing/postcss.config.js b/ee/apps/den-web/postcss.config.js similarity index 100% rename from packages/landing/postcss.config.js rename to ee/apps/den-web/postcss.config.js diff --git a/packages/web/pr/screenshots/better-auth-fix/after-desktop.png b/ee/apps/den-web/pr/screenshots/better-auth-fix/after-desktop.png similarity index 100% rename from packages/web/pr/screenshots/better-auth-fix/after-desktop.png rename to ee/apps/den-web/pr/screenshots/better-auth-fix/after-desktop.png diff --git a/packages/web/pr/screenshots/better-auth-fix/after-mobile.png b/ee/apps/den-web/pr/screenshots/better-auth-fix/after-mobile.png similarity index 100% rename from packages/web/pr/screenshots/better-auth-fix/after-mobile.png rename to ee/apps/den-web/pr/screenshots/better-auth-fix/after-mobile.png diff --git a/packages/web/pr/screenshots/better-auth-fix/before-desktop.png b/ee/apps/den-web/pr/screenshots/better-auth-fix/before-desktop.png similarity index 100% rename from packages/web/pr/screenshots/better-auth-fix/before-desktop.png rename to ee/apps/den-web/pr/screenshots/better-auth-fix/before-desktop.png diff --git a/packages/web/pr/screenshots/better-auth-fix/before-mobile.png b/ee/apps/den-web/pr/screenshots/better-auth-fix/before-mobile.png similarity index 100% rename from packages/web/pr/screenshots/better-auth-fix/before-mobile.png rename to ee/apps/den-web/pr/screenshots/better-auth-fix/before-mobile.png diff --git a/packages/web/pr/screenshots/billing-reliability-2026-03-01/billing-cancelled-at-period-end.png b/ee/apps/den-web/pr/screenshots/billing-reliability-2026-03-01/billing-cancelled-at-period-end.png similarity index 100% rename from packages/web/pr/screenshots/billing-reliability-2026-03-01/billing-cancelled-at-period-end.png rename to ee/apps/den-web/pr/screenshots/billing-reliability-2026-03-01/billing-cancelled-at-period-end.png diff --git a/packages/web/pr/screenshots/billing-reliability-2026-03-01/billing-page.png b/ee/apps/den-web/pr/screenshots/billing-reliability-2026-03-01/billing-page.png similarity index 100% rename from packages/web/pr/screenshots/billing-reliability-2026-03-01/billing-page.png rename to ee/apps/den-web/pr/screenshots/billing-reliability-2026-03-01/billing-page.png diff --git a/packages/web/pr/screenshots/billing-reliability-2026-03-01/billing-subscription-invoices.png b/ee/apps/den-web/pr/screenshots/billing-reliability-2026-03-01/billing-subscription-invoices.png similarity index 100% rename from packages/web/pr/screenshots/billing-reliability-2026-03-01/billing-subscription-invoices.png rename to ee/apps/den-web/pr/screenshots/billing-reliability-2026-03-01/billing-subscription-invoices.png diff --git a/packages/web/pr/screenshots/billing-reliability-2026-03-01/workers-page-after-back.png b/ee/apps/den-web/pr/screenshots/billing-reliability-2026-03-01/workers-page-after-back.png similarity index 100% rename from packages/web/pr/screenshots/billing-reliability-2026-03-01/workers-page-after-back.png rename to ee/apps/den-web/pr/screenshots/billing-reliability-2026-03-01/workers-page-after-back.png diff --git a/packages/web/public/connect-remote-menu.png b/ee/apps/den-web/public/connect-remote-menu.png similarity index 100% rename from packages/web/public/connect-remote-menu.png rename to ee/apps/den-web/public/connect-remote-menu.png diff --git a/packages/web/public/openwork-mark.svg b/ee/apps/den-web/public/openwork-mark.svg similarity index 100% rename from packages/web/public/openwork-mark.svg rename to ee/apps/den-web/public/openwork-mark.svg diff --git a/packages/web/tailwind.config.js b/ee/apps/den-web/tailwind.config.js similarity index 100% rename from packages/web/tailwind.config.js rename to ee/apps/den-web/tailwind.config.js diff --git a/packages/landing/tsconfig.json b/ee/apps/den-web/tsconfig.json similarity index 100% rename from packages/landing/tsconfig.json rename to ee/apps/den-web/tsconfig.json diff --git a/services/openwork-share/vercel.json b/ee/apps/den-web/vercel.json similarity index 100% rename from services/openwork-share/vercel.json rename to ee/apps/den-web/vercel.json diff --git a/services/den-worker-proxy/.env.example b/ee/apps/den-worker-proxy/.env.example similarity index 100% rename from services/den-worker-proxy/.env.example rename to ee/apps/den-worker-proxy/.env.example diff --git a/services/den-worker-proxy/package.json b/ee/apps/den-worker-proxy/package.json similarity index 73% rename from services/den-worker-proxy/package.json rename to ee/apps/den-worker-proxy/package.json index ccac5b9a..a569188a 100644 --- a/services/den-worker-proxy/package.json +++ b/ee/apps/den-worker-proxy/package.json @@ -1,14 +1,16 @@ { - "name": "@openwork/den-worker-proxy", + "name": "@openwork-ee/den-worker-proxy", "private": true, "type": "module", "scripts": { "dev": "npm run build:den-db && OPENWORK_DEV_MODE=1 tsx watch src/server.ts", "build": "npm run build:den-db && tsc -p tsconfig.json", - "build:den-db": "npm --prefix ../../packages/den-db run build", + "build:den-db": "pnpm --filter @openwork-ee/den-db build", "start": "node dist/server.js" }, "dependencies": { + "@openwork-ee/den-db": "workspace:*", + "@openwork-ee/utils": "workspace:*", "@daytonaio/sdk": "^0.150.0", "@hono/node-server": "^1.13.8", "dotenv": "^16.4.5", diff --git a/services/den-worker-proxy/src/app.ts b/ee/apps/den-worker-proxy/src/app.ts similarity index 96% rename from services/den-worker-proxy/src/app.ts rename to ee/apps/den-worker-proxy/src/app.ts index 2259edba..1924ad6e 100644 --- a/services/den-worker-proxy/src/app.ts +++ b/ee/apps/den-worker-proxy/src/app.ts @@ -1,9 +1,9 @@ import "./load-env.js" import { Daytona } from "@daytonaio/sdk" import { Hono } from "hono" -import { eq } from "../../../packages/den-db/dist/drizzle.js" -import { createDenDb, DaytonaSandboxTable } from "../../../packages/den-db/dist/index.js" -import { normalizeDenTypeId } from "../../../packages/utils/dist/typeid.js" +import { eq } from "@openwork-ee/den-db/drizzle" +import { createDenDb, DaytonaSandboxTable } from "@openwork-ee/den-db" +import { normalizeDenTypeId } from "@openwork-ee/utils/typeid" import { env } from "./env.js" const { db } = createDenDb({ diff --git a/services/den-worker-proxy/src/env.ts b/ee/apps/den-worker-proxy/src/env.ts similarity index 100% rename from services/den-worker-proxy/src/env.ts rename to ee/apps/den-worker-proxy/src/env.ts diff --git a/services/den-worker-proxy/src/index.ts b/ee/apps/den-worker-proxy/src/index.ts similarity index 100% rename from services/den-worker-proxy/src/index.ts rename to ee/apps/den-worker-proxy/src/index.ts diff --git a/services/den-worker-proxy/src/load-env.ts b/ee/apps/den-worker-proxy/src/load-env.ts similarity index 100% rename from services/den-worker-proxy/src/load-env.ts rename to ee/apps/den-worker-proxy/src/load-env.ts diff --git a/services/den-worker-proxy/src/server.ts b/ee/apps/den-worker-proxy/src/server.ts similarity index 100% rename from services/den-worker-proxy/src/server.ts rename to ee/apps/den-worker-proxy/src/server.ts diff --git a/services/den-worker-proxy/tsconfig.json b/ee/apps/den-worker-proxy/tsconfig.json similarity index 100% rename from services/den-worker-proxy/tsconfig.json rename to ee/apps/den-worker-proxy/tsconfig.json diff --git a/services/den-worker-runtime/.gitignore b/ee/apps/den-worker-runtime/.gitignore similarity index 100% rename from services/den-worker-runtime/.gitignore rename to ee/apps/den-worker-runtime/.gitignore diff --git a/services/den-worker-runtime/Dockerfile.daytona-snapshot b/ee/apps/den-worker-runtime/Dockerfile.daytona-snapshot similarity index 100% rename from services/den-worker-runtime/Dockerfile.daytona-snapshot rename to ee/apps/den-worker-runtime/Dockerfile.daytona-snapshot diff --git a/services/den-worker-runtime/README.md b/ee/apps/den-worker-runtime/README.md similarity index 100% rename from services/den-worker-runtime/README.md rename to ee/apps/den-worker-runtime/README.md diff --git a/services/den-worker-runtime/scripts/install-opencode.mjs b/ee/apps/den-worker-runtime/scripts/install-opencode.mjs similarity index 100% rename from services/den-worker-runtime/scripts/install-opencode.mjs rename to ee/apps/den-worker-runtime/scripts/install-opencode.mjs diff --git a/packages/web/.gitignore b/ee/apps/landing/.gitignore similarity index 100% rename from packages/web/.gitignore rename to ee/apps/landing/.gitignore diff --git a/packages/landing/README.md b/ee/apps/landing/README.md similarity index 51% rename from packages/landing/README.md rename to ee/apps/landing/README.md index 010e4d83..bd1f614b 100644 --- a/packages/landing/README.md +++ b/ee/apps/landing/README.md @@ -5,7 +5,7 @@ 1. Install deps from repo root: `pnpm install` 2. Run the app: - `pnpm --filter @different-ai/openwork-landing dev` + `pnpm --filter @openwork-ee/landing dev` ### Optional env vars @@ -18,12 +18,12 @@ This app is ready for Vercel or any Node-compatible Next.js host. ### Vercel -1. Create a new Vercel project rooted at `packages/landing`. -2. Build command: `pnpm --filter @different-ai/openwork-landing build` +1. Create a new Vercel project rooted at `ee/apps/landing`. +2. Build command: `pnpm --filter @openwork-ee/landing build` 3. Output: `.next` -4. Start command: `pnpm --filter @different-ai/openwork-landing start` +4. Start command: `pnpm --filter @openwork-ee/landing start` ### Self-hosted -1. Build: `pnpm --filter @different-ai/openwork-landing build` -2. Start: `pnpm --filter @different-ai/openwork-landing start` +1. Build: `pnpm --filter @openwork-ee/landing build` +2. Start: `pnpm --filter @openwork-ee/landing start` diff --git a/packages/landing/app/api/enterprise-contact/route.ts b/ee/apps/landing/app/api/enterprise-contact/route.ts similarity index 100% rename from packages/landing/app/api/enterprise-contact/route.ts rename to ee/apps/landing/app/api/enterprise-contact/route.ts diff --git a/packages/landing/app/den/page.tsx b/ee/apps/landing/app/den/page.tsx similarity index 100% rename from packages/landing/app/den/page.tsx rename to ee/apps/landing/app/den/page.tsx diff --git a/packages/landing/app/download/page.tsx b/ee/apps/landing/app/download/page.tsx similarity index 100% rename from packages/landing/app/download/page.tsx rename to ee/apps/landing/app/download/page.tsx diff --git a/packages/landing/app/enteprise/page.tsx b/ee/apps/landing/app/enteprise/page.tsx similarity index 100% rename from packages/landing/app/enteprise/page.tsx rename to ee/apps/landing/app/enteprise/page.tsx diff --git a/packages/landing/app/enterprise/page.tsx b/ee/apps/landing/app/enterprise/page.tsx similarity index 100% rename from packages/landing/app/enterprise/page.tsx rename to ee/apps/landing/app/enterprise/page.tsx diff --git a/packages/landing/app/globals.css b/ee/apps/landing/app/globals.css similarity index 100% rename from packages/landing/app/globals.css rename to ee/apps/landing/app/globals.css diff --git a/packages/landing/app/layout.tsx b/ee/apps/landing/app/layout.tsx similarity index 100% rename from packages/landing/app/layout.tsx rename to ee/apps/landing/app/layout.tsx diff --git a/packages/landing/app/og/page.tsx b/ee/apps/landing/app/og/page.tsx similarity index 100% rename from packages/landing/app/og/page.tsx rename to ee/apps/landing/app/og/page.tsx diff --git a/packages/landing/app/page.tsx b/ee/apps/landing/app/page.tsx similarity index 100% rename from packages/landing/app/page.tsx rename to ee/apps/landing/app/page.tsx diff --git a/packages/landing/app/starter-success/page.tsx b/ee/apps/landing/app/starter-success/page.tsx similarity index 100% rename from packages/landing/app/starter-success/page.tsx rename to ee/apps/landing/app/starter-success/page.tsx diff --git a/packages/landing/components/book-call-form.tsx b/ee/apps/landing/components/book-call-form.tsx similarity index 100% rename from packages/landing/components/book-call-form.tsx rename to ee/apps/landing/components/book-call-form.tsx diff --git a/packages/landing/components/den-activity-panel.tsx b/ee/apps/landing/components/den-activity-panel.tsx similarity index 100% rename from packages/landing/components/den-activity-panel.tsx rename to ee/apps/landing/components/den-activity-panel.tsx diff --git a/packages/landing/components/den-capability-carousel.tsx b/ee/apps/landing/components/den-capability-carousel.tsx similarity index 100% rename from packages/landing/components/den-capability-carousel.tsx rename to ee/apps/landing/components/den-capability-carousel.tsx diff --git a/packages/landing/components/den-comparison-animation.tsx b/ee/apps/landing/components/den-comparison-animation.tsx similarity index 100% rename from packages/landing/components/den-comparison-animation.tsx rename to ee/apps/landing/components/den-comparison-animation.tsx diff --git a/packages/landing/components/den-hero.tsx b/ee/apps/landing/components/den-hero.tsx similarity index 100% rename from packages/landing/components/den-hero.tsx rename to ee/apps/landing/components/den-hero.tsx diff --git a/packages/landing/components/den-how-it-works.tsx b/ee/apps/landing/components/den-how-it-works.tsx similarity index 100% rename from packages/landing/components/den-how-it-works.tsx rename to ee/apps/landing/components/den-how-it-works.tsx diff --git a/packages/landing/components/den-icons.tsx b/ee/apps/landing/components/den-icons.tsx similarity index 100% rename from packages/landing/components/den-icons.tsx rename to ee/apps/landing/components/den-icons.tsx diff --git a/packages/landing/components/den-support-grid.tsx b/ee/apps/landing/components/den-support-grid.tsx similarity index 100% rename from packages/landing/components/den-support-grid.tsx rename to ee/apps/landing/components/den-support-grid.tsx diff --git a/packages/landing/components/den-value-section.tsx b/ee/apps/landing/components/den-value-section.tsx similarity index 100% rename from packages/landing/components/den-value-section.tsx rename to ee/apps/landing/components/den-value-section.tsx diff --git a/packages/landing/components/landing-app-demo-panel.tsx b/ee/apps/landing/components/landing-app-demo-panel.tsx similarity index 100% rename from packages/landing/components/landing-app-demo-panel.tsx rename to ee/apps/landing/components/landing-app-demo-panel.tsx diff --git a/packages/landing/components/landing-background.tsx b/ee/apps/landing/components/landing-background.tsx similarity index 100% rename from packages/landing/components/landing-background.tsx rename to ee/apps/landing/components/landing-background.tsx diff --git a/packages/landing/components/landing-cloud-workers-card.tsx b/ee/apps/landing/components/landing-cloud-workers-card.tsx similarity index 100% rename from packages/landing/components/landing-cloud-workers-card.tsx rename to ee/apps/landing/components/landing-cloud-workers-card.tsx diff --git a/packages/landing/components/landing-demo-flows.ts b/ee/apps/landing/components/landing-demo-flows.ts similarity index 100% rename from packages/landing/components/landing-demo-flows.ts rename to ee/apps/landing/components/landing-demo-flows.ts diff --git a/packages/landing/components/landing-den.tsx b/ee/apps/landing/components/landing-den.tsx similarity index 100% rename from packages/landing/components/landing-den.tsx rename to ee/apps/landing/components/landing-den.tsx diff --git a/packages/landing/components/landing-enterprise.tsx b/ee/apps/landing/components/landing-enterprise.tsx similarity index 100% rename from packages/landing/components/landing-enterprise.tsx rename to ee/apps/landing/components/landing-enterprise.tsx diff --git a/packages/landing/components/landing-home.tsx b/ee/apps/landing/components/landing-home.tsx similarity index 100% rename from packages/landing/components/landing-home.tsx rename to ee/apps/landing/components/landing-home.tsx diff --git a/packages/landing/components/landing-share-package-card.tsx b/ee/apps/landing/components/landing-share-package-card.tsx similarity index 100% rename from packages/landing/components/landing-share-package-card.tsx rename to ee/apps/landing/components/landing-share-package-card.tsx diff --git a/packages/landing/components/og-image-content.tsx b/ee/apps/landing/components/og-image-content.tsx similarity index 100% rename from packages/landing/components/og-image-content.tsx rename to ee/apps/landing/components/og-image-content.tsx diff --git a/packages/landing/components/og-image-svg.ts b/ee/apps/landing/components/og-image-svg.ts similarity index 100% rename from packages/landing/components/og-image-svg.ts rename to ee/apps/landing/components/og-image-svg.ts diff --git a/packages/landing/components/og-image.tsx b/ee/apps/landing/components/og-image.tsx similarity index 100% rename from packages/landing/components/og-image.tsx rename to ee/apps/landing/components/og-image.tsx diff --git a/packages/landing/components/opencode-logo.tsx b/ee/apps/landing/components/opencode-logo.tsx similarity index 100% rename from packages/landing/components/opencode-logo.tsx rename to ee/apps/landing/components/opencode-logo.tsx diff --git a/packages/landing/components/openwork-mark.tsx b/ee/apps/landing/components/openwork-mark.tsx similarity index 100% rename from packages/landing/components/openwork-mark.tsx rename to ee/apps/landing/components/openwork-mark.tsx diff --git a/packages/landing/components/responsive-grain.tsx b/ee/apps/landing/components/responsive-grain.tsx similarity index 100% rename from packages/landing/components/responsive-grain.tsx rename to ee/apps/landing/components/responsive-grain.tsx diff --git a/packages/landing/components/site-footer.tsx b/ee/apps/landing/components/site-footer.tsx similarity index 100% rename from packages/landing/components/site-footer.tsx rename to ee/apps/landing/components/site-footer.tsx diff --git a/packages/landing/components/site-nav.tsx b/ee/apps/landing/components/site-nav.tsx similarity index 100% rename from packages/landing/components/site-nav.tsx rename to ee/apps/landing/components/site-nav.tsx diff --git a/packages/landing/components/waitlist-form.tsx b/ee/apps/landing/components/waitlist-form.tsx similarity index 100% rename from packages/landing/components/waitlist-form.tsx rename to ee/apps/landing/components/waitlist-form.tsx diff --git a/packages/landing/lib/github.ts b/ee/apps/landing/lib/github.ts similarity index 100% rename from packages/landing/lib/github.ts rename to ee/apps/landing/lib/github.ts diff --git a/packages/web/next-env.d.ts b/ee/apps/landing/next-env.d.ts similarity index 100% rename from packages/web/next-env.d.ts rename to ee/apps/landing/next-env.d.ts diff --git a/packages/landing/next.config.js b/ee/apps/landing/next.config.js similarity index 100% rename from packages/landing/next.config.js rename to ee/apps/landing/next.config.js diff --git a/packages/landing/package.json b/ee/apps/landing/package.json similarity index 93% rename from packages/landing/package.json rename to ee/apps/landing/package.json index 73e43219..51a45638 100644 --- a/packages/landing/package.json +++ b/ee/apps/landing/package.json @@ -1,5 +1,5 @@ { - "name": "@different-ai/openwork-landing", + "name": "@openwork-ee/landing", "private": true, "version": "0.0.0", "scripts": { diff --git a/packages/web/postcss.config.js b/ee/apps/landing/postcss.config.js similarity index 100% rename from packages/web/postcss.config.js rename to ee/apps/landing/postcss.config.js diff --git a/packages/landing/pr/2026-03-13-den-value-section-carbon-cta/after-desktop.png b/ee/apps/landing/pr/2026-03-13-den-value-section-carbon-cta/after-desktop.png similarity index 100% rename from packages/landing/pr/2026-03-13-den-value-section-carbon-cta/after-desktop.png rename to ee/apps/landing/pr/2026-03-13-den-value-section-carbon-cta/after-desktop.png diff --git a/packages/landing/pr/2026-03-13-den-value-section-carbon-cta/after-mobile.png b/ee/apps/landing/pr/2026-03-13-den-value-section-carbon-cta/after-mobile.png similarity index 100% rename from packages/landing/pr/2026-03-13-den-value-section-carbon-cta/after-mobile.png rename to ee/apps/landing/pr/2026-03-13-den-value-section-carbon-cta/after-mobile.png diff --git a/packages/landing/pr/2026-03-13-den-value-section-carbon-cta/before-desktop.png b/ee/apps/landing/pr/2026-03-13-den-value-section-carbon-cta/before-desktop.png similarity index 100% rename from packages/landing/pr/2026-03-13-den-value-section-carbon-cta/before-desktop.png rename to ee/apps/landing/pr/2026-03-13-den-value-section-carbon-cta/before-desktop.png diff --git a/packages/landing/pr/2026-03-13-den-value-section-carbon-cta/before-mobile.png b/ee/apps/landing/pr/2026-03-13-den-value-section-carbon-cta/before-mobile.png similarity index 100% rename from packages/landing/pr/2026-03-13-den-value-section-carbon-cta/before-mobile.png rename to ee/apps/landing/pr/2026-03-13-den-value-section-carbon-cta/before-mobile.png diff --git a/packages/landing/pr/2026-03-13-den-value-section-carbon-cta/how-it-works-carbon.png b/ee/apps/landing/pr/2026-03-13-den-value-section-carbon-cta/how-it-works-carbon.png similarity index 100% rename from packages/landing/pr/2026-03-13-den-value-section-carbon-cta/how-it-works-carbon.png rename to ee/apps/landing/pr/2026-03-13-den-value-section-carbon-cta/how-it-works-carbon.png diff --git a/packages/landing/pr/2026-03-13-den-value-section-carbon-cta/what-you-get-carbon.png b/ee/apps/landing/pr/2026-03-13-den-value-section-carbon-cta/what-you-get-carbon.png similarity index 100% rename from packages/landing/pr/2026-03-13-den-value-section-carbon-cta/what-you-get-carbon.png rename to ee/apps/landing/pr/2026-03-13-den-value-section-carbon-cta/what-you-get-carbon.png diff --git a/packages/landing/pr/landing-den.png b/ee/apps/landing/pr/landing-den.png similarity index 100% rename from packages/landing/pr/landing-den.png rename to ee/apps/landing/pr/landing-den.png diff --git a/packages/landing/pr/landing-enterprise.png b/ee/apps/landing/pr/landing-enterprise.png similarity index 100% rename from packages/landing/pr/landing-enterprise.png rename to ee/apps/landing/pr/landing-enterprise.png diff --git a/packages/landing/pr/landing-home.png b/ee/apps/landing/pr/landing-home.png similarity index 100% rename from packages/landing/pr/landing-home.png rename to ee/apps/landing/pr/landing-home.png diff --git a/packages/landing/pr/screenshots/den-get-started-cta-2026-03-17.png b/ee/apps/landing/pr/screenshots/den-get-started-cta-2026-03-17.png similarity index 100% rename from packages/landing/pr/screenshots/den-get-started-cta-2026-03-17.png rename to ee/apps/landing/pr/screenshots/den-get-started-cta-2026-03-17.png diff --git a/packages/landing/pr/screenshots/den-page-refresh/after-reference.png b/ee/apps/landing/pr/screenshots/den-page-refresh/after-reference.png similarity index 100% rename from packages/landing/pr/screenshots/den-page-refresh/after-reference.png rename to ee/apps/landing/pr/screenshots/den-page-refresh/after-reference.png diff --git a/packages/landing/pr/screenshots/den-page-refresh/before-reference.png b/ee/apps/landing/pr/screenshots/den-page-refresh/before-reference.png similarity index 100% rename from packages/landing/pr/screenshots/den-page-refresh/before-reference.png rename to ee/apps/landing/pr/screenshots/den-page-refresh/before-reference.png diff --git a/packages/landing/pr/screenshots/den-page-refresh/desktop-full.png b/ee/apps/landing/pr/screenshots/den-page-refresh/desktop-full.png similarity index 100% rename from packages/landing/pr/screenshots/den-page-refresh/desktop-full.png rename to ee/apps/landing/pr/screenshots/den-page-refresh/desktop-full.png diff --git a/packages/landing/pr/screenshots/den-page-refresh/mobile-full.png b/ee/apps/landing/pr/screenshots/den-page-refresh/mobile-full.png similarity index 100% rename from packages/landing/pr/screenshots/den-page-refresh/mobile-full.png rename to ee/apps/landing/pr/screenshots/den-page-refresh/mobile-full.png diff --git a/packages/landing/public/app-demo.mp4 b/ee/apps/landing/public/app-demo.mp4 similarity index 100% rename from packages/landing/public/app-demo.mp4 rename to ee/apps/landing/public/app-demo.mp4 diff --git a/packages/landing/public/fonts/FKRasterRomanCompact-Blended.woff2 b/ee/apps/landing/public/fonts/FKRasterRomanCompact-Blended.woff2 similarity index 100% rename from packages/landing/public/fonts/FKRasterRomanCompact-Blended.woff2 rename to ee/apps/landing/public/fonts/FKRasterRomanCompact-Blended.woff2 diff --git a/packages/landing/public/fonts/FKRasterRomanCompact-Rounded.woff2 b/ee/apps/landing/public/fonts/FKRasterRomanCompact-Rounded.woff2 similarity index 100% rename from packages/landing/public/fonts/FKRasterRomanCompact-Rounded.woff2 rename to ee/apps/landing/public/fonts/FKRasterRomanCompact-Rounded.woff2 diff --git a/packages/landing/public/fonts/FKRasterRomanCompact-Sharp.woff2 b/ee/apps/landing/public/fonts/FKRasterRomanCompact-Sharp.woff2 similarity index 100% rename from packages/landing/public/fonts/FKRasterRomanCompact-Sharp.woff2 rename to ee/apps/landing/public/fonts/FKRasterRomanCompact-Sharp.woff2 diff --git a/packages/landing/public/fonts/FKRasterRomanCompact-Smooth.woff2 b/ee/apps/landing/public/fonts/FKRasterRomanCompact-Smooth.woff2 similarity index 100% rename from packages/landing/public/fonts/FKRasterRomanCompact-Smooth.woff2 rename to ee/apps/landing/public/fonts/FKRasterRomanCompact-Smooth.woff2 diff --git a/packages/landing/public/fonts/FKRasterRomanCompact.woff2 b/ee/apps/landing/public/fonts/FKRasterRomanCompact.woff2 similarity index 100% rename from packages/landing/public/fonts/FKRasterRomanCompact.woff2 rename to ee/apps/landing/public/fonts/FKRasterRomanCompact.woff2 diff --git a/packages/landing/public/og-image-clean.png b/ee/apps/landing/public/og-image-clean.png similarity index 100% rename from packages/landing/public/og-image-clean.png rename to ee/apps/landing/public/og-image-clean.png diff --git a/packages/landing/public/opencode-wordmark.svg b/ee/apps/landing/public/opencode-wordmark.svg similarity index 100% rename from packages/landing/public/opencode-wordmark.svg rename to ee/apps/landing/public/opencode-wordmark.svg diff --git a/packages/landing/public/openwork-logo.svg b/ee/apps/landing/public/openwork-logo.svg similarity index 100% rename from packages/landing/public/openwork-logo.svg rename to ee/apps/landing/public/openwork-logo.svg diff --git a/services/openwork-share/public/openwork-mark.svg b/ee/apps/landing/public/openwork-mark.svg similarity index 100% rename from services/openwork-share/public/openwork-mark.svg rename to ee/apps/landing/public/openwork-mark.svg diff --git a/packages/landing/tailwind.config.js b/ee/apps/landing/tailwind.config.js similarity index 100% rename from packages/landing/tailwind.config.js rename to ee/apps/landing/tailwind.config.js diff --git a/packages/web/tsconfig.json b/ee/apps/landing/tsconfig.json similarity index 100% rename from packages/web/tsconfig.json rename to ee/apps/landing/tsconfig.json diff --git a/packages/den-db/.env.example b/ee/packages/den-db/.env.example similarity index 100% rename from packages/den-db/.env.example rename to ee/packages/den-db/.env.example diff --git a/packages/den-db/drizzle.config.ts b/ee/packages/den-db/drizzle.config.ts similarity index 100% rename from packages/den-db/drizzle.config.ts rename to ee/packages/den-db/drizzle.config.ts diff --git a/packages/den-db/package.json b/ee/packages/den-db/package.json similarity index 90% rename from packages/den-db/package.json rename to ee/packages/den-db/package.json index f186eae8..7749cf5a 100644 --- a/packages/den-db/package.json +++ b/ee/packages/den-db/package.json @@ -1,11 +1,12 @@ { - "name": "@openwork/den-db", + "name": "@openwork-ee/den-db", "private": true, "type": "module", "main": "./dist/index.js", "types": "./dist/index.d.ts", "exports": { ".": "./dist/index.js", + "./schema": "./dist/schema.js", "./drizzle": "./dist/drizzle.js", "./typeid": "./dist/typeid.js" }, @@ -17,7 +18,7 @@ "db:push": "pnpm run build && node --import tsx ./node_modules/drizzle-kit/bin.cjs push --config drizzle.config.ts" }, "dependencies": { - "@different-ai/openwork-utils": "workspace:*", + "@openwork-ee/utils": "workspace:*", "@planetscale/database": "^1.19.0", "drizzle-orm": "^0.45.1", "mysql2": "^3.11.3" diff --git a/packages/den-db/src/client.ts b/ee/packages/den-db/src/client.ts similarity index 100% rename from packages/den-db/src/client.ts rename to ee/packages/den-db/src/client.ts diff --git a/packages/den-db/src/columns.ts b/ee/packages/den-db/src/columns.ts similarity index 94% rename from packages/den-db/src/columns.ts rename to ee/packages/den-db/src/columns.ts index d082254e..3f35f499 100644 --- a/packages/den-db/src/columns.ts +++ b/ee/packages/den-db/src/columns.ts @@ -3,7 +3,7 @@ import { type DenTypeId, type DenTypeIdName, normalizeDenTypeId, -} from "@different-ai/openwork-utils/typeid" +} from "@openwork-ee/utils/typeid" const INTERNAL_ID_LENGTH = 64 const AUTH_EXTERNAL_ID_LENGTH = 36 diff --git a/packages/den-db/src/drizzle.ts b/ee/packages/den-db/src/drizzle.ts similarity index 100% rename from packages/den-db/src/drizzle.ts rename to ee/packages/den-db/src/drizzle.ts diff --git a/packages/den-db/src/index.ts b/ee/packages/den-db/src/index.ts similarity index 100% rename from packages/den-db/src/index.ts rename to ee/packages/den-db/src/index.ts diff --git a/packages/den-db/src/load-env.ts b/ee/packages/den-db/src/load-env.ts similarity index 100% rename from packages/den-db/src/load-env.ts rename to ee/packages/den-db/src/load-env.ts diff --git a/packages/den-db/src/mysql-config.ts b/ee/packages/den-db/src/mysql-config.ts similarity index 100% rename from packages/den-db/src/mysql-config.ts rename to ee/packages/den-db/src/mysql-config.ts diff --git a/packages/den-db/src/schema.ts b/ee/packages/den-db/src/schema.ts similarity index 100% rename from packages/den-db/src/schema.ts rename to ee/packages/den-db/src/schema.ts diff --git a/ee/packages/den-db/src/typeid.ts b/ee/packages/den-db/src/typeid.ts new file mode 100644 index 00000000..31a8d552 --- /dev/null +++ b/ee/packages/den-db/src/typeid.ts @@ -0,0 +1 @@ +export * from "@openwork-ee/utils/typeid" diff --git a/packages/den-db/tsconfig.json b/ee/packages/den-db/tsconfig.json similarity index 100% rename from packages/den-db/tsconfig.json rename to ee/packages/den-db/tsconfig.json diff --git a/packages/utils/package.json b/ee/packages/utils/package.json similarity index 90% rename from packages/utils/package.json rename to ee/packages/utils/package.json index d2683e83..c2796be4 100644 --- a/packages/utils/package.json +++ b/ee/packages/utils/package.json @@ -1,5 +1,5 @@ { - "name": "@different-ai/openwork-utils", + "name": "@openwork-ee/utils", "private": true, "type": "module", "main": "./dist/index.js", diff --git a/packages/utils/src/index.ts b/ee/packages/utils/src/index.ts similarity index 100% rename from packages/utils/src/index.ts rename to ee/packages/utils/src/index.ts diff --git a/packages/utils/src/typeid.ts b/ee/packages/utils/src/typeid.ts similarity index 100% rename from packages/utils/src/typeid.ts rename to ee/packages/utils/src/typeid.ts diff --git a/packages/utils/tsconfig.json b/ee/packages/utils/tsconfig.json similarity index 100% rename from packages/utils/tsconfig.json rename to ee/packages/utils/tsconfig.json diff --git a/package.json b/package.json index 5c8f0f64..5c56166f 100644 --- a/package.json +++ b/package.json @@ -3,37 +3,37 @@ "private": true, "version": "0.0.0", "scripts": { - "dev": "OPENWORK_DEV_MODE=1 pnpm --filter @different-ai/openwork dev", - "dev:ui": "OPENWORK_DEV_MODE=1 pnpm --filter @different-ai/openwork-ui dev", - "dev:web": "OPENWORK_DEV_MODE=1 pnpm --filter @different-ai/openwork-web dev", + "dev": "OPENWORK_DEV_MODE=1 pnpm --filter @openwork/desktop dev", + "dev:ui": "OPENWORK_DEV_MODE=1 pnpm --filter @openwork/app dev", + "dev:web": "OPENWORK_DEV_MODE=1 pnpm --filter @openwork-ee/den-web dev", "dev:web-local": "OPENWORK_DEV_MODE=1 bash scripts/dev-web-local.sh", "dev:den-docker": "bash packaging/docker/den-dev-up.sh", "dev:headless-web": "OPENWORK_DEV_MODE=1 bun scripts/dev-headless-web.ts", "build": "node scripts/build.mjs", - "build:ui": "pnpm --filter @different-ai/openwork-ui build", - "build:web": "pnpm --filter @different-ai/openwork-web build", - "preview": "pnpm --filter @different-ai/openwork-ui preview", - "typecheck": "pnpm --filter @different-ai/openwork-ui typecheck", - "test:health": "pnpm --filter @different-ai/openwork-ui test:health", - "test:sessions": "pnpm --filter @different-ai/openwork-ui test:sessions", - "test:refactor": "pnpm --filter @different-ai/openwork-ui test:refactor", - "test:events": "pnpm --filter @different-ai/openwork-ui test:events", - "test:todos": "pnpm --filter @different-ai/openwork-ui test:todos", - "test:permissions": "pnpm --filter @different-ai/openwork-ui test:permissions", - "test:session-switch": "pnpm --filter @different-ai/openwork-ui test:session-switch", - "test:fs-engine": "pnpm --filter @different-ai/openwork-ui test:fs-engine", - "test:e2e": "pnpm --filter @different-ai/openwork-ui test:e2e", + "build:ui": "pnpm --filter @openwork/app build", + "build:web": "pnpm --filter @openwork-ee/den-web build", + "preview": "pnpm --filter @openwork/app preview", + "typecheck": "pnpm --filter @openwork/app typecheck", + "test:health": "pnpm --filter @openwork/app test:health", + "test:sessions": "pnpm --filter @openwork/app test:sessions", + "test:refactor": "pnpm --filter @openwork/app test:refactor", + "test:events": "pnpm --filter @openwork/app test:events", + "test:todos": "pnpm --filter @openwork/app test:todos", + "test:permissions": "pnpm --filter @openwork/app test:permissions", + "test:session-switch": "pnpm --filter @openwork/app test:session-switch", + "test:fs-engine": "pnpm --filter @openwork/app test:fs-engine", + "test:e2e": "pnpm --filter @openwork/app test:e2e", "test:orchestrator": "pnpm --filter openwork-orchestrator test:router", - "bump:patch": "pnpm --filter @different-ai/openwork-ui bump:patch", - "bump:minor": "pnpm --filter @different-ai/openwork-ui bump:minor", - "bump:major": "pnpm --filter @different-ai/openwork-ui bump:major", - "bump:set": "pnpm --filter @different-ai/openwork-ui bump:set", + "bump:patch": "pnpm --filter @openwork/app bump:patch", + "bump:minor": "pnpm --filter @openwork/app bump:minor", + "bump:major": "pnpm --filter @openwork/app bump:major", + "bump:set": "pnpm --filter @openwork/app bump:set", "release:review": "node scripts/release/review.mjs", "release:prepare": "node scripts/release/prepare.mjs", "release:prepare:dry": "node scripts/release/prepare.mjs --dry-run", "release:ship": "node scripts/release/ship.mjs", "release:ship:watch": "node scripts/release/ship.mjs --watch", - "tauri": "pnpm --filter @different-ai/openwork exec tauri" + "tauri": "pnpm --filter @openwork/desktop exec tauri" }, "pnpm": { "onlyBuiltDependencies": [ diff --git a/packages/den-db/src/typeid.ts b/packages/den-db/src/typeid.ts deleted file mode 100644 index 975cdda6..00000000 --- a/packages/den-db/src/typeid.ts +++ /dev/null @@ -1 +0,0 @@ -export * from "@different-ai/openwork-utils/typeid" diff --git a/packages/docs/opencode-router.mdx b/packages/docs/opencode-router.mdx index 42884aeb..54e2dd6d 100644 --- a/packages/docs/opencode-router.mdx +++ b/packages/docs/opencode-router.mdx @@ -22,7 +22,7 @@ opencode-router Or from monorepo: ```bash -pnpm -C packages/opencode-router setup +pnpm -C apps/opencode-router setup opencode-router start ``` diff --git a/packages/server/cli b/packages/server/cli deleted file mode 100755 index cd9b85e9..00000000 Binary files a/packages/server/cli and /dev/null differ diff --git a/packaging/docker/docker-compose.dev.yml b/packaging/docker/docker-compose.dev.yml index abff488e..caa0f1bb 100644 --- a/packaging/docker/docker-compose.dev.yml +++ b/packaging/docker/docker-compose.dev.yml @@ -66,8 +66,8 @@ services: # --- Use source entrypoints for the dev stack --- # The orchestrator can spawn .ts files via Bun directly, which avoids bind-mount # issues from bun --compile inside Docker on macOS. - export OPENWORK_SERVER_BIN="/app/packages/server/src/cli.ts" - export OPENCODE_ROUTER_BIN="/app/packages/opencode-router/src/cli.ts" + export OPENWORK_SERVER_BIN="/app/apps/server/src/cli.ts" + export OPENCODE_ROUTER_BIN="/app/apps/opencode-router/src/cli.ts" # --- Resolve tokens --- if [ -z "$$OPENWORK_TOKEN" ]; then @@ -169,7 +169,7 @@ services: export HOST="0.0.0.0" export PORT="5173" - exec pnpm --filter @different-ai/openwork-ui exec vite \ + exec pnpm --filter @openwork/app exec vite \ --host 0.0.0.0 \ --port 5173 \ --strictPort @@ -196,7 +196,7 @@ services: mkdir -p /app/tmp/share-service-blobs echo "[share] Building Next app..." - pnpm --dir services/openwork-share build + pnpm --dir apps/share build echo "" echo "============================================" @@ -205,7 +205,7 @@ services: echo "============================================" echo "" - exec pnpm --dir services/openwork-share exec next start --hostname 0.0.0.0 --port 3000 + exec pnpm --dir apps/share exec next start --hostname 0.0.0.0 --port 3000 ports: - "${SHARE_PORT:-3006}:3000" healthcheck: diff --git a/packaging/docker/docker-compose.yml b/packaging/docker/docker-compose.yml index a92494a0..5e50de5f 100644 --- a/packaging/docker/docker-compose.yml +++ b/packaging/docker/docker-compose.yml @@ -4,7 +4,7 @@ services: context: . dockerfile: Dockerfile args: - # Keep this in sync with packages/orchestrator/package.json if you want a pinned release. + # Keep this in sync with apps/orchestrator/package.json if you want a pinned release. OPENWORK_ORCHESTRATOR_VERSION: 0.11.22 ports: - "8787:8787" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index d1cc1d5a..77738afe 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -13,7 +13,7 @@ importers: .: {} - packages/app: + apps/app: dependencies: '@codemirror/commands': specifier: ^6.8.0 @@ -38,19 +38,19 @@ importers: version: 3.0.0 '@solid-primitives/event-bus': specifier: ^1.1.2 - version: 1.1.2(solid-js@1.9.10) + version: 1.1.2(solid-js@1.9.9) '@solid-primitives/storage': specifier: ^4.3.3 - version: 4.3.3(solid-js@1.9.10) + version: 4.3.3(solid-js@1.9.9) '@solidjs/router': specifier: ^0.15.4 - version: 0.15.4(patch_hash=1db11a7c28fe4da76187d42efaffc6b9a70ad370462fffb794ff90e67744d770)(solid-js@1.9.10) + version: 0.15.4(patch_hash=1db11a7c28fe4da76187d42efaffc6b9a70ad370462fffb794ff90e67744d770)(solid-js@1.9.9) '@tanstack/solid-virtual': specifier: ^3.13.19 - version: 3.13.19(solid-js@1.9.10) + version: 3.13.19(solid-js@1.9.9) '@tauri-apps/api': specifier: ^2.0.0 - version: 2.9.1 + version: 2.10.1 '@tauri-apps/plugin-deep-link': specifier: ^2.4.7 version: 2.4.7 @@ -77,13 +77,13 @@ importers: version: 3.3.1 lucide-solid: specifier: ^0.562.0 - version: 0.562.0(solid-js@1.9.10) + version: 0.562.0(solid-js@1.9.9) marked: specifier: ^17.0.1 version: 17.0.1 solid-js: specifier: ^1.9.0 - version: 1.9.10 + version: 1.9.9 devDependencies: '@tailwindcss/vite': specifier: ^4.1.18 @@ -99,86 +99,15 @@ importers: version: 6.4.1(@types/node@25.4.0)(jiti@2.6.1)(lightningcss@1.30.2)(tsx@4.21.0)(yaml@2.8.2) vite-plugin-solid: specifier: ^2.11.0 - version: 2.11.10(solid-js@1.9.10)(vite@6.4.1(@types/node@25.4.0)(jiti@2.6.1)(lightningcss@1.30.2)(tsx@4.21.0)(yaml@2.8.2)) + version: 2.11.10(solid-js@1.9.9)(vite@6.4.1(@types/node@25.4.0)(jiti@2.6.1)(lightningcss@1.30.2)(tsx@4.21.0)(yaml@2.8.2)) - packages/den-db: - dependencies: - '@different-ai/openwork-utils': - specifier: workspace:* - version: link:../utils - '@planetscale/database': - specifier: ^1.19.0 - version: 1.19.0 - drizzle-orm: - specifier: ^0.45.1 - version: 0.45.1(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(bun-types@1.3.6)(kysely@0.28.11)(mysql2@3.17.4) - mysql2: - specifier: ^3.11.3 - version: 3.17.4 - devDependencies: - '@types/node': - specifier: ^20.11.30 - version: 20.12.12 - drizzle-kit: - specifier: ^0.31.9 - version: 0.31.9 - tsx: - specifier: ^4.21.0 - version: 4.21.0 - typescript: - specifier: ^5.5.4 - version: 5.9.3 - - packages/desktop: + apps/desktop: devDependencies: '@tauri-apps/cli': specifier: ^2.0.0 version: 2.9.6 - packages/landing: - dependencies: - '@paper-design/shaders-react': - specifier: 0.0.71 - version: 0.0.71(@types/react@18.2.79)(react@18.2.0) - framer-motion: - specifier: ^12.35.1 - version: 12.35.1(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - lucide-react: - specifier: ^0.577.0 - version: 0.577.0(react@18.2.0) - next: - specifier: 14.2.5 - version: 14.2.5(@opentelemetry/api@1.9.0)(@playwright/test@1.58.2)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - react: - specifier: 18.2.0 - version: 18.2.0 - react-dom: - specifier: 18.2.0 - version: 18.2.0(react@18.2.0) - devDependencies: - '@types/node': - specifier: 20.12.12 - version: 20.12.12 - '@types/react': - specifier: 18.2.79 - version: 18.2.79 - '@types/react-dom': - specifier: 18.2.25 - version: 18.2.25 - autoprefixer: - specifier: 10.4.19 - version: 10.4.19(postcss@8.4.38) - postcss: - specifier: 8.4.38 - version: 8.4.38 - tailwindcss: - specifier: 3.4.7 - version: 3.4.7 - typescript: - specifier: 5.4.5 - version: 5.4.5 - - packages/opencode-router: + apps/opencode-router: dependencies: '@opencode-ai/sdk': specifier: ^1.1.31 @@ -212,7 +141,7 @@ importers: specifier: ^5.6.3 version: 5.9.3 - packages/orchestrator: + apps/orchestrator: dependencies: '@opencode-ai/sdk': specifier: ^1.1.31 @@ -223,12 +152,12 @@ importers: '@opentui/solid': specifier: 0.1.77 version: 0.1.77(solid-js@1.9.9)(stage-js@1.0.0-alpha.17)(typescript@5.9.3)(web-tree-sitter@0.25.10) + '@openwork/server': + specifier: 0.11.170 + version: link:../server opencode-router: specifier: 0.11.170 version: link:../opencode-router - openwork-server: - specifier: 0.11.170 - version: link:../server solid-js: specifier: 1.9.9 version: 1.9.9 @@ -258,7 +187,7 @@ importers: specifier: ^5.6.3 version: 5.9.3 - packages/server: + apps/server: dependencies: jsonc-parser: specifier: ^3.2.1 @@ -283,128 +212,7 @@ importers: specifier: ^5.6.3 version: 5.9.3 - packages/utils: - dependencies: - typeid-js: - specifier: ^1.2.0 - version: 1.2.0 - devDependencies: - '@types/node': - specifier: ^20.11.30 - version: 20.12.12 - typescript: - specifier: ^5.5.4 - version: 5.9.3 - - packages/web: - dependencies: - next: - specifier: 14.2.5 - version: 14.2.5(@opentelemetry/api@1.9.0)(@playwright/test@1.58.2)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - react: - specifier: 18.2.0 - version: 18.2.0 - react-dom: - specifier: 18.2.0 - version: 18.2.0(react@18.2.0) - devDependencies: - '@types/node': - specifier: 20.12.12 - version: 20.12.12 - '@types/react': - specifier: 18.2.79 - version: 18.2.79 - '@types/react-dom': - specifier: 18.2.25 - version: 18.2.25 - autoprefixer: - specifier: 10.4.19 - version: 10.4.19(postcss@8.4.38) - postcss: - specifier: 8.4.38 - version: 8.4.38 - tailwindcss: - specifier: 3.4.7 - version: 3.4.7 - typescript: - specifier: 5.4.5 - version: 5.4.5 - - services/den-v2: - dependencies: - '@daytonaio/sdk': - specifier: ^0.150.0 - version: 0.150.0(ws@8.19.0) - better-auth: - specifier: ^1.4.18 - version: 1.4.18(drizzle-kit@0.31.9)(drizzle-orm@0.45.1(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(bun-types@1.3.6)(kysely@0.28.11)(mysql2@3.17.4))(mysql2@3.17.4)(next@16.1.6(@opentelemetry/api@1.9.0)(@playwright/test@1.58.2)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(solid-js@1.9.10) - cors: - specifier: ^2.8.5 - version: 2.8.6 - dotenv: - specifier: ^16.4.5 - version: 16.6.1 - drizzle-orm: - specifier: ^0.45.1 - version: 0.45.1(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(bun-types@1.3.6)(kysely@0.28.11)(mysql2@3.17.4) - express: - specifier: ^4.19.2 - version: 4.22.1 - mysql2: - specifier: ^3.11.3 - version: 3.17.4 - zod: - specifier: ^4.3.6 - version: 4.3.6 - devDependencies: - '@types/cors': - specifier: ^2.8.17 - version: 2.8.19 - '@types/express': - specifier: ^4.17.21 - version: 4.17.25 - '@types/node': - specifier: ^20.11.30 - version: 20.12.12 - drizzle-kit: - specifier: ^0.31.9 - version: 0.31.9 - tsx: - specifier: ^4.15.7 - version: 4.21.0 - typescript: - specifier: ^5.5.4 - version: 5.9.3 - - services/den-worker-proxy: - dependencies: - '@daytonaio/sdk': - specifier: ^0.150.0 - version: 0.150.0(ws@8.19.0) - '@hono/node-server': - specifier: ^1.13.8 - version: 1.19.11(hono@4.12.8) - dotenv: - specifier: ^16.4.5 - version: 16.6.1 - hono: - specifier: ^4.7.2 - version: 4.12.8 - zod: - specifier: ^4.3.6 - version: 4.3.6 - devDependencies: - '@types/node': - specifier: ^20.11.30 - version: 20.12.12 - tsx: - specifier: ^4.15.7 - version: 4.21.0 - typescript: - specifier: ^5.5.4 - version: 5.9.3 - - services/openwork-share: + apps/share: dependencies: '@paper-design/shaders-react': specifier: 0.0.71 @@ -450,6 +258,210 @@ importers: specifier: ^5.9.3 version: 5.9.3 + ee/apps/den-controller: + dependencies: + '@daytonaio/sdk': + specifier: ^0.150.0 + version: 0.150.0(ws@8.19.0) + '@openwork-ee/den-db': + specifier: workspace:* + version: link:../../packages/den-db + '@openwork-ee/utils': + specifier: workspace:* + version: link:../../packages/utils + better-auth: + specifier: ^1.4.18 + version: 1.4.18(drizzle-kit@0.31.9)(drizzle-orm@0.45.1(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(bun-types@1.3.6)(kysely@0.28.11)(mysql2@3.17.4))(mysql2@3.17.4)(next@16.1.6(@opentelemetry/api@1.9.0)(@playwright/test@1.58.2)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(solid-js@1.9.10) + cors: + specifier: ^2.8.5 + version: 2.8.6 + dotenv: + specifier: ^16.4.5 + version: 16.6.1 + drizzle-orm: + specifier: ^0.45.1 + version: 0.45.1(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(bun-types@1.3.6)(kysely@0.28.11)(mysql2@3.17.4) + express: + specifier: ^4.19.2 + version: 4.22.1 + mysql2: + specifier: ^3.11.3 + version: 3.17.4 + zod: + specifier: ^4.3.6 + version: 4.3.6 + devDependencies: + '@types/cors': + specifier: ^2.8.17 + version: 2.8.19 + '@types/express': + specifier: ^4.17.21 + version: 4.17.25 + '@types/node': + specifier: ^20.11.30 + version: 20.12.12 + drizzle-kit: + specifier: ^0.31.9 + version: 0.31.9 + tsx: + specifier: ^4.15.7 + version: 4.21.0 + typescript: + specifier: ^5.5.4 + version: 5.9.3 + + ee/apps/den-web: + dependencies: + next: + specifier: 14.2.5 + version: 14.2.5(@opentelemetry/api@1.9.0)(@playwright/test@1.58.2)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + react: + specifier: 18.2.0 + version: 18.2.0 + react-dom: + specifier: 18.2.0 + version: 18.2.0(react@18.2.0) + devDependencies: + '@types/node': + specifier: 20.12.12 + version: 20.12.12 + '@types/react': + specifier: 18.2.79 + version: 18.2.79 + '@types/react-dom': + specifier: 18.2.25 + version: 18.2.25 + autoprefixer: + specifier: 10.4.19 + version: 10.4.19(postcss@8.4.38) + postcss: + specifier: 8.4.38 + version: 8.4.38 + tailwindcss: + specifier: 3.4.7 + version: 3.4.7 + typescript: + specifier: 5.4.5 + version: 5.4.5 + + ee/apps/den-worker-proxy: + dependencies: + '@daytonaio/sdk': + specifier: ^0.150.0 + version: 0.150.0(ws@8.19.0) + '@hono/node-server': + specifier: ^1.13.8 + version: 1.19.11(hono@4.12.8) + '@openwork-ee/den-db': + specifier: workspace:* + version: link:../../packages/den-db + '@openwork-ee/utils': + specifier: workspace:* + version: link:../../packages/utils + dotenv: + specifier: ^16.4.5 + version: 16.6.1 + hono: + specifier: ^4.7.2 + version: 4.12.8 + zod: + specifier: ^4.3.6 + version: 4.3.6 + devDependencies: + '@types/node': + specifier: ^20.11.30 + version: 20.12.12 + tsx: + specifier: ^4.15.7 + version: 4.21.0 + typescript: + specifier: ^5.5.4 + version: 5.9.3 + + ee/apps/landing: + dependencies: + '@paper-design/shaders-react': + specifier: 0.0.71 + version: 0.0.71(@types/react@18.2.79)(react@18.2.0) + framer-motion: + specifier: ^12.35.1 + version: 12.35.1(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + lucide-react: + specifier: ^0.577.0 + version: 0.577.0(react@18.2.0) + next: + specifier: 14.2.5 + version: 14.2.5(@opentelemetry/api@1.9.0)(@playwright/test@1.58.2)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + react: + specifier: 18.2.0 + version: 18.2.0 + react-dom: + specifier: 18.2.0 + version: 18.2.0(react@18.2.0) + devDependencies: + '@types/node': + specifier: 20.12.12 + version: 20.12.12 + '@types/react': + specifier: 18.2.79 + version: 18.2.79 + '@types/react-dom': + specifier: 18.2.25 + version: 18.2.25 + autoprefixer: + specifier: 10.4.19 + version: 10.4.19(postcss@8.4.38) + postcss: + specifier: 8.4.38 + version: 8.4.38 + tailwindcss: + specifier: 3.4.7 + version: 3.4.7 + typescript: + specifier: 5.4.5 + version: 5.4.5 + + ee/packages/den-db: + dependencies: + '@openwork-ee/utils': + specifier: workspace:* + version: link:../utils + '@planetscale/database': + specifier: ^1.19.0 + version: 1.19.0 + drizzle-orm: + specifier: ^0.45.1 + version: 0.45.1(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(bun-types@1.3.6)(kysely@0.28.11)(mysql2@3.17.4) + mysql2: + specifier: ^3.11.3 + version: 3.17.4 + devDependencies: + '@types/node': + specifier: ^20.11.30 + version: 20.12.12 + drizzle-kit: + specifier: ^0.31.9 + version: 0.31.9 + tsx: + specifier: ^4.21.0 + version: 4.21.0 + typescript: + specifier: ^5.5.4 + version: 5.9.3 + + ee/packages/utils: + dependencies: + typeid-js: + specifier: ^1.2.0 + version: 1.2.0 + devDependencies: + '@types/node': + specifier: ^20.11.30 + version: 20.12.12 + typescript: + specifier: ^5.5.4 + version: 5.9.3 + packages: '@alloc/quick-lru@5.2.0': @@ -2523,9 +2535,6 @@ packages: '@tauri-apps/api@2.10.1': resolution: {integrity: sha512-hKL/jWf293UDSUN09rR69hrToyIXBb8CjGaWC7gfinvnQrBVvnLr08FeFi38gxtugAVyVcTa5/FD/Xnkb1siBw==} - '@tauri-apps/api@2.9.1': - resolution: {integrity: sha512-IGlhP6EivjXHepbBic618GOmiWe4URJiIeZFlB7x3czM0yDHHYviH1Xvoiv4FefdkQtn6v7TuwWCRfOGdnVUGw==} - '@tauri-apps/cli-darwin-arm64@2.9.6': resolution: {integrity: sha512-gf5no6N9FCk1qMrti4lfwP77JHP5haASZgVbBgpZG7BUepB3fhiLCXGUK8LvuOjP36HivXewjg72LTnPDScnQQ==} engines: {node: '>= 10'} @@ -2773,9 +2782,6 @@ packages: resolution: {integrity: sha512-NZKeq9AfyQvEeNlN0zSYAaWrmBffJh3IELMZfRpJVWgrpEbtEpnjvzqBPf+mxoI287JohRDoa+/nsfqqiZmF6g==} engines: {node: '>= 6.0.0'} - axios@1.13.4: - resolution: {integrity: sha512-1wVkUaAO6WyaYtCkcYCOx12ZgpGf9Zif+qXa4n+oYzK558YryKqiL6UWwd5DqiH3VRW0GYhTZQ/vlgJrCoNQlg==} - axios@1.13.6: resolution: {integrity: sha512-ChTCHMouEe2kn713WHbQGcuYrr6fXTBiu460OTwWrWob16g1bXn4vtz07Ope7ewMozJAnEquLk5lWQWtBig9DQ==} @@ -6613,7 +6619,7 @@ snapshots: '@slack/types': 2.19.0 '@types/node': 20.12.12 '@types/retry': 0.12.0 - axios: 1.13.4 + axios: 1.13.6 eventemitter3: 5.0.4 form-data: 4.0.5 is-electron: 2.2.2 @@ -6963,23 +6969,23 @@ snapshots: dependencies: tslib: 2.8.1 - '@solid-primitives/event-bus@1.1.2(solid-js@1.9.10)': + '@solid-primitives/event-bus@1.1.2(solid-js@1.9.9)': dependencies: - '@solid-primitives/utils': 6.3.2(solid-js@1.9.10) - solid-js: 1.9.10 + '@solid-primitives/utils': 6.3.2(solid-js@1.9.9) + solid-js: 1.9.9 - '@solid-primitives/storage@4.3.3(solid-js@1.9.10)': + '@solid-primitives/storage@4.3.3(solid-js@1.9.9)': dependencies: - '@solid-primitives/utils': 6.3.2(solid-js@1.9.10) - solid-js: 1.9.10 + '@solid-primitives/utils': 6.3.2(solid-js@1.9.9) + solid-js: 1.9.9 - '@solid-primitives/utils@6.3.2(solid-js@1.9.10)': + '@solid-primitives/utils@6.3.2(solid-js@1.9.9)': dependencies: - solid-js: 1.9.10 + solid-js: 1.9.9 - '@solidjs/router@0.15.4(patch_hash=1db11a7c28fe4da76187d42efaffc6b9a70ad370462fffb794ff90e67744d770)(solid-js@1.9.10)': + '@solidjs/router@0.15.4(patch_hash=1db11a7c28fe4da76187d42efaffc6b9a70ad370462fffb794ff90e67744d770)(solid-js@1.9.9)': dependencies: - solid-js: 1.9.10 + solid-js: 1.9.9 '@standard-schema/spec@1.1.0': {} @@ -7062,17 +7068,15 @@ snapshots: tailwindcss: 4.1.18 vite: 6.4.1(@types/node@25.4.0)(jiti@2.6.1)(lightningcss@1.30.2)(tsx@4.21.0)(yaml@2.8.2) - '@tanstack/solid-virtual@3.13.19(solid-js@1.9.10)': + '@tanstack/solid-virtual@3.13.19(solid-js@1.9.9)': dependencies: '@tanstack/virtual-core': 3.13.19 - solid-js: 1.9.10 + solid-js: 1.9.9 '@tanstack/virtual-core@3.13.19': {} '@tauri-apps/api@2.10.1': {} - '@tauri-apps/api@2.9.1': {} - '@tauri-apps/cli-darwin-arm64@2.9.6': optional: true @@ -7126,23 +7130,23 @@ snapshots: '@tauri-apps/plugin-dialog@2.6.0': dependencies: - '@tauri-apps/api': 2.9.1 + '@tauri-apps/api': 2.10.1 '@tauri-apps/plugin-http@2.5.6': dependencies: - '@tauri-apps/api': 2.9.1 + '@tauri-apps/api': 2.10.1 '@tauri-apps/plugin-opener@2.5.3': dependencies: - '@tauri-apps/api': 2.9.1 + '@tauri-apps/api': 2.10.1 '@tauri-apps/plugin-process@2.3.1': dependencies: - '@tauri-apps/api': 2.9.1 + '@tauri-apps/api': 2.10.1 '@tauri-apps/plugin-updater@2.9.0': dependencies: - '@tauri-apps/api': 2.9.1 + '@tauri-apps/api': 2.10.1 '@tokenizer/token@0.3.0': {} @@ -7319,14 +7323,6 @@ snapshots: aws-ssl-profiles@1.1.2: {} - axios@1.13.4: - dependencies: - follow-redirects: 1.15.11 - form-data: 4.0.5 - proxy-from-env: 1.1.0 - transitivePeerDependencies: - - debug - axios@1.13.6: dependencies: follow-redirects: 1.15.11 @@ -7368,12 +7364,12 @@ snapshots: optionalDependencies: solid-js: 1.9.9 - babel-preset-solid@1.9.9(@babel/core@7.28.6)(solid-js@1.9.10): + babel-preset-solid@1.9.9(@babel/core@7.28.6)(solid-js@1.9.9): dependencies: '@babel/core': 7.28.6 babel-plugin-jsx-dom-expressions: 0.40.3(@babel/core@7.28.6) optionalDependencies: - solid-js: 1.9.10 + solid-js: 1.9.9 balanced-match@1.0.2: {} @@ -8175,9 +8171,9 @@ snapshots: dependencies: react: 18.2.0 - lucide-solid@0.562.0(solid-js@1.9.10): + lucide-solid@0.562.0(solid-js@1.9.9): dependencies: - solid-js: 1.9.10 + solid-js: 1.9.9 magic-string@0.30.21: dependencies: @@ -8785,6 +8781,7 @@ snapshots: csstype: 3.2.3 seroval: 1.3.2 seroval-plugins: 1.3.3(seroval@1.3.2) + optional: true solid-js@1.9.9: dependencies: @@ -8792,12 +8789,12 @@ snapshots: seroval: 1.3.2 seroval-plugins: 1.3.3(seroval@1.3.2) - solid-refresh@0.6.3(solid-js@1.9.10): + solid-refresh@0.6.3(solid-js@1.9.9): dependencies: '@babel/generator': 7.28.6 '@babel/helper-module-imports': 7.28.6 '@babel/types': 7.28.6 - solid-js: 1.9.10 + solid-js: 1.9.9 transitivePeerDependencies: - supports-color @@ -9007,14 +9004,14 @@ snapshots: vary@1.1.2: {} - vite-plugin-solid@2.11.10(solid-js@1.9.10)(vite@6.4.1(@types/node@25.4.0)(jiti@2.6.1)(lightningcss@1.30.2)(tsx@4.21.0)(yaml@2.8.2)): + vite-plugin-solid@2.11.10(solid-js@1.9.9)(vite@6.4.1(@types/node@25.4.0)(jiti@2.6.1)(lightningcss@1.30.2)(tsx@4.21.0)(yaml@2.8.2)): dependencies: '@babel/core': 7.28.6 '@types/babel__core': 7.20.5 - babel-preset-solid: 1.9.9(@babel/core@7.28.6)(solid-js@1.9.10) + babel-preset-solid: 1.9.9(@babel/core@7.28.6)(solid-js@1.9.9) merge-anything: 5.1.7 - solid-js: 1.9.10 - solid-refresh: 0.6.3(solid-js@1.9.10) + solid-js: 1.9.9 + solid-refresh: 0.6.3(solid-js@1.9.9) vite: 6.4.1(@types/node@25.4.0)(jiti@2.6.1)(lightningcss@1.30.2)(tsx@4.21.0)(yaml@2.8.2) vitefu: 1.1.1(vite@6.4.1(@types/node@25.4.0)(jiti@2.6.1)(lightningcss@1.30.2)(tsx@4.21.0)(yaml@2.8.2)) transitivePeerDependencies: diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 22373e72..da6e35ea 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -1,3 +1,5 @@ packages: + - "apps/*" - "packages/*" - - "services/*" + - "ee/apps/*" + - "ee/packages/*" diff --git a/scripts/build.mjs b/scripts/build.mjs index 8604c72b..b087bbf2 100644 --- a/scripts/build.mjs +++ b/scripts/build.mjs @@ -2,7 +2,7 @@ import { execSync } from "node:child_process"; const isVercel = Boolean(process.env.VERCEL); const command = isVercel - ? "pnpm --dir services/openwork-share run build" - : "pnpm --filter @different-ai/openwork build"; + ? "pnpm --dir apps/share run build" + : "pnpm --filter @openwork/desktop build"; execSync(command, { stdio: "inherit" }); diff --git a/scripts/create-daytona-openwork-snapshot.sh b/scripts/create-daytona-openwork-snapshot.sh index c56c1104..cd2bf4cb 100755 --- a/scripts/create-daytona-openwork-snapshot.sh +++ b/scripts/create-daytona-openwork-snapshot.sh @@ -2,7 +2,7 @@ set -euo pipefail ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" -DOCKERFILE="$ROOT_DIR/services/den-worker-runtime/Dockerfile.daytona-snapshot" +DOCKERFILE="$ROOT_DIR/ee/apps/den-worker-runtime/Dockerfile.daytona-snapshot" DAYTONA_ENV_FILE="${DAYTONA_ENV_FILE:-$ROOT_DIR/.env.daytona}" if ! command -v docker >/dev/null 2>&1; then @@ -29,8 +29,8 @@ SNAPSHOT_MEMORY="${DAYTONA_SNAPSHOT_MEMORY:-2}" SNAPSHOT_DISK="${DAYTONA_SNAPSHOT_DISK:-8}" LOCAL_IMAGE_TAG="${DAYTONA_LOCAL_IMAGE_TAG:-openwork-daytona-snapshot:${SNAPSHOT_NAME//[^a-zA-Z0-9_.-]/-}}" -OPENWORK_ORCHESTRATOR_VERSION="${OPENWORK_ORCHESTRATOR_VERSION:-$(node -e 'const fs=require("fs"); const pkg=JSON.parse(fs.readFileSync(process.argv[1], "utf8")); process.stdout.write(String(pkg.version));' "$ROOT_DIR/packages/orchestrator/package.json")}" -OPENCODE_VERSION="${OPENCODE_VERSION:-$(node -e 'const fs=require("fs"); const pkg=JSON.parse(fs.readFileSync(process.argv[1], "utf8")); process.stdout.write(String(pkg.opencodeVersion));' "$ROOT_DIR/packages/orchestrator/package.json")}" +OPENWORK_ORCHESTRATOR_VERSION="${OPENWORK_ORCHESTRATOR_VERSION:-$(node -e 'const fs=require("fs"); const pkg=JSON.parse(fs.readFileSync(process.argv[1], "utf8")); process.stdout.write(String(pkg.version));' "$ROOT_DIR/apps/orchestrator/package.json")}" +OPENCODE_VERSION="${OPENCODE_VERSION:-$(node -e 'const fs=require("fs"); const pkg=JSON.parse(fs.readFileSync(process.argv[1], "utf8")); process.stdout.write(String(pkg.opencodeVersion));' "$ROOT_DIR/apps/orchestrator/package.json")}" echo "Building local image $LOCAL_IMAGE_TAG" >&2 echo "- openwork-orchestrator@$OPENWORK_ORCHESTRATOR_VERSION" >&2 diff --git a/scripts/dev-headless-web.ts b/scripts/dev-headless-web.ts index 75ecd350..dcec9325 100644 --- a/scripts/dev-headless-web.ts +++ b/scripts/dev-headless-web.ts @@ -105,8 +105,8 @@ const openworkPort = await resolvePort(process.env.OPENWORK_PORT, "127.0.0.1"); const webPort = await resolvePort(process.env.OPENWORK_WEB_PORT, "127.0.0.1"); const openworkToken = process.env.OPENWORK_TOKEN ?? randomUUID(); const openworkHostToken = process.env.OPENWORK_HOST_TOKEN ?? randomUUID(); -const openworkServerBin = path.join(cwd, "packages/server/dist/bin/openwork-server"); -const opencodeRouterBin = path.join(cwd, "packages/opencode-router/dist/bin/opencode-router"); +const openworkServerBin = path.join(cwd, "apps/server/dist/bin/openwork-server"); +const opencodeRouterBin = path.join(cwd, "apps/opencode-router/dist/bin/opencode-router"); const ensureOpenworkServer = async () => { try { @@ -115,15 +115,15 @@ const ensureOpenworkServer = async () => { if (!autoBuildEnabled) { logLine(`[dev:headless-web] Missing OpenWork server binary at ${openworkServerBin}`); logLine("[dev:headless-web] Auto-build disabled (OPENWORK_DEV_HEADLESS_WEB_AUTOBUILD=0)"); - logLine("[dev:headless-web] Run: pnpm --filter openwork-server build:bin"); + logLine("[dev:headless-web] Run: pnpm --filter @openwork/server build:bin"); logLine("[dev:headless-web] Or unset/enable OPENWORK_DEV_HEADLESS_WEB_AUTOBUILD to auto-build."); process.exit(1); } logLine(`[dev:headless-web] Missing OpenWork server binary at ${openworkServerBin}`); - logLine("[dev:headless-web] Auto-building: pnpm --filter openwork-server build:bin"); + logLine("[dev:headless-web] Auto-building: pnpm --filter @openwork/server build:bin"); try { - await runCommand("pnpm", ["--filter", "openwork-server", "build:bin"]); + await runCommand("pnpm", ["--filter", "@openwork/server", "build:bin"]); await access(openworkServerBin); } catch (error) { logLine(`[dev:headless-web] Auto-build failed: ${error instanceof Error ? error.message : String(error)}`); @@ -207,7 +207,7 @@ const webProcess = spawnLogged( "pnpm", [ "--filter", - "@different-ai/openwork-ui", + "@openwork/app", "exec", "vite", "--host", diff --git a/scripts/dev-web-local.sh b/scripts/dev-web-local.sh index e708f691..77632e91 100644 --- a/scripts/dev-web-local.sh +++ b/scripts/dev-web-local.sh @@ -4,7 +4,7 @@ set -euo pipefail ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" COMPOSE_FILE="$ROOT_DIR/packaging/docker/docker-compose.web-local.yml" PROJECT_NAME="openwork-web-local" -DEV_CMD=(pnpm --parallel --filter @openwork/den --filter @different-ai/openwork-web dev) +DEV_CMD=(pnpm --parallel --filter @openwork-ee/den-controller --filter @openwork-ee/den-web dev) # Local-dev defaults — match the MySQL container in docker-compose.web-local.yml. # These are only used when not already set in the environment or .env. @@ -58,7 +58,7 @@ docker compose -p "$PROJECT_NAME" -f "$COMPOSE_FILE" down -v >/dev/null 2>&1 || docker compose -p "$PROJECT_NAME" -f "$COMPOSE_FILE" up -d --wait mysql echo "Running Den migrations..." -pnpm --filter @openwork/den db:migrate +pnpm --filter @openwork-ee/den-controller db:migrate WEB_CORS_ORIGINS="$(detect_web_origins)" echo "Allowing Better Auth origins: $WEB_CORS_ORIGINS" diff --git a/scripts/release/prepare.mjs b/scripts/release/prepare.mjs index 9070415a..964378ab 100644 --- a/scripts/release/prepare.mjs +++ b/scripts/release/prepare.mjs @@ -72,7 +72,7 @@ if (!dryRun) { } // Read the new version -const appPkg = JSON.parse(readFileSync(resolve(root, "packages/app/package.json"), "utf8")); +const appPkg = JSON.parse(readFileSync(resolve(root, "apps/app/package.json"), "utf8")); const version = appPkg.version; success(`Version is now ${version}`); diff --git a/scripts/release/review.mjs b/scripts/release/review.mjs index f745d227..63838666 100644 --- a/scripts/release/review.mjs +++ b/scripts/release/review.mjs @@ -16,13 +16,13 @@ const readCargoVersion = (path) => { return match ? match[1] : null; }; -const appPkg = readJson(resolve(root, "packages", "app", "package.json")); -const desktopPkg = readJson(resolve(root, "packages", "desktop", "package.json")); -const orchestratorPkg = readJson(resolve(root, "packages", "orchestrator", "package.json")); -const serverPkg = readJson(resolve(root, "packages", "server", "package.json")); -const opencodeRouterPkg = readJson(resolve(root, "packages", "opencode-router", "package.json")); -const tauriConfig = readJson(resolve(root, "packages", "desktop", "src-tauri", "tauri.conf.json")); -const cargoVersion = readCargoVersion(resolve(root, "packages", "desktop", "src-tauri", "Cargo.toml")); +const appPkg = readJson(resolve(root, "apps", "app", "package.json")); +const desktopPkg = readJson(resolve(root, "apps", "desktop", "package.json")); +const orchestratorPkg = readJson(resolve(root, "apps", "orchestrator", "package.json")); +const serverPkg = readJson(resolve(root, "apps", "server", "package.json")); +const opencodeRouterPkg = readJson(resolve(root, "apps", "opencode-router", "package.json")); +const tauriConfig = readJson(resolve(root, "apps", "desktop", "src-tauri", "tauri.conf.json")); +const cargoVersion = readCargoVersion(resolve(root, "apps", "desktop", "src-tauri", "Cargo.toml")); const versions = { app: appPkg.version ?? null, @@ -37,7 +37,7 @@ const versions = { orchestrator: orchestratorPkg.opencodeVersion ?? null, }, opencodeRouterVersionPinned: desktopPkg.opencodeRouterVersion ?? null, - orchestratorOpenworkServerRange: orchestratorPkg.dependencies?.["openwork-server"] ?? null, + orchestratorOpenworkServerRange: orchestratorPkg.dependencies?.["@openwork/server"] ?? null, }; const checks = []; @@ -96,7 +96,7 @@ if (versions.opencode.desktop || versions.opencode.orchestrator) { ); } else { addWarning( - "OpenCode version is not pinned (packages/desktop + packages/orchestrator). Sidecar bundling will default to the latest OpenCode release at build time.", + "OpenCode version is not pinned (apps/desktop + apps/orchestrator). Sidecar bundling will default to the latest OpenCode release at build time.", ); } @@ -114,14 +114,7 @@ if (!openworkServerRange) { ); } -const sidecarManifestPath = resolve( - root, - "packages", - "orchestrator", - "dist", - "sidecars", - "openwork-orchestrator-sidecars.json", -); +const sidecarManifestPath = resolve(root, "apps", "orchestrator", "dist", "sidecars", "openwork-orchestrator-sidecars.json"); if (existsSync(sidecarManifestPath)) { const manifest = readJson(sidecarManifestPath); addCheck( diff --git a/scripts/release/verify-tag.mjs b/scripts/release/verify-tag.mjs index eab1b928..30f60248 100644 --- a/scripts/release/verify-tag.mjs +++ b/scripts/release/verify-tag.mjs @@ -24,14 +24,14 @@ const readCargoVersion = (path) => { return match ? match[1] : null; }; -const appVersion = readJson(resolve(root, "packages", "app", "package.json")).version ?? null; -const desktopVersion = readJson(resolve(root, "packages", "desktop", "package.json")).version ?? null; +const appVersion = readJson(resolve(root, "apps", "app", "package.json")).version ?? null; +const desktopVersion = readJson(resolve(root, "apps", "desktop", "package.json")).version ?? null; const orchestratorVersion = - readJson(resolve(root, "packages", "orchestrator", "package.json")).version ?? null; -const serverVersion = readJson(resolve(root, "packages", "server", "package.json")).version ?? null; -const opencodeRouterVersion = readJson(resolve(root, "packages", "opencode-router", "package.json")).version ?? null; -const tauriVersion = readJson(resolve(root, "packages", "desktop", "src-tauri", "tauri.conf.json")).version ?? null; -const cargoVersion = readCargoVersion(resolve(root, "packages", "desktop", "src-tauri", "Cargo.toml")); + readJson(resolve(root, "apps", "orchestrator", "package.json")).version ?? null; +const serverVersion = readJson(resolve(root, "apps", "server", "package.json")).version ?? null; +const opencodeRouterVersion = readJson(resolve(root, "apps", "opencode-router", "package.json")).version ?? null; +const tauriVersion = readJson(resolve(root, "apps", "desktop", "src-tauri", "tauri.conf.json")).version ?? null; +const cargoVersion = readCargoVersion(resolve(root, "apps", "desktop", "src-tauri", "Cargo.toml")); const mismatches = []; const check = (label, actual) => { diff --git a/services/den-v2/src/db/schema.ts b/services/den-v2/src/db/schema.ts deleted file mode 100644 index e51175cf..00000000 --- a/services/den-v2/src/db/schema.ts +++ /dev/null @@ -1 +0,0 @@ -export * from "../../../../packages/den-db/dist/schema.js" diff --git a/services/den-v2/src/db/typeid.ts b/services/den-v2/src/db/typeid.ts deleted file mode 100644 index c966ad51..00000000 --- a/services/den-v2/src/db/typeid.ts +++ /dev/null @@ -1 +0,0 @@ -export * from "../../../../packages/utils/dist/typeid.js"