Skip to content

Commit 29b37de

Browse files
committed
Make a fresh clone work without submodules or a build step
A fresh `git clone && bun install` previously could not run `bun dev`: @executor-js/vite-plugin and @executor-js/react/console-routes only ship built `dist/` entrypoints, which used to require knowing to run `turbo run build` after installing. The root `prepare` hook now bundles both on every install (tsup, well under a second), so vite configs resolve on a fresh clone. (Pointing `exports.default` at the TS source instead would only work on Node >= 23.6 type-stripping — vite externalizes these imports from vite.config.ts, so Node itself has to load them.) Delete `testkit/` instead of porting it off the vendored mcporter submodule: it was the throwaway MCP-surface MVP that the e2e scenario x target framework (#926) superseded — nothing references it, no CI runs it, and keeping it meant carrying its own npm lockfile. `vendor/README.md` documents that the `vendor/` submodules are optional (everything consumes the published @executor-js packages from npm). (Earlier versions of this branch also wired e2e/ to @executor-js/mcporter from npm and stubbed WorkOS Vault under EXECUTOR_E2E_STUB; the wire-level emulators PR (#931) absorbed the former and replaced the latter with real /vault/v1/kv routes on the WorkOS emulator.) Verified by cloning the repo fresh into /tmp: install, format, lint, typecheck, and the full e2e suite (cloud + selfhost) all pass with no submodules initialized and no manual build step.
1 parent 3530d42 commit 29b37de

22 files changed

Lines changed: 55 additions & 727 deletions

.gitignore

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -60,10 +60,11 @@ apps/desktop/resources/
6060
apps/cloud/.dev-db/
6161
apps/cloud/.e2e-db/
6262

63-
# e2e suite: generated run artifacts + throwaway target state
63+
# e2e suite: generated run artifacts + throwaway target state (the * also
64+
# covers ad-hoc variants like .e2e-stub-db-manual from debugging boots)
6465
e2e/runs/
65-
apps/cloud/.e2e-stub-db/
66-
apps/host-selfhost/.e2e-data/
66+
apps/cloud/.e2e-stub-db*/
67+
apps/host-selfhost/.e2e-data*/
6768

6869
# playwright e2e artifacts
6970
test-results/
@@ -109,5 +110,3 @@ LEARNINGS.md
109110
# Throwaway UX prototype (not part of the app)
110111
ux-demo/
111112

112-
# testkit run outputs (superseded by e2e/runs, also generated)
113-
testkit/runs/

.oxfmtrc.json

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66
".turbo",
77
"dist",
88
"vendor",
9-
"testkit",
109
"e2e/runs",
1110
"integrationsdotsh",
1211
"node_modules",

.oxlintrc.jsonc

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -152,7 +152,6 @@
152152
"dist/",
153153
"vendor/",
154154
"emulators/",
155-
"testkit/",
156155
"e2e/runs/",
157156
"integrationsdotsh/",
158157
"node_modules/",

README.md

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -126,6 +126,17 @@ bun dev
126126

127127
The dev server starts at `http://127.0.0.1:4788`.
128128

129+
### Tests
130+
131+
```bash
132+
bun run test # unit + integration suites
133+
bun run test:e2e # full-stack e2e: boots the cloud and self-host apps and drives them
134+
```
135+
136+
The browser e2e scenarios need Playwright's Chromium once per machine:
137+
`bunx playwright install chromium`. The git submodules under `vendor/` are
138+
optional — see [vendor/README.md](vendor/README.md).
139+
129140
## Community
130141

131142
Join the Discord: [https://discord.gg/eF29HBHwM6](https://discord.gg/eF29HBHwM6)

e2e/src/surfaces/mcp.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
// MCP surface: the vendored mcporter fork as a programmatic MCP client, with
2-
// headless OAuth via the target's consent strategy. Session methods are
3-
// Effects; mcporter itself is promise-native underneath. Assertions are
4-
// vitest's job.
1+
// MCP surface: our mcporter fork (@executor-js/mcporter on npm; develop it in
2+
// the vendor/mcporter submodule) as a programmatic MCP client, with headless
3+
// OAuth via the target's consent strategy. Session methods are Effects;
4+
// mcporter itself is promise-native underneath. Assertions are vitest's job.
55
import { createHash, randomBytes, randomUUID } from "node:crypto";
66
import { mkdtempSync, writeFileSync } from "node:fs";
77
import { tmpdir } from "node:os";

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@
6363
"release:publish:packages:prepare": "bun run scripts/publish-packages.ts --prepare-only",
6464
"release:smoke:packages": "bun run scripts/smoke-test-packed.ts",
6565
"clean": "bun run scripts/clean.ts",
66-
"prepare": "effect-language-service patch && effect-tsgo patch"
66+
"prepare": "effect-language-service patch && effect-tsgo patch && bun run --cwd packages/core/vite-plugin build:bundle && bun run --cwd packages/react build"
6767
},
6868
"dependencies": {},
6969
"devDependencies": {

packages/core/vite-plugin/package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@
3535
},
3636
"scripts": {
3737
"build": "tsup && (tsc --declaration --emitDeclarationOnly --outDir dist --rootDir src || true)",
38+
"build:bundle": "tsup",
3839
"typecheck": "tsgo --noEmit",
3940
"test": "vitest run",
4041
"typecheck:slow": "tsc --noEmit"

testkit/README.md

Lines changed: 0 additions & 50 deletions
This file was deleted.

testkit/package-lock.json

Lines changed: 0 additions & 151 deletions
This file was deleted.

testkit/package.json

Lines changed: 0 additions & 9 deletions
This file was deleted.

0 commit comments

Comments
 (0)