oh-my-second-brain 0.1.9 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (96) hide show
  1. package/CHANGELOG.md +89 -0
  2. package/adapters/claude-code/.claude-plugin/plugin.json +1 -1
  3. package/adapters/claude-code/skills/link/SKILL.md +87 -0
  4. package/adapters/codex/.codex-plugin/plugin.json +1 -1
  5. package/adapters/codex/skills/oms-link/SKILL.md +35 -0
  6. package/adapters/hermes/README.md +2 -0
  7. package/adapters/hermes/manifest.json +1 -1
  8. package/adapters/hermes/skills/link/SKILL.md +18 -0
  9. package/core/ontology/concepts/term.yaml +12 -0
  10. package/core/ontology/taxonomy.yaml +3 -0
  11. package/core/skills/link/SKILL.md +130 -0
  12. package/dist/capture/safe.d.ts +32 -2
  13. package/dist/capture/safe.js +223 -37
  14. package/dist/capture/safe.js.map +1 -1
  15. package/dist/cli/args.d.ts +2 -0
  16. package/dist/cli/args.js +6 -0
  17. package/dist/cli/args.js.map +1 -1
  18. package/dist/cli/global-writeback.d.ts +31 -0
  19. package/dist/cli/global-writeback.js +73 -0
  20. package/dist/cli/global-writeback.js.map +1 -0
  21. package/dist/cli/host-commands.d.ts +30 -0
  22. package/dist/cli/host-commands.js +89 -0
  23. package/dist/cli/host-commands.js.map +1 -0
  24. package/dist/cli/linkify.d.ts +23 -0
  25. package/dist/cli/linkify.js +118 -0
  26. package/dist/cli/linkify.js.map +1 -0
  27. package/dist/cli/oms.d.ts +1 -0
  28. package/dist/cli/oms.js +52 -66
  29. package/dist/cli/oms.js.map +1 -1
  30. package/dist/cli/usage.js +11 -1
  31. package/dist/cli/usage.js.map +1 -1
  32. package/dist/conventions/write-protocol.d.ts +39 -0
  33. package/dist/conventions/write-protocol.js +44 -0
  34. package/dist/conventions/write-protocol.js.map +1 -0
  35. package/dist/core/runtime/assets.d.ts +6 -0
  36. package/dist/core/runtime/assets.js +27 -0
  37. package/dist/core/runtime/assets.js.map +1 -1
  38. package/dist/engine/graph/resolver.d.ts +17 -0
  39. package/dist/engine/graph/resolver.js +46 -11
  40. package/dist/engine/graph/resolver.js.map +1 -1
  41. package/dist/engine/linkify/apply.d.ts +56 -0
  42. package/dist/engine/linkify/apply.js +65 -0
  43. package/dist/engine/linkify/apply.js.map +1 -0
  44. package/dist/engine/linkify/josa.d.ts +58 -0
  45. package/dist/engine/linkify/josa.js +133 -0
  46. package/dist/engine/linkify/josa.js.map +1 -0
  47. package/dist/engine/linkify/mask.d.ts +29 -0
  48. package/dist/engine/linkify/mask.js +173 -0
  49. package/dist/engine/linkify/mask.js.map +1 -0
  50. package/dist/engine/linkify/suggest.d.ts +52 -0
  51. package/dist/engine/linkify/suggest.js +181 -0
  52. package/dist/engine/linkify/suggest.js.map +1 -0
  53. package/dist/engine/linkify/types.d.ts +68 -0
  54. package/dist/engine/linkify/types.js +12 -0
  55. package/dist/engine/linkify/types.js.map +1 -0
  56. package/dist/harness/surface-registry.d.ts +1 -0
  57. package/dist/harness/surface-registry.js +27 -0
  58. package/dist/harness/surface-registry.js.map +1 -1
  59. package/dist/harness/validation.js +30 -1
  60. package/dist/harness/validation.js.map +1 -1
  61. package/dist/install/claude-marketplace.d.ts +44 -0
  62. package/dist/install/claude-marketplace.js +89 -0
  63. package/dist/install/claude-marketplace.js.map +1 -0
  64. package/dist/install/claude.js +14 -7
  65. package/dist/install/claude.js.map +1 -1
  66. package/dist/install/codex.d.ts +15 -0
  67. package/dist/install/codex.js +15 -0
  68. package/dist/install/codex.js.map +1 -1
  69. package/dist/install/common.d.ts +11 -2
  70. package/dist/install/common.js +19 -12
  71. package/dist/install/common.js.map +1 -1
  72. package/dist/install/hermes.js +15 -15
  73. package/dist/install/hermes.js.map +1 -1
  74. package/dist/install/hosts.js +31 -15
  75. package/dist/install/hosts.js.map +1 -1
  76. package/dist/link/global-config.d.ts +22 -0
  77. package/dist/link/global-config.js +69 -0
  78. package/dist/link/global-config.js.map +1 -0
  79. package/dist/link/link.d.ts +6 -3
  80. package/dist/link/link.js +12 -2
  81. package/dist/link/link.js.map +1 -1
  82. package/dist/mcp/link-tools.d.ts +81 -0
  83. package/dist/mcp/link-tools.js +157 -0
  84. package/dist/mcp/link-tools.js.map +1 -0
  85. package/dist/mcp/server.d.ts +7 -0
  86. package/dist/mcp/server.js +107 -8
  87. package/dist/mcp/server.js.map +1 -1
  88. package/dist/mcp/update-notice.d.ts +51 -0
  89. package/dist/mcp/update-notice.js +196 -0
  90. package/dist/mcp/update-notice.js.map +1 -0
  91. package/dist/update/update.d.ts +12 -0
  92. package/dist/update/update.js +2 -2
  93. package/dist/update/update.js.map +1 -1
  94. package/docs/install.md +38 -2
  95. package/docs/release.md +109 -17
  96. package/package.json +4 -2
