@logsesh/core 0.1.1

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 (133) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +69 -0
  3. package/dist/adapters/claude-code.d.ts +3 -0
  4. package/dist/adapters/claude-code.d.ts.map +1 -0
  5. package/dist/adapters/claude-code.js +307 -0
  6. package/dist/adapters/claude-code.js.map +1 -0
  7. package/dist/adapters/codex-schemas.d.ts +59 -0
  8. package/dist/adapters/codex-schemas.d.ts.map +1 -0
  9. package/dist/adapters/codex-schemas.js +70 -0
  10. package/dist/adapters/codex-schemas.js.map +1 -0
  11. package/dist/adapters/codex.d.ts +3 -0
  12. package/dist/adapters/codex.d.ts.map +1 -0
  13. package/dist/adapters/codex.js +293 -0
  14. package/dist/adapters/codex.js.map +1 -0
  15. package/dist/adapters/gemini.d.ts +3 -0
  16. package/dist/adapters/gemini.d.ts.map +1 -0
  17. package/dist/adapters/gemini.js +193 -0
  18. package/dist/adapters/gemini.js.map +1 -0
  19. package/dist/adapters/index.d.ts +14 -0
  20. package/dist/adapters/index.d.ts.map +1 -0
  21. package/dist/adapters/index.js +64 -0
  22. package/dist/adapters/index.js.map +1 -0
  23. package/dist/discovery.d.ts +20 -0
  24. package/dist/discovery.d.ts.map +1 -0
  25. package/dist/discovery.js +115 -0
  26. package/dist/discovery.js.map +1 -0
  27. package/dist/doctor.d.ts +32 -0
  28. package/dist/doctor.d.ts.map +1 -0
  29. package/dist/doctor.js +68 -0
  30. package/dist/doctor.js.map +1 -0
  31. package/dist/export-safety.d.ts +6 -0
  32. package/dist/export-safety.d.ts.map +1 -0
  33. package/dist/export-safety.js +36 -0
  34. package/dist/export-safety.js.map +1 -0
  35. package/dist/exporters/csv.d.ts +4 -0
  36. package/dist/exporters/csv.d.ts.map +1 -0
  37. package/dist/exporters/csv.js +38 -0
  38. package/dist/exporters/csv.js.map +1 -0
  39. package/dist/exporters/json.d.ts +4 -0
  40. package/dist/exporters/json.d.ts.map +1 -0
  41. package/dist/exporters/json.js +14 -0
  42. package/dist/exporters/json.js.map +1 -0
  43. package/dist/exporters/jsonl.d.ts +4 -0
  44. package/dist/exporters/jsonl.d.ts.map +1 -0
  45. package/dist/exporters/jsonl.js +13 -0
  46. package/dist/exporters/jsonl.js.map +1 -0
  47. package/dist/exporters/markdown.d.ts +4 -0
  48. package/dist/exporters/markdown.d.ts.map +1 -0
  49. package/dist/exporters/markdown.js +29 -0
  50. package/dist/exporters/markdown.js.map +1 -0
  51. package/dist/exporters/stream.d.ts +13 -0
  52. package/dist/exporters/stream.d.ts.map +1 -0
  53. package/dist/exporters/stream.js +33 -0
  54. package/dist/exporters/stream.js.map +1 -0
  55. package/dist/filters.d.ts +3 -0
  56. package/dist/filters.d.ts.map +1 -0
  57. package/dist/filters.js +38 -0
  58. package/dist/filters.js.map +1 -0
  59. package/dist/fs-walk.d.ts +7 -0
  60. package/dist/fs-walk.d.ts.map +1 -0
  61. package/dist/fs-walk.js +64 -0
  62. package/dist/fs-walk.js.map +1 -0
  63. package/dist/index.d.ts +27 -0
  64. package/dist/index.d.ts.map +1 -0
  65. package/dist/index.js +23 -0
  66. package/dist/index.js.map +1 -0
  67. package/dist/infer-tool.d.ts +8 -0
  68. package/dist/infer-tool.d.ts.map +1 -0
  69. package/dist/infer-tool.js +85 -0
  70. package/dist/infer-tool.js.map +1 -0
  71. package/dist/model-resolution.d.ts +13 -0
  72. package/dist/model-resolution.d.ts.map +1 -0
  73. package/dist/model-resolution.js +57 -0
  74. package/dist/model-resolution.js.map +1 -0
  75. package/dist/pipeline.d.ts +9 -0
  76. package/dist/pipeline.d.ts.map +1 -0
  77. package/dist/pipeline.js +152 -0
  78. package/dist/pipeline.js.map +1 -0
  79. package/dist/pricing.d.ts +8 -0
  80. package/dist/pricing.d.ts.map +1 -0
  81. package/dist/pricing.js +139 -0
  82. package/dist/pricing.js.map +1 -0
  83. package/dist/query.d.ts +15 -0
  84. package/dist/query.d.ts.map +1 -0
  85. package/dist/query.js +63 -0
  86. package/dist/query.js.map +1 -0
  87. package/dist/redact.d.ts +9 -0
  88. package/dist/redact.d.ts.map +1 -0
  89. package/dist/redact.js +57 -0
  90. package/dist/redact.js.map +1 -0
  91. package/dist/sanitize.d.ts +15 -0
  92. package/dist/sanitize.d.ts.map +1 -0
  93. package/dist/sanitize.js +72 -0
  94. package/dist/sanitize.js.map +1 -0
  95. package/dist/schemas.d.ts +701 -0
  96. package/dist/schemas.d.ts.map +1 -0
  97. package/dist/schemas.js +266 -0
  98. package/dist/schemas.js.map +1 -0
  99. package/dist/search.d.ts +11 -0
  100. package/dist/search.d.ts.map +1 -0
  101. package/dist/search.js +87 -0
  102. package/dist/search.js.map +1 -0
  103. package/dist/session-builder.d.ts +23 -0
  104. package/dist/session-builder.d.ts.map +1 -0
  105. package/dist/session-builder.js +296 -0
  106. package/dist/session-builder.js.map +1 -0
  107. package/dist/stats.d.ts +22 -0
  108. package/dist/stats.d.ts.map +1 -0
  109. package/dist/stats.js +82 -0
  110. package/dist/stats.js.map +1 -0
  111. package/dist/types.d.ts +292 -0
  112. package/dist/types.d.ts.map +1 -0
  113. package/dist/types.js +2 -0
  114. package/dist/types.js.map +1 -0
  115. package/dist/util.d.ts +26 -0
  116. package/dist/util.d.ts.map +1 -0
  117. package/dist/util.js +70 -0
  118. package/dist/util.js.map +1 -0
  119. package/dist/warnings.d.ts +13 -0
  120. package/dist/warnings.d.ts.map +1 -0
  121. package/dist/warnings.js +38 -0
  122. package/dist/warnings.js.map +1 -0
  123. package/package.json +62 -0
  124. package/pricing/models.json +600 -0
  125. package/schemas/debug-envelope.json +494 -0
  126. package/schemas/doctor-envelope.json +234 -0
  127. package/schemas/json-export-envelope.json +79 -0
  128. package/schemas/jsonl-record.json +68 -0
  129. package/schemas/list-envelope.json +217 -0
  130. package/schemas/public-session.json +404 -0
  131. package/schemas/search-envelope.json +108 -0
  132. package/schemas/session.json +428 -0
  133. package/schemas/stats-envelope.json +203 -0
