oh-my-second-brain 0.3.0 → 0.6.1

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 (104) hide show
  1. package/.claude-plugin/marketplace.json +2 -2
  2. package/.claude-plugin/plugin.json +1 -1
  3. package/.codex-plugin/plugin.json +1 -1
  4. package/ACKNOWLEDGMENTS.md +8 -0
  5. package/CHANGELOG-assets.md +4 -0
  6. package/CHANGELOG-cli.md +9 -0
  7. package/CHANGELOG-kernel.md +23 -0
  8. package/CHANGELOG-mcp.md +10 -0
  9. package/CHANGELOG-vendors.md +4 -0
  10. package/CHANGELOG.md +27 -0
  11. package/assets/hermes-manifest.json +1 -1
  12. package/assets/skills/doctor/SKILL.md +2 -2
  13. package/assets/skills/search/SKILL.md +1 -1
  14. package/dist/cli/args.d.ts +2 -0
  15. package/dist/cli/args.js +13 -0
  16. package/dist/cli/args.js.map +1 -1
  17. package/dist/cli/host-commands.js +2 -1
  18. package/dist/cli/host-commands.js.map +1 -1
  19. package/dist/cli/oms.d.ts +1 -1
  20. package/dist/cli/oms.js +26 -3
  21. package/dist/cli/oms.js.map +1 -1
  22. package/dist/cli/semantic-args.js +102 -3
  23. package/dist/cli/semantic-args.js.map +1 -1
  24. package/dist/cli/semantic.js +30 -6
  25. package/dist/cli/semantic.js.map +1 -1
  26. package/dist/cli/setup-command.d.ts +16 -0
  27. package/dist/cli/setup-command.js +50 -1
  28. package/dist/cli/setup-command.js.map +1 -1
  29. package/dist/kernel/contracts/index.d.ts +144 -0
  30. package/dist/kernel/contracts/index.js +401 -0
  31. package/dist/kernel/contracts/index.js.map +1 -0
  32. package/dist/kernel/engine/assemble.d.ts +22 -1
  33. package/dist/kernel/engine/assemble.js +202 -19
  34. package/dist/kernel/engine/assemble.js.map +1 -1
  35. package/dist/kernel/engine/axes/store.d.ts +90 -0
  36. package/dist/kernel/engine/axes/store.js +400 -0
  37. package/dist/kernel/engine/axes/store.js.map +1 -0
  38. package/dist/kernel/engine/embed/identity.d.ts +14 -4
  39. package/dist/kernel/engine/embed/identity.js +33 -1
  40. package/dist/kernel/engine/embed/identity.js.map +1 -1
  41. package/dist/kernel/engine/embed/model.d.ts +134 -0
  42. package/dist/kernel/engine/embed/model.js +302 -0
  43. package/dist/kernel/engine/embed/model.js.map +1 -0
  44. package/dist/kernel/engine/embed/provider.d.ts +36 -5
  45. package/dist/kernel/engine/embed/provider.js +240 -103
  46. package/dist/kernel/engine/embed/provider.js.map +1 -1
  47. package/dist/kernel/engine/embed/store.d.ts +5 -1
  48. package/dist/kernel/engine/embed/store.js +136 -26
  49. package/dist/kernel/engine/embed/store.js.map +1 -1
  50. package/dist/kernel/engine/embed/sync.d.ts +53 -0
  51. package/dist/kernel/engine/embed/sync.js +489 -59
  52. package/dist/kernel/engine/embed/sync.js.map +1 -1
  53. package/dist/kernel/engine/graph/builder.d.ts +9 -5
  54. package/dist/kernel/engine/graph/builder.js +213 -79
  55. package/dist/kernel/engine/graph/builder.js.map +1 -1
  56. package/dist/kernel/engine/graph/node.d.ts +49 -1
  57. package/dist/kernel/engine/graph/node.js +205 -0
  58. package/dist/kernel/engine/graph/node.js.map +1 -1
  59. package/dist/kernel/engine/mcp/facade.d.ts +21 -1
  60. package/dist/kernel/engine/mcp/facade.js +523 -28
  61. package/dist/kernel/engine/mcp/facade.js.map +1 -1
  62. package/dist/kernel/engine/mcp/query-mapper.d.ts +27 -2
  63. package/dist/kernel/engine/mcp/query-mapper.js +157 -12
  64. package/dist/kernel/engine/mcp/query-mapper.js.map +1 -1
  65. package/dist/kernel/engine/mcp/types.d.ts +64 -2
  66. package/dist/kernel/engine/retrieval/dispatcher.d.ts +22 -0
  67. package/dist/kernel/engine/retrieval/dispatcher.js +84 -8
  68. package/dist/kernel/engine/retrieval/dispatcher.js.map +1 -1
  69. package/dist/kernel/engine/retrieval/index.d.ts +2 -1
  70. package/dist/kernel/engine/retrieval/index.js +1 -1
  71. package/dist/kernel/engine/retrieval/index.js.map +1 -1
  72. package/dist/kernel/engine/retrieval/reranker.d.ts +82 -4
  73. package/dist/kernel/engine/retrieval/reranker.js +178 -3
  74. package/dist/kernel/engine/retrieval/reranker.js.map +1 -1
  75. package/dist/kernel/engine/retrieval/rrf.d.ts +10 -2
  76. package/dist/kernel/engine/retrieval/rrf.js +39 -16
  77. package/dist/kernel/engine/retrieval/rrf.js.map +1 -1
  78. package/dist/kernel/engine/tracer.d.ts +13 -0
  79. package/dist/kernel/engine/tracer.js +63 -6
  80. package/dist/kernel/engine/tracer.js.map +1 -1
  81. package/dist/kernel/graph/cache.js +164 -20
  82. package/dist/kernel/graph/cache.js.map +1 -1
  83. package/dist/kernel/index.d.ts +2 -0
  84. package/dist/kernel/index.js +2 -0
  85. package/dist/kernel/index.js.map +1 -1
  86. package/dist/kernel/measurement/no-default-contract.d.ts +17 -0
  87. package/dist/kernel/measurement/no-default-contract.js +84 -0
  88. package/dist/kernel/measurement/no-default-contract.js.map +1 -0
  89. package/dist/kernel/searchbackend/engine-search-backend.js +93 -7
  90. package/dist/kernel/searchbackend/engine-search-backend.js.map +1 -1
  91. package/dist/kernel/searchbackend/search-backend.d.ts +11 -1
  92. package/dist/kernel/searchbackend/search-backend.js +66 -5
  93. package/dist/kernel/searchbackend/search-backend.js.map +1 -1
  94. package/dist/kernel/semantic/semantic-engine.js +31 -5
  95. package/dist/kernel/semantic/semantic-engine.js.map +1 -1
  96. package/dist/kernel/semantic/semantic-retrieve-args.d.ts +19 -2
  97. package/dist/kernel/semantic/semantic-retrieve-args.js +81 -7
  98. package/dist/kernel/semantic/semantic-retrieve-args.js.map +1 -1
  99. package/dist/kernel/update/update.d.ts +7 -0
  100. package/dist/kernel/update/update.js +106 -8
  101. package/dist/kernel/update/update.js.map +1 -1
  102. package/dist/mcp/server.js +84 -34
  103. package/dist/mcp/server.js.map +1 -1
  104. package/package.json +3 -2
