@goondocks/myco 0.2.6 → 0.2.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (290) hide show
  1. package/.claude-plugin/plugin.json +1 -1
  2. package/CONTRIBUTING.md +1 -1
  3. package/commands/init.md +10 -26
  4. package/dist/chunk-4JML636J.js +52 -0
  5. package/dist/chunk-4JML636J.js.map +1 -0
  6. package/dist/chunk-AOMX45LH.js +8974 -0
  7. package/dist/chunk-AOMX45LH.js.map +1 -0
  8. package/dist/chunk-I7PMGO6S.js +58 -0
  9. package/dist/chunk-I7PMGO6S.js.map +1 -0
  10. package/dist/chunk-N33KUCFP.js +33 -0
  11. package/dist/chunk-N33KUCFP.js.map +1 -0
  12. package/dist/chunk-NYNEJ5QY.js +71 -0
  13. package/dist/chunk-NYNEJ5QY.js.map +1 -0
  14. package/dist/chunk-PA3VMINE.js +111 -0
  15. package/dist/chunk-PA3VMINE.js.map +1 -0
  16. package/dist/chunk-PZUWP5VK.js +44 -0
  17. package/dist/chunk-PZUWP5VK.js.map +1 -0
  18. package/dist/chunk-SVUINMDD.js +104 -0
  19. package/dist/chunk-SVUINMDD.js.map +1 -0
  20. package/dist/chunk-TH6GIBXG.js +91 -0
  21. package/dist/chunk-TH6GIBXG.js.map +1 -0
  22. package/dist/chunk-TWDS6MSU.js +354 -0
  23. package/dist/chunk-TWDS6MSU.js.map +1 -0
  24. package/dist/chunk-UIIZRTJU.js +21172 -0
  25. package/dist/chunk-UIIZRTJU.js.map +1 -0
  26. package/dist/chunk-YMYJ7FNH.js +19 -0
  27. package/dist/chunk-YMYJ7FNH.js.map +1 -0
  28. package/dist/chunk-ZJQ5G637.js +21 -0
  29. package/dist/chunk-ZJQ5G637.js.map +1 -0
  30. package/dist/chunk-ZTZVX5E6.js +421 -0
  31. package/dist/chunk-ZTZVX5E6.js.map +1 -0
  32. package/dist/cli-K5FSKLQC.js +625 -0
  33. package/dist/cli-K5FSKLQC.js.map +1 -0
  34. package/dist/client-4JMOYNKK.js +11 -0
  35. package/dist/client-4JMOYNKK.js.map +1 -0
  36. package/dist/main-5W4ADOBG.js +3224 -0
  37. package/dist/main-5W4ADOBG.js.map +1 -0
  38. package/dist/server-PIEPVUUH.js +14725 -0
  39. package/dist/server-PIEPVUUH.js.map +1 -0
  40. package/dist/session-start-2NNQHT5S.js +189 -0
  41. package/dist/session-start-2NNQHT5S.js.map +1 -0
  42. package/dist/src/cli.js +9 -582
  43. package/dist/src/cli.js.map +1 -1
  44. package/dist/src/daemon/main.js +9 -737
  45. package/dist/src/daemon/main.js.map +1 -1
  46. package/dist/src/hooks/post-tool-use.js +47 -35
  47. package/dist/src/hooks/post-tool-use.js.map +1 -1
  48. package/dist/src/hooks/session-end.js +29 -18
  49. package/dist/src/hooks/session-end.js.map +1 -1
  50. package/dist/src/hooks/session-start.js +9 -48
  51. package/dist/src/hooks/session-start.js.map +1 -1
  52. package/dist/src/hooks/stop.js +39 -30
  53. package/dist/src/hooks/stop.js.map +1 -1
  54. package/dist/src/hooks/user-prompt-submit.js +48 -40
  55. package/dist/src/hooks/user-prompt-submit.js.map +1 -1
  56. package/dist/src/mcp/server.js +9 -304
  57. package/dist/src/mcp/server.js.map +1 -1
  58. package/package.json +3 -2
  59. package/dist/src/agents/adapter.d.ts +0 -76
  60. package/dist/src/agents/adapter.d.ts.map +0 -1
  61. package/dist/src/agents/adapter.js +0 -124
  62. package/dist/src/agents/adapter.js.map +0 -1
  63. package/dist/src/agents/claude-code.d.ts +0 -3
  64. package/dist/src/agents/claude-code.d.ts.map +0 -1
  65. package/dist/src/agents/claude-code.js +0 -22
  66. package/dist/src/agents/claude-code.js.map +0 -1
  67. package/dist/src/agents/cursor.d.ts +0 -3
  68. package/dist/src/agents/cursor.d.ts.map +0 -1
  69. package/dist/src/agents/cursor.js +0 -154
  70. package/dist/src/agents/cursor.js.map +0 -1
  71. package/dist/src/agents/index.d.ts +0 -6
  72. package/dist/src/agents/index.d.ts.map +0 -1
  73. package/dist/src/agents/index.js +0 -5
  74. package/dist/src/agents/index.js.map +0 -1
  75. package/dist/src/agents/registry.d.ts +0 -34
  76. package/dist/src/agents/registry.d.ts.map +0 -1
  77. package/dist/src/agents/registry.js +0 -95
  78. package/dist/src/agents/registry.js.map +0 -1
  79. package/dist/src/artifacts/candidates.d.ts +0 -20
  80. package/dist/src/artifacts/candidates.d.ts.map +0 -1
  81. package/dist/src/artifacts/candidates.js +0 -84
  82. package/dist/src/artifacts/candidates.js.map +0 -1
  83. package/dist/src/artifacts/slugify.d.ts +0 -2
  84. package/dist/src/artifacts/slugify.d.ts.map +0 -1
  85. package/dist/src/artifacts/slugify.js +0 -22
  86. package/dist/src/artifacts/slugify.js.map +0 -1
  87. package/dist/src/capture/buffer.d.ts +0 -20
  88. package/dist/src/capture/buffer.d.ts.map +0 -1
  89. package/dist/src/capture/buffer.js +0 -55
  90. package/dist/src/capture/buffer.js.map +0 -1
  91. package/dist/src/capture/transcript-miner.d.ts +0 -31
  92. package/dist/src/capture/transcript-miner.d.ts.map +0 -1
  93. package/dist/src/capture/transcript-miner.js +0 -61
  94. package/dist/src/capture/transcript-miner.js.map +0 -1
  95. package/dist/src/cli.d.ts +0 -3
  96. package/dist/src/cli.d.ts.map +0 -1
  97. package/dist/src/config/loader.d.ts +0 -4
  98. package/dist/src/config/loader.d.ts.map +0 -1
  99. package/dist/src/config/loader.js +0 -32
  100. package/dist/src/config/loader.js.map +0 -1
  101. package/dist/src/config/schema.d.ts +0 -83
  102. package/dist/src/config/schema.d.ts.map +0 -1
  103. package/dist/src/config/schema.js +0 -55
  104. package/dist/src/config/schema.js.map +0 -1
  105. package/dist/src/constants.d.ts +0 -73
  106. package/dist/src/constants.d.ts.map +0 -1
  107. package/dist/src/constants.js +0 -86
  108. package/dist/src/constants.js.map +0 -1
  109. package/dist/src/context/injector.d.ts +0 -18
  110. package/dist/src/context/injector.d.ts.map +0 -1
  111. package/dist/src/context/injector.js +0 -71
  112. package/dist/src/context/injector.js.map +0 -1
  113. package/dist/src/context/relevance.d.ts +0 -13
  114. package/dist/src/context/relevance.d.ts.map +0 -1
  115. package/dist/src/context/relevance.js +0 -44
  116. package/dist/src/context/relevance.js.map +0 -1
  117. package/dist/src/daemon/batch.d.ts +0 -22
  118. package/dist/src/daemon/batch.d.ts.map +0 -1
  119. package/dist/src/daemon/batch.js +0 -38
  120. package/dist/src/daemon/batch.js.map +0 -1
  121. package/dist/src/daemon/lifecycle.d.ts +0 -27
  122. package/dist/src/daemon/lifecycle.d.ts.map +0 -1
  123. package/dist/src/daemon/lifecycle.js +0 -50
  124. package/dist/src/daemon/lifecycle.js.map +0 -1
  125. package/dist/src/daemon/lineage.d.ts +0 -42
  126. package/dist/src/daemon/lineage.d.ts.map +0 -1
  127. package/dist/src/daemon/lineage.js +0 -116
  128. package/dist/src/daemon/lineage.js.map +0 -1
  129. package/dist/src/daemon/logger.d.ts +0 -33
  130. package/dist/src/daemon/logger.d.ts.map +0 -1
  131. package/dist/src/daemon/logger.js +0 -88
  132. package/dist/src/daemon/logger.js.map +0 -1
  133. package/dist/src/daemon/main.d.ts +0 -2
  134. package/dist/src/daemon/main.d.ts.map +0 -1
  135. package/dist/src/daemon/processor.d.ts +0 -44
  136. package/dist/src/daemon/processor.d.ts.map +0 -1
  137. package/dist/src/daemon/processor.js +0 -142
  138. package/dist/src/daemon/processor.js.map +0 -1
  139. package/dist/src/daemon/server.d.ts +0 -24
  140. package/dist/src/daemon/server.d.ts.map +0 -1
  141. package/dist/src/daemon/server.js +0 -117
  142. package/dist/src/daemon/server.js.map +0 -1
  143. package/dist/src/daemon/watcher.d.ts +0 -29
  144. package/dist/src/daemon/watcher.d.ts.map +0 -1
  145. package/dist/src/daemon/watcher.js +0 -67
  146. package/dist/src/daemon/watcher.js.map +0 -1
  147. package/dist/src/hooks/client.d.ts +0 -20
  148. package/dist/src/hooks/client.d.ts.map +0 -1
  149. package/dist/src/hooks/client.js +0 -111
  150. package/dist/src/hooks/client.js.map +0 -1
  151. package/dist/src/hooks/post-tool-use.d.ts +0 -2
  152. package/dist/src/hooks/post-tool-use.d.ts.map +0 -1
  153. package/dist/src/hooks/read-stdin.d.ts +0 -2
  154. package/dist/src/hooks/read-stdin.d.ts.map +0 -1
  155. package/dist/src/hooks/read-stdin.js +0 -10
  156. package/dist/src/hooks/read-stdin.js.map +0 -1
  157. package/dist/src/hooks/session-end.d.ts +0 -2
  158. package/dist/src/hooks/session-end.d.ts.map +0 -1
  159. package/dist/src/hooks/session-start.d.ts +0 -2
  160. package/dist/src/hooks/session-start.d.ts.map +0 -1
  161. package/dist/src/hooks/stop.d.ts +0 -2
  162. package/dist/src/hooks/stop.d.ts.map +0 -1
  163. package/dist/src/hooks/user-prompt-submit.d.ts +0 -2
  164. package/dist/src/hooks/user-prompt-submit.d.ts.map +0 -1
  165. package/dist/src/index/fts.d.ts +0 -16
  166. package/dist/src/index/fts.d.ts.map +0 -1
  167. package/dist/src/index/fts.js +0 -53
  168. package/dist/src/index/fts.js.map +0 -1
  169. package/dist/src/index/rebuild.d.ts +0 -4
  170. package/dist/src/index/rebuild.d.ts.map +0 -1
  171. package/dist/src/index/rebuild.js +0 -40
  172. package/dist/src/index/rebuild.js.map +0 -1
  173. package/dist/src/index/sqlite.d.ts +0 -33
  174. package/dist/src/index/sqlite.d.ts.map +0 -1
  175. package/dist/src/index/sqlite.js +0 -99
  176. package/dist/src/index/sqlite.js.map +0 -1
  177. package/dist/src/index/vectors.d.ts +0 -24
  178. package/dist/src/index/vectors.d.ts.map +0 -1
  179. package/dist/src/index/vectors.js +0 -97
  180. package/dist/src/index/vectors.js.map +0 -1
  181. package/dist/src/intelligence/anthropic.d.ts +0 -17
  182. package/dist/src/intelligence/anthropic.d.ts.map +0 -1
  183. package/dist/src/intelligence/anthropic.js +0 -36
  184. package/dist/src/intelligence/anthropic.js.map +0 -1
  185. package/dist/src/intelligence/embeddings.d.ts +0 -3
  186. package/dist/src/intelligence/embeddings.d.ts.map +0 -1
  187. package/dist/src/intelligence/embeddings.js +0 -15
  188. package/dist/src/intelligence/embeddings.js.map +0 -1
  189. package/dist/src/intelligence/llm.d.ts +0 -33
  190. package/dist/src/intelligence/llm.d.ts.map +0 -1
  191. package/dist/src/intelligence/llm.js +0 -26
  192. package/dist/src/intelligence/llm.js.map +0 -1
  193. package/dist/src/intelligence/lm-studio.d.ts +0 -20
  194. package/dist/src/intelligence/lm-studio.d.ts.map +0 -1
  195. package/dist/src/intelligence/lm-studio.js +0 -59
  196. package/dist/src/intelligence/lm-studio.js.map +0 -1
  197. package/dist/src/intelligence/ollama.d.ts +0 -22
  198. package/dist/src/intelligence/ollama.d.ts.map +0 -1
  199. package/dist/src/intelligence/ollama.js +0 -64
  200. package/dist/src/intelligence/ollama.js.map +0 -1
  201. package/dist/src/intelligence/response.d.ts +0 -29
  202. package/dist/src/intelligence/response.d.ts.map +0 -1
  203. package/dist/src/intelligence/response.js +0 -71
  204. package/dist/src/intelligence/response.js.map +0 -1
  205. package/dist/src/logs/format.d.ts +0 -6
  206. package/dist/src/logs/format.d.ts.map +0 -1
  207. package/dist/src/logs/format.js +0 -46
  208. package/dist/src/logs/format.js.map +0 -1
  209. package/dist/src/logs/reader.d.ts +0 -28
  210. package/dist/src/logs/reader.d.ts.map +0 -1
  211. package/dist/src/logs/reader.js +0 -106
  212. package/dist/src/logs/reader.js.map +0 -1
  213. package/dist/src/mcp/server.d.ts +0 -16
  214. package/dist/src/mcp/server.d.ts.map +0 -1
  215. package/dist/src/mcp/tools/consolidate.d.ts +0 -15
  216. package/dist/src/mcp/tools/consolidate.d.ts.map +0 -1
  217. package/dist/src/mcp/tools/consolidate.js +0 -49
  218. package/dist/src/mcp/tools/consolidate.js.map +0 -1
  219. package/dist/src/mcp/tools/graph.d.ts +0 -30
  220. package/dist/src/mcp/tools/graph.d.ts.map +0 -1
  221. package/dist/src/mcp/tools/graph.js +0 -106
  222. package/dist/src/mcp/tools/graph.js.map +0 -1
  223. package/dist/src/mcp/tools/logs.d.ts +0 -3
  224. package/dist/src/mcp/tools/logs.d.ts.map +0 -1
  225. package/dist/src/mcp/tools/logs.js +0 -7
  226. package/dist/src/mcp/tools/logs.js.map +0 -1
  227. package/dist/src/mcp/tools/plans.d.ts +0 -23
  228. package/dist/src/mcp/tools/plans.d.ts.map +0 -1
  229. package/dist/src/mcp/tools/plans.js +0 -63
  230. package/dist/src/mcp/tools/plans.js.map +0 -1
  231. package/dist/src/mcp/tools/recall.d.ts +0 -30
  232. package/dist/src/mcp/tools/recall.d.ts.map +0 -1
  233. package/dist/src/mcp/tools/recall.js +0 -34
  234. package/dist/src/mcp/tools/recall.js.map +0 -1
  235. package/dist/src/mcp/tools/remember.d.ts +0 -15
  236. package/dist/src/mcp/tools/remember.d.ts.map +0 -1
  237. package/dist/src/mcp/tools/remember.js +0 -18
  238. package/dist/src/mcp/tools/remember.js.map +0 -1
  239. package/dist/src/mcp/tools/search.d.ts +0 -19
  240. package/dist/src/mcp/tools/search.d.ts.map +0 -1
  241. package/dist/src/mcp/tools/search.js +0 -59
  242. package/dist/src/mcp/tools/search.js.map +0 -1
  243. package/dist/src/mcp/tools/sessions.d.ts +0 -21
  244. package/dist/src/mcp/tools/sessions.d.ts.map +0 -1
  245. package/dist/src/mcp/tools/sessions.js +0 -36
  246. package/dist/src/mcp/tools/sessions.js.map +0 -1
  247. package/dist/src/mcp/tools/supersede.d.ts +0 -14
  248. package/dist/src/mcp/tools/supersede.d.ts.map +0 -1
  249. package/dist/src/mcp/tools/supersede.js +0 -30
  250. package/dist/src/mcp/tools/supersede.js.map +0 -1
  251. package/dist/src/mcp/tools/team.d.ts +0 -16
  252. package/dist/src/mcp/tools/team.d.ts.map +0 -1
  253. package/dist/src/mcp/tools/team.js +0 -32
  254. package/dist/src/mcp/tools/team.js.map +0 -1
  255. package/dist/src/obsidian/formatter.d.ts +0 -80
  256. package/dist/src/obsidian/formatter.d.ts.map +0 -1
  257. package/dist/src/obsidian/formatter.js +0 -227
  258. package/dist/src/obsidian/formatter.js.map +0 -1
  259. package/dist/src/prompts/index.d.ts +0 -13
  260. package/dist/src/prompts/index.d.ts.map +0 -1
  261. package/dist/src/prompts/index.js +0 -75
  262. package/dist/src/prompts/index.js.map +0 -1
  263. package/dist/src/vault/frontmatter.d.ts +0 -6
  264. package/dist/src/vault/frontmatter.d.ts.map +0 -1
  265. package/dist/src/vault/frontmatter.js +0 -10
  266. package/dist/src/vault/frontmatter.js.map +0 -1
  267. package/dist/src/vault/observations.d.ts +0 -10
  268. package/dist/src/vault/observations.d.ts.map +0 -1
  269. package/dist/src/vault/observations.js +0 -33
  270. package/dist/src/vault/observations.js.map +0 -1
  271. package/dist/src/vault/reader.d.ts +0 -10
  272. package/dist/src/vault/reader.d.ts.map +0 -1
  273. package/dist/src/vault/reader.js +0 -48
  274. package/dist/src/vault/reader.js.map +0 -1
  275. package/dist/src/vault/resolve.d.ts +0 -18
  276. package/dist/src/vault/resolve.d.ts.map +0 -1
  277. package/dist/src/vault/resolve.js +0 -51
  278. package/dist/src/vault/resolve.js.map +0 -1
  279. package/dist/src/vault/session-id.d.ts +0 -16
  280. package/dist/src/vault/session-id.d.ts.map +0 -1
  281. package/dist/src/vault/session-id.js +0 -29
  282. package/dist/src/vault/session-id.js.map +0 -1
  283. package/dist/src/vault/types.d.ts +0 -88
  284. package/dist/src/vault/types.d.ts.map +0 -1
  285. package/dist/src/vault/types.js +0 -94
  286. package/dist/src/vault/types.js.map +0 -1
  287. package/dist/src/vault/writer.d.ts +0 -66
  288. package/dist/src/vault/writer.d.ts.map +0 -1
  289. package/dist/src/vault/writer.js +0 -217
  290. package/dist/src/vault/writer.js.map +0 -1
