airbyte-faros-destination 0.23.19 → 0.23.21

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -5,4 +5,5 @@ export declare class AnalyticsSkills extends ClaudeConverter {
5
5
  readonly destinationModels: ReadonlyArray<DestinationModel>;
6
6
  id(record: AirbyteRecord): string;
7
7
  convert(record: AirbyteRecord, ctx: StreamContext): Promise<ReadonlyArray<DestinationRecord>>;
8
+ private skillMetric;
8
9
  }
@@ -3,9 +3,12 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.AnalyticsSkills = void 0;
4
4
  const common_1 = require("faros-airbyte-common/common");
5
5
  const faros_js_client_1 = require("faros-js-client");
6
+ const lodash_1 = require("lodash");
6
7
  const vcs_1 = require("../common/vcs");
7
8
  const common_2 = require("./common");
8
9
  const DAY_MS = 24 * 60 * 60 * 1000;
10
+ const SESSIONS_DETAIL = 'analytics_skills';
11
+ const INVOCATIONS_DETAIL = 'analytics_skills_invocations';
9
12
  class AnalyticsSkills extends common_2.ClaudeConverter {
10
13
  constructor() {
11
14
  super(...arguments);
@@ -15,13 +18,14 @@ class AnalyticsSkills extends common_2.ClaudeConverter {
15
18
  }
16
19
  id(record) {
17
20
  const item = record.record.data;
18
- return `${item.date}__${item.skill_name}`;
21
+ const scope = item.user_id || 'organization';
22
+ return `${item.date}__${item.skill_name}__${scope}`;
19
23
  }
20
24
  async convert(record, ctx) {
21
25
  const item = record.record.data;
22
- // Only write Claude Code metrics (skip chat-only skills)
23
- const claudeCodeUsageCount = item.claude_code_metrics?.distinct_session_skill_used_count ?? 0;
24
- if (claudeCodeUsageCount <= 0) {
26
+ // User-grouped rows carry a user_id; drop any the source could not resolve
27
+ // to an email, since every other Claude metric keys vcs_User on email
28
+ if (item.user_id && !item.user_email) {
25
29
  return [];
26
30
  }
27
31
  const day = faros_js_client_1.Utils.toDate(item.date);
@@ -29,37 +33,72 @@ class AnalyticsSkills extends common_2.ClaudeConverter {
29
33
  uid: this.streamName.source,
30
34
  source: this.streamName.source,
31
35
  };
32
- const feature = `skill:${item.skill_name}`;
33
- return [
34
- {
35
- model: 'vcs_AssistantMetric',
36
- record: {
37
- uid: (0, common_1.digest)([
38
- vcs_1.VCSToolDetail.ClaudeCode,
39
- vcs_1.AssistantMetric.Usages,
40
- 'analytics_skills',
41
- day.toISOString(),
42
- organization.uid,
43
- feature,
44
- ].join('__')),
45
- source: this.source,
46
- startedAt: day,
47
- endedAt: faros_js_client_1.Utils.toDate(day.getTime() + DAY_MS),
48
- type: {
49
- category: vcs_1.AssistantMetric.Usages,
50
- detail: 'analytics_skills',
51
- },
52
- valueType: 'Int',
53
- value: String(claudeCodeUsageCount),
54
- organization,
55
- tool: {
56
- category: vcs_1.VCSToolCategory.CodingAssistant,
57
- detail: vcs_1.VCSToolDetail.ClaudeCode,
58
- },
59
- feature,
36
+ // skill_name is an opaque id for user- and organization-scoped skills
37
+ const feature = `skill:${item.skill_display_name ?? item.skill_name}`;
38
+ const res = [];
39
+ const sessionCount = item.claude_code_metrics?.distinct_session_skill_used_count ?? 0;
40
+ if (sessionCount > 0) {
41
+ res.push(this.skillMetric({
42
+ day,
43
+ detail: SESSIONS_DETAIL,
44
+ value: sessionCount,
45
+ organization,
46
+ feature,
47
+ skillName: item.skill_name,
48
+ userEmail: item.user_email,
49
+ }));
50
+ }
51
+ // Null when invocation reporting is not enabled for the organization
52
+ if (!(0, lodash_1.isNil)(item.invocation_count) && item.invocation_count > 0) {
53
+ res.push(this.skillMetric({
54
+ day,
55
+ detail: INVOCATIONS_DETAIL,
56
+ value: item.invocation_count,
57
+ organization,
58
+ feature,
59
+ skillName: item.skill_name,
60
+ userEmail: item.user_email,
61
+ }));
62
+ }
63
+ return res;
64
+ }
65
+ skillMetric(config) {
66
+ const { day, detail, value, organization, feature, skillName, userEmail } = config;
67
+ const uidParts = [
68
+ vcs_1.VCSToolDetail.ClaudeCode,
69
+ vcs_1.AssistantMetric.Usages,
70
+ detail,
71
+ day.toISOString(),
72
+ organization.uid,
73
+ `skill:${skillName}`,
74
+ ];
75
+ if (userEmail) {
76
+ uidParts.push(userEmail);
77
+ }
78
+ return {
79
+ model: 'vcs_AssistantMetric',
80
+ record: {
81
+ uid: (0, common_1.digest)(uidParts.join('__')),
82
+ source: this.source,
83
+ startedAt: day,
84
+ endedAt: faros_js_client_1.Utils.toDate(day.getTime() + DAY_MS),
85
+ type: {
86
+ category: vcs_1.AssistantMetric.Usages,
87
+ detail,
88
+ },
89
+ valueType: 'Int',
90
+ value: String(value),
91
+ organization,
92
+ ...(userEmail && {
93
+ user: { uid: userEmail, source: this.streamName.source },
94
+ }),
95
+ tool: {
96
+ category: vcs_1.VCSToolCategory.CodingAssistant,
97
+ detail: vcs_1.VCSToolDetail.ClaudeCode,
60
98
  },
99
+ feature,
61
100
  },
62
- ];
101
+ };
63
102
  }
64
103
  }
65
104
  exports.AnalyticsSkills = AnalyticsSkills;
@@ -1 +1 @@
1
- {"version":3,"file":"analytics_skills.js","sourceRoot":"","sources":["../../../src/converters/claude/analytics_skills.ts"],"names":[],"mappings":";;;AAEA,wDAAmD;AACnD,qDAAsC;AAEtC,uCAA8E;AAE9E,qCAAyC;AAEzC,MAAM,MAAM,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AAOnC,MAAa,eAAgB,SAAQ,wBAAe;IAApD;;QACW,sBAAiB,GAAoC;YAC5D,qBAAqB;SACtB,CAAC;IA8DJ,CAAC;IA5DC,EAAE,CAAC,MAAqB;QACtB,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,IAA6B,CAAC;QACzD,OAAO,GAAG,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,UAAU,EAAE,CAAC;IAC5C,CAAC;IAED,KAAK,CAAC,OAAO,CACX,MAAqB,EACrB,GAAkB;QAElB,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,IAA6B,CAAC;QAEzD,yDAAyD;QACzD,MAAM,oBAAoB,GACxB,IAAI,CAAC,mBAAmB,EAAE,iCAAiC,IAAI,CAAC,CAAC;QAEnE,IAAI,oBAAoB,IAAI,CAAC,EAAE,CAAC;YAC9B,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,MAAM,GAAG,GAAG,uBAAK,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpC,MAAM,YAAY,GAAG;YACnB,GAAG,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM;YAC3B,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM;SAC/B,CAAC;QAEF,MAAM,OAAO,GAAG,SAAS,IAAI,CAAC,UAAU,EAAE,CAAC;QAE3C,OAAO;YACL;gBACE,KAAK,EAAE,qBAAqB;gBAC5B,MAAM,EAAE;oBACN,GAAG,EAAE,IAAA,eAAM,EACT;wBACE,mBAAa,CAAC,UAAU;wBACxB,qBAAe,CAAC,MAAM;wBACtB,kBAAkB;wBAClB,GAAG,CAAC,WAAW,EAAE;wBACjB,YAAY,CAAC,GAAG;wBAChB,OAAO;qBACR,CAAC,IAAI,CAAC,IAAI,CAAC,CACb;oBACD,MAAM,EAAE,IAAI,CAAC,MAAM;oBACnB,SAAS,EAAE,GAAG;oBACd,OAAO,EAAE,uBAAK,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,MAAM,CAAC;oBAC7C,IAAI,EAAE;wBACJ,QAAQ,EAAE,qBAAe,CAAC,MAAM;wBAChC,MAAM,EAAE,kBAAkB;qBAC3B;oBACD,SAAS,EAAE,KAAK;oBAChB,KAAK,EAAE,MAAM,CAAC,oBAAoB,CAAC;oBACnC,YAAY;oBACZ,IAAI,EAAE;wBACJ,QAAQ,EAAE,qBAAe,CAAC,eAAe;wBACzC,MAAM,EAAE,mBAAa,CAAC,UAAU;qBACjC;oBACD,OAAO;iBACR;aACF;SACF,CAAC;IACJ,CAAC;CACF;AAjED,0CAiEC"}
1
+ {"version":3,"file":"analytics_skills.js","sourceRoot":"","sources":["../../../src/converters/claude/analytics_skills.ts"],"names":[],"mappings":"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"}
@@ -41,6 +41,7 @@ export declare enum CursorStream {
41
41
  McpAdoption = "mcp_adoption",
42
42
  CommandsAdoption = "commands_adoption",
43
43
  PlansAdoption = "plans_adoption",
44
+ SkillsAdoption = "skills_adoption",
44
45
  AskModeAdoption = "ask_mode_adoption",
45
46
  TopFileExtensions = "top_file_extensions"
46
47
  }
@@ -28,6 +28,7 @@ var CursorStream;
28
28
  CursorStream["McpAdoption"] = "mcp_adoption";
29
29
  CursorStream["CommandsAdoption"] = "commands_adoption";
30
30
  CursorStream["PlansAdoption"] = "plans_adoption";
31
+ CursorStream["SkillsAdoption"] = "skills_adoption";
31
32
  CursorStream["AskModeAdoption"] = "ask_mode_adoption";
32
33
  CursorStream["TopFileExtensions"] = "top_file_extensions";
33
34
  })(CursorStream || (exports.CursorStream = CursorStream = {}));
@@ -1 +1 @@
1
- {"version":3,"file":"common.js","sourceRoot":"","sources":["../../../src/converters/cursor/common.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"common.js","sourceRoot":"","sources":["../../../src/converters/cursor/common.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import { AirbyteRecord } from 'faros-airbyte-cdk';
2
+ import { DestinationModel, DestinationRecord, StreamContext } from '../converter';
3
+ import { CursorConverter } from './common';
4
+ export declare class SkillsAdoption extends CursorConverter {
5
+ readonly destinationModels: ReadonlyArray<DestinationModel>;
6
+ id(record: AirbyteRecord): string;
7
+ convert(record: AirbyteRecord, ctx: StreamContext): Promise<ReadonlyArray<DestinationRecord>>;
8
+ }
@@ -0,0 +1,47 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SkillsAdoption = void 0;
4
+ const faros_js_client_1 = require("faros-js-client");
5
+ const lodash_1 = require("lodash");
6
+ const vcs_1 = require("../common/vcs");
7
+ const common_1 = require("./common");
8
+ const DAY_MS = 24 * 60 * 60 * 1000;
9
+ class SkillsAdoption extends common_1.CursorConverter {
10
+ constructor() {
11
+ super(...arguments);
12
+ this.destinationModels = [
13
+ 'vcs_AssistantMetric',
14
+ ];
15
+ }
16
+ id(record) {
17
+ const item = record.record.data;
18
+ return `${item.event_date}__${item.skill_name}`;
19
+ }
20
+ async convert(record, ctx) {
21
+ const item = record.record.data;
22
+ if (!item.email) {
23
+ return [];
24
+ }
25
+ if ((0, lodash_1.isNil)(item.usage) || item.usage <= 0) {
26
+ return [];
27
+ }
28
+ const day = faros_js_client_1.Utils.toDate(item.event_date);
29
+ const organization = {
30
+ uid: this.streamName.source,
31
+ source: this.streamName.source,
32
+ };
33
+ const feature = `Skill:${item.skill_name}`;
34
+ return this.getAssistantMetric({
35
+ startedAt: day,
36
+ endedAt: faros_js_client_1.Utils.toDate(day.getTime() + DAY_MS),
37
+ assistantMetricType: vcs_1.AssistantMetric.Usages,
38
+ assistantMetricTypeDetail: common_1.CursorStream.SkillsAdoption,
39
+ value: item.usage,
40
+ organization,
41
+ userEmail: item.email,
42
+ feature,
43
+ });
44
+ }
45
+ }
46
+ exports.SkillsAdoption = SkillsAdoption;
47
+ //# sourceMappingURL=skills_adoption.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skills_adoption.js","sourceRoot":"","sources":["../../../src/converters/cursor/skills_adoption.ts"],"names":[],"mappings":";;;AAEA,qDAAsC;AACtC,mCAA6B;AAE7B,uCAA8C;AAE9C,qCAAuD;AAEvD,MAAM,MAAM,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AAEnC,MAAa,cAAe,SAAQ,wBAAe;IAAnD;;QACW,sBAAiB,GAAoC;YAC5D,qBAAqB;SACtB,CAAC;IAwCJ,CAAC;IAtCC,EAAE,CAAC,MAAqB;QACtB,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,IAA0B,CAAC;QACtD,OAAO,GAAG,IAAI,CAAC,UAAU,KAAK,IAAI,CAAC,UAAU,EAAE,CAAC;IAClD,CAAC;IAED,KAAK,CAAC,OAAO,CACX,MAAqB,EACrB,GAAkB;QAElB,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,IAA0B,CAAC;QAEtD,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;YAChB,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,IAAI,IAAA,cAAK,EAAC,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC;YACzC,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,MAAM,GAAG,GAAG,uBAAK,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC1C,MAAM,YAAY,GAAG;YACnB,GAAG,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM;YAC3B,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM;SAC/B,CAAC;QAEF,MAAM,OAAO,GAAG,SAAS,IAAI,CAAC,UAAU,EAAE,CAAC;QAE3C,OAAO,IAAI,CAAC,kBAAkB,CAAC;YAC7B,SAAS,EAAE,GAAG;YACd,OAAO,EAAE,uBAAK,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,MAAM,CAAC;YAC7C,mBAAmB,EAAE,qBAAe,CAAC,MAAM;YAC3C,yBAAyB,EAAE,qBAAY,CAAC,cAAc;YACtD,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,YAAY;YACZ,SAAS,EAAE,IAAI,CAAC,KAAK;YACrB,OAAO;SACR,CAAC,CAAC;IACL,CAAC;CACF;AA3CD,wCA2CC"}