@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 @@
1
+ {"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../src/schemas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAuExB,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAsCxB,CAAC;AA2CH,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAkB9B,CAAC;AAeH,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAK7B,CAAC;AAWH,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAK/B,CAAC;AAuBH,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAK9B,CAAC;AAEH,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAK9B,CAAC;AAEH,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAMnC,CAAC;AAEH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;iBAK5B,CAAC;AAYH,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBA4B/B,CAAC;AAEH,wBAAgB,WAAW,IAAI,MAAM,CAEpC"}
@@ -0,0 +1,266 @@
1
+ import { z } from "zod";
2
+ const toolNameSchema = z.enum(["claude-code", "codex", "gemini"]);
3
+ const contentBlockSchema = z.discriminatedUnion("kind", [
4
+ z.object({ kind: z.literal("text"), text: z.string() }),
5
+ z.object({ kind: z.literal("thinking"), text: z.string() }),
6
+ z.object({
7
+ kind: z.literal("image"),
8
+ mediaType: z.string().optional(),
9
+ bytes: z.number().optional(),
10
+ note: z.string().optional(),
11
+ }),
12
+ z.object({
13
+ kind: z.literal("tool_use"),
14
+ id: z.string(),
15
+ name: z.string(),
16
+ input: z.unknown().optional(),
17
+ }),
18
+ z.object({
19
+ kind: z.literal("tool_result"),
20
+ toolUseId: z.string(),
21
+ output: z.unknown().optional(),
22
+ status: z.enum(["success", "error"]).optional(),
23
+ }),
24
+ ]);
25
+ const warningSchema = z.object({
26
+ code: z.string(),
27
+ message: z.string(),
28
+ severity: z.enum(["info", "warn", "error"]),
29
+ scope: z.enum(["discovery", "parse", "export", "package", "pricing"]),
30
+ sourcePath: z.string().optional(),
31
+ sessionId: z.string().optional(),
32
+ line: z.number().optional(),
33
+ cause: z.string().optional(),
34
+ });
35
+ const publicWarningSchema = warningSchema.omit({ sourcePath: true });
36
+ const usageSchema = z.object({
37
+ inputTokens: z.number().optional(),
38
+ outputTokens: z.number().optional(),
39
+ cacheReadTokens: z.number().optional(),
40
+ cacheWriteTokens: z.number().optional(),
41
+ reasoningTokens: z.number().optional(),
42
+ totalTokens: z.number().optional(),
43
+ });
44
+ const estimateSchema = z.object({
45
+ costUsd: z.number().nullable(),
46
+ pricingVersion: z.string(),
47
+ pricingAsOf: z.string(),
48
+ pricingSourceUrl: z.string().optional(),
49
+ model: z.string().optional(),
50
+ pricingConfidence: z.enum(["exact", "historical", "fallback", "unknown"]).optional(),
51
+ pricingProvenance: z
52
+ .object({
53
+ provider: z.string(),
54
+ model: z.string(),
55
+ sourceUrl: z.string(),
56
+ verifiedAt: z.string(),
57
+ effectiveFrom: z.string().optional(),
58
+ status: z.enum(["current", "historical", "retired"]).optional(),
59
+ availability: z.enum(["available", "restricted", "retired"]).optional(),
60
+ })
61
+ .optional(),
62
+ includesCacheTokens: z.boolean(),
63
+ warnings: z.array(z.string()).optional(),
64
+ });
65
+ export const sessionSchema = z.object({
66
+ schemaVersion: z.literal("logsesh.session.v1"),
67
+ id: z.string(),
68
+ source: z.object({
69
+ tool: toolNameSchema,
70
+ adapterVersion: z.string(),
71
+ logFormatVersion: z.union([z.string(), z.literal("unknown")]).optional(),
72
+ sourcePath: z.string(),
73
+ }),
74
+ tool: toolNameSchema,
75
+ startedAt: z.string().optional(),
76
+ endedAt: z.string().optional(),
77
+ projectPath: z.string().optional(),
78
+ model: z.string().optional(),
79
+ usage: usageSchema.optional(),
80
+ costUsd: z.number().nullable(),
81
+ estimate: estimateSchema.optional(),
82
+ turns: z.array(z.object({
83
+ id: z.string(),
84
+ index: z.number(),
85
+ timestamp: z.string().optional(),
86
+ role: z.enum(["user", "assistant", "tool"]),
87
+ content: z.array(contentBlockSchema),
88
+ toolCalls: z
89
+ .array(z.object({
90
+ id: z.string(),
91
+ name: z.string(),
92
+ input: z.unknown().optional(),
93
+ output: z.unknown().optional(),
94
+ status: z.enum(["success", "error"]).optional(),
95
+ }))
96
+ .optional(),
97
+ })),
98
+ warnings: z.array(warningSchema).optional(),
99
+ });
100
+ const publicContentBlockSchema = z.discriminatedUnion("kind", [
101
+ z.object({ kind: z.literal("text"), text: z.string() }),
102
+ z.object({
103
+ kind: z.literal("image"),
104
+ mediaType: z.string().optional(),
105
+ bytes: z.number().optional(),
106
+ note: z.string().optional(),
107
+ }),
108
+ z.object({
109
+ kind: z.literal("tool_use"),
110
+ id: z.string(),
111
+ name: z.string(),
112
+ input: z.unknown().optional(),
113
+ }),
114
+ z.object({
115
+ kind: z.literal("tool_result"),
116
+ toolUseId: z.string(),
117
+ output: z.unknown().optional(),
118
+ status: z.enum(["success", "error"]).optional(),
119
+ }),
120
+ ]);
121
+ const publicTurnSchema = z.object({
122
+ id: z.string(),
123
+ index: z.number(),
124
+ timestamp: z.string().optional(),
125
+ role: z.enum(["user", "assistant", "tool"]),
126
+ content: z.array(publicContentBlockSchema),
127
+ toolCalls: z
128
+ .array(z.object({
129
+ id: z.string(),
130
+ name: z.string(),
131
+ input: z.unknown().optional(),
132
+ output: z.unknown().optional(),
133
+ status: z.enum(["success", "error"]).optional(),
134
+ }))
135
+ .optional(),
136
+ });
137
+ export const publicSessionSchema = z.object({
138
+ schemaVersion: z.literal("logsesh.session.v1"),
139
+ id: z.string(),
140
+ source: z.object({
141
+ tool: toolNameSchema,
142
+ adapterVersion: z.string(),
143
+ logFormatVersion: z.union([z.string(), z.literal("unknown")]).optional(),
144
+ }),
145
+ tool: toolNameSchema,
146
+ startedAt: z.string().optional(),
147
+ endedAt: z.string().optional(),
148
+ projectPath: z.string().optional(),
149
+ model: z.string().optional(),
150
+ usage: usageSchema.optional(),
151
+ costUsd: z.number().nullable(),
152
+ estimate: estimateSchema.optional(),
153
+ turns: z.array(publicTurnSchema),
154
+ warnings: z.array(publicWarningSchema).optional(),
155
+ });
156
+ const sessionSummarySchema = z.object({
157
+ id: z.string(),
158
+ tool: toolNameSchema,
159
+ startedAt: z.string().optional(),
160
+ endedAt: z.string().optional(),
161
+ projectPath: z.string().optional(),
162
+ turnCount: z.number(),
163
+ totalTokens: z.number().optional(),
164
+ costUsd: z.number().nullable(),
165
+ estimate: estimateSchema.optional(),
166
+ sourcePath: z.string(),
167
+ });
168
+ export const listEnvelopeSchema = z.object({
169
+ format: z.literal("logsesh.list.v1"),
170
+ generatedAt: z.string(),
171
+ sessions: z.array(sessionSummarySchema),
172
+ warnings: z.array(publicWarningSchema).optional(),
173
+ });
174
+ const searchMatchSchema = z.object({
175
+ sessionId: z.string(),
176
+ tool: toolNameSchema,
177
+ projectPath: z.string().optional(),
178
+ timestamp: z.string().optional(),
179
+ snippets: z.array(z.string()),
180
+ totalHits: z.number(),
181
+ });
182
+ export const searchEnvelopeSchema = z.object({
183
+ format: z.literal("logsesh.search.v1"),
184
+ generatedAt: z.string(),
185
+ matches: z.array(searchMatchSchema),
186
+ warnings: z.array(publicWarningSchema).optional(),
187
+ });
188
+ const statsReportSchema = z.object({
189
+ sessionCount: z.number(),
190
+ turnCount: z.number(),
191
+ totalTokens: z.number(),
192
+ loggedCostUsd: z.number().nullable(),
193
+ loggedSessionCount: z.number(),
194
+ estimatedCostUsd: z.number().nullable(),
195
+ estimatedSessionCount: z.number(),
196
+ unpricedSessionCount: z.number(),
197
+ unpricedTokens: z.number(),
198
+ byTool: z.record(z.string(), z.object({ sessions: z.number(), turns: z.number(), tokens: z.number() })),
199
+ byProject: z.record(z.string(), z.object({ sessions: z.number(), turns: z.number(), tokens: z.number() })),
200
+ mostActiveDays: z.array(z.object({ date: z.string(), sessions: z.number(), turns: z.number() })),
201
+ });
202
+ export const statsEnvelopeSchema = z.object({
203
+ format: z.literal("logsesh.stats.v1"),
204
+ generatedAt: z.string(),
205
+ stats: statsReportSchema,
206
+ warnings: z.array(publicWarningSchema).optional(),
207
+ });
208
+ export const debugEnvelopeSchema = z.object({
209
+ format: z.literal("logsesh.debug.v1"),
210
+ generatedAt: z.string(),
211
+ session: sessionSchema,
212
+ warnings: z.array(publicWarningSchema).optional(),
213
+ });
214
+ export const jsonExportEnvelopeSchema = z.object({
215
+ format: z.literal("logsesh.export.v1"),
216
+ generatedAt: z.string(),
217
+ granularity: z.enum(["session", "turn"]),
218
+ records: z.array(z.unknown()),
219
+ warnings: z.array(publicWarningSchema).optional(),
220
+ });
221
+ export const jsonlRecordSchema = z.object({
222
+ format: z.literal("logsesh.jsonl.v1"),
223
+ generatedAt: z.string(),
224
+ record: z.unknown(),
225
+ warnings: z.array(publicWarningSchema).optional(),
226
+ });
227
+ const adapterCapabilitiesSchema = z.object({
228
+ discovery: z.enum(["full", "partial", "none", "experimental"]),
229
+ transcript: z.enum(["full", "partial", "none", "experimental"]),
230
+ toolCalls: z.enum(["full", "partial", "none", "experimental"]),
231
+ usage: z.enum(["full", "partial", "none", "experimental"]),
232
+ model: z.enum(["full", "partial", "none", "experimental"]),
233
+ reasoning: z.enum(["full", "partial", "none", "experimental"]),
234
+ notes: z.array(z.string()).optional(),
235
+ });
236
+ export const doctorEnvelopeSchema = z.object({
237
+ format: z.literal("logsesh.doctor.v1"),
238
+ generatedAt: z.string(),
239
+ tools: z.array(z.object({
240
+ tool: toolNameSchema,
241
+ detected: z.boolean(),
242
+ root: z.string(),
243
+ rootAccessible: z.boolean(),
244
+ candidateFiles: z.number(),
245
+ candidateFilesCapped: z.boolean().optional(),
246
+ adapterVersion: z.string(),
247
+ capabilities: adapterCapabilitiesSchema,
248
+ permissionIssue: z.string().optional(),
249
+ })),
250
+ pricing: z.object({
251
+ version: z.string(),
252
+ asOf: z.string(),
253
+ sourceUrl: z.string(),
254
+ modelCount: z.number(),
255
+ }),
256
+ exportDefaults: z.object({
257
+ transcriptRedactDefault: z.boolean(),
258
+ summaryCsvRedactRequired: z.boolean(),
259
+ anonymizePathsDefault: z.boolean(),
260
+ }),
261
+ warnings: z.array(publicWarningSchema).optional(),
262
+ });
263
+ export function generatedAt() {
264
+ return new Date().toISOString();
265
+ }
266
+ //# sourceMappingURL=schemas.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schemas.js","sourceRoot":"","sources":["../src/schemas.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import type { SearchMatch, Session } from "./types.js";
2
+ export interface SearchOptions {
3
+ includeReasoning?: boolean;
4
+ includeToolOutput?: boolean;
5
+ maxSnippets?: number;
6
+ redact?: boolean;
7
+ redactPatterns?: RegExp[];
8
+ }
9
+ export declare function searchSession(session: Session, queryInput: string, opts?: SearchOptions): SearchMatch | null;
10
+ export declare function parseSearchQuery(input: string): import("./query.js").ParsedQuery;
11
+ //# sourceMappingURL=search.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../src/search.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,OAAO,EAAQ,MAAM,YAAY,CAAC;AAM7D,MAAM,WAAW,aAAa;IAC5B,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;CAC3B;AAoCD,wBAAgB,aAAa,CAC3B,OAAO,EAAE,OAAO,EAChB,UAAU,EAAE,MAAM,EAClB,IAAI,GAAE,aAAkB,GACvB,WAAW,GAAG,IAAI,CA4CpB;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,oCAE7C"}
package/dist/search.js ADDED
@@ -0,0 +1,87 @@
1
+ import { matchesSessionFilters } from "./discovery.js";
2
+ import { hasTextQuery, matchesQuery, parseQuery, textOnlyQuery } from "./query.js";
3
+ import { redactText } from "./redact.js";
4
+ import { anonymizePath } from "./util.js";
5
+ function turnSearchText(turn, opts) {
6
+ const parts = [];
7
+ for (const block of turn.content) {
8
+ if (block.kind === "text")
9
+ parts.push(block.text);
10
+ if (block.kind === "thinking" && opts.includeReasoning)
11
+ parts.push(block.text);
12
+ if (block.kind === "tool_result" && opts.includeToolOutput) {
13
+ parts.push(typeof block.output === "string" ? block.output : JSON.stringify(block.output ?? ""));
14
+ }
15
+ }
16
+ return parts.join("\n");
17
+ }
18
+ function snippetAround(text, needle, radius = 60) {
19
+ const idx = text.toLowerCase().indexOf(needle.toLowerCase());
20
+ if (idx < 0)
21
+ return text.slice(0, radius * 2);
22
+ const start = Math.max(0, idx - radius);
23
+ const end = Math.min(text.length, idx + needle.length + radius);
24
+ return (start > 0 ? "..." : "") + text.slice(start, end) + (end < text.length ? "..." : "");
25
+ }
26
+ function sessionPreviewSnippet(session, opts) {
27
+ for (const turn of session.turns) {
28
+ if (turn.role !== "user")
29
+ continue;
30
+ const text = turnSearchText(turn, { ...opts, includeReasoning: false });
31
+ if (!text.trim())
32
+ continue;
33
+ let snippet = text.length > 120 ? `${text.slice(0, 120)}...` : text;
34
+ if (opts.redact !== false)
35
+ snippet = redactText(snippet, opts.redactPatterns);
36
+ return snippet;
37
+ }
38
+ return "(session matched filters)";
39
+ }
40
+ export function searchSession(session, queryInput, opts = {}) {
41
+ const query = parseQuery(queryInput);
42
+ if (!matchesSessionFilters(session, query))
43
+ return null;
44
+ if (!hasTextQuery(query)) {
45
+ return {
46
+ sessionId: session.id,
47
+ tool: session.tool,
48
+ projectPath: session.projectPath ? anonymizePath(session.projectPath) : session.projectPath,
49
+ timestamp: session.startedAt,
50
+ snippets: [sessionPreviewSnippet(session, opts)],
51
+ totalHits: 1,
52
+ };
53
+ }
54
+ const textQuery = textOnlyQuery(query);
55
+ const maxSnippets = opts.maxSnippets ?? 3;
56
+ const snippets = [];
57
+ let totalHits = 0;
58
+ for (const turn of session.turns) {
59
+ if (turn.role !== "user" && turn.role !== "assistant" && !opts.includeToolOutput)
60
+ continue;
61
+ const text = turnSearchText(turn, opts);
62
+ if (!matchesQuery(text, textQuery))
63
+ continue;
64
+ totalHits++;
65
+ if (snippets.length < maxSnippets) {
66
+ const needle = textQuery.phrases[0] ?? textQuery.terms[0] ?? queryInput;
67
+ let snippet = snippetAround(text, needle);
68
+ if (opts.redact !== false)
69
+ snippet = redactText(snippet, opts.redactPatterns);
70
+ snippets.push(snippet);
71
+ }
72
+ }
73
+ if (totalHits === 0)
74
+ return null;
75
+ return {
76
+ sessionId: session.id,
77
+ tool: session.tool,
78
+ projectPath: session.projectPath ? anonymizePath(session.projectPath) : session.projectPath,
79
+ timestamp: session.startedAt,
80
+ snippets,
81
+ totalHits,
82
+ };
83
+ }
84
+ export function parseSearchQuery(input) {
85
+ return parseQuery(input);
86
+ }
87
+ //# sourceMappingURL=search.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search.js","sourceRoot":"","sources":["../src/search.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ import type { AddRecordInput, AddToolResultInput, Session, SessionBuilderOptions, Warning } from "./types.js";
2
+ export declare class SessionBuilder {
3
+ private readonly opts;
4
+ private readonly warnings;
5
+ private readonly fragments;
6
+ private readonly fragmentUsage;
7
+ private readonly pendingTurns;
8
+ private readonly toolCallsById;
9
+ private timestamps;
10
+ private turnCounter;
11
+ private finalizedSession;
12
+ constructor(opts: SessionBuilderOptions);
13
+ addWarning(warning: Warning): void;
14
+ addRecord(input: AddRecordInput): void;
15
+ addToolResult(input: AddToolResultInput): void;
16
+ finalize(): Session;
17
+ private computeSessionUsage;
18
+ private registerToolCalls;
19
+ private applyRegisteredToolOutputs;
20
+ private registerToolCallsFromBlocks;
21
+ private buildTurnFromBlocks;
22
+ }
23
+ //# sourceMappingURL=session-builder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-builder.d.ts","sourceRoot":"","sources":["../src/session-builder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,cAAc,EACd,kBAAkB,EAGlB,OAAO,EACP,qBAAqB,EAIrB,OAAO,EACR,MAAM,YAAY,CAAC;AA8GpB,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAwB;IAC7C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAiB;IAC1C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAsC;IAChE,OAAO,CAAC,QAAQ,CAAC,aAAa,CAA4B;IAC1D,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAqB;IAClD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAA+B;IAC7D,OAAO,CAAC,UAAU,CAAgB;IAClC,OAAO,CAAC,WAAW,CAAK;IACxB,OAAO,CAAC,gBAAgB,CAAwB;IAEhD,YAAY,IAAI,EAAE,qBAAqB,EAEtC;IAED,UAAU,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAEjC;IAED,SAAS,CAAC,KAAK,EAAE,cAAc,GAAG,IAAI,CA4BrC;IAED,aAAa,CAAC,KAAK,EAAE,kBAAkB,GAAG,IAAI,CA6C7C;IAED,QAAQ,IAAI,OAAO,CAkDlB;IAED,OAAO,CAAC,mBAAmB;IAM3B,OAAO,CAAC,iBAAiB;IAMzB,OAAO,CAAC,0BAA0B;IAWlC,OAAO,CAAC,2BAA2B;IASnC,OAAO,CAAC,mBAAmB;CA2C5B"}