Unified · Split
| @@ -18,7 +18,8 @@ · 17 unmodified lines | ||
| 18 | 18 | "@executor-js/plugin-openapi", |
| 19 | 19 | "@executor-js/plugin-example", |
| 20 | 20 | "@executor-js/plugin-desktop-settings", |
| 21 | − "@executor-js/desktop" | |
| 21 | + "@executor-js/desktop", | |
| 22 | + "@executor-js/local" | |
| 22 | 23 | ] |
| 23 | 24 | ], |
| 24 | 25 | "linked": [], |
| @@ -29,7 +30,6 @@ · 4 unmodified lines | ||
| 29 | 30 | "onlyUpdatePeerDependentsWhenOutOfRange": true |
| 30 | 31 | }, |
| 31 | 32 | "ignore": [ |
| 32 | − "@executor-js/local", | |
| 33 | 33 | "@executor-js/host-mcp", |
| 34 | 34 | "@executor-js/ir", |
| 35 | 35 | "@executor-js/runtime-deno-subprocess", |
| @@ -0,0 +1,6 @@ | ||
| 1 | +--- | |
| 2 | +"executor": patch | |
| 3 | +"@executor-js/local": patch | |
| 4 | +--- | |
| 5 | + | |
| 6 | +Report the real product surface and version in the integrations.sh registry user-agent. The daemon previously sent `local` with a version frozen at 1.4.4; it now reports `cli` or `desktop` (matching analytics surfaces) and `@executor-js/local` is versioned with the release train. | |
| @@ -15,11 +15,12 @@ const resolveChannel = (version: string): InstallationChannel => { · 14 unmodified lines | ||
| 15 | 15 | return "stable"; |
| 16 | 16 | }; |
| 17 | 17 | |
| 18 | −// The desktop main process sets `EXECUTOR_CLIENT=desktop` when it spawns the | |
| 19 | −// sidecar so PostHog can slice desktop installs from headless apps/local | |
| 20 | −// (CLI `executor web`, `daemon run --foreground`, etc.). | |
| 18 | +// The surface is cli|desktop — never a "local" catch-all: the desktop main | |
| 19 | +// process marks its sidecar via EXECUTOR_CLIENT=desktop; everything else | |
| 20 | +// hosting apps/local (`executor web`, `daemon run --foreground`, stdio MCP) | |
| 21 | +// is the CLI. Mirrors resolveSurface in ./analytics.ts. | |
| 21 | 22 | const resolveClient = (): SurfaceClient => |
| 22 | − process.env.EXECUTOR_CLIENT === "desktop" ? "desktop" : "local"; | |
| 23 | + process.env.EXECUTOR_CLIENT === "desktop" ? "desktop" : "cli"; | |
| 23 | 24 | |
| 24 | 25 | export const CHANNEL: InstallationChannel = resolveChannel(LOCAL_VERSION); |
| 25 | 26 | export const VERSION: string = LOCAL_VERSION; |
| @@ -49,8 +49,8 @@ describe("buildUserAgent", () => { · 48 unmodified lines | ||
| 49 | 49 | expect(buildUserAgent({ channel: "stable", version: "1.2.3", client: "cli" })).toBe( |
| 50 | 50 | "executor/stable/1.2.3/cli", |
| 51 | 51 | ); |
| 52 | − expect(buildUserAgent({ channel: "beta", version: "1.2.3-beta.0", client: "local" })).toBe( | |
| 53 | − "executor/beta/1.2.3-beta.0/local", | |
| 52 | + expect(buildUserAgent({ channel: "beta", version: "1.2.3-beta.0", client: "desktop" })).toBe( | |
| 53 | + "executor/beta/1.2.3-beta.0/desktop", | |
| 54 | 54 | ); |
| 55 | 55 | }); |
| 56 | 56 | |
| @@ -11,7 +11,7 @@ import { NodeFileSystem } from "@effect/platform-node"; · 10 unmodified lines | ||
| 11 | 11 | // --------------------------------------------------------------------------- |
| 12 | 12 | |
| 13 | 13 | export type InstallationChannel = "stable" | "beta" | "dev"; |
| 14 | −export type SurfaceClient = "cli" | "local" | "desktop"; | |
| 14 | +export type SurfaceClient = "cli" | "desktop"; | |
| 15 | 15 | |
| 16 | 16 | export const DEFAULT_INTEGRATIONS_URL = "https://integrations.sh/api.json"; |
| 17 | 17 | |