From ab7945d0756b3c49644f194498e0b38d415c9680 Mon Sep 17 00:00:00 2001 From: Jack Zhuang <277994282+os-zhuang@users.noreply.github.com> Date: Tue, 23 Jun 2026 14:14:42 +0800 Subject: [PATCH] feat(server): declare marketplace + Console SPA deps for the self-host runtime (ADR-0020 T1) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Make @objectos/server a complete open-source self-host runtime distribution by pinning the Console SPA and marketplace client as explicit dependencies: - @objectstack/console ^10.2.0 — the /_console/ SPA - @objectstack/cloud-connection ^10.2.0 — marketplace browse/install, cloud-connection, runtime-config The objectstack CLI already auto-provisions both on top of the standalone stack for every entry point (Docker, dev, and the ObjectOS One desktop — all route through `objectstack serve`): it injects the marketplace + cloud-connection + runtime-config plugins from @objectstack/cloud-connection (gated on resolveCloudUrl(); OS_CLOUD_URL=off -> fully offline) and serves the @objectstack/console SPA at /_console/. So objectstack.config.ts stays a bare standalone stack; a doc note records why explicit wiring is omitted (it would double-mount) and the ADR-0006 Phase 4 caveat. Verified: online -> SPA renders in-browser (no console errors) + marketplace API returns the live catalog + runtime-config served; offline (OS_CLOUD_URL=off) -> marketplace plugins unmounted, SPA still served, zero outbound cloud calls. Co-Authored-By: Claude Opus 4.8 --- apps/objectos/objectstack.config.ts | 16 +++++++++++++--- apps/objectos/package.json | 2 ++ pnpm-lock.yaml | 6 ++++++ 3 files changed, 21 insertions(+), 3 deletions(-) diff --git a/apps/objectos/objectstack.config.ts b/apps/objectos/objectstack.config.ts index cf36e58..e60036d 100644 --- a/apps/objectos/objectstack.config.ts +++ b/apps/objectos/objectstack.config.ts @@ -23,9 +23,19 @@ * OS_BUSINESS_DB_URL — Per-project business database (legacy: OS_DATABASE_URL; * default: file-backed sqlite under the ObjectStack home) * - * Artifact hot-reload follows `NODE_ENV` (on outside production). Enterprise - * plugins live in ../../packages/* and can be appended to the returned - * plugin manifest below. + * Artifact hot-reload follows `NODE_ENV` (on outside production). + * + * NOTE — marketplace + Console SPA are intentionally NOT wired here. The + * `objectstack` CLI (dev / serve / start, which every entry point — Docker and + * the ObjectOS One desktop via one.mjs — routes through) auto-provisions them + * on top of this standalone stack: it injects marketplace browse/install + + * cloud-connection + runtime-config from `@objectstack/cloud-connection` + * (gated on `resolveCloudUrl()`; `OS_CLOUD_URL=off` → fully offline, nothing + * mounts) and serves the `@objectstack/console` SPA at `/_console/`. Both + * packages are declared as dependencies so this distribution pins their + * versions. Re-adding them to `plugins` below would double-mount; only wire + * them explicitly here if a future framework drops the CLI auto-injection + * (ADR-0006 Phase 4). */ import { createStandaloneStack } from '@objectstack/runtime'; diff --git a/apps/objectos/package.json b/apps/objectos/package.json index c616589..b7176b7 100644 --- a/apps/objectos/package.json +++ b/apps/objectos/package.json @@ -14,6 +14,8 @@ }, "dependencies": { "@objectstack/cli": "^10.2.0", + "@objectstack/cloud-connection": "^10.2.0", + "@objectstack/console": "^10.2.0", "@objectstack/core": "^10.2.0", "@objectstack/driver-memory": "^10.2.0", "@objectstack/driver-sql": "^10.2.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 286df6c..06d1560 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -87,6 +87,12 @@ importers: '@objectstack/cli': specifier: ^10.2.0 version: 10.2.0(@aws-sdk/client-s3@3.984.0)(@better-auth/utils@0.4.2)(@better-fetch/fetch@1.3.1)(@opentelemetry/api@1.9.1)(ai@6.0.208(zod@4.4.3))(better-call@1.3.6(zod@4.4.3))(better-sqlite3@12.11.1)(jose@6.2.3)(kysely@0.29.2)(mongodb@7.3.0)(nanostores@1.3.0)(next@16.2.6(@opentelemetry/api@1.9.1)(react-dom@19.2.6(react@19.2.6))(react@19.2.6))(react-dom@19.2.6(react@19.2.6))(react@19.2.6) + '@objectstack/cloud-connection': + specifier: ^10.2.0 + version: 10.2.0(@better-auth/utils@0.4.2)(@better-fetch/fetch@1.3.1)(@opentelemetry/api@1.9.1)(ai@6.0.208(zod@4.4.3))(better-call@1.3.6(zod@4.4.3))(better-sqlite3@12.11.1)(jose@6.2.3)(kysely@0.29.2)(mongodb@7.3.0)(nanostores@1.3.0)(next@16.2.6(@opentelemetry/api@1.9.1)(react-dom@19.2.6(react@19.2.6))(react@19.2.6))(react-dom@19.2.6(react@19.2.6))(react@19.2.6) + '@objectstack/console': + specifier: ^10.2.0 + version: 10.2.0 '@objectstack/core': specifier: ^10.2.0 version: 10.2.0(ai@6.0.208(zod@4.4.3))