@codemieai/code 0.0.14 → 0.0.15
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 +8 -6
- package/dist/agents/codemie-code/agent.d.ts.map +1 -1
- package/dist/agents/codemie-code/agent.js +4 -4
- package/dist/agents/codemie-code/agent.js.map +1 -1
- package/dist/agents/codemie-code/config.d.ts.map +1 -1
- package/dist/agents/codemie-code/config.js +2 -1
- package/dist/agents/codemie-code/config.js.map +1 -1
- package/dist/agents/codemie-code/filters.js +12 -12
- package/dist/agents/codemie-code/filters.js.map +1 -1
- package/dist/agents/codemie-code/index.d.ts.map +1 -1
- package/dist/agents/codemie-code/index.js +3 -1
- package/dist/agents/codemie-code/index.js.map +1 -1
- package/dist/agents/codemie-code/storage/todoStorage.js +1 -1
- package/dist/agents/codemie-code/storage/todoStorage.js.map +1 -1
- package/dist/agents/codemie-code/tools/planning.d.ts +1 -1
- package/dist/agents/codemie-code/ui.js +1 -1
- package/dist/agents/codemie-code/ui.js.map +1 -1
- package/dist/agents/core/AgentCLI.js +1 -1
- package/dist/agents/core/AgentCLI.js.map +1 -1
- package/dist/agents/core/types.d.ts +5 -0
- package/dist/agents/core/types.d.ts.map +1 -1
- package/dist/agents/plugins/codemie-code.plugin.js +1 -1
- package/dist/agents/plugins/codemie-code.plugin.js.map +1 -1
- package/dist/analytics/aggregation/adapters/claude.adapter.d.ts.map +1 -1
- package/dist/analytics/aggregation/adapters/claude.adapter.js +75 -15
- package/dist/analytics/aggregation/adapters/claude.adapter.js.map +1 -1
- package/dist/analytics/aggregation/adapters/codex.adapter.d.ts.map +1 -1
- package/dist/analytics/aggregation/adapters/codex.adapter.js +20 -0
- package/dist/analytics/aggregation/adapters/codex.adapter.js.map +1 -1
- package/dist/analytics/aggregation/adapters/gemini.adapter.d.ts +8 -0
- package/dist/analytics/aggregation/adapters/gemini.adapter.d.ts.map +1 -1
- package/dist/analytics/aggregation/adapters/gemini.adapter.js +46 -1
- package/dist/analytics/aggregation/adapters/gemini.adapter.js.map +1 -1
- package/dist/analytics/aggregation/core/BaseAnalyticsAdapter.d.ts +36 -0
- package/dist/analytics/aggregation/core/BaseAnalyticsAdapter.d.ts.map +1 -1
- package/dist/analytics/aggregation/core/BaseAnalyticsAdapter.js +52 -0
- package/dist/analytics/aggregation/core/BaseAnalyticsAdapter.js.map +1 -1
- package/dist/analytics/aggregation/core/adapter.interface.d.ts +11 -0
- package/dist/analytics/aggregation/core/adapter.interface.d.ts.map +1 -1
- package/dist/analytics/aggregation/core/aggregation-utils.d.ts +20 -0
- package/dist/analytics/aggregation/core/aggregation-utils.d.ts.map +1 -1
- package/dist/analytics/aggregation/core/aggregation-utils.js +43 -0
- package/dist/analytics/aggregation/core/aggregation-utils.js.map +1 -1
- package/dist/analytics/aggregation/core/file-utils.d.ts +2 -1
- package/dist/analytics/aggregation/core/file-utils.d.ts.map +1 -1
- package/dist/analytics/aggregation/core/file-utils.js +20 -85
- package/dist/analytics/aggregation/core/file-utils.js.map +1 -1
- package/dist/analytics/aggregation/core/index.d.ts +3 -0
- package/dist/analytics/aggregation/core/index.d.ts.map +1 -1
- package/dist/analytics/aggregation/core/index.js +3 -0
- package/dist/analytics/aggregation/core/index.js.map +1 -1
- package/dist/analytics/aggregation/core/user-prompt-source.d.ts +81 -0
- package/dist/analytics/aggregation/core/user-prompt-source.d.ts.map +1 -0
- package/dist/analytics/aggregation/core/user-prompt-source.js +69 -0
- package/dist/analytics/aggregation/core/user-prompt-source.js.map +1 -0
- package/dist/analytics/aggregation/core/user-prompt-sources/json.d.ts +49 -0
- package/dist/analytics/aggregation/core/user-prompt-sources/json.d.ts.map +1 -0
- package/dist/analytics/aggregation/core/user-prompt-sources/json.js +66 -0
- package/dist/analytics/aggregation/core/user-prompt-sources/json.js.map +1 -0
- package/dist/analytics/aggregation/core/user-prompt-sources/jsonl.d.ts +43 -0
- package/dist/analytics/aggregation/core/user-prompt-sources/jsonl.d.ts.map +1 -0
- package/dist/analytics/aggregation/core/user-prompt-sources/jsonl.js +56 -0
- package/dist/analytics/aggregation/core/user-prompt-sources/jsonl.js.map +1 -0
- package/dist/analytics/aggregation/types.d.ts +20 -0
- package/dist/analytics/aggregation/types.d.ts.map +1 -1
- package/dist/analytics/remote-submission/cursor-manager.d.ts +71 -0
- package/dist/analytics/remote-submission/cursor-manager.d.ts.map +1 -0
- package/dist/analytics/remote-submission/cursor-manager.js +204 -0
- package/dist/analytics/remote-submission/cursor-manager.js.map +1 -0
- package/dist/analytics/remote-submission/index.d.ts +12 -0
- package/dist/analytics/remote-submission/index.d.ts.map +1 -0
- package/dist/analytics/remote-submission/index.js +11 -0
- package/dist/analytics/remote-submission/index.js.map +1 -0
- package/dist/analytics/remote-submission/lock-manager.d.ts +71 -0
- package/dist/analytics/remote-submission/lock-manager.d.ts.map +1 -0
- package/dist/analytics/remote-submission/lock-manager.js +238 -0
- package/dist/analytics/remote-submission/lock-manager.js.map +1 -0
- package/dist/analytics/remote-submission/metric-transformer.d.ts +49 -0
- package/dist/analytics/remote-submission/metric-transformer.d.ts.map +1 -0
- package/dist/analytics/remote-submission/metric-transformer.js +175 -0
- package/dist/analytics/remote-submission/metric-transformer.js.map +1 -0
- package/dist/analytics/remote-submission/submitter.d.ts +78 -0
- package/dist/analytics/remote-submission/submitter.d.ts.map +1 -0
- package/dist/analytics/remote-submission/submitter.js +381 -0
- package/dist/analytics/remote-submission/submitter.js.map +1 -0
- package/dist/analytics/remote-submission/types.d.ts +169 -0
- package/dist/analytics/remote-submission/types.d.ts.map +1 -0
- package/dist/analytics/remote-submission/types.js +13 -0
- package/dist/analytics/remote-submission/types.js.map +1 -0
- package/dist/cli/commands/analytics.d.ts.map +1 -1
- package/dist/cli/commands/analytics.js +181 -12
- package/dist/cli/commands/analytics.js.map +1 -1
- package/dist/cli/commands/doctor/index.d.ts.map +1 -1
- package/dist/cli/commands/doctor/index.js +13 -1
- package/dist/cli/commands/doctor/index.js.map +1 -1
- package/dist/cli/commands/doctor/providers/AIRunSSOProviderCheck.d.ts.map +1 -1
- package/dist/cli/commands/doctor/providers/AIRunSSOProviderCheck.js +81 -9
- package/dist/cli/commands/doctor/providers/AIRunSSOProviderCheck.js.map +1 -1
- package/dist/cli/commands/profile.d.ts.map +1 -1
- package/dist/cli/commands/profile.js +25 -57
- package/dist/cli/commands/profile.js.map +1 -1
- package/dist/cli/commands/setup.d.ts.map +1 -1
- package/dist/cli/commands/setup.js +10 -0
- package/dist/cli/commands/setup.js.map +1 -1
- package/dist/cli/commands/workflow.js +1 -1
- package/dist/cli/commands/workflow.js.map +1 -1
- package/dist/cli/index.js +0 -4
- package/dist/cli/index.js.map +1 -1
- package/dist/utils/analytics-reader.js +1 -1
- package/dist/utils/analytics-reader.js.map +1 -1
- package/dist/utils/codemie-model-fetcher.d.ts.map +1 -1
- package/dist/utils/codemie-model-fetcher.js +197 -122
- package/dist/utils/codemie-model-fetcher.js.map +1 -1
- package/dist/utils/codemie-proxy.d.ts +41 -21
- package/dist/utils/codemie-proxy.d.ts.map +1 -1
- package/dist/utils/codemie-proxy.js +151 -86
- package/dist/utils/codemie-proxy.js.map +1 -1
- package/dist/utils/config-loader.d.ts +4 -0
- package/dist/utils/config-loader.d.ts.map +1 -1
- package/dist/utils/config-loader.js +42 -2
- package/dist/utils/config-loader.js.map +1 -1
- package/dist/utils/first-time.d.ts +0 -4
- package/dist/utils/first-time.d.ts.map +1 -1
- package/dist/utils/first-time.js +5 -117
- package/dist/utils/first-time.js.map +1 -1
- package/dist/utils/logger.d.ts +31 -1
- package/dist/utils/logger.d.ts.map +1 -1
- package/dist/utils/logger.js +112 -2
- package/dist/utils/logger.js.map +1 -1
- package/dist/utils/proxy/plugins/analytics.plugin.d.ts +19 -0
- package/dist/utils/proxy/plugins/analytics.plugin.d.ts.map +1 -0
- package/dist/utils/proxy/plugins/analytics.plugin.js +84 -0
- package/dist/utils/proxy/plugins/analytics.plugin.js.map +1 -0
- package/dist/utils/proxy/plugins/header-injection.plugin.d.ts +16 -0
- package/dist/utils/proxy/plugins/header-injection.plugin.d.ts.map +1 -0
- package/dist/utils/proxy/plugins/header-injection.plugin.js +48 -0
- package/dist/utils/proxy/plugins/header-injection.plugin.js.map +1 -0
- package/dist/utils/proxy/plugins/index.d.ts +18 -0
- package/dist/utils/proxy/plugins/index.d.ts.map +1 -0
- package/dist/utils/proxy/plugins/index.js +30 -0
- package/dist/utils/proxy/plugins/index.js.map +1 -0
- package/dist/utils/proxy/plugins/registry.d.ts +50 -0
- package/dist/utils/proxy/plugins/registry.d.ts.map +1 -0
- package/dist/utils/proxy/plugins/registry.js +124 -0
- package/dist/utils/proxy/plugins/registry.js.map +1 -0
- package/dist/utils/proxy/plugins/sso-auth.plugin.d.ts +16 -0
- package/dist/utils/proxy/plugins/sso-auth.plugin.d.ts.map +1 -0
- package/dist/utils/proxy/plugins/sso-auth.plugin.js +35 -0
- package/dist/utils/proxy/plugins/sso-auth.plugin.js.map +1 -0
- package/dist/utils/proxy/plugins/types.d.ts +79 -0
- package/dist/utils/proxy/plugins/types.d.ts.map +1 -0
- package/dist/utils/proxy/plugins/types.js +8 -0
- package/dist/utils/proxy/plugins/types.js.map +1 -0
- package/dist/utils/sanitize.d.ts +28 -0
- package/dist/utils/sanitize.d.ts.map +1 -0
- package/dist/utils/sanitize.js +213 -0
- package/dist/utils/sanitize.js.map +1 -0
- package/dist/workflows/installer.d.ts.map +1 -1
- package/dist/workflows/installer.js +3 -4
- package/dist/workflows/installer.js.map +1 -1
- package/package.json +1 -1
- package/dist/cli/commands/config.d.ts +0 -3
- package/dist/cli/commands/config.d.ts.map +0 -1
- package/dist/cli/commands/config.js +0 -198
- package/dist/cli/commands/config.js.map +0 -1
- package/dist/cli/commands/env.d.ts +0 -3
- package/dist/cli/commands/env.d.ts.map +0 -1
- package/dist/cli/commands/env.js +0 -19
- package/dist/cli/commands/env.js.map +0 -1
- package/dist/utils/proxy/interceptors.d.ts +0 -69
- package/dist/utils/proxy/interceptors.d.ts.map +0 -1
- package/dist/utils/proxy/interceptors.js +0 -308
- package/dist/utils/proxy/interceptors.js.map +0 -1
|
@@ -99,96 +99,31 @@ export function detectLanguage(filePath) {
|
|
|
99
99
|
return languageMap[ext];
|
|
100
100
|
}
|
|
101
101
|
/**
|
|
102
|
-
* Detect file format
|
|
102
|
+
* Detect file format (returns extension without dot, or special name for no-extension files)
|
|
103
|
+
* Examples: "ts", "py", "md", "Dockerfile", "Makefile"
|
|
103
104
|
*/
|
|
104
105
|
export function detectFormat(filePath) {
|
|
105
106
|
const ext = extname(filePath).toLowerCase();
|
|
106
107
|
const basename = filePath.split('/').pop()?.toLowerCase() || '';
|
|
107
|
-
//
|
|
108
|
-
if (
|
|
109
|
-
|
|
110
|
-
basename
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
108
|
+
// Files without extensions - use basename
|
|
109
|
+
if (!ext) {
|
|
110
|
+
// Special known files
|
|
111
|
+
if (basename === 'dockerfile')
|
|
112
|
+
return 'Dockerfile';
|
|
113
|
+
if (basename === 'makefile')
|
|
114
|
+
return 'Makefile';
|
|
115
|
+
if (basename === 'rakefile')
|
|
116
|
+
return 'Rakefile';
|
|
117
|
+
if (basename === 'gemfile')
|
|
118
|
+
return 'Gemfile';
|
|
119
|
+
if (basename === 'jenkinsfile')
|
|
120
|
+
return 'Jenkinsfile';
|
|
121
|
+
if (basename.startsWith('.'))
|
|
122
|
+
return basename; // .gitignore, .npmrc, etc.
|
|
123
|
+
return 'other';
|
|
117
124
|
}
|
|
118
|
-
//
|
|
119
|
-
|
|
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';
|
|
125
|
+
// Return extension without the leading dot
|
|
126
|
+
return ext.slice(1);
|
|
192
127
|
}
|
|
193
128
|
/**
|
|
194
129
|
* Count lines in a string
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file-utils.js","sourceRoot":"","sources":["../../../../src/analytics/aggregation/core/file-utils.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,QAAgB;IAC7C,MAAM,GAAG,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,CAAC;IAE5C,MAAM,WAAW,GAA2B;QAC1C,0BAA0B;QAC1B,KAAK,EAAE,YAAY;QACnB,MAAM,EAAE,YAAY;QACpB,KAAK,EAAE,YAAY;QACnB,MAAM,EAAE,YAAY;QACpB,MAAM,EAAE,YAAY;QACpB,MAAM,EAAE,YAAY;QAEpB,SAAS;QACT,KAAK,EAAE,QAAQ;QACf,MAAM,EAAE,QAAQ;QAChB,MAAM,EAAE,QAAQ;QAEhB,aAAa;QACb,OAAO,EAAE,MAAM;QACf,KAAK,EAAE,QAAQ;QACf,MAAM,EAAE,QAAQ;QAChB,QAAQ,EAAE,OAAO;QACjB,SAAS,EAAE,QAAQ;QAEnB,UAAU;QACV,IAAI,EAAE,GAAG;QACT,IAAI,EAAE,GAAG;QACT,MAAM,EAAE,KAAK;QACb,KAAK,EAAE,KAAK;QACZ,MAAM,EAAE,KAAK;QACb,MAAM,EAAE,KAAK;QACb,MAAM,EAAE,KAAK;QAEb,KAAK;QACL,KAAK,EAAE,QAAQ;QACf,MAAM,EAAE,QAAQ;QAEhB,KAAK;QACL,KAAK,EAAE,IAAI;QAEX,OAAO;QACP,KAAK,EAAE,MAAM;QAEb,OAAO;QACP,KAAK,EAAE,MAAM;QACb,OAAO,EAAE,MAAM;QAEf,MAAM;QACN,MAAM,EAAE,KAAK;QACb,QAAQ,EAAE,KAAK;QAEf,QAAQ;QACR,QAAQ,EAAE,OAAO;QAEjB,QAAQ;QACR,KAAK,EAAE,MAAM;QACb,OAAO,EAAE,MAAM;QACf,MAAM,EAAE,KAAK;QACb,OAAO,EAAE,MAAM;QAEf,eAAe;QACf,OAAO,EAAE,MAAM;QACf,MAAM,EAAE,MAAM;QACd,MAAM,EAAE,KAAK;QACb,MAAM,EAAE,KAAK;QAEb,eAAe;QACf,MAAM,EAAE,KAAK;QACb,OAAO,EAAE,MAAM;QACf,OAAO,EAAE,MAAM;QACf,OAAO,EAAE,MAAM;QAEf,MAAM;QACN,MAAM,EAAE,KAAK;QAEb,yBAAyB;QACzB,KAAK,EAAE,UAAU;QACjB,MAAM,EAAE,UAAU;QAClB,MAAM,EAAE,kBAAkB;QAC1B,MAAM,EAAE,OAAO;QACf,OAAO,EAAE,UAAU;QAEnB,uCAAuC;QACvC,OAAO,EAAE,MAAM;QACf,OAAO,EAAE,MAAM;QACf,MAAM,EAAE,MAAM;QACd,OAAO,EAAE,MAAM;QAEf,kBAAkB;QAClB,MAAM,EAAE,KAAK;QACb,IAAI,EAAE,GAAG;QACT,IAAI,EAAE,QAAQ;QACd,KAAK,EAAE,MAAM;QACb,KAAK,EAAE,MAAM;QACb,KAAK,EAAE,QAAQ;QACf,MAAM,EAAE,QAAQ;QAChB,MAAM,EAAE,QAAQ;QAChB,MAAM,EAAE,QAAQ;QAChB,MAAM,EAAE,WAAW;QACnB,OAAO,EAAE,MAAM;QACf,MAAM,EAAE,SAAS;QACjB,OAAO,EAAE,MAAM;QACf,QAAQ,EAAE,OAAO;QACjB,MAAM,EAAE,KAAK;QACb,MAAM,EAAE,KAAK;KACd,CAAC;IAEF,OAAO,WAAW,CAAC,GAAG,CAAC,CAAC;AAC1B,CAAC;AAED
|
|
1
|
+
{"version":3,"file":"file-utils.js","sourceRoot":"","sources":["../../../../src/analytics/aggregation/core/file-utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,4 +8,7 @@ export * from './streaming.js';
|
|
|
8
8
|
export * from './discovery.js';
|
|
9
9
|
export * from './file-utils.js';
|
|
10
10
|
export * from './project-mapping.js';
|
|
11
|
+
export * from './user-prompt-source.js';
|
|
12
|
+
export * from './user-prompt-sources/jsonl.js';
|
|
13
|
+
export * from './user-prompt-sources/json.js';
|
|
11
14
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +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"}
|
|
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;AACrC,cAAc,yBAAyB,CAAC;AACxC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,+BAA+B,CAAC"}
|
|
@@ -8,4 +8,7 @@ export * from './streaming.js';
|
|
|
8
8
|
export * from './discovery.js';
|
|
9
9
|
export * from './file-utils.js';
|
|
10
10
|
export * from './project-mapping.js';
|
|
11
|
+
export * from './user-prompt-source.js';
|
|
12
|
+
export * from './user-prompt-sources/jsonl.js';
|
|
13
|
+
export * from './user-prompt-sources/json.js';
|
|
11
14
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +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"}
|
|
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;AACrC,cAAc,yBAAyB,CAAC;AACxC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,+BAA+B,CAAC"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* User Prompt Source - Core Abstraction
|
|
3
|
+
*
|
|
4
|
+
* Provides a unified interface for reading user prompt history files
|
|
5
|
+
* across different AI coding agents. Each agent maintains lightweight
|
|
6
|
+
* history files tracking actual user input (what users typed), distinct
|
|
7
|
+
* from full session interaction logs.
|
|
8
|
+
*
|
|
9
|
+
* This abstraction enables:
|
|
10
|
+
* - Accurate user engagement metrics (true user prompts vs system messages)
|
|
11
|
+
* - Session coverage (include sessions without full logs)
|
|
12
|
+
* - Automation insights (ratio of AI-generated to user-initiated messages)
|
|
13
|
+
*/
|
|
14
|
+
/**
|
|
15
|
+
* Represents a user prompt
|
|
16
|
+
*/
|
|
17
|
+
export interface UserPrompt {
|
|
18
|
+
/** User's actual input text */
|
|
19
|
+
prompt: string;
|
|
20
|
+
/** Timestamp of the prompt */
|
|
21
|
+
timestamp: Date;
|
|
22
|
+
/** Session ID this prompt belongs to */
|
|
23
|
+
sessionId: string;
|
|
24
|
+
/** Project path (optional) */
|
|
25
|
+
projectPath?: string;
|
|
26
|
+
/** Additional metadata (pasted content, etc.) */
|
|
27
|
+
metadata?: Record<string, unknown>;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Configuration for user prompt source
|
|
31
|
+
*/
|
|
32
|
+
export interface UserPromptSourceConfig {
|
|
33
|
+
/** Path to user prompt file(s) - supports glob patterns */
|
|
34
|
+
filePath: string | string[];
|
|
35
|
+
/** Type of file format (jsonl, json, csv, etc.) */
|
|
36
|
+
format: 'jsonl' | 'json' | 'csv' | 'custom';
|
|
37
|
+
/** Custom parser function for non-standard formats */
|
|
38
|
+
parser?: (content: string) => UserPrompt[];
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Options for filtering prompts
|
|
42
|
+
*/
|
|
43
|
+
export interface PromptQueryOptions {
|
|
44
|
+
/** Filter by date range (start) */
|
|
45
|
+
dateFrom?: Date;
|
|
46
|
+
/** Filter by date range (end) */
|
|
47
|
+
dateTo?: Date;
|
|
48
|
+
/** Filter by session ID */
|
|
49
|
+
sessionId?: string;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Abstract base for user prompt sources
|
|
53
|
+
*
|
|
54
|
+
* Provides common functionality for reading and filtering user prompts
|
|
55
|
+
* from various file formats. Subclasses implement format-specific parsing.
|
|
56
|
+
*/
|
|
57
|
+
export declare abstract class UserPromptSource {
|
|
58
|
+
protected config: UserPromptSourceConfig;
|
|
59
|
+
constructor(config: UserPromptSourceConfig);
|
|
60
|
+
/**
|
|
61
|
+
* Read all user prompts from source
|
|
62
|
+
* @param options - Optional filtering (dateFrom, dateTo, sessionId)
|
|
63
|
+
*/
|
|
64
|
+
abstract readPrompts(options?: PromptQueryOptions): Promise<UserPrompt[]>;
|
|
65
|
+
/**
|
|
66
|
+
* Group prompts by session ID
|
|
67
|
+
* Common utility used by adapters to organize prompts
|
|
68
|
+
*/
|
|
69
|
+
groupBySession(options?: PromptQueryOptions): Promise<Map<string, UserPrompt[]>>;
|
|
70
|
+
/**
|
|
71
|
+
* Count prompts per session
|
|
72
|
+
* Used to calculate accurate user engagement metrics
|
|
73
|
+
*/
|
|
74
|
+
countBySession(options?: PromptQueryOptions): Promise<Map<string, number>>;
|
|
75
|
+
/**
|
|
76
|
+
* Apply standard filters to prompts
|
|
77
|
+
* Protected helper for subclasses to reuse
|
|
78
|
+
*/
|
|
79
|
+
protected applyFilters(prompts: UserPrompt[], options?: PromptQueryOptions): UserPrompt[];
|
|
80
|
+
}
|
|
81
|
+
//# sourceMappingURL=user-prompt-source.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"user-prompt-source.d.ts","sourceRoot":"","sources":["../../../../src/analytics/aggregation/core/user-prompt-source.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,+BAA+B;IAC/B,MAAM,EAAE,MAAM,CAAC;IAEf,8BAA8B;IAC9B,SAAS,EAAE,IAAI,CAAC;IAEhB,wCAAwC;IACxC,SAAS,EAAE,MAAM,CAAC;IAElB,8BAA8B;IAC9B,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,iDAAiD;IACjD,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,2DAA2D;IAC3D,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAE5B,mDAAmD;IACnD,MAAM,EAAE,OAAO,GAAG,MAAM,GAAG,KAAK,GAAG,QAAQ,CAAC;IAE5C,sDAAsD;IACtD,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,UAAU,EAAE,CAAC;CAC5C;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,mCAAmC;IACnC,QAAQ,CAAC,EAAE,IAAI,CAAC;IAEhB,iCAAiC;IACjC,MAAM,CAAC,EAAE,IAAI,CAAC;IAEd,2BAA2B;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;GAKG;AACH,8BAAsB,gBAAgB;IACxB,SAAS,CAAC,MAAM,EAAE,sBAAsB;gBAA9B,MAAM,EAAE,sBAAsB;IAEpD;;;OAGG;IACH,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAEzE;;;OAGG;IACG,cAAc,CAClB,OAAO,CAAC,EAAE,kBAAkB,GAC3B,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC;IAarC;;;OAGG;IACG,cAAc,CAClB,OAAO,CAAC,EAAE,kBAAkB,GAC3B,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAW/B;;;OAGG;IACH,SAAS,CAAC,YAAY,CACpB,OAAO,EAAE,UAAU,EAAE,EACrB,OAAO,CAAC,EAAE,kBAAkB,GAC3B,UAAU,EAAE;CAiBhB"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* User Prompt Source - Core Abstraction
|
|
3
|
+
*
|
|
4
|
+
* Provides a unified interface for reading user prompt history files
|
|
5
|
+
* across different AI coding agents. Each agent maintains lightweight
|
|
6
|
+
* history files tracking actual user input (what users typed), distinct
|
|
7
|
+
* from full session interaction logs.
|
|
8
|
+
*
|
|
9
|
+
* This abstraction enables:
|
|
10
|
+
* - Accurate user engagement metrics (true user prompts vs system messages)
|
|
11
|
+
* - Session coverage (include sessions without full logs)
|
|
12
|
+
* - Automation insights (ratio of AI-generated to user-initiated messages)
|
|
13
|
+
*/
|
|
14
|
+
/**
|
|
15
|
+
* Abstract base for user prompt sources
|
|
16
|
+
*
|
|
17
|
+
* Provides common functionality for reading and filtering user prompts
|
|
18
|
+
* from various file formats. Subclasses implement format-specific parsing.
|
|
19
|
+
*/
|
|
20
|
+
export class UserPromptSource {
|
|
21
|
+
config;
|
|
22
|
+
constructor(config) {
|
|
23
|
+
this.config = config;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Group prompts by session ID
|
|
27
|
+
* Common utility used by adapters to organize prompts
|
|
28
|
+
*/
|
|
29
|
+
async groupBySession(options) {
|
|
30
|
+
const prompts = await this.readPrompts(options);
|
|
31
|
+
const grouped = new Map();
|
|
32
|
+
for (const prompt of prompts) {
|
|
33
|
+
const sessionPrompts = grouped.get(prompt.sessionId) || [];
|
|
34
|
+
sessionPrompts.push(prompt);
|
|
35
|
+
grouped.set(prompt.sessionId, sessionPrompts);
|
|
36
|
+
}
|
|
37
|
+
return grouped;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Count prompts per session
|
|
41
|
+
* Used to calculate accurate user engagement metrics
|
|
42
|
+
*/
|
|
43
|
+
async countBySession(options) {
|
|
44
|
+
const grouped = await this.groupBySession(options);
|
|
45
|
+
const counts = new Map();
|
|
46
|
+
for (const [sessionId, prompts] of grouped) {
|
|
47
|
+
counts.set(sessionId, prompts.length);
|
|
48
|
+
}
|
|
49
|
+
return counts;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Apply standard filters to prompts
|
|
53
|
+
* Protected helper for subclasses to reuse
|
|
54
|
+
*/
|
|
55
|
+
applyFilters(prompts, options) {
|
|
56
|
+
let filtered = prompts;
|
|
57
|
+
if (options?.dateFrom) {
|
|
58
|
+
filtered = filtered.filter(p => p.timestamp >= options.dateFrom);
|
|
59
|
+
}
|
|
60
|
+
if (options?.dateTo) {
|
|
61
|
+
filtered = filtered.filter(p => p.timestamp <= options.dateTo);
|
|
62
|
+
}
|
|
63
|
+
if (options?.sessionId) {
|
|
64
|
+
filtered = filtered.filter(p => p.sessionId === options.sessionId);
|
|
65
|
+
}
|
|
66
|
+
return filtered;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
//# sourceMappingURL=user-prompt-source.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"user-prompt-source.js","sourceRoot":"","sources":["../../../../src/analytics/aggregation/core/user-prompt-source.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAkDH;;;;;GAKG;AACH,MAAM,OAAgB,gBAAgB;IACd;IAAtB,YAAsB,MAA8B;QAA9B,WAAM,GAAN,MAAM,CAAwB;IAAG,CAAC;IAQxD;;;OAGG;IACH,KAAK,CAAC,cAAc,CAClB,OAA4B;QAE5B,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QAChD,MAAM,OAAO,GAAG,IAAI,GAAG,EAAwB,CAAC;QAEhD,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,MAAM,cAAc,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;YAC3D,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC5B,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;QAChD,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,cAAc,CAClB,OAA4B;QAE5B,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;QACnD,MAAM,MAAM,GAAG,IAAI,GAAG,EAAkB,CAAC;QAEzC,KAAK,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,IAAI,OAAO,EAAE,CAAC;YAC3C,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;QACxC,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;;OAGG;IACO,YAAY,CACpB,OAAqB,EACrB,OAA4B;QAE5B,IAAI,QAAQ,GAAG,OAAO,CAAC;QAEvB,IAAI,OAAO,EAAE,QAAQ,EAAE,CAAC;YACtB,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,IAAI,OAAO,CAAC,QAAS,CAAC,CAAC;QACpE,CAAC;QAED,IAAI,OAAO,EAAE,MAAM,EAAE,CAAC;YACpB,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,IAAI,OAAO,CAAC,MAAO,CAAC,CAAC;QAClE,CAAC;QAED,IAAI,OAAO,EAAE,SAAS,EAAE,CAAC;YACvB,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,OAAO,CAAC,SAAS,CAAC,CAAC;QACrE,CAAC;QAED,OAAO,QAAQ,CAAC;IAClB,CAAC;CACF"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* JSON User Prompt Source
|
|
3
|
+
*
|
|
4
|
+
* Generic implementation for reading user prompts from JSON array files.
|
|
5
|
+
* Used by Gemini CLI and other agents that store history in JSON format.
|
|
6
|
+
*
|
|
7
|
+
* Format: JSON array of prompt objects, or single JSON object.
|
|
8
|
+
* Supports multiple files via pattern matching.
|
|
9
|
+
*/
|
|
10
|
+
import { UserPromptSource, UserPrompt, PromptQueryOptions } from '../user-prompt-source.js';
|
|
11
|
+
/**
|
|
12
|
+
* Mapper function type - converts raw JSON entry to UserPrompt
|
|
13
|
+
*/
|
|
14
|
+
export type JSONMapper = (entry: unknown) => UserPrompt;
|
|
15
|
+
/**
|
|
16
|
+
* JSON User Prompt Source
|
|
17
|
+
*
|
|
18
|
+
* Reads user prompts from JSON files with a custom mapper function.
|
|
19
|
+
* The mapper function converts agent-specific entry format to standard UserPrompt.
|
|
20
|
+
*
|
|
21
|
+
* Supports:
|
|
22
|
+
* - Single JSON array: [{ prompt: "...", ... }, ...]
|
|
23
|
+
* - Single JSON object: { prompt: "...", ... }
|
|
24
|
+
* - Multiple files via directory scanning
|
|
25
|
+
*
|
|
26
|
+
* Example usage:
|
|
27
|
+
* ```typescript
|
|
28
|
+
* const source = new JSONUserPromptSource(
|
|
29
|
+
* '~/.gemini/tmp/project-hash/logs.json',
|
|
30
|
+
* (entry) => ({
|
|
31
|
+
* prompt: entry.prompt,
|
|
32
|
+
* timestamp: new Date(entry.timestamp),
|
|
33
|
+
* sessionId: entry.sessionId || 'unknown',
|
|
34
|
+
* projectPath: entry.project,
|
|
35
|
+
* metadata: { projectHash: 'abc123' }
|
|
36
|
+
* })
|
|
37
|
+
* );
|
|
38
|
+
* ```
|
|
39
|
+
*/
|
|
40
|
+
export declare class JSONUserPromptSource extends UserPromptSource {
|
|
41
|
+
private mapper;
|
|
42
|
+
constructor(filePath: string, mapper: JSONMapper);
|
|
43
|
+
/**
|
|
44
|
+
* Read all prompts from JSON file(s)
|
|
45
|
+
* Applies mapper to each entry, then filters
|
|
46
|
+
*/
|
|
47
|
+
readPrompts(options?: PromptQueryOptions): Promise<UserPrompt[]>;
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=json.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"json.d.ts","sourceRoot":"","sources":["../../../../../src/analytics/aggregation/core/user-prompt-sources/json.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,OAAO,EACL,gBAAgB,EAChB,UAAU,EACV,kBAAkB,EACnB,MAAM,0BAA0B,CAAC;AAElC;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG,CAAC,KAAK,EAAE,OAAO,KAAK,UAAU,CAAC;AAExD;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,qBAAa,oBAAqB,SAAQ,gBAAgB;IAGtD,OAAO,CAAC,MAAM;gBADd,QAAQ,EAAE,MAAM,EACR,MAAM,EAAE,UAAU;IAK5B;;;OAGG;IACG,WAAW,CAAC,OAAO,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;CAuBvE"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* JSON User Prompt Source
|
|
3
|
+
*
|
|
4
|
+
* Generic implementation for reading user prompts from JSON array files.
|
|
5
|
+
* Used by Gemini CLI and other agents that store history in JSON format.
|
|
6
|
+
*
|
|
7
|
+
* Format: JSON array of prompt objects, or single JSON object.
|
|
8
|
+
* Supports multiple files via pattern matching.
|
|
9
|
+
*/
|
|
10
|
+
import { existsSync } from 'node:fs';
|
|
11
|
+
import { readFile } from 'node:fs/promises';
|
|
12
|
+
import { UserPromptSource } from '../user-prompt-source.js';
|
|
13
|
+
/**
|
|
14
|
+
* JSON User Prompt Source
|
|
15
|
+
*
|
|
16
|
+
* Reads user prompts from JSON files with a custom mapper function.
|
|
17
|
+
* The mapper function converts agent-specific entry format to standard UserPrompt.
|
|
18
|
+
*
|
|
19
|
+
* Supports:
|
|
20
|
+
* - Single JSON array: [{ prompt: "...", ... }, ...]
|
|
21
|
+
* - Single JSON object: { prompt: "...", ... }
|
|
22
|
+
* - Multiple files via directory scanning
|
|
23
|
+
*
|
|
24
|
+
* Example usage:
|
|
25
|
+
* ```typescript
|
|
26
|
+
* const source = new JSONUserPromptSource(
|
|
27
|
+
* '~/.gemini/tmp/project-hash/logs.json',
|
|
28
|
+
* (entry) => ({
|
|
29
|
+
* prompt: entry.prompt,
|
|
30
|
+
* timestamp: new Date(entry.timestamp),
|
|
31
|
+
* sessionId: entry.sessionId || 'unknown',
|
|
32
|
+
* projectPath: entry.project,
|
|
33
|
+
* metadata: { projectHash: 'abc123' }
|
|
34
|
+
* })
|
|
35
|
+
* );
|
|
36
|
+
* ```
|
|
37
|
+
*/
|
|
38
|
+
export class JSONUserPromptSource extends UserPromptSource {
|
|
39
|
+
mapper;
|
|
40
|
+
constructor(filePath, mapper) {
|
|
41
|
+
super({ filePath, format: 'json' });
|
|
42
|
+
this.mapper = mapper;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Read all prompts from JSON file(s)
|
|
46
|
+
* Applies mapper to each entry, then filters
|
|
47
|
+
*/
|
|
48
|
+
async readPrompts(options) {
|
|
49
|
+
const filePath = this.config.filePath;
|
|
50
|
+
// Check if file exists
|
|
51
|
+
if (!existsSync(filePath)) {
|
|
52
|
+
return [];
|
|
53
|
+
}
|
|
54
|
+
// Read and parse file
|
|
55
|
+
const content = await readFile(filePath, 'utf-8');
|
|
56
|
+
const parsed = JSON.parse(content);
|
|
57
|
+
// Handle both array and single object
|
|
58
|
+
const entries = Array.isArray(parsed) ? parsed : [parsed];
|
|
59
|
+
// Map to UserPrompt objects
|
|
60
|
+
let prompts = entries.map(this.mapper);
|
|
61
|
+
// Apply filters
|
|
62
|
+
prompts = this.applyFilters(prompts, options);
|
|
63
|
+
return prompts;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
//# sourceMappingURL=json.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"json.js","sourceRoot":"","sources":["../../../../../src/analytics/aggregation/core/user-prompt-sources/json.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EACL,gBAAgB,EAGjB,MAAM,0BAA0B,CAAC;AAOlC;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,OAAO,oBAAqB,SAAQ,gBAAgB;IAG9C;IAFV,YACE,QAAgB,EACR,MAAkB;QAE1B,KAAK,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QAF5B,WAAM,GAAN,MAAM,CAAY;IAG5B,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,WAAW,CAAC,OAA4B;QAC5C,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,QAAkB,CAAC;QAEhD,uBAAuB;QACvB,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC1B,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,sBAAsB;QACtB,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAClD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAEnC,sCAAsC;QACtC,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;QAE1D,4BAA4B;QAC5B,IAAI,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAEvC,gBAAgB;QAChB,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAE9C,OAAO,OAAO,CAAC;IACjB,CAAC;CACF"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* JSONL User Prompt Source
|
|
3
|
+
*
|
|
4
|
+
* Generic implementation for reading user prompts from JSONL files.
|
|
5
|
+
* Used by Claude Code and other agents that store history in JSONL format.
|
|
6
|
+
*
|
|
7
|
+
* Format: One JSON object per line, chronologically ordered.
|
|
8
|
+
*/
|
|
9
|
+
import { UserPromptSource, UserPrompt, PromptQueryOptions } from '../user-prompt-source.js';
|
|
10
|
+
/**
|
|
11
|
+
* Mapper function type - converts raw JSONL entry to UserPrompt
|
|
12
|
+
*/
|
|
13
|
+
export type JSONLMapper = (entry: unknown) => UserPrompt;
|
|
14
|
+
/**
|
|
15
|
+
* JSONL User Prompt Source
|
|
16
|
+
*
|
|
17
|
+
* Reads user prompts from a single JSONL file with a custom mapper function.
|
|
18
|
+
* The mapper function converts agent-specific entry format to standard UserPrompt.
|
|
19
|
+
*
|
|
20
|
+
* Example usage:
|
|
21
|
+
* ```typescript
|
|
22
|
+
* const source = new JSONLUserPromptSource(
|
|
23
|
+
* '~/.claude/history.jsonl',
|
|
24
|
+
* (entry) => ({
|
|
25
|
+
* prompt: entry.display,
|
|
26
|
+
* timestamp: new Date(entry.timestamp),
|
|
27
|
+
* sessionId: entry.sessionId,
|
|
28
|
+
* projectPath: entry.project,
|
|
29
|
+
* metadata: { pastedContents: entry.pastedContents }
|
|
30
|
+
* })
|
|
31
|
+
* );
|
|
32
|
+
* ```
|
|
33
|
+
*/
|
|
34
|
+
export declare class JSONLUserPromptSource extends UserPromptSource {
|
|
35
|
+
private mapper;
|
|
36
|
+
constructor(filePath: string, mapper: JSONLMapper);
|
|
37
|
+
/**
|
|
38
|
+
* Read all prompts from JSONL file
|
|
39
|
+
* Applies mapper to each line, then filters
|
|
40
|
+
*/
|
|
41
|
+
readPrompts(options?: PromptQueryOptions): Promise<UserPrompt[]>;
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=jsonl.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jsonl.d.ts","sourceRoot":"","sources":["../../../../../src/analytics/aggregation/core/user-prompt-sources/jsonl.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EACL,gBAAgB,EAChB,UAAU,EACV,kBAAkB,EACnB,MAAM,0BAA0B,CAAC;AAGlC;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG,CAAC,KAAK,EAAE,OAAO,KAAK,UAAU,CAAC;AAEzD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,qBAAa,qBAAsB,SAAQ,gBAAgB;IAGvD,OAAO,CAAC,MAAM;gBADd,QAAQ,EAAE,MAAM,EACR,MAAM,EAAE,WAAW;IAK7B;;;OAGG;IACG,WAAW,CAAC,OAAO,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;CAiBvE"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* JSONL User Prompt Source
|
|
3
|
+
*
|
|
4
|
+
* Generic implementation for reading user prompts from JSONL files.
|
|
5
|
+
* Used by Claude Code and other agents that store history in JSONL format.
|
|
6
|
+
*
|
|
7
|
+
* Format: One JSON object per line, chronologically ordered.
|
|
8
|
+
*/
|
|
9
|
+
import { existsSync } from 'node:fs';
|
|
10
|
+
import { UserPromptSource } from '../user-prompt-source.js';
|
|
11
|
+
import { readJSONL } from '../streaming.js';
|
|
12
|
+
/**
|
|
13
|
+
* JSONL User Prompt Source
|
|
14
|
+
*
|
|
15
|
+
* Reads user prompts from a single JSONL file with a custom mapper function.
|
|
16
|
+
* The mapper function converts agent-specific entry format to standard UserPrompt.
|
|
17
|
+
*
|
|
18
|
+
* Example usage:
|
|
19
|
+
* ```typescript
|
|
20
|
+
* const source = new JSONLUserPromptSource(
|
|
21
|
+
* '~/.claude/history.jsonl',
|
|
22
|
+
* (entry) => ({
|
|
23
|
+
* prompt: entry.display,
|
|
24
|
+
* timestamp: new Date(entry.timestamp),
|
|
25
|
+
* sessionId: entry.sessionId,
|
|
26
|
+
* projectPath: entry.project,
|
|
27
|
+
* metadata: { pastedContents: entry.pastedContents }
|
|
28
|
+
* })
|
|
29
|
+
* );
|
|
30
|
+
* ```
|
|
31
|
+
*/
|
|
32
|
+
export class JSONLUserPromptSource extends UserPromptSource {
|
|
33
|
+
mapper;
|
|
34
|
+
constructor(filePath, mapper) {
|
|
35
|
+
super({ filePath, format: 'jsonl' });
|
|
36
|
+
this.mapper = mapper;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Read all prompts from JSONL file
|
|
40
|
+
* Applies mapper to each line, then filters
|
|
41
|
+
*/
|
|
42
|
+
async readPrompts(options) {
|
|
43
|
+
const filePath = this.config.filePath;
|
|
44
|
+
// Check if file exists
|
|
45
|
+
if (!existsSync(filePath)) {
|
|
46
|
+
return [];
|
|
47
|
+
}
|
|
48
|
+
// Read and parse all lines
|
|
49
|
+
const entries = await readJSONL(filePath);
|
|
50
|
+
let prompts = entries.map(this.mapper);
|
|
51
|
+
// Apply filters
|
|
52
|
+
prompts = this.applyFilters(prompts, options);
|
|
53
|
+
return prompts;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=jsonl.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jsonl.js","sourceRoot":"","sources":["../../../../../src/analytics/aggregation/core/user-prompt-sources/jsonl.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EACL,gBAAgB,EAGjB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAO5C;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,OAAO,qBAAsB,SAAQ,gBAAgB;IAG/C;IAFV,YACE,QAAgB,EACR,MAAmB;QAE3B,KAAK,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC;QAF7B,WAAM,GAAN,MAAM,CAAa;IAG7B,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,WAAW,CAAC,OAA4B;QAC5C,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,QAAkB,CAAC;QAEhD,uBAAuB;QACvB,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC1B,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,2BAA2B;QAC3B,MAAM,OAAO,GAAG,MAAM,SAAS,CAAC,QAAQ,CAAC,CAAC;QAC1C,IAAI,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAEvC,gBAAgB;QAChB,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAE9C,OAAO,OAAO,CAAC;IACjB,CAAC;CACF"}
|
|
@@ -21,8 +21,27 @@ export interface CodemieSession {
|
|
|
21
21
|
model: string;
|
|
22
22
|
provider: string;
|
|
23
23
|
profile?: string;
|
|
24
|
+
/**
|
|
25
|
+
* Count of actual user prompts (from history file)
|
|
26
|
+
* What the user actually typed/initiated
|
|
27
|
+
*/
|
|
28
|
+
userPromptCount: number;
|
|
29
|
+
/**
|
|
30
|
+
* Count of all user-type messages in session file
|
|
31
|
+
* Includes system messages, tool results, auto-generated messages
|
|
32
|
+
*/
|
|
24
33
|
userMessageCount: number;
|
|
34
|
+
/**
|
|
35
|
+
* Count of assistant responses
|
|
36
|
+
*/
|
|
25
37
|
assistantMessageCount: number;
|
|
38
|
+
/**
|
|
39
|
+
* Percentage of real user prompts out of total user messages
|
|
40
|
+
* Formula: (userPromptCount / userMessageCount) * 100
|
|
41
|
+
* Shows how much is actual user input vs system-generated messages
|
|
42
|
+
* Example: 20% means 20% user input, 80% system messages
|
|
43
|
+
*/
|
|
44
|
+
userPromptPercentage?: number;
|
|
26
45
|
toolCallCount: number;
|
|
27
46
|
successfulToolCalls: number;
|
|
28
47
|
failedToolCalls: number;
|
|
@@ -104,6 +123,7 @@ export interface CodemieToolCall {
|
|
|
104
123
|
durationMs?: number;
|
|
105
124
|
toolName: string;
|
|
106
125
|
toolArgs: Record<string, unknown>;
|
|
126
|
+
llm_model?: string;
|
|
107
127
|
status: 'success' | 'failure' | 'aborted';
|
|
108
128
|
result?: unknown;
|
|
109
129
|
error?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/analytics/aggregation/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH;;GAEG;AACH,MAAM,WAAW,cAAc;IAE7B,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,QAAQ,GAAG,QAAQ,GAAG,OAAO,GAAG,cAAc,GAAG,YAAY,CAAC;IACrE,YAAY,EAAE,MAAM,CAAC;IAGrB,SAAS,EAAE,IAAI,CAAC;IAChB,OAAO,CAAC,EAAE,IAAI,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IAGpB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IAGnB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IAGjB,gBAAgB,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/analytics/aggregation/types.ts"],"names":[],"mappings":"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"}
|