Skip to content

Commit f92e1e1

Browse files
Simplify workspace package builds and deps (pingdotgg#2676)
1 parent 556c424 commit f92e1e1

16 files changed

Lines changed: 106 additions & 130 deletions

File tree

apps/desktop/package.json

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -16,20 +16,18 @@
1616
},
1717
"dependencies": {
1818
"@effect/platform-node": "catalog:",
19+
"@t3tools/contracts": "workspace:*",
20+
"@t3tools/shared": "workspace:*",
21+
"@t3tools/ssh": "workspace:*",
22+
"@t3tools/tailscale": "workspace:*",
1923
"effect": "catalog:",
2024
"electron": "41.5.0",
2125
"electron-updater": "^6.6.2"
2226
},
2327
"devDependencies": {
2428
"@effect/language-service": "catalog:",
2529
"@effect/vitest": "catalog:",
26-
"@t3tools/client-runtime": "workspace:*",
27-
"@t3tools/contracts": "workspace:*",
28-
"@t3tools/shared": "workspace:*",
29-
"@t3tools/ssh": "workspace:*",
30-
"@t3tools/tailscale": "workspace:*",
3130
"@types/node": "catalog:",
32-
"effect-acp": "workspace:*",
3331
"tsdown": "catalog:",
3432
"typescript": "catalog:",
3533
"vitest": "catalog:"

apps/desktop/src/backend/DesktopServerExposure.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import * as NodeOS from "node:os";
33
import {
44
createAdvertisedEndpoint,
55
type CreateAdvertisedEndpointInput,
6-
} from "@t3tools/client-runtime";
6+
} from "@t3tools/shared/advertisedEndpoint";
77
import type {
88
AdvertisedEndpoint,
99
AdvertisedEndpointProvider,

apps/desktop/src/backend/tailscaleEndpointProvider.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { createAdvertisedEndpoint } from "@t3tools/client-runtime";
1+
import { createAdvertisedEndpoint } from "@t3tools/shared/advertisedEndpoint";
22
import type { AdvertisedEndpoint, AdvertisedEndpointProvider } from "@t3tools/contracts";
33
import {
44
buildTailscaleHttpsBaseUrl,

apps/desktop/tsdown.config.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ export default defineConfig([
1212
...shared,
1313
entry: ["src/main.ts"],
1414
clean: true,
15-
noExternal: (id) => id.startsWith("@t3tools/") || id.startsWith("effect-acp"),
15+
noExternal: (id) => id.startsWith("@t3tools/"),
1616
},
1717
{
1818
...shared,

apps/server/package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,13 +20,13 @@
2020
"build:bundle": "tsdown",
2121
"start": "node dist/bin.mjs",
2222
"typecheck": "tsc --noEmit",
23-
"test": "vitest run",
24-
"test:process-reaper": "vitest run src/server.test.ts src/provider/Layers/ClaudeAdapter.test.ts src/provider/Layers/ProviderSessionDirectory.test.ts src/provider/Layers/ProviderSessionReaper.test.ts src/provider/Layers/CodexAdapter.test.ts"
23+
"test": "vitest run"
2524
},
2625
"dependencies": {
2726
"@anthropic-ai/claude-agent-sdk": "^0.2.111",
2827
"@effect/platform-bun": "catalog:",
2928
"@effect/platform-node": "catalog:",
29+
"@effect/platform-node-shared": "catalog:",
3030
"@effect/sql-sqlite-bun": "catalog:",
3131
"@opencode-ai/sdk": "^1.3.15",
3232
"@pierre/diffs": "catalog:",

apps/server/tsdown.config.ts

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,13 @@
11
import { defineConfig } from "tsdown";
22

3+
const internalPackagePrefixes = ["@t3tools/", "effect-acp", "effect-codex-app-server"];
4+
35
export default defineConfig({
46
entry: ["src/bin.ts"],
5-
format: ["esm", "cjs"],
6-
checks: {
7-
legacyCjs: false,
8-
},
97
outDir: "dist",
108
sourcemap: true,
119
clean: true,
12-
noExternal: (id) => id.startsWith("@t3tools/") || id.startsWith("effect-acp"),
10+
noExternal: (id) => internalPackagePrefixes.some((prefix) => id.startsWith(prefix)),
1311
inlineOnly: false,
1412
banner: {
1513
js: "#!/usr/bin/env node\n",

bun.lock

Lines changed: 5 additions & 13 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

packages/client-runtime/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
{
22
"name": "@t3tools/client-runtime",
3-
"version": "0.0.0-alpha.1",
43
"private": true,
54
"type": "module",
65
"exports": {
@@ -15,6 +14,7 @@
1514
},
1615
"dependencies": {
1716
"@t3tools/contracts": "workspace:*",
17+
"@t3tools/shared": "workspace:*",
1818
"effect": "catalog:"
1919
},
2020
"devDependencies": {
Lines changed: 1 addition & 78 deletions
Original file line numberDiff line numberDiff line change
@@ -1,78 +1 @@
1-
import type {
2-
AdvertisedEndpoint,
3-
AdvertisedEndpointHostedHttpsCompatibility,
4-
AdvertisedEndpointProvider,
5-
AdvertisedEndpointReachability,
6-
AdvertisedEndpointSource,
7-
AdvertisedEndpointStatus,
8-
} from "@t3tools/contracts";
9-
10-
export interface CreateAdvertisedEndpointInput {
11-
readonly id: string;
12-
readonly label: string;
13-
readonly provider: AdvertisedEndpointProvider;
14-
readonly httpBaseUrl: string;
15-
readonly reachability: AdvertisedEndpointReachability;
16-
readonly hostedHttpsCompatibility?: AdvertisedEndpointHostedHttpsCompatibility;
17-
readonly desktopCompatibility?: "compatible" | "unknown";
18-
readonly source: AdvertisedEndpointSource;
19-
readonly status?: AdvertisedEndpointStatus;
20-
readonly isDefault?: boolean;
21-
readonly description?: string;
22-
}
23-
24-
export function normalizeHttpBaseUrl(rawValue: string): string {
25-
const url = new URL(rawValue);
26-
if (url.protocol === "ws:") {
27-
url.protocol = "http:";
28-
} else if (url.protocol === "wss:") {
29-
url.protocol = "https:";
30-
}
31-
32-
if (url.protocol !== "http:" && url.protocol !== "https:") {
33-
throw new Error(`Endpoint must use HTTP or HTTPS. Received ${url.protocol}`);
34-
}
35-
36-
url.pathname = "/";
37-
url.search = "";
38-
url.hash = "";
39-
return url.toString();
40-
}
41-
42-
export function deriveWsBaseUrl(httpBaseUrl: string): string {
43-
const url = new URL(normalizeHttpBaseUrl(httpBaseUrl));
44-
url.protocol = url.protocol === "https:" ? "wss:" : "ws:";
45-
return url.toString();
46-
}
47-
48-
export function classifyHostedHttpsCompatibility(
49-
httpBaseUrl: string,
50-
fallback: AdvertisedEndpointHostedHttpsCompatibility = "unknown",
51-
): AdvertisedEndpointHostedHttpsCompatibility {
52-
const url = new URL(normalizeHttpBaseUrl(httpBaseUrl));
53-
if (url.protocol === "http:") {
54-
return "mixed-content-blocked";
55-
}
56-
return fallback === "mixed-content-blocked" ? "unknown" : fallback;
57-
}
58-
59-
export function createAdvertisedEndpoint(input: CreateAdvertisedEndpointInput): AdvertisedEndpoint {
60-
const httpBaseUrl = normalizeHttpBaseUrl(input.httpBaseUrl);
61-
return {
62-
id: input.id,
63-
label: input.label,
64-
provider: input.provider,
65-
httpBaseUrl,
66-
wsBaseUrl: deriveWsBaseUrl(httpBaseUrl),
67-
reachability: input.reachability,
68-
compatibility: {
69-
hostedHttpsApp:
70-
input.hostedHttpsCompatibility ?? classifyHostedHttpsCompatibility(httpBaseUrl),
71-
desktopApp: input.desktopCompatibility ?? "compatible",
72-
},
73-
source: input.source,
74-
status: input.status ?? "available",
75-
...(input.isDefault === undefined ? {} : { isDefault: input.isDefault }),
76-
...(input.description === undefined ? {} : { description: input.description }),
77-
};
78-
}
1+
export * from "@t3tools/shared/advertisedEndpoint";

packages/contracts/package.json

Lines changed: 5 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -6,24 +6,17 @@
66
"dist"
77
],
88
"type": "module",
9-
"main": "./dist/index.cjs",
10-
"module": "./dist/index.mjs",
11-
"types": "./src/index.ts",
129
"exports": {
13-
"./settings": {
14-
"types": "./src/settings.ts",
15-
"import": "./src/settings.ts",
16-
"require": "./src/settings.ts"
17-
},
1810
".": {
1911
"types": "./src/index.ts",
20-
"import": "./src/index.ts",
21-
"require": "./dist/index.cjs"
12+
"import": "./src/index.ts"
13+
},
14+
"./settings": {
15+
"types": "./src/settings.ts",
16+
"import": "./src/settings.ts"
2217
}
2318
},
2419
"scripts": {
25-
"dev": "tsdown src/index.ts --format esm,cjs --dts --watch --clean",
26-
"build": "tsdown src/index.ts --format esm,cjs --dts --clean",
2720
"typecheck": "tsc --noEmit",
2821
"test": "vitest run"
2922
},
@@ -33,7 +26,6 @@
3326
"devDependencies": {
3427
"@effect/language-service": "catalog:",
3528
"@effect/vitest": "catalog:",
36-
"tsdown": "catalog:",
3729
"typescript": "catalog:",
3830
"vitest": "catalog:"
3931
}

0 commit comments

Comments
 (0)