@eeshans/howiprompt 2.1.0

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 (82) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +148 -0
  3. package/bin/bootstrap-db.mjs +166 -0
  4. package/bin/cli-helpers.mjs +86 -0
  5. package/bin/cli.mjs +205 -0
  6. package/config/ml.json +47 -0
  7. package/data/claude_code/.gitkeep +3 -0
  8. package/data/codex/.gitkeep +0 -0
  9. package/data/reference_clusters.json +314 -0
  10. package/dist/index.d.ts +18 -0
  11. package/dist/index.js +194 -0
  12. package/dist/index.js.map +1 -0
  13. package/dist/pipeline/backends.d.ts +39 -0
  14. package/dist/pipeline/backends.js +411 -0
  15. package/dist/pipeline/backends.js.map +1 -0
  16. package/dist/pipeline/classifiers.d.ts +17 -0
  17. package/dist/pipeline/classifiers.js +181 -0
  18. package/dist/pipeline/classifiers.js.map +1 -0
  19. package/dist/pipeline/config.d.ts +21 -0
  20. package/dist/pipeline/config.js +79 -0
  21. package/dist/pipeline/config.js.map +1 -0
  22. package/dist/pipeline/db.d.ts +41 -0
  23. package/dist/pipeline/db.js +130 -0
  24. package/dist/pipeline/db.js.map +1 -0
  25. package/dist/pipeline/embeddings.d.ts +15 -0
  26. package/dist/pipeline/embeddings.js +82 -0
  27. package/dist/pipeline/embeddings.js.map +1 -0
  28. package/dist/pipeline/exclusions.d.ts +86 -0
  29. package/dist/pipeline/exclusions.js +320 -0
  30. package/dist/pipeline/exclusions.js.map +1 -0
  31. package/dist/pipeline/metrics.d.ts +12 -0
  32. package/dist/pipeline/metrics.js +278 -0
  33. package/dist/pipeline/metrics.js.map +1 -0
  34. package/dist/pipeline/ml-config.d.ts +23 -0
  35. package/dist/pipeline/ml-config.js +54 -0
  36. package/dist/pipeline/ml-config.js.map +1 -0
  37. package/dist/pipeline/models.d.ts +23 -0
  38. package/dist/pipeline/models.js +21 -0
  39. package/dist/pipeline/models.js.map +1 -0
  40. package/dist/pipeline/nlp.d.ts +20 -0
  41. package/dist/pipeline/nlp.js +200 -0
  42. package/dist/pipeline/nlp.js.map +1 -0
  43. package/dist/pipeline/parsers.d.ts +11 -0
  44. package/dist/pipeline/parsers.js +492 -0
  45. package/dist/pipeline/parsers.js.map +1 -0
  46. package/dist/pipeline/registry.d.ts +21 -0
  47. package/dist/pipeline/registry.js +45 -0
  48. package/dist/pipeline/registry.js.map +1 -0
  49. package/dist/pipeline/style.d.ts +37 -0
  50. package/dist/pipeline/style.js +204 -0
  51. package/dist/pipeline/style.js.map +1 -0
  52. package/dist/pipeline/sync.d.ts +8 -0
  53. package/dist/pipeline/sync.js +52 -0
  54. package/dist/pipeline/sync.js.map +1 -0
  55. package/dist/pipeline/trends.d.ts +8 -0
  56. package/dist/pipeline/trends.js +226 -0
  57. package/dist/pipeline/trends.js.map +1 -0
  58. package/dist/server.d.ts +7 -0
  59. package/dist/server.js +216 -0
  60. package/dist/server.js.map +1 -0
  61. package/frontend/dist/_astro/MethodologyModal.astro_astro_type_script_index_0_lang.jiHwSrn-.js +34 -0
  62. package/frontend/dist/_astro/index.Ck1ZXjve.css +1 -0
  63. package/frontend/dist/_astro/index.astro_astro_type_script_index_0_lang.PuBlxVje.js +37 -0
  64. package/frontend/dist/_astro/index.astro_astro_type_script_index_1_lang.DmQY6kFx.js +1 -0
  65. package/frontend/dist/_astro/theme.CbYAaQI4.js +1 -0
  66. package/frontend/dist/_astro/wrapped.CpzRcLjf.css +1 -0
  67. package/frontend/dist/_astro/wrapped.astro_astro_type_script_index_0_lang.D4GeWu2-.js +11 -0
  68. package/frontend/dist/_astro/wrapped.astro_astro_type_script_index_1_lang.CPAAJDh5.js +1 -0
  69. package/frontend/dist/favicon.svg +4 -0
  70. package/frontend/dist/images/card_architect.png +0 -0
  71. package/frontend/dist/images/card_commander.png +0 -0
  72. package/frontend/dist/images/card_delegator.png +0 -0
  73. package/frontend/dist/images/card_explorer.png +0 -0
  74. package/frontend/dist/images/card_partner.png +0 -0
  75. package/frontend/dist/images/char_architect.png +0 -0
  76. package/frontend/dist/images/char_commander.png +0 -0
  77. package/frontend/dist/images/char_delegator.png +0 -0
  78. package/frontend/dist/images/char_explorer.png +0 -0
  79. package/frontend/dist/images/char_partner.png +0 -0
  80. package/frontend/dist/index.html +9 -0
  81. package/frontend/dist/wrapped/index.html +9 -0
  82. package/package.json +66 -0
