feat: implement app-side telemetry sender

Add the shared telemetry sender, wire the CLI/server emit points,
and cover the config and completion behavior with tests.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
This commit is contained in:
dotta 2026-03-31 08:08:18 -05:00
parent ca5659f734
commit 34044cdfce
29 changed files with 670 additions and 5 deletions

View file

@ -33,6 +33,8 @@ import {
} from "../config/home.js";
import { bootstrapCeoInvite } from "./auth-bootstrap-ceo.js";
import { printPaperclipCliBanner } from "../utils/banner.js";
import { getTelemetryClient } from "../telemetry.js";
import { trackInstallStarted, trackInstallCompleted } from "@paperclipai/shared/telemetry";
type SetupMode = "quickstart" | "advanced";
@ -356,6 +358,9 @@ export async function onboard(opts: OnboardOptions): Promise<void> {
setupMode = setupModeChoice as SetupMode;
}
const tc = getTelemetryClient();
if (tc) trackInstallStarted(tc, { setupMode });
let llm: PaperclipConfig["llm"] | undefined;
const { defaults: derivedDefaults, usedEnvKeys, ignoredEnvKeys } = quickstartDefaultsFromEnv();
let {
@ -488,6 +493,9 @@ export async function onboard(opts: OnboardOptions): Promise<void> {
logging,
server,
auth,
telemetry: {
enabled: true,
},
storage,
secrets,
};
@ -501,6 +509,12 @@ export async function onboard(opts: OnboardOptions): Promise<void> {
writeConfig(config, opts.config);
if (tc) trackInstallCompleted(tc, {
setupMode,
dbMode: database.mode,
deploymentMode: server.deploymentMode,
});
p.note(
[
`Database: ${database.mode}`,