feat(telemetry): add install command events and user-facing telemetry notice

This commit is contained in:
YeonGyu-Kim
2026-04-11 14:14:36 +09:00
parent 1c27000c37
commit 365900b17f
2 changed files with 12 additions and 3 deletions
+10 -3
View File
@@ -65,7 +65,7 @@ export async function runCliInstaller(args: InstallArgs, version: string): Promi
const unsupportedVersionMessage = getUnsupportedOpenCodeVersionMessage(openCodeVersion) const unsupportedVersionMessage = getUnsupportedOpenCodeVersionMessage(openCodeVersion)
if (unsupportedVersionMessage) { if (unsupportedVersionMessage) {
printWarning(unsupportedVersionMessage) printWarning(unsupportedVersionMessage)
posthog.capture({ distinctId, event: "install_failed", properties: { reason: "unsupported_opencode_version", is_update: isUpdate } }) posthog.capture({ distinctId, event: "install_failed", properties: { command: "install", reason: "unsupported_opencode_version", is_update: isUpdate } })
await posthog.shutdown() await posthog.shutdown()
return 1 return 1
} }
@@ -82,7 +82,7 @@ export async function runCliInstaller(args: InstallArgs, version: string): Promi
const pluginResult = await addPluginToOpenCodeConfig(version) const pluginResult = await addPluginToOpenCodeConfig(version)
if (!pluginResult.success) { if (!pluginResult.success) {
printError(`Failed: ${pluginResult.error}`) printError(`Failed: ${pluginResult.error}`)
posthog.capture({ distinctId, event: "install_failed", properties: { reason: "plugin_config_write_failed", is_update: isUpdate } }) posthog.capture({ distinctId, event: "install_failed", properties: { command: "install", reason: "plugin_config_write_failed", is_update: isUpdate } })
await posthog.shutdown() await posthog.shutdown()
return 1 return 1
} }
@@ -94,7 +94,7 @@ export async function runCliInstaller(args: InstallArgs, version: string): Promi
const omoResult = writeOmoConfig(config) const omoResult = writeOmoConfig(config)
if (!omoResult.success) { if (!omoResult.success) {
printError(`Failed: ${omoResult.error}`) printError(`Failed: ${omoResult.error}`)
posthog.capture({ distinctId, event: "install_failed", properties: { reason: "omo_config_write_failed", is_update: isUpdate } }) posthog.capture({ distinctId, event: "install_failed", properties: { command: "install", reason: "omo_config_write_failed", is_update: isUpdate } })
await posthog.shutdown() await posthog.shutdown()
return 1 return 1
} }
@@ -123,6 +123,12 @@ export async function runCliInstaller(args: InstallArgs, version: string): Promi
console.log(` Run ${color.cyan("opencode")} to start!`) console.log(` Run ${color.cyan("opencode")} to start!`)
console.log() console.log()
printInfo(
"Anonymous telemetry is enabled by default. Disable it with OMO_SEND_ANONYMOUS_TELEMETRY=0 or OMO_DISABLE_POSTHOG=1.",
)
printInfo("Docs: docs/legal/privacy-policy.md and docs/legal/terms-of-service.md")
console.log()
printBox( printBox(
`${color.bold("Pro Tip:")} Include ${color.cyan("ultrawork")} (or ${color.cyan("ulw")}) in your prompt.\n` + `${color.bold("Pro Tip:")} Include ${color.cyan("ultrawork")} (or ${color.cyan("ulw")}) in your prompt.\n` +
`All features work like magic-parallel agents, background tasks,\n` + `All features work like magic-parallel agents, background tasks,\n` +
@@ -142,6 +148,7 @@ export async function runCliInstaller(args: InstallArgs, version: string): Promi
distinctId, distinctId,
event: "install_completed", event: "install_completed",
properties: { properties: {
command: "install",
is_update: isUpdate, is_update: isUpdate,
has_claude: config.hasClaude, has_claude: config.hasClaude,
has_openai: config.hasOpenAI, has_openai: config.hasOpenAI,
+2
View File
@@ -85,6 +85,8 @@ export async function runTuiInstaller(args: InstallArgs, version: string): Promi
p.log.success(color.bold(isUpdate ? "Configuration updated!" : "Installation complete!")) p.log.success(color.bold(isUpdate ? "Configuration updated!" : "Installation complete!"))
p.log.message(`Run ${color.cyan("opencode")} to start!`) p.log.message(`Run ${color.cyan("opencode")} to start!`)
p.log.info("Anonymous telemetry is enabled by default. Disable it with OMO_SEND_ANONYMOUS_TELEMETRY=0 or OMO_DISABLE_POSTHOG=1.")
p.log.info("Docs: docs/legal/privacy-policy.md and docs/legal/terms-of-service.md")
p.note( p.note(
`Include ${color.cyan("ultrawork")} (or ${color.cyan("ulw")}) in your prompt.\n` + `Include ${color.cyan("ultrawork")} (or ${color.cyan("ulw")}) in your prompt.\n` +