@@ -1,4 +1,6 @@
1
1
  import { assembleSemanticEngine } from "../kernel/semantic/semantic-engine.js";
2
+ import { assembleCoreSemanticEngineReadOnly, assembleEngineReadOnly, assembleEphemeralCoreSemanticEngine, } from "../kernel/engine/assemble.js";
3
+ import { embeddingConfigPresent } from "../kernel/semantic/semantic-engine.js";
2
4
  import { booleanOption, numberOption, parseSemanticArgs, printJson, semanticQueryOptions, stringOption, targetList, } from "./semantic-args.js";
3
5
  import { startSemanticHttpServer } from "./semantic-http.js";
4
6
  import { semanticUsageText } from "./semantic-usage.js";
@@ -26,6 +28,28 @@ async function withSemanticAdapter(vault, fn) {
26
28
  await engine.dispose();
27
29
  }
28
30
  }
31
+ /**
32
+ * Assemble a read path without creating a vault index. Existing indexes use a
33
+ * SELECT-only engine; a missing index gets an in-memory lexical engine so
34
+ * document reads and first lexical searches remain useful without touching
35
+ * `<vault>/.oms`.
36
+ */
37
+ async function withReadOnlySemanticAdapter(vault, fn) {
38
+ const readOnly = embeddingConfigPresent()
39
+ ? assembleEngineReadOnly({
40
+ vault,
41
+ embeddingProvider: process.env["OMS_EMBEDDING_PROVIDER"],
42
+ embeddingModel: process.env["OMS_EMBEDDING_MODEL"],
43
+ })
44
+ : assembleCoreSemanticEngineReadOnly({ vault });
45
+ const engine = readOnly ?? assembleEphemeralCoreSemanticEngine({ vault });
46
+ try {
47
+ return await fn(engine.adapter);
48
+ }
49
+ finally {
50
+ await engine.dispose();
51
+ }
52
+ }
29
53
  export async function runSemanticCli(options) {
30
54
  const write = options.write ?? ((message) => console.log(message));
31
55
  const writeError = options.writeError ?? ((message) => console.error(message));
@@ -66,7 +90,7 @@ export async function runSemanticCli(options) {
66
90
  });
