@codemieai/code 0.0.12 → 0.0.13
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.
- package/README.md +65 -778
- package/dist/agents/core/BaseAgentAdapter.d.ts.map +1 -1
- package/dist/agents/core/BaseAgentAdapter.js +31 -3
- package/dist/agents/core/BaseAgentAdapter.js.map +1 -1
- package/dist/agents/core/types.d.ts +18 -0
- package/dist/agents/core/types.d.ts.map +1 -1
- package/dist/agents/plugins/claude.plugin.d.ts +0 -3
- package/dist/agents/plugins/claude.plugin.d.ts.map +1 -1
- package/dist/agents/plugins/claude.plugin.js +12 -1
- package/dist/agents/plugins/claude.plugin.js.map +1 -1
- package/dist/agents/plugins/codex.plugin.d.ts.map +1 -1
- package/dist/agents/plugins/codex.plugin.js +40 -4
- package/dist/agents/plugins/codex.plugin.js.map +1 -1
- package/dist/agents/plugins/gemini.plugin.d.ts.map +1 -1
- package/dist/agents/plugins/gemini.plugin.js +50 -5
- package/dist/agents/plugins/gemini.plugin.js.map +1 -1
- package/dist/agents/registry.d.ts +15 -2
- package/dist/agents/registry.d.ts.map +1 -1
- package/dist/agents/registry.js +30 -6
- package/dist/agents/registry.js.map +1 -1
- package/dist/analytics/aggregation/adapters/claude.adapter.d.ts +37 -0
- package/dist/analytics/aggregation/adapters/claude.adapter.d.ts.map +1 -0
- package/dist/analytics/aggregation/adapters/claude.adapter.js +471 -0
- package/dist/analytics/aggregation/adapters/claude.adapter.js.map +1 -0
- package/dist/analytics/aggregation/adapters/codex.adapter.d.ts +25 -0
- package/dist/analytics/aggregation/adapters/codex.adapter.d.ts.map +1 -0
- package/dist/analytics/aggregation/adapters/codex.adapter.js +376 -0
- package/dist/analytics/aggregation/adapters/codex.adapter.js.map +1 -0
- package/dist/analytics/aggregation/adapters/gemini.adapter.d.ts +28 -0
- package/dist/analytics/aggregation/adapters/gemini.adapter.d.ts.map +1 -0
- package/dist/analytics/aggregation/adapters/gemini.adapter.js +320 -0
- package/dist/analytics/aggregation/adapters/gemini.adapter.js.map +1 -0
- package/dist/analytics/aggregation/adapters/index.d.ts +7 -0
- package/dist/analytics/aggregation/adapters/index.d.ts.map +1 -0
- package/dist/analytics/aggregation/adapters/index.js +7 -0
- package/dist/analytics/aggregation/adapters/index.js.map +1 -0
- package/dist/analytics/aggregation/aggregator.d.ts +49 -0
- package/dist/analytics/aggregation/aggregator.d.ts.map +1 -0
- package/dist/analytics/aggregation/aggregator.js +239 -0
- package/dist/analytics/aggregation/aggregator.js.map +1 -0
- package/dist/analytics/aggregation/core/BaseAnalyticsAdapter.d.ts +63 -0
- package/dist/analytics/aggregation/core/BaseAnalyticsAdapter.d.ts.map +1 -0
- package/dist/analytics/aggregation/core/BaseAnalyticsAdapter.js +58 -0
- package/dist/analytics/aggregation/core/BaseAnalyticsAdapter.js.map +1 -0
- package/dist/analytics/aggregation/core/adapter.interface.d.ts +65 -0
- package/dist/analytics/aggregation/core/adapter.interface.d.ts.map +1 -0
- package/dist/analytics/aggregation/core/adapter.interface.js +9 -0
- package/dist/analytics/aggregation/core/adapter.interface.js.map +1 -0
- package/dist/analytics/aggregation/core/aggregation-utils.d.ts +66 -0
- package/dist/analytics/aggregation/core/aggregation-utils.d.ts.map +1 -0
- package/dist/analytics/aggregation/core/aggregation-utils.js +83 -0
- package/dist/analytics/aggregation/core/aggregation-utils.js.map +1 -0
- package/dist/analytics/aggregation/core/discovery.d.ts +40 -0
- package/dist/analytics/aggregation/core/discovery.d.ts.map +1 -0
- package/dist/analytics/aggregation/core/discovery.js +132 -0
- package/dist/analytics/aggregation/core/discovery.js.map +1 -0
- package/dist/analytics/aggregation/core/file-utils.d.ts +23 -0
- package/dist/analytics/aggregation/core/file-utils.d.ts.map +1 -0
- package/dist/analytics/aggregation/core/file-utils.js +208 -0
- package/dist/analytics/aggregation/core/file-utils.js.map +1 -0
- package/dist/analytics/aggregation/core/index.d.ts +11 -0
- package/dist/analytics/aggregation/core/index.d.ts.map +1 -0
- package/dist/analytics/aggregation/core/index.js +11 -0
- package/dist/analytics/aggregation/core/index.js.map +1 -0
- package/dist/analytics/aggregation/core/project-mapping.d.ts +50 -0
- package/dist/analytics/aggregation/core/project-mapping.d.ts.map +1 -0
- package/dist/analytics/aggregation/core/project-mapping.js +102 -0
- package/dist/analytics/aggregation/core/project-mapping.js.map +1 -0
- package/dist/analytics/aggregation/core/streaming.d.ts +26 -0
- package/dist/analytics/aggregation/core/streaming.d.ts.map +1 -0
- package/dist/analytics/aggregation/core/streaming.js +58 -0
- package/dist/analytics/aggregation/core/streaming.js.map +1 -0
- package/dist/analytics/aggregation/index.d.ts +8 -0
- package/dist/analytics/aggregation/index.d.ts.map +1 -0
- package/dist/analytics/aggregation/index.js +8 -0
- package/dist/analytics/aggregation/index.js.map +1 -0
- package/dist/analytics/aggregation/types.d.ts +258 -0
- package/dist/analytics/aggregation/types.d.ts.map +1 -0
- package/dist/analytics/aggregation/types.js +8 -0
- package/dist/analytics/aggregation/types.js.map +1 -0
- package/dist/analytics/config.d.ts +1 -0
- package/dist/analytics/config.d.ts.map +1 -1
- package/dist/analytics/config.js +20 -1
- package/dist/analytics/config.js.map +1 -1
- package/dist/analytics/index.d.ts +0 -9
- package/dist/analytics/index.d.ts.map +1 -1
- package/dist/analytics/index.js +14 -48
- package/dist/analytics/index.js.map +1 -1
- package/dist/analytics/plugins/api-metrics.plugin.d.ts +4 -1
- package/dist/analytics/plugins/api-metrics.plugin.d.ts.map +1 -1
- package/dist/analytics/plugins/api-metrics.plugin.js +6 -22
- package/dist/analytics/plugins/api-metrics.plugin.js.map +1 -1
- package/dist/analytics/plugins/model-metrics.plugin.d.ts +4 -1
- package/dist/analytics/plugins/model-metrics.plugin.d.ts.map +1 -1
- package/dist/analytics/plugins/model-metrics.plugin.js +7 -17
- package/dist/analytics/plugins/model-metrics.plugin.js.map +1 -1
- package/dist/analytics/plugins/provider-metrics.plugin.d.ts +4 -1
- package/dist/analytics/plugins/provider-metrics.plugin.d.ts.map +1 -1
- package/dist/analytics/plugins/provider-metrics.plugin.js +7 -22
- package/dist/analytics/plugins/provider-metrics.plugin.js.map +1 -1
- package/dist/analytics/plugins/types.d.ts +0 -2
- package/dist/analytics/plugins/types.d.ts.map +1 -1
- package/dist/analytics/plugins/types.js.map +1 -1
- package/dist/analytics/session.d.ts +2 -2
- package/dist/analytics/session.d.ts.map +1 -1
- package/dist/analytics/session.js +3 -3
- package/dist/analytics/session.js.map +1 -1
- package/dist/analytics/types.d.ts +1 -1
- package/dist/analytics/types.d.ts.map +1 -1
- package/dist/cli/commands/analytics.d.ts.map +1 -1
- package/dist/cli/commands/analytics.js +512 -252
- package/dist/cli/commands/analytics.js.map +1 -1
- package/dist/cli/commands/setup.js +70 -1
- package/dist/cli/commands/setup.js.map +1 -1
- package/dist/utils/codemie-proxy.d.ts.map +1 -1
- package/dist/utils/codemie-proxy.js +16 -3
- package/dist/utils/codemie-proxy.js.map +1 -1
- package/dist/utils/proxy/http-client.d.ts.map +1 -1
- package/dist/utils/proxy/http-client.js +8 -2
- package/dist/utils/proxy/http-client.js.map +1 -1
- package/dist/utils/proxy/interceptors.d.ts.map +1 -1
- package/dist/utils/proxy/interceptors.js +4 -15
- package/dist/utils/proxy/interceptors.js.map +1 -1
- package/package.json +6 -2
|
@@ -0,0 +1,208 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* File Utilities for Analytics
|
|
3
|
+
*
|
|
4
|
+
* Provides utilities for detecting file language and format categories.
|
|
5
|
+
*/
|
|
6
|
+
import { extname } from 'node:path';
|
|
7
|
+
/**
|
|
8
|
+
* Detect programming language from file extension
|
|
9
|
+
*/
|
|
10
|
+
export function detectLanguage(filePath) {
|
|
11
|
+
const ext = extname(filePath).toLowerCase();
|
|
12
|
+
const languageMap = {
|
|
13
|
+
// TypeScript / JavaScript
|
|
14
|
+
'.ts': 'typescript',
|
|
15
|
+
'.tsx': 'typescript',
|
|
16
|
+
'.js': 'javascript',
|
|
17
|
+
'.jsx': 'javascript',
|
|
18
|
+
'.mjs': 'javascript',
|
|
19
|
+
'.cjs': 'javascript',
|
|
20
|
+
// Python
|
|
21
|
+
'.py': 'python',
|
|
22
|
+
'.pyw': 'python',
|
|
23
|
+
'.pyx': 'python',
|
|
24
|
+
// Java / JVM
|
|
25
|
+
'.java': 'java',
|
|
26
|
+
'.kt': 'kotlin',
|
|
27
|
+
'.kts': 'kotlin',
|
|
28
|
+
'.scala': 'scala',
|
|
29
|
+
'.groovy': 'groovy',
|
|
30
|
+
// C / C++
|
|
31
|
+
'.c': 'c',
|
|
32
|
+
'.h': 'c',
|
|
33
|
+
'.cpp': 'cpp',
|
|
34
|
+
'.cc': 'cpp',
|
|
35
|
+
'.cxx': 'cpp',
|
|
36
|
+
'.hpp': 'cpp',
|
|
37
|
+
'.hxx': 'cpp',
|
|
38
|
+
// C#
|
|
39
|
+
'.cs': 'csharp',
|
|
40
|
+
'.csx': 'csharp',
|
|
41
|
+
// Go
|
|
42
|
+
'.go': 'go',
|
|
43
|
+
// Rust
|
|
44
|
+
'.rs': 'rust',
|
|
45
|
+
// Ruby
|
|
46
|
+
'.rb': 'ruby',
|
|
47
|
+
'.rake': 'ruby',
|
|
48
|
+
// PHP
|
|
49
|
+
'.php': 'php',
|
|
50
|
+
'.phtml': 'php',
|
|
51
|
+
// Swift
|
|
52
|
+
'.swift': 'swift',
|
|
53
|
+
// Shell
|
|
54
|
+
'.sh': 'bash',
|
|
55
|
+
'.bash': 'bash',
|
|
56
|
+
'.zsh': 'zsh',
|
|
57
|
+
'.fish': 'fish',
|
|
58
|
+
// Web (Markup)
|
|
59
|
+
'.html': 'html',
|
|
60
|
+
'.htm': 'html',
|
|
61
|
+
'.xml': 'xml',
|
|
62
|
+
'.svg': 'svg',
|
|
63
|
+
// Web (Styles)
|
|
64
|
+
'.css': 'css',
|
|
65
|
+
'.scss': 'scss',
|
|
66
|
+
'.sass': 'sass',
|
|
67
|
+
'.less': 'less',
|
|
68
|
+
// SQL
|
|
69
|
+
'.sql': 'sql',
|
|
70
|
+
// Documentation / Markup
|
|
71
|
+
'.md': 'markdown',
|
|
72
|
+
'.mdx': 'markdown',
|
|
73
|
+
'.rst': 'restructuredtext',
|
|
74
|
+
'.tex': 'latex',
|
|
75
|
+
'.adoc': 'asciidoc',
|
|
76
|
+
// Data / Config (with language syntax)
|
|
77
|
+
'.json': 'json',
|
|
78
|
+
'.yaml': 'yaml',
|
|
79
|
+
'.yml': 'yaml',
|
|
80
|
+
'.toml': 'toml',
|
|
81
|
+
// Other languages
|
|
82
|
+
'.lua': 'lua',
|
|
83
|
+
'.r': 'r',
|
|
84
|
+
'.m': 'matlab',
|
|
85
|
+
'.pl': 'perl',
|
|
86
|
+
'.pm': 'perl',
|
|
87
|
+
'.ex': 'elixir',
|
|
88
|
+
'.exs': 'elixir',
|
|
89
|
+
'.erl': 'erlang',
|
|
90
|
+
'.hrl': 'erlang',
|
|
91
|
+
'.vim': 'vimscript',
|
|
92
|
+
'.lisp': 'lisp',
|
|
93
|
+
'.clj': 'clojure',
|
|
94
|
+
'.dart': 'dart',
|
|
95
|
+
'.julia': 'julia',
|
|
96
|
+
'.zig': 'zig',
|
|
97
|
+
'.nim': 'nim',
|
|
98
|
+
};
|
|
99
|
+
return languageMap[ext];
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Detect file format category
|
|
103
|
+
*/
|
|
104
|
+
export function detectFormat(filePath) {
|
|
105
|
+
const ext = extname(filePath).toLowerCase();
|
|
106
|
+
const basename = filePath.split('/').pop()?.toLowerCase() || '';
|
|
107
|
+
// Test files (check first, as they may have code extensions)
|
|
108
|
+
if (basename.includes('.test.') ||
|
|
109
|
+
basename.includes('.spec.') ||
|
|
110
|
+
basename.includes('_test.') ||
|
|
111
|
+
basename.includes('_spec.') ||
|
|
112
|
+
filePath.includes('/tests/') ||
|
|
113
|
+
filePath.includes('/test/') ||
|
|
114
|
+
filePath.includes('/__tests__/') ||
|
|
115
|
+
filePath.includes('/spec/')) {
|
|
116
|
+
return 'test';
|
|
117
|
+
}
|
|
118
|
+
// Documentation
|
|
119
|
+
const docExtensions = ['.md', '.mdx', '.rst', '.txt', '.adoc', '.tex'];
|
|
120
|
+
if (docExtensions.includes(ext)) {
|
|
121
|
+
return 'docs';
|
|
122
|
+
}
|
|
123
|
+
// Configuration files
|
|
124
|
+
const configExtensions = [
|
|
125
|
+
'.json', '.yaml', '.yml', '.toml', '.ini', '.conf',
|
|
126
|
+
'.xml', '.properties', '.env', '.config'
|
|
127
|
+
];
|
|
128
|
+
const configFiles = [
|
|
129
|
+
'dockerfile', 'makefile', 'rakefile', 'gemfile',
|
|
130
|
+
'package.json', 'tsconfig.json', 'jsconfig.json',
|
|
131
|
+
'webpack.config', 'rollup.config', 'vite.config',
|
|
132
|
+
'.eslintrc', '.prettierrc', '.babelrc', '.npmrc',
|
|
133
|
+
'.gitignore', '.dockerignore', '.editorconfig'
|
|
134
|
+
];
|
|
135
|
+
if (configExtensions.includes(ext) ||
|
|
136
|
+
configFiles.some(cfg => basename.includes(cfg))) {
|
|
137
|
+
return 'config';
|
|
138
|
+
}
|
|
139
|
+
// Data files
|
|
140
|
+
const dataExtensions = [
|
|
141
|
+
'.csv', '.tsv', '.parquet', '.avro',
|
|
142
|
+
'.db', '.sqlite', '.sql',
|
|
143
|
+
'.proto', '.thrift'
|
|
144
|
+
];
|
|
145
|
+
if (dataExtensions.includes(ext)) {
|
|
146
|
+
return 'data';
|
|
147
|
+
}
|
|
148
|
+
// Build/CI files
|
|
149
|
+
if (filePath.includes('.github/workflows/') ||
|
|
150
|
+
filePath.includes('.gitlab-ci') ||
|
|
151
|
+
basename.includes('jenkinsfile') ||
|
|
152
|
+
basename.includes('.travis.yml') ||
|
|
153
|
+
basename.includes('circle.yml')) {
|
|
154
|
+
return 'ci';
|
|
155
|
+
}
|
|
156
|
+
// Code files (programming languages)
|
|
157
|
+
const codeExtensions = [
|
|
158
|
+
'.ts', '.tsx', '.js', '.jsx', '.mjs', '.cjs',
|
|
159
|
+
'.py', '.pyw', '.java', '.kt', '.scala',
|
|
160
|
+
'.c', '.h', '.cpp', '.hpp', '.cc', '.cxx',
|
|
161
|
+
'.cs', '.go', '.rs', '.rb', '.php', '.swift',
|
|
162
|
+
'.sh', '.bash', '.lua', '.r', '.pl', '.ex',
|
|
163
|
+
'.erl', '.vim', '.lisp', '.clj', '.dart',
|
|
164
|
+
'.julia', '.zig', '.nim', '.m'
|
|
165
|
+
];
|
|
166
|
+
if (codeExtensions.includes(ext)) {
|
|
167
|
+
return 'code';
|
|
168
|
+
}
|
|
169
|
+
// Web assets (styles, markup)
|
|
170
|
+
const webExtensions = [
|
|
171
|
+
'.html', '.htm', '.css', '.scss', '.sass', '.less',
|
|
172
|
+
'.svg'
|
|
173
|
+
];
|
|
174
|
+
if (webExtensions.includes(ext)) {
|
|
175
|
+
return 'web';
|
|
176
|
+
}
|
|
177
|
+
// Assets (images, fonts, etc.)
|
|
178
|
+
const assetExtensions = [
|
|
179
|
+
'.png', '.jpg', '.jpeg', '.gif', '.webp', '.ico',
|
|
180
|
+
'.woff', '.woff2', '.ttf', '.eot', '.otf',
|
|
181
|
+
'.mp3', '.mp4', '.wav', '.ogg', '.webm'
|
|
182
|
+
];
|
|
183
|
+
if (assetExtensions.includes(ext)) {
|
|
184
|
+
return 'asset';
|
|
185
|
+
}
|
|
186
|
+
// License files
|
|
187
|
+
if (basename.includes('license') || basename.includes('copying')) {
|
|
188
|
+
return 'legal';
|
|
189
|
+
}
|
|
190
|
+
// Default to 'other'
|
|
191
|
+
return 'other';
|
|
192
|
+
}
|
|
193
|
+
/**
|
|
194
|
+
* Count lines in a string
|
|
195
|
+
* Uses split('\n').length for consistency
|
|
196
|
+
*/
|
|
197
|
+
export function countLines(content) {
|
|
198
|
+
if (!content)
|
|
199
|
+
return 0;
|
|
200
|
+
return content.split('\n').length;
|
|
201
|
+
}
|
|
202
|
+
/**
|
|
203
|
+
* Calculate byte size of string content
|
|
204
|
+
*/
|
|
205
|
+
export function calculateByteSize(content) {
|
|
206
|
+
return Buffer.byteLength(content, 'utf-8');
|
|
207
|
+
}
|
|
208
|
+
//# sourceMappingURL=file-utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"file-utils.js","sourceRoot":"","sources":["../../../../src/analytics/aggregation/core/file-utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Core utilities for analytics aggregation
|
|
3
|
+
*/
|
|
4
|
+
export * from './adapter.interface.js';
|
|
5
|
+
export * from './BaseAnalyticsAdapter.js';
|
|
6
|
+
export * from './aggregation-utils.js';
|
|
7
|
+
export * from './streaming.js';
|
|
8
|
+
export * from './discovery.js';
|
|
9
|
+
export * from './file-utils.js';
|
|
10
|
+
export * from './project-mapping.js';
|
|
11
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/analytics/aggregation/core/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,wBAAwB,CAAC;AACvC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,wBAAwB,CAAC;AACvC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC;AAChC,cAAc,sBAAsB,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Core utilities for analytics aggregation
|
|
3
|
+
*/
|
|
4
|
+
export * from './adapter.interface.js';
|
|
5
|
+
export * from './BaseAnalyticsAdapter.js';
|
|
6
|
+
export * from './aggregation-utils.js';
|
|
7
|
+
export * from './streaming.js';
|
|
8
|
+
export * from './discovery.js';
|
|
9
|
+
export * from './file-utils.js';
|
|
10
|
+
export * from './project-mapping.js';
|
|
11
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/analytics/aggregation/core/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,wBAAwB,CAAC;AACvC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,wBAAwB,CAAC;AACvC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC;AAChC,cAAc,sBAAsB,CAAC"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Project Path Mapping Utilities
|
|
3
|
+
*
|
|
4
|
+
* Manages the mapping between project hashes and actual file paths.
|
|
5
|
+
* Each agent (Gemini, Claude, etc.) stores their mappings in separate files.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Project mapping entry
|
|
9
|
+
*/
|
|
10
|
+
export interface ProjectMapping {
|
|
11
|
+
hash: string;
|
|
12
|
+
path: string;
|
|
13
|
+
lastUpdated: string;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Project mapping file structure
|
|
17
|
+
*/
|
|
18
|
+
export interface ProjectMappingFile {
|
|
19
|
+
version: string;
|
|
20
|
+
mappings: Record<string, ProjectMapping>;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Load project mappings for an agent
|
|
24
|
+
*/
|
|
25
|
+
export declare function loadProjectMappings(agent: string): ProjectMappingFile;
|
|
26
|
+
/**
|
|
27
|
+
* Save project mappings for an agent
|
|
28
|
+
*/
|
|
29
|
+
export declare function saveProjectMappings(agent: string, mappings: ProjectMappingFile): void;
|
|
30
|
+
/**
|
|
31
|
+
* Add or update a project mapping
|
|
32
|
+
*/
|
|
33
|
+
export declare function setProjectMapping(agent: string, hash: string, path: string): void;
|
|
34
|
+
/**
|
|
35
|
+
* Get the project path for a hash
|
|
36
|
+
*/
|
|
37
|
+
export declare function getProjectPath(agent: string, hash: string): string | undefined;
|
|
38
|
+
/**
|
|
39
|
+
* Resolve project path from hash, returning hash if not found
|
|
40
|
+
*/
|
|
41
|
+
export declare function resolveProjectPath(agent: string, hash: string): string;
|
|
42
|
+
/**
|
|
43
|
+
* Generate SHA-256 hash of a path
|
|
44
|
+
*/
|
|
45
|
+
export declare function hashProjectPath(path: string): string;
|
|
46
|
+
/**
|
|
47
|
+
* Register current working directory (helper for agent lifecycle hooks)
|
|
48
|
+
*/
|
|
49
|
+
export declare function registerCurrentProject(agent: string, workingDir: string): void;
|
|
50
|
+
//# sourceMappingURL=project-mapping.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project-mapping.d.ts","sourceRoot":"","sources":["../../../../src/analytics/aggregation/core/project-mapping.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAOH;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;CAC1C;AAoBD;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,kBAAkB,CAoBrE;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,kBAAkB,GAAG,IAAI,CASrF;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAUjF;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAG9E;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAGtE;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEpD;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI,CAG9E"}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Project Path Mapping Utilities
|
|
3
|
+
*
|
|
4
|
+
* Manages the mapping between project hashes and actual file paths.
|
|
5
|
+
* Each agent (Gemini, Claude, etc.) stores their mappings in separate files.
|
|
6
|
+
*/
|
|
7
|
+
import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'node:fs';
|
|
8
|
+
import { join } from 'node:path';
|
|
9
|
+
import { homedir } from 'node:os';
|
|
10
|
+
import { createHash } from 'node:crypto';
|
|
11
|
+
/**
|
|
12
|
+
* Get the path to the project mapping file for a specific agent
|
|
13
|
+
*/
|
|
14
|
+
function getMappingFilePath(agent) {
|
|
15
|
+
const codemieDir = join(homedir(), '.codemie');
|
|
16
|
+
return join(codemieDir, `${agent}-project-mappings.json`);
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Ensure the .codemie directory exists
|
|
20
|
+
*/
|
|
21
|
+
function ensureCodemieDir() {
|
|
22
|
+
const codemieDir = join(homedir(), '.codemie');
|
|
23
|
+
if (!existsSync(codemieDir)) {
|
|
24
|
+
mkdirSync(codemieDir, { recursive: true });
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Load project mappings for an agent
|
|
29
|
+
*/
|
|
30
|
+
export function loadProjectMappings(agent) {
|
|
31
|
+
const filePath = getMappingFilePath(agent);
|
|
32
|
+
if (!existsSync(filePath)) {
|
|
33
|
+
return {
|
|
34
|
+
version: '1.0.0',
|
|
35
|
+
mappings: {}
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
try {
|
|
39
|
+
const content = readFileSync(filePath, 'utf-8');
|
|
40
|
+
return JSON.parse(content);
|
|
41
|
+
}
|
|
42
|
+
catch (error) {
|
|
43
|
+
console.error(`Failed to load project mappings for ${agent}:`, error);
|
|
44
|
+
return {
|
|
45
|
+
version: '1.0.0',
|
|
46
|
+
mappings: {}
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Save project mappings for an agent
|
|
52
|
+
*/
|
|
53
|
+
export function saveProjectMappings(agent, mappings) {
|
|
54
|
+
ensureCodemieDir();
|
|
55
|
+
const filePath = getMappingFilePath(agent);
|
|
56
|
+
try {
|
|
57
|
+
writeFileSync(filePath, JSON.stringify(mappings, null, 2), 'utf-8');
|
|
58
|
+
}
|
|
59
|
+
catch (error) {
|
|
60
|
+
console.error(`Failed to save project mappings for ${agent}:`, error);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Add or update a project mapping
|
|
65
|
+
*/
|
|
66
|
+
export function setProjectMapping(agent, hash, path) {
|
|
67
|
+
const mappings = loadProjectMappings(agent);
|
|
68
|
+
mappings.mappings[hash] = {
|
|
69
|
+
hash,
|
|
70
|
+
path,
|
|
71
|
+
lastUpdated: new Date().toISOString()
|
|
72
|
+
};
|
|
73
|
+
saveProjectMappings(agent, mappings);
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Get the project path for a hash
|
|
77
|
+
*/
|
|
78
|
+
export function getProjectPath(agent, hash) {
|
|
79
|
+
const mappings = loadProjectMappings(agent);
|
|
80
|
+
return mappings.mappings[hash]?.path;
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Resolve project path from hash, returning hash if not found
|
|
84
|
+
*/
|
|
85
|
+
export function resolveProjectPath(agent, hash) {
|
|
86
|
+
const path = getProjectPath(agent, hash);
|
|
87
|
+
return path || hash;
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Generate SHA-256 hash of a path
|
|
91
|
+
*/
|
|
92
|
+
export function hashProjectPath(path) {
|
|
93
|
+
return createHash('sha256').update(path).digest('hex');
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Register current working directory (helper for agent lifecycle hooks)
|
|
97
|
+
*/
|
|
98
|
+
export function registerCurrentProject(agent, workingDir) {
|
|
99
|
+
const hash = hashProjectPath(workingDir);
|
|
100
|
+
setProjectMapping(agent, hash, workingDir);
|
|
101
|
+
}
|
|
102
|
+
//# sourceMappingURL=project-mapping.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project-mapping.js","sourceRoot":"","sources":["../../../../src/analytics/aggregation/core/project-mapping.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* JSONL Streaming Utilities
|
|
3
|
+
*
|
|
4
|
+
* Provides efficient streaming for reading large JSONL (JSON Lines) files
|
|
5
|
+
* commonly used by agents like Claude, Codex, and CodeMie Native.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Stream JSONL file line by line
|
|
9
|
+
* @param filePath Path to JSONL file
|
|
10
|
+
* @yields Parsed JSON objects, one per line
|
|
11
|
+
*/
|
|
12
|
+
export declare function streamJSONL(filePath: string): AsyncGenerator<any>;
|
|
13
|
+
/**
|
|
14
|
+
* Read entire JSONL file into memory (for smaller files)
|
|
15
|
+
* @param filePath Path to JSONL file
|
|
16
|
+
* @param limit Optional limit on number of lines to read
|
|
17
|
+
* @returns Array of parsed JSON objects
|
|
18
|
+
*/
|
|
19
|
+
export declare function readJSONL(filePath: string, limit?: number): Promise<any[]>;
|
|
20
|
+
/**
|
|
21
|
+
* Read JSON file
|
|
22
|
+
* @param filePath Path to JSON file
|
|
23
|
+
* @returns Parsed JSON object
|
|
24
|
+
*/
|
|
25
|
+
export declare function readJSON(filePath: string): Promise<any>;
|
|
26
|
+
//# sourceMappingURL=streaming.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"streaming.d.ts","sourceRoot":"","sources":["../../../../src/analytics/aggregation/core/streaming.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH;;;;GAIG;AACH,wBAAuB,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,cAAc,CAAC,GAAG,CAAC,CAexE;AAED;;;;;GAKG;AACH,wBAAsB,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,CAWhF;AAED;;;;GAIG;AACH,wBAAsB,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAI7D"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* JSONL Streaming Utilities
|
|
3
|
+
*
|
|
4
|
+
* Provides efficient streaming for reading large JSONL (JSON Lines) files
|
|
5
|
+
* commonly used by agents like Claude, Codex, and CodeMie Native.
|
|
6
|
+
*/
|
|
7
|
+
import { createReadStream } from 'node:fs';
|
|
8
|
+
import { createInterface } from 'node:readline';
|
|
9
|
+
/**
|
|
10
|
+
* Stream JSONL file line by line
|
|
11
|
+
* @param filePath Path to JSONL file
|
|
12
|
+
* @yields Parsed JSON objects, one per line
|
|
13
|
+
*/
|
|
14
|
+
export async function* streamJSONL(filePath) {
|
|
15
|
+
const fileStream = createReadStream(filePath, { encoding: 'utf-8' });
|
|
16
|
+
const rl = createInterface({ input: fileStream });
|
|
17
|
+
for await (const line of rl) {
|
|
18
|
+
const trimmed = line.trim();
|
|
19
|
+
if (trimmed) {
|
|
20
|
+
try {
|
|
21
|
+
yield JSON.parse(trimmed);
|
|
22
|
+
}
|
|
23
|
+
catch (error) {
|
|
24
|
+
// Skip invalid JSON lines
|
|
25
|
+
console.error(`Failed to parse JSONL line: ${error}`);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Read entire JSONL file into memory (for smaller files)
|
|
32
|
+
* @param filePath Path to JSONL file
|
|
33
|
+
* @param limit Optional limit on number of lines to read
|
|
34
|
+
* @returns Array of parsed JSON objects
|
|
35
|
+
*/
|
|
36
|
+
export async function readJSONL(filePath, limit) {
|
|
37
|
+
const results = [];
|
|
38
|
+
let count = 0;
|
|
39
|
+
for await (const obj of streamJSONL(filePath)) {
|
|
40
|
+
results.push(obj);
|
|
41
|
+
count++;
|
|
42
|
+
if (limit && count >= limit) {
|
|
43
|
+
break;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
return results;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Read JSON file
|
|
50
|
+
* @param filePath Path to JSON file
|
|
51
|
+
* @returns Parsed JSON object
|
|
52
|
+
*/
|
|
53
|
+
export async function readJSON(filePath) {
|
|
54
|
+
const { readFile } = await import('node:fs/promises');
|
|
55
|
+
const content = await readFile(filePath, 'utf-8');
|
|
56
|
+
return JSON.parse(content);
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=streaming.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"streaming.js","sourceRoot":"","sources":["../../../../src/analytics/aggregation/core/streaming.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAC3C,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAEhD;;;;GAIG;AACH,MAAM,CAAC,KAAK,SAAS,CAAC,CAAC,WAAW,CAAC,QAAgB;IACjD,MAAM,UAAU,GAAG,gBAAgB,CAAC,QAAQ,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC;IACrE,MAAM,EAAE,GAAG,eAAe,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,CAAC;IAElD,IAAI,KAAK,EAAE,MAAM,IAAI,IAAI,EAAE,EAAE,CAAC;QAC5B,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAC5B,IAAI,OAAO,EAAE,CAAC;YACZ,IAAI,CAAC;gBACH,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YAC5B,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,0BAA0B;gBAC1B,OAAO,CAAC,KAAK,CAAC,+BAA+B,KAAK,EAAE,CAAC,CAAC;YACxD,CAAC;QACH,CAAC;IACH,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,QAAgB,EAAE,KAAc;IAC9D,MAAM,OAAO,GAAU,EAAE,CAAC;IAC1B,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,KAAK,EAAE,MAAM,GAAG,IAAI,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC9C,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAClB,KAAK,EAAE,CAAC;QACR,IAAI,KAAK,IAAI,KAAK,IAAI,KAAK,EAAE,CAAC;YAC5B,MAAM;QACR,CAAC;IACH,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,QAAgB;IAC7C,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,CAAC;IACtD,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAClD,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AAC7B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/analytics/aggregation/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,qBAAqB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/analytics/aggregation/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,qBAAqB,CAAC"}
|