diff --git a/.changeset/config.json b/.changeset/config.json index 80ca5d7fc..a26580776 100644 --- a/.changeset/config.json +++ b/.changeset/config.json @@ -18,7 +18,8 @@ "@executor-js/plugin-openapi", "@executor-js/plugin-example", "@executor-js/plugin-desktop-settings", - "@executor-js/desktop" + "@executor-js/desktop", + "@executor-js/local" ] ], "linked": [], @@ -29,7 +30,6 @@ "onlyUpdatePeerDependentsWhenOutOfRange": true }, "ignore": [ - "@executor-js/local", "@executor-js/host-mcp", "@executor-js/ir", "@executor-js/runtime-deno-subprocess", diff --git a/.changeset/tidy-donkeys-repeat.md b/.changeset/tidy-donkeys-repeat.md new file mode 100644 index 000000000..f120bb793 --- /dev/null +++ b/.changeset/tidy-donkeys-repeat.md @@ -0,0 +1,6 @@ +--- +"executor": patch +"@executor-js/local": patch +--- + +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. diff --git a/apps/local/src/installation.ts b/apps/local/src/installation.ts index 90f7ea50c..317ca1125 100644 --- a/apps/local/src/installation.ts +++ b/apps/local/src/installation.ts @@ -15,11 +15,12 @@ const resolveChannel = (version: string): InstallationChannel => { return "stable"; }; -// The desktop main process sets `EXECUTOR_CLIENT=desktop` when it spawns the -// sidecar so PostHog can slice desktop installs from headless apps/local -// (CLI `executor web`, `daemon run --foreground`, etc.). +// The surface is cli|desktop — never a "local" catch-all: the desktop main +// process marks its sidecar via EXECUTOR_CLIENT=desktop; everything else +// hosting apps/local (`executor web`, `daemon run --foreground`, stdio MCP) +// is the CLI. Mirrors resolveSurface in ./analytics.ts. const resolveClient = (): SurfaceClient => - process.env.EXECUTOR_CLIENT === "desktop" ? "desktop" : "local"; + process.env.EXECUTOR_CLIENT === "desktop" ? "desktop" : "cli"; export const CHANNEL: InstallationChannel = resolveChannel(LOCAL_VERSION); export const VERSION: string = LOCAL_VERSION; diff --git a/packages/core/integrations-registry/src/registry.test.ts b/packages/core/integrations-registry/src/registry.test.ts index c4ec2a420..20da742fb 100644 --- a/packages/core/integrations-registry/src/registry.test.ts +++ b/packages/core/integrations-registry/src/registry.test.ts @@ -49,8 +49,8 @@ describe("buildUserAgent", () => { expect(buildUserAgent({ channel: "stable", version: "1.2.3", client: "cli" })).toBe( "executor/stable/1.2.3/cli", ); - expect(buildUserAgent({ channel: "beta", version: "1.2.3-beta.0", client: "local" })).toBe( - "executor/beta/1.2.3-beta.0/local", + expect(buildUserAgent({ channel: "beta", version: "1.2.3-beta.0", client: "desktop" })).toBe( + "executor/beta/1.2.3-beta.0/desktop", ); }); diff --git a/packages/core/integrations-registry/src/registry.ts b/packages/core/integrations-registry/src/registry.ts index b203f5444..f979b3f4f 100644 --- a/packages/core/integrations-registry/src/registry.ts +++ b/packages/core/integrations-registry/src/registry.ts @@ -11,7 +11,7 @@ import { NodeFileSystem } from "@effect/platform-node"; // --------------------------------------------------------------------------- export type InstallationChannel = "stable" | "beta" | "dev"; -export type SurfaceClient = "cli" | "local" | "desktop"; +export type SurfaceClient = "cli" | "desktop"; export const DEFAULT_INTEGRATIONS_URL = "https://integrations.sh/api.json";