@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,88 +0,0 @@
1
- import { z } from 'zod';
2
- export declare const SessionFrontmatterSchema: z.ZodObject<{
3
- type: z.ZodLiteral<"session">;
4
- id: z.ZodString;
5
- agent: z.ZodString;
6
- user: z.ZodString;
7
- started: z.ZodString;
8
- ended: z.ZodOptional<z.ZodString>;
9
- parent: z.ZodOptional<z.ZodString>;
10
- parent_reason: z.ZodOptional<z.ZodString>;
11
- plan: z.ZodOptional<z.ZodString>;
12
- plans: z.ZodOptional<z.ZodArray<z.ZodString>>;
13
- branch: z.ZodOptional<z.ZodString>;
14
- tags: z.ZodDefault<z.ZodArray<z.ZodString>>;
15
- tools_used: z.ZodOptional<z.ZodNumber>;
16
- files_changed: z.ZodOptional<z.ZodNumber>;
17
- }, z.core.$strip>;
18
- export declare const PlanFrontmatterSchema: z.ZodObject<{
19
- type: z.ZodLiteral<"plan">;
20
- id: z.ZodString;
21
- status: z.ZodDefault<z.ZodEnum<{
22
- active: "active";
23
- in_progress: "in_progress";
24
- completed: "completed";
25
- abandoned: "abandoned";
26
- }>>;
27
- created: z.ZodString;
28
- author: z.ZodOptional<z.ZodString>;
29
- tags: z.ZodDefault<z.ZodArray<z.ZodString>>;
30
- }, z.core.$strip>;
31
- export declare const MEMORY_STATUSES: readonly ["active", "superseded", "archived"];
32
- export type MemoryStatus = (typeof MEMORY_STATUSES)[number];
33
- export declare const MemoryFrontmatterSchema: z.ZodObject<{
34
- type: z.ZodLiteral<"memory">;
35
- id: z.ZodString;
36
- observation_type: z.ZodString;
37
- status: z.ZodDefault<z.ZodEnum<{
38
- active: "active";
39
- superseded: "superseded";
40
- archived: "archived";
41
- }>>;
42
- session: z.ZodOptional<z.ZodString>;
43
- plan: z.ZodOptional<z.ZodString>;
44
- superseded_by: z.ZodOptional<z.ZodString>;
45
- consolidated_from: z.ZodOptional<z.ZodArray<z.ZodString>>;
46
- created: z.ZodString;
47
- tags: z.ZodDefault<z.ZodArray<z.ZodString>>;
48
- }, z.core.$strip>;
49
- export declare const ARTIFACT_TYPES: readonly ["spec", "plan", "rfc", "doc", "other"];
50
- export type ArtifactType = (typeof ARTIFACT_TYPES)[number];
51
- export declare const ArtifactFrontmatterSchema: z.ZodObject<{
52
- type: z.ZodLiteral<"artifact">;
53
- id: z.ZodString;
54
- artifact_type: z.ZodDefault<z.ZodEnum<{
55
- plan: "plan";
56
- spec: "spec";
57
- rfc: "rfc";
58
- doc: "doc";
59
- other: "other";
60
- }>>;
61
- source_path: z.ZodString;
62
- title: z.ZodString;
63
- last_captured_by: z.ZodString;
64
- created: z.ZodString;
65
- updated: z.ZodString;
66
- tags: z.ZodDefault<z.ZodArray<z.ZodString>>;
67
- }, z.core.$strip>;
68
- export declare const TeamMemberFrontmatterSchema: z.ZodObject<{
69
- type: z.ZodLiteral<"team-member">;
70
- user: z.ZodString;
71
- joined: z.ZodString;
72
- role: z.ZodOptional<z.ZodString>;
73
- tags: z.ZodDefault<z.ZodArray<z.ZodString>>;
74
- }, z.core.$strip>;
75
- export type SessionFrontmatter = z.infer<typeof SessionFrontmatterSchema>;
76
- export type PlanFrontmatter = z.infer<typeof PlanFrontmatterSchema>;
77
- export type MemoryFrontmatter = z.infer<typeof MemoryFrontmatterSchema>;
78
- export type ObservationType = MemoryFrontmatter['observation_type'];
79
- export type ArtifactFrontmatter = z.infer<typeof ArtifactFrontmatterSchema>;
80
- export type TeamMemberFrontmatter = z.infer<typeof TeamMemberFrontmatterSchema>;
81
- export type NoteFrontmatter = SessionFrontmatter | PlanFrontmatter | MemoryFrontmatter | ArtifactFrontmatter | TeamMemberFrontmatter;
82
- export interface VaultNote<T extends NoteFrontmatter = NoteFrontmatter> {
83
- path: string;
84
- frontmatter: T;
85
- content: string;
86
- }
87
- export declare function parseNoteFrontmatter(data: Record<string, unknown>): NoteFrontmatter;
88
- //# sourceMappingURL=types.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/vault/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;iBAenC,CAAC;AAEH,eAAO,MAAM,qBAAqB;;;;;;;;;;;;iBAOhC,CAAC;AAEH,eAAO,MAAM,eAAe,+CAAgD,CAAC;AAC7E,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,eAAe,CAAC,CAAC,MAAM,CAAC,CAAC;AAE5D,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;iBAWlC,CAAC;AAEH,eAAO,MAAM,cAAc,kDAAmD,CAAC;AAC/E,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,cAAc,CAAC,CAAC,MAAM,CAAC,CAAC;AAE3D,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;iBAUpC,CAAC;AAEH,eAAO,MAAM,2BAA2B;;;;;;iBAMtC,CAAC;AAEH,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC;AAC1E,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AACpE,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AACxE,MAAM,MAAM,eAAe,GAAG,iBAAiB,CAAC,kBAAkB,CAAC,CAAC;AACpE,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAC;AAC5E,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,2BAA2B,CAAC,CAAC;AAEhF,MAAM,MAAM,eAAe,GACvB,kBAAkB,GAClB,eAAe,GACf,iBAAiB,GACjB,mBAAmB,GACnB,qBAAqB,CAAC;AAE1B,MAAM,WAAW,SAAS,CAAC,CAAC,SAAS,eAAe,GAAG,eAAe;IACpE,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,CAAC,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;CACjB;AAUD,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,eAAe,CAUnF"}
@@ -1,94 +0,0 @@
1
- import { z } from 'zod';
2
- export const SessionFrontmatterSchema = z.object({
3
- type: z.literal('session'),
4
- id: z.string(),
5
- agent: z.string(),
6
- user: z.string(),
7
- started: z.string(),
8
- ended: z.string().optional(),
9
- parent: z.string().optional(),
10
- parent_reason: z.string().optional(),
11
- plan: z.string().optional(), // backward compat read path
12
- plans: z.array(z.string()).optional(), // new: multiple plans
13
- branch: z.string().optional(),
14
- tags: z.array(z.string()).default([]),
15
- tools_used: z.number().int().optional(),
16
- files_changed: z.number().int().optional(),
17
- });
18
- export const PlanFrontmatterSchema = z.object({
19
- type: z.literal('plan'),
20
- id: z.string(),
21
- status: z.enum(['active', 'in_progress', 'completed', 'abandoned']).default('active'),
22
- created: z.string(),
23
- author: z.string().optional(),
24
- tags: z.array(z.string()).default([]),
25
- });
26
- export const MEMORY_STATUSES = ['active', 'superseded', 'archived'];
27
- export const MemoryFrontmatterSchema = z.object({
28
- type: z.literal('memory'),
29
- id: z.string(),
30
- observation_type: z.string(),
31
- status: z.enum(MEMORY_STATUSES).default('active'),
32
- session: z.string().optional(),
33
- plan: z.string().optional(),
34
- superseded_by: z.string().optional(),
35
- consolidated_from: z.array(z.string()).optional(),
36
- created: z.string(),
37
- tags: z.array(z.string()).default([]),
38
- });
39
- export const ARTIFACT_TYPES = ['spec', 'plan', 'rfc', 'doc', 'other'];
40
- export const ArtifactFrontmatterSchema = z.object({
41
- type: z.literal('artifact'),
42
- id: z.string(),
43
- artifact_type: z.enum(ARTIFACT_TYPES).default('other'),
44
- source_path: z.string(),
45
- title: z.string(),
46
- last_captured_by: z.string(),
47
- created: z.string(),
48
- updated: z.string(),
49
- tags: z.array(z.string()).default([]),
50
- });
51
- export const TeamMemberFrontmatterSchema = z.object({
52
- type: z.literal('team-member'),
53
- user: z.string(),
54
- joined: z.string(),
55
- role: z.string().optional(),
56
- tags: z.array(z.string()).default([]),
57
- });
58
- const schemasByType = {
59
- session: SessionFrontmatterSchema,
60
- plan: PlanFrontmatterSchema,
61
- memory: MemoryFrontmatterSchema,
62
- artifact: ArtifactFrontmatterSchema,
63
- 'team-member': TeamMemberFrontmatterSchema,
64
- };
65
- export function parseNoteFrontmatter(data) {
66
- const type = data.type;
67
- const schema = schemasByType[type];
68
- if (!schema) {
69
- throw new Error(`Unknown note type: ${type}`);
70
- }
71
- // gray-matter and YAML.parse return Date objects for ISO date strings.
72
- // Coerce them to strings before Zod validation.
73
- const coerced = coerceDatesToStrings(data);
74
- return schema.parse(coerced);
75
- }
76
- function coerceDatesToStrings(obj) {
77
- const result = {};
78
- for (const [key, value] of Object.entries(obj)) {
79
- if (value instanceof Date) {
80
- result[key] = value.toISOString();
81
- }
82
- else if (Array.isArray(value)) {
83
- result[key] = value.map((item) => item instanceof Date ? item.toISOString() : item);
84
- }
85
- else if (value !== null && typeof value === 'object' && !Array.isArray(value)) {
86
- result[key] = coerceDatesToStrings(value);
87
- }
88
- else {
89
- result[key] = value;
90
- }
91
- }
92
- return result;
93
- }
94
- //# sourceMappingURL=types.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/vault/types.ts"],"names":[],"mappings":"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"}
@@ -1,66 +0,0 @@
1
- import type { ArtifactType } from './types.js';
2
- interface WriteSessionInput {
3
- id: string;
4
- agent?: string;
5
- user?: string;
6
- started: string;
7
- ended?: string;
8
- parent?: string;
9
- parent_reason?: string;
10
- plans?: string[];
11
- branch?: string;
12
- tags?: string[];
13
- tools_used?: number;
14
- files_changed?: number;
15
- summary: string;
16
- }
17
- interface WritePlanInput {
18
- id: string;
19
- status?: string;
20
- author?: string;
21
- tags?: string[];
22
- content: string;
23
- }
24
- interface WriteMemoryInput {
25
- id: string;
26
- observation_type: string;
27
- session?: string;
28
- plan?: string;
29
- tags?: string[];
30
- content: string;
31
- }
32
- interface WriteArtifactInput {
33
- id: string;
34
- artifact_type: ArtifactType;
35
- source_path: string;
36
- title: string;
37
- session: string;
38
- tags?: string[];
39
- content: string;
40
- }
41
- interface WriteTeamMemberInput {
42
- user: string;
43
- role?: string;
44
- }
45
- export declare class VaultWriter {
46
- private vaultDir;
47
- constructor(vaultDir: string);
48
- writeSession(input: WriteSessionInput): string;
49
- writePlan(input: WritePlanInput): string;
50
- writeMemory(input: WriteMemoryInput): string;
51
- writeArtifact(input: WriteArtifactInput): string;
52
- writeTeamMember(input: WriteTeamMemberInput): string;
53
- /**
54
- * Update frontmatter fields on an existing note without touching the body.
55
- * By default only adds fields that don't exist. Set overwrite=true to replace existing values.
56
- * Returns true if the update was applied, false if the file doesn't exist.
57
- */
58
- updateNoteFrontmatter(relativePath: string, fields: Record<string, unknown>, overwrite?: boolean): boolean;
59
- /** @deprecated Use updateNoteFrontmatter instead */
60
- updateSessionFrontmatter(relativePath: string, fields: Record<string, unknown>): boolean;
61
- private writeMarkdown;
62
- /** Write to a temp file then rename — prevents Obsidian from seeing a truncated file mid-write. */
63
- private atomicWrite;
64
- }
65
- export {};
66
- //# sourceMappingURL=writer.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"writer.d.ts","sourceRoot":"","sources":["../../../src/vault/writer.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAG/C,UAAU,iBAAiB;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,UAAU,cAAc;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,UAAU,gBAAgB;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,gBAAgB,EAAE,MAAM,CAAC;IACzB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,UAAU,kBAAkB;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,aAAa,EAAE,YAAY,CAAC;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,UAAU,oBAAoB;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,qBAAa,WAAW;IACV,OAAO,CAAC,QAAQ;gBAAR,QAAQ,EAAE,MAAM;IAEpC,YAAY,CAAC,KAAK,EAAE,iBAAiB,GAAG,MAAM;IA2B9C,SAAS,CAAC,KAAK,EAAE,cAAc,GAAG,MAAM;IAwCxC,WAAW,CAAC,KAAK,EAAE,gBAAgB,GAAG,MAAM;IAiC5C,aAAa,CAAC,KAAK,EAAE,kBAAkB,GAAG,MAAM;IA6ChD,eAAe,CAAC,KAAK,EAAE,oBAAoB,GAAG,MAAM;IAoBpD;;;;OAIG;IACH,qBAAqB,CAAC,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,SAAS,UAAQ,GAAG,OAAO;IAyBxG,oDAAoD;IACpD,wBAAwB,CAAC,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO;IAIxF,OAAO,CAAC,aAAa;IASrB,mGAAmG;IACnG,OAAO,CAAC,WAAW;CAKpB"}
@@ -1,217 +0,0 @@
1
- import fs from 'node:fs';
2
- import path from 'node:path';
3
- import YAML from 'yaml';
4
- import { buildTags, formatTeamBody, formatPlanBody, formatArtifactBody } from '../obsidian/formatter.js';
5
- import { sessionNoteId, sessionRelativePath } from './session-id.js';
6
- export class VaultWriter {
7
- vaultDir;
8
- constructor(vaultDir) {
9
- this.vaultDir = vaultDir;
10
- }
11
- writeSession(input) {
12
- const date = input.started.slice(0, 10);
13
- const relativePath = sessionRelativePath(input.id, date);
14
- const frontmatter = {
15
- type: 'session',
16
- id: input.id,
17
- agent: input.agent ?? 'claude-code',
18
- user: input.user ?? '',
19
- started: input.started,
20
- };
21
- if (input.ended)
22
- frontmatter.ended = input.ended;
23
- if (input.parent)
24
- frontmatter.parent = input.parent;
25
- if (input.parent_reason)
26
- frontmatter.parent_reason = input.parent_reason;
27
- if (input.plans?.length)
28
- frontmatter.plans = input.plans;
29
- if (input.branch)
30
- frontmatter.branch = input.branch;
31
- frontmatter.tags = buildTags('session', 'ended', [
32
- ...(input.user ? [`user/${input.user}`] : []),
33
- ...(input.tags ?? []),
34
- ]);
35
- if (input.tools_used != null)
36
- frontmatter.tools_used = input.tools_used;
37
- if (input.files_changed != null)
38
- frontmatter.files_changed = input.files_changed;
39
- this.writeMarkdown(relativePath, frontmatter, input.summary);
40
- return relativePath;
41
- }
42
- writePlan(input) {
43
- const relativePath = `plans/${input.id}.md`;
44
- const fullPath = path.join(this.vaultDir, relativePath);
45
- const status = input.status ?? 'active';
46
- let created = new Date().toISOString();
47
- // Preserve created from existing file (idempotent)
48
- try {
49
- const existing = fs.readFileSync(fullPath, 'utf-8');
50
- const fmMatch = existing.match(/^---\n([\s\S]*?)\n---/);
51
- if (fmMatch) {
52
- const parsed = YAML.parse(fmMatch[1]);
53
- if (typeof parsed.created === 'string')
54
- created = parsed.created;
55
- }
56
- }
57
- catch {
58
- // File doesn't exist yet
59
- }
60
- const frontmatter = {
61
- type: 'plan',
62
- id: input.id,
63
- status,
64
- created,
65
- };
66
- if (input.author)
67
- frontmatter.author = input.author;
68
- frontmatter.tags = buildTags('plan', status, input.tags ?? []);
69
- const body = formatPlanBody({
70
- id: input.id,
71
- status,
72
- author: input.author,
73
- created,
74
- content: input.content,
75
- tags: input.tags,
76
- });
77
- this.writeMarkdown(relativePath, frontmatter, body);
78
- return relativePath;
79
- }
80
- writeMemory(input) {
81
- const normalizedType = input.observation_type.replace(/_/g, '-');
82
- const relativePath = `memories/${normalizedType}/${input.id}.md`;
83
- const fullPath = path.join(this.vaultDir, relativePath);
84
- const now = new Date().toISOString();
85
- // Preserve created from existing file (idempotent)
86
- let created = now;
87
- try {
88
- const existing = fs.readFileSync(fullPath, 'utf-8');
89
- const fmMatch = existing.match(/^---\n([\s\S]*?)\n---/);
90
- if (fmMatch) {
91
- const parsed = YAML.parse(fmMatch[1]);
92
- if (typeof parsed.created === 'string')
93
- created = parsed.created;
94
- }
95
- }
96
- catch {
97
- // File doesn't exist yet — created = now
98
- }
99
- const frontmatter = {
100
- type: 'memory',
101
- id: input.id,
102
- observation_type: input.observation_type,
103
- created,
104
- };
105
- if (input.session)
106
- frontmatter.session = input.session;
107
- if (input.plan)
108
- frontmatter.plan = input.plan;
109
- frontmatter.tags = buildTags('memory', input.observation_type, input.tags ?? []);
110
- this.writeMarkdown(relativePath, frontmatter, input.content);
111
- return relativePath;
112
- }
113
- writeArtifact(input) {
114
- const relativePath = `artifacts/${input.id}.md`;
115
- const fullPath = path.join(this.vaultDir, relativePath);
116
- const now = new Date().toISOString();
117
- let created = now;
118
- // Preserve created from existing file (latest-wins update)
119
- try {
120
- const existing = fs.readFileSync(fullPath, 'utf-8');
121
- const fmMatch = existing.match(/^---\n([\s\S]*?)\n---/);
122
- if (fmMatch) {
123
- const parsed = YAML.parse(fmMatch[1]);
124
- if (typeof parsed.created === 'string')
125
- created = parsed.created;
126
- }
127
- }
128
- catch {
129
- // File doesn't exist yet — created = now
130
- }
131
- const frontmatter = {
132
- type: 'artifact',
133
- id: input.id,
134
- artifact_type: input.artifact_type,
135
- source_path: input.source_path,
136
- title: input.title,
137
- last_captured_by: sessionNoteId(input.session),
138
- created,
139
- updated: now,
140
- tags: buildTags('artifact', input.artifact_type, input.tags ?? []),
141
- };
142
- const body = formatArtifactBody({
143
- id: input.id,
144
- title: input.title,
145
- artifact_type: input.artifact_type,
146
- source_path: input.source_path,
147
- sessionId: input.session,
148
- content: input.content,
149
- tags: input.tags,
150
- });
151
- this.writeMarkdown(relativePath, frontmatter, body);
152
- return relativePath;
153
- }
154
- writeTeamMember(input) {
155
- const relativePath = `team/${input.user}.md`;
156
- const frontmatter = {
157
- type: 'team-member',
158
- user: input.user,
159
- joined: new Date().toISOString(),
160
- tags: buildTags('team', '', [`user/${input.user}`]),
161
- };
162
- if (input.role)
163
- frontmatter.role = input.role;
164
- const body = formatTeamBody({
165
- user: input.user,
166
- role: input.role,
167
- });
168
- this.writeMarkdown(relativePath, frontmatter, body);
169
- return relativePath;
170
- }
171
- /**
172
- * Update frontmatter fields on an existing note without touching the body.
173
- * By default only adds fields that don't exist. Set overwrite=true to replace existing values.
174
- * Returns true if the update was applied, false if the file doesn't exist.
175
- */
176
- updateNoteFrontmatter(relativePath, fields, overwrite = false) {
177
- const fullPath = path.join(this.vaultDir, relativePath);
178
- let fileContent;
179
- try {
180
- fileContent = fs.readFileSync(fullPath, 'utf-8');
181
- }
182
- catch {
183
- return false;
184
- }
185
- const fmMatch = fileContent.match(/^---\n([\s\S]*?)\n---/);
186
- if (!fmMatch)
187
- return false;
188
- const parsed = YAML.parse(fmMatch[1]);
189
- for (const [key, value] of Object.entries(fields)) {
190
- if (overwrite || parsed[key] === undefined) {
191
- parsed[key] = value;
192
- }
193
- }
194
- const body = fileContent.slice(fmMatch[0].length);
195
- const fmYaml = YAML.stringify(parsed, { defaultStringType: 'QUOTE_DOUBLE', defaultKeyType: 'PLAIN' }).trim();
196
- this.atomicWrite(fullPath, `---\n${fmYaml}\n---${body}`);
197
- return true;
198
- }
199
- /** @deprecated Use updateNoteFrontmatter instead */
200
- updateSessionFrontmatter(relativePath, fields) {
201
- return this.updateNoteFrontmatter(relativePath, fields);
202
- }
203
- writeMarkdown(relativePath, frontmatter, content) {
204
- const fullPath = path.join(this.vaultDir, relativePath);
205
- fs.mkdirSync(path.dirname(fullPath), { recursive: true });
206
- const fmYaml = YAML.stringify(frontmatter, { defaultStringType: 'QUOTE_DOUBLE', defaultKeyType: 'PLAIN' }).trim();
207
- const file = `---\n${fmYaml}\n---\n\n${content}\n`;
208
- this.atomicWrite(fullPath, file);
209
- }
210
- /** Write to a temp file then rename — prevents Obsidian from seeing a truncated file mid-write. */
211
- atomicWrite(fullPath, content) {
212
- const tmp = `${fullPath}.tmp`;
213
- fs.writeFileSync(tmp, content, 'utf-8');
214
- fs.renameSync(tmp, fullPath);
215
- }
216
- }
217
- //# sourceMappingURL=writer.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"writer.js","sourceRoot":"","sources":["../../../src/vault/writer.ts"],"names":[],"mappings":"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"}