@goondocks/myco 0.1.0

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 (308) hide show
  1. package/.claude-plugin/marketplace.json +22 -0
  2. package/.claude-plugin/plugin.json +18 -0
  3. package/CONTRIBUTING.md +143 -0
  4. package/LICENSE +21 -0
  5. package/README.md +74 -0
  6. package/commands/init.md +231 -0
  7. package/commands/setup-llm.md +89 -0
  8. package/commands/status.md +112 -0
  9. package/dist/src/agents/adapter.d.ts +76 -0
  10. package/dist/src/agents/adapter.d.ts.map +1 -0
  11. package/dist/src/agents/adapter.js +124 -0
  12. package/dist/src/agents/adapter.js.map +1 -0
  13. package/dist/src/agents/claude-code.d.ts +3 -0
  14. package/dist/src/agents/claude-code.d.ts.map +1 -0
  15. package/dist/src/agents/claude-code.js +22 -0
  16. package/dist/src/agents/claude-code.js.map +1 -0
  17. package/dist/src/agents/cursor.d.ts +3 -0
  18. package/dist/src/agents/cursor.d.ts.map +1 -0
  19. package/dist/src/agents/cursor.js +154 -0
  20. package/dist/src/agents/cursor.js.map +1 -0
  21. package/dist/src/agents/index.d.ts +6 -0
  22. package/dist/src/agents/index.d.ts.map +1 -0
  23. package/dist/src/agents/index.js +5 -0
  24. package/dist/src/agents/index.js.map +1 -0
  25. package/dist/src/agents/registry.d.ts +34 -0
  26. package/dist/src/agents/registry.d.ts.map +1 -0
  27. package/dist/src/agents/registry.js +95 -0
  28. package/dist/src/agents/registry.js.map +1 -0
  29. package/dist/src/artifacts/candidates.d.ts +20 -0
  30. package/dist/src/artifacts/candidates.d.ts.map +1 -0
  31. package/dist/src/artifacts/candidates.js +84 -0
  32. package/dist/src/artifacts/candidates.js.map +1 -0
  33. package/dist/src/artifacts/slugify.d.ts +2 -0
  34. package/dist/src/artifacts/slugify.d.ts.map +1 -0
  35. package/dist/src/artifacts/slugify.js +22 -0
  36. package/dist/src/artifacts/slugify.js.map +1 -0
  37. package/dist/src/capture/artifact-watcher.d.ts +19 -0
  38. package/dist/src/capture/artifact-watcher.d.ts.map +1 -0
  39. package/dist/src/capture/artifact-watcher.js +37 -0
  40. package/dist/src/capture/artifact-watcher.js.map +1 -0
  41. package/dist/src/capture/buffer.d.ts +20 -0
  42. package/dist/src/capture/buffer.d.ts.map +1 -0
  43. package/dist/src/capture/buffer.js +55 -0
  44. package/dist/src/capture/buffer.js.map +1 -0
  45. package/dist/src/capture/plan-detector.d.ts +15 -0
  46. package/dist/src/capture/plan-detector.d.ts.map +1 -0
  47. package/dist/src/capture/plan-detector.js +34 -0
  48. package/dist/src/capture/plan-detector.js.map +1 -0
  49. package/dist/src/capture/processor.d.ts +2 -0
  50. package/dist/src/capture/processor.d.ts.map +1 -0
  51. package/dist/src/capture/processor.js +3 -0
  52. package/dist/src/capture/processor.js.map +1 -0
  53. package/dist/src/capture/prompts/classify.md +28 -0
  54. package/dist/src/capture/prompts/debugging.md +91 -0
  55. package/dist/src/capture/prompts/exploration.md +88 -0
  56. package/dist/src/capture/prompts/extraction.md +93 -0
  57. package/dist/src/capture/prompts/implementation.md +90 -0
  58. package/dist/src/capture/prompts/prompts/classify.md +28 -0
  59. package/dist/src/capture/prompts/prompts/debugging.md +91 -0
  60. package/dist/src/capture/prompts/prompts/exploration.md +88 -0
  61. package/dist/src/capture/prompts/prompts/extraction.md +93 -0
  62. package/dist/src/capture/prompts/prompts/implementation.md +90 -0
  63. package/dist/src/capture/prompts/prompts/schema.yaml +97 -0
  64. package/dist/src/capture/prompts/prompts/session-summary.md +65 -0
  65. package/dist/src/capture/prompts/prompts/session-title.md +46 -0
  66. package/dist/src/capture/prompts/schema.yaml +97 -0
  67. package/dist/src/capture/prompts/session-summary.md +65 -0
  68. package/dist/src/capture/prompts/session-title.md +46 -0
  69. package/dist/src/capture/prompts.d.ts +77 -0
  70. package/dist/src/capture/prompts.d.ts.map +1 -0
  71. package/dist/src/capture/prompts.js +255 -0
  72. package/dist/src/capture/prompts.js.map +1 -0
  73. package/dist/src/capture/transcript-miner.d.ts +31 -0
  74. package/dist/src/capture/transcript-miner.d.ts.map +1 -0
  75. package/dist/src/capture/transcript-miner.js +61 -0
  76. package/dist/src/capture/transcript-miner.js.map +1 -0
  77. package/dist/src/cli.d.ts +3 -0
  78. package/dist/src/cli.d.ts.map +1 -0
  79. package/dist/src/cli.js +584 -0
  80. package/dist/src/cli.js.map +1 -0
  81. package/dist/src/config/loader.d.ts +4 -0
  82. package/dist/src/config/loader.d.ts.map +1 -0
  83. package/dist/src/config/loader.js +32 -0
  84. package/dist/src/config/loader.js.map +1 -0
  85. package/dist/src/config/schema.d.ts +83 -0
  86. package/dist/src/config/schema.d.ts.map +1 -0
  87. package/dist/src/config/schema.js +55 -0
  88. package/dist/src/config/schema.js.map +1 -0
  89. package/dist/src/constants.d.ts +73 -0
  90. package/dist/src/constants.d.ts.map +1 -0
  91. package/dist/src/constants.js +86 -0
  92. package/dist/src/constants.js.map +1 -0
  93. package/dist/src/context/injector.d.ts +18 -0
  94. package/dist/src/context/injector.d.ts.map +1 -0
  95. package/dist/src/context/injector.js +71 -0
  96. package/dist/src/context/injector.js.map +1 -0
  97. package/dist/src/context/relevance.d.ts +13 -0
  98. package/dist/src/context/relevance.d.ts.map +1 -0
  99. package/dist/src/context/relevance.js +44 -0
  100. package/dist/src/context/relevance.js.map +1 -0
  101. package/dist/src/daemon/batch.d.ts +22 -0
  102. package/dist/src/daemon/batch.d.ts.map +1 -0
  103. package/dist/src/daemon/batch.js +38 -0
  104. package/dist/src/daemon/batch.js.map +1 -0
  105. package/dist/src/daemon/lifecycle.d.ts +27 -0
  106. package/dist/src/daemon/lifecycle.d.ts.map +1 -0
  107. package/dist/src/daemon/lifecycle.js +50 -0
  108. package/dist/src/daemon/lifecycle.js.map +1 -0
  109. package/dist/src/daemon/lineage.d.ts +42 -0
  110. package/dist/src/daemon/lineage.d.ts.map +1 -0
  111. package/dist/src/daemon/lineage.js +116 -0
  112. package/dist/src/daemon/lineage.js.map +1 -0
  113. package/dist/src/daemon/logger.d.ts +33 -0
  114. package/dist/src/daemon/logger.d.ts.map +1 -0
  115. package/dist/src/daemon/logger.js +88 -0
  116. package/dist/src/daemon/logger.js.map +1 -0
  117. package/dist/src/daemon/main.d.ts +2 -0
  118. package/dist/src/daemon/main.d.ts.map +1 -0
  119. package/dist/src/daemon/main.js +738 -0
  120. package/dist/src/daemon/main.js.map +1 -0
  121. package/dist/src/daemon/processor.d.ts +44 -0
  122. package/dist/src/daemon/processor.d.ts.map +1 -0
  123. package/dist/src/daemon/processor.js +142 -0
  124. package/dist/src/daemon/processor.js.map +1 -0
  125. package/dist/src/daemon/server.d.ts +24 -0
  126. package/dist/src/daemon/server.d.ts.map +1 -0
  127. package/dist/src/daemon/server.js +117 -0
  128. package/dist/src/daemon/server.js.map +1 -0
  129. package/dist/src/daemon/watcher.d.ts +29 -0
  130. package/dist/src/daemon/watcher.d.ts.map +1 -0
  131. package/dist/src/daemon/watcher.js +67 -0
  132. package/dist/src/daemon/watcher.js.map +1 -0
  133. package/dist/src/hooks/client.d.ts +20 -0
  134. package/dist/src/hooks/client.d.ts.map +1 -0
  135. package/dist/src/hooks/client.js +111 -0
  136. package/dist/src/hooks/client.js.map +1 -0
  137. package/dist/src/hooks/post-tool-use.d.ts +2 -0
  138. package/dist/src/hooks/post-tool-use.d.ts.map +1 -0
  139. package/dist/src/hooks/post-tool-use.js +40 -0
  140. package/dist/src/hooks/post-tool-use.js.map +1 -0
  141. package/dist/src/hooks/read-stdin.d.ts +2 -0
  142. package/dist/src/hooks/read-stdin.d.ts.map +1 -0
  143. package/dist/src/hooks/read-stdin.js +10 -0
  144. package/dist/src/hooks/read-stdin.js.map +1 -0
  145. package/dist/src/hooks/session-end.d.ts +2 -0
  146. package/dist/src/hooks/session-end.d.ts.map +1 -0
  147. package/dist/src/hooks/session-end.js +23 -0
  148. package/dist/src/hooks/session-end.js.map +1 -0
  149. package/dist/src/hooks/session-start.d.ts +2 -0
  150. package/dist/src/hooks/session-start.d.ts.map +1 -0
  151. package/dist/src/hooks/session-start.js +49 -0
  152. package/dist/src/hooks/session-start.js.map +1 -0
  153. package/dist/src/hooks/stop.d.ts +2 -0
  154. package/dist/src/hooks/stop.d.ts.map +1 -0
  155. package/dist/src/hooks/stop.js +34 -0
  156. package/dist/src/hooks/stop.js.map +1 -0
  157. package/dist/src/hooks/user-prompt-submit.d.ts +2 -0
  158. package/dist/src/hooks/user-prompt-submit.d.ts.map +1 -0
  159. package/dist/src/hooks/user-prompt-submit.js +46 -0
  160. package/dist/src/hooks/user-prompt-submit.js.map +1 -0
  161. package/dist/src/index/fts.d.ts +16 -0
  162. package/dist/src/index/fts.d.ts.map +1 -0
  163. package/dist/src/index/fts.js +53 -0
  164. package/dist/src/index/fts.js.map +1 -0
  165. package/dist/src/index/rebuild.d.ts +4 -0
  166. package/dist/src/index/rebuild.d.ts.map +1 -0
  167. package/dist/src/index/rebuild.js +40 -0
  168. package/dist/src/index/rebuild.js.map +1 -0
  169. package/dist/src/index/sqlite.d.ts +33 -0
  170. package/dist/src/index/sqlite.d.ts.map +1 -0
  171. package/dist/src/index/sqlite.js +99 -0
  172. package/dist/src/index/sqlite.js.map +1 -0
  173. package/dist/src/index/vectors.d.ts +24 -0
  174. package/dist/src/index/vectors.d.ts.map +1 -0
  175. package/dist/src/index/vectors.js +97 -0
  176. package/dist/src/index/vectors.js.map +1 -0
  177. package/dist/src/intelligence/anthropic.d.ts +17 -0
  178. package/dist/src/intelligence/anthropic.d.ts.map +1 -0
  179. package/dist/src/intelligence/anthropic.js +36 -0
  180. package/dist/src/intelligence/anthropic.js.map +1 -0
  181. package/dist/src/intelligence/embeddings.d.ts +3 -0
  182. package/dist/src/intelligence/embeddings.d.ts.map +1 -0
  183. package/dist/src/intelligence/embeddings.js +15 -0
  184. package/dist/src/intelligence/embeddings.js.map +1 -0
  185. package/dist/src/intelligence/haiku.d.ts +17 -0
  186. package/dist/src/intelligence/haiku.d.ts.map +1 -0
  187. package/dist/src/intelligence/haiku.js +35 -0
  188. package/dist/src/intelligence/haiku.js.map +1 -0
  189. package/dist/src/intelligence/llm.d.ts +33 -0
  190. package/dist/src/intelligence/llm.d.ts.map +1 -0
  191. package/dist/src/intelligence/llm.js +26 -0
  192. package/dist/src/intelligence/llm.js.map +1 -0
  193. package/dist/src/intelligence/lm-studio.d.ts +20 -0
  194. package/dist/src/intelligence/lm-studio.d.ts.map +1 -0
  195. package/dist/src/intelligence/lm-studio.js +59 -0
  196. package/dist/src/intelligence/lm-studio.js.map +1 -0
  197. package/dist/src/intelligence/ollama.d.ts +22 -0
  198. package/dist/src/intelligence/ollama.d.ts.map +1 -0
  199. package/dist/src/intelligence/ollama.js +64 -0
  200. package/dist/src/intelligence/ollama.js.map +1 -0
  201. package/dist/src/intelligence/response.d.ts +29 -0
  202. package/dist/src/intelligence/response.d.ts.map +1 -0
  203. package/dist/src/intelligence/response.js +71 -0
  204. package/dist/src/intelligence/response.js.map +1 -0
  205. package/dist/src/intelligence/service.d.ts +18 -0
  206. package/dist/src/intelligence/service.d.ts.map +1 -0
  207. package/dist/src/intelligence/service.js +66 -0
  208. package/dist/src/intelligence/service.js.map +1 -0
  209. package/dist/src/logs/format.d.ts +6 -0
  210. package/dist/src/logs/format.d.ts.map +1 -0
  211. package/dist/src/logs/format.js +46 -0
  212. package/dist/src/logs/format.js.map +1 -0
  213. package/dist/src/logs/reader.d.ts +28 -0
  214. package/dist/src/logs/reader.d.ts.map +1 -0
  215. package/dist/src/logs/reader.js +106 -0
  216. package/dist/src/logs/reader.js.map +1 -0
  217. package/dist/src/mcp/server.d.ts +16 -0
  218. package/dist/src/mcp/server.d.ts.map +1 -0
  219. package/dist/src/mcp/server.js +305 -0
  220. package/dist/src/mcp/server.js.map +1 -0
  221. package/dist/src/mcp/tools/consolidate.d.ts +15 -0
  222. package/dist/src/mcp/tools/consolidate.d.ts.map +1 -0
  223. package/dist/src/mcp/tools/consolidate.js +49 -0
  224. package/dist/src/mcp/tools/consolidate.js.map +1 -0
  225. package/dist/src/mcp/tools/graph.d.ts +30 -0
  226. package/dist/src/mcp/tools/graph.d.ts.map +1 -0
  227. package/dist/src/mcp/tools/graph.js +106 -0
  228. package/dist/src/mcp/tools/graph.js.map +1 -0
  229. package/dist/src/mcp/tools/logs.d.ts +3 -0
  230. package/dist/src/mcp/tools/logs.d.ts.map +1 -0
  231. package/dist/src/mcp/tools/logs.js +7 -0
  232. package/dist/src/mcp/tools/logs.js.map +1 -0
  233. package/dist/src/mcp/tools/plans.d.ts +23 -0
  234. package/dist/src/mcp/tools/plans.d.ts.map +1 -0
  235. package/dist/src/mcp/tools/plans.js +63 -0
  236. package/dist/src/mcp/tools/plans.js.map +1 -0
  237. package/dist/src/mcp/tools/recall.d.ts +30 -0
  238. package/dist/src/mcp/tools/recall.d.ts.map +1 -0
  239. package/dist/src/mcp/tools/recall.js +34 -0
  240. package/dist/src/mcp/tools/recall.js.map +1 -0
  241. package/dist/src/mcp/tools/remember.d.ts +15 -0
  242. package/dist/src/mcp/tools/remember.d.ts.map +1 -0
  243. package/dist/src/mcp/tools/remember.js +18 -0
  244. package/dist/src/mcp/tools/remember.js.map +1 -0
  245. package/dist/src/mcp/tools/search.d.ts +19 -0
  246. package/dist/src/mcp/tools/search.d.ts.map +1 -0
  247. package/dist/src/mcp/tools/search.js +59 -0
  248. package/dist/src/mcp/tools/search.js.map +1 -0
  249. package/dist/src/mcp/tools/sessions.d.ts +21 -0
  250. package/dist/src/mcp/tools/sessions.d.ts.map +1 -0
  251. package/dist/src/mcp/tools/sessions.js +36 -0
  252. package/dist/src/mcp/tools/sessions.js.map +1 -0
  253. package/dist/src/mcp/tools/supersede.d.ts +14 -0
  254. package/dist/src/mcp/tools/supersede.d.ts.map +1 -0
  255. package/dist/src/mcp/tools/supersede.js +30 -0
  256. package/dist/src/mcp/tools/supersede.js.map +1 -0
  257. package/dist/src/mcp/tools/team.d.ts +16 -0
  258. package/dist/src/mcp/tools/team.d.ts.map +1 -0
  259. package/dist/src/mcp/tools/team.js +32 -0
  260. package/dist/src/mcp/tools/team.js.map +1 -0
  261. package/dist/src/obsidian/formatter.d.ts +80 -0
  262. package/dist/src/obsidian/formatter.d.ts.map +1 -0
  263. package/dist/src/obsidian/formatter.js +227 -0
  264. package/dist/src/obsidian/formatter.js.map +1 -0
  265. package/dist/src/prompts/classification.md +42 -0
  266. package/dist/src/prompts/extraction.md +45 -0
  267. package/dist/src/prompts/index.d.ts +13 -0
  268. package/dist/src/prompts/index.d.ts.map +1 -0
  269. package/dist/src/prompts/index.js +75 -0
  270. package/dist/src/prompts/index.js.map +1 -0
  271. package/dist/src/prompts/session-similarity.md +24 -0
  272. package/dist/src/prompts/summary.md +9 -0
  273. package/dist/src/prompts/title.md +8 -0
  274. package/dist/src/vault/frontmatter.d.ts +6 -0
  275. package/dist/src/vault/frontmatter.d.ts.map +1 -0
  276. package/dist/src/vault/frontmatter.js +10 -0
  277. package/dist/src/vault/frontmatter.js.map +1 -0
  278. package/dist/src/vault/observations.d.ts +10 -0
  279. package/dist/src/vault/observations.d.ts.map +1 -0
  280. package/dist/src/vault/observations.js +33 -0
  281. package/dist/src/vault/observations.js.map +1 -0
  282. package/dist/src/vault/reader.d.ts +10 -0
  283. package/dist/src/vault/reader.d.ts.map +1 -0
  284. package/dist/src/vault/reader.js +48 -0
  285. package/dist/src/vault/reader.js.map +1 -0
  286. package/dist/src/vault/resolve.d.ts +18 -0
  287. package/dist/src/vault/resolve.d.ts.map +1 -0
  288. package/dist/src/vault/resolve.js +51 -0
  289. package/dist/src/vault/resolve.js.map +1 -0
  290. package/dist/src/vault/session-id.d.ts +16 -0
  291. package/dist/src/vault/session-id.d.ts.map +1 -0
  292. package/dist/src/vault/session-id.js +29 -0
  293. package/dist/src/vault/session-id.js.map +1 -0
  294. package/dist/src/vault/types.d.ts +88 -0
  295. package/dist/src/vault/types.d.ts.map +1 -0
  296. package/dist/src/vault/types.js +94 -0
  297. package/dist/src/vault/types.js.map +1 -0
  298. package/dist/src/vault/writer.d.ts +66 -0
  299. package/dist/src/vault/writer.d.ts.map +1 -0
  300. package/dist/src/vault/writer.js +217 -0
  301. package/dist/src/vault/writer.js.map +1 -0
  302. package/hooks/hooks.json +60 -0
  303. package/package.json +52 -0
  304. package/skills/myco/SKILL.md +206 -0
  305. package/skills/myco/references/wisdom.md +61 -0
  306. package/skills/rules/SKILL.md +185 -0
  307. package/skills/rules/references/rules-bad-example.md +106 -0
  308. package/skills/rules/references/rules-good-example.md +90 -0