@@ -1,227 +0,0 @@
1
- import { sessionNoteId } from '../vault/session-id.js';
2
- // Callout type mapping for observation types
3
- const CALLOUT_MAP = {
4
- gotcha: 'warning',
5
- bug_fix: 'bug',
6
- decision: 'info',
7
- discovery: 'tip',
8
- trade_off: 'question',
9
- };
10
- export function observationCalloutType(observationType) {
11
- return CALLOUT_MAP[observationType] ?? 'note';
12
- }
13
- export function callout(type, title, content) {
14
- const indented = content.split('\n').map((line) => `> ${line}`).join('\n');
15
- return `> [!${type}] ${title}\n${indented}`;
16
- }
17
- export function inlineField(key, value) {
18
- return `${key}:: ${value}`;
19
- }
20
- export function wikilink(target, display) {
21
- return display ? `[[${target}|${display}]]` : `[[${target}]]`;
22
- }
23
- /**
24
- * Normalize an observation_type to a tag-safe form.
25
- * Frontmatter keeps underscores; tags use hyphens per Obsidian convention.
26
- */
27
- function tagNormalize(s) {
28
- return s.replace(/_/g, '-');
29
- }
30
- /**
31
- * Sanitize a user/LLM-provided tag for Obsidian compatibility.
32
- * Obsidian tags cannot contain spaces — replace with slash (nested tag).
33
- * Strips leading # if present.
34
- */
35
- function sanitizeTag(raw) {
36
- const stripped = raw.startsWith('#') ? raw.slice(1) : raw;
37
- return stripped.replace(/\s+/g, '/');
38
- }
39
- export function buildTags(type, subtype, extraTags = []) {
40
- const tags = [`type/${type}`];
41
- if (subtype) {
42
- tags.push(`${type}/${tagNormalize(subtype)}`);
43
- }
44
- for (const tag of extraTags) {
45
- const normalized = sanitizeTag(tag);
46
- if (normalized && !tags.includes(normalized)) {
47
- tags.push(normalized);
48
- }
49
- }
50
- return tags;
51
- }
52
- export function footerTags(tags) {
53
- return tags.map((t) => (t.startsWith('#') ? t : `#${t}`)).join(' ');
54
- }
55
- export function formatSessionBody(input) {
56
- const sections = [];
57
- sections.push(`# ${input.title}`);
58
- if (input.narrative) {
59
- sections.push(callout('abstract', 'Summary', input.narrative));
60
- }
61
- // Inline fields
62
- const fields = [];
63
- fields.push(inlineField('Session', wikilink(sessionNoteId(input.sessionId))));
64
- if (input.user)
65
- fields.push(inlineField('User', input.user));
66
- if (input.started && input.ended) {
67
- const duration = formatDuration(input.started, input.ended);
68
- if (duration)
69
- fields.push(inlineField('Duration', duration));
70
- }
71
- if (input.branch)
72
- fields.push(inlineField('Branch', `\`${input.branch}\``));
73
- sections.push(fields.join('\n'));
74
- // Related memories
75
- if (input.relatedMemories?.length) {
76
- const links = input.relatedMemories.map((m) => `- ${wikilink(m.id, m.title)}`);
77
- sections.push(`## Related Memories\n${links.join('\n')}`);
78
- }
79
- // Conversation turns — always rebuilt from the full transcript.
80
- // The transcript is the source of truth for the complete conversation.
81
- if (input.turns.length > 0) {
82
- const turnLines = [];
83
- for (let i = 0; i < input.turns.length; i++) {
84
- const turn = input.turns[i];
85
- const turnNum = i + 1;
86
- turnLines.push(`### Turn ${turnNum}`);
87
- if (turn.prompt || turn.images?.length) {
88
- // Build prompt content: text + images + tool count
89
- const parts = [];
90
- if (turn.prompt)
91
- parts.push(turn.prompt);
92
- if (turn.images?.length) {
93
- parts.push(turn.images.map((f) => `![[${f}]]`).join('\n'));
94
- }
95
- if (turn.toolCount > 0)
96
- parts.push(`*${turn.toolCount} tool calls*`);
97
- turnLines.push(callout('user', 'Prompt', parts.join('\n\n')));
98
- }
99
- else if (turn.toolCount > 0) {
100
- turnLines.push(callout('user', 'Prompt', `*${turn.toolCount} tool calls*`));
101
- }
102
- if (turn.aiResponse) {
103
- turnLines.push(callout('assistant', 'Response', turn.aiResponse));
104
- }
105
- }
106
- sections.push(`## Conversation\n\n${turnLines.join('\n\n')}`);
107
- }
108
- // Footer tags
109
- const allTags = buildTags('session', 'ended', [
110
- ...(input.user ? [`user/${input.user}`] : []),
111
- ...(input.tags ?? []),
112
- ]);
113
- sections.push(footerTags(allTags));
114
- return sections.join('\n\n');
115
- }
116
- export function formatMemoryBody(input) {
117
- const sections = [];
118
- const calloutType = observationCalloutType(input.observationType);
119
- const calloutTitle = capitalize(tagNormalize(input.observationType));
120
- sections.push(`# ${input.title}`);
121
- sections.push(callout(calloutType, calloutTitle, input.content));
122
- // Inline fields
123
- const fields = [];
124
- if (input.sessionId) {
125
- fields.push(inlineField('Session', wikilink(sessionNoteId(input.sessionId))));
126
- }
127
- fields.push(inlineField('Observation', input.observationType));
128
- if (fields.length > 0)
129
- sections.push(fields.join('\n'));
130
- // Type-specific sub-sections
131
- if (input.root_cause)
132
- sections.push(`## Root Cause\n${input.root_cause}`);
133
- if (input.fix)
134
- sections.push(`## Fix\n${input.fix}`);
135
- if (input.rationale)
136
- sections.push(`## Rationale\n${input.rationale}`);
137
- if (input.alternatives_rejected)
138
- sections.push(`## Alternatives Rejected\n${input.alternatives_rejected}`);
139
- if (input.gained)
140
- sections.push(`## Gained\n${input.gained}`);
141
- if (input.sacrificed)
142
- sections.push(`## Sacrificed\n${input.sacrificed}`);
143
- // Footer tags
144
- const allTags = buildTags('memory', input.observationType, input.tags ?? []);
145
- sections.push(footerTags(allTags));
146
- return sections.join('\n\n');
147
- }
148
- export function formatPlanBody(input) {
149
- const sections = [];
150
- // Inline fields block
151
- const fields = [];
152
- fields.push(inlineField('Plan', wikilink(input.id)));
153
- fields.push(inlineField('Status', input.status));
154
- if (input.author)
155
- fields.push(inlineField('Author', input.author));
156
- if (input.created)
157
- fields.push(inlineField('Created', input.created));
158
- sections.push(fields.join('\n'));
159
- // User-provided content body (don't restructure)
160
- sections.push(input.content);
161
- // Sessions section
162
- if (input.sessions?.length) {
163
- const links = input.sessions.map((s) => `- ${wikilink(sessionNoteId(s.id), s.title)}`);
164
- sections.push(`## Sessions\n${links.join('\n')}`);
165
- }
166
- // Footer tags
167
- const statusTag = tagNormalize(input.status);
168
- const allTags = buildTags('plan', statusTag, input.tags ?? []);
169
- sections.push(footerTags(allTags));
170
- return sections.join('\n\n');
171
- }
172
- export function formatArtifactBody(input) {
173
- const sections = [];
174
- // Inline fields
175
- const fields = [];
176
- fields.push(inlineField('Artifact', wikilink(input.id)));
177
- fields.push(inlineField('Source', `\`${input.source_path}\``));
178
- fields.push(inlineField('Type', input.artifact_type));
179
- fields.push(inlineField('Session', wikilink(sessionNoteId(input.sessionId))));
180
- sections.push(fields.join('\n'));
181
- // Body: full content from disk
182
- sections.push(input.content);
183
- // Footer tags
184
- const allTags = buildTags('artifact', input.artifact_type, input.tags ?? []);
185
- sections.push(footerTags(allTags));
186
- return sections.join('\n\n');
187
- }
188
- export function formatTeamBody(input) {
189
- const sections = [];
190
- sections.push(`# ${input.user}`);
191
- sections.push(callout('info', 'Team Member', input.role ?? 'Contributor'));
192
- // Inline fields
193
- const fields = [];
194
- fields.push(inlineField('User', input.user));
195
- if (input.role)
196
- fields.push(inlineField('Role', input.role));
197
- sections.push(fields.join('\n'));
198
- // Recent sessions
199
- if (input.recentSessions?.length) {
200
- const links = input.recentSessions.map((s) => `- ${wikilink(sessionNoteId(s.id), s.title)}`);
201
- sections.push(`## Recent Sessions\n${links.join('\n')}`);
202
- }
203
- // Footer tags
204
- const allTags = buildTags('team', '', [`user/${input.user}`]);
205
- sections.push(footerTags(allTags));
206
- return sections.join('\n\n');
207
- }
208
- // --- Helpers ---
209
- function capitalize(s) {
210
- return s.charAt(0).toUpperCase() + s.slice(1);
211
- }
212
- function formatDuration(started, ended) {
213
- const ms = new Date(ended).getTime() - new Date(started).getTime();
214
- if (isNaN(ms) || ms < 0)
215
- return '';
216
- const totalMinutes = Math.floor(ms / 60000);
217
- if (totalMinutes < 1)
218
- return '<1m';
219
- const hours = Math.floor(totalMinutes / 60);
220
- const minutes = totalMinutes % 60;
221
- if (hours === 0)
222
- return `${minutes}m`;
223
- if (minutes === 0)
224
- return `${hours}h`;
225
- return `${hours}h ${minutes}m`;
226
- }
227
- //# sourceMappingURL=formatter.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"formatter.js","sourceRoot":"","sources":["../../../src/obsidian/formatter.ts"],"names":[],"mappings":"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"}
@@ -1,13 +0,0 @@
1
- /**
2
- * Prompt loader — reads .md templates from disk and interpolates variables.
3
- * Prompts are markdown files in this directory, not TypeScript strings.
4
- */
5
- export declare function buildExtractionPrompt(sessionId: string, eventCount: number, toolSummary: string): string;
6
- export declare function buildSummaryPrompt(sessionId: string, user: string, content: string): string;
7
- export declare function buildTitlePrompt(summary: string, sessionId: string): string;
8
- export declare function buildSimilarityPrompt(currentSummary: string, candidateSummary: string): string;
9
- export declare function buildClassificationPrompt(sessionId: string, candidates: Array<{
10
- path: string;
11
- content: string;
12
- }>): string;
13
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/prompts/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AA+BH,wBAAgB,qBAAqB,CACnC,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,MAAM,GAClB,MAAM,CAMR;AAED,wBAAgB,kBAAkB,CAChC,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,GACd,MAAM,CAMR;AAED,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,GAChB,MAAM,CAKR;AAUD,wBAAgB,qBAAqB,CACnC,cAAc,EAAE,MAAM,EACtB,gBAAgB,EAAE,MAAM,GACvB,MAAM,CAKR;AAED,wBAAgB,yBAAyB,CACvC,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,GACnD,MAAM,CAcR"}
@@ -1,75 +0,0 @@
1
- /**
2
- * Prompt loader — reads .md templates from disk and interpolates variables.
3
- * Prompts are markdown files in this directory, not TypeScript strings.
4
- */
5
- import fs from 'node:fs';
6
- import path from 'node:path';
7
- import { fileURLToPath } from 'node:url';
8
- import { ARTIFACT_TYPES } from '../vault/types.js';
9
- import { CANDIDATE_CONTENT_PREVIEW } from '../constants.js';
10
- const __dirname = path.dirname(fileURLToPath(import.meta.url));
11
- const promptCache = new Map();
12
- function loadPrompt(name) {
13
- let cached = promptCache.get(name);
14
- if (!cached) {
15
- cached = fs.readFileSync(path.join(__dirname, `${name}.md`), 'utf-8').trim();
16
- promptCache.set(name, cached);
17
- }
18
- return cached;
19
- }
20
- function interpolate(template, vars) {
21
- let result = template;
22
- for (const [key, value] of Object.entries(vars)) {
23
- result = result.replaceAll(`{{${key}}}`, value);
24
- }
25
- return result;
26
- }
27
- // --- Prompt builders ---
28
- export function buildExtractionPrompt(sessionId, eventCount, toolSummary) {
29
- return interpolate(loadPrompt('extraction'), {
30
- sessionId,
31
- eventCount: String(eventCount),
32
- toolSummary,
33
- });
34
- }
35
- export function buildSummaryPrompt(sessionId, user, content) {
36
- return interpolate(loadPrompt('summary'), {
37
- sessionId,
38
- user,
39
- content,
40
- });
41
- }
42
- export function buildTitlePrompt(summary, sessionId) {
43
- return interpolate(loadPrompt('title'), {
44
- summary,
45
- sessionId,
46
- });
47
- }
48
- const ARTIFACT_TYPE_DESCRIPTIONS = [
49
- '"spec" — Design specifications, architecture documents',
50
- '"plan" — Implementation plans, roadmaps',
51
- '"rfc" — Requests for comment, proposals',
52
- '"doc" — Documentation, guides, READMEs',
53
- '"other" — Other substantive documents',
54
- ];
55
- export function buildSimilarityPrompt(currentSummary, candidateSummary) {
56
- return interpolate(loadPrompt('session-similarity'), {
57
- currentSummary,
58
- candidateSummary,
59
- });
60
- }
61
- export function buildClassificationPrompt(sessionId, candidates) {
62
- const fileList = candidates
63
- .map((c) => {
64
- const truncated = c.content.slice(0, CANDIDATE_CONTENT_PREVIEW);
65
- return `### ${c.path}\n\`\`\`\n${truncated}\n\`\`\``;
66
- })
67
- .join('\n\n');
68
- return interpolate(loadPrompt('classification'), {
69
- sessionId,
70
- fileList,
71
- artifactTypes: ARTIFACT_TYPE_DESCRIPTIONS.map((d) => `- ${d}`).join('\n'),
72
- validTypes: ARTIFACT_TYPES.join('|'),
73
- });
74
- }
75
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/prompts/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAC;AAE5D,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAE/D,MAAM,WAAW,GAAG,IAAI,GAAG,EAAkB,CAAC;AAE9C,SAAS,UAAU,CAAC,IAAY;IAC9B,IAAI,MAAM,GAAG,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACnC,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,IAAI,KAAK,CAAC,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;QAC7E,WAAW,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAChC,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,WAAW,CAAC,QAAgB,EAAE,IAA4B;IACjE,IAAI,MAAM,GAAG,QAAQ,CAAC;IACtB,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QAChD,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC,KAAK,GAAG,IAAI,EAAE,KAAK,CAAC,CAAC;IAClD,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,0BAA0B;AAE1B,MAAM,UAAU,qBAAqB,CACnC,SAAiB,EACjB,UAAkB,EAClB,WAAmB;IAEnB,OAAO,WAAW,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE;QAC3C,SAAS;QACT,UAAU,EAAE,MAAM,CAAC,UAAU,CAAC;QAC9B,WAAW;KACZ,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,kBAAkB,CAChC,SAAiB,EACjB,IAAY,EACZ,OAAe;IAEf,OAAO,WAAW,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE;QACxC,SAAS;QACT,IAAI;QACJ,OAAO;KACR,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,gBAAgB,CAC9B,OAAe,EACf,SAAiB;IAEjB,OAAO,WAAW,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE;QACtC,OAAO;QACP,SAAS;KACV,CAAC,CAAC;AACL,CAAC;AAED,MAAM,0BAA0B,GAAG;IACjC,wDAAwD;IACxD,yCAAyC;IACzC,yCAAyC;IACzC,wCAAwC;IACxC,uCAAuC;CACxC,CAAC;AAEF,MAAM,UAAU,qBAAqB,CACnC,cAAsB,EACtB,gBAAwB;IAExB,OAAO,WAAW,CAAC,UAAU,CAAC,oBAAoB,CAAC,EAAE;QACnD,cAAc;QACd,gBAAgB;KACjB,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,yBAAyB,CACvC,SAAiB,EACjB,UAAoD;IAEpD,MAAM,QAAQ,GAAG,UAAU;SACxB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QACT,MAAM,SAAS,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,yBAAyB,CAAC,CAAC;QAChE,OAAO,OAAO,CAAC,CAAC,IAAI,aAAa,SAAS,UAAU,CAAC;IACvD,CAAC,CAAC;SACD,IAAI,CAAC,MAAM,CAAC,CAAC;IAEhB,OAAO,WAAW,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE;QAC/C,SAAS;QACT,QAAQ;QACR,aAAa,EAAE,0BAA0B,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;QACzE,UAAU,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC;KACrC,CAAC,CAAC;AACL,CAAC"}
@@ -1,6 +0,0 @@
1
- import type { IndexedNote } from '../index/sqlite.js';
2
- import type { PlanFrontmatter, SessionFrontmatter, MemoryFrontmatter } from './types.js';
3
- export declare function planFm(note: IndexedNote): PlanFrontmatter;
4
- export declare function sessionFm(note: IndexedNote): SessionFrontmatter;
5
- export declare function memoryFm(note: IndexedNote): MemoryFrontmatter;
6
- //# sourceMappingURL=frontmatter.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"frontmatter.d.ts","sourceRoot":"","sources":["../../../src/vault/frontmatter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,KAAK,EAAE,eAAe,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAEzF,wBAAgB,MAAM,CAAC,IAAI,EAAE,WAAW,GAAG,eAAe,CAEzD;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,WAAW,GAAG,kBAAkB,CAE/D;AAED,wBAAgB,QAAQ,CAAC,IAAI,EAAE,WAAW,GAAG,iBAAiB,CAE7D"}
@@ -1,10 +0,0 @@
1
- export function planFm(note) {
2
- return note.frontmatter;
3
- }
4
- export function sessionFm(note) {
5
- return note.frontmatter;
6
- }
7
- export function memoryFm(note) {
8
- return note.frontmatter;
9
- }
10
- //# sourceMappingURL=frontmatter.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"frontmatter.js","sourceRoot":"","sources":["../../../src/vault/frontmatter.ts"],"names":[],"mappings":"AAGA,MAAM,UAAU,MAAM,CAAC,IAAiB;IACtC,OAAO,IAAI,CAAC,WAAyC,CAAC;AACxD,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,IAAiB;IACzC,OAAO,IAAI,CAAC,WAA4C,CAAC;AAC3D,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,IAAiB;IACxC,OAAO,IAAI,CAAC,WAA2C,CAAC;AAC1D,CAAC"}
@@ -1,10 +0,0 @@
1
- import type { Observation } from '../daemon/processor.js';
2
- import type { VaultWriter } from './writer.js';
3
- import type { MycoIndex } from '../index/sqlite.js';
4
- export interface WrittenNote {
5
- id: string;
6
- path: string;
7
- observation: Observation;
8
- }
9
- export declare function writeObservationNotes(observations: Observation[], sessionId: string, writer: VaultWriter, index: MycoIndex, vaultDir: string): WrittenNote[];
10
- //# sourceMappingURL=observations.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"observations.d.ts","sourceRoot":"","sources":["../../../src/vault/observations.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAEpD,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,WAAW,CAAC;CAC1B;AAED,wBAAgB,qBAAqB,CACnC,YAAY,EAAE,WAAW,EAAE,EAC3B,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,WAAW,EACnB,KAAK,EAAE,SAAS,EAChB,QAAQ,EAAE,MAAM,GACf,WAAW,EAAE,CA8Bf"}
@@ -1,33 +0,0 @@
1
- import { formatMemoryBody } from '../obsidian/formatter.js';
2
- import { sessionNoteId } from './session-id.js';
3
- import { indexNote } from '../index/rebuild.js';
4
- export function writeObservationNotes(observations, sessionId, writer, index, vaultDir) {
5
- const results = [];
6
- for (const obs of observations) {
7
- const obsId = `${obs.type}-${sessionId.slice(-6)}-${Date.now()}`;
8
- const body = formatMemoryBody({
9
- title: obs.title,
10
- observationType: obs.type,
11
- content: obs.content,
12
- sessionId,
13
- root_cause: obs.root_cause,
14
- fix: obs.fix,
15
- rationale: obs.rationale,
16
- alternatives_rejected: obs.alternatives_rejected,
17
- gained: obs.gained,
18
- sacrificed: obs.sacrificed,
19
- tags: obs.tags,
20
- });
21
- const relativePath = writer.writeMemory({
22
- id: obsId,
23
- observation_type: obs.type,
24
- session: sessionNoteId(sessionId),
25
- tags: obs.tags,
26
- content: body,
27
- });
28
- indexNote(index, vaultDir, relativePath);
29
- results.push({ id: obsId, path: relativePath, observation: obs });
30
- }
31
- return results;
32
- }
33
- //# sourceMappingURL=observations.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"observations.js","sourceRoot":"","sources":["../../../src/vault/observations.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAWhD,MAAM,UAAU,qBAAqB,CACnC,YAA2B,EAC3B,SAAiB,EACjB,MAAmB,EACnB,KAAgB,EAChB,QAAgB;IAEhB,MAAM,OAAO,GAAkB,EAAE,CAAC;IAElC,KAAK,MAAM,GAAG,IAAI,YAAY,EAAE,CAAC;QAC/B,MAAM,KAAK,GAAG,GAAG,GAAG,CAAC,IAAI,IAAI,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;QACjE,MAAM,IAAI,GAAG,gBAAgB,CAAC;YAC5B,KAAK,EAAE,GAAG,CAAC,KAAK;YAChB,eAAe,EAAE,GAAG,CAAC,IAAI;YACzB,OAAO,EAAE,GAAG,CAAC,OAAO;YACpB,SAAS;YACT,UAAU,EAAE,GAAG,CAAC,UAAU;YAC1B,GAAG,EAAE,GAAG,CAAC,GAAG;YACZ,SAAS,EAAE,GAAG,CAAC,SAAS;YACxB,qBAAqB,EAAE,GAAG,CAAC,qBAAqB;YAChD,MAAM,EAAE,GAAG,CAAC,MAAM;YAClB,UAAU,EAAE,GAAG,CAAC,UAAU;YAC1B,IAAI,EAAE,GAAG,CAAC,IAAI;SACf,CAAC,CAAC;QACH,MAAM,YAAY,GAAG,MAAM,CAAC,WAAW,CAAC;YACtC,EAAE,EAAE,KAAK;YACT,gBAAgB,EAAE,GAAG,CAAC,IAAI;YAC1B,OAAO,EAAE,aAAa,CAAC,SAAS,CAAC;YACjC,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,OAAO,EAAE,IAAI;SACd,CAAC,CAAC;QACH,SAAS,CAAC,KAAK,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC;QACzC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,YAAY,EAAE,WAAW,EAAE,GAAG,EAAE,CAAC,CAAC;IACpE,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC"}
@@ -1,10 +0,0 @@
1
- import { type VaultNote } from './types.js';
2
- export declare class VaultReader {
3
- private vaultDir;
4
- constructor(vaultDir: string);
5
- readNote(relativePath: string): VaultNote;
6
- listNotes(subdir: string): VaultNote[];
7
- readAllNotes(): VaultNote[];
8
- walkMarkdownFiles(dir: string): string[];
9
- }
10
- //# sourceMappingURL=reader.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"reader.d.ts","sourceRoot":"","sources":["../../../src/vault/reader.ts"],"names":[],"mappings":"AAGA,OAAO,EAAwB,KAAK,SAAS,EAAE,MAAM,YAAY,CAAC;AAIlE,qBAAa,WAAW;IACV,OAAO,CAAC,QAAQ;gBAAR,QAAQ,EAAE,MAAM;IAEpC,QAAQ,CAAC,YAAY,EAAE,MAAM,GAAG,SAAS;IAQzC,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,EAAE;IAWtC,YAAY,IAAI,SAAS,EAAE;IAI3B,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE;CAiBzC"}
@@ -1,48 +0,0 @@
1
- import fs from 'node:fs';
2
- import path from 'node:path';
3
- import matter from 'gray-matter';
4
- import { parseNoteFrontmatter } from './types.js';
5
- const VAULT_SUBDIRS = ['sessions', 'plans', 'memories', 'artifacts', 'team'];
6
- export class VaultReader {
7
- vaultDir;
8
- constructor(vaultDir) {
9
- this.vaultDir = vaultDir;
10
- }
11
- readNote(relativePath) {
12
- const fullPath = path.join(this.vaultDir, relativePath);
13
- const raw = fs.readFileSync(fullPath, 'utf-8');
14
- const { data, content } = matter(raw);
15
- const frontmatter = parseNoteFrontmatter(data);
16
- return { path: relativePath, frontmatter, content: content.trim() };
17
- }
18
- listNotes(subdir) {
19
- const dirPath = path.join(this.vaultDir, subdir);
20
- if (!fs.existsSync(dirPath))
21
- return [];
22
- const files = this.walkMarkdownFiles(dirPath);
23
- return files.map((filePath) => {
24
- const relativePath = path.relative(this.vaultDir, filePath);
25
- return this.readNote(relativePath);
26
- });
27
- }
28
- readAllNotes() {
29
- return VAULT_SUBDIRS.flatMap((subdir) => this.listNotes(subdir));
30
- }
31
- walkMarkdownFiles(dir) {
32
- if (!fs.existsSync(dir))
33
- return [];
34
- const results = [];
35
- const entries = fs.readdirSync(dir, { withFileTypes: true });
36
- for (const entry of entries) {
37
- const fullPath = path.join(dir, entry.name);
38
- if (entry.isDirectory()) {
39
- results.push(...this.walkMarkdownFiles(fullPath));
40
- }
41
- else if (entry.isFile() && entry.name.endsWith('.md')) {
42
- results.push(fullPath);
43
- }
44
- }
45
- return results;
46
- }
47
- }
48
- //# sourceMappingURL=reader.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"reader.js","sourceRoot":"","sources":["../../../src/vault/reader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,EAAE,oBAAoB,EAAkB,MAAM,YAAY,CAAC;AAElE,MAAM,aAAa,GAAG,CAAC,UAAU,EAAE,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC;AAE7E,MAAM,OAAO,WAAW;IACF;IAApB,YAAoB,QAAgB;QAAhB,aAAQ,GAAR,QAAQ,CAAQ;IAAG,CAAC;IAExC,QAAQ,CAAC,YAAoB;QAC3B,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;QACxD,MAAM,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAC/C,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;QACtC,MAAM,WAAW,GAAG,oBAAoB,CAAC,IAA+B,CAAC,CAAC;QAC1E,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,WAAW,EAAE,OAAO,EAAE,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;IACtE,CAAC;IAED,SAAS,CAAC,MAAc;QACtB,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QACjD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC;YAAE,OAAO,EAAE,CAAC;QAEvC,MAAM,KAAK,GAAG,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;QAC9C,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE;YAC5B,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;YAC5D,OAAO,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;QACrC,CAAC,CAAC,CAAC;IACL,CAAC;IAED,YAAY;QACV,OAAO,aAAa,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;IACnE,CAAC;IAED,iBAAiB,CAAC,GAAW;QAC3B,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,OAAO,EAAE,CAAC;QAEnC,MAAM,OAAO,GAAa,EAAE,CAAC;QAC7B,MAAM,OAAO,GAAG,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;QAE7D,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC5B,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;YAC5C,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;gBACxB,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC,CAAC;YACpD,CAAC;iBAAM,IAAI,KAAK,CAAC,MAAM,EAAE,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;gBACxD,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACzB,CAAC;QACH,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;CACF"}
@@ -1,18 +0,0 @@
1
- /**
2
- * Resolve the vault directory.
3
- *
4
- * Priority:
5
- * 1. MYCO_VAULT_DIR env var (override for public repos or shared vaults)
6
- * 2. .myco/ in the repo root (default — vault lives with the project)
7
- *
8
- * The default is project-local: the vault is committed to git alongside
9
- * the code, so the team's institutional memory travels with the repo.
10
- * For public repos or cases where the vault should be separate, set
11
- * MYCO_VAULT_DIR to an external path.
12
- *
13
- * Uses git to find the repo root so this works correctly in
14
- * git worktrees — worktree agents resolve to the same vault
15
- * as the main working tree.
16
- */
17
- export declare function resolveVaultDir(cwd?: string): string;
18
- //# sourceMappingURL=resolve.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"resolve.d.ts","sourceRoot":"","sources":["../../../src/vault/resolve.ts"],"names":[],"mappings":"AAKA;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,eAAe,CAAC,GAAG,SAAgB,GAAG,MAAM,CAY3D"}
@@ -1,51 +0,0 @@
1
- import path from 'node:path';
2
- import os from 'node:os';
3
- import { execFileSync } from 'node:child_process';
4
- /**
5
- * Resolve the vault directory.
6
- *
7
- * Priority:
8
- * 1. MYCO_VAULT_DIR env var (override for public repos or shared vaults)
9
- * 2. .myco/ in the repo root (default — vault lives with the project)
10
- *
11
- * The default is project-local: the vault is committed to git alongside
12
- * the code, so the team's institutional memory travels with the repo.
13
- * For public repos or cases where the vault should be separate, set
14
- * MYCO_VAULT_DIR to an external path.
15
- *
16
- * Uses git to find the repo root so this works correctly in
17
- * git worktrees — worktree agents resolve to the same vault
18
- * as the main working tree.
19
- */
20
- export function resolveVaultDir(cwd = process.cwd()) {
21
- // Override: external vault location
22
- if (process.env.MYCO_VAULT_DIR) {
23
- const dir = process.env.MYCO_VAULT_DIR;
24
- if (dir.startsWith('~/')) {
25
- return path.join(os.homedir(), dir.slice(2));
26
- }
27
- return dir;
28
- }
29
- // Default: .myco/ in the project root
30
- return path.join(resolveRepoRoot(cwd), '.myco');
31
- }
32
- /**
33
- * Find the main repo root, even from a git worktree.
34
- *
35
- * `git rev-parse --git-common-dir` returns the shared .git directory:
36
- * - In a normal repo: ".git" (relative)
37
- * - In a worktree: "/abs/path/to/main-repo/.git" (absolute)
38
- *
39
- * The repo root is the parent of that path.
40
- * Falls back to cwd if not in a git repo.
41
- */
42
- function resolveRepoRoot(cwd) {
43
- try {
44
- const gitCommon = execFileSync('git', ['rev-parse', '--git-common-dir'], { cwd, encoding: 'utf-8', stdio: ['pipe', 'pipe', 'pipe'] }).trim();
45
- return path.resolve(cwd, gitCommon, '..');
46
- }
47
- catch {
48
- return cwd;
49
- }
50
- }
51
- //# sourceMappingURL=resolve.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"resolve.js","sourceRoot":"","sources":["../../../src/vault/resolve.ts"],"names":[],"mappings":"AACA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,eAAe,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE;IACjD,oCAAoC;IACpC,IAAI,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,CAAC;QAC/B,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC;QACvC,IAAI,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YACzB,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/C,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IAED,sCAAsC;IACtC,OAAO,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC;AAClD,CAAC;AAED;;;;;;;;;GASG;AACH,SAAS,eAAe,CAAC,GAAW;IAClC,IAAI,CAAC;QACH,MAAM,SAAS,GAAG,YAAY,CAC5B,KAAK,EAAE,CAAC,WAAW,EAAE,kBAAkB,CAAC,EACxC,EAAE,GAAG,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAC5D,CAAC,IAAI,EAAE,CAAC;QACT,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;IAC5C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,GAAG,CAAC;IACb,CAAC;AACH,CAAC"}
@@ -1,16 +0,0 @@
1
- /**
2
- * Session ID convention utilities.
3
- *
4
- * The runtime session ID is a bare UUID (e.g., "abc123").
5
- * The vault stores it with a "session-" prefix (e.g., "session-abc123").
6
- * These helpers convert between the two forms.
7
- */
8
- /** Convert a bare session ID to a vault note ID: "abc123" → "session-abc123" */
9
- export declare function sessionNoteId(bareId: string): string;
10
- /** Convert a vault note ID to a bare session ID: "session-abc123" → "abc123" */
11
- export declare function bareSessionId(noteId: string): string;
12
- /** Convert a bare session ID to an Obsidian wikilink: "abc123" → "[[session-abc123]]" */
13
- export declare function sessionWikilink(bareId: string): string;
14
- /** Build the relative vault path for a session note */
15
- export declare function sessionRelativePath(bareId: string, date: string): string;
16
- //# sourceMappingURL=session-id.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"session-id.d.ts","sourceRoot":"","sources":["../../../src/vault/session-id.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,gFAAgF;AAChF,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAGpD;AAED,gFAAgF;AAChF,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAGpD;AAED,yFAAyF;AACzF,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAEtD;AAED,uDAAuD;AACvD,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAExE"}
@@ -1,29 +0,0 @@
1
- /**
2
- * Session ID convention utilities.
3
- *
4
- * The runtime session ID is a bare UUID (e.g., "abc123").
5
- * The vault stores it with a "session-" prefix (e.g., "session-abc123").
6
- * These helpers convert between the two forms.
7
- */
8
- const SESSION_PREFIX = 'session-';
9
- /** Convert a bare session ID to a vault note ID: "abc123" → "session-abc123" */
10
- export function sessionNoteId(bareId) {
11
- if (bareId.startsWith(SESSION_PREFIX))
12
- return bareId;
13
- return `${SESSION_PREFIX}${bareId}`;
14
- }
15
- /** Convert a vault note ID to a bare session ID: "session-abc123" → "abc123" */
16
- export function bareSessionId(noteId) {
17
- if (noteId.startsWith(SESSION_PREFIX))
18
- return noteId.slice(SESSION_PREFIX.length);
19
- return noteId;
20
- }
21
- /** Convert a bare session ID to an Obsidian wikilink: "abc123" → "[[session-abc123]]" */
22
- export function sessionWikilink(bareId) {
23
- return `[[${sessionNoteId(bareId)}]]`;
24
- }
25
- /** Build the relative vault path for a session note */
26
- export function sessionRelativePath(bareId, date) {
27
- return `sessions/${date}/${sessionNoteId(bareId)}.md`;
28
- }
29
- //# sourceMappingURL=session-id.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"session-id.js","sourceRoot":"","sources":["../../../src/vault/session-id.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,MAAM,cAAc,GAAG,UAAU,CAAC;AAElC,gFAAgF;AAChF,MAAM,UAAU,aAAa,CAAC,MAAc;IAC1C,IAAI,MAAM,CAAC,UAAU,CAAC,cAAc,CAAC;QAAE,OAAO,MAAM,CAAC;IACrD,OAAO,GAAG,cAAc,GAAG,MAAM,EAAE,CAAC;AACtC,CAAC;AAED,gFAAgF;AAChF,MAAM,UAAU,aAAa,CAAC,MAAc;IAC1C,IAAI,MAAM,CAAC,UAAU,CAAC,cAAc,CAAC;QAAE,OAAO,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;IAClF,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,yFAAyF;AACzF,MAAM,UAAU,eAAe,CAAC,MAAc;IAC5C,OAAO,KAAK,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC;AACxC,CAAC;AAED,uDAAuD;AACvD,MAAM,UAAU,mBAAmB,CAAC,MAAc,EAAE,IAAY;IAC9D,OAAO,YAAY,IAAI,IAAI,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC;AACxD,CAAC"}