67
91
  }
68
92
  if (command === "status") {
69
- return withSemanticAdapter(vault, (adapter) => {
93
+ return withReadOnlySemanticAdapter(vault, (adapter) => {
70
94
  const status = adapter.semanticStatus({ vault, index: stringOption(parsed, "index") });
71
95
  printJson(write, status);
72
96
  return Promise.resolve(status.available ? 0 : 1);
@@ -81,7 +105,7 @@ export async function runSemanticCli(options) {
81
105
  }
82
106
  if (command === "query" || command === "search" || command === "vsearch") {
83
107
  const mode = command === "search" ? "search" : command === "vsearch" ? "vsearch" : "query";
84
- return withSemanticAdapter(vault, async (adapter) => {
108
+ return withReadOnlySemanticAdapter(vault, async (adapter) => {
85
109
  const result = await adapter.semanticQuery(semanticQueryOptions(mode, vault, parsed, rest.join(" ")));
86
110
  printJson(write, result);
87
111
  return result.available ? 0 : 1;
@@ -104,7 +128,7 @@ async function runGetCommand(rest, parsed, vault, write, writeError) {
104
128
  writeError("Usage: oms semantic get <target>");
105
129
  return 1;
106
130
  }
107
- return withSemanticAdapter(vault, async (adapter) => {
131
+ return withReadOnlySemanticAdapter(vault, async (adapter) => {
108
132
  const result = await adapter.getDocument({
109
133
  vault,
110
134
  target,
@@ -124,7 +148,7 @@ async function runMultiGetCommand(rest, parsed, vault, write, writeError) {
124
148
  writeError("Usage: oms semantic multi-get <target...>");
125
149
  return 1;
126
150
  }
127
- return withSemanticAdapter(vault, async (adapter) => {
151
+ return withReadOnlySemanticAdapter(vault, async (adapter) => {
128
152
  const result = await adapter.multiGetDocuments({
129
153
  vault,
130
154
  targets: [...targets],
@@ -139,7 +163,7 @@ async function runMultiGetCommand(rest, parsed, vault, write, writeError) {
139
163
  });
140
164
  }
141
165
  async function runCollectionCommand(action, collectionName, parsed, vault, write) {
142
- return withSemanticAdapter(vault, (adapter) => {
166
+ return withReadOnlySemanticAdapter(vault, (adapter) => {
143
167
  const result = adapter.listCollections({ vault, index: stringOption(parsed, "index") });
144
168
  if (!result.available) {
145
169
  printJson(write, result);
@@ -156,7 +180,7 @@ async function runContextCommand(action, parsed, vault, write) {
156
180
  write(semanticUsageText());
157
181
  return 1;
158
182
  }
159
- return withSemanticAdapter(vault, (adapter) => {
183
+ return withReadOnlySemanticAdapter(vault, (adapter) => {
160
184
  const result = adapter.listContexts({ vault, index: stringOption(parsed, "index") });
161
185
  printJson(write, result);
162
186
  return Promise.resolve(result.available ? 0 : 1);
@@ -1 +1 @@
1
- {"version":3,"file":"semantic.js","sourceRoot":"","sources":["../../src/cli/semantic.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"semantic.js","sourceRoot":"","sources":["../../src/cli/semantic.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,12 @@
1
+ import type { EmbeddingModelDescriptor } from "../kernel/engine/embed/model.js";
1
2
  export interface SetupPrompt {
2
3
  question(query: string): Promise<string>;
3
4
  close(): void;
4
5
  }
6
+ export type SetupEmbeddingDescriptor = EmbeddingModelDescriptor & {
7
+ readonly url: string;
8
+ readonly sha256: string;
9
+ };
5
10
  export declare function runSetup(opts: {
6
11
  vault: string;
7
12
  yes: boolean;
@@ -9,4 +14,15 @@ export declare function runSetup(opts: {
9
14
  suggestFields?: boolean;
10
15
  dryRun?: boolean;
11
16
  prompt?: SetupPrompt;
17
+ /**
18
+ * Optional canonical model descriptor. Setup verifies and caches the model
19
+ * outside the vault before writing convention files.
20
+ */
21
+ embeddingDescriptor?: SetupEmbeddingDescriptor | null;
22
+ /** User-level model cache override, primarily for setup automation/tests. */
23
+ embeddingCacheDir?: string;
24
+ /** Explicitly waive installing a default embedding model. */
25
+ embeddingNoDefault?: boolean;
26
+ /** Fetch seam for setup tests; production uses global fetch. */
27
+ embeddingFetchImpl?: typeof fetch;
12
28
  }): Promise<void>;
@@ -5,9 +5,44 @@ import { parseLensDefinitions } from "../kernel/setup/axis.js";
5
5
  import { applySetup, decideNonInteractiveSetup, decideSetup, defaultSetupBinding, inspectSetup, } from "../kernel/setup/service.js";
6
6
  import { isFieldType } from "../kernel/setup/documents.js";
7
7
  import { buildClaudeInstallPlan, printClaudeInstallPlan } from "./claude-install-plan.js";
8
+ import { acquireEmbeddingModel } from "../kernel/engine/embed/model.js";
8
9
  const bundledAssets = resolveBundledAssetPaths();
10
+ function validateSetupEmbeddingDescriptor(descriptor) {
11
+ const context = descriptor.context ?? descriptor.contextLength ?? descriptor.contextTokens;
12
+ const missing = descriptor.dimensions === undefined ||
13
+ context === undefined ||
14
+ descriptor.mrlDim === undefined ||
15
+ !descriptor.normalization?.trim() ||
16
+ !descriptor.prefixScheme?.trim();
17
+ if (missing) {
18
+ throw new Error("Setup embeddingDescriptor is incomplete. dimensions/context/mrlDim/normalization/prefixScheme are required.");
19
+ }
20
+ if (!Number.isInteger(descriptor.dimensions) || descriptor.dimensions <= 0) {
21
+ throw new Error("Setup embeddingDescriptor dimensions must be a positive integer.");
22
+ }
23
+ if (!Number.isInteger(context) || context <= 0) {
24
+ throw new Error("Setup embeddingDescriptor context must be a positive integer.");
25
+ }
26
+ if (!Number.isInteger(descriptor.mrlDim) || descriptor.mrlDim < 0) {
27
+ throw new Error("Setup embeddingDescriptor mrlDim must be a non-negative integer.");
28
+ }
29
+ }
9
30
  export async function runSetup(opts) {
10
- const { vault, yes, installClaude = false, suggestFields = false, dryRun = false } = opts;
31
+ const { vault, yes, installClaude = false, suggestFields = false, dryRun = false, embeddingDescriptor, embeddingCacheDir, embeddingNoDefault, embeddingFetchImpl, } = opts;
32
+ const hasEmbeddingDescriptor = embeddingDescriptor !== undefined && embeddingDescriptor !== null;
33
+ const noDefaultWaived = embeddingNoDefault === true || embeddingDescriptor === null;
34
+ const hasEmbeddingOptions = embeddingDescriptor !== undefined ||
35
+ embeddingCacheDir !== undefined ||
36
+ embeddingNoDefault !== undefined ||
37
+ embeddingFetchImpl !== undefined;
38
+ if (hasEmbeddingDescriptor && embeddingNoDefault === true) {
39
+ throw new Error("Setup embeddingDescriptor and embeddingNoDefault are mutually exclusive.");
40
+ }
41
+ if (hasEmbeddingDescriptor)
42
+ validateSetupEmbeddingDescriptor(embeddingDescriptor);
43
+ if (hasEmbeddingOptions && !hasEmbeddingDescriptor && !noDefaultWaived) {
44
+ throw new Error("Setup requires an embeddingDescriptor or an explicit embeddingNoDefault:true waiver.");
45
+ }
11
46
  const nonInteractive = yes || process.env["OMS_NON_INTERACTIVE"] === "1";
12
47
  const state = await inspectSetup({ vault, ontologyDir: bundledAssets.ontologyDir });
13
48
  let decision;
@@ -74,6 +109,16 @@ export async function runSetup(opts) {
74
109
  }
75
110
  decision = decideSetup(state, { folderBindings, additionalFieldsByConcept: interactiveFieldsByConcept, additionalLensesByConcept: interactiveLensesByConcept });
76
111
  }
112
+ let acquiredModelPath;
113
+ if (!dryRun && hasEmbeddingDescriptor) {
114
+ const acquired = await acquireEmbeddingModel({
115
+ vault,
116
+ cacheDir: embeddingCacheDir,
117
+ descriptor: embeddingDescriptor,
118
+ fetchImpl: embeddingFetchImpl,
119
+ });
120
+ acquiredModelPath = acquired.modelPath;
121
+ }
77
122
  const { copiedFiles, copyError } = await applySetup(decision, { dryRun });
78
123
  if (copyError !== undefined)
79
124
  console.warn("[oms] Could not copy concept files:", copyError);
@@ -82,6 +127,10 @@ export async function runSetup(opts) {
82
127
  console.log(` ${dryRun ? "Would write" : "Written"}: ${path.join(state.omsDir, "taxonomy.yaml")}`);
83
128
  console.log(` Concepts: ${dryRun ? decision.bundledConceptFiles.join(", ") || "(none)" : copiedFiles.join(", ") || "(none)"}`);
84
129
  console.log(` Folders: ${Object.keys(decision.taxonomy.folders).join(", ") || "(none)"}`);
130
+ if (acquiredModelPath !== undefined)
131
+ console.log(` Embedding model: ${acquiredModelPath}`);
132
+ if (noDefaultWaived)
133
+ console.log(" Embedding model: no default (explicit waiver)");
85
134
  console.log(`\nRun "oh-my-second-brain doctor" to validate existing notes.\n`);
86
135
  if (installClaude) {
87
136
  printClaudeInstallPlan(buildClaudeInstallPlan({ vault }));
@@ -1 +1 @@
1
- {"version":3,"file":"setup-command.js","sourceRoot":"","sources":["../../src/cli/setup-command.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"setup-command.js","sourceRoot":"","sources":["../../src/cli/setup-command.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,wBAAwB,EAAE,MAAM,6BAA6B,CAAC;AACvE,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EACL,UAAU,EACV,yBAAyB,EACzB,WAAW,EACX,mBAAmB,EACnB,YAAY,GACb,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAC3D,OAAO,EAAE,sBAAsB,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAC1F,OAAO,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;AAGxE,MAAM,aAAa,GAAG,wBAAwB,EAAE,CAAC;AAYjD,SAAS,gCAAgC,CAAC,UAAoC;IAC5E,MAAM,OAAO,GAAG,UAAU,CAAC,OAAO,IAAI,UAAU,CAAC,aAAa,IAAI,UAAU,CAAC,aAAa,CAAC;IAC3F,MAAM,OAAO,GACX,UAAU,CAAC,UAAU,KAAK,SAAS;QACnC,OAAO,KAAK,SAAS;QACrB,UAAU,CAAC,MAAM,KAAK,SAAS;QAC/B,CAAC,UAAU,CAAC,aAAa,EAAE,IAAI,EAAE;QACjC,CAAC,UAAU,CAAC,YAAY,EAAE,IAAI,EAAE,CAAC;IACnC,IAAI,OAAO,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CACb,6GAA6G,CAC9G,CAAC;IACJ,CAAC;IACD,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,UAAU,CAAC,UAAU,IAAI,CAAC,EAAE,CAAC;QAC3E,MAAM,IAAI,KAAK,CAAC,kEAAkE,CAAC,CAAC;IACtF,CAAC;IACD,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,OAAO,IAAI,CAAC,EAAE,CAAC;QAC/C,MAAM,IAAI,KAAK,CAAC,+DAA+D,CAAC,CAAC;IACnF,CAAC;IACD,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAClE,MAAM,IAAI,KAAK,CAAC,kEAAkE,CAAC,CAAC;IACtF,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,IAkB9B;IACC,MAAM,EACJ,KAAK,EACL,GAAG,EACH,aAAa,GAAG,KAAK,EACrB,aAAa,GAAG,KAAK,EACrB,MAAM,GAAG,KAAK,EACd,mBAAmB,EACnB,iBAAiB,EACjB,kBAAkB,EAClB,kBAAkB,GACnB,GAAG,IAAI,CAAC;IACT,MAAM,sBAAsB,GAAG,mBAAmB,KAAK,SAAS,IAAI,mBAAmB,KAAK,IAAI,CAAC;IACjG,MAAM,eAAe,GAAG,kBAAkB,KAAK,IAAI,IAAI,mBAAmB,KAAK,IAAI,CAAC;IACpF,MAAM,mBAAmB,GACvB,mBAAmB,KAAK,SAAS;QACjC,iBAAiB,KAAK,SAAS;QAC/B,kBAAkB,KAAK,SAAS;QAChC,kBAAkB,KAAK,SAAS,CAAC;IACnC,IAAI,sBAAsB,IAAI,kBAAkB,KAAK,IAAI,EAAE,CAAC;QAC1D,MAAM,IAAI,KAAK,CAAC,0EAA0E,CAAC,CAAC;IAC9F,CAAC;IACD,IAAI,sBAAsB;QAAE,gCAAgC,CAAC,mBAAmB,CAAC,CAAC;IAClF,IAAI,mBAAmB,IAAI,CAAC,sBAAsB,IAAI,CAAC,eAAe,EAAE,CAAC;QACvE,MAAM,IAAI,KAAK,CACb,sFAAsF,CACvF,CAAC;IACJ,CAAC;IACD,MAAM,cAAc,GAAG,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,KAAK,GAAG,CAAC;IACzE,MAAM,KAAK,GAAG,MAAM,YAAY,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,aAAa,CAAC,WAAW,EAAE,CAAC,CAAC;IACpF,IAAI,QAAQ,CAAC;IAEb,IAAI,cAAc,EAAE,CAAC;QACnB,QAAQ,GAAG,yBAAyB,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;IAC7D,CAAC;SAAM,CAAC;QACN,MAAM,EAAE,GAAgB,IAAI,CAAC,MAAM,IAAI,eAAe,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;QACzG,MAAM,cAAc,GAAkC,EAAE,GAAG,CAAC,KAAK,CAAC,gBAAgB,EAAE,OAAO,IAAI,EAAE,CAAC,EAAE,CAAC;QACrG,MAAM,0BAA0B,GAAG,IAAI,GAAG,EAA2B,CAAC;QACtE,MAAM,0BAA0B,GAAG,IAAI,GAAG,EAA0B,CAAC;QACrE,MAAM,YAAY,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC,CAAC;QAE7D,IAAI,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,iEAAiE,CAAC,CAAC;YAC/E,OAAO,CAAC,GAAG,CAAC,uBAAuB,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,QAAQ,IAAI,CAAC,CAAC;YAC5E,KAAK,MAAM,MAAM,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;gBACnC,MAAM,QAAQ,GAAG,mBAAmB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;gBACpD,MAAM,SAAS,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,WAAW,MAAM,eAAe,QAAQ,CAAC,MAAM,KAAK,CAAC,CAAC;gBAC1F,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,EAAE,IAAI,QAAQ,CAAC,MAAM,CAAC;gBACnD,MAAM,cAAc,GAAG,OAAO,QAAQ,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;gBACtF,MAAM,aAAa,GAAG,cAAc;oBAClC,CAAC,CAAC,mBAAmB,cAAc,cAAc,cAAc,oBAAoB;oBACnF,CAAC,CAAC,mBAAmB,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,MAAM,mBAAmB,CAAC;gBAC3E,MAAM,OAAO,GAAG,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;gBAC1D,IAAI,WAA0B,CAAC;gBAC/B,IAAI,OAAO,KAAK,MAAM,IAAI,OAAO,KAAK,EAAE,EAAE,CAAC;oBACzC,WAAW,GAAG,OAAO,KAAK,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,cAAc,IAAI,IAAI,CAAC,CAAC;gBACrE,CAAC;qBAAM,IAAI,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;oBAC7C,WAAW,GAAG,OAAO,CAAC;gBACxB,CAAC;qBAAM,CAAC;oBACN,OAAO,CAAC,IAAI,CAAC,sBAAsB,OAAO,qBAAqB,CAAC,CAAC;oBACjE,WAAW,GAAG,IAAI,CAAC;gBACrB,CAAC;gBACD,cAAc,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC;gBAE1D,MAAM,OAAO,GAAG,KAAK,CAAC,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;gBACnD,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,WAAW,KAAK,IAAI,EAAE,CAAC;oBAC/E,OAAO,CAAC,GAAG,CAAC,sBAAsB,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;oBAC7G,KAAK,MAAM,OAAO,IAAI,OAAO,CAAC,QAAQ;wBAAE,OAAO,CAAC,IAAI,CAAC,0BAA0B,OAAO,EAAE,CAAC,CAAC;oBAC1F,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,+DAA+D,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;oBACxK,MAAM,QAAQ,GAAoB,EAAE,CAAC;oBACrC,KAAK,MAAM,QAAQ,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;wBACtC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC;4BAAE,SAAS;wBAC5C,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,cAAc,QAAQ,CAAC,IAAI,WAAW,QAAQ,CAAC,IAAI,KAAK,CAAC,CAAC;wBAC5F,MAAM,WAAW,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,cAAc,QAAQ,CAAC,IAAI,mBAAmB,CAAC,CAAC;wBACtF,MAAM,cAAc,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,cAAc,QAAQ,CAAC,IAAI,sBAAsB,QAAQ,CAAC,IAAI,KAAK,CAAC,CAAC;wBAC9G,MAAM,aAAa,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;wBACrC,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,WAAW,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,EAAE,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,cAAc,CAAC,IAAI,EAAE,IAAI,YAAY,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;oBAC3N,CAAC;oBACD,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC;wBAAE,0BAA0B,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,GAAG,CAAC,0BAA0B,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,EAAE,GAAG,QAAQ,CAAC,CAAC,CAAC;oBAC5I,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,MAAM,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;oBAC3J,MAAM,MAAM,GAAG,oBAAoB,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,yDAAyD,CAAC,EAAE,WAAW,CAAC,CAAC;oBAC/H,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC;wBAAE,0BAA0B,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,GAAG,CAAC,0BAA0B,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC;gBAC1I,CAAC;YACH,CAAC;QACH,CAAC;gBAAS,CAAC;YACT,EAAE,CAAC,KAAK,EAAE,CAAC;QACb,CAAC;QACD,QAAQ,GAAG,WAAW,CAAC,KAAK,EAAE,EAAE,cAAc,EAAE,yBAAyB,EAAE,0BAA0B,EAAE,yBAAyB,EAAE,0BAA0B,EAAE,CAAC,CAAC;IAClK,CAAC;IAED,IAAI,iBAAqC,CAAC;IAC1C,IAAI,CAAC,MAAM,IAAI,sBAAsB,EAAE,CAAC;QACtC,MAAM,QAAQ,GAAG,MAAM,qBAAqB,CAAC;YAC3C,KAAK;YACL,QAAQ,EAAE,iBAAiB;YAC3B,UAAU,EAAE,mBAAmB;YAC/B,SAAS,EAAE,kBAAkB;SAC9B,CAAC,CAAC;QACH,iBAAiB,GAAG,QAAQ,CAAC,SAAS,CAAC;IACzC,CAAC;IACD,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,GAAG,MAAM,UAAU,CAAC,QAAQ,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;IAC1E,IAAI,SAAS,KAAK,SAAS;QAAE,OAAO,CAAC,IAAI,CAAC,qCAAqC,EAAE,SAAS,CAAC,CAAC;IAC5F,OAAO,CAAC,GAAG,CAAC,8BAA8B,MAAM,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC;IACvF,OAAO,CAAC,GAAG,CAAC,eAAe,KAAK,EAAE,CAAC,CAAC;IACpC,OAAO,CAAC,GAAG,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,eAAe,CAAC,EAAE,CAAC,CAAC;IACrG,OAAO,CAAC,GAAG,CAAC,eAAe,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,QAAQ,EAAE,CAAC,CAAC;IAChI,OAAO,CAAC,GAAG,CAAC,eAAe,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,QAAQ,EAAE,CAAC,CAAC;IAC5F,IAAI,iBAAiB,KAAK,SAAS;QAAE,OAAO,CAAC,GAAG,CAAC,sBAAsB,iBAAiB,EAAE,CAAC,CAAC;IAC5F,IAAI,eAAe;QAAE,OAAO,CAAC,GAAG,CAAC,iDAAiD,CAAC,CAAC;IACpF,OAAO,CAAC,GAAG,CAAC,iEAAiE,CAAC,CAAC;IAC/E,IAAI,aAAa,EAAE,CAAC;QAClB,sBAAsB,CAAC,sBAAsB,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;QAC1D,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
@@ -0,0 +1,144 @@
1
+ export type ContractAxisKind = "folder" | "field" | "link";
2
+ export type ContractValueType = "text" | "string" | "select" | "number" | "boolean" | "checkbox" | "date" | "datetime" | "list" | "multitext" | "multi" | "tags" | "aliases" | "file";
3
+ export interface ContractAllowedValue {
4
+ readonly value: string;
5
+ readonly intent?: string;
6
+ readonly [key: string]: unknown;
7
+ }
8
+ export type AllowedValue = string | ContractAllowedValue;
9
+ export interface ContractAxis {
10
+ readonly [key: string]: unknown;
11
+ readonly kind: ContractAxisKind;
12
+ readonly key: string;
13
+ readonly type: ContractValueType;
14
+ readonly intent?: string;
15
+ readonly required?: boolean;
16
+ readonly normalize?: "lower" | "trim" | "kebab";
17
+ readonly allowedValues?: readonly AllowedValue[];
18
+ }
19
+ /** Tracked, user-owned frontmatter contract stored at `<vault>/.oms/types.json`. */
20
+ export interface FrontmatterContract {
21
+ readonly [key: string]: unknown;
22
+ readonly version: number;
23
+ readonly intent?: string;
24
+ readonly axes: readonly ContractAxis[];
25
+ /** Type declarations keyed by a field/property name. */
26
+ readonly types: Readonly<Record<string, ContractValueType>>;
27
+ /** Closed vocabularies keyed by a field/property name. */
28
+ readonly allowedValues: Readonly<Record<string, readonly AllowedValue[]>>;
29
+ }
30
+ export interface ObsidianTypeAuthority {
31
+ readonly types: Readonly<Record<string, ContractValueType>>;
32
+ readonly source: string;
33
+ }
34
+ /** Parse and validate a JSON contract. Malformed contracts always throw. */
35
+ export declare function parseContract(input: string | unknown): FrontmatterContract;
36
+ /** Canonical stable JSON representation (two-space indent, trailing newline). */
37
+ export declare function serializeContract(contract: FrontmatterContract): string;
38
+ export declare const CONTRACT_SCHEMA: {
39
+ readonly $schema: "https://json-schema.org/draft/2020-12/schema";
40
+ readonly type: "object";
41
+ readonly additionalProperties: true;
42
+ readonly required: readonly ["version", "axes", "types", "allowedValues"];
43
+ readonly properties: {
44
+ readonly version: {
45
+ readonly type: "integer";
46
+ readonly minimum: 1;
47
+ };
48
+ readonly intent: {
49
+ readonly type: "string";
50
+ readonly minLength: 1;
51
+ };
52
+ readonly axes: {
53
+ readonly type: "array";
54
+ readonly items: {
55
+ readonly type: "object";
56
+ readonly additionalProperties: true;
57
+ readonly required: readonly ["kind", "key", "type"];
58
+ readonly properties: {
59
+ readonly kind: {
60
+ readonly enum: readonly ["folder", "field", "link"];
61
+ };
62
+ readonly key: {
63
+ readonly type: "string";
64
+ readonly minLength: 1;
65
+ };
66
+ readonly type: {
67
+ readonly enum: readonly ContractValueType[];
68
+ };
69
+ readonly intent: {
70
+ readonly type: "string";
71
+ readonly minLength: 1;
72
+ };
73
+ readonly required: {
74
+ readonly type: "boolean";
75
+ };
76
+ readonly normalize: {
77
+ readonly enum: readonly ["lower", "trim", "kebab"];
78
+ };
79
+ readonly allowedValues: {
80
+ readonly type: "array";
81
+ readonly items: {
82
+ readonly oneOf: readonly [{
83
+ readonly type: "string";
84
+ }, {
85
+ readonly type: "object";
86
+ readonly additionalProperties: true;
87
+ readonly required: readonly ["value"];
88
+ readonly properties: {
89
+ readonly value: {
90
+ readonly type: "string";
91
+ readonly minLength: 1;
92
+ };
93
+ readonly intent: {
94
+ readonly type: "string";
95
+ readonly minLength: 1;
96
+ };
97
+ };
98
+ }];
99
+ };
100
+ };
101
+ };
102
+ };
103
+ };
104
+ readonly types: {
105
+ readonly type: "object";
106
+ readonly additionalProperties: {
107
+ readonly enum: readonly ContractValueType[];
108
+ };
109
+ };
110
+ readonly allowedValues: {
111
+ readonly type: "object";
112
+ readonly additionalProperties: {
113
+ readonly type: "array";
114
+ readonly items: {
115
+ readonly oneOf: readonly [{
116
+ readonly type: "string";
117
+ }, {
118
+ readonly type: "object";
119
+ readonly additionalProperties: true;
120
+ readonly required: readonly ["value"];
121
+ readonly properties: {
122
+ readonly value: {
123
+ readonly type: "string";
124
+ readonly minLength: 1;
125
+ };
126
+ readonly intent: {
127
+ readonly type: "string";
128
+ readonly minLength: 1;
129
+ };
130
+ };
131
+ }];
132
+ };
133
+ };
134
+ };
135
+ };
136
+ };
137
+ /** Read the tracked JSON contract. Legacy YAML files are deliberately ignored. */
138
+ export declare function loadContract(input: string, options?: {
139
+ readonly obsidianTypes?: boolean;
140
+ }): Promise<FrontmatterContract | null>;
141
+ /** Read `.obsidian/types.json` through one adapter; this function never writes. */
142
+ export declare function loadObsidianTypes(input: string): Promise<ObsidianTypeAuthority | null>;
143
+ /** Persist a validated contract to `.oms/types.json`; no YAML is migrated. */
144
+ export declare function writeContract(input: string, contract: FrontmatterContract): Promise<void>;