@goondocks/myco 0.2.7 → 0.2.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude-plugin/plugin.json +1 -1
- package/CONTRIBUTING.md +1 -1
- package/commands/init.md +10 -26
- package/dist/chunk-4JML636J.js +52 -0
- package/dist/chunk-4JML636J.js.map +1 -0
- package/dist/chunk-AOMX45LH.js +8974 -0
- package/dist/chunk-AOMX45LH.js.map +1 -0
- package/dist/chunk-I7PMGO6S.js +58 -0
- package/dist/chunk-I7PMGO6S.js.map +1 -0
- package/dist/chunk-N33KUCFP.js +33 -0
- package/dist/chunk-N33KUCFP.js.map +1 -0
- package/dist/chunk-NYNEJ5QY.js +71 -0
- package/dist/chunk-NYNEJ5QY.js.map +1 -0
- package/dist/chunk-PA3VMINE.js +111 -0
- package/dist/chunk-PA3VMINE.js.map +1 -0
- package/dist/chunk-PZUWP5VK.js +44 -0
- package/dist/chunk-PZUWP5VK.js.map +1 -0
- package/dist/chunk-SVUINMDD.js +104 -0
- package/dist/chunk-SVUINMDD.js.map +1 -0
- package/dist/chunk-TH6GIBXG.js +91 -0
- package/dist/chunk-TH6GIBXG.js.map +1 -0
- package/dist/chunk-TWDS6MSU.js +354 -0
- package/dist/chunk-TWDS6MSU.js.map +1 -0
- package/dist/chunk-UIIZRTJU.js +21172 -0
- package/dist/chunk-UIIZRTJU.js.map +1 -0
- package/dist/chunk-YMYJ7FNH.js +19 -0
- package/dist/chunk-YMYJ7FNH.js.map +1 -0
- package/dist/chunk-ZJQ5G637.js +21 -0
- package/dist/chunk-ZJQ5G637.js.map +1 -0
- package/dist/chunk-ZTZVX5E6.js +421 -0
- package/dist/chunk-ZTZVX5E6.js.map +1 -0
- package/dist/cli-K5FSKLQC.js +625 -0
- package/dist/cli-K5FSKLQC.js.map +1 -0
- package/dist/client-4JMOYNKK.js +11 -0
- package/dist/client-4JMOYNKK.js.map +1 -0
- package/dist/main-5W4ADOBG.js +3224 -0
- package/dist/main-5W4ADOBG.js.map +1 -0
- package/dist/server-PIEPVUUH.js +14725 -0
- package/dist/server-PIEPVUUH.js.map +1 -0
- package/dist/session-start-2NNQHT5S.js +189 -0
- package/dist/session-start-2NNQHT5S.js.map +1 -0
- package/dist/src/cli.js +9 -582
- package/dist/src/cli.js.map +1 -1
- package/dist/src/daemon/main.js +9 -737
- package/dist/src/daemon/main.js.map +1 -1
- package/dist/src/hooks/post-tool-use.js +47 -35
- package/dist/src/hooks/post-tool-use.js.map +1 -1
- package/dist/src/hooks/session-end.js +29 -18
- package/dist/src/hooks/session-end.js.map +1 -1
- package/dist/src/hooks/session-start.js +9 -48
- package/dist/src/hooks/session-start.js.map +1 -1
- package/dist/src/hooks/stop.js +39 -30
- package/dist/src/hooks/stop.js.map +1 -1
- package/dist/src/hooks/user-prompt-submit.js +48 -40
- package/dist/src/hooks/user-prompt-submit.js.map +1 -1
- package/dist/src/mcp/server.js +9 -304
- package/dist/src/mcp/server.js.map +1 -1
- package/package.json +3 -2
- package/dist/src/agents/adapter.d.ts +0 -76
- package/dist/src/agents/adapter.d.ts.map +0 -1
- package/dist/src/agents/adapter.js +0 -124
- package/dist/src/agents/adapter.js.map +0 -1
- package/dist/src/agents/claude-code.d.ts +0 -3
- package/dist/src/agents/claude-code.d.ts.map +0 -1
- package/dist/src/agents/claude-code.js +0 -22
- package/dist/src/agents/claude-code.js.map +0 -1
- package/dist/src/agents/cursor.d.ts +0 -3
- package/dist/src/agents/cursor.d.ts.map +0 -1
- package/dist/src/agents/cursor.js +0 -154
- package/dist/src/agents/cursor.js.map +0 -1
- package/dist/src/agents/index.d.ts +0 -6
- package/dist/src/agents/index.d.ts.map +0 -1
- package/dist/src/agents/index.js +0 -5
- package/dist/src/agents/index.js.map +0 -1
- package/dist/src/agents/registry.d.ts +0 -34
- package/dist/src/agents/registry.d.ts.map +0 -1
- package/dist/src/agents/registry.js +0 -95
- package/dist/src/agents/registry.js.map +0 -1
- package/dist/src/artifacts/candidates.d.ts +0 -20
- package/dist/src/artifacts/candidates.d.ts.map +0 -1
- package/dist/src/artifacts/candidates.js +0 -84
- package/dist/src/artifacts/candidates.js.map +0 -1
- package/dist/src/artifacts/slugify.d.ts +0 -2
- package/dist/src/artifacts/slugify.d.ts.map +0 -1
- package/dist/src/artifacts/slugify.js +0 -22
- package/dist/src/artifacts/slugify.js.map +0 -1
- package/dist/src/capture/buffer.d.ts +0 -20
- package/dist/src/capture/buffer.d.ts.map +0 -1
- package/dist/src/capture/buffer.js +0 -55
- package/dist/src/capture/buffer.js.map +0 -1
- package/dist/src/capture/transcript-miner.d.ts +0 -31
- package/dist/src/capture/transcript-miner.d.ts.map +0 -1
- package/dist/src/capture/transcript-miner.js +0 -61
- package/dist/src/capture/transcript-miner.js.map +0 -1
- package/dist/src/cli.d.ts +0 -3
- package/dist/src/cli.d.ts.map +0 -1
- package/dist/src/config/loader.d.ts +0 -4
- package/dist/src/config/loader.d.ts.map +0 -1
- package/dist/src/config/loader.js +0 -32
- package/dist/src/config/loader.js.map +0 -1
- package/dist/src/config/schema.d.ts +0 -83
- package/dist/src/config/schema.d.ts.map +0 -1
- package/dist/src/config/schema.js +0 -55
- package/dist/src/config/schema.js.map +0 -1
- package/dist/src/constants.d.ts +0 -73
- package/dist/src/constants.d.ts.map +0 -1
- package/dist/src/constants.js +0 -86
- package/dist/src/constants.js.map +0 -1
- package/dist/src/context/injector.d.ts +0 -18
- package/dist/src/context/injector.d.ts.map +0 -1
- package/dist/src/context/injector.js +0 -71
- package/dist/src/context/injector.js.map +0 -1
- package/dist/src/context/relevance.d.ts +0 -13
- package/dist/src/context/relevance.d.ts.map +0 -1
- package/dist/src/context/relevance.js +0 -44
- package/dist/src/context/relevance.js.map +0 -1
- package/dist/src/daemon/batch.d.ts +0 -22
- package/dist/src/daemon/batch.d.ts.map +0 -1
- package/dist/src/daemon/batch.js +0 -38
- package/dist/src/daemon/batch.js.map +0 -1
- package/dist/src/daemon/lifecycle.d.ts +0 -27
- package/dist/src/daemon/lifecycle.d.ts.map +0 -1
- package/dist/src/daemon/lifecycle.js +0 -50
- package/dist/src/daemon/lifecycle.js.map +0 -1
- package/dist/src/daemon/lineage.d.ts +0 -42
- package/dist/src/daemon/lineage.d.ts.map +0 -1
- package/dist/src/daemon/lineage.js +0 -116
- package/dist/src/daemon/lineage.js.map +0 -1
- package/dist/src/daemon/logger.d.ts +0 -33
- package/dist/src/daemon/logger.d.ts.map +0 -1
- package/dist/src/daemon/logger.js +0 -88
- package/dist/src/daemon/logger.js.map +0 -1
- package/dist/src/daemon/main.d.ts +0 -2
- package/dist/src/daemon/main.d.ts.map +0 -1
- package/dist/src/daemon/processor.d.ts +0 -44
- package/dist/src/daemon/processor.d.ts.map +0 -1
- package/dist/src/daemon/processor.js +0 -142
- package/dist/src/daemon/processor.js.map +0 -1
- package/dist/src/daemon/server.d.ts +0 -24
- package/dist/src/daemon/server.d.ts.map +0 -1
- package/dist/src/daemon/server.js +0 -117
- package/dist/src/daemon/server.js.map +0 -1
- package/dist/src/daemon/watcher.d.ts +0 -29
- package/dist/src/daemon/watcher.d.ts.map +0 -1
- package/dist/src/daemon/watcher.js +0 -67
- package/dist/src/daemon/watcher.js.map +0 -1
- package/dist/src/hooks/client.d.ts +0 -20
- package/dist/src/hooks/client.d.ts.map +0 -1
- package/dist/src/hooks/client.js +0 -111
- package/dist/src/hooks/client.js.map +0 -1
- package/dist/src/hooks/post-tool-use.d.ts +0 -2
- package/dist/src/hooks/post-tool-use.d.ts.map +0 -1
- package/dist/src/hooks/read-stdin.d.ts +0 -2
- package/dist/src/hooks/read-stdin.d.ts.map +0 -1
- package/dist/src/hooks/read-stdin.js +0 -10
- package/dist/src/hooks/read-stdin.js.map +0 -1
- package/dist/src/hooks/session-end.d.ts +0 -2
- package/dist/src/hooks/session-end.d.ts.map +0 -1
- package/dist/src/hooks/session-start.d.ts +0 -2
- package/dist/src/hooks/session-start.d.ts.map +0 -1
- package/dist/src/hooks/stop.d.ts +0 -2
- package/dist/src/hooks/stop.d.ts.map +0 -1
- package/dist/src/hooks/user-prompt-submit.d.ts +0 -2
- package/dist/src/hooks/user-prompt-submit.d.ts.map +0 -1
- package/dist/src/index/fts.d.ts +0 -16
- package/dist/src/index/fts.d.ts.map +0 -1
- package/dist/src/index/fts.js +0 -53
- package/dist/src/index/fts.js.map +0 -1
- package/dist/src/index/rebuild.d.ts +0 -4
- package/dist/src/index/rebuild.d.ts.map +0 -1
- package/dist/src/index/rebuild.js +0 -40
- package/dist/src/index/rebuild.js.map +0 -1
- package/dist/src/index/sqlite.d.ts +0 -33
- package/dist/src/index/sqlite.d.ts.map +0 -1
- package/dist/src/index/sqlite.js +0 -99
- package/dist/src/index/sqlite.js.map +0 -1
- package/dist/src/index/vectors.d.ts +0 -24
- package/dist/src/index/vectors.d.ts.map +0 -1
- package/dist/src/index/vectors.js +0 -97
- package/dist/src/index/vectors.js.map +0 -1
- package/dist/src/intelligence/anthropic.d.ts +0 -17
- package/dist/src/intelligence/anthropic.d.ts.map +0 -1
- package/dist/src/intelligence/anthropic.js +0 -36
- package/dist/src/intelligence/anthropic.js.map +0 -1
- package/dist/src/intelligence/embeddings.d.ts +0 -3
- package/dist/src/intelligence/embeddings.d.ts.map +0 -1
- package/dist/src/intelligence/embeddings.js +0 -15
- package/dist/src/intelligence/embeddings.js.map +0 -1
- package/dist/src/intelligence/llm.d.ts +0 -33
- package/dist/src/intelligence/llm.d.ts.map +0 -1
- package/dist/src/intelligence/llm.js +0 -26
- package/dist/src/intelligence/llm.js.map +0 -1
- package/dist/src/intelligence/lm-studio.d.ts +0 -20
- package/dist/src/intelligence/lm-studio.d.ts.map +0 -1
- package/dist/src/intelligence/lm-studio.js +0 -59
- package/dist/src/intelligence/lm-studio.js.map +0 -1
- package/dist/src/intelligence/ollama.d.ts +0 -22
- package/dist/src/intelligence/ollama.d.ts.map +0 -1
- package/dist/src/intelligence/ollama.js +0 -64
- package/dist/src/intelligence/ollama.js.map +0 -1
- package/dist/src/intelligence/response.d.ts +0 -29
- package/dist/src/intelligence/response.d.ts.map +0 -1
- package/dist/src/intelligence/response.js +0 -71
- package/dist/src/intelligence/response.js.map +0 -1
- package/dist/src/logs/format.d.ts +0 -6
- package/dist/src/logs/format.d.ts.map +0 -1
- package/dist/src/logs/format.js +0 -46
- package/dist/src/logs/format.js.map +0 -1
- package/dist/src/logs/reader.d.ts +0 -28
- package/dist/src/logs/reader.d.ts.map +0 -1
- package/dist/src/logs/reader.js +0 -106
- package/dist/src/logs/reader.js.map +0 -1
- package/dist/src/mcp/server.d.ts +0 -16
- package/dist/src/mcp/server.d.ts.map +0 -1
- package/dist/src/mcp/tools/consolidate.d.ts +0 -15
- package/dist/src/mcp/tools/consolidate.d.ts.map +0 -1
- package/dist/src/mcp/tools/consolidate.js +0 -49
- package/dist/src/mcp/tools/consolidate.js.map +0 -1
- package/dist/src/mcp/tools/graph.d.ts +0 -30
- package/dist/src/mcp/tools/graph.d.ts.map +0 -1
- package/dist/src/mcp/tools/graph.js +0 -106
- package/dist/src/mcp/tools/graph.js.map +0 -1
- package/dist/src/mcp/tools/logs.d.ts +0 -3
- package/dist/src/mcp/tools/logs.d.ts.map +0 -1
- package/dist/src/mcp/tools/logs.js +0 -7
- package/dist/src/mcp/tools/logs.js.map +0 -1
- package/dist/src/mcp/tools/plans.d.ts +0 -23
- package/dist/src/mcp/tools/plans.d.ts.map +0 -1
- package/dist/src/mcp/tools/plans.js +0 -63
- package/dist/src/mcp/tools/plans.js.map +0 -1
- package/dist/src/mcp/tools/recall.d.ts +0 -30
- package/dist/src/mcp/tools/recall.d.ts.map +0 -1
- package/dist/src/mcp/tools/recall.js +0 -34
- package/dist/src/mcp/tools/recall.js.map +0 -1
- package/dist/src/mcp/tools/remember.d.ts +0 -15
- package/dist/src/mcp/tools/remember.d.ts.map +0 -1
- package/dist/src/mcp/tools/remember.js +0 -18
- package/dist/src/mcp/tools/remember.js.map +0 -1
- package/dist/src/mcp/tools/search.d.ts +0 -19
- package/dist/src/mcp/tools/search.d.ts.map +0 -1
- package/dist/src/mcp/tools/search.js +0 -59
- package/dist/src/mcp/tools/search.js.map +0 -1
- package/dist/src/mcp/tools/sessions.d.ts +0 -21
- package/dist/src/mcp/tools/sessions.d.ts.map +0 -1
- package/dist/src/mcp/tools/sessions.js +0 -36
- package/dist/src/mcp/tools/sessions.js.map +0 -1
- package/dist/src/mcp/tools/supersede.d.ts +0 -14
- package/dist/src/mcp/tools/supersede.d.ts.map +0 -1
- package/dist/src/mcp/tools/supersede.js +0 -30
- package/dist/src/mcp/tools/supersede.js.map +0 -1
- package/dist/src/mcp/tools/team.d.ts +0 -16
- package/dist/src/mcp/tools/team.d.ts.map +0 -1
- package/dist/src/mcp/tools/team.js +0 -32
- package/dist/src/mcp/tools/team.js.map +0 -1
- package/dist/src/obsidian/formatter.d.ts +0 -80
- package/dist/src/obsidian/formatter.d.ts.map +0 -1
- package/dist/src/obsidian/formatter.js +0 -227
- package/dist/src/obsidian/formatter.js.map +0 -1
- package/dist/src/prompts/index.d.ts +0 -13
- package/dist/src/prompts/index.d.ts.map +0 -1
- package/dist/src/prompts/index.js +0 -75
- package/dist/src/prompts/index.js.map +0 -1
- package/dist/src/vault/frontmatter.d.ts +0 -6
- package/dist/src/vault/frontmatter.d.ts.map +0 -1
- package/dist/src/vault/frontmatter.js +0 -10
- package/dist/src/vault/frontmatter.js.map +0 -1
- package/dist/src/vault/observations.d.ts +0 -10
- package/dist/src/vault/observations.d.ts.map +0 -1
- package/dist/src/vault/observations.js +0 -33
- package/dist/src/vault/observations.js.map +0 -1
- package/dist/src/vault/reader.d.ts +0 -10
- package/dist/src/vault/reader.d.ts.map +0 -1
- package/dist/src/vault/reader.js +0 -48
- package/dist/src/vault/reader.js.map +0 -1
- package/dist/src/vault/resolve.d.ts +0 -18
- package/dist/src/vault/resolve.d.ts.map +0 -1
- package/dist/src/vault/resolve.js +0 -51
- package/dist/src/vault/resolve.js.map +0 -1
- package/dist/src/vault/session-id.d.ts +0 -16
- package/dist/src/vault/session-id.d.ts.map +0 -1
- package/dist/src/vault/session-id.js +0 -29
- package/dist/src/vault/session-id.js.map +0 -1
- package/dist/src/vault/types.d.ts +0 -88
- package/dist/src/vault/types.d.ts.map +0 -1
- package/dist/src/vault/types.js +0 -94
- package/dist/src/vault/types.js.map +0 -1
- package/dist/src/vault/writer.d.ts +0 -66
- package/dist/src/vault/writer.d.ts.map +0 -1
- package/dist/src/vault/writer.js +0 -217
- 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":"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"}
|
|
@@ -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 +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"}
|
package/dist/src/vault/reader.js
DELETED
|
@@ -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"}
|