@@ -0,0 +1,292 @@
1
+ export type ToolName = "claude-code" | "codex" | "gemini";
2
+ export type ContentBlock = {
3
+ kind: "text";
4
+ text: string;
5
+ } | {
6
+ kind: "thinking";
7
+ text: string;
8
+ } | {
9
+ kind: "image";
10
+ mediaType?: string;
11
+ bytes?: number;
12
+ note?: string;
13
+ } | {
14
+ kind: "tool_use";
15
+ id: string;
16
+ name: string;
17
+ input?: unknown;
18
+ } | {
19
+ kind: "tool_result";
20
+ toolUseId: string;
21
+ output?: unknown;
22
+ status?: "success" | "error";
23
+ };
24
+ export interface ToolCall {
25
+ id: string;
26
+ name: string;
27
+ input?: unknown;
28
+ output?: unknown;
29
+ status?: "success" | "error";
30
+ }
31
+ export interface Turn {
32
+ id: string;
33
+ index: number;
34
+ timestamp?: string;
35
+ role: "user" | "assistant" | "tool";
36
+ content: ContentBlock[];
37
+ toolCalls?: ToolCall[];
38
+ }
39
+ export interface Usage {
40
+ inputTokens?: number;
41
+ outputTokens?: number;
42
+ cacheReadTokens?: number;
43
+ cacheWriteTokens?: number;
44
+ reasoningTokens?: number;
45
+ totalTokens?: number;
46
+ }
47
+ export interface Estimate {
48
+ costUsd: number | null;
49
+ pricingVersion: string;
50
+ pricingAsOf: string;
51
+ pricingSourceUrl?: string;
52
+ model?: string;
53
+ pricingConfidence?: "exact" | "historical" | "fallback" | "unknown";
54
+ pricingProvenance?: PricingProvenance;
55
+ includesCacheTokens: boolean;
56
+ warnings?: string[];
57
+ }
58
+ export interface PricingProvenance {
59
+ provider: string;
60
+ model: string;
61
+ sourceUrl: string;
62
+ verifiedAt: string;
63
+ effectiveFrom?: string;
64
+ status?: "current" | "historical" | "retired";
65
+ availability?: "available" | "restricted" | "retired";
66
+ }
67
+ export interface Warning {
68
+ code: string;
69
+ message: string;
70
+ severity: "info" | "warn" | "error";
71
+ scope: "discovery" | "parse" | "export" | "package" | "pricing";
72
+ sourcePath?: string;
73
+ sessionId?: string;
74
+ line?: number;
75
+ cause?: string;
76
+ }
77
+ export interface Source {
78
+ tool: ToolName;
79
+ adapterVersion: string;
80
+ logFormatVersion?: string;
81
+ sourcePath: string;
82
+ }
83
+ export interface Session {
84
+ schemaVersion: "logsesh.session.v1";
85
+ id: string;
86
+ source: Source;
87
+ tool: ToolName;
88
+ startedAt?: string;
89
+ endedAt?: string;
90
+ projectPath?: string;
91
+ model?: string;
92
+ usage?: Usage;
93
+ costUsd: number | null;
94
+ estimate?: Estimate;
95
+ turns: Turn[];
96
+ warnings?: Warning[];
97
+ }
98
+ export interface JsonExportEnvelope<T, W = PublicWarning> {
99
+ format: "logsesh.export.v1";
100
+ generatedAt: string;
101
+ granularity: "session" | "turn";
102
+ records: T[];
103
+ warnings?: W[];
104
+ }
105
+ export interface JsonlRecord<T, W = PublicWarning> {
106
+ format: "logsesh.jsonl.v1";
107
+ generatedAt: string;
108
+ record: T;
109
+ warnings?: W[];
110
+ }
111
+ export type PublicWarning = Omit<Warning, "sourcePath">;
112
+ export type PublicContentBlock = Exclude<ContentBlock, {
113
+ kind: "thinking";
114
+ }>;
115
+ export type PublicTurn = Omit<Turn, "content"> & {
116
+ content: PublicContentBlock[];
117
+ };
118
+ export type PublicSession = Omit<Session, "turns" | "source" | "warnings"> & {
119
+ turns: PublicTurn[];
120
+ source: Omit<Source, "sourcePath">;
121
+ warnings?: PublicWarning[];
122
+ };
123
+ type WithReasoning<S> = Omit<S, "turns"> & {
124
+ turns: Turn[];
125
+ };
126
+ type WithRawPaths<S> = Omit<S, "source" | "warnings"> & {
127
+ source: Source;
128
+ warnings?: Warning[];
129
+ };
130
+ export type ReasoningSession = WithReasoning<PublicSession>;
131
+ export type RawPathPublicSession = WithRawPaths<PublicSession>;
132
+ export type RawPathReasoningSession = WithRawPaths<ReasoningSession>;
133
+ export type ExportSession = PublicSession | ReasoningSession | RawPathPublicSession | RawPathReasoningSession;
134
+ export type ExportTurn = ExportSession["turns"][number];
135
+ export interface SessionSummary {
136
+ id: string;
137
+ tool: ToolName;
138
+ startedAt?: string;
139
+ endedAt?: string;
140
+ projectPath?: string;
141
+ turnCount: number;
142
+ totalTokens?: number;
143
+ costUsd: number | null;
144
+ estimate?: Estimate;
145
+ sourcePath: string;
146
+ }
147
+ export interface SearchMatch {
148
+ sessionId: string;
149
+ tool: ToolName;
150
+ projectPath?: string;
151
+ timestamp?: string;
152
+ snippets: string[];
153
+ totalHits: number;
154
+ }
155
+ export interface StatsReport {
156
+ sessionCount: number;
157
+ turnCount: number;
158
+ totalTokens: number;
159
+ loggedCostUsd: number | null;
160
+ loggedSessionCount: number;
161
+ estimatedCostUsd: number | null;
162
+ estimatedSessionCount: number;
163
+ unpricedSessionCount: number;
164
+ unpricedTokens: number;
165
+ byTool: Record<string, {
166
+ sessions: number;
167
+ turns: number;
168
+ tokens: number;
169
+ }>;
170
+ byProject: Record<string, {
171
+ sessions: number;
172
+ turns: number;
173
+ tokens: number;
174
+ }>;
175
+ mostActiveDays: Array<{
176
+ date: string;
177
+ sessions: number;
178
+ turns: number;
179
+ }>;
180
+ }
181
+ export interface ListEnvelope {
182
+ format: "logsesh.list.v1";
183
+ generatedAt: string;
184
+ sessions: SessionSummary[];
185
+ warnings?: PublicWarning[];
186
+ }
187
+ export interface SearchEnvelope {
188
+ format: "logsesh.search.v1";
189
+ generatedAt: string;
190
+ matches: SearchMatch[];
191
+ warnings?: PublicWarning[];
192
+ }
193
+ export interface StatsEnvelope {
194
+ format: "logsesh.stats.v1";
195
+ generatedAt: string;
196
+ stats: StatsReport;
197
+ warnings?: PublicWarning[];
198
+ }
199
+ export interface DebugEnvelope {
200
+ format: "logsesh.debug.v1";
201
+ generatedAt: string;
202
+ session: Session;
203
+ warnings?: PublicWarning[];
204
+ }
205
+ export interface SessionFile {
206
+ path: string;
207
+ tool: ToolName;
208
+ }
209
+ export interface ParseOptions {
210
+ maxFileBytes?: number;
211
+ maxTurnChars?: number;
212
+ maxToolOutputChars?: number;
213
+ }
214
+ export interface DiscoverOptions {
215
+ toolFilter?: ToolName[];
216
+ projectFilter?: string;
217
+ since?: Date;
218
+ until?: Date;
219
+ roots?: Partial<Record<ToolName, string>>;
220
+ }
221
+ export interface PipelineOptions extends DiscoverOptions, ParseOptions {
222
+ query?: string;
223
+ queryTextFilter?: boolean;
224
+ estimateCost?: boolean;
225
+ maxParseConcurrency?: number;
226
+ }
227
+ export interface SanitizeOptions {
228
+ includeReasoning?: boolean;
229
+ rawPaths?: boolean;
230
+ }
231
+ export interface Adapter {
232
+ tool: ToolName;
233
+ adapterVersion: string;
234
+ capabilities: AdapterCapabilities;
235
+ detect(): Promise<boolean>;
236
+ discover(opts: DiscoverOptions): AsyncIterable<SessionFile>;
237
+ parse(file: SessionFile, opts: ParseOptions): AsyncIterable<Session>;
238
+ }
239
+ export type AdapterCapabilityLevel = "full" | "partial" | "none" | "experimental";
240
+ export interface AdapterCapabilities {
241
+ discovery: AdapterCapabilityLevel;
242
+ transcript: AdapterCapabilityLevel;
243
+ toolCalls: AdapterCapabilityLevel;
244
+ usage: AdapterCapabilityLevel;
245
+ model: AdapterCapabilityLevel;
246
+ reasoning: AdapterCapabilityLevel;
247
+ notes?: string[];
248
+ }
249
+ export type InputContentBlock = {
250
+ kind: "text";
251
+ text: string;
252
+ } | {
253
+ kind: "thinking";
254
+ text: string;
255
+ } | {
256
+ kind: "image";
257
+ mediaType?: string;
258
+ bytes?: number;
259
+ note?: string;
260
+ } | {
261
+ kind: "tool_use";
262
+ id: string;
263
+ name: string;
264
+ input?: unknown;
265
+ };
266
+ export interface AddRecordInput {
267
+ fragmentGroupId?: string;
268
+ sourceLine: number;
269
+ role: "user" | "assistant";
270
+ blocks: InputContentBlock[];
271
+ usage?: Usage;
272
+ timestamp?: string;
273
+ }
274
+ export interface AddToolResultInput {
275
+ toolUseId: string;
276
+ sourceLine: number;
277
+ output?: unknown;
278
+ status?: "success" | "error";
279
+ }
280
+ export interface SessionBuilderOptions {
281
+ tool: ToolName;
282
+ adapterVersion: string;
283
+ sourcePath: string;
284
+ sessionId: string;
285
+ projectPath?: string;
286
+ model?: string;
287
+ logFormatVersion?: string;
288
+ maxTurnChars?: number;
289
+ maxToolOutputChars?: number;
290
+ }
291
+ export {};
292
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/dist/types.js ADDED
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
package/dist/util.d.ts ADDED
@@ -0,0 +1,26 @@
1
+ import type { z } from "zod";
2
+ export declare function readJsonlLines(filePath: string, onLine: (line: string, lineNumber: number) => void, opts?: {
3
+ maxFileBytes?: number;
4
+ }): Promise<{
5
+ skipped: boolean;
6
+ size: number;
7
+ }>;
8
+ export declare function parseJsonLine(line: string, lineNumber: number, sourcePath: string): {
9
+ ok: true;
10
+ value: unknown;
11
+ } | {
12
+ ok: false;
13
+ error: string;
14
+ };
15
+ export declare function parseJsonLineWithSchema<S extends z.ZodType>(line: string, lineNumber: number, sourcePath: string, schema: S): {
16
+ ok: true;
17
+ value: z.infer<S>;
18
+ } | {
19
+ ok: false;
20
+ error: string;
21
+ };
22
+ export declare function decodeClaudeProjectSlug(slug: string): string;
23
+ export declare function anonymizePath(path: string, home?: string): string;
24
+ export declare function anonymizePathsInText(text: string, home?: string): string;
25
+ export declare function sessionFileNameId(filePath: string): string;
26
+ //# sourceMappingURL=util.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAE7B,wBAAsB,cAAc,CAClC,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,KAAK,IAAI,EAClD,IAAI,CAAC,EAAE;IAAE,YAAY,CAAC,EAAE,MAAM,CAAA;CAAE,GAC/B,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,CAiB7C;AAED,wBAAgB,aAAa,CAC3B,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,GACjB;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAQ7D;AAED,wBAAgB,uBAAuB,CAAC,CAAC,SAAS,CAAC,CAAC,OAAO,EACzD,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,CAAC,GACR;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAWhE;AAED,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAO5D;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,SAAyB,GAAG,MAAM,CAKjF;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,SAAyB,GAAG,MAAM,CAMxF;AAED,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAG1D"}
package/dist/util.js ADDED
@@ -0,0 +1,70 @@
1
+ import { createReadStream } from "node:fs";
2
+ import { stat } from "node:fs/promises";
3
+ import { createInterface } from "node:readline";
4
+ export async function readJsonlLines(filePath, onLine, opts) {
5
+ const fileStat = await stat(filePath);
6
+ const maxBytes = opts?.maxFileBytes ?? 200 * 1024 * 1024;
7
+ if (fileStat.size > maxBytes) {
8
+ return { skipped: true, size: fileStat.size };
9
+ }
10
+ const stream = createReadStream(filePath, { encoding: "utf8" });
11
+ const rl = createInterface({ input: stream, crlfDelay: Infinity });
12
+ let lineNumber = 0;
13
+ for await (const line of rl) {
14
+ lineNumber++;
15
+ if (line.trim())
16
+ onLine(line, lineNumber);
17
+ }
18
+ return { skipped: false, size: fileStat.size };
19
+ }
20
+ export function parseJsonLine(line, lineNumber, sourcePath) {
21
+ try {
22
+ const value = JSON.parse(line);
23
+ return { ok: true, value };
24
+ }
25
+ catch (err) {
26
+ const cause = err instanceof Error ? err.message : String(err);
27
+ return { ok: false, error: `Line ${lineNumber} in ${sourcePath}: ${cause}` };
28
+ }
29
+ }
30
+ export function parseJsonLineWithSchema(line, lineNumber, sourcePath, schema) {
31
+ const parsed = parseJsonLine(line, lineNumber, sourcePath);
32
+ if (!parsed.ok)
33
+ return parsed;
34
+ const validated = schema.safeParse(parsed.value);
35
+ if (!validated.success) {
36
+ return {
37
+ ok: false,
38
+ error: `Line ${lineNumber} in ${sourcePath}: invalid JSON shape`,
39
+ };
40
+ }
41
+ return { ok: true, value: validated.data };
42
+ }
43
+ export function decodeClaudeProjectSlug(slug) {
44
+ if (!slug.startsWith("-"))
45
+ return slug;
46
+ const parts = slug.slice(1).split("-");
47
+ if (parts.length === 0)
48
+ return slug;
49
+ const drive = parts[0];
50
+ const rest = parts.slice(1).join("/");
51
+ return `/${drive}/${rest}`;
52
+ }
53
+ export function anonymizePath(path, home = process.env.HOME ?? "") {
54
+ if (home && path.startsWith(home)) {
55
+ return path.replace(home, "~");
56
+ }
57
+ return path.replace(/^\/Users\/[^/]+/, "~").replace(/^\/home\/[^/]+/, "~");
58
+ }
59
+ export function anonymizePathsInText(text, home = process.env.HOME ?? "") {
60
+ let result = text;
61
+ if (home) {
62
+ result = result.replaceAll(home, "~");
63
+ }
64
+ return result.replace(/\/Users\/[^/\s'"]+/g, "~").replace(/\/home\/[^/\s'"]+/g, "~");
65
+ }
66
+ export function sessionFileNameId(filePath) {
67
+ const base = filePath.split("/").pop() ?? filePath;
68
+ return base.replace(/\.jsonl$/, "");
69
+ }
70
+ //# sourceMappingURL=util.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"util.js","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import type { Warning } from "./types.js";
2
+ export interface SummarizedWarning {
3
+ code: string;
4
+ message: string;
5
+ severity: Warning["severity"];
6
+ scope: Warning["scope"];
7
+ count: number;
8
+ sourcePath?: string;
9
+ sessionId?: string;
10
+ }
11
+ export declare function summarizeWarnings(warnings: Warning[]): SummarizedWarning[];
12
+ export declare function mergeWarnings(into: Warning[], from: Warning[]): void;
13
+ //# sourceMappingURL=warnings.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"warnings.d.ts","sourceRoot":"","sources":["../src/warnings.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAY1C,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;IAC9B,KAAK,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,iBAAiB,EAAE,CAoB1E;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAQpE"}
@@ -0,0 +1,38 @@
1
+ function warningKey(w) {
2
+ return [w.code, w.message, w.scope, w.line ?? "", w.sessionId ?? "", w.sourcePath ?? ""].join("|");
3
+ }
4
+ function summarizeKey(w) {
5
+ return [w.code, w.message, w.scope, w.sessionId ?? "", w.sourcePath ?? ""].join("|");
6
+ }
7
+ export function summarizeWarnings(warnings) {
8
+ const groups = new Map();
9
+ for (const warning of warnings) {
10
+ const key = summarizeKey(warning);
11
+ const existing = groups.get(key);
12
+ if (existing) {
13
+ existing.count++;
14
+ continue;
15
+ }
16
+ groups.set(key, {
17
+ code: warning.code,
18
+ message: warning.message,
19
+ severity: warning.severity,
20
+ scope: warning.scope,
21
+ count: 1,
22
+ sourcePath: warning.sourcePath,
23
+ sessionId: warning.sessionId,
24
+ });
25
+ }
26
+ return [...groups.values()];
27
+ }
28
+ export function mergeWarnings(into, from) {
29
+ const seen = new Set(into.map(warningKey));
30
+ for (const w of from) {
31
+ const key = warningKey(w);
32
+ if (seen.has(key))
33
+ continue;
34
+ seen.add(key);
35
+ into.push(w);
36
+ }
37
+ }
38
+ //# sourceMappingURL=warnings.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"warnings.js","sourceRoot":"","sources":["../src/warnings.ts"],"names":[],"mappings":"AAEA,SAAS,UAAU,CAAC,CAAU;IAC5B,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,IAAI,EAAE,EAAE,CAAC,CAAC,SAAS,IAAI,EAAE,EAAE,CAAC,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,IAAI,CAC3F,GAAG,CACJ,CAAC;AACJ,CAAC;AAED,SAAS,YAAY,CAAC,CAAU;IAC9B,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,SAAS,IAAI,EAAE,EAAE,CAAC,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACvF,CAAC;AAYD,MAAM,UAAU,iBAAiB,CAAC,QAAmB;IACnD,MAAM,MAAM,GAAG,IAAI,GAAG,EAA6B,CAAC;IACpD,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,MAAM,GAAG,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;QAClC,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACjC,IAAI,QAAQ,EAAE,CAAC;YACb,QAAQ,CAAC,KAAK,EAAE,CAAC;YACjB,SAAS;QACX,CAAC;QACD,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE;YACd,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,KAAK,EAAE,CAAC;YACR,UAAU,EAAE,OAAO,CAAC,UAAU;YAC9B,SAAS,EAAE,OAAO,CAAC,SAAS;SAC7B,CAAC,CAAC;IACL,CAAC;IACD,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;AAC9B,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,IAAe,EAAE,IAAe;IAC5D,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC;IAC3C,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;QACrB,MAAM,GAAG,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;QAC1B,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,SAAS;QAC5B,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACd,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACf,CAAC;AACH,CAAC"}
package/package.json ADDED
@@ -0,0 +1,62 @@
1
+ {
2
+ "name": "@logsesh/core",
3
+ "version": "0.1.1",
4
+ "description": "Parse and normalize AI coding agent session logs",
5
+ "type": "module",
6
+ "license": "MIT",
7
+ "author": "Achal",
8
+ "repository": {
9
+ "type": "git",
10
+ "url": "git+https://github.com/achalbajpai/logsesh.git",
11
+ "directory": "packages/core"
12
+ },
13
+ "homepage": "https://github.com/achalbajpai/logsesh/tree/main/packages/core#readme",
14
+ "bugs": {
15
+ "url": "https://github.com/achalbajpai/logsesh/issues"
16
+ },
17
+ "keywords": [
18
+ "claude-code",
19
+ "codex",
20
+ "gemini",
21
+ "ai",
22
+ "session-logs",
23
+ "agent-logs",
24
+ "jsonl"
25
+ ],
26
+ "publishConfig": {
27
+ "access": "public"
28
+ },
29
+ "engines": {
30
+ "node": ">=22"
31
+ },
32
+ "exports": {
33
+ ".": {
34
+ "types": "./dist/index.d.ts",
35
+ "import": "./dist/index.js"
36
+ },
37
+ "./schemas/*": "./schemas/*",
38
+ "./pricing/*": "./pricing/*"
39
+ },
40
+ "files": [
41
+ "dist",
42
+ "schemas",
43
+ "pricing",
44
+ "LICENSE",
45
+ "README.md"
46
+ ],
47
+ "dependencies": {
48
+ "zod": "^4.4.3"
49
+ },
50
+ "devDependencies": {
51
+ "@types/node": "^22.15.0",
52
+ "tsdown": "^0.22.3",
53
+ "typescript-emit": "npm:typescript@5.7.3",
54
+ "typescript": "7.0.1-rc",
55
+ "vitest": "^4.1.9"
56
+ },
57
+ "scripts": {
58
+ "build": "tsdown && rm -f tsconfig.tsbuildinfo && node ./node_modules/typescript-emit/lib/tsc.js --emitDeclarationOnly -p tsconfig.json",
59
+ "test": "vitest run",
60
+ "typecheck": "tsc --noEmit"
61
+ }
62
+ }