@@ -0,0 +1,492 @@
1
+ import fs from "node:fs";
2
+ import path from "node:path";
3
+ import { Platform, Role } from "./models.js";
4
+ import { shouldExcludeContent, shouldExcludeCwd, shouldExcludeDir } from "./exclusions.js";
5
+ function findJsonlFiles(dir, excludedDirs = new Set(), rules) {
6
+ const results = [];
7
+ for (const entry of fs.readdirSync(dir, { withFileTypes: true })) {
8
+ const full = path.join(dir, entry.name);
9
+ if (entry.isDirectory()) {
10
+ // Check DB-driven dir exclusion rules, then legacy excludedDirs
11
+ if (rules) {
12
+ if (shouldExcludeDir(rules, entry.name).excluded)
13
+ continue;
14
+ }
15
+ else {
16
+ // Fallback: hardcoded subagents skip when no DB rules available
17
+ if (entry.name === "subagents")
18
+ continue;
19
+ }
20
+ if (excludedDirs.has(entry.name))
21
+ continue;
22
+ results.push(...findJsonlFiles(full, excludedDirs, rules));
23
+ }
24
+ else if (entry.name.endsWith(".jsonl") || entry.name.includes(".jsonl.backup."))
25
+ results.push(full);
26
+ }
27
+ return results;
28
+ }
29
+ function findFilesRecursive(dir, matcher) {
30
+ const results = [];
31
+ if (!fs.existsSync(dir))
32
+ return results;
33
+ for (const entry of fs.readdirSync(dir, { withFileTypes: true })) {
34
+ const full = path.join(dir, entry.name);
35
+ if (entry.isDirectory()) {
36
+ results.push(...findFilesRecursive(full, matcher));
37
+ }
38
+ else if (matcher(full, entry.name)) {
39
+ results.push(full);
40
+ }
41
+ }
42
+ return results;
43
+ }
44
+ function sortMessages(messages) {
45
+ return messages.sort((a, b) => {
46
+ const tsDelta = a.timestamp.getTime() - b.timestamp.getTime();
47
+ if (tsDelta !== 0)
48
+ return tsDelta;
49
+ if (a.conversationId !== b.conversationId)
50
+ return a.conversationId.localeCompare(b.conversationId);
51
+ if (a.role !== b.role)
52
+ return a.role === Role.HUMAN ? -1 : 1;
53
+ return a.content.localeCompare(b.content);
54
+ });
55
+ }
56
+ export async function parseClaudeCode(sourceDir, agentCwds = [], rules) {
57
+ if (!fs.existsSync(sourceDir))
58
+ return [];
59
+ // Convert excluded cwd paths to Claude project directory names
60
+ // e.g. "/path/to/project" -> "-path-to-project"
61
+ const excludedDirs = new Set(agentCwds.map((p) => p.replace(/\//g, "-")));
62
+ const messages = [];
63
+ const allFiles = findJsonlFiles(sourceDir, excludedDirs, rules);
64
+ // Track sessions excluded by CWD rules (skip all messages from that session)
65
+ const excludedSessions = new Set();
66
+ for (const filePath of allFiles) {
67
+ const sessionId = path.basename(filePath, ".jsonl");
68
+ if (excludedSessions.has(sessionId))
69
+ continue;
70
+ const lines = fs.readFileSync(filePath, "utf-8").split("\n");
71
+ for (const line of lines) {
72
+ if (!line.trim())
73
+ continue;
74
+ let entry;
75
+ try {
76
+ entry = JSON.parse(line);
77
+ }
78
+ catch {
79
+ continue;
80
+ }
81
+ const entryType = entry.type;
82
+ if (entryType !== "user" && entryType !== "assistant")
83
+ continue;
84
+ // Structural JSONL checks — these are format-level, not content rules
85
+ if (entry.isMeta)
86
+ continue;
87
+ const tsStr = entry.timestamp;
88
+ if (!tsStr)
89
+ continue;
90
+ const timestamp = new Date(tsStr);
91
+ if (isNaN(timestamp.getTime()))
92
+ continue;
93
+ // CWD-based exclusion: if entry has a cwd matching a rule, skip entire session
94
+ if (rules && entry.cwd) {
95
+ const cwdCheck = shouldExcludeCwd(rules, entry.cwd);
96
+ if (cwdCheck.excluded) {
97
+ excludedSessions.add(sessionId);
98
+ break;
99
+ }
100
+ }
101
+ const msgData = entry.message ?? {};
102
+ if (msgData.role === "user") {
103
+ // Structural JSONL checks
104
+ if (entry.sourceToolAssistantUUID || entry.toolUseResult)
105
+ continue;
106
+ const content = extractContent(msgData.content).trim();
107
+ if (!content)
108
+ continue;
109
+ // Content-based exclusion: DB rules when available, fallback for tests
110
+ if (rules) {
111
+ const contentCheck = shouldExcludeContent(rules, content, Platform.CLAUDE_CODE);
112
+ if (contentCheck.excluded)
113
+ continue;
114
+ }
115
+ else {
116
+ if (content.startsWith("<command-") || content.startsWith("<local-command"))
117
+ continue;
118
+ }
119
+ appendClaudeTurn(messages, {
120
+ timestamp,
121
+ platform: Platform.CLAUDE_CODE,
122
+ role: Role.HUMAN,
123
+ content,
124
+ conversationId: sessionId,
125
+ wordCount: content.split(/\s+/).filter(Boolean).length,
126
+ sourceFile: filePath,
127
+ });
128
+ continue;
129
+ }
130
+ if (msgData.role !== "assistant")
131
+ continue;
132
+ const content = extractContentBlocks(msgData.content).trim();
133
+ if (!content)
134
+ continue;
135
+ appendClaudeTurn(messages, {
136
+ timestamp,
137
+ platform: Platform.CLAUDE_CODE,
138
+ role: Role.ASSISTANT,
139
+ content,
140
+ conversationId: sessionId,
141
+ wordCount: content.split(/\s+/).filter(Boolean).length,
142
+ sourceFile: filePath,
143
+ });
144
+ }
145
+ }
146
+ return sortMessages(messages);
147
+ }
148
+ function appendClaudeTurn(messages, next) {
149
+ const prev = messages[messages.length - 1];
150
+ if (!prev) {
151
+ messages.push(next);
152
+ return;
153
+ }
154
+ if (prev.platform === next.platform
155
+ && prev.conversationId === next.conversationId
156
+ && prev.role === next.role) {
157
+ if (!prev.content.includes(next.content)) {
158
+ prev.content = `${prev.content} ${next.content}`.trim();
159
+ prev.wordCount = prev.content.split(/\s+/).filter(Boolean).length;
160
+ }
161
+ if (next.timestamp < prev.timestamp)
162
+ prev.timestamp = next.timestamp;
163
+ return;
164
+ }
165
+ messages.push(next);
166
+ }
167
+ function extractContent(content) {
168
+ if (typeof content === "string")
169
+ return content;
170
+ if (Array.isArray(content)) {
171
+ return content
172
+ .filter((p) => typeof p === "object" && p?.type === "text")
173
+ .map((p) => p.text ?? "")
174
+ .join(" ");
175
+ }
176
+ return "";
177
+ }
178
+ function extractContentBlocks(content) {
179
+ if (Array.isArray(content)) {
180
+ return content
181
+ .filter((b) => typeof b === "object" && b?.type === "text")
182
+ .map((b) => b.text ?? "")
183
+ .join(" ");
184
+ }
185
+ return typeof content === "string" ? content : "";
186
+ }
187
+ export async function parseCodexSessionMetadata(sessionsPath) {
188
+ const result = new Map();
189
+ if (!fs.existsSync(sessionsPath))
190
+ return result;
191
+ const walkDir = (dir) => {
192
+ const files = [];
193
+ for (const entry of fs.readdirSync(dir, { withFileTypes: true })) {
194
+ const full = path.join(dir, entry.name);
195
+ if (entry.isDirectory())
196
+ files.push(...walkDir(full));
197
+ else if (entry.name.endsWith(".jsonl"))
198
+ files.push(full);
199
+ }
200
+ return files;
201
+ };
202
+ for (const filePath of walkDir(sessionsPath)) {
203
+ const lines = fs.readFileSync(filePath, "utf-8").split("\n");
204
+ let sessionId;
205
+ let modelId;
206
+ let modelProvider;
207
+ for (let idx = 0; idx < Math.min(lines.length, 400); idx++) {
208
+ const line = lines[idx];
209
+ if (!line.trim())
210
+ continue;
211
+ let entry;
212
+ try {
213
+ entry = JSON.parse(line);
214
+ }
215
+ catch {
216
+ continue;
217
+ }
218
+ const payload = entry.payload;
219
+ if (typeof payload !== "object" || payload === null)
220
+ continue;
221
+ if (entry.type === "session_meta") {
222
+ if (typeof payload.id === "string" && payload.id.trim())
223
+ sessionId = payload.id.trim();
224
+ if (typeof payload.model_provider === "string" && payload.model_provider.trim())
225
+ modelProvider = payload.model_provider.trim();
226
+ if (typeof payload.model === "string" && payload.model.trim())
227
+ modelId = payload.model.trim();
228
+ }
229
+ if (entry.type === "turn_context") {
230
+ if (typeof payload.model === "string" && payload.model.trim())
231
+ modelId = payload.model.trim();
232
+ }
233
+ if (sessionId && modelId && modelProvider)
234
+ break;
235
+ }
236
+ if (sessionId) {
237
+ const existing = result.get(sessionId) ?? {};
238
+ if (modelId && !existing.modelId)
239
+ existing.modelId = modelId;
240
+ if (modelProvider && !existing.modelProvider)
241
+ existing.modelProvider = modelProvider;
242
+ result.set(sessionId, existing);
243
+ }
244
+ }
245
+ return result;
246
+ }
247
+ export async function parseCodexHistory(sourcePath, sessionModels) {
248
+ if (!fs.existsSync(sourcePath))
249
+ return [];
250
+ const messages = [];
251
+ const lines = fs.readFileSync(sourcePath, "utf-8").split("\n");
252
+ for (const line of lines) {
253
+ if (!line.trim())
254
+ continue;
255
+ let entry;
256
+ try {
257
+ entry = JSON.parse(line);
258
+ }
259
+ catch {
260
+ continue;
261
+ }
262
+ const text = entry.text;
263
+ if (typeof text !== "string" || !text.trim())
264
+ continue;
265
+ const ts = entry.ts;
266
+ if (typeof ts !== "number")
267
+ continue;
268
+ const sessionId = String(entry.session_id ?? "unknown");
269
+ let timestamp;
270
+ try {
271
+ timestamp = new Date(ts * 1000);
272
+ if (isNaN(timestamp.getTime()))
273
+ continue;
274
+ }
275
+ catch {
276
+ continue;
277
+ }
278
+ const modelData = sessionModels?.get(sessionId);
279
+ messages.push({
280
+ timestamp,
281
+ platform: Platform.CODEX,
282
+ role: Role.HUMAN,
283
+ content: text,
284
+ conversationId: sessionId,
285
+ wordCount: text.split(/\s+/).filter(Boolean).length,
286
+ modelId: modelData?.modelId,
287
+ modelProvider: modelData?.modelProvider,
288
+ sourceFile: sourcePath,
289
+ });
290
+ }
291
+ return sortMessages(messages);
292
+ }
293
+ function parseDateLike(value) {
294
+ if (typeof value !== "number" && typeof value !== "string")
295
+ return null;
296
+ const asNumber = Number(value);
297
+ const millis = Number.isFinite(asNumber) ? asNumber : NaN;
298
+ const dt = Number.isFinite(millis) && millis > 1e11
299
+ ? new Date(millis)
300
+ : new Date(String(value));
301
+ return Number.isNaN(dt.getTime()) ? null : dt;
302
+ }
303
+ function safeJsonParse(filePath) {
304
+ try {
305
+ return JSON.parse(fs.readFileSync(filePath, "utf-8"));
306
+ }
307
+ catch {
308
+ return null;
309
+ }
310
+ }
311
+ function extractVsCodeResponseText(response) {
312
+ if (!Array.isArray(response))
313
+ return "";
314
+ return response
315
+ .filter((part) => typeof part === "object" && part !== null && typeof part.value === "string")
316
+ .map((part) => part.value)
317
+ .join("")
318
+ .trim();
319
+ }
320
+ function inferModelProvider(modelId) {
321
+ if (!modelId)
322
+ return undefined;
323
+ const trimmed = modelId.trim();
324
+ if (!trimmed)
325
+ return undefined;
326
+ const [provider] = trimmed.split("/", 1);
327
+ return provider || undefined;
328
+ }
329
+ export async function parseVsCodeChatSessions(sourceDir, platform) {
330
+ if (!fs.existsSync(sourceDir))
331
+ return [];
332
+ const files = findFilesRecursive(sourceDir, (filePath, entryName) => entryName.endsWith(".json") && filePath.includes(`${path.sep}chatSessions${path.sep}`));
333
+ const messages = [];
334
+ for (const filePath of files) {
335
+ const session = safeJsonParse(filePath);
336
+ if (!session || !Array.isArray(session.requests))
337
+ continue;
338
+ const conversationId = typeof session.sessionId === "string" && session.sessionId.trim()
339
+ ? session.sessionId.trim()
340
+ : path.basename(filePath, ".json");
341
+ for (let index = 0; index < session.requests.length; index++) {
342
+ const request = session.requests[index];
343
+ const promptText = request?.message?.text;
344
+ if (typeof promptText !== "string" || !promptText.trim())
345
+ continue;
346
+ const baseTime = parseDateLike(request.timestamp)
347
+ ?? parseDateLike(session.creationDate)
348
+ ?? new Date(0);
349
+ const modelId = typeof request.modelId === "string" && request.modelId.trim()
350
+ ? request.modelId.trim()
351
+ : undefined;
352
+ const modelProvider = inferModelProvider(modelId);
353
+ messages.push({
354
+ timestamp: new Date(baseTime.getTime()),
355
+ platform,
356
+ role: Role.HUMAN,
357
+ content: promptText.trim(),
358
+ conversationId,
359
+ wordCount: promptText.trim().split(/\s+/).filter(Boolean).length,
360
+ modelId,
361
+ modelProvider,
362
+ sourceFile: filePath,
363
+ });
364
+ const responseText = extractVsCodeResponseText(request.response);
365
+ if (!responseText)
366
+ continue;
367
+ messages.push({
368
+ timestamp: new Date(baseTime.getTime() + 1 + index),
369
+ platform,
370
+ role: Role.ASSISTANT,
371
+ content: responseText,
372
+ conversationId,
373
+ wordCount: responseText.split(/\s+/).filter(Boolean).length,
374
+ modelId,
375
+ modelProvider,
376
+ sourceFile: filePath,
377
+ });
378
+ }
379
+ }
380
+ return sortMessages(messages);
381
+ }
382
+ function extractLmStudioTextBlocks(content) {
383
+ if (!Array.isArray(content))
384
+ return "";
385
+ return content
386
+ .filter((block) => typeof block === "object" && block !== null && block.type === "text")
387
+ .map((block) => String(block.text ?? ""))
388
+ .join(" ")
389
+ .trim();
390
+ }
391
+ function extractLmStudioStepText(steps) {
392
+ if (!Array.isArray(steps))
393
+ return "";
394
+ return steps
395
+ .filter((step) => typeof step === "object" && step !== null)
396
+ .flatMap((step) => Array.isArray(step.content) ? step.content : [])
397
+ .filter((block) => typeof block === "object" && block !== null && block.type === "text")
398
+ .map((block) => String(block.text ?? ""))
399
+ .join(" ")
400
+ .trim();
401
+ }
402
+ function extractLmStudioStepTimestamp(steps) {
403
+ if (!Array.isArray(steps))
404
+ return null;
405
+ for (const step of steps) {
406
+ const stepId = typeof step?.stepIdentifier === "string" ? step.stepIdentifier : "";
407
+ const match = stepId.match(/^(\d{13})/);
408
+ if (match) {
409
+ const dt = new Date(Number(match[1]));
410
+ if (!Number.isNaN(dt.getTime()))
411
+ return dt;
412
+ }
413
+ }
414
+ return null;
415
+ }
416
+ export async function parseLmStudioConversations(sourceDir) {
417
+ if (!fs.existsSync(sourceDir))
418
+ return [];
419
+ const files = findFilesRecursive(sourceDir, (_filePath, entryName) => entryName.endsWith(".conversation.json"));
420
+ const messages = [];
421
+ for (const filePath of files) {
422
+ const conversation = safeJsonParse(filePath);
423
+ if (!conversation || !Array.isArray(conversation.messages))
424
+ continue;
425
+ const conversationId = path.basename(filePath, ".conversation.json");
426
+ const createdAt = parseDateLike(conversation.createdAt) ?? new Date(0);
427
+ for (let index = 0; index < conversation.messages.length; index++) {
428
+ const message = conversation.messages[index];
429
+ const selectedIndex = Number.isInteger(message?.currentlySelected) ? message.currentlySelected : 0;
430
+ const version = Array.isArray(message?.versions) ? message.versions[selectedIndex] ?? message.versions[0] : null;
431
+ if (!version || typeof version.role !== "string")
432
+ continue;
433
+ let content = "";
434
+ let role = null;
435
+ let timestamp = new Date(createdAt.getTime() + index);
436
+ let modelId;
437
+ let modelProvider;
438
+ if (version.role === "user") {
439
+ content = extractLmStudioTextBlocks(version.content);
440
+ role = Role.HUMAN;
441
+ }
442
+ else if (version.role === "assistant") {
443
+ content = extractLmStudioStepText(version.steps);
444
+ role = Role.ASSISTANT;
445
+ timestamp = extractLmStudioStepTimestamp(version.steps) ?? timestamp;
446
+ modelId = typeof version.senderInfo?.senderName === "string" && version.senderInfo.senderName.trim()
447
+ ? version.senderInfo.senderName.trim()
448
+ : undefined;
449
+ modelProvider = inferModelProvider(modelId);
450
+ if (!modelId && Array.isArray(version.steps)) {
451
+ for (const step of version.steps) {
452
+ const identifier = typeof step?.genInfo?.identifier === "string" ? step.genInfo.identifier.trim() : "";
453
+ if (identifier) {
454
+ modelId = identifier;
455
+ modelProvider = inferModelProvider(modelId);
456
+ break;
457
+ }
458
+ }
459
+ }
460
+ }
461
+ if (!role || !content)
462
+ continue;
463
+ if (role === Role.HUMAN) {
464
+ const nextVersion = conversation.messages[index + 1]?.versions?.[Number.isInteger(conversation.messages[index + 1]?.currentlySelected)
465
+ ? conversation.messages[index + 1].currentlySelected
466
+ : 0] ?? conversation.messages[index + 1]?.versions?.[0];
467
+ const nextAssistantTime = nextVersion?.role === "assistant"
468
+ ? extractLmStudioStepTimestamp(nextVersion.steps)
469
+ : null;
470
+ if (nextAssistantTime) {
471
+ timestamp = new Date(nextAssistantTime.getTime() - 1);
472
+ }
473
+ else {
474
+ timestamp = new Date(createdAt.getTime() + index);
475
+ }
476
+ }
477
+ messages.push({
478
+ timestamp,
479
+ platform: Platform.LMSTUDIO,
480
+ role,
481
+ content,
482
+ conversationId,
483
+ wordCount: content.split(/\s+/).filter(Boolean).length,
484
+ modelId,
485
+ modelProvider,
486
+ sourceFile: filePath,
487
+ });
488
+ }
489
+ }
490
+ return sortMessages(messages);
491
+ }
492
+ //# sourceMappingURL=parsers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parsers.js","sourceRoot":"","sources":["../../src/pipeline/parsers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ export type ComponentType = "gauge" | "spectrum" | "percentage";
2
+ export interface MetricDefinition {
3
+ key: string;
4
+ name: string;
5
+ description: string;
6
+ range: readonly [number, number];
7
+ component: ComponentType;
8
+ tier: "hero";
9
+ order: number;
10
+ format: (v: number) => string;
11
+ labels?: {
12
+ low: string;
13
+ high: string;
14
+ };
15
+ source?: (metrics: Record<string, any>) => number;
16
+ }
17
+ export declare const METRICS: MetricDefinition[];
18
+ export declare function getHeroes(): MetricDefinition[];
19
+ export declare function getMetric(key: string): MetricDefinition | undefined;
20
+ /** Compute values for all registry metrics from a full metrics object */
21
+ export declare function computeNormalized(metrics: Record<string, any>): Record<string, number>;
@@ -0,0 +1,45 @@
1
+ // registry.ts — Data-driven metric definitions for hero metrics.
2
+ export const METRICS = [
3
+ // === Hero Metrics (standalone displays) ===
4
+ {
5
+ key: "vibe_index",
6
+ name: "Vibe Coder Index",
7
+ description: "How much you vibe-code vs. engineer",
8
+ range: [0, 100],
9
+ component: "spectrum",
10
+ tier: "hero",
11
+ order: 1,
12
+ format: (v) => `${Math.round(100 - v)}`,
13
+ labels: { low: "Engineer", high: "Vibe Coder" },
14
+ source: (m) => 100 - (m.nlp?.vibe_coder_index?.avg_score ?? 0),
15
+ },
16
+ {
17
+ key: "politeness",
18
+ name: "Politeness",
19
+ description: "How courteous and collaborative is your tone?",
20
+ range: [0, 100],
21
+ component: "gauge",
22
+ tier: "hero",
23
+ order: 2,
24
+ format: (v) => `${Math.round(v)}`,
25
+ labels: { low: "Direct", high: "Courteous" },
26
+ source: (m) => m.nlp?.politeness?.avg_score ?? 0,
27
+ },
28
+ ];
29
+ export function getHeroes() {
30
+ return METRICS.filter((m) => m.tier === "hero").sort((a, b) => a.order - b.order);
31
+ }
32
+ export function getMetric(key) {
33
+ return METRICS.find((m) => m.key === key);
34
+ }
35
+ /** Compute values for all registry metrics from a full metrics object */
36
+ export function computeNormalized(metrics) {
37
+ const result = {};
38
+ for (const def of METRICS) {
39
+ if (def.source) {
40
+ result[def.key] = Math.round(def.source(metrics) * 10) / 10;
41
+ }
42
+ }
43
+ return result;
44
+ }
45
+ //# sourceMappingURL=registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/pipeline/registry.ts"],"names":[],"mappings":"AAAA,iEAAiE;AAiBjE,MAAM,CAAC,MAAM,OAAO,GAAuB;IACzC,6CAA6C;IAC7C;QACE,GAAG,EAAE,YAAY;QACjB,IAAI,EAAE,kBAAkB;QACxB,WAAW,EAAE,qCAAqC;QAClD,KAAK,EAAE,CAAC,CAAC,EAAE,GAAG,CAAU;QACxB,SAAS,EAAE,UAAU;QACrB,IAAI,EAAE,MAAM;QACZ,KAAK,EAAE,CAAC;QACR,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE;QACvC,MAAM,EAAE,EAAE,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE,YAAY,EAAE;QAC/C,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,gBAAgB,EAAE,SAAS,IAAI,CAAC,CAAC;KAC/D;IACD;QACE,GAAG,EAAE,YAAY;QACjB,IAAI,EAAE,YAAY;QAClB,WAAW,EAAE,+CAA+C;QAC5D,KAAK,EAAE,CAAC,CAAC,EAAE,GAAG,CAAU;QACxB,SAAS,EAAE,OAAO;QAClB,IAAI,EAAE,MAAM;QACZ,KAAK,EAAE,CAAC;QACR,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;QACjC,MAAM,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE;QAC5C,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,UAAU,EAAE,SAAS,IAAI,CAAC;KACjD;CAEF,CAAC;AAEF,MAAM,UAAU,SAAS;IACvB,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;AACpF,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,GAAW;IACnC,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC;AAC5C,CAAC;AAED,yEAAyE;AACzE,MAAM,UAAU,iBAAiB,CAAC,OAA4B;IAC5D,MAAM,MAAM,GAA2B,EAAE,CAAC;IAC1C,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;QAC1B,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;YACf,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC;QAC9D,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -0,0 +1,37 @@
1
+ import type { Client } from "@libsql/client";
2
+ export interface StyleFeatures {
3
+ word_count: number;
4
+ char_count: number;
5
+ newline_count: number;
6
+ has_code_block: number;
7
+ question_count: number;
8
+ list_marker_count: number;
9
+ file_ref_count: number;
10
+ has_line_ref: number;
11
+ correction_count: number;
12
+ inquiry_count: number;
13
+ review_count: number;
14
+ constraint_count: number;
15
+ task_debug_count: number;
16
+ task_explain_count: number;
17
+ task_generate_count: number;
18
+ task_refactor_count: number;
19
+ directive_count: number;
20
+ collaborative_count: number;
21
+ has_please: number;
22
+ has_thanks: number;
23
+ }
24
+ export declare function extractFeatures(content: string, wordCount: number): StyleFeatures;
25
+ export declare function computeDetailScore(f: StyleFeatures): number;
26
+ export declare function computeStyleScore(f: StyleFeatures): number;
27
+ export type Quadrant = "Brief + Directive" | "Brief + Collaborative" | "Detailed + Directive" | "Detailed + Collaborative";
28
+ export interface PersonaDefinition {
29
+ name: string;
30
+ quadrant: Quadrant;
31
+ description: string;
32
+ traits: string[];
33
+ }
34
+ export declare const PERSONAS: Record<Quadrant, PersonaDefinition>;
35
+ export declare function classifyQuadrant(detailScore: number, styleScore: number): Quadrant;
36
+ export declare function getPersona(detailScore: number, styleScore: number): PersonaDefinition;
37
+ export declare function enrichStyle(client: Client, onBatchProgress?: (done: number, total: number) => void): Promise<number>;