skein-cli 0.1.0-alpha.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 (250) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +180 -0
  3. package/bin/skein.mjs +7 -0
  4. package/dist/adapters/aider/conv-reader.d.ts +7 -0
  5. package/dist/adapters/aider/conv-reader.js +203 -0
  6. package/dist/adapters/aider/conv-reader.js.map +1 -0
  7. package/dist/adapters/aider/index.d.ts +2 -0
  8. package/dist/adapters/aider/index.js +123 -0
  9. package/dist/adapters/aider/index.js.map +1 -0
  10. package/dist/adapters/base.d.ts +71 -0
  11. package/dist/adapters/base.js +38 -0
  12. package/dist/adapters/base.js.map +1 -0
  13. package/dist/adapters/claude-code/conv-reader.d.ts +2 -0
  14. package/dist/adapters/claude-code/conv-reader.js +155 -0
  15. package/dist/adapters/claude-code/conv-reader.js.map +1 -0
  16. package/dist/adapters/claude-code/index.d.ts +3 -0
  17. package/dist/adapters/claude-code/index.js +517 -0
  18. package/dist/adapters/claude-code/index.js.map +1 -0
  19. package/dist/adapters/claude-desktop/index.d.ts +2 -0
  20. package/dist/adapters/claude-desktop/index.js +95 -0
  21. package/dist/adapters/claude-desktop/index.js.map +1 -0
  22. package/dist/adapters/codex/index.d.ts +2 -0
  23. package/dist/adapters/codex/index.js +472 -0
  24. package/dist/adapters/codex/index.js.map +1 -0
  25. package/dist/adapters/cursor/index.d.ts +2 -0
  26. package/dist/adapters/cursor/index.js +255 -0
  27. package/dist/adapters/cursor/index.js.map +1 -0
  28. package/dist/adapters/opencode/conv-reader.d.ts +3 -0
  29. package/dist/adapters/opencode/conv-reader.js +190 -0
  30. package/dist/adapters/opencode/conv-reader.js.map +1 -0
  31. package/dist/adapters/opencode/index.d.ts +2 -0
  32. package/dist/adapters/opencode/index.js +349 -0
  33. package/dist/adapters/opencode/index.js.map +1 -0
  34. package/dist/adapters/registry.d.ts +4 -0
  35. package/dist/adapters/registry.js +26 -0
  36. package/dist/adapters/registry.js.map +1 -0
  37. package/dist/cli.d.ts +3 -0
  38. package/dist/cli.js +54 -0
  39. package/dist/cli.js.map +1 -0
  40. package/dist/commands/conv.d.ts +2 -0
  41. package/dist/commands/conv.js +261 -0
  42. package/dist/commands/conv.js.map +1 -0
  43. package/dist/commands/doctor.d.ts +2 -0
  44. package/dist/commands/doctor.js +85 -0
  45. package/dist/commands/doctor.js.map +1 -0
  46. package/dist/commands/init.d.ts +2 -0
  47. package/dist/commands/init.js +38 -0
  48. package/dist/commands/init.js.map +1 -0
  49. package/dist/commands/memory.d.ts +2 -0
  50. package/dist/commands/memory.js +197 -0
  51. package/dist/commands/memory.js.map +1 -0
  52. package/dist/commands/migrate.d.ts +2 -0
  53. package/dist/commands/migrate.js +102 -0
  54. package/dist/commands/migrate.js.map +1 -0
  55. package/dist/commands/profile.d.ts +2 -0
  56. package/dist/commands/profile.js +183 -0
  57. package/dist/commands/profile.js.map +1 -0
  58. package/dist/commands/redact.d.ts +2 -0
  59. package/dist/commands/redact.js +73 -0
  60. package/dist/commands/redact.js.map +1 -0
  61. package/dist/commands/trace.d.ts +2 -0
  62. package/dist/commands/trace.js +181 -0
  63. package/dist/commands/trace.js.map +1 -0
  64. package/dist/commands/view.d.ts +13 -0
  65. package/dist/commands/view.js +184 -0
  66. package/dist/commands/view.js.map +1 -0
  67. package/dist/commands/watch.d.ts +6 -0
  68. package/dist/commands/watch.js +61 -0
  69. package/dist/commands/watch.js.map +1 -0
  70. package/dist/commands/wrap.d.ts +2 -0
  71. package/dist/commands/wrap.js +131 -0
  72. package/dist/commands/wrap.js.map +1 -0
  73. package/dist/conv/chatgpt-import.d.ts +33 -0
  74. package/dist/conv/chatgpt-import.js +145 -0
  75. package/dist/conv/chatgpt-import.js.map +1 -0
  76. package/dist/conv/cursor.d.ts +12 -0
  77. package/dist/conv/cursor.js +55 -0
  78. package/dist/conv/cursor.js.map +1 -0
  79. package/dist/conv/export.d.ts +40 -0
  80. package/dist/conv/export.js +215 -0
  81. package/dist/conv/export.js.map +1 -0
  82. package/dist/conv/replay/aider.d.ts +24 -0
  83. package/dist/conv/replay/aider.js +56 -0
  84. package/dist/conv/replay/aider.js.map +1 -0
  85. package/dist/conv/replay/claude-code.d.ts +38 -0
  86. package/dist/conv/replay/claude-code.js +80 -0
  87. package/dist/conv/replay/claude-code.js.map +1 -0
  88. package/dist/conv/replay/context.d.ts +25 -0
  89. package/dist/conv/replay/context.js +63 -0
  90. package/dist/conv/replay/context.js.map +1 -0
  91. package/dist/conv/replay/index.d.ts +22 -0
  92. package/dist/conv/replay/index.js +84 -0
  93. package/dist/conv/replay/index.js.map +1 -0
  94. package/dist/conv/search.d.ts +67 -0
  95. package/dist/conv/search.js +379 -0
  96. package/dist/conv/search.js.map +1 -0
  97. package/dist/conv/sink.d.ts +26 -0
  98. package/dist/conv/sink.js +76 -0
  99. package/dist/conv/sink.js.map +1 -0
  100. package/dist/conv/sources/aider.d.ts +13 -0
  101. package/dist/conv/sources/aider.js +95 -0
  102. package/dist/conv/sources/aider.js.map +1 -0
  103. package/dist/conv/sources/claude-code.d.ts +13 -0
  104. package/dist/conv/sources/claude-code.js +189 -0
  105. package/dist/conv/sources/claude-code.js.map +1 -0
  106. package/dist/conv/sources/codex.d.ts +15 -0
  107. package/dist/conv/sources/codex.js +175 -0
  108. package/dist/conv/sources/codex.js.map +1 -0
  109. package/dist/conv/sources/opencode.d.ts +12 -0
  110. package/dist/conv/sources/opencode.js +92 -0
  111. package/dist/conv/sources/opencode.js.map +1 -0
  112. package/dist/conv/store.d.ts +10 -0
  113. package/dist/conv/store.js +75 -0
  114. package/dist/conv/store.js.map +1 -0
  115. package/dist/conv/title.d.ts +9 -0
  116. package/dist/conv/title.js +74 -0
  117. package/dist/conv/title.js.map +1 -0
  118. package/dist/conv/watcher.d.ts +28 -0
  119. package/dist/conv/watcher.js +75 -0
  120. package/dist/conv/watcher.js.map +1 -0
  121. package/dist/conv/zip.d.ts +11 -0
  122. package/dist/conv/zip.js +82 -0
  123. package/dist/conv/zip.js.map +1 -0
  124. package/dist/hf/client.d.ts +41 -0
  125. package/dist/hf/client.js +87 -0
  126. package/dist/hf/client.js.map +1 -0
  127. package/dist/index.d.ts +5 -0
  128. package/dist/index.js +6 -0
  129. package/dist/index.js.map +1 -0
  130. package/dist/ir/index.d.ts +24 -0
  131. package/dist/ir/index.js +23 -0
  132. package/dist/ir/index.js.map +1 -0
  133. package/dist/ir/profile.d.ts +55 -0
  134. package/dist/ir/profile.js +177 -0
  135. package/dist/ir/profile.js.map +1 -0
  136. package/dist/memory/index.d.ts +41 -0
  137. package/dist/memory/index.js +109 -0
  138. package/dist/memory/index.js.map +1 -0
  139. package/dist/memory/search.d.ts +24 -0
  140. package/dist/memory/search.js +114 -0
  141. package/dist/memory/search.js.map +1 -0
  142. package/dist/memory/sinks/claude-mem.d.ts +13 -0
  143. package/dist/memory/sinks/claude-mem.js +100 -0
  144. package/dist/memory/sinks/claude-mem.js.map +1 -0
  145. package/dist/memory/sinks/codex.d.ts +12 -0
  146. package/dist/memory/sinks/codex.js +82 -0
  147. package/dist/memory/sinks/codex.js.map +1 -0
  148. package/dist/memory/sinks/context.d.ts +21 -0
  149. package/dist/memory/sinks/context.js +42 -0
  150. package/dist/memory/sinks/context.js.map +1 -0
  151. package/dist/memory/sources/chatgpt.d.ts +22 -0
  152. package/dist/memory/sources/chatgpt.js +98 -0
  153. package/dist/memory/sources/chatgpt.js.map +1 -0
  154. package/dist/memory/sources/claude-mem.d.ts +8 -0
  155. package/dist/memory/sources/claude-mem.js +104 -0
  156. package/dist/memory/sources/claude-mem.js.map +1 -0
  157. package/dist/memory/sources/codex.d.ts +8 -0
  158. package/dist/memory/sources/codex.js +77 -0
  159. package/dist/memory/sources/codex.js.map +1 -0
  160. package/dist/memory/store.d.ts +19 -0
  161. package/dist/memory/store.js +82 -0
  162. package/dist/memory/store.js.map +1 -0
  163. package/dist/proxy/http.d.ts +21 -0
  164. package/dist/proxy/http.js +205 -0
  165. package/dist/proxy/http.js.map +1 -0
  166. package/dist/proxy/recorder.d.ts +35 -0
  167. package/dist/proxy/recorder.js +221 -0
  168. package/dist/proxy/recorder.js.map +1 -0
  169. package/dist/proxy/streaming.d.ts +33 -0
  170. package/dist/proxy/streaming.js +185 -0
  171. package/dist/proxy/streaming.js.map +1 -0
  172. package/dist/redactor/entropy.d.ts +29 -0
  173. package/dist/redactor/entropy.js +98 -0
  174. package/dist/redactor/entropy.js.map +1 -0
  175. package/dist/redactor/index.d.ts +52 -0
  176. package/dist/redactor/index.js +152 -0
  177. package/dist/redactor/index.js.map +1 -0
  178. package/dist/redactor/ner.d.ts +53 -0
  179. package/dist/redactor/ner.js +97 -0
  180. package/dist/redactor/ner.js.map +1 -0
  181. package/dist/redactor/pii-patterns.d.ts +22 -0
  182. package/dist/redactor/pii-patterns.js +187 -0
  183. package/dist/redactor/pii-patterns.js.map +1 -0
  184. package/dist/redactor/secret-patterns.d.ts +27 -0
  185. package/dist/redactor/secret-patterns.js +475 -0
  186. package/dist/redactor/secret-patterns.js.map +1 -0
  187. package/dist/schema/conv.d.ts +698 -0
  188. package/dist/schema/conv.js +85 -0
  189. package/dist/schema/conv.js.map +1 -0
  190. package/dist/schema/index.d.ts +2 -0
  191. package/dist/schema/index.js +3 -0
  192. package/dist/schema/index.js.map +1 -0
  193. package/dist/schema/manifest.d.ts +1531 -0
  194. package/dist/schema/manifest.js +179 -0
  195. package/dist/schema/manifest.js.map +1 -0
  196. package/dist/schema/memory.d.ts +107 -0
  197. package/dist/schema/memory.js +45 -0
  198. package/dist/schema/memory.js.map +1 -0
  199. package/dist/schema/trace.d.ts +164 -0
  200. package/dist/schema/trace.js +89 -0
  201. package/dist/schema/trace.js.map +1 -0
  202. package/dist/trace/consent.d.ts +30 -0
  203. package/dist/trace/consent.js +60 -0
  204. package/dist/trace/consent.js.map +1 -0
  205. package/dist/trace/extract.d.ts +22 -0
  206. package/dist/trace/extract.js +168 -0
  207. package/dist/trace/extract.js.map +1 -0
  208. package/dist/trace/ml-pii.d.ts +33 -0
  209. package/dist/trace/ml-pii.js +35 -0
  210. package/dist/trace/ml-pii.js.map +1 -0
  211. package/dist/trace/push.d.ts +59 -0
  212. package/dist/trace/push.js +141 -0
  213. package/dist/trace/push.js.map +1 -0
  214. package/dist/trace/serialize.d.ts +23 -0
  215. package/dist/trace/serialize.js +67 -0
  216. package/dist/trace/serialize.js.map +1 -0
  217. package/dist/ui/banner.d.ts +2 -0
  218. package/dist/ui/banner.js +17 -0
  219. package/dist/ui/banner.js.map +1 -0
  220. package/dist/ui/box.d.ts +4 -0
  221. package/dist/ui/box.js +38 -0
  222. package/dist/ui/box.js.map +1 -0
  223. package/dist/ui/index.d.ts +5 -0
  224. package/dist/ui/index.js +5 -0
  225. package/dist/ui/index.js.map +1 -0
  226. package/dist/ui/spinner.d.ts +10 -0
  227. package/dist/ui/spinner.js +44 -0
  228. package/dist/ui/spinner.js.map +1 -0
  229. package/dist/ui/table.d.ts +9 -0
  230. package/dist/ui/table.js +55 -0
  231. package/dist/ui/table.js.map +1 -0
  232. package/dist/util/frontmatter.d.ts +6 -0
  233. package/dist/util/frontmatter.js +20 -0
  234. package/dist/util/frontmatter.js.map +1 -0
  235. package/dist/util/fs.d.ts +5 -0
  236. package/dist/util/fs.js +41 -0
  237. package/dist/util/fs.js.map +1 -0
  238. package/dist/util/ids.d.ts +3 -0
  239. package/dist/util/ids.js +16 -0
  240. package/dist/util/ids.js.map +1 -0
  241. package/dist/util/log.d.ts +13 -0
  242. package/dist/util/log.js +33 -0
  243. package/dist/util/log.js.map +1 -0
  244. package/dist/util/paths.d.ts +18 -0
  245. package/dist/util/paths.js +36 -0
  246. package/dist/util/paths.js.map +1 -0
  247. package/dist/version.d.ts +5 -0
  248. package/dist/version.js +32 -0
  249. package/dist/version.js.map +1 -0
  250. package/package.json +86 -0
