@telepat/snoopy 0.1.4 → 0.1.7
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 +35 -23
- package/dist/src/cli/commands/doctor.js +5 -1
- package/dist/src/cli/commands/doctor.js.map +1 -1
- package/dist/src/cli/commands/export.d.ts +8 -1
- package/dist/src/cli/commands/export.js +33 -7
- package/dist/src/cli/commands/export.js.map +1 -1
- package/dist/src/cli/commands/job.d.ts +2 -2
- package/dist/src/cli/commands/job.js +89 -28
- package/dist/src/cli/commands/job.js.map +1 -1
- package/dist/src/cli/commands/results.d.ts +1 -0
- package/dist/src/cli/commands/results.js +118 -0
- package/dist/src/cli/commands/results.js.map +1 -0
- package/dist/src/cli/index.js +17 -6
- package/dist/src/cli/index.js.map +1 -1
- package/dist/src/cli/ui/consoleUi.js +0 -3
- package/dist/src/cli/ui/consoleUi.js.map +1 -1
- package/dist/src/services/db/repositories/jobsRepo.d.ts +15 -0
- package/dist/src/services/db/repositories/jobsRepo.js +21 -14
- package/dist/src/services/db/repositories/jobsRepo.js.map +1 -1
- package/dist/src/services/db/repositories/runsRepo.d.ts +8 -0
- package/dist/src/services/db/repositories/runsRepo.js +64 -54
- package/dist/src/services/db/repositories/runsRepo.js.map +1 -1
- package/dist/src/services/db/repositories/scanItemsRepo.d.ts +45 -1
- package/dist/src/services/db/repositories/scanItemsRepo.js +184 -28
- package/dist/src/services/db/repositories/scanItemsRepo.js.map +1 -1
- package/dist/src/services/db/sqlite.js +18 -0
- package/dist/src/services/db/sqlite.js.map +1 -1
- package/dist/src/services/export/csvResults.d.ts +1 -1
- package/dist/src/services/export/csvResults.js +3 -2
- package/dist/src/services/export/csvResults.js.map +1 -1
- package/dist/src/services/export/fileNaming.d.ts +2 -0
- package/dist/src/services/export/fileNaming.js +10 -0
- package/dist/src/services/export/fileNaming.js.map +1 -0
- package/dist/src/services/export/jsonResults.d.ts +10 -0
- package/dist/src/services/export/jsonResults.js +16 -0
- package/dist/src/services/export/jsonResults.js.map +1 -0
- package/dist/src/services/openrouter/client.d.ts +1 -0
- package/dist/src/services/openrouter/client.js +36 -5
- package/dist/src/services/openrouter/client.js.map +1 -1
- package/dist/src/services/scheduler/jobRunner.js +10 -1
- package/dist/src/services/scheduler/jobRunner.js.map +1 -1
- package/dist/src/ui/components/JobsTable.d.ts +8 -0
- package/dist/src/ui/components/JobsTable.js +78 -0
- package/dist/src/ui/components/JobsTable.js.map +1 -0
- package/dist/src/ui/components/ResultsViewer.d.ts +11 -0
- package/dist/src/ui/components/ResultsViewer.js +81 -0
- package/dist/src/ui/components/ResultsViewer.js.map +1 -0
- package/dist/src/ui/components/RunsTable.d.ts +9 -0
- package/dist/src/ui/components/RunsTable.js +99 -0
- package/dist/src/ui/components/RunsTable.js.map +1 -0
- package/dist/src/ui/components/jobsTableModel.d.ts +15 -0
- package/dist/src/ui/components/jobsTableModel.js +79 -0
- package/dist/src/ui/components/jobsTableModel.js.map +1 -0
- package/dist/src/ui/components/resultsViewerModel.d.ts +14 -0
- package/dist/src/ui/components/resultsViewerModel.js +122 -0
- package/dist/src/ui/components/resultsViewerModel.js.map +1 -0
- package/dist/src/ui/components/runsTableModel.d.ts +28 -0
- package/dist/src/ui/components/runsTableModel.js +109 -0
- package/dist/src/ui/components/runsTableModel.js.map +1 -0
- package/package.json +3 -2
|
@@ -2,6 +2,15 @@ import crypto from 'node:crypto';
|
|
|
2
2
|
import { getDb } from '../sqlite.js';
|
|
3
3
|
export class ScanItemsRepository {
|
|
4
4
|
db = getDb();
|
|
5
|
+
mapScanItemRows(rows) {
|
|
6
|
+
return rows.map((row) => ({
|
|
7
|
+
...row,
|
|
8
|
+
qualified: row.qualified === 1,
|
|
9
|
+
viewed: row.viewed === 1,
|
|
10
|
+
validated: row.validated === 1,
|
|
11
|
+
processed: row.processed === 1
|
|
12
|
+
}));
|
|
13
|
+
}
|
|
5
14
|
buildFilterClause(alias, filter) {
|
|
6
15
|
const params = [`-${filter.days} days`];
|
|
7
16
|
const conditions = [`datetime(${alias}.created_at) >= datetime('now', ?)`];
|
|
@@ -23,7 +32,8 @@ export class ScanItemsRepository {
|
|
|
23
32
|
estimatedCostUsd: Number(row.estimatedCostUsd ?? 0)
|
|
24
33
|
};
|
|
25
34
|
}
|
|
26
|
-
listQualifiedByJob(jobId) {
|
|
35
|
+
listQualifiedByJob(jobId, limit = 100) {
|
|
36
|
+
const boundedLimit = Math.max(1, Math.floor(limit));
|
|
27
37
|
const rows = this.db
|
|
28
38
|
.prepare(`SELECT
|
|
29
39
|
id,
|
|
@@ -42,8 +52,9 @@ export class ScanItemsRepository {
|
|
|
42
52
|
FROM scan_items
|
|
43
53
|
WHERE job_id = ?
|
|
44
54
|
AND qualified = 1
|
|
45
|
-
ORDER BY datetime(reddit_posted_at) DESC, datetime(created_at) DESC, id DESC
|
|
46
|
-
|
|
55
|
+
ORDER BY datetime(reddit_posted_at) DESC, datetime(created_at) DESC, id DESC
|
|
56
|
+
LIMIT ?`)
|
|
57
|
+
.all(jobId, boundedLimit);
|
|
47
58
|
return rows.map((row) => ({
|
|
48
59
|
...row,
|
|
49
60
|
viewed: row.viewed === 1,
|
|
@@ -51,6 +62,112 @@ export class ScanItemsRepository {
|
|
|
51
62
|
processed: row.processed === 1
|
|
52
63
|
}));
|
|
53
64
|
}
|
|
65
|
+
listQualifiedByJobRun(jobId, runId, limit = 100) {
|
|
66
|
+
const boundedLimit = Math.max(1, Math.floor(limit));
|
|
67
|
+
const rows = this.db
|
|
68
|
+
.prepare(`SELECT
|
|
69
|
+
id,
|
|
70
|
+
job_id as jobId,
|
|
71
|
+
run_id as runId,
|
|
72
|
+
author,
|
|
73
|
+
title,
|
|
74
|
+
body,
|
|
75
|
+
url,
|
|
76
|
+
reddit_posted_at as redditPostedAt,
|
|
77
|
+
viewed,
|
|
78
|
+
validated,
|
|
79
|
+
processed,
|
|
80
|
+
qualification_reason as qualificationReason,
|
|
81
|
+
created_at as createdAt
|
|
82
|
+
FROM scan_items
|
|
83
|
+
WHERE job_id = ?
|
|
84
|
+
AND run_id = ?
|
|
85
|
+
AND qualified = 1
|
|
86
|
+
ORDER BY datetime(reddit_posted_at) DESC, datetime(created_at) DESC, id DESC
|
|
87
|
+
LIMIT ?`)
|
|
88
|
+
.all(jobId, runId, boundedLimit);
|
|
89
|
+
return rows.map((row) => ({
|
|
90
|
+
...row,
|
|
91
|
+
viewed: row.viewed === 1,
|
|
92
|
+
validated: row.validated === 1,
|
|
93
|
+
processed: row.processed === 1
|
|
94
|
+
}));
|
|
95
|
+
}
|
|
96
|
+
listByJob(jobId) {
|
|
97
|
+
const rows = this.db
|
|
98
|
+
.prepare(`SELECT
|
|
99
|
+
id,
|
|
100
|
+
job_id as jobId,
|
|
101
|
+
run_id as runId,
|
|
102
|
+
type,
|
|
103
|
+
reddit_post_id as redditPostId,
|
|
104
|
+
reddit_comment_id as redditCommentId,
|
|
105
|
+
subreddit,
|
|
106
|
+
author,
|
|
107
|
+
title,
|
|
108
|
+
body,
|
|
109
|
+
url,
|
|
110
|
+
reddit_posted_at as redditPostedAt,
|
|
111
|
+
qualified,
|
|
112
|
+
viewed,
|
|
113
|
+
validated,
|
|
114
|
+
processed,
|
|
115
|
+
qualification_reason as qualificationReason,
|
|
116
|
+
prompt_tokens as promptTokens,
|
|
117
|
+
completion_tokens as completionTokens,
|
|
118
|
+
estimated_cost_usd as estimatedCostUsd,
|
|
119
|
+
created_at as createdAt
|
|
120
|
+
FROM scan_items
|
|
121
|
+
WHERE job_id = ?
|
|
122
|
+
ORDER BY datetime(reddit_posted_at) DESC, datetime(created_at) DESC, id DESC`)
|
|
123
|
+
.all(jobId);
|
|
124
|
+
return this.mapScanItemRows(rows);
|
|
125
|
+
}
|
|
126
|
+
countByJob(jobId) {
|
|
127
|
+
const row = this.db
|
|
128
|
+
.prepare(`SELECT COUNT(*) as count
|
|
129
|
+
FROM scan_items
|
|
130
|
+
WHERE job_id = ?`)
|
|
131
|
+
.get(jobId);
|
|
132
|
+
return Number(row?.count ?? 0);
|
|
133
|
+
}
|
|
134
|
+
listByJobPage(jobId, limit, offset) {
|
|
135
|
+
const boundedLimit = Math.max(1, Math.floor(limit));
|
|
136
|
+
const boundedOffset = Math.max(0, Math.floor(offset));
|
|
137
|
+
const rows = this.db
|
|
138
|
+
.prepare(`SELECT
|
|
139
|
+
id,
|
|
140
|
+
job_id as jobId,
|
|
141
|
+
run_id as runId,
|
|
142
|
+
type,
|
|
143
|
+
reddit_post_id as redditPostId,
|
|
144
|
+
reddit_comment_id as redditCommentId,
|
|
145
|
+
subreddit,
|
|
146
|
+
author,
|
|
147
|
+
title,
|
|
148
|
+
body,
|
|
149
|
+
url,
|
|
150
|
+
reddit_posted_at as redditPostedAt,
|
|
151
|
+
qualified,
|
|
152
|
+
viewed,
|
|
153
|
+
validated,
|
|
154
|
+
processed,
|
|
155
|
+
qualification_reason as qualificationReason,
|
|
156
|
+
prompt_tokens as promptTokens,
|
|
157
|
+
completion_tokens as completionTokens,
|
|
158
|
+
estimated_cost_usd as estimatedCostUsd,
|
|
159
|
+
created_at as createdAt
|
|
160
|
+
FROM scan_items
|
|
161
|
+
WHERE job_id = ?
|
|
162
|
+
ORDER BY datetime(reddit_posted_at) DESC, datetime(created_at) DESC, id DESC
|
|
163
|
+
LIMIT ? OFFSET ?`)
|
|
164
|
+
.all(jobId, boundedLimit, boundedOffset);
|
|
165
|
+
return this.mapScanItemRows(rows);
|
|
166
|
+
}
|
|
167
|
+
getByJobIndex(jobId, index) {
|
|
168
|
+
const rows = this.listByJobPage(jobId, 1, index);
|
|
169
|
+
return rows[0] ?? null;
|
|
170
|
+
}
|
|
54
171
|
existsPost(jobId, postId) {
|
|
55
172
|
const row = this.db
|
|
56
173
|
.prepare(`SELECT 1
|
|
@@ -145,32 +262,71 @@ export class ScanItemsRepository {
|
|
|
145
262
|
}
|
|
146
263
|
create(item) {
|
|
147
264
|
const id = crypto.randomUUID();
|
|
148
|
-
this.db
|
|
149
|
-
.
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
265
|
+
const createInTransaction = this.db.transaction((newId, newItem) => {
|
|
266
|
+
this.db
|
|
267
|
+
.prepare(`INSERT INTO scan_items (
|
|
268
|
+
id,
|
|
269
|
+
job_id,
|
|
270
|
+
run_id,
|
|
271
|
+
type,
|
|
272
|
+
reddit_post_id,
|
|
273
|
+
reddit_comment_id,
|
|
274
|
+
subreddit,
|
|
275
|
+
author,
|
|
276
|
+
title,
|
|
277
|
+
body,
|
|
278
|
+
url,
|
|
279
|
+
reddit_posted_at,
|
|
280
|
+
qualified,
|
|
281
|
+
viewed,
|
|
282
|
+
validated,
|
|
283
|
+
processed,
|
|
284
|
+
prompt_tokens,
|
|
285
|
+
completion_tokens,
|
|
286
|
+
estimated_cost_usd,
|
|
287
|
+
qualification_reason,
|
|
288
|
+
created_at
|
|
289
|
+
) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, datetime('now'))`)
|
|
290
|
+
.run(newId, newItem.jobId, newItem.runId, newItem.type, newItem.redditPostId, newItem.redditCommentId, newItem.subreddit, newItem.author, newItem.title, newItem.body, newItem.url, newItem.redditPostedAt, newItem.qualified ? 1 : 0, newItem.viewed ? 1 : 0, newItem.validated ? 1 : 0, newItem.processed ? 1 : 0, newItem.promptTokens ?? 0, newItem.completionTokens ?? 0, newItem.estimatedCostUsd ?? null, newItem.qualificationReason);
|
|
291
|
+
for (const node of newItem.commentThreadNodes ?? []) {
|
|
292
|
+
this.db
|
|
293
|
+
.prepare(`INSERT INTO comment_thread_nodes (
|
|
294
|
+
id,
|
|
295
|
+
scan_item_id,
|
|
296
|
+
reddit_comment_id,
|
|
297
|
+
parent_reddit_comment_id,
|
|
298
|
+
author,
|
|
299
|
+
body,
|
|
300
|
+
depth,
|
|
301
|
+
is_target,
|
|
302
|
+
created_at
|
|
303
|
+
) VALUES (?, ?, ?, ?, ?, ?, ?, ?, datetime('now'))`)
|
|
304
|
+
.run(crypto.randomUUID(), newId, node.redditCommentId, node.parentRedditCommentId, node.author, node.body, node.depth, node.isTarget ? 1 : 0);
|
|
305
|
+
}
|
|
306
|
+
});
|
|
307
|
+
createInTransaction(id, item);
|
|
173
308
|
return id;
|
|
174
309
|
}
|
|
310
|
+
listCommentThreadNodes(scanItemId) {
|
|
311
|
+
const rows = this.db
|
|
312
|
+
.prepare(`SELECT
|
|
313
|
+
id,
|
|
314
|
+
scan_item_id as scanItemId,
|
|
315
|
+
reddit_comment_id as redditCommentId,
|
|
316
|
+
parent_reddit_comment_id as parentRedditCommentId,
|
|
317
|
+
author,
|
|
318
|
+
body,
|
|
319
|
+
depth,
|
|
320
|
+
is_target as isTarget,
|
|
321
|
+
created_at as createdAt
|
|
322
|
+
FROM comment_thread_nodes
|
|
323
|
+
WHERE scan_item_id = ?
|
|
324
|
+
ORDER BY depth ASC, created_at ASC, id ASC`)
|
|
325
|
+
.all(scanItemId);
|
|
326
|
+
return rows.map((row) => ({
|
|
327
|
+
...row,
|
|
328
|
+
isTarget: row.isTarget === 1
|
|
329
|
+
}));
|
|
330
|
+
}
|
|
175
331
|
}
|
|
176
332
|
//# sourceMappingURL=scanItemsRepo.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scanItemsRepo.js","sourceRoot":"","sources":["../../../../../src/services/db/repositories/scanItemsRepo.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"scanItemsRepo.js","sourceRoot":"","sources":["../../../../../src/services/db/repositories/scanItemsRepo.ts"],"names":[],"mappings":"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"}
|
|
@@ -77,6 +77,19 @@ export function getDb() {
|
|
|
77
77
|
FOREIGN KEY (run_id) REFERENCES job_runs(id)
|
|
78
78
|
);
|
|
79
79
|
|
|
80
|
+
CREATE TABLE IF NOT EXISTS comment_thread_nodes (
|
|
81
|
+
id TEXT PRIMARY KEY,
|
|
82
|
+
scan_item_id TEXT NOT NULL,
|
|
83
|
+
reddit_comment_id TEXT NOT NULL,
|
|
84
|
+
parent_reddit_comment_id TEXT,
|
|
85
|
+
author TEXT NOT NULL,
|
|
86
|
+
body TEXT NOT NULL,
|
|
87
|
+
depth INTEGER NOT NULL,
|
|
88
|
+
is_target INTEGER NOT NULL DEFAULT 0,
|
|
89
|
+
created_at TEXT NOT NULL DEFAULT (datetime('now')),
|
|
90
|
+
FOREIGN KEY (scan_item_id) REFERENCES scan_items(id)
|
|
91
|
+
);
|
|
92
|
+
|
|
80
93
|
CREATE TABLE IF NOT EXISTS daemon_state (
|
|
81
94
|
id INTEGER PRIMARY KEY CHECK (id = 1),
|
|
82
95
|
is_running INTEGER NOT NULL,
|
|
@@ -97,6 +110,11 @@ export function getDb() {
|
|
|
97
110
|
}
|
|
98
111
|
db.exec('CREATE UNIQUE INDEX IF NOT EXISTS idx_jobs_slug ON jobs(slug)');
|
|
99
112
|
db.exec("CREATE UNIQUE INDEX IF NOT EXISTS idx_scan_items_dedup ON scan_items(job_id, reddit_post_id, COALESCE(reddit_comment_id, ''))");
|
|
113
|
+
db.exec('CREATE INDEX IF NOT EXISTS idx_scan_items_job_qualified_posted ON scan_items(job_id, qualified, reddit_posted_at DESC, created_at DESC)');
|
|
114
|
+
db.exec('CREATE INDEX IF NOT EXISTS idx_scan_items_job_created ON scan_items(job_id, created_at DESC)');
|
|
115
|
+
db.exec('CREATE INDEX IF NOT EXISTS idx_scan_items_created ON scan_items(created_at DESC)');
|
|
116
|
+
db.exec('CREATE INDEX IF NOT EXISTS idx_comment_thread_nodes_scan_item_depth ON comment_thread_nodes(scan_item_id, depth ASC)');
|
|
117
|
+
db.exec('CREATE INDEX IF NOT EXISTS idx_comment_thread_nodes_parent ON comment_thread_nodes(parent_reddit_comment_id)');
|
|
100
118
|
try {
|
|
101
119
|
db.exec('ALTER TABLE job_runs ADD COLUMN started_at TEXT');
|
|
102
120
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sqlite.js","sourceRoot":"","sources":["../../../../src/services/db/sqlite.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AACtC,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAErD,IAAI,EAAE,GAA6B,IAAI,CAAC;AAExC,MAAM,UAAU,KAAK;IACnB,IAAI,EAAE,EAAE,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,KAAK,GAAG,aAAa,EAAE,CAAC;IAC9B,EAAE,GAAG,IAAI,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAChC,IAAI,CAAC;QACH,EAAE,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC;IAClC,CAAC;IAAC,MAAM,CAAC;QACP,kFAAkF;IACpF,CAAC;IAED,EAAE,CAAC,IAAI,CAAC
|
|
1
|
+
{"version":3,"file":"sqlite.js","sourceRoot":"","sources":["../../../../src/services/db/sqlite.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,5 +6,5 @@ export interface CsvExportSummary {
|
|
|
6
6
|
}
|
|
7
7
|
export declare class CsvResultsExporter {
|
|
8
8
|
private readonly resultsDir;
|
|
9
|
-
exportJobResults(job: Job, qualifiedRows: QualifiedScanItemRow[]): CsvExportSummary;
|
|
9
|
+
exportJobResults(job: Job, qualifiedRows: QualifiedScanItemRow[], exportedAt?: Date): CsvExportSummary;
|
|
10
10
|
}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import fs from 'node:fs';
|
|
2
2
|
import path from 'node:path';
|
|
3
3
|
import { getAppPaths } from '../../utils/paths.js';
|
|
4
|
+
import { createExportFileName } from './fileNaming.js';
|
|
4
5
|
const CSV_HEADERS = ['URL', 'Title', 'Truncated Content', 'Author', 'Justification', 'Date'];
|
|
5
6
|
function truncateContent(value, maxLength) {
|
|
6
7
|
if (value.length <= maxLength) {
|
|
@@ -19,8 +20,8 @@ function toCsvLine(values) {
|
|
|
19
20
|
}
|
|
20
21
|
export class CsvResultsExporter {
|
|
21
22
|
resultsDir = getAppPaths().resultsDir;
|
|
22
|
-
exportJobResults(job, qualifiedRows) {
|
|
23
|
-
const outputPath = path.join(this.resultsDir,
|
|
23
|
+
exportJobResults(job, qualifiedRows, exportedAt = new Date()) {
|
|
24
|
+
const outputPath = path.join(this.resultsDir, createExportFileName(job.slug, 'csv', exportedAt));
|
|
24
25
|
const lines = [toCsvLine([...CSV_HEADERS])];
|
|
25
26
|
for (const row of qualifiedRows) {
|
|
26
27
|
lines.push(toCsvLine([
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"csvResults.js","sourceRoot":"","sources":["../../../../src/services/export/csvResults.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAG7B,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"csvResults.js","sourceRoot":"","sources":["../../../../src/services/export/csvResults.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAG7B,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAEvD,MAAM,WAAW,GAAG,CAAC,KAAK,EAAE,OAAO,EAAE,mBAAmB,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,CAAU,CAAC;AAEtG,SAAS,eAAe,CAAC,KAAa,EAAE,SAAiB;IACvD,IAAI,KAAK,CAAC,MAAM,IAAI,SAAS,EAAE,CAAC;QAC9B,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,KAAK,CAAC;AAC3C,CAAC;AAED,SAAS,SAAS,CAAC,KAAa;IAC9B,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QAC/F,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC;IAC1C,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,SAAS,CAAC,MAAgB;IACjC,OAAO,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACzC,CAAC;AAOD,MAAM,OAAO,kBAAkB;IACZ,UAAU,GAAG,WAAW,EAAE,CAAC,UAAU,CAAC;IAEvD,gBAAgB,CAAC,GAAQ,EAAE,aAAqC,EAAE,UAAU,GAAG,IAAI,IAAI,EAAE;QACvF,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,oBAAoB,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC;QACjG,MAAM,KAAK,GAAG,CAAC,SAAS,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;QAE5C,KAAK,MAAM,GAAG,IAAI,aAAa,EAAE,CAAC;YAChC,KAAK,CAAC,IAAI,CACR,SAAS,CAAC;gBACR,GAAG,CAAC,GAAG;gBACP,GAAG,CAAC,KAAK,IAAI,EAAE;gBACf,eAAe,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC;gBAC9B,GAAG,CAAC,MAAM;gBACV,GAAG,CAAC,mBAAmB,IAAI,EAAE;gBAC7B,GAAG,CAAC,cAAc;aACnB,CAAC,CACH,CAAC;QACJ,CAAC;QAED,EAAE,CAAC,aAAa,CAAC,UAAU,EAAE,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAE9D,OAAO;YACL,UAAU;YACV,QAAQ,EAAE,aAAa,CAAC,MAAM;SAC/B,CAAC;IACJ,CAAC;CACF"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
function formatDatePart(value) {
|
|
2
|
+
return String(value).padStart(2, '0');
|
|
3
|
+
}
|
|
4
|
+
export function formatUtcTimestampCompact(date) {
|
|
5
|
+
return `${date.getUTCFullYear()}${formatDatePart(date.getUTCMonth() + 1)}${formatDatePart(date.getUTCDate())}-${formatDatePart(date.getUTCHours())}${formatDatePart(date.getUTCMinutes())}${formatDatePart(date.getUTCSeconds())}`;
|
|
6
|
+
}
|
|
7
|
+
export function createExportFileName(jobSlug, extension, exportedAt = new Date()) {
|
|
8
|
+
return `${formatUtcTimestampCompact(exportedAt)}_${jobSlug}.${extension}`;
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=fileNaming.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fileNaming.js","sourceRoot":"","sources":["../../../../src/services/export/fileNaming.ts"],"names":[],"mappings":"AAAA,SAAS,cAAc,CAAC,KAAa;IACnC,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;AACxC,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,IAAU;IAClD,OAAO,GAAG,IAAI,CAAC,cAAc,EAAE,GAAG,cAAc,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,GAAG,cAAc,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,IAAI,cAAc,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,GAAG,cAAc,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,GAAG,cAAc,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,EAAE,CAAC;AACrO,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,OAAe,EAAE,SAAyB,EAAE,UAAU,GAAG,IAAI,IAAI,EAAE;IACtG,OAAO,GAAG,yBAAyB,CAAC,UAAU,CAAC,IAAI,OAAO,IAAI,SAAS,EAAE,CAAC;AAC5E,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { Job } from '../../types/job.js';
|
|
2
|
+
import type { QualifiedScanItemRow } from '../db/repositories/scanItemsRepo.js';
|
|
3
|
+
export interface JsonExportSummary {
|
|
4
|
+
outputPath: string;
|
|
5
|
+
rowCount: number;
|
|
6
|
+
}
|
|
7
|
+
export declare class JsonResultsExporter {
|
|
8
|
+
private readonly resultsDir;
|
|
9
|
+
exportJobResults(job: Job, qualifiedRows: QualifiedScanItemRow[], exportedAt?: Date): JsonExportSummary;
|
|
10
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import fs from 'node:fs';
|
|
2
|
+
import path from 'node:path';
|
|
3
|
+
import { getAppPaths } from '../../utils/paths.js';
|
|
4
|
+
import { createExportFileName } from './fileNaming.js';
|
|
5
|
+
export class JsonResultsExporter {
|
|
6
|
+
resultsDir = getAppPaths().resultsDir;
|
|
7
|
+
exportJobResults(job, qualifiedRows, exportedAt = new Date()) {
|
|
8
|
+
const outputPath = path.join(this.resultsDir, createExportFileName(job.slug, 'json', exportedAt));
|
|
9
|
+
fs.writeFileSync(outputPath, `${JSON.stringify(qualifiedRows, null, 2)}\n`, 'utf8');
|
|
10
|
+
return {
|
|
11
|
+
outputPath,
|
|
12
|
+
rowCount: qualifiedRows.length
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=jsonResults.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jsonResults.js","sourceRoot":"","sources":["../../../../src/services/export/jsonResults.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAG7B,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAOvD,MAAM,OAAO,mBAAmB;IACb,UAAU,GAAG,WAAW,EAAE,CAAC,UAAU,CAAC;IAEvD,gBAAgB,CAAC,GAAQ,EAAE,aAAqC,EAAE,UAAU,GAAG,IAAI,IAAI,EAAE;QACvF,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,oBAAoB,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC;QAClG,EAAE,CAAC,aAAa,CAAC,UAAU,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAEpF,OAAO;YACL,UAAU;YACV,QAAQ,EAAE,aAAa,CAAC,MAAM;SAC/B,CAAC;IACJ,CAAC;CACF"}
|
|
@@ -16,6 +16,37 @@ const qualifySchema = z.object({
|
|
|
16
16
|
qualified: z.boolean(),
|
|
17
17
|
reason: z.string().min(1).max(80)
|
|
18
18
|
});
|
|
19
|
+
function toAlphaLabel(index) {
|
|
20
|
+
const alphabet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
|
|
21
|
+
let value = index;
|
|
22
|
+
let label = '';
|
|
23
|
+
do {
|
|
24
|
+
label = `${alphabet[value % 26]}${label}`;
|
|
25
|
+
value = Math.floor(value / 26) - 1;
|
|
26
|
+
} while (value >= 0);
|
|
27
|
+
return label;
|
|
28
|
+
}
|
|
29
|
+
function buildAnonymizedThreadLines(thread, targetAuthor) {
|
|
30
|
+
const authorLabels = new Map();
|
|
31
|
+
let nextLabelIndex = 0;
|
|
32
|
+
return thread.map((comment) => {
|
|
33
|
+
const author = comment.author || '[deleted]';
|
|
34
|
+
let displayAuthor = author;
|
|
35
|
+
if (author !== targetAuthor) {
|
|
36
|
+
const existingLabel = authorLabels.get(author);
|
|
37
|
+
if (existingLabel) {
|
|
38
|
+
displayAuthor = existingLabel;
|
|
39
|
+
}
|
|
40
|
+
else {
|
|
41
|
+
const generatedLabel = `User ${toAlphaLabel(nextLabelIndex)}`;
|
|
42
|
+
nextLabelIndex += 1;
|
|
43
|
+
authorLabels.set(author, generatedLabel);
|
|
44
|
+
displayAuthor = generatedLabel;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
return `- (${displayAuthor}) ${comment.body}`;
|
|
48
|
+
});
|
|
49
|
+
}
|
|
19
50
|
const QUALIFICATION_TOOL_NAME = 'submit_qualification';
|
|
20
51
|
const QUALIFICATION_TOOL = {
|
|
21
52
|
type: 'function',
|
|
@@ -215,17 +246,17 @@ export class OpenRouterClient {
|
|
|
215
246
|
return this.runQualification(input, userMessage);
|
|
216
247
|
}
|
|
217
248
|
async qualifyCommentThread(input) {
|
|
218
|
-
const threadText = input.thread
|
|
219
|
-
.map((comment) => `${comment.author}: ${comment.body}`)
|
|
220
|
-
.join('\n');
|
|
249
|
+
const threadText = buildAnonymizedThreadLines(input.thread, input.targetAuthor).join('\n');
|
|
221
250
|
const userMessage = [
|
|
222
251
|
`Post title: ${input.postTitle}`,
|
|
223
252
|
'',
|
|
253
|
+
`Post body: ${input.postBody}`,
|
|
254
|
+
'',
|
|
224
255
|
'Comment thread (chronological):',
|
|
225
256
|
threadText,
|
|
226
257
|
'',
|
|
227
|
-
`Important:
|
|
228
|
-
'
|
|
258
|
+
`Important: QUALIFY ONLY the final comment line authored by ${input.targetAuthor}.`,
|
|
259
|
+
'Treat all earlier lines as context only and do not qualify them.'
|
|
229
260
|
].join('\n');
|
|
230
261
|
return this.runQualification(input, userMessage);
|
|
231
262
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../../../src/services/openrouter/client.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../../../src/services/openrouter/client.ts"],"names":[],"mappings":"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"}
|
|
@@ -308,6 +308,7 @@ export class JobRunner {
|
|
|
308
308
|
modelSettings,
|
|
309
309
|
qualificationPrompt: job.qualificationPrompt,
|
|
310
310
|
postTitle: post.title,
|
|
311
|
+
postBody: post.body,
|
|
311
312
|
targetAuthor: author,
|
|
312
313
|
thread
|
|
313
314
|
});
|
|
@@ -334,7 +335,15 @@ export class JobRunner {
|
|
|
334
335
|
promptTokens: result.promptTokens,
|
|
335
336
|
completionTokens: result.completionTokens,
|
|
336
337
|
estimatedCostUsd: this.estimateCost(result.promptTokens, result.completionTokens),
|
|
337
|
-
qualificationReason: result.reason
|
|
338
|
+
qualificationReason: result.reason,
|
|
339
|
+
commentThreadNodes: thread.map((threadComment, index) => ({
|
|
340
|
+
redditCommentId: threadComment.id,
|
|
341
|
+
parentRedditCommentId: index === 0 ? null : thread[index - 1]?.id ?? null,
|
|
342
|
+
author: threadComment.author,
|
|
343
|
+
body: threadComment.body,
|
|
344
|
+
depth: index,
|
|
345
|
+
isTarget: index === thread.length - 1
|
|
346
|
+
}))
|
|
338
347
|
});
|
|
339
348
|
runStats.itemsNew += 1;
|
|
340
349
|
if (result.qualified) {
|