@goondocks/myco 0.2.7 → 0.2.9

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 +0,0 @@
1
- {"version":3,"file":"batch.d.ts","sourceRoot":"","sources":["../../../src/daemon/batch.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,KAAK,mBAAmB,GAAG,CAAC,MAAM,EAAE,UAAU,EAAE,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAE1E,qBAAa,YAAY;IACvB,OAAO,CAAC,OAAO,CAAwC;IACvD,OAAO,CAAC,aAAa,CAAsB;gBAE/B,aAAa,EAAE,mBAAmB;IAI9C,QAAQ,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI;IAoBjC,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,UAAU,EAAE;IAMzC,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAIxC,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM;CAGrC"}
@@ -1,38 +0,0 @@
1
- export class BatchManager {
2
- batches = new Map();
3
- onBatchClosed;
4
- constructor(onBatchClosed) {
5
- this.onBatchClosed = onBatchClosed;
6
- }
7
- addEvent(event) {
8
- const sid = event.session_id;
9
- if (event.type === 'user_prompt') {
10
- const current = this.batches.get(sid);
11
- if (current && current.length > 0) {
12
- // Fire-and-forget, but log errors
13
- Promise.resolve(this.onBatchClosed(current)).catch((err) => {
14
- console.error(`[mycod] batch callback error: ${err.message}`);
15
- });
16
- }
17
- this.batches.set(sid, [event]);
18
- }
19
- else {
20
- const current = this.batches.get(sid);
21
- if (current) {
22
- current.push(event);
23
- }
24
- }
25
- }
26
- finalize(sessionId) {
27
- const current = this.batches.get(sessionId);
28
- this.batches.delete(sessionId);
29
- return current ?? [];
30
- }
31
- hasOpenBatch(sessionId) {
32
- return this.batches.has(sessionId) && this.batches.get(sessionId).length > 0;
33
- }
34
- batchSize(sessionId) {
35
- return this.batches.get(sessionId)?.length ?? 0;
36
- }
37
- }
38
- //# sourceMappingURL=batch.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"batch.js","sourceRoot":"","sources":["../../../src/daemon/batch.ts"],"names":[],"mappings":"AAaA,MAAM,OAAO,YAAY;IACf,OAAO,GAA8B,IAAI,GAAG,EAAE,CAAC;IAC/C,aAAa,CAAsB;IAE3C,YAAY,aAAkC;QAC5C,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;IACrC,CAAC;IAED,QAAQ,CAAC,KAAiB;QACxB,MAAM,GAAG,GAAG,KAAK,CAAC,UAAU,CAAC;QAE7B,IAAI,KAAK,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;YACjC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACtC,IAAI,OAAO,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAClC,kCAAkC;gBAClC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;oBACzD,OAAO,CAAC,KAAK,CAAC,iCAAkC,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;gBAC3E,CAAC,CAAC,CAAC;YACL,CAAC;YACD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;QACjC,CAAC;aAAM,CAAC;YACN,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACtC,IAAI,OAAO,EAAE,CAAC;gBACZ,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACtB,CAAC;QACH,CAAC;IACH,CAAC;IAED,QAAQ,CAAC,SAAiB;QACxB,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAC5C,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAC/B,OAAO,OAAO,IAAI,EAAE,CAAC;IACvB,CAAC;IAED,YAAY,CAAC,SAAiB;QAC5B,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAE,CAAC,MAAM,GAAG,CAAC,CAAC;IAChF,CAAC;IAED,SAAS,CAAC,SAAiB;QACzB,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC,CAAC;IAClD,CAAC;CACF"}
@@ -1,27 +0,0 @@
1
- export interface SessionMetadata {
2
- started_at: string;
3
- branch?: string;
4
- }
5
- export interface RegisteredSession extends SessionMetadata {
6
- id: string;
7
- }
8
- interface RegistryOptions {
9
- gracePeriod: number;
10
- onEmpty: () => void;
11
- }
12
- export declare class SessionRegistry {
13
- private _sessions;
14
- private graceTimer;
15
- private gracePeriod;
16
- private onEmpty;
17
- constructor(options: RegistryOptions);
18
- get sessions(): string[];
19
- register(sessionId: string, metadata?: SessionMetadata): void;
20
- getSession(sessionId: string): RegisteredSession | undefined;
21
- unregister(sessionId: string): void;
22
- destroy(): void;
23
- private startGrace;
24
- private cancelGrace;
25
- }
26
- export {};
27
- //# sourceMappingURL=lifecycle.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"lifecycle.d.ts","sourceRoot":"","sources":["../../../src/daemon/lifecycle.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,eAAe;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,iBAAkB,SAAQ,eAAe;IACxD,EAAE,EAAE,MAAM,CAAC;CACZ;AAED,UAAU,eAAe;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB;AAED,qBAAa,eAAe;IAC1B,OAAO,CAAC,SAAS,CAA2C;IAC5D,OAAO,CAAC,UAAU,CAA8C;IAChE,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,OAAO,CAAa;gBAEhB,OAAO,EAAE,eAAe;IAKpC,IAAI,QAAQ,IAAI,MAAM,EAAE,CAEvB;IAED,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,eAAe,GAAG,IAAI;IAO7D,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,iBAAiB,GAAG,SAAS;IAM5D,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAOnC,OAAO,IAAI,IAAI;IAKf,OAAO,CAAC,UAAU;IASlB,OAAO,CAAC,WAAW;CAMpB"}
@@ -1,50 +0,0 @@
1
- export class SessionRegistry {
2
- _sessions = new Map();
3
- graceTimer = null;
4
- gracePeriod;
5
- onEmpty;
6
- constructor(options) {
7
- this.gracePeriod = options.gracePeriod;
8
- this.onEmpty = options.onEmpty;
9
- }
10
- get sessions() {
11
- return [...this._sessions.keys()];
12
- }
13
- register(sessionId, metadata) {
14
- if (!this._sessions.has(sessionId)) {
15
- this._sessions.set(sessionId, metadata ?? { started_at: new Date().toISOString() });
16
- }
17
- this.cancelGrace();
18
- }
19
- getSession(sessionId) {
20
- const meta = this._sessions.get(sessionId);
21
- if (!meta)
22
- return undefined;
23
- return { id: sessionId, ...meta };
24
- }
25
- unregister(sessionId) {
26
- this._sessions.delete(sessionId);
27
- if (this._sessions.size === 0) {
28
- this.startGrace();
29
- }
30
- }
31
- destroy() {
32
- this.cancelGrace();
33
- this._sessions.clear();
34
- }
35
- startGrace() {
36
- this.cancelGrace();
37
- this.graceTimer = setTimeout(() => {
38
- if (this._sessions.size === 0) {
39
- this.onEmpty();
40
- }
41
- }, this.gracePeriod * 1000);
42
- }
43
- cancelGrace() {
44
- if (this.graceTimer) {
45
- clearTimeout(this.graceTimer);
46
- this.graceTimer = null;
47
- }
48
- }
49
- }
50
- //# sourceMappingURL=lifecycle.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"lifecycle.js","sourceRoot":"","sources":["../../../src/daemon/lifecycle.ts"],"names":[],"mappings":"AAcA,MAAM,OAAO,eAAe;IAClB,SAAS,GAAiC,IAAI,GAAG,EAAE,CAAC;IACpD,UAAU,GAAyC,IAAI,CAAC;IACxD,WAAW,CAAS;IACpB,OAAO,CAAa;IAE5B,YAAY,OAAwB;QAClC,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;QACvC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IACjC,CAAC;IAED,IAAI,QAAQ;QACV,OAAO,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC;IACpC,CAAC;IAED,QAAQ,CAAC,SAAiB,EAAE,QAA0B;QACpD,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;YACnC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,EAAE,QAAQ,IAAI,EAAE,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;QACtF,CAAC;QACD,IAAI,CAAC,WAAW,EAAE,CAAC;IACrB,CAAC;IAED,UAAU,CAAC,SAAiB;QAC1B,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAC3C,IAAI,CAAC,IAAI;YAAE,OAAO,SAAS,CAAC;QAC5B,OAAO,EAAE,EAAE,EAAE,SAAS,EAAE,GAAG,IAAI,EAAE,CAAC;IACpC,CAAC;IAED,UAAU,CAAC,SAAiB;QAC1B,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QACjC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;YAC9B,IAAI,CAAC,UAAU,EAAE,CAAC;QACpB,CAAC;IACH,CAAC;IAED,OAAO;QACL,IAAI,CAAC,WAAW,EAAE,CAAC;QACnB,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;IACzB,CAAC;IAEO,UAAU;QAChB,IAAI,CAAC,WAAW,EAAE,CAAC;QACnB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC,GAAG,EAAE;YAChC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;gBAC9B,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,CAAC;QACH,CAAC,EAAE,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC;IAC9B,CAAC;IAEO,WAAW;QACjB,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACpB,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAC9B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACzB,CAAC;IACH,CAAC;CACF"}
@@ -1,42 +0,0 @@
1
- import type { RegisteredSession } from './lifecycle.js';
2
- export declare const LINEAGE_IMMEDIATE_GAP_SECONDS = 5;
3
- export declare const LINEAGE_FALLBACK_MAX_HOURS = 24;
4
- export declare const LINEAGE_SIMILARITY_THRESHOLD = 0.7;
5
- export declare const LINEAGE_SIMILARITY_HIGH_CONFIDENCE = 0.9;
6
- export declare const LINEAGE_SIMILARITY_CANDIDATES = 3;
7
- export declare const LINEAGE_SIMILARITY_MAX_TOKENS = 8;
8
- interface RecentSession {
9
- id: string;
10
- ended?: string;
11
- branch?: string;
12
- }
13
- interface SessionContext {
14
- started_at: string;
15
- branch?: string;
16
- }
17
- export interface LineageLink {
18
- parent: string;
19
- child: string;
20
- signal: 'clear' | 'clear_active' | 'inferred' | 'plan_reference' | 'semantic_similarity';
21
- confidence: 'high' | 'medium' | 'low';
22
- timestamp?: string;
23
- }
24
- export declare class LineageGraph {
25
- private state;
26
- private filePath;
27
- constructor(vaultDir: string);
28
- addLink(link: LineageLink): void;
29
- /** Register an artifact (plan, spec, doc) as produced by a session. */
30
- registerArtifactForSession(sessionId: string, artifactId: string): void;
31
- /** @deprecated Use registerArtifactForSession instead */
32
- registerPlanForSession(sessionId: string, planId: string): void;
33
- detectLineage(childSessionId: string, firstPrompt: string): LineageLink | null;
34
- detectHeuristicParent(childSessionId: string, context: SessionContext, recentSessions: RecentSession[], activeSessions: RegisteredSession[], firstPrompt?: string): LineageLink | null;
35
- getLinks(): LineageLink[];
36
- getChildren(sessionId: string): string[];
37
- getParent(sessionId: string): string | undefined;
38
- private load;
39
- private persist;
40
- }
41
- export {};
42
- //# sourceMappingURL=lineage.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"lineage.d.ts","sourceRoot":"","sources":["../../../src/daemon/lineage.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAExD,eAAO,MAAM,6BAA6B,IAAI,CAAC;AAC/C,eAAO,MAAM,0BAA0B,KAAK,CAAC;AAC7C,eAAO,MAAM,4BAA4B,MAAM,CAAC;AAChD,eAAO,MAAM,kCAAkC,MAAM,CAAC;AACtD,eAAO,MAAM,6BAA6B,IAAI,CAAC;AAC/C,eAAO,MAAM,6BAA6B,IAAI,CAAC;AAK/C,UAAU,aAAa;IACrB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,UAAU,cAAc;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,OAAO,GAAG,cAAc,GAAG,UAAU,GAAG,gBAAgB,GAAG,qBAAqB,CAAC;IACzF,UAAU,EAAE,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;IACtC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAUD,qBAAa,YAAY;IACvB,OAAO,CAAC,KAAK,CAAe;IAC5B,OAAO,CAAC,QAAQ,CAAS;gBAEb,QAAQ,EAAE,MAAM;IAM5B,OAAO,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI;IAMhC,uEAAuE;IACvE,0BAA0B,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI;IAQvE,yDAAyD;IACzD,sBAAsB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAI/D,aAAa,CAAC,cAAc,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI;IAc9E,qBAAqB,CACnB,cAAc,EAAE,MAAM,EACtB,OAAO,EAAE,cAAc,EACvB,cAAc,EAAE,aAAa,EAAE,EAC/B,cAAc,EAAE,iBAAiB,EAAE,EACnC,WAAW,CAAC,EAAE,MAAM,GACnB,WAAW,GAAG,IAAI;IA8CrB,QAAQ,IAAI,WAAW,EAAE;IACzB,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,EAAE;IACxC,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAEhD,OAAO,CAAC,IAAI;IAUZ,OAAO,CAAC,OAAO;CAKhB"}
@@ -1,116 +0,0 @@
1
- import fs from 'node:fs';
2
- import path from 'node:path';
3
- export const LINEAGE_IMMEDIATE_GAP_SECONDS = 5;
4
- export const LINEAGE_FALLBACK_MAX_HOURS = 24;
5
- export const LINEAGE_SIMILARITY_THRESHOLD = 0.7;
6
- export const LINEAGE_SIMILARITY_HIGH_CONFIDENCE = 0.9;
7
- export const LINEAGE_SIMILARITY_CANDIDATES = 3;
8
- export const LINEAGE_SIMILARITY_MAX_TOKENS = 8; // expects a single float score
9
- const MS_PER_SECOND = 1000;
10
- const MS_PER_HOUR = 3_600_000;
11
- export class LineageGraph {
12
- state;
13
- filePath;
14
- constructor(vaultDir) {
15
- this.filePath = path.join(vaultDir, 'lineage.json');
16
- fs.mkdirSync(path.dirname(this.filePath), { recursive: true });
17
- this.state = this.load();
18
- }
19
- addLink(link) {
20
- if (this.state.links.some((l) => l.parent === link.parent && l.child === link.child))
21
- return;
22
- this.state.links.push({ ...link, timestamp: link.timestamp ?? new Date().toISOString() });
23
- this.persist();
24
- }
25
- /** Register an artifact (plan, spec, doc) as produced by a session. */
26
- registerArtifactForSession(sessionId, artifactId) {
27
- if (!this.state.sessionArtifacts[sessionId])
28
- this.state.sessionArtifacts[sessionId] = [];
29
- if (!this.state.sessionArtifacts[sessionId].includes(artifactId)) {
30
- this.state.sessionArtifacts[sessionId].push(artifactId);
31
- this.persist();
32
- }
33
- }
34
- /** @deprecated Use registerArtifactForSession instead */
35
- registerPlanForSession(sessionId, planId) {
36
- this.registerArtifactForSession(sessionId, planId);
37
- }
38
- detectLineage(childSessionId, firstPrompt) {
39
- for (const [sessionId, artifactIds] of Object.entries(this.state.sessionArtifacts)) {
40
- if (sessionId === childSessionId)
41
- continue;
42
- for (const artifactId of artifactIds) {
43
- if (firstPrompt.includes(artifactId)) {
44
- const link = { parent: sessionId, child: childSessionId, signal: 'plan_reference', confidence: 'high' };
45
- this.addLink(link);
46
- return link;
47
- }
48
- }
49
- }
50
- return null;
51
- }
52
- detectHeuristicParent(childSessionId, context, recentSessions, activeSessions, firstPrompt) {
53
- const startedAt = new Date(context.started_at).getTime();
54
- // Tier 1: session ended within LINEAGE_IMMEDIATE_GAP_SECONDS
55
- for (const session of recentSessions) {
56
- if (!session.ended)
57
- continue;
58
- const endedAt = new Date(session.ended).getTime();
59
- const gapSeconds = (startedAt - endedAt) / MS_PER_SECOND;
60
- if (gapSeconds >= 0 && gapSeconds <= LINEAGE_IMMEDIATE_GAP_SECONDS) {
61
- const link = { parent: session.id, child: childSessionId, signal: 'clear', confidence: 'high' };
62
- this.addLink(link);
63
- return link;
64
- }
65
- }
66
- // Tier 2: active session (race condition)
67
- for (const session of activeSessions) {
68
- if (session.id === childSessionId)
69
- continue;
70
- const link = { parent: session.id, child: childSessionId, signal: 'clear_active', confidence: 'high' };
71
- this.addLink(link);
72
- return link;
73
- }
74
- // Tier 3: recently completed session on same branch within LINEAGE_FALLBACK_MAX_HOURS
75
- if (context.branch) {
76
- for (const session of recentSessions) {
77
- if (!session.ended || !session.branch)
78
- continue;
79
- if (session.branch !== context.branch)
80
- continue;
81
- const endedAt = new Date(session.ended).getTime();
82
- const hoursAgo = (startedAt - endedAt) / MS_PER_HOUR;
83
- if (hoursAgo >= 0 && hoursAgo <= LINEAGE_FALLBACK_MAX_HOURS) {
84
- const link = { parent: session.id, child: childSessionId, signal: 'inferred', confidence: 'medium' };
85
- this.addLink(link);
86
- return link;
87
- }
88
- }
89
- }
90
- // Plan-reference detection (existing method)
91
- if (firstPrompt) {
92
- return this.detectLineage(childSessionId, firstPrompt);
93
- }
94
- return null;
95
- }
96
- getLinks() { return [...this.state.links]; }
97
- getChildren(sessionId) { return this.state.links.filter((l) => l.parent === sessionId).map((l) => l.child); }
98
- getParent(sessionId) { return this.state.links.find((l) => l.child === sessionId)?.parent; }
99
- load() {
100
- try {
101
- const raw = JSON.parse(fs.readFileSync(this.filePath, 'utf-8'));
102
- // Migrate from old sessionPlans to sessionArtifacts
103
- const sessionArtifacts = (raw.sessionArtifacts ?? raw.sessionPlans ?? {});
104
- return { links: (raw.links ?? []), sessionArtifacts };
105
- }
106
- catch {
107
- return { links: [], sessionArtifacts: {} };
108
- }
109
- }
110
- persist() {
111
- const tmp = this.filePath + '.tmp';
112
- fs.writeFileSync(tmp, JSON.stringify(this.state, null, 2));
113
- fs.renameSync(tmp, this.filePath);
114
- }
115
- }
116
- //# sourceMappingURL=lineage.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"lineage.js","sourceRoot":"","sources":["../../../src/daemon/lineage.ts"],"names":[],"mappings":"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"}
@@ -1,33 +0,0 @@
1
- export interface LogEntry {
2
- timestamp: string;
3
- level: string;
4
- component: string;
5
- message: string;
6
- [key: string]: unknown;
7
- }
8
- export type LogLevel = 'debug' | 'info' | 'warn' | 'error';
9
- export declare const LEVEL_ORDER: Record<LogLevel, number>;
10
- interface LoggerOptions {
11
- level?: LogLevel;
12
- maxSize?: number;
13
- maxFiles?: number;
14
- }
15
- export declare class DaemonLogger {
16
- private logPath;
17
- private fd;
18
- private currentSize;
19
- private level;
20
- private maxSize;
21
- private maxFiles;
22
- private logDir;
23
- constructor(logDir: string, options?: LoggerOptions);
24
- debug(component: string, message: string, data?: Record<string, unknown>): void;
25
- info(component: string, message: string, data?: Record<string, unknown>): void;
26
- warn(component: string, message: string, data?: Record<string, unknown>): void;
27
- error(component: string, message: string, data?: Record<string, unknown>): void;
28
- close(): void;
29
- private write;
30
- private rotate;
31
- }
32
- export {};
33
- //# sourceMappingURL=logger.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../../src/daemon/logger.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,QAAQ;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;AAE3D,eAAO,MAAM,WAAW,EAAE,MAAM,CAAC,QAAQ,EAAE,MAAM,CAEhD,CAAC;AAEF,UAAU,aAAa;IACrB,KAAK,CAAC,EAAE,QAAQ,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,qBAAa,YAAY;IACvB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,EAAE,CAAuB;IACjC,OAAO,CAAC,WAAW,CAAK;IACxB,OAAO,CAAC,KAAK,CAAW;IACxB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,MAAM,CAAS;gBAEX,MAAM,EAAE,MAAM,EAAE,OAAO,GAAE,aAAkB;IAgBvD,KAAK,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAI/E,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAI9E,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAI9E,KAAK,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAI/E,KAAK,IAAI,IAAI;IAOb,OAAO,CAAC,KAAK;IAwBb,OAAO,CAAC,MAAM;CAsBf"}
@@ -1,88 +0,0 @@
1
- import fs from 'node:fs';
2
- import path from 'node:path';
3
- export const LEVEL_ORDER = {
4
- debug: 0, info: 1, warn: 2, error: 3,
5
- };
6
- export class DaemonLogger {
7
- logPath;
8
- fd = null;
9
- currentSize = 0;
10
- level;
11
- maxSize;
12
- maxFiles;
13
- logDir;
14
- constructor(logDir, options = {}) {
15
- this.logDir = logDir;
16
- this.logPath = path.join(logDir, 'daemon.log');
17
- this.level = options.level ?? 'info';
18
- this.maxSize = options.maxSize ?? 5_242_880;
19
- this.maxFiles = options.maxFiles ?? 3;
20
- fs.mkdirSync(logDir, { recursive: true });
21
- this.fd = fs.openSync(this.logPath, 'a');
22
- try {
23
- this.currentSize = fs.fstatSync(this.fd).size;
24
- }
25
- catch {
26
- this.currentSize = 0;
27
- }
28
- }
29
- debug(component, message, data) {
30
- this.write('debug', component, message, data);
31
- }
32
- info(component, message, data) {
33
- this.write('info', component, message, data);
34
- }
35
- warn(component, message, data) {
36
- this.write('warn', component, message, data);
37
- }
38
- error(component, message, data) {
39
- this.write('error', component, message, data);
40
- }
41
- close() {
42
- if (this.fd !== null) {
43
- fs.closeSync(this.fd);
44
- this.fd = null;
45
- }
46
- }
47
- write(level, component, message, data) {
48
- if (LEVEL_ORDER[level] < LEVEL_ORDER[this.level])
49
- return;
50
- const entry = {
51
- timestamp: new Date().toISOString(),
52
- level,
53
- component,
54
- message,
55
- ...data,
56
- };
57
- const line = JSON.stringify(entry) + '\n';
58
- const bytes = Buffer.byteLength(line);
59
- if (this.currentSize + bytes > this.maxSize) {
60
- this.rotate();
61
- }
62
- if (this.fd !== null) {
63
- fs.writeSync(this.fd, line);
64
- this.currentSize += bytes;
65
- }
66
- }
67
- rotate() {
68
- this.close();
69
- for (let i = this.maxFiles - 1; i >= 1; i--) {
70
- const from = path.join(this.logDir, `daemon.${i}.log`);
71
- const to = path.join(this.logDir, `daemon.${i + 1}.log`);
72
- if (fs.existsSync(from)) {
73
- if (i + 1 > this.maxFiles) {
74
- fs.unlinkSync(from);
75
- }
76
- else {
77
- fs.renameSync(from, to);
78
- }
79
- }
80
- }
81
- if (fs.existsSync(this.logPath)) {
82
- fs.renameSync(this.logPath, path.join(this.logDir, 'daemon.1.log'));
83
- }
84
- this.fd = fs.openSync(this.logPath, 'a');
85
- this.currentSize = 0;
86
- }
87
- }
88
- //# sourceMappingURL=logger.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../../src/daemon/logger.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export declare function migrateMemoryFiles(vaultDir: string): number;
2
- //# sourceMappingURL=main.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../../../src/daemon/main.ts"],"names":[],"mappings":"AA4GA,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAoC3D"}
@@ -1,44 +0,0 @@
1
- import type { LlmProvider } from '../intelligence/llm.js';
2
- import type { ObservationType, ArtifactType } from '../vault/types.js';
3
- export interface Observation {
4
- type: ObservationType;
5
- title: string;
6
- content: string;
7
- tags: string[];
8
- root_cause?: string;
9
- fix?: string;
10
- rationale?: string;
11
- alternatives_rejected?: string;
12
- gained?: string;
13
- sacrificed?: string;
14
- }
15
- export interface ProcessorResult {
16
- summary: string;
17
- observations: Observation[];
18
- degraded: boolean;
19
- }
20
- export interface ClassifiedArtifact {
21
- source_path: string;
22
- artifact_type: ArtifactType;
23
- title: string;
24
- tags: string[];
25
- }
26
- export declare class BufferProcessor {
27
- private backend;
28
- private contextWindow;
29
- constructor(backend: LlmProvider, contextWindow?: number);
30
- private truncateForContext;
31
- process(events: Array<Record<string, unknown>>, sessionId: string): Promise<ProcessorResult>;
32
- private buildPromptForExtraction;
33
- summarizeSession(conversationMarkdown: string, sessionId: string, user?: string): Promise<{
34
- summary: string;
35
- title: string;
36
- }>;
37
- classifyArtifacts(candidates: Array<{
38
- path: string;
39
- content: string;
40
- }>, sessionId: string): Promise<ClassifiedArtifact[]>;
41
- private buildPromptForClassification;
42
- private summarizeEvents;
43
- }
44
- //# sourceMappingURL=processor.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"processor.d.ts","sourceRoot":"","sources":["../../../src/daemon/processor.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAG1D,OAAO,KAAK,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAIvE,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,eAAe,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,WAAW,EAAE,CAAC;IAC5B,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,kBAAkB;IACjC,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,YAAY,CAAC;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,EAAE,CAAC;CAChB;AAWD,qBAAa,eAAe;IACd,OAAO,CAAC,OAAO;IAAe,OAAO,CAAC,aAAa;gBAA3C,OAAO,EAAE,WAAW,EAAU,aAAa,GAAE,MAAa;IAE9E,OAAO,CAAC,kBAAkB;IAQpB,OAAO,CACX,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EACtC,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,eAAe,CAAC;IAyB3B,OAAO,CAAC,wBAAwB;IAQ1B,gBAAgB,CACpB,oBAAoB,EAAE,MAAM,EAC5B,SAAS,EAAE,MAAM,EACjB,IAAI,CAAC,EAAE,MAAM,GACZ,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAwBxC,iBAAiB,CACrB,UAAU,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,EACpD,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,kBAAkB,EAAE,CAAC;IAUhC,OAAO,CAAC,4BAA4B;IAOpC,OAAO,CAAC,eAAe;CA2DxB"}
@@ -1,142 +0,0 @@
1
- import { z } from 'zod';
2
- import { ARTIFACT_TYPES } from '../vault/types.js';
3
- import { CHARS_PER_TOKEN, EXTRACTION_MAX_TOKENS, SUMMARY_MAX_TOKENS, TITLE_MAX_TOKENS, CLASSIFICATION_MAX_TOKENS, PROMPT_PREVIEW_CHARS, AI_RESPONSE_PREVIEW_CHARS, COMMAND_PREVIEW_CHARS } from '../constants.js';
4
- import { buildExtractionPrompt, buildSummaryPrompt, buildTitlePrompt, buildClassificationPrompt } from '../prompts/index.js';
5
- import { extractJson, stripReasoningTokens } from '../intelligence/response.js';
6
- const ClassificationResponseSchema = z.object({
7
- artifacts: z.array(z.object({
8
- source_path: z.string(),
9
- artifact_type: z.enum(ARTIFACT_TYPES),
10
- title: z.string(),
11
- tags: z.array(z.string()).default([]),
12
- })).default([]),
13
- });
14
- export class BufferProcessor {
15
- backend;
16
- contextWindow;
17
- constructor(backend, contextWindow = 8192) {
18
- this.backend = backend;
19
- this.contextWindow = contextWindow;
20
- }
21
- truncateForContext(data, maxTokens) {
22
- const available = this.contextWindow - maxTokens;
23
- const dataTokens = Math.ceil(data.length / CHARS_PER_TOKEN);
24
- if (dataTokens <= available)
25
- return data;
26
- const charBudget = available * CHARS_PER_TOKEN;
27
- return data.slice(0, charBudget);
28
- }
29
- async process(events, sessionId) {
30
- const rawPrompt = this.buildPromptForExtraction(events, sessionId);
31
- const prompt = this.truncateForContext(rawPrompt, EXTRACTION_MAX_TOKENS);
32
- try {
33
- const response = await this.backend.summarize(prompt, { maxTokens: EXTRACTION_MAX_TOKENS });
34
- const parsed = extractJson(response.text);
35
- return {
36
- summary: parsed.summary,
37
- observations: parsed.observations ?? [],
38
- degraded: false,
39
- };
40
- }
41
- catch (error) {
42
- return {
43
- summary: `LLM processing failed for session ${sessionId}. ${events.length} events captured. Error: ${error.message}`,
44
- observations: [],
45
- degraded: true,
46
- };
47
- }
48
- }
49
- buildPromptForExtraction(events, sessionId) {
50
- const toolSummary = this.summarizeEvents(events);
51
- return buildExtractionPrompt(sessionId, events.length, toolSummary);
52
- }
53
- async summarizeSession(conversationMarkdown, sessionId, user) {
54
- const truncatedContent = this.truncateForContext(conversationMarkdown, SUMMARY_MAX_TOKENS);
55
- const summaryPrompt = buildSummaryPrompt(sessionId, user ?? 'unknown', truncatedContent);
56
- let summaryText;
57
- try {
58
- const response = await this.backend.summarize(summaryPrompt, { maxTokens: SUMMARY_MAX_TOKENS });
59
- summaryText = stripReasoningTokens(response.text);
60
- }
61
- catch (error) {
62
- summaryText = `Session ${sessionId} — summarization failed: ${error.message}`;
63
- }
64
- const titlePrompt = buildTitlePrompt(summaryText, sessionId);
65
- let title;
66
- try {
67
- const response = await this.backend.summarize(titlePrompt, { maxTokens: TITLE_MAX_TOKENS });
68
- title = stripReasoningTokens(response.text).trim();
69
- }
70
- catch {
71
- title = `Session ${sessionId}`;
72
- }
73
- return { summary: summaryText, title };
74
- }
75
- async classifyArtifacts(candidates, sessionId) {
76
- if (candidates.length === 0)
77
- return [];
78
- const prompt = this.buildPromptForClassification(candidates, sessionId);
79
- const response = await this.backend.summarize(prompt, { maxTokens: CLASSIFICATION_MAX_TOKENS });
80
- const raw = extractJson(response.text);
81
- const parsed = ClassificationResponseSchema.parse(raw);
82
- return parsed.artifacts;
83
- }
84
- buildPromptForClassification(candidates, sessionId) {
85
- return buildClassificationPrompt(sessionId, candidates);
86
- }
87
- summarizeEvents(events) {
88
- const toolCounts = new Map();
89
- const filesAccessed = new Set();
90
- const prompts = [];
91
- const aiResponses = [];
92
- for (const event of events) {
93
- if (event.type === 'user_prompt') {
94
- const prompt = String(event.prompt ?? '');
95
- if (prompt)
96
- prompts.push(prompt.slice(0, PROMPT_PREVIEW_CHARS));
97
- continue;
98
- }
99
- if (event.type === 'ai_response') {
100
- const content = String(event.content ?? '');
101
- if (content)
102
- aiResponses.push(content.slice(0, AI_RESPONSE_PREVIEW_CHARS));
103
- continue;
104
- }
105
- // Hooks send tool_name/tool_input; also support legacy tool/input
106
- const tool = String(event.tool_name ?? event.tool ?? 'unknown');
107
- toolCounts.set(tool, (toolCounts.get(tool) ?? 0) + 1);
108
- const input = (event.tool_input ?? event.input);
109
- if (input?.path)
110
- filesAccessed.add(String(input.path));
111
- if (input?.file_path)
112
- filesAccessed.add(String(input.file_path));
113
- if (input?.command)
114
- filesAccessed.add(`[cmd] ${String(input.command).slice(0, COMMAND_PREVIEW_CHARS)}`);
115
- }
116
- const lines = [];
117
- if (prompts.length > 0) {
118
- lines.push('### User Prompts');
119
- for (const p of prompts) {
120
- lines.push(`- "${p}"`);
121
- }
122
- }
123
- lines.push('\n### Tool Usage');
124
- for (const [tool, count] of toolCounts) {
125
- lines.push(`- ${tool}: ${count} calls`);
126
- }
127
- if (filesAccessed.size > 0) {
128
- lines.push('\n### Files Accessed');
129
- for (const file of filesAccessed) {
130
- lines.push(`- ${file}`);
131
- }
132
- }
133
- if (aiResponses.length > 0) {
134
- lines.push('\n### AI Responses');
135
- for (const r of aiResponses) {
136
- lines.push(`- "${r}"`);
137
- }
138
- }
139
- return lines.join('\n');
140
- }
141
- }
142
- //# sourceMappingURL=processor.js.map