Skip to content

Commit a07a882

Browse files
author
colinmcneil
committed
Add claude config change event
1 parent a74cd5d commit a07a882

File tree

3 files changed

+29
-9
lines changed

3 files changed

+29
-9
lines changed

src/extension/ui/src/Usage.tsx

Lines changed: 24 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,21 +2,40 @@
22
* Anonymous tracking event for registry changes
33
*/
44

5-
type Record = {
5+
interface Record {
66
event: string;
77
properties: object;
88
event_timestamp: number;
99
source: string;
1010
};
1111

12+
export interface RegistryChangedRecord extends Record {
13+
event: 'registry-changed';
14+
properties: {
15+
name: string;
16+
ref: string;
17+
action: 'remove' | 'add';
18+
};
19+
};
20+
21+
export interface ClaudeConfigChangedRecord extends Record {
22+
event: 'claude-config-changed';
23+
properties: {
24+
action: 'add' | 'remove';
25+
};
26+
};
27+
1228
const eventsQueue: Record[] = [];
1329

1430
let processInterval: NodeJS.Timeout;
1531

16-
export const registryChanged = (name: string, ref: string, action: 'remove' | 'add') => {
32+
type Event = (RegistryChangedRecord | ClaudeConfigChangedRecord)['event'];
33+
type Properties = (RegistryChangedRecord | ClaudeConfigChangedRecord)['properties'];
34+
35+
export const trackEvent = (event: Event, properties: Properties) => {
1736
const record: Record = {
18-
event: 'registry-changed',
19-
properties: { name, ref, action },
37+
event,
38+
properties,
2039
event_timestamp: Date.now(),
2140
source: 'labs-ai-tools-for-devs-dd'
2241
};
@@ -38,7 +57,7 @@ const processEventsQueue = () => {
3857
sendRecords(events);
3958
};
4059

41-
const sendRecords = (records: any[]) => {
60+
const sendRecords = (records: Record[]) => {
4261
const url = 'https://nd14xwptgj.execute-api.us-east-1.amazonaws.com/stage/v1/track';
4362
const apiKey = '1234567890';
4463

src/extension/ui/src/components/ClaudeConfigSyncStatus.tsx

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import { v1 } from "@docker/extension-api-client-types";
22
import { Badge, Button, Dialog, DialogContent, DialogContentText, DialogTitle, Typography } from "@mui/material";
33
import { useEffect, useState } from "react";
44
import { writeFilesToHost } from "../FileWatcher";
5+
import { trackEvent } from "../Usage";
56

67
const DOCKER_MCP_CONFIG = {
78
"command": "docker",
@@ -94,6 +95,7 @@ export const ClaudeConfigSyncStatus = ({ client }: { client: v1.DockerDesktopCli
9495
return <Dialog open={showConfigModal} onClose={() => setShowConfigModal(false)} maxWidth="lg">
9596
<DialogTitle>Current Claude Desktop Config</DialogTitle>
9697
{status.state === 'has docker_mcp' && <Button onClick={async () => {
98+
trackEvent('claude-config-changed', { action: 'remove' })
9799
// Remove docker_mcp from config
98100
if (claudeConfig && claudeConfig.mcpServers) {
99101
const newConfig = { ...claudeConfig }
@@ -104,6 +106,7 @@ export const ClaudeConfigSyncStatus = ({ client }: { client: v1.DockerDesktopCli
104106
}
105107
}}>Remove Docker MCP</Button>}
106108
{status.state === 'missing docker_mcp' && <Button onClick={() => {
109+
trackEvent('claude-config-changed', { action: 'add' })
107110
// Add docker_mcp to config
108111
if (claudeConfig && claudeConfig.mcpServers) {
109112
const newConfig = { ...claudeConfig }

src/extension/ui/src/components/PromptCard.tsx

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,9 @@
11
import { CircularProgress, Stack } from "@mui/material";
22
import Button from '@mui/material/Button';
3-
4-
53
import { Card, CardActions, CardContent, CardMedia, Typography } from "@mui/material";
64
import { Ref } from "../Refs";
75
import { useState } from "react";
8-
import { registryChanged } from "../Usage";
6+
import { trackEvent } from "../Usage";
97

108
export interface CatalogItem {
119
description?: string;
@@ -43,7 +41,7 @@ export function CatalogItemCard({ openUrl, item, canRegister, registered, regist
4341
<Button
4442
size="small"
4543
onClick={() => {
46-
registryChanged(item.name, item.ref, registered ? 'remove' : 'add');
44+
trackEvent('registry-changed', { name: item.name, ref: item.ref, action: registered ? 'remove' : 'add' });
4745
setIsRegistering(true)
4846
if (registered) {
4947
unregister(item).then(() => {

0 commit comments

Comments
 (0)