@codemieai/code 0.0.12 → 0.0.14

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.
Files changed (124) hide show
  1. package/README.md +65 -778
  2. package/dist/agents/core/BaseAgentAdapter.d.ts.map +1 -1
  3. package/dist/agents/core/BaseAgentAdapter.js +31 -3
  4. package/dist/agents/core/BaseAgentAdapter.js.map +1 -1
  5. package/dist/agents/core/types.d.ts +18 -0
  6. package/dist/agents/core/types.d.ts.map +1 -1
  7. package/dist/agents/plugins/claude.plugin.d.ts +0 -3
  8. package/dist/agents/plugins/claude.plugin.d.ts.map +1 -1
  9. package/dist/agents/plugins/claude.plugin.js +12 -1
  10. package/dist/agents/plugins/claude.plugin.js.map +1 -1
  11. package/dist/agents/plugins/codex.plugin.d.ts.map +1 -1
  12. package/dist/agents/plugins/codex.plugin.js +40 -4
  13. package/dist/agents/plugins/codex.plugin.js.map +1 -1
  14. package/dist/agents/plugins/gemini.plugin.d.ts.map +1 -1
  15. package/dist/agents/plugins/gemini.plugin.js +50 -5
  16. package/dist/agents/plugins/gemini.plugin.js.map +1 -1
  17. package/dist/agents/registry.d.ts +15 -2
  18. package/dist/agents/registry.d.ts.map +1 -1
  19. package/dist/agents/registry.js +30 -6
  20. package/dist/agents/registry.js.map +1 -1
  21. package/dist/analytics/aggregation/adapters/claude.adapter.d.ts +37 -0
  22. package/dist/analytics/aggregation/adapters/claude.adapter.d.ts.map +1 -0
  23. package/dist/analytics/aggregation/adapters/claude.adapter.js +471 -0
  24. package/dist/analytics/aggregation/adapters/claude.adapter.js.map +1 -0
  25. package/dist/analytics/aggregation/adapters/codex.adapter.d.ts +25 -0
  26. package/dist/analytics/aggregation/adapters/codex.adapter.d.ts.map +1 -0
  27. package/dist/analytics/aggregation/adapters/codex.adapter.js +376 -0
  28. package/dist/analytics/aggregation/adapters/codex.adapter.js.map +1 -0
  29. package/dist/analytics/aggregation/adapters/gemini.adapter.d.ts +28 -0
  30. package/dist/analytics/aggregation/adapters/gemini.adapter.d.ts.map +1 -0
  31. package/dist/analytics/aggregation/adapters/gemini.adapter.js +320 -0
  32. package/dist/analytics/aggregation/adapters/gemini.adapter.js.map +1 -0
  33. package/dist/analytics/aggregation/adapters/index.d.ts +7 -0
  34. package/dist/analytics/aggregation/adapters/index.d.ts.map +1 -0
  35. package/dist/analytics/aggregation/adapters/index.js +7 -0
  36. package/dist/analytics/aggregation/adapters/index.js.map +1 -0
  37. package/dist/analytics/aggregation/aggregator.d.ts +49 -0
  38. package/dist/analytics/aggregation/aggregator.d.ts.map +1 -0
  39. package/dist/analytics/aggregation/aggregator.js +239 -0
  40. package/dist/analytics/aggregation/aggregator.js.map +1 -0
  41. package/dist/analytics/aggregation/core/BaseAnalyticsAdapter.d.ts +63 -0
  42. package/dist/analytics/aggregation/core/BaseAnalyticsAdapter.d.ts.map +1 -0
  43. package/dist/analytics/aggregation/core/BaseAnalyticsAdapter.js +58 -0
  44. package/dist/analytics/aggregation/core/BaseAnalyticsAdapter.js.map +1 -0
  45. package/dist/analytics/aggregation/core/adapter.interface.d.ts +65 -0
  46. package/dist/analytics/aggregation/core/adapter.interface.d.ts.map +1 -0
  47. package/dist/analytics/aggregation/core/adapter.interface.js +9 -0
  48. package/dist/analytics/aggregation/core/adapter.interface.js.map +1 -0
  49. package/dist/analytics/aggregation/core/aggregation-utils.d.ts +66 -0
  50. package/dist/analytics/aggregation/core/aggregation-utils.d.ts.map +1 -0
  51. package/dist/analytics/aggregation/core/aggregation-utils.js +83 -0
  52. package/dist/analytics/aggregation/core/aggregation-utils.js.map +1 -0
  53. package/dist/analytics/aggregation/core/discovery.d.ts +40 -0
  54. package/dist/analytics/aggregation/core/discovery.d.ts.map +1 -0
  55. package/dist/analytics/aggregation/core/discovery.js +132 -0
  56. package/dist/analytics/aggregation/core/discovery.js.map +1 -0
  57. package/dist/analytics/aggregation/core/file-utils.d.ts +23 -0
  58. package/dist/analytics/aggregation/core/file-utils.d.ts.map +1 -0
  59. package/dist/analytics/aggregation/core/file-utils.js +208 -0
  60. package/dist/analytics/aggregation/core/file-utils.js.map +1 -0
  61. package/dist/analytics/aggregation/core/index.d.ts +11 -0
  62. package/dist/analytics/aggregation/core/index.d.ts.map +1 -0
  63. package/dist/analytics/aggregation/core/index.js +11 -0
  64. package/dist/analytics/aggregation/core/index.js.map +1 -0
  65. package/dist/analytics/aggregation/core/project-mapping.d.ts +50 -0
  66. package/dist/analytics/aggregation/core/project-mapping.d.ts.map +1 -0
  67. package/dist/analytics/aggregation/core/project-mapping.js +102 -0
  68. package/dist/analytics/aggregation/core/project-mapping.js.map +1 -0
  69. package/dist/analytics/aggregation/core/streaming.d.ts +26 -0
  70. package/dist/analytics/aggregation/core/streaming.d.ts.map +1 -0
  71. package/dist/analytics/aggregation/core/streaming.js +58 -0
  72. package/dist/analytics/aggregation/core/streaming.js.map +1 -0
  73. package/dist/analytics/aggregation/index.d.ts +8 -0
  74. package/dist/analytics/aggregation/index.d.ts.map +1 -0
  75. package/dist/analytics/aggregation/index.js +8 -0
  76. package/dist/analytics/aggregation/index.js.map +1 -0
  77. package/dist/analytics/aggregation/types.d.ts +258 -0
  78. package/dist/analytics/aggregation/types.d.ts.map +1 -0
  79. package/dist/analytics/aggregation/types.js +8 -0
  80. package/dist/analytics/aggregation/types.js.map +1 -0
  81. package/dist/analytics/config.d.ts +1 -0
  82. package/dist/analytics/config.d.ts.map +1 -1
  83. package/dist/analytics/config.js +20 -1
  84. package/dist/analytics/config.js.map +1 -1
  85. package/dist/analytics/index.d.ts +0 -9
  86. package/dist/analytics/index.d.ts.map +1 -1
  87. package/dist/analytics/index.js +14 -48
  88. package/dist/analytics/index.js.map +1 -1
  89. package/dist/analytics/plugins/api-metrics.plugin.d.ts +4 -1
  90. package/dist/analytics/plugins/api-metrics.plugin.d.ts.map +1 -1
  91. package/dist/analytics/plugins/api-metrics.plugin.js +6 -22
  92. package/dist/analytics/plugins/api-metrics.plugin.js.map +1 -1
  93. package/dist/analytics/plugins/model-metrics.plugin.d.ts +4 -1
  94. package/dist/analytics/plugins/model-metrics.plugin.d.ts.map +1 -1
  95. package/dist/analytics/plugins/model-metrics.plugin.js +7 -17
  96. package/dist/analytics/plugins/model-metrics.plugin.js.map +1 -1
  97. package/dist/analytics/plugins/provider-metrics.plugin.d.ts +4 -1
  98. package/dist/analytics/plugins/provider-metrics.plugin.d.ts.map +1 -1
  99. package/dist/analytics/plugins/provider-metrics.plugin.js +7 -22
  100. package/dist/analytics/plugins/provider-metrics.plugin.js.map +1 -1
  101. package/dist/analytics/plugins/types.d.ts +0 -2
  102. package/dist/analytics/plugins/types.d.ts.map +1 -1
  103. package/dist/analytics/plugins/types.js.map +1 -1
  104. package/dist/analytics/session.d.ts +2 -2
  105. package/dist/analytics/session.d.ts.map +1 -1
  106. package/dist/analytics/session.js +3 -3
  107. package/dist/analytics/session.js.map +1 -1
  108. package/dist/analytics/types.d.ts +1 -1
  109. package/dist/analytics/types.d.ts.map +1 -1
  110. package/dist/cli/commands/analytics.d.ts.map +1 -1
  111. package/dist/cli/commands/analytics.js +512 -252
  112. package/dist/cli/commands/analytics.js.map +1 -1
  113. package/dist/cli/commands/setup.js +70 -1
  114. package/dist/cli/commands/setup.js.map +1 -1
  115. package/dist/utils/codemie-proxy.d.ts.map +1 -1
  116. package/dist/utils/codemie-proxy.js +16 -3
  117. package/dist/utils/codemie-proxy.js.map +1 -1
  118. package/dist/utils/proxy/http-client.d.ts.map +1 -1
  119. package/dist/utils/proxy/http-client.js +8 -2
  120. package/dist/utils/proxy/http-client.js.map +1 -1
  121. package/dist/utils/proxy/interceptors.d.ts.map +1 -1
  122. package/dist/utils/proxy/interceptors.js +4 -15
  123. package/dist/utils/proxy/interceptors.js.map +1 -1
  124. package/package.json +6 -2