@@ -0,0 +1,38 @@
1
+ export function emptyReport() {
2
+ return { written: [], skipped: [], warnings: [] };
3
+ }
4
+ export function mergeReports(a, b) {
5
+ return {
6
+ written: [...a.written, ...b.written],
7
+ skipped: [...a.skipped, ...b.skipped],
8
+ warnings: [...a.warnings, ...b.warnings],
9
+ };
10
+ }
11
+ export async function profileFromReader(reader, sourceTool, ctx) {
12
+ const [identity, rules, agents, commands, skills, mcp, hooks, perms, models] = await Promise.all([
13
+ reader.readIdentity?.(ctx),
14
+ reader.readRules?.(ctx) ?? Promise.resolve([]),
15
+ reader.readAgents?.(ctx) ?? Promise.resolve([]),
16
+ reader.readCommands?.(ctx) ?? Promise.resolve([]),
17
+ reader.readSkills?.(ctx) ?? Promise.resolve([]),
18
+ reader.readMcpServers?.(ctx) ?? Promise.resolve([]),
19
+ reader.readHooks?.(ctx) ?? Promise.resolve([]),
20
+ reader.readPermissions?.(ctx),
21
+ reader.readModels?.(ctx),
22
+ ]);
23
+ return {
24
+ schema: 'skein-profile/1',
25
+ createdAt: new Date().toISOString(),
26
+ sourceTool,
27
+ ...(identity ? { identity } : {}),
28
+ rules: rules ?? [],
29
+ agents: agents ?? [],
30
+ commands: commands ?? [],
31
+ skills: skills ?? [],
32
+ mcpServers: mcp ?? [],
33
+ hooks: hooks ?? [],
34
+ ...(perms ? { permissions: perms } : {}),
35
+ ...(models ? { models } : {}),
36
+ };
37
+ }
38
+ //# sourceMappingURL=base.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base.js","sourceRoot":"","sources":["../../src/adapters/base.ts"],"names":[],"mappings":"AA8CA,MAAM,UAAU,WAAW;IACzB,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAA;AACnD,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,CAAc,EAAE,CAAc;IACzD,OAAO;QACL,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC;QACrC,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC;QACrC,QAAQ,EAAE,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,QAAQ,CAAC;KACzC,CAAA;AACH,CAAC;AA0CD,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,MAAqB,EACrB,UAAkB,EAClB,GAAgB;IAEhB,MAAM,CAAC,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QAC/F,MAAM,CAAC,YAAY,EAAE,CAAC,GAAG,CAAC;QAC1B,MAAM,CAAC,SAAS,EAAE,CAAC,GAAG,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QAC9C,MAAM,CAAC,UAAU,EAAE,CAAC,GAAG,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QAC/C,MAAM,CAAC,YAAY,EAAE,CAAC,GAAG,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QACjD,MAAM,CAAC,UAAU,EAAE,CAAC,GAAG,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QAC/C,MAAM,CAAC,cAAc,EAAE,CAAC,GAAG,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QACnD,MAAM,CAAC,SAAS,EAAE,CAAC,GAAG,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QAC9C,MAAM,CAAC,eAAe,EAAE,CAAC,GAAG,CAAC;QAC7B,MAAM,CAAC,UAAU,EAAE,CAAC,GAAG,CAAC;KACzB,CAAC,CAAA;IAEF,OAAO;QACL,MAAM,EAAE,iBAAiB;QACzB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACnC,UAAU;QACV,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACjC,KAAK,EAAE,KAAK,IAAI,EAAE;QAClB,MAAM,EAAE,MAAM,IAAI,EAAE;QACpB,QAAQ,EAAE,QAAQ,IAAI,EAAE;QACxB,MAAM,EAAE,MAAM,IAAI,EAAE;QACpB,UAAU,EAAE,GAAG,IAAI,EAAE;QACrB,KAAK,EAAE,KAAK,IAAI,EAAE;QAClB,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACxC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC9B,CAAA;AACH,CAAC"}
@@ -0,0 +1,2 @@
1
+ import type { ConvReader } from '../base.js';
2
+ export declare const claudeCodeConvReader: ConvReader;
@@ -0,0 +1,155 @@
1
+ import { createReadStream, promises as fs } from 'node:fs';
2
+ import { join } from 'node:path';
3
+ import { createInterface } from 'node:readline';
4
+ import { CONV_SCHEMA } from '../../version.js';
5
+ import { listDir } from '../../util/fs.js';
6
+ const PROJECTS_DIR = (homeDir) => join(homeDir, '.claude', 'projects');
7
+ export const claudeCodeConvReader = {
8
+ async *listSessions(ctx) {
9
+ const root = PROJECTS_DIR(ctx.homeDir);
10
+ const projectDirs = await listDir(root);
11
+ for (const pd of projectDirs) {
12
+ const dir = join(root, pd);
13
+ const files = await listDir(dir);
14
+ for (const file of files) {
15
+ if (!file.endsWith('.jsonl'))
16
+ continue;
17
+ const id = file.slice(0, -'.jsonl'.length);
18
+ const summary = await summarize(join(dir, file), id, decodeProjectDir(pd));
19
+ if (summary)
20
+ yield summary;
21
+ }
22
+ }
23
+ },
24
+ async *readSession(id, ctx) {
25
+ const root = PROJECTS_DIR(ctx.homeDir);
26
+ const projectDirs = await listDir(root);
27
+ for (const pd of projectDirs) {
28
+ const file = join(root, pd, `${id}.jsonl`);
29
+ if (await pathExists(file)) {
30
+ yield* convertFile(file, id, decodeProjectDir(pd));
31
+ return;
32
+ }
33
+ }
34
+ },
35
+ };
36
+ function decodeProjectDir(encoded) {
37
+ if (encoded.startsWith('-'))
38
+ return encoded.replace(/-/g, '/');
39
+ return encoded;
40
+ }
41
+ async function pathExists(path) {
42
+ try {
43
+ await fs.access(path);
44
+ return true;
45
+ }
46
+ catch {
47
+ return false;
48
+ }
49
+ }
50
+ async function summarize(file, id, project) {
51
+ let title;
52
+ let startedAt;
53
+ let endedAt;
54
+ let model;
55
+ let toolVersion;
56
+ let messageCount = 0;
57
+ for await (const line of readLines(file)) {
58
+ const obj = safeParseJson(line);
59
+ if (!obj)
60
+ continue;
61
+ if (obj.type === 'ai-title' && obj.aiTitle)
62
+ title ??= obj.aiTitle;
63
+ if (obj.timestamp) {
64
+ startedAt ??= obj.timestamp;
65
+ endedAt = obj.timestamp;
66
+ }
67
+ if (obj.message?.model)
68
+ model ??= obj.message.model;
69
+ if (obj.version)
70
+ toolVersion ??= obj.version;
71
+ if (obj.type === 'user' || obj.type === 'assistant')
72
+ messageCount += 1;
73
+ }
74
+ if (messageCount === 0 && !title)
75
+ return undefined;
76
+ return {
77
+ id,
78
+ tool: 'claude-code',
79
+ ...(toolVersion ? { toolVersion } : {}),
80
+ project,
81
+ ...(model ? { model } : {}),
82
+ ...(startedAt ? { startedAt } : {}),
83
+ ...(endedAt ? { endedAt } : {}),
84
+ ...(title ? { title } : {}),
85
+ messageCount,
86
+ path: file,
87
+ };
88
+ }
89
+ async function* convertFile(file, id, project) {
90
+ let started = false;
91
+ let seq = 0;
92
+ let lastTs = new Date().toISOString();
93
+ for await (const line of readLines(file)) {
94
+ const obj = safeParseJson(line);
95
+ if (!obj)
96
+ continue;
97
+ if (!started) {
98
+ yield {
99
+ type: 'session.start',
100
+ id,
101
+ tool: 'claude-code',
102
+ ...(obj.version ? { toolVersion: obj.version } : {}),
103
+ ...(obj.message?.model ? { model: obj.message.model } : {}),
104
+ project,
105
+ schema: CONV_SCHEMA,
106
+ ts: obj.timestamp ?? new Date().toISOString(),
107
+ };
108
+ started = true;
109
+ }
110
+ if (obj.timestamp)
111
+ lastTs = obj.timestamp;
112
+ if ((obj.type === 'user' || obj.type === 'assistant') && obj.message?.content) {
113
+ const content = normalizeContent(obj.message.content);
114
+ seq += 1;
115
+ const tokensIn = obj.message.usage?.input_tokens;
116
+ const tokensOut = obj.message.usage?.output_tokens;
117
+ yield {
118
+ type: 'message',
119
+ session: id,
120
+ seq,
121
+ role: obj.message.role ?? obj.type,
122
+ content,
123
+ ...(tokensIn !== undefined && tokensOut !== undefined
124
+ ? { tokens: { in: tokensIn, out: tokensOut } }
125
+ : {}),
126
+ ts: obj.timestamp ?? lastTs,
127
+ };
128
+ }
129
+ }
130
+ if (started) {
131
+ yield { type: 'session.end', session: id, ts: lastTs };
132
+ }
133
+ }
134
+ function normalizeContent(content) {
135
+ if (typeof content === 'string')
136
+ return [{ type: 'text', text: content }];
137
+ return content.filter(c => c && typeof c === 'object' && 'type' in c);
138
+ }
139
+ function safeParseJson(line) {
140
+ try {
141
+ return JSON.parse(line);
142
+ }
143
+ catch {
144
+ return undefined;
145
+ }
146
+ }
147
+ async function* readLines(file) {
148
+ const stream = createReadStream(file, { encoding: 'utf8' });
149
+ const rl = createInterface({ input: stream, crlfDelay: Number.POSITIVE_INFINITY });
150
+ for await (const line of rl) {
151
+ if (line.trim())
152
+ yield line;
153
+ }
154
+ }
155
+ //# sourceMappingURL=conv-reader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conv-reader.js","sourceRoot":"","sources":["../../../src/adapters/claude-code/conv-reader.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { Adapter } from '../base.js';
2
+ export declare const claudeCodeAdapter: Adapter;
3
+ export { claudeCodeConvReader } from './conv-reader.js';