@goondocks/myco 0.2.7 → 0.2.8

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 (290) hide show
  1. package/.claude-plugin/plugin.json +1 -1
  2. package/CONTRIBUTING.md +1 -1
  3. package/commands/init.md +10 -26
  4. package/dist/chunk-4JML636J.js +52 -0
  5. package/dist/chunk-4JML636J.js.map +1 -0
  6. package/dist/chunk-AOMX45LH.js +8974 -0
  7. package/dist/chunk-AOMX45LH.js.map +1 -0
  8. package/dist/chunk-I7PMGO6S.js +58 -0
  9. package/dist/chunk-I7PMGO6S.js.map +1 -0
  10. package/dist/chunk-N33KUCFP.js +33 -0
  11. package/dist/chunk-N33KUCFP.js.map +1 -0
  12. package/dist/chunk-NYNEJ5QY.js +71 -0
  13. package/dist/chunk-NYNEJ5QY.js.map +1 -0
  14. package/dist/chunk-PA3VMINE.js +111 -0
  15. package/dist/chunk-PA3VMINE.js.map +1 -0
  16. package/dist/chunk-PZUWP5VK.js +44 -0
  17. package/dist/chunk-PZUWP5VK.js.map +1 -0
  18. package/dist/chunk-SVUINMDD.js +104 -0
  19. package/dist/chunk-SVUINMDD.js.map +1 -0
  20. package/dist/chunk-TH6GIBXG.js +91 -0
  21. package/dist/chunk-TH6GIBXG.js.map +1 -0
  22. package/dist/chunk-TWDS6MSU.js +354 -0
  23. package/dist/chunk-TWDS6MSU.js.map +1 -0
  24. package/dist/chunk-UIIZRTJU.js +21172 -0
  25. package/dist/chunk-UIIZRTJU.js.map +1 -0
  26. package/dist/chunk-YMYJ7FNH.js +19 -0
  27. package/dist/chunk-YMYJ7FNH.js.map +1 -0
  28. package/dist/chunk-ZJQ5G637.js +21 -0
  29. package/dist/chunk-ZJQ5G637.js.map +1 -0
  30. package/dist/chunk-ZTZVX5E6.js +421 -0
  31. package/dist/chunk-ZTZVX5E6.js.map +1 -0
  32. package/dist/cli-K5FSKLQC.js +625 -0
  33. package/dist/cli-K5FSKLQC.js.map +1 -0
  34. package/dist/client-4JMOYNKK.js +11 -0
  35. package/dist/client-4JMOYNKK.js.map +1 -0
  36. package/dist/main-5W4ADOBG.js +3224 -0
  37. package/dist/main-5W4ADOBG.js.map +1 -0
  38. package/dist/server-PIEPVUUH.js +14725 -0
  39. package/dist/server-PIEPVUUH.js.map +1 -0
  40. package/dist/session-start-2NNQHT5S.js +189 -0
  41. package/dist/session-start-2NNQHT5S.js.map +1 -0
  42. package/dist/src/cli.js +9 -582
  43. package/dist/src/cli.js.map +1 -1
  44. package/dist/src/daemon/main.js +9 -737
  45. package/dist/src/daemon/main.js.map +1 -1
  46. package/dist/src/hooks/post-tool-use.js +47 -35
  47. package/dist/src/hooks/post-tool-use.js.map +1 -1
  48. package/dist/src/hooks/session-end.js +29 -18
  49. package/dist/src/hooks/session-end.js.map +1 -1
  50. package/dist/src/hooks/session-start.js +9 -48
  51. package/dist/src/hooks/session-start.js.map +1 -1
  52. package/dist/src/hooks/stop.js +39 -30
  53. package/dist/src/hooks/stop.js.map +1 -1
  54. package/dist/src/hooks/user-prompt-submit.js +48 -40
  55. package/dist/src/hooks/user-prompt-submit.js.map +1 -1
  56. package/dist/src/mcp/server.js +9 -304
  57. package/dist/src/mcp/server.js.map +1 -1
  58. package/package.json +3 -2
  59. package/dist/src/agents/adapter.d.ts +0 -76
  60. package/dist/src/agents/adapter.d.ts.map +0 -1
  61. package/dist/src/agents/adapter.js +0 -124
  62. package/dist/src/agents/adapter.js.map +0 -1
  63. package/dist/src/agents/claude-code.d.ts +0 -3
  64. package/dist/src/agents/claude-code.d.ts.map +0 -1
  65. package/dist/src/agents/claude-code.js +0 -22
  66. package/dist/src/agents/claude-code.js.map +0 -1
  67. package/dist/src/agents/cursor.d.ts +0 -3
  68. package/dist/src/agents/cursor.d.ts.map +0 -1
  69. package/dist/src/agents/cursor.js +0 -154
  70. package/dist/src/agents/cursor.js.map +0 -1
  71. package/dist/src/agents/index.d.ts +0 -6
  72. package/dist/src/agents/index.d.ts.map +0 -1
  73. package/dist/src/agents/index.js +0 -5
  74. package/dist/src/agents/index.js.map +0 -1
  75. package/dist/src/agents/registry.d.ts +0 -34
  76. package/dist/src/agents/registry.d.ts.map +0 -1
  77. package/dist/src/agents/registry.js +0 -95
  78. package/dist/src/agents/registry.js.map +0 -1
  79. package/dist/src/artifacts/candidates.d.ts +0 -20
  80. package/dist/src/artifacts/candidates.d.ts.map +0 -1
  81. package/dist/src/artifacts/candidates.js +0 -84
  82. package/dist/src/artifacts/candidates.js.map +0 -1
  83. package/dist/src/artifacts/slugify.d.ts +0 -2
  84. package/dist/src/artifacts/slugify.d.ts.map +0 -1
  85. package/dist/src/artifacts/slugify.js +0 -22
  86. package/dist/src/artifacts/slugify.js.map +0 -1
  87. package/dist/src/capture/buffer.d.ts +0 -20
  88. package/dist/src/capture/buffer.d.ts.map +0 -1
  89. package/dist/src/capture/buffer.js +0 -55
  90. package/dist/src/capture/buffer.js.map +0 -1
  91. package/dist/src/capture/transcript-miner.d.ts +0 -31
  92. package/dist/src/capture/transcript-miner.d.ts.map +0 -1
  93. package/dist/src/capture/transcript-miner.js +0 -61
  94. package/dist/src/capture/transcript-miner.js.map +0 -1
  95. package/dist/src/cli.d.ts +0 -3
  96. package/dist/src/cli.d.ts.map +0 -1
  97. package/dist/src/config/loader.d.ts +0 -4
  98. package/dist/src/config/loader.d.ts.map +0 -1
  99. package/dist/src/config/loader.js +0 -32
  100. package/dist/src/config/loader.js.map +0 -1
  101. package/dist/src/config/schema.d.ts +0 -83
  102. package/dist/src/config/schema.d.ts.map +0 -1
  103. package/dist/src/config/schema.js +0 -55
  104. package/dist/src/config/schema.js.map +0 -1
  105. package/dist/src/constants.d.ts +0 -73
  106. package/dist/src/constants.d.ts.map +0 -1
  107. package/dist/src/constants.js +0 -86
  108. package/dist/src/constants.js.map +0 -1
  109. package/dist/src/context/injector.d.ts +0 -18
  110. package/dist/src/context/injector.d.ts.map +0 -1
  111. package/dist/src/context/injector.js +0 -71
  112. package/dist/src/context/injector.js.map +0 -1
  113. package/dist/src/context/relevance.d.ts +0 -13
  114. package/dist/src/context/relevance.d.ts.map +0 -1
  115. package/dist/src/context/relevance.js +0 -44
  116. package/dist/src/context/relevance.js.map +0 -1
  117. package/dist/src/daemon/batch.d.ts +0 -22
  118. package/dist/src/daemon/batch.d.ts.map +0 -1
  119. package/dist/src/daemon/batch.js +0 -38
  120. package/dist/src/daemon/batch.js.map +0 -1
  121. package/dist/src/daemon/lifecycle.d.ts +0 -27
  122. package/dist/src/daemon/lifecycle.d.ts.map +0 -1
  123. package/dist/src/daemon/lifecycle.js +0 -50
  124. package/dist/src/daemon/lifecycle.js.map +0 -1
  125. package/dist/src/daemon/lineage.d.ts +0 -42
  126. package/dist/src/daemon/lineage.d.ts.map +0 -1
  127. package/dist/src/daemon/lineage.js +0 -116
  128. package/dist/src/daemon/lineage.js.map +0 -1
  129. package/dist/src/daemon/logger.d.ts +0 -33
  130. package/dist/src/daemon/logger.d.ts.map +0 -1
  131. package/dist/src/daemon/logger.js +0 -88
  132. package/dist/src/daemon/logger.js.map +0 -1
  133. package/dist/src/daemon/main.d.ts +0 -2
  134. package/dist/src/daemon/main.d.ts.map +0 -1
  135. package/dist/src/daemon/processor.d.ts +0 -44
  136. package/dist/src/daemon/processor.d.ts.map +0 -1
  137. package/dist/src/daemon/processor.js +0 -142
  138. package/dist/src/daemon/processor.js.map +0 -1
  139. package/dist/src/daemon/server.d.ts +0 -24
  140. package/dist/src/daemon/server.d.ts.map +0 -1
  141. package/dist/src/daemon/server.js +0 -117
  142. package/dist/src/daemon/server.js.map +0 -1
  143. package/dist/src/daemon/watcher.d.ts +0 -29
  144. package/dist/src/daemon/watcher.d.ts.map +0 -1
  145. package/dist/src/daemon/watcher.js +0 -67
  146. package/dist/src/daemon/watcher.js.map +0 -1
  147. package/dist/src/hooks/client.d.ts +0 -20
  148. package/dist/src/hooks/client.d.ts.map +0 -1
  149. package/dist/src/hooks/client.js +0 -111
  150. package/dist/src/hooks/client.js.map +0 -1
  151. package/dist/src/hooks/post-tool-use.d.ts +0 -2
  152. package/dist/src/hooks/post-tool-use.d.ts.map +0 -1
  153. package/dist/src/hooks/read-stdin.d.ts +0 -2
  154. package/dist/src/hooks/read-stdin.d.ts.map +0 -1
  155. package/dist/src/hooks/read-stdin.js +0 -10
  156. package/dist/src/hooks/read-stdin.js.map +0 -1
  157. package/dist/src/hooks/session-end.d.ts +0 -2
  158. package/dist/src/hooks/session-end.d.ts.map +0 -1
  159. package/dist/src/hooks/session-start.d.ts +0 -2
  160. package/dist/src/hooks/session-start.d.ts.map +0 -1
  161. package/dist/src/hooks/stop.d.ts +0 -2
  162. package/dist/src/hooks/stop.d.ts.map +0 -1
  163. package/dist/src/hooks/user-prompt-submit.d.ts +0 -2
  164. package/dist/src/hooks/user-prompt-submit.d.ts.map +0 -1
  165. package/dist/src/index/fts.d.ts +0 -16
  166. package/dist/src/index/fts.d.ts.map +0 -1
  167. package/dist/src/index/fts.js +0 -53
  168. package/dist/src/index/fts.js.map +0 -1
  169. package/dist/src/index/rebuild.d.ts +0 -4
  170. package/dist/src/index/rebuild.d.ts.map +0 -1
  171. package/dist/src/index/rebuild.js +0 -40
  172. package/dist/src/index/rebuild.js.map +0 -1
  173. package/dist/src/index/sqlite.d.ts +0 -33
  174. package/dist/src/index/sqlite.d.ts.map +0 -1
  175. package/dist/src/index/sqlite.js +0 -99
  176. package/dist/src/index/sqlite.js.map +0 -1
  177. package/dist/src/index/vectors.d.ts +0 -24
  178. package/dist/src/index/vectors.d.ts.map +0 -1
  179. package/dist/src/index/vectors.js +0 -97
  180. package/dist/src/index/vectors.js.map +0 -1
  181. package/dist/src/intelligence/anthropic.d.ts +0 -17
  182. package/dist/src/intelligence/anthropic.d.ts.map +0 -1
  183. package/dist/src/intelligence/anthropic.js +0 -36
  184. package/dist/src/intelligence/anthropic.js.map +0 -1
  185. package/dist/src/intelligence/embeddings.d.ts +0 -3
  186. package/dist/src/intelligence/embeddings.d.ts.map +0 -1
  187. package/dist/src/intelligence/embeddings.js +0 -15
  188. package/dist/src/intelligence/embeddings.js.map +0 -1
  189. package/dist/src/intelligence/llm.d.ts +0 -33
  190. package/dist/src/intelligence/llm.d.ts.map +0 -1
  191. package/dist/src/intelligence/llm.js +0 -26
  192. package/dist/src/intelligence/llm.js.map +0 -1
  193. package/dist/src/intelligence/lm-studio.d.ts +0 -20
  194. package/dist/src/intelligence/lm-studio.d.ts.map +0 -1
  195. package/dist/src/intelligence/lm-studio.js +0 -59
  196. package/dist/src/intelligence/lm-studio.js.map +0 -1
  197. package/dist/src/intelligence/ollama.d.ts +0 -22
  198. package/dist/src/intelligence/ollama.d.ts.map +0 -1
  199. package/dist/src/intelligence/ollama.js +0 -64
  200. package/dist/src/intelligence/ollama.js.map +0 -1
  201. package/dist/src/intelligence/response.d.ts +0 -29
  202. package/dist/src/intelligence/response.d.ts.map +0 -1
  203. package/dist/src/intelligence/response.js +0 -71
  204. package/dist/src/intelligence/response.js.map +0 -1
  205. package/dist/src/logs/format.d.ts +0 -6
  206. package/dist/src/logs/format.d.ts.map +0 -1
  207. package/dist/src/logs/format.js +0 -46
  208. package/dist/src/logs/format.js.map +0 -1
  209. package/dist/src/logs/reader.d.ts +0 -28
  210. package/dist/src/logs/reader.d.ts.map +0 -1
  211. package/dist/src/logs/reader.js +0 -106
  212. package/dist/src/logs/reader.js.map +0 -1
  213. package/dist/src/mcp/server.d.ts +0 -16
  214. package/dist/src/mcp/server.d.ts.map +0 -1
  215. package/dist/src/mcp/tools/consolidate.d.ts +0 -15
  216. package/dist/src/mcp/tools/consolidate.d.ts.map +0 -1
  217. package/dist/src/mcp/tools/consolidate.js +0 -49
  218. package/dist/src/mcp/tools/consolidate.js.map +0 -1
  219. package/dist/src/mcp/tools/graph.d.ts +0 -30
  220. package/dist/src/mcp/tools/graph.d.ts.map +0 -1
  221. package/dist/src/mcp/tools/graph.js +0 -106
  222. package/dist/src/mcp/tools/graph.js.map +0 -1
  223. package/dist/src/mcp/tools/logs.d.ts +0 -3
  224. package/dist/src/mcp/tools/logs.d.ts.map +0 -1
  225. package/dist/src/mcp/tools/logs.js +0 -7
  226. package/dist/src/mcp/tools/logs.js.map +0 -1
  227. package/dist/src/mcp/tools/plans.d.ts +0 -23
  228. package/dist/src/mcp/tools/plans.d.ts.map +0 -1
  229. package/dist/src/mcp/tools/plans.js +0 -63
  230. package/dist/src/mcp/tools/plans.js.map +0 -1
  231. package/dist/src/mcp/tools/recall.d.ts +0 -30
  232. package/dist/src/mcp/tools/recall.d.ts.map +0 -1
  233. package/dist/src/mcp/tools/recall.js +0 -34
  234. package/dist/src/mcp/tools/recall.js.map +0 -1
  235. package/dist/src/mcp/tools/remember.d.ts +0 -15
  236. package/dist/src/mcp/tools/remember.d.ts.map +0 -1
  237. package/dist/src/mcp/tools/remember.js +0 -18
  238. package/dist/src/mcp/tools/remember.js.map +0 -1
  239. package/dist/src/mcp/tools/search.d.ts +0 -19
  240. package/dist/src/mcp/tools/search.d.ts.map +0 -1
  241. package/dist/src/mcp/tools/search.js +0 -59
  242. package/dist/src/mcp/tools/search.js.map +0 -1
  243. package/dist/src/mcp/tools/sessions.d.ts +0 -21
  244. package/dist/src/mcp/tools/sessions.d.ts.map +0 -1
  245. package/dist/src/mcp/tools/sessions.js +0 -36
  246. package/dist/src/mcp/tools/sessions.js.map +0 -1
  247. package/dist/src/mcp/tools/supersede.d.ts +0 -14
  248. package/dist/src/mcp/tools/supersede.d.ts.map +0 -1
  249. package/dist/src/mcp/tools/supersede.js +0 -30
  250. package/dist/src/mcp/tools/supersede.js.map +0 -1
  251. package/dist/src/mcp/tools/team.d.ts +0 -16
  252. package/dist/src/mcp/tools/team.d.ts.map +0 -1
  253. package/dist/src/mcp/tools/team.js +0 -32
  254. package/dist/src/mcp/tools/team.js.map +0 -1
  255. package/dist/src/obsidian/formatter.d.ts +0 -80
  256. package/dist/src/obsidian/formatter.d.ts.map +0 -1
  257. package/dist/src/obsidian/formatter.js +0 -227
  258. package/dist/src/obsidian/formatter.js.map +0 -1
  259. package/dist/src/prompts/index.d.ts +0 -13
  260. package/dist/src/prompts/index.d.ts.map +0 -1
  261. package/dist/src/prompts/index.js +0 -75
  262. package/dist/src/prompts/index.js.map +0 -1
  263. package/dist/src/vault/frontmatter.d.ts +0 -6
  264. package/dist/src/vault/frontmatter.d.ts.map +0 -1
  265. package/dist/src/vault/frontmatter.js +0 -10
  266. package/dist/src/vault/frontmatter.js.map +0 -1
  267. package/dist/src/vault/observations.d.ts +0 -10
  268. package/dist/src/vault/observations.d.ts.map +0 -1
  269. package/dist/src/vault/observations.js +0 -33
  270. package/dist/src/vault/observations.js.map +0 -1
  271. package/dist/src/vault/reader.d.ts +0 -10
  272. package/dist/src/vault/reader.d.ts.map +0 -1
  273. package/dist/src/vault/reader.js +0 -48
  274. package/dist/src/vault/reader.js.map +0 -1
  275. package/dist/src/vault/resolve.d.ts +0 -18
  276. package/dist/src/vault/resolve.d.ts.map +0 -1
  277. package/dist/src/vault/resolve.js +0 -51
  278. package/dist/src/vault/resolve.js.map +0 -1
  279. package/dist/src/vault/session-id.d.ts +0 -16
  280. package/dist/src/vault/session-id.d.ts.map +0 -1
  281. package/dist/src/vault/session-id.js +0 -29
  282. package/dist/src/vault/session-id.js.map +0 -1
  283. package/dist/src/vault/types.d.ts +0 -88
  284. package/dist/src/vault/types.d.ts.map +0 -1
  285. package/dist/src/vault/types.js +0 -94
  286. package/dist/src/vault/types.js.map +0 -1
  287. package/dist/src/vault/writer.d.ts +0 -66
  288. package/dist/src/vault/writer.d.ts.map +0 -1
  289. package/dist/src/vault/writer.js +0 -217
  290. package/dist/src/vault/writer.js.map +0 -1