@@ -0,0 +1 @@
1
+ {"version":3,"file":"aggregator.js","sourceRoot":"","sources":["../../../src/analytics/aggregation/aggregator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,63 @@
1
+ /**
2
+ * Base Analytics Adapter
3
+ *
4
+ * Provides common functionality for all agent analytics adapters.
5
+ * Implements the AgentAnalyticsAdapter interface with shared logic.
6
+ * Subclasses provide agent-specific session discovery and extraction.
7
+ */
8
+ import { AgentAnalyticsAdapter, AdapterMetadata } from './adapter.interface.js';
9
+ import { SessionQueryOptions, SessionDescriptor, CodemieSession, CodemieMessage, CodemieToolCall, CodemieFileModification } from '../types.js';
10
+ /**
11
+ * Base Analytics Adapter
12
+ *
13
+ * Provides common functionality for all agent analytics adapters.
14
+ * Implements the AgentAnalyticsAdapter interface with shared logic.
15
+ * Subclasses provide agent-specific session discovery and extraction.
16
+ */
17
+ export declare abstract class BaseAnalyticsAdapter implements AgentAnalyticsAdapter {
18
+ agentName: string;
19
+ displayName: string;
20
+ version: string;
21
+ protected homePath: string;
22
+ protected sessionsPath: string;
23
+ /**
24
+ * Constructor - Extracts metadata for all adapters
25
+ */
26
+ constructor(metadata: AdapterMetadata);
27
+ /**
28
+ * Validate that the adapter's data source exists
29
+ * Implementation provided - works for all adapters
30
+ */
31
+ validateSource(): Promise<boolean>;
32
+ /**
33
+ * Apply pagination to session descriptors
34
+ * Shared helper for subclasses to use in findSessions()
35
+ */
36
+ protected applyPagination(descriptors: SessionDescriptor[], options?: SessionQueryOptions): SessionDescriptor[];
37
+ /**
38
+ * Find all sessions - MUST be implemented by subclass
39
+ * Each agent stores sessions differently
40
+ */
41
+ abstract findSessions(options?: SessionQueryOptions): Promise<SessionDescriptor[]>;
42
+ /**
43
+ * Extract full session - MUST be implemented by subclass
44
+ * Each agent has different session format
45
+ */
46
+ abstract extractSession(descriptor: SessionDescriptor): Promise<CodemieSession>;
47
+ /**
48
+ * Extract messages - MUST be implemented by subclass
49
+ * Each agent has different message format
50
+ */
51
+ abstract extractMessages(descriptor: SessionDescriptor): Promise<CodemieMessage[]>;
52
+ /**
53
+ * Extract tool calls - MUST be implemented by subclass
54
+ * Each agent has different tool call format
55
+ */
56
+ abstract extractToolCalls(descriptor: SessionDescriptor): Promise<CodemieToolCall[]>;
57
+ /**
58
+ * Extract file modifications - MUST be implemented by subclass
59
+ * Each agent has different tool naming
60
+ */
61
+ abstract extractFileModifications(descriptor: SessionDescriptor): Promise<CodemieFileModification[]>;
62
+ }
63
+ //# sourceMappingURL=BaseAnalyticsAdapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BaseAnalyticsAdapter.d.ts","sourceRoot":"","sources":["../../../../src/analytics/aggregation/core/BaseAnalyticsAdapter.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EACL,qBAAqB,EACrB,eAAe,EAChB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EACL,mBAAmB,EACnB,iBAAiB,EACjB,cAAc,EACd,cAAc,EACd,eAAe,EACf,uBAAuB,EACxB,MAAM,aAAa,CAAC;AAErB;;;;;;GAMG;AACH,8BAAsB,oBAAqB,YAAW,qBAAqB;IAEzE,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,SAAW;IAGlB,SAAS,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC3B,SAAS,CAAC,YAAY,EAAE,MAAM,CAAC;IAE/B;;OAEG;gBACS,QAAQ,EAAE,eAAe;IASrC;;;OAGG;IACG,cAAc,IAAI,OAAO,CAAC,OAAO,CAAC;IAKxC;;;OAGG;IACH,SAAS,CAAC,eAAe,CACvB,WAAW,EAAE,iBAAiB,EAAE,EAChC,OAAO,CAAC,EAAE,mBAAmB,GAC5B,iBAAiB,EAAE;IAgBtB;;;OAGG;IACH,QAAQ,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAElF;;;OAGG;IACH,QAAQ,CAAC,cAAc,CAAC,UAAU,EAAE,iBAAiB,GAAG,OAAO,CAAC,cAAc,CAAC;IAE/E;;;OAGG;IACH,QAAQ,CAAC,eAAe,CAAC,UAAU,EAAE,iBAAiB,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IAElF;;;OAGG;IACH,QAAQ,CAAC,gBAAgB,CAAC,UAAU,EAAE,iBAAiB,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IAEpF;;;OAGG;IACH,QAAQ,CAAC,wBAAwB,CAAC,UAAU,EAAE,iBAAiB,GAAG,OAAO,CAAC,uBAAuB,EAAE,CAAC;CACrG"}
@@ -0,0 +1,58 @@
1
+ /**
2
+ * Base Analytics Adapter
3
+ *
4
+ * Provides common functionality for all agent analytics adapters.
5
+ * Implements the AgentAnalyticsAdapter interface with shared logic.
6
+ * Subclasses provide agent-specific session discovery and extraction.
7
+ */
8
+ import { existsSync } from 'node:fs';
9
+ import { resolvePath } from './discovery.js';
10
+ /**
11
+ * Base Analytics Adapter
12
+ *
13
+ * Provides common functionality for all agent analytics adapters.
14
+ * Implements the AgentAnalyticsAdapter interface with shared logic.
15
+ * Subclasses provide agent-specific session discovery and extraction.
16
+ */
17
+ export class BaseAnalyticsAdapter {
18
+ // === Interface Properties ===
19
+ agentName;
20
+ displayName;
21
+ version = '1.0.0';
22
+ // === Protected Properties ===
23
+ homePath;
24
+ sessionsPath;
25
+ /**
26
+ * Constructor - Extracts metadata for all adapters
27
+ */
28
+ constructor(metadata) {
29
+ this.agentName = metadata.name;
30
+ this.displayName = metadata.displayName;
31
+ // Extract paths from metadata
32
+ this.homePath = metadata.dataPaths?.home || `~/.${metadata.name}`;
33
+ this.sessionsPath = metadata.dataPaths?.sessions || 'sessions';
34
+ }
35
+ /**
36
+ * Validate that the adapter's data source exists
37
+ * Implementation provided - works for all adapters
38
+ */
39
+ async validateSource() {
40
+ const baseDir = resolvePath(this.homePath);
41
+ return existsSync(baseDir);
42
+ }
43
+ /**
44
+ * Apply pagination to session descriptors
45
+ * Shared helper for subclasses to use in findSessions()
46
+ */
47
+ applyPagination(descriptors, options) {
48
+ let results = descriptors;
49
+ if (options?.offset) {
50
+ results = results.slice(options.offset);
51
+ }
52
+ if (options?.limit) {
53
+ results = results.slice(0, options.limit);
54
+ }
55
+ return results;
56
+ }
57
+ }
58
+ //# sourceMappingURL=BaseAnalyticsAdapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BaseAnalyticsAdapter.js","sourceRoot":"","sources":["../../../../src/analytics/aggregation/core/BaseAnalyticsAdapter.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAKrC,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAU7C;;;;;;GAMG;AACH,MAAM,OAAgB,oBAAoB;IACxC,+BAA+B;IAC/B,SAAS,CAAS;IAClB,WAAW,CAAS;IACpB,OAAO,GAAG,OAAO,CAAC;IAElB,+BAA+B;IACrB,QAAQ,CAAS;IACjB,YAAY,CAAS;IAE/B;;OAEG;IACH,YAAY,QAAyB;QACnC,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC,IAAI,CAAC;QAC/B,IAAI,CAAC,WAAW,GAAG,QAAQ,CAAC,WAAW,CAAC;QAExC,8BAA8B;QAC9B,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC,SAAS,EAAE,IAAI,IAAI,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QAClE,IAAI,CAAC,YAAY,GAAG,QAAQ,CAAC,SAAS,EAAE,QAAQ,IAAI,UAAU,CAAC;IACjE,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,cAAc;QAClB,MAAM,OAAO,GAAG,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC3C,OAAO,UAAU,CAAC,OAAO,CAAC,CAAC;IAC7B,CAAC;IAED;;;OAGG;IACO,eAAe,CACvB,WAAgC,EAChC,OAA6B;QAE7B,IAAI,OAAO,GAAG,WAAW,CAAC;QAE1B,IAAI,OAAO,EAAE,MAAM,EAAE,CAAC;YACpB,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAC1C,CAAC;QAED,IAAI,OAAO,EAAE,KAAK,EAAE,CAAC;YACnB,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;QAC5C,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;CAiCF"}
@@ -0,0 +1,65 @@
1
+ /**
2
+ * Agent Analytics Adapter Interface
3
+ *
4
+ * Defines the contract that all agent-specific analytics adapters must implement.
5
+ * This interface enables standardized extraction of analytics data from different
6
+ * agent log formats (JSON, JSONL, etc.).
7
+ */
8
+ import { SessionQueryOptions, SessionDescriptor, CodemieSession, CodemieMessage, CodemieToolCall, CodemieFileModification } from '../types.js';
9
+ /**
10
+ * Base interface for agent analytics adapters
11
+ */
12
+ export interface AgentAnalyticsAdapter {
13
+ agentName: string;
14
+ displayName: string;
15
+ version: string;
16
+ /**
17
+ * Find all sessions matching the query criteria
18
+ * @param options Query options for filtering sessions
19
+ * @returns Array of session descriptors (lightweight metadata)
20
+ */
21
+ findSessions(options?: SessionQueryOptions): Promise<SessionDescriptor[]>;
22
+ /**
23
+ * Extract full session details from a session descriptor
24
+ * @param descriptor Session descriptor from findSessions()
25
+ * @returns Complete session with aggregated statistics
26
+ */
27
+ extractSession(descriptor: SessionDescriptor): Promise<CodemieSession>;
28
+ /**
29
+ * Extract all messages from a session
30
+ * @param descriptor Session descriptor
31
+ * @returns Array of messages
32
+ */
33
+ extractMessages(descriptor: SessionDescriptor): Promise<CodemieMessage[]>;
34
+ /**
35
+ * Extract all tool calls from a session
36
+ * @param descriptor Session descriptor
37
+ * @returns Array of tool calls
38
+ */
39
+ extractToolCalls(descriptor: SessionDescriptor): Promise<CodemieToolCall[]>;
40
+ /**
41
+ * Extract all file modifications from a session
42
+ * @param descriptor Session descriptor
43
+ * @returns Array of file modifications
44
+ */
45
+ extractFileModifications(descriptor: SessionDescriptor): Promise<CodemieFileModification[]>;
46
+ /**
47
+ * Validate that the adapter's data source is accessible
48
+ * @returns true if data source exists and is readable
49
+ */
50
+ validateSource(): Promise<boolean>;
51
+ }
52
+ /**
53
+ * Metadata passed from plugin to adapter constructor
54
+ */
55
+ export interface AdapterMetadata {
56
+ name: string;
57
+ displayName: string;
58
+ dataPaths?: {
59
+ home: string;
60
+ sessions?: string;
61
+ settings?: string;
62
+ cache?: string;
63
+ };
64
+ }
65
+ //# sourceMappingURL=adapter.interface.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adapter.interface.d.ts","sourceRoot":"","sources":["../../../../src/analytics/aggregation/core/adapter.interface.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EACL,mBAAmB,EACnB,iBAAiB,EACjB,cAAc,EACd,cAAc,EACd,eAAe,EACf,uBAAuB,EACxB,MAAM,aAAa,CAAC;AAErB;;GAEG;AACH,MAAM,WAAW,qBAAqB;IAEpC,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAGhB;;;;OAIG;IACH,YAAY,CAAC,OAAO,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAAC;IAG1E;;;;OAIG;IACH,cAAc,CAAC,UAAU,EAAE,iBAAiB,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;IAEvE;;;;OAIG;IACH,eAAe,CAAC,UAAU,EAAE,iBAAiB,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC;IAE1E;;;;OAIG;IACH,gBAAgB,CAAC,UAAU,EAAE,iBAAiB,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC,CAAC;IAE5E;;;;OAIG;IACH,wBAAwB,CAAC,UAAU,EAAE,iBAAiB,GAAG,OAAO,CAAC,uBAAuB,EAAE,CAAC,CAAC;IAG5F;;;OAGG;IACH,cAAc,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;CACpC;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE;QACV,IAAI,EAAE,MAAM,CAAC;QACb,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,CAAC;CACH"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Agent Analytics Adapter Interface
3
+ *
4
+ * Defines the contract that all agent-specific analytics adapters must implement.
5
+ * This interface enables standardized extraction of analytics data from different
6
+ * agent log formats (JSON, JSONL, etc.).
7
+ */
8
+ export {};
9
+ //# sourceMappingURL=adapter.interface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adapter.interface.js","sourceRoot":"","sources":["../../../../src/analytics/aggregation/core/adapter.interface.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG"}
@@ -0,0 +1,66 @@
1
+ /**
2
+ * Aggregation Utilities
3
+ *
4
+ * Shared utility functions for aggregating file modification statistics.
5
+ * Used by all analytics adapters to calculate consistent statistics.
6
+ */
7
+ import { CodemieFileModification } from '../types.js';
8
+ /**
9
+ * Aggregate file modifications by language
10
+ */
11
+ export declare function aggregateByLanguage(modifications: CodemieFileModification[]): Record<string, {
12
+ filesCreated: number;
13
+ filesModified: number;
14
+ linesAdded: number;
15
+ linesRemoved: number;
16
+ }>;
17
+ /**
18
+ * Aggregate file modifications by format
19
+ */
20
+ export declare function aggregateByFormat(modifications: CodemieFileModification[]): Record<string, {
21
+ filesCreated: number;
22
+ filesModified: number;
23
+ linesAdded: number;
24
+ linesRemoved: number;
25
+ }>;
26
+ /**
27
+ * Aggregate file modifications by tool
28
+ */
29
+ export declare function aggregateByTool(modifications: CodemieFileModification[]): Record<string, {
30
+ count: number;
31
+ linesAdded: number;
32
+ linesRemoved: number;
33
+ }>;
34
+ /**
35
+ * Calculate file statistics from modifications
36
+ */
37
+ export declare function calculateFileStats(modifications: CodemieFileModification[]): {
38
+ filesCreated: number;
39
+ filesModified: number;
40
+ filesDeleted: number;
41
+ totalLinesAdded: number;
42
+ totalLinesRemoved: number;
43
+ totalLinesModified: number;
44
+ byLanguage: Record<string, {
45
+ filesCreated: number;
46
+ filesModified: number;
47
+ linesAdded: number;
48
+ linesRemoved: number;
49
+ }>;
50
+ byFormat: Record<string, {
51
+ filesCreated: number;
52
+ filesModified: number;
53
+ linesAdded: number;
54
+ linesRemoved: number;
55
+ }>;
56
+ byTool: Record<string, {
57
+ count: number;
58
+ linesAdded: number;
59
+ linesRemoved: number;
60
+ }>;
61
+ } | undefined;
62
+ /**
63
+ * Calculate duration between two dates
64
+ */
65
+ export declare function calculateDuration(startTime: Date | string, endTime: Date | string): number;
66
+ //# sourceMappingURL=aggregation-utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"aggregation-utils.d.ts","sourceRoot":"","sources":["../../../../src/analytics/aggregation/core/aggregation-utils.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;AAwCtD;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,aAAa,EAAE,uBAAuB,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE;IAC5F,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;CACtB,CAAC,CAED;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,aAAa,EAAE,uBAAuB,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE;IAC1F,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;CACtB,CAAC,CAED;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,aAAa,EAAE,uBAAuB,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE;IACxF,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;CACtB,CAAC,CAmBD;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,aAAa,EAAE,uBAAuB,EAAE;;;;;;;;sBAnD3D,MAAM;uBACL,MAAM;oBACT,MAAM;sBACJ,MAAM;;;sBASN,MAAM;uBACL,MAAM;oBACT,MAAM;sBACJ,MAAM;;;eASb,MAAM;oBACD,MAAM;sBACJ,MAAM;;cAyCrB;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,IAAI,GAAG,MAAM,EAAE,OAAO,EAAE,IAAI,GAAG,MAAM,GAAG,MAAM,CAI1F"}
@@ -0,0 +1,83 @@
1
+ /**
2
+ * Aggregation Utilities
3
+ *
4
+ * Shared utility functions for aggregating file modification statistics.
5
+ * Used by all analytics adapters to calculate consistent statistics.
6
+ */
7
+ /**
8
+ * Aggregate file modifications by a specific key
9
+ */
10
+ function aggregateByKey(modifications, keyExtractor) {
11
+ const result = {};
12
+ for (const mod of modifications) {
13
+ const key = keyExtractor(mod) || 'other';
14
+ if (!result[key]) {
15
+ result[key] = { filesCreated: 0, filesModified: 0, linesAdded: 0, linesRemoved: 0 };
16
+ }
17
+ if (mod.wasNewFile) {
18
+ result[key].filesCreated++;
19
+ }
20
+ else {
21
+ result[key].filesModified++;
22
+ }
23
+ result[key].linesAdded += mod.linesAdded;
24
+ result[key].linesRemoved += mod.linesRemoved;
25
+ }
26
+ return result;
27
+ }
28
+ /**
29
+ * Aggregate file modifications by language
30
+ */
31
+ export function aggregateByLanguage(modifications) {
32
+ return aggregateByKey(modifications, mod => mod.language);
33
+ }
34
+ /**
35
+ * Aggregate file modifications by format
36
+ */
37
+ export function aggregateByFormat(modifications) {
38
+ return aggregateByKey(modifications, mod => mod.format);
39
+ }
40
+ /**
41
+ * Aggregate file modifications by tool
42
+ */
43
+ export function aggregateByTool(modifications) {
44
+ const result = {};
45
+ for (const mod of modifications) {
46
+ const key = mod.toolName;
47
+ if (!result[key]) {
48
+ result[key] = { count: 0, linesAdded: 0, linesRemoved: 0 };
49
+ }
50
+ result[key].count++;
51
+ result[key].linesAdded += mod.linesAdded;
52
+ result[key].linesRemoved += mod.linesRemoved;
53
+ }
54
+ return result;
55
+ }
56
+ /**
57
+ * Calculate file statistics from modifications
58
+ */
59
+ export function calculateFileStats(modifications) {
60
+ if (modifications.length === 0) {
61
+ return undefined;
62
+ }
63
+ return {
64
+ filesCreated: modifications.filter(fm => fm.wasNewFile).length,
65
+ filesModified: modifications.filter(fm => !fm.wasNewFile && fm.operation !== 'delete').length,
66
+ filesDeleted: modifications.filter(fm => fm.operation === 'delete').length,
67
+ totalLinesAdded: modifications.reduce((sum, fm) => sum + fm.linesAdded, 0),
68
+ totalLinesRemoved: modifications.reduce((sum, fm) => sum + fm.linesRemoved, 0),
69
+ totalLinesModified: modifications.reduce((sum, fm) => sum + (fm.linesModified || 0), 0),
70
+ byLanguage: aggregateByLanguage(modifications),
71
+ byFormat: aggregateByFormat(modifications),
72
+ byTool: aggregateByTool(modifications)
73
+ };
74
+ }
75
+ /**
76
+ * Calculate duration between two dates
77
+ */
78
+ export function calculateDuration(startTime, endTime) {
79
+ const start = typeof startTime === 'string' ? new Date(startTime) : startTime;
80
+ const end = typeof endTime === 'string' ? new Date(endTime) : endTime;
81
+ return end.getTime() - start.getTime();
82
+ }
83
+ //# sourceMappingURL=aggregation-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"aggregation-utils.js","sourceRoot":"","sources":["../../../../src/analytics/aggregation/core/aggregation-utils.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,40 @@
1
+ /**
2
+ * File Discovery Utilities
3
+ *
4
+ * Provides utilities for discovering session files across different agent formats
5
+ */
6
+ /**
7
+ * Resolve path with home directory expansion
8
+ * @param path Path to resolve (supports ~ expansion)
9
+ * @returns Absolute resolved path
10
+ */
11
+ export declare function resolvePath(path: string): string;
12
+ /**
13
+ * Find all files matching a glob pattern (simplified)
14
+ * @param dir Directory to search
15
+ * @param pattern File pattern (e.g., "*.json", "session-*.jsonl")
16
+ * @returns Array of absolute file paths
17
+ */
18
+ export declare function findFiles(dir: string, pattern: string | RegExp): Promise<string[]>;
19
+ /**
20
+ * Find directories matching a pattern
21
+ * @param baseDir Base directory to search
22
+ * @param pattern Directory name pattern
23
+ * @returns Array of absolute directory paths
24
+ */
25
+ export declare function findDirectories(baseDir: string, pattern?: string | RegExp): Promise<string[]>;
26
+ /**
27
+ * Get file modification time
28
+ * @param filePath Path to file
29
+ * @returns Date of last modification or null if file doesn't exist
30
+ */
31
+ export declare function getFileModTime(filePath: string): Promise<Date | null>;
32
+ /**
33
+ * Filter files by date range
34
+ * @param filePaths Array of file paths
35
+ * @param dateFrom Start date (inclusive)
36
+ * @param dateTo End date (inclusive)
37
+ * @returns Filtered array of file paths
38
+ */
39
+ export declare function filterFilesByDate(filePaths: string[], dateFrom?: Date, dateTo?: Date): Promise<string[]>;
40
+ //# sourceMappingURL=discovery.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"discovery.d.ts","sourceRoot":"","sources":["../../../../src/analytics/aggregation/core/discovery.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAOH;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAKhD;AAED;;;;;GAKG;AACH,wBAAsB,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAmCxF;AAED;;;;;GAKG;AACH,wBAAsB,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CA+BnG;AAED;;;;GAIG;AACH,wBAAsB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,CAO3E;AAED;;;;;;GAMG;AACH,wBAAsB,iBAAiB,CACrC,SAAS,EAAE,MAAM,EAAE,EACnB,QAAQ,CAAC,EAAE,IAAI,EACf,MAAM,CAAC,EAAE,IAAI,GACZ,OAAO,CAAC,MAAM,EAAE,CAAC,CAcnB"}
@@ -0,0 +1,132 @@
1
+ /**
2
+ * File Discovery Utilities
3
+ *
4
+ * Provides utilities for discovering session files across different agent formats
5
+ */
6
+ import { readdir, stat } from 'node:fs/promises';
7
+ import { join, resolve } from 'node:path';
8
+ import { homedir } from 'node:os';
9
+ import { existsSync } from 'node:fs';
10
+ /**
11
+ * Resolve path with home directory expansion
12
+ * @param path Path to resolve (supports ~ expansion)
13
+ * @returns Absolute resolved path
14
+ */
15
+ export function resolvePath(path) {
16
+ if (path.startsWith('~/')) {
17
+ return join(homedir(), path.slice(2));
18
+ }
19
+ return resolve(path);
20
+ }
21
+ /**
22
+ * Find all files matching a glob pattern (simplified)
23
+ * @param dir Directory to search
24
+ * @param pattern File pattern (e.g., "*.json", "session-*.jsonl")
25
+ * @returns Array of absolute file paths
26
+ */
27
+ export async function findFiles(dir, pattern) {
28
+ const results = [];
29
+ if (!existsSync(dir)) {
30
+ return results;
31
+ }
32
+ try {
33
+ const entries = await readdir(dir, { withFileTypes: true });
34
+ for (const entry of entries) {
35
+ const fullPath = join(dir, entry.name);
36
+ if (entry.isDirectory()) {
37
+ // Recursively search subdirectories
38
+ const subResults = await findFiles(fullPath, pattern);
39
+ results.push(...subResults);
40
+ }
41
+ else if (entry.isFile()) {
42
+ // Check if file matches pattern
43
+ if (typeof pattern === 'string') {
44
+ // Simple glob pattern support
45
+ const regex = new RegExp('^' + pattern.replace(/\*/g, '.*').replace(/\?/g, '.') + '$');
46
+ if (regex.test(entry.name)) {
47
+ results.push(fullPath);
48
+ }
49
+ }
50
+ else if (pattern.test(entry.name)) {
51
+ results.push(fullPath);
52
+ }
53
+ }
54
+ }
55
+ }
56
+ catch (error) {
57
+ console.error(`Error scanning directory ${dir}: ${error}`);
58
+ }
59
+ return results;
60
+ }
61
+ /**
62
+ * Find directories matching a pattern
63
+ * @param baseDir Base directory to search
64
+ * @param pattern Directory name pattern
65
+ * @returns Array of absolute directory paths
66
+ */
67
+ export async function findDirectories(baseDir, pattern) {
68
+ const results = [];
69
+ if (!existsSync(baseDir)) {
70
+ return results;
71
+ }
72
+ try {
73
+ const entries = await readdir(baseDir, { withFileTypes: true });
74
+ for (const entry of entries) {
75
+ if (entry.isDirectory()) {
76
+ const fullPath = join(baseDir, entry.name);
77
+ if (!pattern) {
78
+ results.push(fullPath);
79
+ }
80
+ else if (typeof pattern === 'string') {
81
+ const regex = new RegExp('^' + pattern.replace(/\*/g, '.*') + '$');
82
+ if (regex.test(entry.name)) {
83
+ results.push(fullPath);
84
+ }
85
+ }
86
+ else if (pattern.test(entry.name)) {
87
+ results.push(fullPath);
88
+ }
89
+ }
90
+ }
91
+ }
92
+ catch (error) {
93
+ console.error(`Error scanning directory ${baseDir}: ${error}`);
94
+ }
95
+ return results;
96
+ }
97
+ /**
98
+ * Get file modification time
99
+ * @param filePath Path to file
100
+ * @returns Date of last modification or null if file doesn't exist
101
+ */
102
+ export async function getFileModTime(filePath) {
103
+ try {
104
+ const stats = await stat(filePath);
105
+ return stats.mtime;
106
+ }
107
+ catch {
108
+ return null;
109
+ }
110
+ }
111
+ /**
112
+ * Filter files by date range
113
+ * @param filePaths Array of file paths
114
+ * @param dateFrom Start date (inclusive)
115
+ * @param dateTo End date (inclusive)
116
+ * @returns Filtered array of file paths
117
+ */
118
+ export async function filterFilesByDate(filePaths, dateFrom, dateTo) {
119
+ const results = [];
120
+ for (const filePath of filePaths) {
121
+ const modTime = await getFileModTime(filePath);
122
+ if (!modTime)
123
+ continue;
124
+ if (dateFrom && modTime < dateFrom)
125
+ continue;
126
+ if (dateTo && modTime > dateTo)
127
+ continue;
128
+ results.push(filePath);
129
+ }
130
+ return results;
131
+ }
132
+ //# sourceMappingURL=discovery.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"discovery.js","sourceRoot":"","sources":["../../../../src/analytics/aggregation/core/discovery.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * File Utilities for Analytics
3
+ *
4
+ * Provides utilities for detecting file language and format categories.
5
+ */
6
+ /**
7
+ * Detect programming language from file extension
8
+ */
9
+ export declare function detectLanguage(filePath: string): string | undefined;
10
+ /**
11
+ * Detect file format category
12
+ */
13
+ export declare function detectFormat(filePath: string): string;
14
+ /**
15
+ * Count lines in a string
16
+ * Uses split('\n').length for consistency
17
+ */
18
+ export declare function countLines(content: string): number;
19
+ /**
20
+ * Calculate byte size of string content
21
+ */
22
+ export declare function calculateByteSize(content: string): number;
23
+ //# sourceMappingURL=file-utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-utils.d.ts","sourceRoot":"","sources":["../../../../src/analytics/aggregation/core/file-utils.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH;;GAEG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CA4GnE;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAyGrD;AAED;;;GAGG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAGlD;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAEzD"}