oh-my-second-brain 0.1.5
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/adapters/README.md +98 -0
- package/adapters/claude-code/.claude-plugin/plugin.json +24 -0
- package/adapters/claude-code/CLAUDE.md +26 -0
- package/adapters/claude-code/skills/capture/SKILL.md +50 -0
- package/adapters/claude-code/skills/define/SKILL.md +51 -0
- package/adapters/claude-code/skills/doctor/SKILL.md +58 -0
- package/adapters/claude-code/skills/retrieve/SKILL.md +55 -0
- package/adapters/claude-code/skills/setup/SKILL.md +71 -0
- package/adapters/claude-code/skills/uninstall/SKILL.md +34 -0
- package/adapters/codex/.codex-plugin/plugin.json +8 -0
- package/adapters/codex/.mcp.json +14 -0
- package/adapters/codex/AGENTS.md +16 -0
- package/adapters/codex/rules/oms.md +25 -0
- package/adapters/codex/skills/oms-capture/SKILL.md +16 -0
- package/adapters/codex/skills/oms-doctor/SKILL.md +14 -0
- package/adapters/codex/skills/oms-install/SKILL.md +19 -0
- package/adapters/codex/skills/oms-retrieve/SKILL.md +10 -0
- package/adapters/codex/skills/oms-setup/SKILL.md +22 -0
- package/adapters/codex/skills/oms-uninstall/SKILL.md +20 -0
- package/adapters/hermes/README.md +8 -0
- package/adapters/hermes/SOUL.md +19 -0
- package/adapters/hermes/manifest.json +7 -0
- package/adapters/hermes/skills/capture/SKILL.md +16 -0
- package/adapters/hermes/skills/doctor/SKILL.md +14 -0
- package/adapters/hermes/skills/install/SKILL.md +19 -0
- package/adapters/hermes/skills/retrieve/SKILL.md +10 -0
- package/adapters/hermes/skills/setup/SKILL.md +22 -0
- package/adapters/hermes/skills/uninstall/SKILL.md +20 -0
- package/core/AGENTS.md +110 -0
- package/core/agents/librarian.md +43 -0
- package/core/agents/retriever.md +62 -0
- package/core/ontology/concepts/inbox.yaml +4 -0
- package/core/ontology/concepts/literature.yaml +27 -0
- package/core/ontology/taxonomy.yaml +11 -0
- package/core/skills/capture/SKILL.md +48 -0
- package/core/skills/define/SKILL.md +59 -0
- package/core/skills/doctor/SKILL.md +49 -0
- package/core/skills/retrieve/SKILL.md +56 -0
- package/core/skills/setup/SKILL.md +44 -0
- package/core/skills/uninstall/SKILL.md +34 -0
- package/dist/adapt/HostAdapter.d.ts +21 -0
- package/dist/adapt/HostAdapter.js +10 -0
- package/dist/adapt/HostAdapter.js.map +1 -0
- package/dist/adapt/claudeCode.d.ts +9 -0
- package/dist/adapt/claudeCode.js +15 -0
- package/dist/adapt/claudeCode.js.map +1 -0
- package/dist/adapt/codex.d.ts +9 -0
- package/dist/adapt/codex.js +15 -0
- package/dist/adapt/codex.js.map +1 -0
- package/dist/adapt/hermes.d.ts +9 -0
- package/dist/adapt/hermes.js +15 -0
- package/dist/adapt/hermes.js.map +1 -0
- package/dist/capture/safe.d.ts +36 -0
- package/dist/capture/safe.js +167 -0
- package/dist/capture/safe.js.map +1 -0
- package/dist/cli/oms.d.ts +18 -0
- package/dist/cli/oms.js +401 -0
- package/dist/cli/oms.js.map +1 -0
- package/dist/conventions/frontmatter.d.ts +15 -0
- package/dist/conventions/frontmatter.js +23 -0
- package/dist/conventions/frontmatter.js.map +1 -0
- package/dist/conventions/validate.d.ts +24 -0
- package/dist/conventions/validate.js +88 -0
- package/dist/conventions/validate.js.map +1 -0
- package/dist/graph/cache.d.ts +98 -0
- package/dist/graph/cache.js +347 -0
- package/dist/graph/cache.js.map +1 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.js +8 -0
- package/dist/index.js.map +1 -0
- package/dist/install/hosts.d.ts +27 -0
- package/dist/install/hosts.js +465 -0
- package/dist/install/hosts.js.map +1 -0
- package/dist/mcp/server.d.ts +8 -0
- package/dist/mcp/server.js +461 -0
- package/dist/mcp/server.js.map +1 -0
- package/dist/ontology/loader.d.ts +13 -0
- package/dist/ontology/loader.js +63 -0
- package/dist/ontology/loader.js.map +1 -0
- package/dist/ontology/resolver.d.ts +13 -0
- package/dist/ontology/resolver.js +37 -0
- package/dist/ontology/resolver.js.map +1 -0
- package/dist/ontology/types.d.ts +72 -0
- package/dist/ontology/types.js +12 -0
- package/dist/ontology/types.js.map +1 -0
- package/docs/install.md +115 -0
- package/docs/release.md +91 -0
- package/package.json +64 -0
- package/scripts/install.sh +49 -0
- package/scripts/uninstall.sh +57 -0
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
import type { Ontology } from "../ontology/types.js";
|
|
2
|
+
export type GraphEdgeType = "folder-concept" | "property-axis" | "property-value" | "wikilink";
|
|
3
|
+
export interface GraphEdge {
|
|
4
|
+
type: GraphEdgeType;
|
|
5
|
+
from: string;
|
|
6
|
+
to: string;
|
|
7
|
+
axis?: string;
|
|
8
|
+
value?: string;
|
|
9
|
+
}
|
|
10
|
+
export interface GraphNote {
|
|
11
|
+
path: string;
|
|
12
|
+
folder: string;
|
|
13
|
+
concept: string | null;
|
|
14
|
+
frontmatter: Record<string, unknown>;
|
|
15
|
+
axes: Record<string, string[]>;
|
|
16
|
+
wikilinks: string[];
|
|
17
|
+
bodyLoaded: false;
|
|
18
|
+
validation: {
|
|
19
|
+
valid: boolean;
|
|
20
|
+
violations: number;
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
export interface SearchDocument {
|
|
24
|
+
path: string;
|
|
25
|
+
terms: string[];
|
|
26
|
+
bodyPreview: string;
|
|
27
|
+
}
|
|
28
|
+
export interface NoteSignature {
|
|
29
|
+
mtimeMs: number;
|
|
30
|
+
size: number;
|
|
31
|
+
frontmatterHash: string;
|
|
32
|
+
wikilinkHash: string;
|
|
33
|
+
bodyTextHash: string;
|
|
34
|
+
}
|
|
35
|
+
export interface SourceSignatures {
|
|
36
|
+
taxonomyHash: string;
|
|
37
|
+
conceptHashes: Record<string, string>;
|
|
38
|
+
notes: Record<string, NoteSignature>;
|
|
39
|
+
}
|
|
40
|
+
export interface OMSGraphCache {
|
|
41
|
+
version: 1;
|
|
42
|
+
generatedAt: string;
|
|
43
|
+
sourceOfTruth: string[];
|
|
44
|
+
signatures: SourceSignatures;
|
|
45
|
+
notes: GraphNote[];
|
|
46
|
+
edges: GraphEdge[];
|
|
47
|
+
search: SearchDocument[];
|
|
48
|
+
}
|
|
49
|
+
export interface GraphStaleness {
|
|
50
|
+
schemaStale: boolean;
|
|
51
|
+
graphStale: boolean;
|
|
52
|
+
searchStale: boolean;
|
|
53
|
+
embeddingStale: "not-configured" | boolean;
|
|
54
|
+
validationStale: boolean;
|
|
55
|
+
reasons: string[];
|
|
56
|
+
}
|
|
57
|
+
export interface GraphCacheStatus {
|
|
58
|
+
cachePath: string;
|
|
59
|
+
exists: boolean;
|
|
60
|
+
generatedAt: string | null;
|
|
61
|
+
notes: number;
|
|
62
|
+
edges: number;
|
|
63
|
+
searchDocuments: number;
|
|
64
|
+
staleness: GraphStaleness;
|
|
65
|
+
}
|
|
66
|
+
export interface RetrieveByAxisOptions {
|
|
67
|
+
vault: string;
|
|
68
|
+
ontology: Ontology;
|
|
69
|
+
concept?: string;
|
|
70
|
+
folder?: string;
|
|
71
|
+
property?: string;
|
|
72
|
+
value?: string;
|
|
73
|
+
wikilink?: string;
|
|
74
|
+
query?: string;
|
|
75
|
+
limit?: number;
|
|
76
|
+
}
|
|
77
|
+
export interface RetrieveHit {
|
|
78
|
+
path: string;
|
|
79
|
+
concept: string | null;
|
|
80
|
+
folder: string;
|
|
81
|
+
axes: Record<string, string[]>;
|
|
82
|
+
wikilinks: string[];
|
|
83
|
+
score: number;
|
|
84
|
+
bodyPreview: string;
|
|
85
|
+
}
|
|
86
|
+
export declare function graphCachePath(vault: string): string;
|
|
87
|
+
export declare function buildGraphCache(opts: {
|
|
88
|
+
vault: string;
|
|
89
|
+
ontology: Ontology;
|
|
90
|
+
write?: boolean;
|
|
91
|
+
}): Promise<OMSGraphCache>;
|
|
92
|
+
export declare function readGraphCache(vault: string): Promise<OMSGraphCache | null>;
|
|
93
|
+
export declare function graphCacheStatus(vault: string, ontology: Ontology): Promise<GraphCacheStatus>;
|
|
94
|
+
export declare function retrieveByAxis(opts: RetrieveByAxisOptions): Promise<RetrieveHit[]>;
|
|
95
|
+
export declare function lazyLoadNoteBody(vault: string, notePath: string): Promise<{
|
|
96
|
+
path: string;
|
|
97
|
+
body: string;
|
|
98
|
+
}>;
|
|
@@ -0,0 +1,347 @@
|
|
|
1
|
+
import { createHash } from "node:crypto";
|
|
2
|
+
import { mkdir, readFile, readdir, stat, writeFile } from "node:fs/promises";
|
|
3
|
+
import path from "node:path";
|
|
4
|
+
import { parseNote } from "../conventions/frontmatter.js";
|
|
5
|
+
import { validateFrontmatter } from "../conventions/validate.js";
|
|
6
|
+
import { safeVaultNotePath } from "../capture/safe.js";
|
|
7
|
+
import { resolveConcept } from "../ontology/resolver.js";
|
|
8
|
+
const CACHE_VERSION = 1;
|
|
9
|
+
export function graphCachePath(vault) {
|
|
10
|
+
return path.join(vault, ".oms", "cache", "graph.json");
|
|
11
|
+
}
|
|
12
|
+
function hash(value) {
|
|
13
|
+
return createHash("sha256").update(value).digest("hex");
|
|
14
|
+
}
|
|
15
|
+
async function* walkMarkdown(dir, base) {
|
|
16
|
+
let entries;
|
|
17
|
+
try {
|
|
18
|
+
entries = await readdir(dir, { withFileTypes: true });
|
|
19
|
+
}
|
|
20
|
+
catch {
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
for (const entry of entries) {
|
|
24
|
+
if (entry.name === ".oms" || entry.name === "node_modules" || entry.name.startsWith(".")) {
|
|
25
|
+
continue;
|
|
26
|
+
}
|
|
27
|
+
const full = path.join(dir, entry.name);
|
|
28
|
+
if (entry.isDirectory()) {
|
|
29
|
+
yield* walkMarkdown(full, base);
|
|
30
|
+
}
|
|
31
|
+
else if (entry.isFile() && entry.name.endsWith(".md")) {
|
|
32
|
+
yield path.relative(base, full).replace(/\\/g, "/");
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
function jsonStable(value) {
|
|
37
|
+
if (Array.isArray(value)) {
|
|
38
|
+
return `[${value.map(jsonStable).join(",")}]`;
|
|
39
|
+
}
|
|
40
|
+
if (value && typeof value === "object") {
|
|
41
|
+
const record = value;
|
|
42
|
+
return `{${Object.keys(record)
|
|
43
|
+
.sort()
|
|
44
|
+
.map((key) => `${JSON.stringify(key)}:${jsonStable(record[key])}`)
|
|
45
|
+
.join(",")}}`;
|
|
46
|
+
}
|
|
47
|
+
return JSON.stringify(value);
|
|
48
|
+
}
|
|
49
|
+
function valueToStrings(value) {
|
|
50
|
+
if (Array.isArray(value)) {
|
|
51
|
+
return value.flatMap(valueToStrings).filter((item) => item.length > 0);
|
|
52
|
+
}
|
|
53
|
+
if (typeof value === "string") {
|
|
54
|
+
return value.trim() ? [value.trim()] : [];
|
|
55
|
+
}
|
|
56
|
+
if (typeof value === "number" || typeof value === "boolean") {
|
|
57
|
+
return [String(value)];
|
|
58
|
+
}
|
|
59
|
+
if (value instanceof Date) {
|
|
60
|
+
return [value.toISOString()];
|
|
61
|
+
}
|
|
62
|
+
return [];
|
|
63
|
+
}
|
|
64
|
+
function extractWikilinks(body) {
|
|
65
|
+
const links = new Set();
|
|
66
|
+
const pattern = /\[\[([^\]|#]+)(?:[#|][^\]]*)?\]\]/g;
|
|
67
|
+
let match;
|
|
68
|
+
while ((match = pattern.exec(body)) !== null) {
|
|
69
|
+
const target = match[1]?.trim();
|
|
70
|
+
if (target)
|
|
71
|
+
links.add(target);
|
|
72
|
+
}
|
|
73
|
+
return Array.from(links).sort();
|
|
74
|
+
}
|
|
75
|
+
function tokenize(text) {
|
|
76
|
+
const terms = text
|
|
77
|
+
.toLowerCase()
|
|
78
|
+
.match(/[\p{L}\p{N}][\p{L}\p{N}_-]{1,}/gu);
|
|
79
|
+
return Array.from(new Set(terms ?? [])).sort();
|
|
80
|
+
}
|
|
81
|
+
function firstFolder(notePath) {
|
|
82
|
+
return notePath.split("/")[0] ?? "";
|
|
83
|
+
}
|
|
84
|
+
function conceptSchemaHash(concept) {
|
|
85
|
+
return hash(jsonStable(concept));
|
|
86
|
+
}
|
|
87
|
+
function taxonomyHash(ontology) {
|
|
88
|
+
return hash(jsonStable(ontology.taxonomy));
|
|
89
|
+
}
|
|
90
|
+
async function buildSourceSignatures(vault, ontology) {
|
|
91
|
+
const notes = {};
|
|
92
|
+
for await (const notePath of walkMarkdown(vault, vault)) {
|
|
93
|
+
const fullPath = path.join(vault, notePath);
|
|
94
|
+
const [raw, fileStat] = await Promise.all([readFile(fullPath, "utf-8"), stat(fullPath)]);
|
|
95
|
+
const parsed = parseNote(raw);
|
|
96
|
+
const wikilinks = extractWikilinks(parsed.body);
|
|
97
|
+
notes[notePath] = {
|
|
98
|
+
mtimeMs: fileStat.mtimeMs,
|
|
99
|
+
size: fileStat.size,
|
|
100
|
+
frontmatterHash: hash(jsonStable(parsed.frontmatter)),
|
|
101
|
+
wikilinkHash: hash(jsonStable(wikilinks)),
|
|
102
|
+
bodyTextHash: hash(parsed.body),
|
|
103
|
+
};
|
|
104
|
+
}
|
|
105
|
+
return {
|
|
106
|
+
taxonomyHash: taxonomyHash(ontology),
|
|
107
|
+
conceptHashes: Object.fromEntries(Array.from(ontology.concepts.entries()).map(([name, concept]) => [
|
|
108
|
+
name,
|
|
109
|
+
conceptSchemaHash(concept),
|
|
110
|
+
])),
|
|
111
|
+
notes,
|
|
112
|
+
};
|
|
113
|
+
}
|
|
114
|
+
function buildNoteGraph(notePath, raw, ontology) {
|
|
115
|
+
const parsed = parseNote(raw);
|
|
116
|
+
const folder = firstFolder(notePath);
|
|
117
|
+
const concept = resolveConcept(ontology, notePath);
|
|
118
|
+
const axes = {};
|
|
119
|
+
const edges = [];
|
|
120
|
+
if (concept) {
|
|
121
|
+
edges.push({
|
|
122
|
+
type: "folder-concept",
|
|
123
|
+
from: notePath,
|
|
124
|
+
to: `concept:${concept.concept}`,
|
|
125
|
+
});
|
|
126
|
+
}
|
|
127
|
+
for (const [key, rawValue] of Object.entries(parsed.frontmatter)) {
|
|
128
|
+
const values = valueToStrings(rawValue);
|
|
129
|
+
if (values.length === 0)
|
|
130
|
+
continue;
|
|
131
|
+
axes[key] = values;
|
|
132
|
+
edges.push({ type: "property-axis", from: notePath, to: `axis:${key}`, axis: key });
|
|
133
|
+
for (const value of values) {
|
|
134
|
+
edges.push({
|
|
135
|
+
type: "property-value",
|
|
136
|
+
from: notePath,
|
|
137
|
+
to: `axis:${key}:value:${value}`,
|
|
138
|
+
axis: key,
|
|
139
|
+
value,
|
|
140
|
+
});
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
const wikilinks = extractWikilinks(parsed.body);
|
|
144
|
+
for (const target of wikilinks) {
|
|
145
|
+
edges.push({ type: "wikilink", from: notePath, to: target });
|
|
146
|
+
}
|
|
147
|
+
const validation = concept
|
|
148
|
+
? validateFrontmatter(parsed.frontmatter, concept)
|
|
149
|
+
: { valid: false, violations: [] };
|
|
150
|
+
const searchText = `${Object.values(parsed.frontmatter).flatMap(valueToStrings).join(" ")} ${parsed.body}`;
|
|
151
|
+
return {
|
|
152
|
+
note: {
|
|
153
|
+
path: notePath,
|
|
154
|
+
folder,
|
|
155
|
+
concept: concept?.concept ?? null,
|
|
156
|
+
frontmatter: parsed.frontmatter,
|
|
157
|
+
axes,
|
|
158
|
+
wikilinks,
|
|
159
|
+
bodyLoaded: false,
|
|
160
|
+
validation: {
|
|
161
|
+
valid: validation.valid,
|
|
162
|
+
violations: validation.violations.length,
|
|
163
|
+
},
|
|
164
|
+
},
|
|
165
|
+
edges,
|
|
166
|
+
search: {
|
|
167
|
+
path: notePath,
|
|
168
|
+
terms: tokenize(searchText),
|
|
169
|
+
bodyPreview: parsed.body.trim().slice(0, 240),
|
|
170
|
+
},
|
|
171
|
+
};
|
|
172
|
+
}
|
|
173
|
+
export async function buildGraphCache(opts) {
|
|
174
|
+
const vault = path.resolve(opts.vault);
|
|
175
|
+
const notes = [];
|
|
176
|
+
const edges = [];
|
|
177
|
+
const search = [];
|
|
178
|
+
for await (const notePath of walkMarkdown(vault, vault)) {
|
|
179
|
+
const raw = await readFile(path.join(vault, notePath), "utf-8");
|
|
180
|
+
const built = buildNoteGraph(notePath, raw, opts.ontology);
|
|
181
|
+
notes.push(built.note);
|
|
182
|
+
edges.push(...built.edges);
|
|
183
|
+
search.push(built.search);
|
|
184
|
+
}
|
|
185
|
+
const cache = {
|
|
186
|
+
version: CACHE_VERSION,
|
|
187
|
+
generatedAt: new Date().toISOString(),
|
|
188
|
+
sourceOfTruth: ["markdown notes", ".oms/taxonomy.yaml", ".oms/concepts/*.yaml"],
|
|
189
|
+
signatures: await buildSourceSignatures(vault, opts.ontology),
|
|
190
|
+
notes: notes.sort((a, b) => a.path.localeCompare(b.path)),
|
|
191
|
+
edges: edges.sort((a, b) => `${a.type}:${a.from}:${a.to}`.localeCompare(`${b.type}:${b.from}:${b.to}`)),
|
|
192
|
+
search: search.sort((a, b) => a.path.localeCompare(b.path)),
|
|
193
|
+
};
|
|
194
|
+
if (opts.write) {
|
|
195
|
+
const outPath = graphCachePath(vault);
|
|
196
|
+
await mkdir(path.dirname(outPath), { recursive: true });
|
|
197
|
+
await writeFile(outPath, `${JSON.stringify(cache, null, 2)}\n`, "utf-8");
|
|
198
|
+
}
|
|
199
|
+
return cache;
|
|
200
|
+
}
|
|
201
|
+
export async function readGraphCache(vault) {
|
|
202
|
+
try {
|
|
203
|
+
const raw = await readFile(graphCachePath(vault), "utf-8");
|
|
204
|
+
const parsed = JSON.parse(raw);
|
|
205
|
+
return parsed.version === CACHE_VERSION ? parsed : null;
|
|
206
|
+
}
|
|
207
|
+
catch {
|
|
208
|
+
return null;
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
function compareSignatures(previous, current) {
|
|
212
|
+
const reasons = [];
|
|
213
|
+
let schemaStale = false;
|
|
214
|
+
let graphStale = false;
|
|
215
|
+
let searchStale = false;
|
|
216
|
+
let validationStale = false;
|
|
217
|
+
if (previous.taxonomyHash !== current.taxonomyHash) {
|
|
218
|
+
schemaStale = true;
|
|
219
|
+
graphStale = true;
|
|
220
|
+
validationStale = true;
|
|
221
|
+
reasons.push("taxonomy changed: folder-concept edges and validation plan are stale");
|
|
222
|
+
}
|
|
223
|
+
const conceptNames = new Set([...Object.keys(previous.conceptHashes), ...Object.keys(current.conceptHashes)]);
|
|
224
|
+
for (const name of conceptNames) {
|
|
225
|
+
if (previous.conceptHashes[name] !== current.conceptHashes[name]) {
|
|
226
|
+
schemaStale = true;
|
|
227
|
+
graphStale = true;
|
|
228
|
+
validationStale = true;
|
|
229
|
+
reasons.push(`concept schema changed: ${name}`);
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
const notePaths = new Set([...Object.keys(previous.notes), ...Object.keys(current.notes)]);
|
|
233
|
+
for (const notePath of notePaths) {
|
|
234
|
+
const before = previous.notes[notePath];
|
|
235
|
+
const after = current.notes[notePath];
|
|
236
|
+
if (!before || !after) {
|
|
237
|
+
graphStale = true;
|
|
238
|
+
searchStale = true;
|
|
239
|
+
validationStale = true;
|
|
240
|
+
reasons.push(`note added/deleted: ${notePath}`);
|
|
241
|
+
continue;
|
|
242
|
+
}
|
|
243
|
+
if (before.frontmatterHash !== after.frontmatterHash) {
|
|
244
|
+
graphStale = true;
|
|
245
|
+
searchStale = true;
|
|
246
|
+
validationStale = true;
|
|
247
|
+
reasons.push(`frontmatter/search axes changed: ${notePath}`);
|
|
248
|
+
}
|
|
249
|
+
if (before.wikilinkHash !== after.wikilinkHash) {
|
|
250
|
+
graphStale = true;
|
|
251
|
+
reasons.push(`wikilinks changed: ${notePath}`);
|
|
252
|
+
}
|
|
253
|
+
if (before.bodyTextHash !== after.bodyTextHash) {
|
|
254
|
+
searchStale = true;
|
|
255
|
+
reasons.push(`body/search text changed: ${notePath}`);
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
return {
|
|
259
|
+
schemaStale,
|
|
260
|
+
graphStale,
|
|
261
|
+
searchStale,
|
|
262
|
+
embeddingStale: "not-configured",
|
|
263
|
+
validationStale,
|
|
264
|
+
reasons,
|
|
265
|
+
};
|
|
266
|
+
}
|
|
267
|
+
export async function graphCacheStatus(vault, ontology) {
|
|
268
|
+
const cache = await readGraphCache(vault);
|
|
269
|
+
const cachePath = graphCachePath(vault);
|
|
270
|
+
if (!cache) {
|
|
271
|
+
return {
|
|
272
|
+
cachePath,
|
|
273
|
+
exists: false,
|
|
274
|
+
generatedAt: null,
|
|
275
|
+
notes: 0,
|
|
276
|
+
edges: 0,
|
|
277
|
+
searchDocuments: 0,
|
|
278
|
+
staleness: {
|
|
279
|
+
schemaStale: true,
|
|
280
|
+
graphStale: true,
|
|
281
|
+
searchStale: true,
|
|
282
|
+
embeddingStale: "not-configured",
|
|
283
|
+
validationStale: true,
|
|
284
|
+
reasons: ["graph cache has not been built"],
|
|
285
|
+
},
|
|
286
|
+
};
|
|
287
|
+
}
|
|
288
|
+
return {
|
|
289
|
+
cachePath,
|
|
290
|
+
exists: true,
|
|
291
|
+
generatedAt: cache.generatedAt,
|
|
292
|
+
notes: cache.notes.length,
|
|
293
|
+
edges: cache.edges.length,
|
|
294
|
+
searchDocuments: cache.search.length,
|
|
295
|
+
staleness: compareSignatures(cache.signatures, await buildSourceSignatures(vault, ontology)),
|
|
296
|
+
};
|
|
297
|
+
}
|
|
298
|
+
function matchesAxis(note, opts) {
|
|
299
|
+
if (opts.concept && note.concept !== opts.concept)
|
|
300
|
+
return false;
|
|
301
|
+
if (opts.folder && note.folder !== opts.folder)
|
|
302
|
+
return false;
|
|
303
|
+
if (opts.wikilink && !note.wikilinks.includes(opts.wikilink))
|
|
304
|
+
return false;
|
|
305
|
+
if (opts.property) {
|
|
306
|
+
const values = note.axes[opts.property] ?? [];
|
|
307
|
+
if (opts.value && !values.includes(opts.value))
|
|
308
|
+
return false;
|
|
309
|
+
if (!opts.value && values.length === 0)
|
|
310
|
+
return false;
|
|
311
|
+
}
|
|
312
|
+
return true;
|
|
313
|
+
}
|
|
314
|
+
function searchScore(search, query) {
|
|
315
|
+
if (!query || !search)
|
|
316
|
+
return 0;
|
|
317
|
+
const queryTerms = tokenize(query);
|
|
318
|
+
return queryTerms.filter((term) => search.terms.includes(term)).length;
|
|
319
|
+
}
|
|
320
|
+
export async function retrieveByAxis(opts) {
|
|
321
|
+
const cache = (await readGraphCache(opts.vault)) ?? (await buildGraphCache({ ...opts, write: false }));
|
|
322
|
+
const searchByPath = new Map(cache.search.map((item) => [item.path, item]));
|
|
323
|
+
const limit = Math.max(1, Math.min(opts.limit ?? 10, 50));
|
|
324
|
+
return cache.notes
|
|
325
|
+
.filter((note) => matchesAxis(note, opts))
|
|
326
|
+
.map((note) => {
|
|
327
|
+
const search = searchByPath.get(note.path);
|
|
328
|
+
return {
|
|
329
|
+
path: note.path,
|
|
330
|
+
concept: note.concept,
|
|
331
|
+
folder: note.folder,
|
|
332
|
+
axes: note.axes,
|
|
333
|
+
wikilinks: note.wikilinks,
|
|
334
|
+
score: searchScore(search, opts.query),
|
|
335
|
+
bodyPreview: search?.bodyPreview ?? "",
|
|
336
|
+
};
|
|
337
|
+
})
|
|
338
|
+
.sort((a, b) => b.score - a.score || a.path.localeCompare(b.path))
|
|
339
|
+
.slice(0, limit);
|
|
340
|
+
}
|
|
341
|
+
export async function lazyLoadNoteBody(vault, notePath) {
|
|
342
|
+
const resolved = safeVaultNotePath(vault, notePath);
|
|
343
|
+
const relative = path.relative(vault, resolved);
|
|
344
|
+
const raw = await readFile(resolved, "utf-8");
|
|
345
|
+
return { path: relative.replace(/\\/g, "/"), body: parseNote(raw).body };
|
|
346
|
+
}
|
|
347
|
+
//# sourceMappingURL=cache.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cache.js","sourceRoot":"","sources":["../../src/graph/cache.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export * from "./ontology/types.js";
|
|
2
|
+
export * from "./ontology/loader.js";
|
|
3
|
+
export * from "./ontology/resolver.js";
|
|
4
|
+
export * from "./conventions/frontmatter.js";
|
|
5
|
+
export * from "./conventions/validate.js";
|
|
6
|
+
export * from "./adapt/HostAdapter.js";
|
|
7
|
+
export * from "./mcp/server.js";
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export * from "./ontology/types.js";
|
|
2
|
+
export * from "./ontology/loader.js";
|
|
3
|
+
export * from "./ontology/resolver.js";
|
|
4
|
+
export * from "./conventions/frontmatter.js";
|
|
5
|
+
export * from "./conventions/validate.js";
|
|
6
|
+
export * from "./adapt/HostAdapter.js";
|
|
7
|
+
export * from "./mcp/server.js";
|
|
8
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,wBAAwB,CAAC;AACvC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,wBAAwB,CAAC;AACvC,cAAc,iBAAiB,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
export type HostRuntime = "claude" | "codex" | "hermes";
|
|
2
|
+
export type RuntimeSelection = HostRuntime | "auto" | "all";
|
|
3
|
+
export type HostAction = "install" | "uninstall";
|
|
4
|
+
export interface HostOperationOptions {
|
|
5
|
+
action: HostAction;
|
|
6
|
+
runtime: RuntimeSelection;
|
|
7
|
+
vault: string;
|
|
8
|
+
packageSpec?: string;
|
|
9
|
+
dryRun?: boolean;
|
|
10
|
+
executeExternal?: boolean;
|
|
11
|
+
yes?: boolean;
|
|
12
|
+
homeDir?: string;
|
|
13
|
+
adapterRoot: string;
|
|
14
|
+
}
|
|
15
|
+
export interface HostOperationResult {
|
|
16
|
+
runtime: HostRuntime;
|
|
17
|
+
action: HostAction;
|
|
18
|
+
changed: boolean;
|
|
19
|
+
skipped: boolean;
|
|
20
|
+
paths: string[];
|
|
21
|
+
commands: string[];
|
|
22
|
+
messages: string[];
|
|
23
|
+
}
|
|
24
|
+
export declare function detectAvailableHosts(): HostRuntime[];
|
|
25
|
+
export declare function resolveRuntimeSelection(selection: RuntimeSelection): HostRuntime[];
|
|
26
|
+
export declare function runHostOperation(options: HostOperationOptions): Promise<HostOperationResult[]>;
|
|
27
|
+
export declare function formatHostOperationResults(results: HostOperationResult[], dryRun: boolean): string;
|