@@ -1,154 +0,0 @@
1
- import { mimeTypeForExtension, parseJsonlTurns } from './adapter.js';
2
- import { PROMPT_PREVIEW_CHARS } from '../constants.js';
3
- import fs from 'node:fs';
4
- import path from 'node:path';
5
- import os from 'node:os';
6
- /**
7
- * Cursor stores conversation transcripts in:
8
- * ~/.cursor/projects/<project-path>/agent-transcripts/<session-id>.txt
9
- *
10
- * Images are saved as files in:
11
- * ~/.cursor/projects/<project-path>/assets/<filename>.png
12
- *
13
- * Transcript format is plain text with role markers on their own line:
14
- * user: — human prompt (may contain <image_files> and <user_query> tags)
15
- * assistant: — assistant response (may contain [Tool call] and [Thinking] blocks)
16
- */
17
- const USER_MARKER = '\nuser:\n';
18
- const ASSISTANT_MARKER = '\nassistant:\n';
19
- const TOOL_CALL_MARKER = '[Tool call]';
20
- const TOOL_RESULT_MARKER = '[Tool result]';
21
- const THINKING_MARKER = '[Thinking]';
22
- function getCursorProjectsBase() {
23
- return path.join(os.homedir(), '.cursor', 'projects');
24
- }
25
- const CURSOR_PROJECTS = getCursorProjectsBase();
26
- export const cursorAdapter = {
27
- name: 'cursor',
28
- displayName: 'Cursor',
29
- pluginRootEnvVar: 'CURSOR_PLUGIN_ROOT',
30
- hookFields: {
31
- transcriptPath: 'transcript_path',
32
- lastResponse: 'last_assistant_message',
33
- sessionId: 'conversation_id',
34
- },
35
- findTranscript(sessionId) {
36
- try {
37
- for (const project of fs.readdirSync(CURSOR_PROJECTS, { withFileTypes: true })) {
38
- if (!project.isDirectory())
39
- continue;
40
- const transcriptsDir = path.join(CURSOR_PROJECTS, project.name, 'agent-transcripts');
41
- // Try .txt (older Cursor) then .jsonl inside session directory (newer Cursor)
42
- for (const candidate of [
43
- path.join(transcriptsDir, `${sessionId}.txt`),
44
- path.join(transcriptsDir, sessionId, `${sessionId}.jsonl`),
45
- ]) {
46
- try {
47
- fs.accessSync(candidate);
48
- return candidate;
49
- }
50
- catch { /* not here */ }
51
- }
52
- }
53
- }
54
- catch { /* projects dir doesn't exist */ }
55
- return null;
56
- },
57
- parseTurns(content) {
58
- // Detect format: JSONL (starts with '{') or plain text (starts with 'user:')
59
- const trimmed = content.trimStart();
60
- if (trimmed.startsWith('{')) {
61
- return parseCursorJsonl(content);
62
- }
63
- return parseCursorText(content);
64
- },
65
- };
66
- /** Parse Cursor's newer JSONL format — same structure as Claude's but uses 'role' field */
67
- function parseCursorJsonl(content) {
68
- return parseJsonlTurns(content, {
69
- roleField: 'role',
70
- extractTimestamp: false,
71
- skipToolResultUsers: false,
72
- stripImageTextRefs: false,
73
- });
74
- }
75
- /** Parse Cursor's older plain-text transcript format. */
76
- function parseCursorText(content) {
77
- const turns = [];
78
- // Split on user marker — each block is a new human turn.
79
- const sections = ('\n' + content).split(USER_MARKER).slice(1);
80
- for (const section of sections) {
81
- // Extract user query from <user_query> tags or raw text before first assistant response
82
- let promptText = '';
83
- const queryMatch = section.match(/<user_query>\s*([\s\S]*?)\s*<\/user_query>/);
84
- if (queryMatch) {
85
- promptText = queryMatch[1].trim().slice(0, PROMPT_PREVIEW_CHARS);
86
- }
87
- else {
88
- // No tags — take text before the first assistant response.
89
- const beforeAssistant = section.split(ASSISTANT_MARKER)[0];
90
- promptText = beforeAssistant.replace(/<[^>]+>[\s\S]*?<\/[^>]+>/g, '').trim().slice(0, PROMPT_PREVIEW_CHARS);
91
- }
92
- // Extract image references from <image_files> tags
93
- const images = [];
94
- const imageFilesMatch = section.match(/<image_files>([\s\S]*?)<\/image_files>/);
95
- if (imageFilesMatch) {
96
- const imageBlock = imageFilesMatch[1];
97
- const pathMatches = imageBlock.matchAll(/^\d+\.\s+(.+\.(?:png|jpg|jpeg|gif|webp))\s*$/gmi);
98
- for (const match of pathMatches) {
99
- const imagePath = match[1].trim();
100
- try {
101
- const data = fs.readFileSync(imagePath).toString('base64');
102
- const mediaType = mimeTypeForExtension(path.extname(imagePath));
103
- images.push({ data, mediaType });
104
- }
105
- catch {
106
- // Image file not accessible — skip
107
- }
108
- }
109
- }
110
- // Count tool calls in assistant sections
111
- const toolCallCount = section.split(TOOL_CALL_MARKER).length - 1;
112
- // Extract the last meaningful assistant text response.
113
- // Scan assistant blocks (split on \nA:\n) from the end.
114
- // A block is "meaningful" if it contains lines that aren't tool calls/results/thinking.
115
- let aiResponse;
116
- const assistantBlocks = section.split(ASSISTANT_MARKER).slice(1);
117
- for (let j = assistantBlocks.length - 1; j >= 0; j--) {
118
- const lines = assistantBlocks[j].split('\n');
119
- const textLines = [];
120
- let skip = false;
121
- for (const line of lines) {
122
- // Skip tool calls, tool results, and thinking blocks
123
- if (line.startsWith(TOOL_CALL_MARKER) || line.startsWith(TOOL_RESULT_MARKER) || line.startsWith(THINKING_MARKER)) {
124
- skip = true;
125
- continue;
126
- }
127
- // Resume after a blank line following a skipped block
128
- if (skip && line.trim() === '')
129
- continue;
130
- if (skip && !line.startsWith(' '))
131
- skip = false; // End of indented tool args
132
- if (skip)
133
- continue;
134
- textLines.push(line);
135
- }
136
- const text = textLines.join('\n').trim();
137
- if (text) {
138
- aiResponse = text;
139
- break;
140
- }
141
- }
142
- if (promptText || images.length > 0) {
143
- turns.push({
144
- prompt: promptText,
145
- toolCount: toolCallCount,
146
- timestamp: '',
147
- ...(aiResponse ? { aiResponse } : {}),
148
- ...(images.length > 0 ? { images } : {}),
149
- });
150
- }
151
- }
152
- return turns;
153
- }
154
- //# sourceMappingURL=cursor.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cursor.js","sourceRoot":"","sources":["../../../src/agents/cursor.ts"],"names":[],"mappings":"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"}
@@ -1,6 +0,0 @@
1
- export type { AgentAdapter, TranscriptTurn, HookFieldNames } from './adapter.js';
2
- export { findJsonlInSubdirs, createPerProjectAdapter } from './adapter.js';
3
- export { AgentRegistry } from './registry.js';
4
- export { claudeCodeAdapter } from './claude-code.js';
5
- export { cursorAdapter } from './cursor.js';
6
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/agents/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AACjF,OAAO,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AAC3E,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC"}
@@ -1,5 +0,0 @@
1
- export { findJsonlInSubdirs, createPerProjectAdapter } from './adapter.js';
2
- export { AgentRegistry } from './registry.js';
3
- export { claudeCodeAdapter } from './claude-code.js';
4
- export { cursorAdapter } from './cursor.js';
5
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/agents/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AAC3E,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC"}
@@ -1,34 +0,0 @@
1
- import type { AgentAdapter, TranscriptTurn } from './adapter.js';
2
- export declare class AgentRegistry {
3
- private adapters;
4
- constructor(additionalAdapters?: AgentAdapter[]);
5
- /**
6
- * Find and parse transcript turns for a session.
7
- * Tries each adapter in priority order. Returns the first match.
8
- */
9
- getTranscriptTurns(sessionId: string): {
10
- turns: TranscriptTurn[];
11
- source: string;
12
- } | null;
13
- /** List all registered adapter names */
14
- get adapterNames(): string[];
15
- /** Get a specific adapter by name */
16
- getAdapter(name: string): AgentAdapter | undefined;
17
- /** Detect which agent is currently active based on environment variables */
18
- detectActiveAgent(): AgentAdapter | undefined;
19
- /**
20
- * Parse turns from a known transcript file path (provided by hook).
21
- * Tries each adapter's parseTurns until one produces results.
22
- * Skips directory scanning entirely — the path is already known.
23
- */
24
- parseTurnsFromPath(filePath: string): {
25
- turns: TranscriptTurn[];
26
- source: string;
27
- } | null;
28
- /**
29
- * Resolve the plugin root directory from the active agent's environment variable.
30
- * Returns undefined if no agent env var is set (e.g., running from CLI directly).
31
- */
32
- resolvePluginRoot(): string | undefined;
33
- }
34
- //# sourceMappingURL=registry.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../src/agents/registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAejE,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAiB;gBAErB,kBAAkB,GAAE,YAAY,EAAO;IAInD;;;OAGG;IACH,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG;QAAE,KAAK,EAAE,cAAc,EAAE,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IAkBzF,wCAAwC;IACxC,IAAI,YAAY,IAAI,MAAM,EAAE,CAE3B;IAED,qCAAqC;IACrC,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS;IAIlD,4EAA4E;IAC5E,iBAAiB,IAAI,YAAY,GAAG,SAAS;IAS7C;;;;OAIG;IACH,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG;QAAE,KAAK,EAAE,cAAc,EAAE,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IAqBxF;;;OAGG;IACH,iBAAiB,IAAI,MAAM,GAAG,SAAS;CAOxC"}
@@ -1,95 +0,0 @@
1
- import { claudeCodeAdapter } from './claude-code.js';
2
- import { cursorAdapter } from './cursor.js';
3
- import fs from 'node:fs';
4
- /**
5
- * All known agent adapters, ordered by priority.
6
- * When searching for a transcript, adapters are tried in order.
7
- * Add new adapters here as agent support grows.
8
- */
9
- const ALL_ADAPTERS = [
10
- claudeCodeAdapter,
11
- cursorAdapter,
12
- ];
13
- export class AgentRegistry {
14
- adapters;
15
- constructor(additionalAdapters = []) {
16
- this.adapters = [...ALL_ADAPTERS, ...additionalAdapters];
17
- }
18
- /**
19
- * Find and parse transcript turns for a session.
20
- * Tries each adapter in priority order. Returns the first match.
21
- */
22
- getTranscriptTurns(sessionId) {
23
- for (const adapter of this.adapters) {
24
- const filePath = adapter.findTranscript(sessionId);
25
- if (!filePath)
26
- continue;
27
- try {
28
- const content = fs.readFileSync(filePath, 'utf-8');
29
- const turns = adapter.parseTurns(content);
30
- if (turns.length > 0) {
31
- return { turns, source: adapter.name };
32
- }
33
- }
34
- catch {
35
- // Adapter found a path but read/parse failed — try next
36
- }
37
- }
38
- return null;
39
- }
40
- /** List all registered adapter names */
41
- get adapterNames() {
42
- return this.adapters.map((a) => a.name);
43
- }
44
- /** Get a specific adapter by name */
45
- getAdapter(name) {
46
- return this.adapters.find((a) => a.name === name);
47
- }
48
- /** Detect which agent is currently active based on environment variables */
49
- detectActiveAgent() {
50
- for (const adapter of this.adapters) {
51
- if (process.env[adapter.pluginRootEnvVar]) {
52
- return adapter;
53
- }
54
- }
55
- return undefined;
56
- }
57
- /**
58
- * Parse turns from a known transcript file path (provided by hook).
59
- * Tries each adapter's parseTurns until one produces results.
60
- * Skips directory scanning entirely — the path is already known.
61
- */
62
- parseTurnsFromPath(filePath) {
63
- try {
64
- const content = fs.readFileSync(filePath, 'utf-8');
65
- // Try the active agent's parser first, then fall back to others
66
- const active = this.detectActiveAgent();
67
- const orderedAdapters = active
68
- ? [active, ...this.adapters.filter((a) => a !== active)]
69
- : this.adapters;
70
- for (const adapter of orderedAdapters) {
71
- const turns = adapter.parseTurns(content);
72
- if (turns.length > 0) {
73
- return { turns, source: `${adapter.name}:direct` };
74
- }
75
- }
76
- }
77
- catch {
78
- // File unreadable — caller will fall back to directory scanning
79
- }
80
- return null;
81
- }
82
- /**
83
- * Resolve the plugin root directory from the active agent's environment variable.
84
- * Returns undefined if no agent env var is set (e.g., running from CLI directly).
85
- */
86
- resolvePluginRoot() {
87
- for (const adapter of this.adapters) {
88
- const value = process.env[adapter.pluginRootEnvVar];
89
- if (value)
90
- return value;
91
- }
92
- return undefined;
93
- }
94
- }
95
- //# sourceMappingURL=registry.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../src/agents/registry.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,MAAM,SAAS,CAAC;AAEzB;;;;GAIG;AACH,MAAM,YAAY,GAAmB;IACnC,iBAAiB;IACjB,aAAa;CACd,CAAC;AAEF,MAAM,OAAO,aAAa;IAChB,QAAQ,CAAiB;IAEjC,YAAY,qBAAqC,EAAE;QACjD,IAAI,CAAC,QAAQ,GAAG,CAAC,GAAG,YAAY,EAAE,GAAG,kBAAkB,CAAC,CAAC;IAC3D,CAAC;IAED;;;OAGG;IACH,kBAAkB,CAAC,SAAiB;QAClC,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YACpC,MAAM,QAAQ,GAAG,OAAO,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;YACnD,IAAI,CAAC,QAAQ;gBAAE,SAAS;YAExB,IAAI,CAAC;gBACH,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;gBACnD,MAAM,KAAK,GAAG,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;gBAC1C,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACrB,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC;gBACzC,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,wDAAwD;YAC1D,CAAC;QACH,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,wCAAwC;IACxC,IAAI,YAAY;QACd,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAC1C,CAAC;IAED,qCAAqC;IACrC,UAAU,CAAC,IAAY;QACrB,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;IACpD,CAAC;IAED,4EAA4E;IAC5E,iBAAiB;QACf,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YACpC,IAAI,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,gBAAgB,CAAC,EAAE,CAAC;gBAC1C,OAAO,OAAO,CAAC;YACjB,CAAC;QACH,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED;;;;OAIG;IACH,kBAAkB,CAAC,QAAgB;QACjC,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YACnD,gEAAgE;YAChE,MAAM,MAAM,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACxC,MAAM,eAAe,GAAG,MAAM;gBAC5B,CAAC,CAAC,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC;gBACxD,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC;YAElB,KAAK,MAAM,OAAO,IAAI,eAAe,EAAE,CAAC;gBACtC,MAAM,KAAK,GAAG,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;gBAC1C,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACrB,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,SAAS,EAAE,CAAC;gBACrD,CAAC;YACH,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,gEAAgE;QAClE,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;OAGG;IACH,iBAAiB;QACf,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YACpC,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;YACpD,IAAI,KAAK;gBAAE,OAAO,KAAK,CAAC;QAC1B,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;CACF"}
@@ -1,20 +0,0 @@
1
- export interface ArtifactCandidate {
2
- path: string;
3
- content: string;
4
- }
5
- /**
6
- * Returns true if a relative path belongs to plugin/agent infrastructure
7
- * that should never be captured as a project artifact.
8
- */
9
- export declare function isExcludedPath(relativePath: string): boolean;
10
- /**
11
- * Filters a set of written/edited file paths by extension, gitignore,
12
- * and infrastructure exclusions, then reads final content from disk.
13
- *
14
- * Uses execFileSync (not exec) for git check-ignore — arguments are passed
15
- * as an array, so no shell injection risk.
16
- */
17
- export declare function collectArtifactCandidates(filePaths: Set<string>, config: {
18
- artifact_extensions: string[];
19
- }, projectRoot: string): ArtifactCandidate[];
20
- //# sourceMappingURL=candidates.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"candidates.d.ts","sourceRoot":"","sources":["../../../src/artifacts/candidates.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAyBD;;;GAGG;AACH,wBAAgB,cAAc,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAM5D;AAED;;;;;;GAMG;AACH,wBAAgB,yBAAyB,CACvC,SAAS,EAAE,GAAG,CAAC,MAAM,CAAC,EACtB,MAAM,EAAE;IAAE,mBAAmB,EAAE,MAAM,EAAE,CAAA;CAAE,EACzC,WAAW,EAAE,MAAM,GAClB,iBAAiB,EAAE,CAgCrB"}
@@ -1,84 +0,0 @@
1
- import { execFileSync } from 'node:child_process';
2
- import fs from 'node:fs';
3
- import path from 'node:path';
4
- /** Filenames (case-insensitive) that are agent/plugin infrastructure, not project artifacts. */
5
- const EXCLUDED_FILENAMES = new Set([
6
- 'claude.md',
7
- 'agents.md',
8
- 'gemini.md',
9
- 'readme.md',
10
- 'contributing.md',
11
- 'changelog.md',
12
- 'license.md',
13
- 'pull_request_template.md',
14
- ]);
15
- /** Directory prefixes (relative to project root) that contain plugin/agent components or repo infrastructure. */
16
- const EXCLUDED_PREFIXES = [
17
- 'commands/',
18
- 'skills/',
19
- 'hooks/',
20
- '.claude-plugin/',
21
- '.cursor-plugin/',
22
- '.claude/',
23
- '.github/',
24
- ];
25
- /**
26
- * Returns true if a relative path belongs to plugin/agent infrastructure
27
- * that should never be captured as a project artifact.
28
- */
29
- export function isExcludedPath(relativePath) {
30
- const basename = path.basename(relativePath).toLowerCase();
31
- if (EXCLUDED_FILENAMES.has(basename))
32
- return true;
33
- const normalized = relativePath.replace(/\\/g, '/');
34
- return EXCLUDED_PREFIXES.some((prefix) => normalized.startsWith(prefix));
35
- }
36
- /**
37
- * Filters a set of written/edited file paths by extension, gitignore,
38
- * and infrastructure exclusions, then reads final content from disk.
39
- *
40
- * Uses execFileSync (not exec) for git check-ignore — arguments are passed
41
- * as an array, so no shell injection risk.
42
- */
43
- export function collectArtifactCandidates(filePaths, config, projectRoot) {
44
- if (filePaths.size === 0)
45
- return [];
46
- // Filter by extension first (cheap)
47
- const extFiltered = [...filePaths].filter((absPath) => config.artifact_extensions.includes(path.extname(absPath)));
48
- if (extFiltered.length === 0)
49
- return [];
50
- // Batch git check-ignore: one subprocess instead of N
51
- const ignoredSet = getGitIgnored(extFiltered, projectRoot);
52
- const candidates = [];
53
- for (const absPath of extFiltered) {
54
- if (ignoredSet.has(absPath))
55
- continue;
56
- try {
57
- const content = fs.readFileSync(absPath, 'utf-8');
58
- const relativePath = path.relative(projectRoot, absPath);
59
- // Skip plugin/agent infrastructure files
60
- if (isExcludedPath(relativePath))
61
- continue;
62
- candidates.push({ path: relativePath, content });
63
- }
64
- catch {
65
- // File was deleted between event capture and now — skip
66
- }
67
- }
68
- return candidates;
69
- }
70
- function getGitIgnored(filePaths, cwd) {
71
- try {
72
- const result = execFileSync('git', ['check-ignore', ...filePaths], {
73
- cwd,
74
- stdio: ['pipe', 'pipe', 'pipe'],
75
- encoding: 'utf-8',
76
- });
77
- return new Set(result.trim().split('\n').filter(Boolean));
78
- }
79
- catch {
80
- // exit 1 = none are ignored (or git not available)
81
- return new Set();
82
- }
83
- }
84
- //# sourceMappingURL=candidates.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"candidates.js","sourceRoot":"","sources":["../../../src/artifacts/candidates.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export declare function slugifyPath(relativePath: string): string;
2
- //# sourceMappingURL=slugify.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"slugify.d.ts","sourceRoot":"","sources":["../../../src/artifacts/slugify.ts"],"names":[],"mappings":"AAIA,wBAAgB,WAAW,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAoBxD"}
@@ -1,22 +0,0 @@
1
- import crypto from 'node:crypto';
2
- import path from 'node:path';
3
- import { MAX_SLUG_LENGTH } from '../constants.js';
4
- export function slugifyPath(relativePath) {
5
- const ext = path.extname(relativePath);
6
- const withoutExt = ext ? relativePath.slice(0, -ext.length) : relativePath;
7
- let slug = withoutExt
8
- .replace(/[/\\]/g, '-')
9
- .toLowerCase()
10
- .replace(/\s+/g, '-')
11
- .replace(/[^a-z0-9-]/g, '');
12
- if (slug.length > MAX_SLUG_LENGTH) {
13
- const hash = crypto
14
- .createHash('sha256')
15
- .update(relativePath)
16
- .digest('hex')
17
- .slice(0, 6);
18
- slug = slug.slice(0, MAX_SLUG_LENGTH) + '-' + hash;
19
- }
20
- return slug;
21
- }
22
- //# sourceMappingURL=slugify.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"slugify.js","sourceRoot":"","sources":["../../../src/artifacts/slugify.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAElD,MAAM,UAAU,WAAW,CAAC,YAAoB;IAC9C,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;IACvC,MAAM,UAAU,GAAG,GAAG,CAAC,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC;IAE3E,IAAI,IAAI,GAAG,UAAU;SAClB,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC;SACtB,WAAW,EAAE;SACb,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC;SACpB,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC;IAE9B,IAAI,IAAI,CAAC,MAAM,GAAG,eAAe,EAAE,CAAC;QAClC,MAAM,IAAI,GAAG,MAAM;aAChB,UAAU,CAAC,QAAQ,CAAC;aACpB,MAAM,CAAC,YAAY,CAAC;aACpB,MAAM,CAAC,KAAK,CAAC;aACb,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACf,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,eAAe,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC;IACrD,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -1,20 +0,0 @@
1
- interface BufferOptions {
2
- maxEvents?: number;
3
- }
4
- export declare class EventBuffer {
5
- private bufferDir;
6
- private sessionId;
7
- private filePath;
8
- private maxEvents;
9
- private eventCount;
10
- constructor(bufferDir: string, sessionId: string, options?: BufferOptions);
11
- append(event: Record<string, unknown>): void;
12
- readAll(): Array<Record<string, unknown>>;
13
- count(): number;
14
- exists(): boolean;
15
- delete(): void;
16
- isOverflow(): boolean;
17
- getFilePath(): string;
18
- }
19
- export {};
20
- //# sourceMappingURL=buffer.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"buffer.d.ts","sourceRoot":"","sources":["../../../src/capture/buffer.ts"],"names":[],"mappings":"AAGA,UAAU,aAAa;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,qBAAa,WAAW;IAMpB,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,SAAS;IANnB,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,UAAU,CAAK;gBAGb,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACzB,OAAO,GAAE,aAAkB;IAW7B,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAY5C,OAAO,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAOzC,KAAK,IAAI,MAAM;IAIf,MAAM,IAAI,OAAO;IAIjB,MAAM,IAAI,IAAI;IAOd,UAAU,IAAI,OAAO;IAIrB,WAAW,IAAI,MAAM;CAGtB"}
@@ -1,55 +0,0 @@
1
- import fs from 'node:fs';
2
- import path from 'node:path';
3
- export class EventBuffer {
4
- bufferDir;
5
- sessionId;
6
- filePath;
7
- maxEvents;
8
- eventCount = 0;
9
- constructor(bufferDir, sessionId, options = {}) {
10
- this.bufferDir = bufferDir;
11
- this.sessionId = sessionId;
12
- this.filePath = path.join(bufferDir, `${sessionId}.jsonl`);
13
- this.maxEvents = options.maxEvents ?? 500;
14
- if (fs.existsSync(this.filePath)) {
15
- const content = fs.readFileSync(this.filePath, 'utf-8').trim();
16
- this.eventCount = content ? content.split('\n').length : 0;
17
- }
18
- }
19
- append(event) {
20
- fs.mkdirSync(this.bufferDir, { recursive: true });
21
- const line = JSON.stringify({
22
- ...event,
23
- timestamp: event.timestamp ?? new Date().toISOString(),
24
- });
25
- fs.appendFileSync(this.filePath, line + '\n');
26
- this.eventCount++;
27
- }
28
- readAll() {
29
- if (!fs.existsSync(this.filePath))
30
- return [];
31
- const content = fs.readFileSync(this.filePath, 'utf-8').trim();
32
- if (!content)
33
- return [];
34
- return content.split('\n').map((line) => JSON.parse(line));
35
- }
36
- count() {
37
- return this.eventCount;
38
- }
39
- exists() {
40
- return fs.existsSync(this.filePath);
41
- }
42
- delete() {
43
- if (fs.existsSync(this.filePath)) {
44
- fs.unlinkSync(this.filePath);
45
- }
46
- this.eventCount = 0;
47
- }
48
- isOverflow() {
49
- return this.eventCount > this.maxEvents;
50
- }
51
- getFilePath() {
52
- return this.filePath;
53
- }
54
- }
55
- //# sourceMappingURL=buffer.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"buffer.js","sourceRoot":"","sources":["../../../src/capture/buffer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAM7B,MAAM,OAAO,WAAW;IAMZ;IACA;IANF,QAAQ,CAAS;IACjB,SAAS,CAAS;IAClB,UAAU,GAAG,CAAC,CAAC;IAEvB,YACU,SAAiB,EACjB,SAAiB,EACzB,UAAyB,EAAE;QAFnB,cAAS,GAAT,SAAS,CAAQ;QACjB,cAAS,GAAT,SAAS,CAAQ;QAGzB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,SAAS,QAAQ,CAAC,CAAC;QAC3D,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,GAAG,CAAC;QAE1C,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;YACjC,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;YAC/D,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7D,CAAC;IACH,CAAC;IAED,MAAM,CAAC,KAA8B;QACnC,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAElD,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC;YAC1B,GAAG,KAAK;YACR,SAAS,EAAE,KAAK,CAAC,SAAS,IAAI,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACvD,CAAC,CAAC;QAEH,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,GAAG,IAAI,CAAC,CAAC;QAC9C,IAAI,CAAC,UAAU,EAAE,CAAC;IACpB,CAAC;IAED,OAAO;QACL,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC;YAAE,OAAO,EAAE,CAAC;QAC7C,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;QAC/D,IAAI,CAAC,OAAO;YAAE,OAAO,EAAE,CAAC;QACxB,OAAO,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;IAC7D,CAAC;IAED,KAAK;QACH,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;IAED,MAAM;QACJ,OAAO,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACtC,CAAC;IAED,MAAM;QACJ,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;YACjC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC/B,CAAC;QACD,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;IACtB,CAAC;IAED,UAAU;QACR,OAAO,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC;IAC1C,CAAC;IAED,WAAW;QACT,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;CACF"}
@@ -1,31 +0,0 @@
1
- import type { AgentAdapter } from '../agents/adapter.js';
2
- export type { TranscriptTurn } from '../agents/adapter.js';
3
- import type { TranscriptTurn } from '../agents/adapter.js';
4
- interface TranscriptConfig {
5
- /** Additional agent adapters to register (useful for testing or custom agents) */
6
- additionalAdapters?: AgentAdapter[];
7
- }
8
- export declare class TranscriptMiner {
9
- private registry;
10
- constructor(config?: TranscriptConfig);
11
- /**
12
- * Extract all conversation turns for a session.
13
- * Convenience wrapper — delegates to getAllTurnsWithSource.
14
- */
15
- getAllTurns(sessionId: string): TranscriptTurn[];
16
- /**
17
- * Extract turns using the hook-provided transcript path first (fast, no scanning),
18
- * then fall back to adapter registry scanning if the path isn't provided.
19
- */
20
- getAllTurnsWithSource(sessionId: string, transcriptPath?: string): {
21
- turns: TranscriptTurn[];
22
- source: string;
23
- };
24
- }
25
- /**
26
- * Build turns from buffer events — the fallback when no agent transcript is available.
27
- * Buffer events come from hooks (user_prompt, tool_use) and lack AI responses.
28
- * Turns will have prompts and tool counts but no aiResponse.
29
- */
30
- export declare function extractTurnsFromBuffer(events: Array<Record<string, unknown>>): TranscriptTurn[];
31
- //# sourceMappingURL=transcript-miner.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"transcript-miner.d.ts","sourceRoot":"","sources":["../../../src/capture/transcript-miner.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAKzD,YAAY,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAE3D,UAAU,gBAAgB;IACxB,kFAAkF;IAClF,kBAAkB,CAAC,EAAE,YAAY,EAAE,CAAC;CACrC;AAED,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAgB;gBAEpB,MAAM,CAAC,EAAE,gBAAgB;IAIrC;;;OAGG;IACH,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,cAAc,EAAE;IAIhD;;;OAGG;IACH,qBAAqB,CAAC,SAAS,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,MAAM,GAAG;QAAE,KAAK,EAAE,cAAc,EAAE,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE;CAY/G;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAAG,cAAc,EAAE,CAmB/F"}