@@ -1 +1 @@
1
- {"version":3,"file":"hermes.js","sourceRoot":"","sources":["../../src/install/hermes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAC;AACtC,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AAC/D,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,cAAc,EAAE,cAAc,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAGpH,MAAM,qBAAqB,GAAG,sBAAsB,CAAC;AACrD,MAAM,iBAAiB,GAAG,KAAK,CAAC;AAEhC,KAAK,UAAU,eAAe,CAAC,OAA6B,EAAE,YAAoB;IAChF,MAAM,IAAI,GAAG,MAAM,cAAc,CAAC,YAAY,CAAC,CAAC;IAChD,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC;IACvC,MAAM,OAAO,GAAG,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;IACvD,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,cAAc,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAC/D,IAAI,CAAC,aAAa,CAAC,GAAG,OAAO,CAAC;IAC9B,OAAO,eAAe,CAAC,YAAY,EAAE,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;AACtE,CAAC;AAED,KAAK,UAAU,eAAe,CAAC,OAA6B,EAAE,YAAoB;IAChF,MAAM,IAAI,GAAG,MAAM,cAAc,CAAC,YAAY,CAAC,CAAC;IAChD,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC;IACvC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,KAAK,IAAI,UAAU,CAAC;QAAE,OAAO,KAAK,CAAC;IAClE,OAAO,UAAU,CAAC,KAAK,CAAC,CAAC;IACzB,IAAI,CAAC,aAAa,CAAC,GAAG,UAAU,CAAC;IACjC,OAAO,eAAe,CAAC,YAAY,EAAE,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;AACtE,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,OAA6B,EAAE,IAAwB;IACzF,MAAM,SAAS,GAAG,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,SAAS,EAAE,iBAAiB,CAAC,CAAC;IAC1E,MAAM,YAAY,GAAG,wBAAwB,CAAC,OAAO,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;IACzE,MAAM,kBAAkB,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;IAClE,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC;IAC9D,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;IACtD,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,EAAE,qBAAqB,EAAE,iBAAiB,CAAC,CAAC;IAC7F,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;IACvD,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC;IAC9D,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;QACpB,MAAM,EAAE,CAAC,kBAAkB,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QAC/D,MAAM,EAAE,CAAC,aAAa,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QACzC,MAAM,gBAAgB,CAAC,YAAY,EAAE,aAAa,EAAE,KAAK,CAAC,CAAC;QAC3D,MAAM,gBAAgB,CAAC,WAAW,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC;QACxD,MAAM,eAAe,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;IAC7C,CAAC;IACD,OAAO;QACL,OAAO,EAAE,QAAQ;QACjB,MAAM,EAAE,SAAS;QACjB,OAAO,EAAE,CAAC,OAAO,CAAC,MAAM;QACxB,OAAO,EAAE,KAAK;QACd,KAAK,EAAE,CAAC,aAAa,EAAE,WAAW,EAAE,UAAU,CAAC;QAC/C,QAAQ,EAAE,CAAC,sBAAsB,UAAU,EAAE,CAAC;QAC9C,QAAQ,EAAE,CAAC,kHAAkH,CAAC;KAC/H,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,OAA6B;IACjE,MAAM,SAAS,GAAG,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,SAAS,EAAE,iBAAiB,CAAC,CAAC;IAC1E,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC;IAC9D,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,EAAE,qBAAqB,EAAE,iBAAiB,CAAC,CAAC;IAC7F,MAAM,kBAAkB,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;IAClE,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC;IAC9D,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;IACvD,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,IAAI,UAAU,CAAC,UAAU,CAAC;QAAE,OAAO,GAAG,CAAC,MAAM,eAAe,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC,IAAI,OAAO,CAAC;IAC9F,KAAK,MAAM,MAAM,IAAI,CAAC,aAAa,EAAE,WAAW,EAAE,kBAAkB,EAAE,aAAa,CAAC,EAAE,CAAC;QACrF,IAAI,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;YACvB,OAAO,GAAG,IAAI,CAAC;YACf,IAAI,CAAC,OAAO,CAAC,MAAM;gBAAE,MAAM,EAAE,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QAC1E,CAAC;IACH,CAAC;IACD,OAAO;QACL,OAAO,EAAE,QAAQ;QACjB,MAAM,EAAE,WAAW;QACnB,OAAO,EAAE,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM;QACnC,OAAO,EAAE,CAAC,OAAO;QACjB,KAAK,EAAE,CAAC,aAAa,EAAE,WAAW,EAAE,UAAU,CAAC;QAC/C,QAAQ,EAAE,EAAE;QACZ,QAAQ,EAAE,CAAC,6GAA6G,CAAC;KAC1H,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"hermes.js","sourceRoot":"","sources":["../../src/install/hermes.ts"],"names":[],"mappings":"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"}
@@ -17,26 +17,42 @@ export function resolveRuntimeSelection(selection) {
17
17
  }
18
18
  return [selection];
19
19
  }
20
+ async function runSingleHostOperation(options, runtime) {
21
+ const host = hostSurfaceForRuntime(runtime);
22
+ if (options.action === "install") {
23
+ if (runtime === "claude")
24
+ return installClaude(options, host);
25
+ if (runtime === "codex")
26
+ return installCodex(options, host);
27
+ return installHermes(options, host);
28
+ }
29
+ if (runtime === "claude")
30
+ return uninstallClaude(options);
31
+ if (runtime === "codex")
32
+ return uninstallCodex(options);
33
+ return uninstallHermes(options);
34
+ }
35
+ function failedHostOperationResult(options, runtime, error) {
36
+ const reason = error instanceof Error ? error.message : String(error);
37
+ return {
38
+ runtime,
39
+ action: options.action,
40
+ changed: false,
41
+ skipped: false,
42
+ paths: [],
43
+ commands: [],
44
+ messages: [`FAILED: ${runtime} ${options.action} did not complete: ${reason}`],
45
+ };
46
+ }
20
47
  export async function runHostOperation(options) {
21
48
  const runtimes = resolveRuntimeSelection(options.runtime);
22
49
  const results = [];
23
50
  for (const runtime of runtimes) {
24
- const host = hostSurfaceForRuntime(runtime);
25
- if (options.action === "install") {
26
- if (runtime === "claude")
27
- results.push(await installClaude(options, host));
28
- if (runtime === "codex")
29
- results.push(await installCodex(options, host));
30
- if (runtime === "hermes")
31
- results.push(await installHermes(options, host));
51
+ try {
52
+ results.push(await runSingleHostOperation(options, runtime));
32
53
  }
33
- else {
34
- if (runtime === "claude")
35
- results.push(await uninstallClaude(options));
36
- if (runtime === "codex")
37
- results.push(await uninstallCodex(options));
38
- if (runtime === "hermes")
39
- results.push(await uninstallHermes(options));
54
+ catch (error) {
55
+ results.push(failedHostOperationResult(options, runtime, error));
40
56
  }
41
57
  }
42
58
  return results;
@@ -1 +1 @@
1
- {"version":3,"file":"hosts.js","sourceRoot":"","sources":["../../src/install/hosts.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"hosts.js","sourceRoot":"","sources":["../../src/install/hosts.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ export interface GlobalConfig {
2
+ version: number;
3
+ vault: string;
4
+ }
5
+ /**
6
+ * Read the global Obsidian vault target config from `<homeDir>/.oms/config.yaml`.
7
+ * Returns `null` only when the file is missing (ENOENT).
8
+ * A present-but-invalid file throws a loud actionable error naming the config file path:
9
+ * - bad YAML syntax
10
+ * - not a mapping
11
+ * - missing or empty `vault` string
12
+ * - bare relative `vault` value (would resolve against process cwd)
13
+ * The `vault` value is expanded if it starts with `~`, using the existing `expandHome`.
14
+ * `version` defaults to 1 when absent or non-number.
15
+ */
16
+ export declare function readGlobalConfig(homeDir?: string): Promise<GlobalConfig | null>;
17
+ /**
18
+ * Write the global Obsidian vault target config to `<homeDir>/.oms/config.yaml`.
19
+ * Creates the `.oms` directory recursively if needed.
20
+ * Returns the absolute path to the written config file.
21
+ */
22
+ export declare function writeGlobalConfig(config: GlobalConfig, homeDir?: string): Promise<string>;
@@ -0,0 +1,69 @@
1
+ import { mkdir, readFile, writeFile } from "node:fs/promises";
2
+ import os from "node:os";
3
+ import path from "node:path";
4
+ import { parse as yamlParse, stringify as yamlStringify } from "yaml";
5
+ import { expandHome } from "./link.js";
6
+ /**
7
+ * Read the global Obsidian vault target config from `<homeDir>/.oms/config.yaml`.
8
+ * Returns `null` only when the file is missing (ENOENT).
9
+ * A present-but-invalid file throws a loud actionable error naming the config file path:
10
+ * - bad YAML syntax
11
+ * - not a mapping
12
+ * - missing or empty `vault` string
13
+ * - bare relative `vault` value (would resolve against process cwd)
14
+ * The `vault` value is expanded if it starts with `~`, using the existing `expandHome`.
15
+ * `version` defaults to 1 when absent or non-number.
16
+ */
17
+ export async function readGlobalConfig(homeDir) {
18
+ const home = homeDir ?? os.homedir();
19
+ const configPath = path.join(home, ".oms", "config.yaml");
20
+ let raw;
21
+ try {
22
+ raw = await readFile(configPath, "utf-8");
23
+ }
24
+ catch (error) {
25
+ if (error instanceof Error && "code" in error && error.code === "ENOENT") {
26
+ return null;
27
+ }
28
+ throw error;
29
+ }
30
+ let parsed;
31
+ try {
32
+ parsed = yamlParse(raw);
33
+ }
34
+ catch (error) {
35
+ const message = error instanceof Error ? error.message : String(error);
36
+ throw new Error(`[oms] Invalid global config at ${configPath}: config.yaml is not valid YAML (${message}). Run oms setup to repair it.`);
37
+ }
38
+ if (parsed == null || typeof parsed !== "object" || Array.isArray(parsed)) {
39
+ throw new Error(`[oms] Invalid global config at ${configPath}: expected a YAML mapping with vault and version.`);
40
+ }
41
+ const vault = parsed["vault"];
42
+ if (typeof vault !== "string" || vault.trim().length === 0) {
43
+ throw new Error(`[oms] Invalid global config at ${configPath}: missing required string field "vault". Run oms setup to register a vault.`);
44
+ }
45
+ const vaultTrimmed = vault.trim();
46
+ // Reject bare relative paths (e.g. ../notes). Must be absolute or ~/...
47
+ if (!path.isAbsolute(vaultTrimmed) && !vaultTrimmed.startsWith("~")) {
48
+ throw new Error(`[oms] Invalid global config at ${configPath}: vault must be an absolute path or ~/..., not a relative path like "${vaultTrimmed}". Run oms setup to register an absolute vault path.`);
49
+ }
50
+ const expandedVault = expandHome(vaultTrimmed);
51
+ return {
52
+ version: typeof parsed["version"] === "number" ? parsed["version"] : 1,
53
+ vault: expandedVault,
54
+ };
55
+ }
56
+ /**
57
+ * Write the global Obsidian vault target config to `<homeDir>/.oms/config.yaml`.
58
+ * Creates the `.oms` directory recursively if needed.
59
+ * Returns the absolute path to the written config file.
60
+ */
61
+ export async function writeGlobalConfig(config, homeDir) {
62
+ const home = homeDir ?? os.homedir();
63
+ const omsDir = path.join(home, ".oms");
64
+ const configPath = path.join(omsDir, "config.yaml");
65
+ await mkdir(omsDir, { recursive: true });
66
+ await writeFile(configPath, yamlStringify(config), "utf-8");
67
+ return configPath;
68
+ }
69
+ //# sourceMappingURL=global-config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"global-config.js","sourceRoot":"","sources":["../../src/link/global-config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC9D,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,KAAK,IAAI,SAAS,EAAE,SAAS,IAAI,aAAa,EAAE,MAAM,MAAM,CAAC;AACtE,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAOvC;;;;;;;;;;GAUG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,OAAgB;IACrD,MAAM,IAAI,GAAG,OAAO,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC;IACrC,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,aAAa,CAAC,CAAC;IAE1D,IAAI,GAAW,CAAC;IAChB,IAAI,CAAC;QACH,GAAG,GAAG,MAAM,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IAC5C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,KAAK,IAAI,MAAM,IAAI,KAAK,IAAK,KAA+B,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACpG,OAAO,IAAI,CAAC;QACd,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;IAED,IAAI,MAAsC,CAAC;IAC3C,IAAI,CAAC;QACH,MAAM,GAAG,SAAS,CAAC,GAAG,CAAmC,CAAC;IAC5D,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACvE,MAAM,IAAI,KAAK,CACb,kCAAkC,UAAU,oCAAoC,OAAO,gCAAgC,CACxH,CAAC;IACJ,CAAC;IAED,IAAI,MAAM,IAAI,IAAI,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAC1E,MAAM,IAAI,KAAK,CACb,kCAAkC,UAAU,mDAAmD,CAChG,CAAC;IACJ,CAAC;IAED,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;IAC9B,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3D,MAAM,IAAI,KAAK,CACb,kCAAkC,UAAU,6EAA6E,CAC1H,CAAC;IACJ,CAAC;IAED,MAAM,YAAY,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IAClC,wEAAwE;IACxE,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACpE,MAAM,IAAI,KAAK,CACb,kCAAkC,UAAU,wEAAwE,YAAY,sDAAsD,CACvL,CAAC;IACJ,CAAC;IAED,MAAM,aAAa,GAAG,UAAU,CAAC,YAAY,CAAC,CAAC;IAE/C,OAAO;QACL,OAAO,EAAE,OAAO,MAAM,CAAC,SAAS,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;QACtE,KAAK,EAAE,aAAa;KACrB,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,MAAoB,EAAE,OAAgB;IAC5E,MAAM,IAAI,GAAG,OAAO,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC;IACrC,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACvC,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IAEpD,MAAM,KAAK,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACzC,MAAM,SAAS,CAAC,UAAU,EAAE,aAAa,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,CAAC;IAE5D,OAAO,UAAU,CAAC;AACpB,CAAC"}
@@ -28,7 +28,7 @@ export interface LinkRecord {
28
28
  /** Vault folders (top-level names or nested subpaths) this repo may reach. */
29
29
  scope: string[];
30
30
  }
31
- export type VaultSource = "vault" | "bridge" | "env" | "cwd";
31
+ export type VaultSource = "vault" | "bridge" | "env" | "global" | "cwd";
32
32
  export interface ResolvedVault {
33
33
  /** Effective vault root — where the `.oms/` ontology lives. */
34
34
  vault: string;
@@ -79,9 +79,12 @@ export declare function writeLinkRecord(omsDir: string, record: LinkRecord): Pro
79
79
  * 1. Local vault ontology (`.oms/concepts` or `.oms/taxonomy.yaml`) → vault.
80
80
  * 2. Local bridge (`.oms/links.yaml`) → bridge.
81
81
  * 3. `OMS_VAULT` environment variable → env.
82
- * 4. Fallback to `startDir` → cwd.
82
+ * 4. Global vault target registry (`~/.oms/config.yaml`) → global.
83
+ * 5. Fallback to `startDir` → cwd.
83
84
  */
84
- export declare function resolveEffectiveVault(startDir: string, env?: Readonly<Record<string, string | undefined>>): Promise<ResolvedVault>;
85
+ export declare function resolveEffectiveVault(startDir: string, env?: Readonly<Record<string, string | undefined>>, opts?: {
86
+ homeDir?: string;
87
+ }): Promise<ResolvedVault>;
85
88
  /** Append `pattern` to `<repoDir>/.gitignore` when absent. Returns whether it changed. */
86
89
  export declare function ensureGitignore(repoDir: string, pattern: string): Promise<boolean>;
87
90
  /**
package/dist/link/link.js CHANGED
@@ -115,9 +115,10 @@ export async function writeLinkRecord(omsDir, record) {
115
115
  * 1. Local vault ontology (`.oms/concepts` or `.oms/taxonomy.yaml`) → vault.
116
116
  * 2. Local bridge (`.oms/links.yaml`) → bridge.
117
117
  * 3. `OMS_VAULT` environment variable → env.
118
- * 4. Fallback to `startDir` → cwd.
118
+ * 4. Global vault target registry (`~/.oms/config.yaml`) → global.
119
+ * 5. Fallback to `startDir` → cwd.
119
120
  */
120
- export async function resolveEffectiveVault(startDir, env = process.env) {
121
+ export async function resolveEffectiveVault(startDir, env = process.env, opts) {
121
122
  const omsDir = path.join(startDir, ".oms");
122
123
  const conceptsKind = await pathKind(path.join(omsDir, "concepts"));
123
124
  const taxonomyKind = await pathKind(path.join(omsDir, "taxonomy.yaml"));
@@ -136,6 +137,15 @@ export async function resolveEffectiveVault(startDir, env = process.env) {
136
137
  if (envVault && envVault.trim().length > 0) {
137
138
  return { vault: expandHome(envVault), scope: null, source: "env" };
138
139
  }
140
+ const { readGlobalConfig } = await import("./global-config.js");
141
+ const globalConfig = await readGlobalConfig(opts?.homeDir);
142
+ if (globalConfig) {
143
+ const resolvedVault = globalConfig.vault;
144
+ if ((await pathKind(resolvedVault)) !== "directory") {
145
+ throw new Error(`[oms] Global vault target does not exist or is not a directory: ${resolvedVault}. Update ~/.oms/config.yaml with a valid vault path, or run oms setup to register your vault.`);
146
+ }
147
+ return { vault: resolvedVault, scope: null, source: "global" };
148
+ }
139
149
  return { vault: path.resolve(startDir), scope: null, source: "cwd" };
140
150
  }
141
151
  /** Append `pattern` to `<repoDir>/.gitignore` when absent. Returns whether it changed. */
@@ -1 +1 @@
1
- {"version":3,"file":"link.js","sourceRoot":"","sources":["../../src/link/link.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"link.js","sourceRoot":"","sources":["../../src/link/link.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,81 @@
1
+ /**
2
+ * MCP wiring for the linkify core: vault I/O + candidate universe for the
3
+ * `oms_link_suggest` / `oms_link_apply` tools.
4
+ *
5
+ * The linkify core (mask → suggest → apply) is pure and dependency-injected; it
6
+ * knows nothing about vaults, ontologies, or the filesystem. This module owns
7
+ * exactly that translation and nothing else, so server.ts stays a dispatcher.
8
+ *
9
+ * Candidate identity is DERIVED, never cached. A candidate id is its body span,
10
+ * and apply re-runs the same deterministic suggest pass over the note as it
11
+ * exists right now. Two consequences that matter: the server holds no
12
+ * cross-call state (a restart changes nothing), and a note edited between
13
+ * suggest and apply is caught by the base-hash check the kernel-facing
14
+ * `applyLinks` performs before any write.
15
+ */
16
+ import type { WriteTargetSource } from "../conventions/write-protocol.js";
17
+ import type { Ontology } from "../core/ontology/types.js";
18
+ import { type ApplyResult } from "../engine/linkify/apply.js";
19
+ import type { LinkCandidate, TermNote } from "../engine/linkify/types.js";
20
+ /** A candidate as the MCP surface reports it: the core shape plus a stable id. */
21
+ export interface IdentifiedCandidate extends LinkCandidate {
22
+ /** Deterministic handle a client passes back to `oms_link_apply`. */
23
+ readonly id: string;
24
+ }
25
+ /** Payload of a successful `oms_link_suggest` call. */
26
+ export interface LinkSuggestion {
27
+ readonly notePath: string;
28
+ /** sha256 of the body the candidates were computed against (apply's token). */
29
+ readonly baseContentHash: string;
30
+ readonly candidateNotes: number;
31
+ readonly candidates: readonly IdentifiedCandidate[];
32
+ }
33
+ /** Everything both link tools need to address a vault note. */
34
+ export interface LinkToolTarget {
35
+ readonly vault: string;
36
+ readonly source: WriteTargetSource;
37
+ readonly ontology: Ontology;
38
+ /** Vault-relative markdown path of the note being linkified. */
39
+ readonly notePath: string;
40
+ }
41
+ /** Restrict the candidate universe to one top-level vault folder. */
42
+ export interface LinkScope {
43
+ readonly folder?: string | undefined;
44
+ }
45
+ /**
46
+ * Every `term`-bound note in the vault, with its declared surface forms.
47
+ *
48
+ * Concept binding comes from the ontology's folder contract (the same resolver
49
+ * the write kernel uses), NOT from a frontmatter field a note can claim for
50
+ * itself — a note cannot opt into being a link target by asserting it is one.
51
+ */
52
+ export declare function collectTermNotes(vault: string, ontology: Ontology, scope?: LinkScope): Promise<TermNote[]>;
53
+ /**
54
+ * Propose `[[wikilink]]` insertions for one note against the vault's term notes.
55
+ *
56
+ * Read-only: nothing is written and no state is retained. The returned
57
+ * `baseContentHash` is the caller's optimistic-concurrency token for apply.
58
+ */
59
+ export declare function suggestLinksForNote(target: LinkToolTarget, scope?: LinkScope): Promise<LinkSuggestion>;
60
+ /** Payload of an `oms_link_apply` call: the core result plus what was selected. */
61
+ export interface LinkApplyOutcome {
62
+ readonly notePath: string;
63
+ readonly requestedIds: readonly string[];
64
+ /** Requested ids that still name a live span in the note's current body. */
65
+ readonly resolvedIds: readonly string[];
66
+ readonly result: ApplyResult;
67
+ }
68
+ /**
69
+ * Apply the selected candidates to a note and persist through the write kernel.
70
+ *
71
+ * The candidates are recomputed from the note's CURRENT body: ids that no
72
+ * longer name a span simply do not resolve, and a body that drifted since
73
+ * suggest fails the `baseContentHash` check inside `applyLinks` before any
74
+ * write is attempted.
75
+ */
76
+ export declare function applyLinksForNote(target: LinkToolTarget, selection: {
77
+ readonly baseContentHash: string;
78
+ readonly candidateIds: readonly string[];
79
+ }, scope?: LinkScope): Promise<LinkApplyOutcome>;
80
+ /** The MCP-facing JSON shape of an apply outcome: applied body + receipt, or a typed refusal. */
81
+ export declare function linkApplyPayload(outcome: LinkApplyOutcome): Record<string, unknown>;
@@ -0,0 +1,157 @@
1
+ /**
2
+ * MCP wiring for the linkify core: vault I/O + candidate universe for the
3
+ * `oms_link_suggest` / `oms_link_apply` tools.
4
+ *
5
+ * The linkify core (mask → suggest → apply) is pure and dependency-injected; it
6
+ * knows nothing about vaults, ontologies, or the filesystem. This module owns
7
+ * exactly that translation and nothing else, so server.ts stays a dispatcher.
8
+ *
9
+ * Candidate identity is DERIVED, never cached. A candidate id is its body span,
10
+ * and apply re-runs the same deterministic suggest pass over the note as it
11
+ * exists right now. Two consequences that matter: the server holds no
12
+ * cross-call state (a restart changes nothing), and a note edited between
13
+ * suggest and apply is caught by the base-hash check the kernel-facing
14
+ * `applyLinks` performs before any write.
15
+ */
16
+ import { readdir, readFile } from "node:fs/promises";
17
+ import path from "node:path";
18
+ import { safeVaultNotePath, writeNote } from "../capture/safe.js";
19
+ import { parseNote } from "../conventions/frontmatter.js";
20
+ import { resolveConcept } from "../core/ontology/resolver.js";
21
+ import { applyLinks, hashBody } from "../engine/linkify/apply.js";
22
+ import { suggestLinks, TERM_CONCEPT, termBoundNotes } from "../engine/linkify/suggest.js";
23
+ /** A candidate id is the body span it claims — stable across identical bodies. */
24
+ function candidateId(candidate) {
25
+ return `${String(candidate.startOffset)}-${String(candidate.endOffset)}`;
26
+ }
27
+ function identify(candidate) {
28
+ return { ...candidate, id: candidateId(candidate) };
29
+ }
30
+ /** Walk vault markdown, skipping dotted, dependency, and internal directories. */
31
+ async function* walkMarkdown(dir, base) {
32
+ const entries = await readdir(dir, { withFileTypes: true });
33
+ for (const entry of entries) {
34
+ if (entry.name.startsWith(".") || entry.name === "node_modules")
35
+ continue;
36
+ const full = path.join(dir, entry.name);
37
+ if (entry.isDirectory()) {
38
+ yield* walkMarkdown(full, base);
39
+ }
40
+ else if (entry.isFile() && entry.name.endsWith(".md")) {
41
+ yield path.relative(base, full).replace(/\\/g, "/");
42
+ }
43
+ }
44
+ }
45
+ /** Flatten a frontmatter `aliases` value to trimmed non-empty strings. */
46
+ function aliasStrings(value) {
47
+ if (Array.isArray(value))
48
+ return value.flatMap(aliasStrings);
49
+ if (typeof value !== "string")
50
+ return [];
51
+ const trimmed = value.trim();
52
+ return trimmed ? [trimmed] : [];
53
+ }
54
+ /**
55
+ * Every `term`-bound note in the vault, with its declared surface forms.
56
+ *
57
+ * Concept binding comes from the ontology's folder contract (the same resolver
58
+ * the write kernel uses), NOT from a frontmatter field a note can claim for
59
+ * itself — a note cannot opt into being a link target by asserting it is one.
60
+ */
61
+ export async function collectTermNotes(vault, ontology, scope = {}) {
62
+ const root = scope.folder === undefined ? vault : path.join(vault, scope.folder);
63
+ const notes = [];
64
+ for await (const notePath of walkMarkdown(root, vault)) {
65
+ const concept = resolveConcept(ontology, notePath);
66
+ if (concept?.concept !== TERM_CONCEPT)
67
+ continue;
68
+ const raw = await readFile(path.join(vault, notePath), "utf-8");
69
+ notes.push({
70
+ path: notePath,
71
+ concept: concept.concept,
72
+ aliases: aliasStrings(parseNote(raw).frontmatter["aliases"]),
73
+ });
74
+ }
75
+ return termBoundNotes(notes);
76
+ }
77
+ /** Read one vault note's body, refusing unsafe paths and missing files loudly. */
78
+ async function readNoteBody(vault, notePath) {
79
+ const fullPath = safeVaultNotePath(vault, notePath);
80
+ const raw = await readFile(fullPath, "utf-8");
81
+ return {
82
+ normalized: path.relative(vault, fullPath).replace(/\\/g, "/"),
83
+ body: parseNote(raw).body,
84
+ };
85
+ }
86
+ /**
87
+ * Propose `[[wikilink]]` insertions for one note against the vault's term notes.
88
+ *
89
+ * Read-only: nothing is written and no state is retained. The returned
90
+ * `baseContentHash` is the caller's optimistic-concurrency token for apply.
91
+ */
92
+ export async function suggestLinksForNote(target, scope = {}) {
93
+ const { normalized, body } = await readNoteBody(target.vault, target.notePath);
94
+ const notes = await collectTermNotes(target.vault, target.ontology, scope);
95
+ const candidates = suggestLinks(body, notes, { notePath: normalized });
96
+ return {
97
+ notePath: normalized,
98
+ baseContentHash: hashBody(body),
99
+ candidateNotes: notes.length,
100
+ candidates: candidates.map(identify),
101
+ };
102
+ }
103
+ /**
104
+ * Apply the selected candidates to a note and persist through the write kernel.
105
+ *
106
+ * The candidates are recomputed from the note's CURRENT body: ids that no
107
+ * longer name a span simply do not resolve, and a body that drifted since
108
+ * suggest fails the `baseContentHash` check inside `applyLinks` before any
109
+ * write is attempted.
110
+ */
111
+ export async function applyLinksForNote(target, selection, scope = {}) {
112
+ const { normalized, body } = await readNoteBody(target.vault, target.notePath);
113
+ const notes = await collectTermNotes(target.vault, target.ontology, scope);
114
+ const wanted = new Set(selection.candidateIds);
115
+ const accepted = suggestLinks(body, notes, { notePath: normalized }).filter((candidate) => wanted.has(candidateId(candidate)));
116
+ const result = await applyLinks({
117
+ body,
118
+ baseContentHash: selection.baseContentHash,
119
+ accepted,
120
+ writeNote,
121
+ target: {
122
+ target: { vault: target.vault, source: target.source },
123
+ ontology: target.ontology,
124
+ notePath: normalized,
125
+ },
126
+ });
127
+ return {
128
+ notePath: normalized,
129
+ requestedIds: selection.candidateIds,
130
+ resolvedIds: accepted.map(candidateId),
131
+ result,
132
+ };
133
+ }
134
+ /** The MCP-facing JSON shape of an apply outcome: applied body + receipt, or a typed refusal. */
135
+ export function linkApplyPayload(outcome) {
136
+ const common = {
137
+ notePath: outcome.notePath,
138
+ requestedIds: outcome.requestedIds,
139
+ resolvedIds: outcome.resolvedIds,
140
+ };
141
+ const result = outcome.result;
142
+ return result.applied
143
+ ? {
144
+ ...common,
145
+ applied: true,
146
+ contentHash: result.contentHash,
147
+ body: result.body,
148
+ receipt: result.write.receipt ?? null,
149
+ }
150
+ : {
151
+ ...common,
152
+ applied: false,
153
+ reason: result.reason,
154
+ write: result.write ?? null,
155
+ };
156
+ }
157
+ //# sourceMappingURL=link-tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"link-tools.js","sourceRoot":"","sources":["../../src/mcp/link-tools.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,15 @@
1
1
  import { Server } from "@modelcontextprotocol/sdk/server/index.js";
2
2
  import { type Tool } from "@modelcontextprotocol/sdk/types.js";
3
+ import type { WriteTargetSource } from "../conventions/write-protocol.js";
4
+ export declare const BASE_SERVER_INSTRUCTIONS = "Oh My Second Brain exposes ontology/status/cache/retrieval tools and the write tool. write is gated by a verified vault target (a vault inferred from the current directory is refused), vault confinement, and contract validation.";
3
5
  export declare const omsMcpTools: Tool[];
4
6
  export interface OMSMcpServerOptions {
5
7
  vault: string;
8
+ /**
9
+ * How the vault was resolved. The write surface trusts every source except
10
+ * `cwd` (the server may have booted in an arbitrary directory - issue #58).
11
+ */
12
+ source: WriteTargetSource;
6
13
  }
7
14
  export declare function createOMSMcpServer(opts: OMSMcpServerOptions): Server;
8
15
  export declare function runMcpServer(opts: OMSMcpServerOptions): Promise<void>;