@@ -0,0 +1,83 @@
1
+ import { z } from 'zod';
2
+ declare const LlmProviderSchema: z.ZodObject<{
3
+ provider: z.ZodEnum<{
4
+ ollama: "ollama";
5
+ "lm-studio": "lm-studio";
6
+ anthropic: "anthropic";
7
+ }>;
8
+ model: z.ZodString;
9
+ base_url: z.ZodOptional<z.ZodString>;
10
+ context_window: z.ZodDefault<z.ZodNumber>;
11
+ max_tokens: z.ZodDefault<z.ZodNumber>;
12
+ }, z.core.$strip>;
13
+ declare const EmbeddingProviderSchema: z.ZodObject<{
14
+ provider: z.ZodEnum<{
15
+ ollama: "ollama";
16
+ "lm-studio": "lm-studio";
17
+ }>;
18
+ model: z.ZodString;
19
+ base_url: z.ZodOptional<z.ZodString>;
20
+ }, z.core.$strip>;
21
+ export declare const MycoConfigSchema: z.ZodObject<{
22
+ version: z.ZodLiteral<2>;
23
+ intelligence: z.ZodObject<{
24
+ llm: z.ZodObject<{
25
+ provider: z.ZodEnum<{
26
+ ollama: "ollama";
27
+ "lm-studio": "lm-studio";
28
+ anthropic: "anthropic";
29
+ }>;
30
+ model: z.ZodString;
31
+ base_url: z.ZodOptional<z.ZodString>;
32
+ context_window: z.ZodDefault<z.ZodNumber>;
33
+ max_tokens: z.ZodDefault<z.ZodNumber>;
34
+ }, z.core.$strip>;
35
+ embedding: z.ZodObject<{
36
+ provider: z.ZodEnum<{
37
+ ollama: "ollama";
38
+ "lm-studio": "lm-studio";
39
+ }>;
40
+ model: z.ZodString;
41
+ base_url: z.ZodOptional<z.ZodString>;
42
+ }, z.core.$strip>;
43
+ }, z.core.$strip>;
44
+ daemon: z.ZodDefault<z.ZodObject<{
45
+ log_level: z.ZodDefault<z.ZodEnum<{
46
+ error: "error";
47
+ debug: "debug";
48
+ info: "info";
49
+ warn: "warn";
50
+ }>>;
51
+ grace_period: z.ZodDefault<z.ZodNumber>;
52
+ max_log_size: z.ZodDefault<z.ZodNumber>;
53
+ }, z.core.$strip>>;
54
+ capture: z.ZodDefault<z.ZodObject<{
55
+ transcript_paths: z.ZodDefault<z.ZodArray<z.ZodString>>;
56
+ artifact_watch: z.ZodDefault<z.ZodArray<z.ZodString>>;
57
+ artifact_extensions: z.ZodDefault<z.ZodArray<z.ZodString>>;
58
+ buffer_max_events: z.ZodDefault<z.ZodNumber>;
59
+ }, z.core.$strip>>;
60
+ context: z.ZodDefault<z.ZodObject<{
61
+ max_tokens: z.ZodDefault<z.ZodNumber>;
62
+ layers: z.ZodDefault<z.ZodObject<{
63
+ plans: z.ZodDefault<z.ZodNumber>;
64
+ sessions: z.ZodDefault<z.ZodNumber>;
65
+ memories: z.ZodDefault<z.ZodNumber>;
66
+ team: z.ZodDefault<z.ZodNumber>;
67
+ }, z.core.$strip>>;
68
+ }, z.core.$strip>>;
69
+ team: z.ZodDefault<z.ZodObject<{
70
+ enabled: z.ZodDefault<z.ZodBoolean>;
71
+ user: z.ZodDefault<z.ZodString>;
72
+ sync: z.ZodDefault<z.ZodEnum<{
73
+ git: "git";
74
+ "obsidian-sync": "obsidian-sync";
75
+ manual: "manual";
76
+ }>>;
77
+ }, z.core.$strip>>;
78
+ }, z.core.$strip>;
79
+ export type MycoConfig = z.infer<typeof MycoConfigSchema>;
80
+ export type LlmProviderConfig = z.infer<typeof LlmProviderSchema>;
81
+ export type EmbeddingProviderConfig = z.infer<typeof EmbeddingProviderSchema>;
82
+ export {};
83
+ //# sourceMappingURL=schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../src/config/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,QAAA,MAAM,iBAAiB;;;;;;;;;;iBAMrB,CAAC;AAEH,QAAA,MAAM,uBAAuB;;;;;;;iBAI3B,CAAC;AAyCH,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAO3B,CAAC;AAEH,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAC1D,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAClE,MAAM,MAAM,uBAAuB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC"}
@@ -0,0 +1,55 @@
1
+ import { z } from 'zod';
2
+ const LlmProviderSchema = z.object({
3
+ provider: z.enum(['ollama', 'lm-studio', 'anthropic']),
4
+ model: z.string(),
5
+ base_url: z.string().url().optional(),
6
+ context_window: z.number().int().positive().default(8192),
7
+ max_tokens: z.number().int().positive().default(1024),
8
+ });
9
+ const EmbeddingProviderSchema = z.object({
10
+ provider: z.enum(['ollama', 'lm-studio']),
11
+ model: z.string(),
12
+ base_url: z.string().url().optional(),
13
+ });
14
+ const IntelligenceSchema = z.object({
15
+ llm: LlmProviderSchema,
16
+ embedding: EmbeddingProviderSchema,
17
+ });
18
+ const DaemonSchema = z.object({
19
+ log_level: z.enum(['debug', 'info', 'warn', 'error']).default('info'),
20
+ grace_period: z.number().int().positive().default(30),
21
+ max_log_size: z.number().int().positive().default(5_242_880),
22
+ });
23
+ const CaptureSchema = z.object({
24
+ transcript_paths: z.array(z.string()).default([]),
25
+ artifact_watch: z.array(z.string()).default([
26
+ '.claude/plans/',
27
+ '.cursor/plans/',
28
+ ]),
29
+ artifact_extensions: z.array(z.string()).default(['.md']),
30
+ buffer_max_events: z.number().int().positive().default(500),
31
+ });
32
+ const ContextLayersSchema = z.object({
33
+ plans: z.number().int().nonnegative().default(200),
34
+ sessions: z.number().int().nonnegative().default(500),
35
+ memories: z.number().int().nonnegative().default(300),
36
+ team: z.number().int().nonnegative().default(200),
37
+ });
38
+ const ContextSchema = z.object({
39
+ max_tokens: z.number().int().positive().default(1200),
40
+ layers: ContextLayersSchema.default({ plans: 200, sessions: 500, memories: 300, team: 200 }),
41
+ });
42
+ const TeamSchema = z.object({
43
+ enabled: z.boolean().default(false),
44
+ user: z.string().default(''),
45
+ sync: z.enum(['git', 'obsidian-sync', 'manual']).default('git'),
46
+ });
47
+ export const MycoConfigSchema = z.object({
48
+ version: z.literal(2),
49
+ intelligence: IntelligenceSchema,
50
+ daemon: DaemonSchema.default({ log_level: 'info', grace_period: 30, max_log_size: 5_242_880 }),
51
+ capture: CaptureSchema.default({ transcript_paths: [], artifact_watch: ['.claude/plans/', '.cursor/plans/'], artifact_extensions: ['.md'], buffer_max_events: 500 }),
52
+ context: ContextSchema.default({ max_tokens: 1200, layers: { plans: 200, sessions: 500, memories: 300, team: 200 } }),
53
+ team: TeamSchema.default({ enabled: false, user: '', sync: 'git' }),
54
+ });
55
+ //# sourceMappingURL=schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../src/config/schema.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,73 @@
1
+ /**
2
+ * Shared constants for the Myco codebase.
3
+ * Per CLAUDE.md: "No Magic Literals — Numeric and string constants
4
+ * MUST NOT appear inline in logic."
5
+ */
6
+ /** Approximate characters per token for the chars/4 heuristic. */
7
+ export declare const CHARS_PER_TOKEN = 4;
8
+ /** Max characters of text sent to the embedding model. */
9
+ export declare const EMBEDDING_INPUT_LIMIT = 8000;
10
+ /** Max chars for a user prompt preview in event summaries. */
11
+ export declare const PROMPT_PREVIEW_CHARS = 300;
12
+ /** Max chars for an AI response preview in event summaries. */
13
+ export declare const AI_RESPONSE_PREVIEW_CHARS = 500;
14
+ /** Max chars for a command string preview. */
15
+ export declare const COMMAND_PREVIEW_CHARS = 80;
16
+ /** Max chars for a content snippet in search results. */
17
+ export declare const CONTENT_SNIPPET_CHARS = 120;
18
+ /** Max chars for a tool output preview in hooks. */
19
+ export declare const TOOL_OUTPUT_PREVIEW_CHARS = 200;
20
+ /** Max chars for a session summary preview in MCP tools. */
21
+ export declare const SESSION_SUMMARY_PREVIEW_CHARS = 300;
22
+ /** Max chars for a recall summary preview. */
23
+ export declare const RECALL_SUMMARY_PREVIEW_CHARS = 200;
24
+ export declare const CONTEXT_PLAN_PREVIEW_CHARS = 100;
25
+ export declare const CONTEXT_SESSION_PREVIEW_CHARS = 80;
26
+ export declare const CONTEXT_MEMORY_PREVIEW_CHARS = 80;
27
+ /** Response token budget for observation extraction. */
28
+ export declare const EXTRACTION_MAX_TOKENS = 2048;
29
+ /** Response token budget for session summary. */
30
+ export declare const SUMMARY_MAX_TOKENS = 512;
31
+ /** Response token budget for session title generation. */
32
+ export declare const TITLE_MAX_TOKENS = 32;
33
+ /** Response token budget for artifact classification. */
34
+ export declare const CLASSIFICATION_MAX_TOKENS = 1024;
35
+ /** Daemon client HTTP request timeout (ms). */
36
+ export declare const DAEMON_CLIENT_TIMEOUT_MS = 2000;
37
+ /** Health check timeout (ms) — fail fast if daemon isn't responding. */
38
+ export declare const DAEMON_HEALTH_CHECK_TIMEOUT_MS = 500;
39
+ /** LLM request timeout (ms) — prevents hung requests from blocking stop processing. */
40
+ export declare const LLM_REQUEST_TIMEOUT_MS = 30000;
41
+ /** Embedding request timeout (ms). */
42
+ export declare const EMBEDDING_REQUEST_TIMEOUT_MS = 10000;
43
+ /** Stdin read timeout for hooks (ms). */
44
+ export declare const STDIN_TIMEOUT_MS = 100;
45
+ /** Chokidar write stability threshold (ms). */
46
+ export declare const FILE_WATCH_STABILITY_MS = 1000;
47
+ /** Max age for stale buffer files before cleanup (ms). */
48
+ export declare const STALE_BUFFER_MAX_AGE_MS: number;
49
+ /** Retry delays for daemon health check (ms). */
50
+ export declare const DAEMON_HEALTH_RETRY_DELAYS: number[];
51
+ /** Max length for slugified artifact IDs. */
52
+ export declare const MAX_SLUG_LENGTH = 100;
53
+ /** Max chars of file content per candidate in classification prompt. */
54
+ export declare const CANDIDATE_CONTENT_PREVIEW = 2000;
55
+ /** Minimum content length to consider a transcript entry meaningful. */
56
+ export declare const MIN_TRANSCRIPT_CONTENT_LENGTH = 10;
57
+ /** Max recent sessions to check for lineage heuristics. */
58
+ export declare const LINEAGE_RECENT_SESSIONS_LIMIT = 5;
59
+ /** Max related memories to query for session notes. */
60
+ export declare const RELATED_MEMORIES_LIMIT = 50;
61
+ /** Max active plans to inject at session start. */
62
+ export declare const SESSION_CONTEXT_MAX_PLANS = 3;
63
+ /** Max memories to inject per prompt. */
64
+ export declare const PROMPT_CONTEXT_MAX_MEMORIES = 3;
65
+ /** Minimum similarity score for prompt context injection (0-1). */
66
+ export declare const PROMPT_CONTEXT_MIN_SIMILARITY = 0.3;
67
+ /** Max token budget for session-start context injection. */
68
+ export declare const SESSION_CONTEXT_MAX_TOKENS = 500;
69
+ /** Max token budget for per-prompt context injection. */
70
+ export declare const PROMPT_CONTEXT_MAX_TOKENS = 300;
71
+ /** Minimum prompt length to trigger context search. */
72
+ export declare const PROMPT_CONTEXT_MIN_LENGTH = 10;
73
+ //# sourceMappingURL=constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,kEAAkE;AAClE,eAAO,MAAM,eAAe,IAAI,CAAC;AAGjC,0DAA0D;AAC1D,eAAO,MAAM,qBAAqB,OAAO,CAAC;AAG1C,8DAA8D;AAC9D,eAAO,MAAM,oBAAoB,MAAM,CAAC;AACxC,+DAA+D;AAC/D,eAAO,MAAM,yBAAyB,MAAM,CAAC;AAC7C,8CAA8C;AAC9C,eAAO,MAAM,qBAAqB,KAAK,CAAC;AACxC,yDAAyD;AACzD,eAAO,MAAM,qBAAqB,MAAM,CAAC;AACzC,oDAAoD;AACpD,eAAO,MAAM,yBAAyB,MAAM,CAAC;AAC7C,4DAA4D;AAC5D,eAAO,MAAM,6BAA6B,MAAM,CAAC;AACjD,8CAA8C;AAC9C,eAAO,MAAM,4BAA4B,MAAM,CAAC;AAGhD,eAAO,MAAM,0BAA0B,MAAM,CAAC;AAC9C,eAAO,MAAM,6BAA6B,KAAK,CAAC;AAChD,eAAO,MAAM,4BAA4B,KAAK,CAAC;AAG/C,wDAAwD;AACxD,eAAO,MAAM,qBAAqB,OAAO,CAAC;AAC1C,iDAAiD;AACjD,eAAO,MAAM,kBAAkB,MAAM,CAAC;AACtC,0DAA0D;AAC1D,eAAO,MAAM,gBAAgB,KAAK,CAAC;AACnC,yDAAyD;AACzD,eAAO,MAAM,yBAAyB,OAAO,CAAC;AAG9C,+CAA+C;AAC/C,eAAO,MAAM,wBAAwB,OAAO,CAAC;AAC7C,wEAAwE;AACxE,eAAO,MAAM,8BAA8B,MAAM,CAAC;AAClD,uFAAuF;AACvF,eAAO,MAAM,sBAAsB,QAAS,CAAC;AAC7C,sCAAsC;AACtC,eAAO,MAAM,4BAA4B,QAAS,CAAC;AACnD,yCAAyC;AACzC,eAAO,MAAM,gBAAgB,MAAM,CAAC;AACpC,+CAA+C;AAC/C,eAAO,MAAM,uBAAuB,OAAO,CAAC;AAG5C,0DAA0D;AAC1D,eAAO,MAAM,uBAAuB,QAAsB,CAAC;AAG3D,iDAAiD;AACjD,eAAO,MAAM,0BAA0B,UAA6B,CAAC;AAGrE,6CAA6C;AAC7C,eAAO,MAAM,eAAe,MAAM,CAAC;AAGnC,wEAAwE;AACxE,eAAO,MAAM,yBAAyB,OAAO,CAAC;AAG9C,wEAAwE;AACxE,eAAO,MAAM,6BAA6B,KAAK,CAAC;AAGhD,2DAA2D;AAC3D,eAAO,MAAM,6BAA6B,IAAI,CAAC;AAC/C,uDAAuD;AACvD,eAAO,MAAM,sBAAsB,KAAK,CAAC;AAGzC,mDAAmD;AACnD,eAAO,MAAM,yBAAyB,IAAI,CAAC;AAC3C,yCAAyC;AACzC,eAAO,MAAM,2BAA2B,IAAI,CAAC;AAC7C,mEAAmE;AACnE,eAAO,MAAM,6BAA6B,MAAM,CAAC;AACjD,4DAA4D;AAC5D,eAAO,MAAM,0BAA0B,MAAM,CAAC;AAC9C,yDAAyD;AACzD,eAAO,MAAM,yBAAyB,MAAM,CAAC;AAC7C,uDAAuD;AACvD,eAAO,MAAM,yBAAyB,KAAK,CAAC"}
@@ -0,0 +1,86 @@
1
+ /**
2
+ * Shared constants for the Myco codebase.
3
+ * Per CLAUDE.md: "No Magic Literals — Numeric and string constants
4
+ * MUST NOT appear inline in logic."
5
+ */
6
+ // --- Token estimation ---
7
+ /** Approximate characters per token for the chars/4 heuristic. */
8
+ export const CHARS_PER_TOKEN = 4;
9
+ // --- Embedding ---
10
+ /** Max characters of text sent to the embedding model. */
11
+ export const EMBEDDING_INPUT_LIMIT = 8000;
12
+ // --- Truncation limits (display/preview) ---
13
+ /** Max chars for a user prompt preview in event summaries. */
14
+ export const PROMPT_PREVIEW_CHARS = 300;
15
+ /** Max chars for an AI response preview in event summaries. */
16
+ export const AI_RESPONSE_PREVIEW_CHARS = 500;
17
+ /** Max chars for a command string preview. */
18
+ export const COMMAND_PREVIEW_CHARS = 80;
19
+ /** Max chars for a content snippet in search results. */
20
+ export const CONTENT_SNIPPET_CHARS = 120;
21
+ /** Max chars for a tool output preview in hooks. */
22
+ export const TOOL_OUTPUT_PREVIEW_CHARS = 200;
23
+ /** Max chars for a session summary preview in MCP tools. */
24
+ export const SESSION_SUMMARY_PREVIEW_CHARS = 300;
25
+ /** Max chars for a recall summary preview. */
26
+ export const RECALL_SUMMARY_PREVIEW_CHARS = 200;
27
+ // --- Context injection layer budgets (chars, not tokens — used with .slice()) ---
28
+ export const CONTEXT_PLAN_PREVIEW_CHARS = 100;
29
+ export const CONTEXT_SESSION_PREVIEW_CHARS = 80;
30
+ export const CONTEXT_MEMORY_PREVIEW_CHARS = 80;
31
+ // --- Processor maxTokens budgets ---
32
+ /** Response token budget for observation extraction. */
33
+ export const EXTRACTION_MAX_TOKENS = 2048;
34
+ /** Response token budget for session summary. */
35
+ export const SUMMARY_MAX_TOKENS = 512;
36
+ /** Response token budget for session title generation. */
37
+ export const TITLE_MAX_TOKENS = 32;
38
+ /** Response token budget for artifact classification. */
39
+ export const CLASSIFICATION_MAX_TOKENS = 1024;
40
+ // --- Timeouts ---
41
+ /** Daemon client HTTP request timeout (ms). */
42
+ export const DAEMON_CLIENT_TIMEOUT_MS = 2000;
43
+ /** Health check timeout (ms) — fail fast if daemon isn't responding. */
44
+ export const DAEMON_HEALTH_CHECK_TIMEOUT_MS = 500;
45
+ /** LLM request timeout (ms) — prevents hung requests from blocking stop processing. */
46
+ export const LLM_REQUEST_TIMEOUT_MS = 30_000;
47
+ /** Embedding request timeout (ms). */
48
+ export const EMBEDDING_REQUEST_TIMEOUT_MS = 10_000;
49
+ /** Stdin read timeout for hooks (ms). */
50
+ export const STDIN_TIMEOUT_MS = 100;
51
+ /** Chokidar write stability threshold (ms). */
52
+ export const FILE_WATCH_STABILITY_MS = 1000;
53
+ // --- Buffer cleanup ---
54
+ /** Max age for stale buffer files before cleanup (ms). */
55
+ export const STALE_BUFFER_MAX_AGE_MS = 24 * 60 * 60 * 1000;
56
+ // --- Retry backoff ---
57
+ /** Retry delays for daemon health check (ms). */
58
+ export const DAEMON_HEALTH_RETRY_DELAYS = [100, 200, 400, 800, 1500];
59
+ // --- Slug limits ---
60
+ /** Max length for slugified artifact IDs. */
61
+ export const MAX_SLUG_LENGTH = 100;
62
+ // --- Content preview for classification prompt ---
63
+ /** Max chars of file content per candidate in classification prompt. */
64
+ export const CANDIDATE_CONTENT_PREVIEW = 2000;
65
+ // --- Transcript mining ---
66
+ /** Minimum content length to consider a transcript entry meaningful. */
67
+ export const MIN_TRANSCRIPT_CONTENT_LENGTH = 10;
68
+ // --- Query limits ---
69
+ /** Max recent sessions to check for lineage heuristics. */
70
+ export const LINEAGE_RECENT_SESSIONS_LIMIT = 5;
71
+ /** Max related memories to query for session notes. */
72
+ export const RELATED_MEMORIES_LIMIT = 50;
73
+ // --- Context injection ---
74
+ /** Max active plans to inject at session start. */
75
+ export const SESSION_CONTEXT_MAX_PLANS = 3;
76
+ /** Max memories to inject per prompt. */
77
+ export const PROMPT_CONTEXT_MAX_MEMORIES = 3;
78
+ /** Minimum similarity score for prompt context injection (0-1). */
79
+ export const PROMPT_CONTEXT_MIN_SIMILARITY = 0.3;
80
+ /** Max token budget for session-start context injection. */
81
+ export const SESSION_CONTEXT_MAX_TOKENS = 500;
82
+ /** Max token budget for per-prompt context injection. */
83
+ export const PROMPT_CONTEXT_MAX_TOKENS = 300;
84
+ /** Minimum prompt length to trigger context search. */
85
+ export const PROMPT_CONTEXT_MIN_LENGTH = 10;
86
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ import type { MycoIndex } from '../index/sqlite.js';
2
+ import type { MycoConfig } from '../config/schema.js';
3
+ interface InjectionContext {
4
+ branch?: string;
5
+ }
6
+ interface InjectedContext {
7
+ text: string;
8
+ tokenEstimate: number;
9
+ layers: {
10
+ plans: string;
11
+ sessions: string;
12
+ memories: string;
13
+ team: string;
14
+ };
15
+ }
16
+ export declare function buildInjectedContext(index: MycoIndex, config: MycoConfig, context: InjectionContext): InjectedContext;
17
+ export {};
18
+ //# sourceMappingURL=injector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"injector.d.ts","sourceRoot":"","sources":["../../../src/context/injector.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAKtD,UAAU,gBAAgB;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,UAAU,eAAe;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE;QACN,KAAK,EAAE,MAAM,CAAC;QACd,QAAQ,EAAE,MAAM,CAAC;QACjB,QAAQ,EAAE,MAAM,CAAC;QACjB,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;CACH;AAED,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,SAAS,EAChB,MAAM,EAAE,UAAU,EAClB,OAAO,EAAE,gBAAgB,GACxB,eAAe,CA0EjB"}
@@ -0,0 +1,71 @@
1
+ import { planFm, memoryFm } from '../vault/frontmatter.js';
2
+ import { scoreRelevance } from './relevance.js';
3
+ import { CHARS_PER_TOKEN, CONTEXT_PLAN_PREVIEW_CHARS, CONTEXT_SESSION_PREVIEW_CHARS, CONTEXT_MEMORY_PREVIEW_CHARS } from '../constants.js';
4
+ export function buildInjectedContext(index, config, context) {
5
+ const budgets = config.context.layers;
6
+ // Layer 1: Active plans
7
+ const plans = index.query({ type: 'plan' });
8
+ const activePlans = plans.filter((p) => ['active', 'in_progress'].includes(planFm(p).status ?? ''));
9
+ const plansText = formatLayer('Active Plans', activePlans.map((p) => `- **${p.title}** (${planFm(p).status}): ${p.content.slice(0, CONTEXT_PLAN_PREVIEW_CHARS)}`), budgets.plans);
10
+ // Layer 2: Recent sessions
11
+ const sessions = index.query({ type: 'session', limit: 10 });
12
+ const activePlanIds = activePlans.map((p) => p.id);
13
+ const scoredSessions = scoreRelevance(sessions, {
14
+ branch: context.branch,
15
+ activePlanIds,
16
+ });
17
+ const sessionsText = formatLayer('Recent Sessions', scoredSessions.slice(0, 5).map((s) => `- **${s.note.title}**: ${s.note.content.slice(0, CONTEXT_SESSION_PREVIEW_CHARS)} (${s.reason})`), budgets.sessions);
18
+ // Layer 3: Relevant memories (exclude superseded/archived)
19
+ const memories = index.query({ type: 'memory', limit: 20 })
20
+ .filter((m) => {
21
+ const status = memoryFm(m).status;
22
+ return status !== 'superseded' && status !== 'archived';
23
+ });
24
+ const scoredMemories = scoreRelevance(memories, {
25
+ branch: context.branch,
26
+ activePlanIds,
27
+ });
28
+ const memoriesText = formatLayer('Relevant Memories', scoredMemories.slice(0, 5).map((m) => `- **${m.note.title}** (${memoryFm(m.note).observation_type}): ${m.note.content.slice(0, CONTEXT_MEMORY_PREVIEW_CHARS)}`), budgets.memories);
29
+ // Layer 4: Team activity
30
+ const teamText = formatLayer('Team Activity', [], budgets.team);
31
+ // Enforce total max_tokens budget
32
+ const allLayers = [plansText, sessionsText, memoriesText, teamText].filter(Boolean);
33
+ const parts = [];
34
+ let totalTokens = 0;
35
+ for (const layer of allLayers) {
36
+ const layerTokens = estimateTokens(layer);
37
+ if (totalTokens + layerTokens > config.context.max_tokens)
38
+ break;
39
+ parts.push(layer);
40
+ totalTokens += layerTokens;
41
+ }
42
+ const fullText = parts.join('\n\n');
43
+ return {
44
+ text: fullText,
45
+ tokenEstimate: totalTokens,
46
+ layers: {
47
+ plans: plansText,
48
+ sessions: sessionsText,
49
+ memories: memoriesText,
50
+ team: teamText,
51
+ },
52
+ };
53
+ }
54
+ function formatLayer(heading, items, budget) {
55
+ if (items.length === 0)
56
+ return '';
57
+ let text = `### ${heading}\n`;
58
+ let currentTokens = estimateTokens(text);
59
+ for (const item of items) {
60
+ const itemTokens = estimateTokens(item);
61
+ if (currentTokens + itemTokens > budget)
62
+ break;
63
+ text += item + '\n';
64
+ currentTokens += itemTokens;
65
+ }
66
+ return text.trim();
67
+ }
68
+ function estimateTokens(text) {
69
+ return Math.ceil(text.length / CHARS_PER_TOKEN);
70
+ }
71
+ //# sourceMappingURL=injector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"injector.js","sourceRoot":"","sources":["../../../src/context/injector.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,0BAA0B,EAAE,6BAA6B,EAAE,4BAA4B,EAAE,MAAM,iBAAiB,CAAC;AAiB3I,MAAM,UAAU,oBAAoB,CAClC,KAAgB,EAChB,MAAkB,EAClB,OAAyB;IAEzB,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;IAEtC,wBAAwB;IACxB,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;IAC5C,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CACrC,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,EAAE,CAAC,CAC3D,CAAC;IACF,MAAM,SAAS,GAAG,WAAW,CAC3B,cAAc,EACd,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,KAAK,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,0BAA0B,CAAC,EAAE,CAAC,EACnH,OAAO,CAAC,KAAK,CACd,CAAC;IAEF,2BAA2B;IAC3B,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;IAC7D,MAAM,aAAa,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IACnD,MAAM,cAAc,GAAG,cAAc,CAAC,QAAQ,EAAE;QAC9C,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,aAAa;KACd,CAAC,CAAC;IACH,MAAM,YAAY,GAAG,WAAW,CAC9B,iBAAiB,EACjB,cAAc,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CACnC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,OAAO,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,6BAA6B,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CACjG,EACD,OAAO,CAAC,QAAQ,CACjB,CAAC;IAEF,2DAA2D;IAC3D,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;SACxD,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE;QACZ,MAAM,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;QAClC,OAAO,MAAM,KAAK,YAAY,IAAI,MAAM,KAAK,UAAU,CAAC;IAC1D,CAAC,CAAC,CAAC;IACL,MAAM,cAAc,GAAG,cAAc,CAAC,QAAQ,EAAE;QAC9C,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,aAAa;KACd,CAAC,CAAC;IACH,MAAM,YAAY,GAAG,WAAW,CAC9B,mBAAmB,EACnB,cAAc,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CACnC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,OAAO,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,gBAAgB,MAAM,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,4BAA4B,CAAC,EAAE,CACzH,EACD,OAAO,CAAC,QAAQ,CACjB,CAAC;IAEF,yBAAyB;IACzB,MAAM,QAAQ,GAAG,WAAW,CAAC,eAAe,EAAE,EAAE,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IAEhE,kCAAkC;IAClC,MAAM,SAAS,GAAG,CAAC,SAAS,EAAE,YAAY,EAAE,YAAY,EAAE,QAAQ,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACpF,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,IAAI,WAAW,GAAG,CAAC,CAAC;IAEpB,KAAK,MAAM,KAAK,IAAI,SAAS,EAAE,CAAC;QAC9B,MAAM,WAAW,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;QAC1C,IAAI,WAAW,GAAG,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC,UAAU;YAAE,MAAM;QACjE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAClB,WAAW,IAAI,WAAW,CAAC;IAC7B,CAAC;IAED,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAEpC,OAAO;QACL,IAAI,EAAE,QAAQ;QACd,aAAa,EAAE,WAAW;QAC1B,MAAM,EAAE;YACN,KAAK,EAAE,SAAS;YAChB,QAAQ,EAAE,YAAY;YACtB,QAAQ,EAAE,YAAY;YACtB,IAAI,EAAE,QAAQ;SACf;KACF,CAAC;AACJ,CAAC;AAED,SAAS,WAAW,CAAC,OAAe,EAAE,KAAe,EAAE,MAAc;IACnE,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAElC,IAAI,IAAI,GAAG,OAAO,OAAO,IAAI,CAAC;IAC9B,IAAI,aAAa,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;IAEzC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,UAAU,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;QACxC,IAAI,aAAa,GAAG,UAAU,GAAG,MAAM;YAAE,MAAM;QAC/C,IAAI,IAAI,IAAI,GAAG,IAAI,CAAC;QACpB,aAAa,IAAI,UAAU,CAAC;IAC9B,CAAC;IAED,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC;AACrB,CAAC;AAED,SAAS,cAAc,CAAC,IAAY;IAClC,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,eAAe,CAAC,CAAC;AAClD,CAAC"}
@@ -0,0 +1,13 @@
1
+ import type { IndexedNote } from '../index/sqlite.js';
2
+ export interface ScoredNote {
3
+ note: IndexedNote;
4
+ score: number;
5
+ reason: string;
6
+ }
7
+ interface RelevanceInput {
8
+ branch?: string;
9
+ activePlanIds?: string[];
10
+ }
11
+ export declare function scoreRelevance(notes: IndexedNote[], input: RelevanceInput): ScoredNote[];
12
+ export {};
13
+ //# sourceMappingURL=relevance.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"relevance.d.ts","sourceRoot":"","sources":["../../../src/context/relevance.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEtD,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,WAAW,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,UAAU,cAAc;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;CAC1B;AAcD,wBAAgB,cAAc,CAC5B,KAAK,EAAE,WAAW,EAAE,EACpB,KAAK,EAAE,cAAc,GACpB,UAAU,EAAE,CAwCd"}
@@ -0,0 +1,44 @@
1
+ // --- Recency thresholds (hours) and score weights ---
2
+ const RECENCY_TIERS = [
3
+ { maxHours: 24, score: 3, label: 'recent (<24h)' },
4
+ { maxHours: 72, score: 2, label: 'recent (<72h)' },
5
+ { maxHours: 168, score: 1, label: 'recent (<1w)' },
6
+ ];
7
+ const BRANCH_MATCH_SCORE = 3;
8
+ const PLAN_MATCH_SCORE = 2;
9
+ const MS_PER_HOUR = 3_600_000;
10
+ export function scoreRelevance(notes, input) {
11
+ return notes
12
+ .map((note) => {
13
+ let score = 0;
14
+ const reasons = [];
15
+ const fm = note.frontmatter;
16
+ // Recency boost
17
+ const age = Date.now() - new Date(note.created).getTime();
18
+ const hoursOld = age / MS_PER_HOUR;
19
+ for (const tier of RECENCY_TIERS) {
20
+ if (hoursOld < tier.maxHours) {
21
+ score += tier.score;
22
+ reasons.push(tier.label);
23
+ break;
24
+ }
25
+ }
26
+ // Branch match
27
+ if (input.branch && fm.branch === input.branch) {
28
+ score += BRANCH_MATCH_SCORE;
29
+ reasons.push('same branch');
30
+ }
31
+ // Plan match
32
+ if (input.activePlanIds?.length) {
33
+ const planRef = fm.plan;
34
+ if (planRef && input.activePlanIds.some((id) => planRef === `[[${id}]]` || planRef === id)) {
35
+ score += PLAN_MATCH_SCORE;
36
+ reasons.push('active plan');
37
+ }
38
+ }
39
+ return { note, score, reason: reasons.join(', ') };
40
+ })
41
+ .filter((s) => s.score > 0)
42
+ .sort((a, b) => b.score - a.score);
43
+ }
44
+ //# sourceMappingURL=relevance.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"relevance.js","sourceRoot":"","sources":["../../../src/context/relevance.ts"],"names":[],"mappings":"AAaA,uDAAuD;AACvD,MAAM,aAAa,GAAG;IACpB,EAAE,QAAQ,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,eAAe,EAAE;IAClD,EAAE,QAAQ,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,eAAe,EAAE;IAClD,EAAE,QAAQ,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,cAAc,EAAE;CAC1C,CAAC;AAEX,MAAM,kBAAkB,GAAG,CAAC,CAAC;AAC7B,MAAM,gBAAgB,GAAG,CAAC,CAAC;AAE3B,MAAM,WAAW,GAAG,SAAS,CAAC;AAE9B,MAAM,UAAU,cAAc,CAC5B,KAAoB,EACpB,KAAqB;IAErB,OAAO,KAAK;SACT,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QACZ,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,MAAM,OAAO,GAAa,EAAE,CAAC;QAE7B,MAAM,EAAE,GAAG,IAAI,CAAC,WAAsC,CAAC;QAEvD,gBAAgB;QAChB,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,CAAC;QAC1D,MAAM,QAAQ,GAAG,GAAG,GAAG,WAAW,CAAC;QACnC,KAAK,MAAM,IAAI,IAAI,aAAa,EAAE,CAAC;YACjC,IAAI,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAC7B,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC;gBACpB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBACzB,MAAM;YACR,CAAC;QACH,CAAC;QAED,eAAe;QACf,IAAI,KAAK,CAAC,MAAM,IAAI,EAAE,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM,EAAE,CAAC;YAC/C,KAAK,IAAI,kBAAkB,CAAC;YAC5B,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAC9B,CAAC;QAED,aAAa;QACb,IAAI,KAAK,CAAC,aAAa,EAAE,MAAM,EAAE,CAAC;YAChC,MAAM,OAAO,GAAG,EAAE,CAAC,IAA0B,CAAC;YAC9C,IAAI,OAAO,IAAI,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAC7C,OAAO,KAAK,KAAK,EAAE,IAAI,IAAI,OAAO,KAAK,EAAE,CAC1C,EAAE,CAAC;gBACF,KAAK,IAAI,gBAAgB,CAAC;gBAC1B,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YAC9B,CAAC;QACH,CAAC;QAED,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;IACrD,CAAC,CAAC;SACD,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC;SAC1B,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;AACvC,CAAC"}
@@ -0,0 +1,22 @@
1
+ export interface BatchEvent {
2
+ type: string;
3
+ session_id: string;
4
+ timestamp: string;
5
+ prompt?: string;
6
+ tool_name?: string;
7
+ tool_input?: unknown;
8
+ output_preview?: string;
9
+ [key: string]: unknown;
10
+ }
11
+ type BatchClosedCallback = (events: BatchEvent[]) => void | Promise<void>;
12
+ export declare class BatchManager {
13
+ private batches;
14
+ private onBatchClosed;
15
+ constructor(onBatchClosed: BatchClosedCallback);
16
+ addEvent(event: BatchEvent): void;
17
+ finalize(sessionId: string): BatchEvent[];
18
+ hasOpenBatch(sessionId: string): boolean;
19
+ batchSize(sessionId: string): number;
20
+ }
21
+ export {};
22
+ //# sourceMappingURL=batch.d.ts.map
@@ -0,0 +1 @@
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"}
@@ -0,0 +1,38 @@
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
@@ -0,0 +1 @@
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"}
@@ -0,0 +1,27 @@
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
@@ -0,0 +1 @@
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"}