oh-my-second-brain 0.3.0 → 0.6.2

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 (110) 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 +10 -0
  6. package/CHANGELOG-cli.md +11 -0
  7. package/CHANGELOG-kernel.md +31 -0
  8. package/CHANGELOG-mcp.md +12 -0
  9. package/CHANGELOG-vendors.md +6 -0
  10. package/CHANGELOG.md +35 -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 +17 -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/conventions/note-exclude.d.ts +14 -0
  33. package/dist/kernel/conventions/note-exclude.js +95 -0
  34. package/dist/kernel/conventions/note-exclude.js.map +1 -0
  35. package/dist/kernel/engine/assemble.d.ts +22 -1
  36. package/dist/kernel/engine/assemble.js +202 -19
  37. package/dist/kernel/engine/assemble.js.map +1 -1
  38. package/dist/kernel/engine/axes/store.d.ts +90 -0
  39. package/dist/kernel/engine/axes/store.js +422 -0
  40. package/dist/kernel/engine/axes/store.js.map +1 -0
  41. package/dist/kernel/engine/conventions/vault-lint.d.ts +7 -2
  42. package/dist/kernel/engine/conventions/vault-lint.js +7 -21
  43. package/dist/kernel/engine/conventions/vault-lint.js.map +1 -1
  44. package/dist/kernel/engine/embed/identity.d.ts +14 -4
  45. package/dist/kernel/engine/embed/identity.js +33 -1
  46. package/dist/kernel/engine/embed/identity.js.map +1 -1
  47. package/dist/kernel/engine/embed/model.d.ts +134 -0
  48. package/dist/kernel/engine/embed/model.js +302 -0
  49. package/dist/kernel/engine/embed/model.js.map +1 -0
  50. package/dist/kernel/engine/embed/provider.d.ts +36 -5
  51. package/dist/kernel/engine/embed/provider.js +240 -103
  52. package/dist/kernel/engine/embed/provider.js.map +1 -1
  53. package/dist/kernel/engine/embed/store.d.ts +5 -1
  54. package/dist/kernel/engine/embed/store.js +136 -26
  55. package/dist/kernel/engine/embed/store.js.map +1 -1
  56. package/dist/kernel/engine/embed/sync.d.ts +53 -0
  57. package/dist/kernel/engine/embed/sync.js +489 -59
  58. package/dist/kernel/engine/embed/sync.js.map +1 -1
  59. package/dist/kernel/engine/graph/builder.d.ts +9 -5
  60. package/dist/kernel/engine/graph/builder.js +225 -82
  61. package/dist/kernel/engine/graph/builder.js.map +1 -1
  62. package/dist/kernel/engine/graph/node.d.ts +49 -1
  63. package/dist/kernel/engine/graph/node.js +205 -0
  64. package/dist/kernel/engine/graph/node.js.map +1 -1
  65. package/dist/kernel/engine/mcp/facade.d.ts +21 -1
  66. package/dist/kernel/engine/mcp/facade.js +523 -28
  67. package/dist/kernel/engine/mcp/facade.js.map +1 -1
  68. package/dist/kernel/engine/mcp/query-mapper.d.ts +27 -2
  69. package/dist/kernel/engine/mcp/query-mapper.js +157 -12
  70. package/dist/kernel/engine/mcp/query-mapper.js.map +1 -1
  71. package/dist/kernel/engine/mcp/types.d.ts +64 -2
  72. package/dist/kernel/engine/retrieval/dispatcher.d.ts +22 -0
  73. package/dist/kernel/engine/retrieval/dispatcher.js +84 -8
  74. package/dist/kernel/engine/retrieval/dispatcher.js.map +1 -1
  75. package/dist/kernel/engine/retrieval/index.d.ts +2 -1
  76. package/dist/kernel/engine/retrieval/index.js +1 -1
  77. package/dist/kernel/engine/retrieval/index.js.map +1 -1
  78. package/dist/kernel/engine/retrieval/reranker.d.ts +82 -4
  79. package/dist/kernel/engine/retrieval/reranker.js +178 -3
  80. package/dist/kernel/engine/retrieval/reranker.js.map +1 -1
  81. package/dist/kernel/engine/retrieval/rrf.d.ts +10 -2
  82. package/dist/kernel/engine/retrieval/rrf.js +39 -16
  83. package/dist/kernel/engine/retrieval/rrf.js.map +1 -1
  84. package/dist/kernel/engine/tracer.d.ts +13 -0
  85. package/dist/kernel/engine/tracer.js +63 -6
  86. package/dist/kernel/engine/tracer.js.map +1 -1
  87. package/dist/kernel/graph/cache.js +174 -23
  88. package/dist/kernel/graph/cache.js.map +1 -1
  89. package/dist/kernel/index.d.ts +2 -0
  90. package/dist/kernel/index.js +2 -0
  91. package/dist/kernel/index.js.map +1 -1
  92. package/dist/kernel/measurement/no-default-contract.d.ts +17 -0
  93. package/dist/kernel/measurement/no-default-contract.js +84 -0
  94. package/dist/kernel/measurement/no-default-contract.js.map +1 -0
  95. package/dist/kernel/searchbackend/engine-search-backend.js +93 -7
  96. package/dist/kernel/searchbackend/engine-search-backend.js.map +1 -1
  97. package/dist/kernel/searchbackend/search-backend.d.ts +11 -1
  98. package/dist/kernel/searchbackend/search-backend.js +66 -5
  99. package/dist/kernel/searchbackend/search-backend.js.map +1 -1
  100. package/dist/kernel/semantic/semantic-engine.js +31 -5
  101. package/dist/kernel/semantic/semantic-engine.js.map +1 -1
  102. package/dist/kernel/semantic/semantic-retrieve-args.d.ts +19 -2
  103. package/dist/kernel/semantic/semantic-retrieve-args.js +81 -7
  104. package/dist/kernel/semantic/semantic-retrieve-args.js.map +1 -1
  105. package/dist/kernel/update/update.d.ts +7 -0
  106. package/dist/kernel/update/update.js +106 -8
  107. package/dist/kernel/update/update.js.map +1 -1
  108. package/dist/mcp/server.js +84 -34
  109. package/dist/mcp/server.js.map +1 -1
  110. package/package.json +3 -2
@@ -36,11 +36,15 @@ export class EngineSearchBackend {
36
36
  // Typed searches have no plain `query`, but their text is still the caller's
37
37
  // retrieval intent. Preserve it for an explicitly requested reranker.
38
38
  const rerankQuery = normalized.query ?? normalized.searches.map((search) => search.query).join(" ");
39
- const searchCollection = async (collectionPath) => adapter.semanticQuery({
39
+ const searchCollection = async (collectionPath = normalized.collectionPath) => adapter.semanticQuery({
40
40
  vault: this.vault,
41
41
  query: rerankQuery,
42
42
  searches: normalized.searches,
43
- limit: normalized.limit,
43
+ mode: normalized.mode,
44
+ // Collection aggregation applies one global limit after all candidate
45
+ // collections have been merged. Per-collection truncation would make
46
+ // totalCount/cursor and facet counts dependent on collection order.
47
+ limit: normalized.collections.length === 0 ? normalized.limit : undefined,
44
48
  candidateLimit: normalized.candidateLimit,
45
49
  minScore: normalized.minScore,
46
50
  intent: normalized.intent,
@@ -48,20 +52,102 @@ export class EngineSearchBackend {
48
52
  collectionPath,
49
53
  index: normalized.index,
50
54
  rerank: normalized.rerank,
55
+ cursor: normalized.collections.length === 0 ? normalized.cursor : undefined,
56
+ axes: normalized.axes,
51
57
  });
52
58
  if (normalized.collections.length === 0) {
53
59
  return searchCollection();
54
60
  }
55
61
  const results = await Promise.all(normalized.collections.map(searchCollection));
56
62
  const unavailable = results.find((result) => !result.available);
57
- if (unavailable !== undefined)
58
- return unavailable;
59
- const hits = results.flatMap((result) => result.hits)
60
- .sort((left, right) => right.score - left.score);
63
+ if (unavailable !== undefined) {
64
+ return {
65
+ ...unavailable,
66
+ hits: unavailable.hits ?? [],
67
+ totalCount: unavailable.totalCount ?? 0,
68
+ facets: unavailable.facets ?? [],
69
+ cursor: unavailable.cursor ?? null,
70
+ receipt: unavailable.receipt ?? { usedChannels: [], approximated: false, drift: false },
71
+ ...(normalized.intent === undefined && unavailable.intent === undefined
72
+ ? {}
73
+ : { intent: normalized.intent ?? unavailable.intent }),
74
+ };
75
+ }
76
+ const hits = dedupeDocumentHits(results.flatMap((result) => result.hits))
77
+ .sort((left, right) => right.score - left.score || left.path.localeCompare(right.path));
78
+ const totalCount = hits.length;
79
+ const limit = normalized.limit;
80
+ const offset = decodeCursor(normalized.cursor);
81
+ const page = limit === undefined ? hits.slice(offset) : hits.slice(offset, offset + Math.max(0, limit));
82
+ const facets = mergeFacets(results);
83
+ const receipt = mergeReceipts(results);
84
+ const intent = normalized.intent ?? results.find((result) => result.intent !== undefined)?.intent;
85
+ const nextOffset = offset + page.length;
61
86
  return {
62
87
  available: true,
63
- hits: normalized.limit === undefined ? hits : hits.slice(0, normalized.limit),
88
+ hits: page,
89
+ totalCount,
90
+ facets,
91
+ cursor: nextOffset < totalCount ? String(nextOffset) : null,
92
+ ...(intent === undefined ? {} : { intent }),
93
+ receipt,
64
94
  };
65
95
  }
66
96
  }
97
+ function dedupeDocumentHits(hits) {
98
+ const byPath = new Map();
99
+ for (const hit of hits) {
100
+ const prior = byPath.get(hit.path);
101
+ if (prior === undefined) {
102
+ byPath.set(hit.path, hit);
103
+ continue;
104
+ }
105
+ const preferred = hit.score > prior.score ? hit : prior;
106
+ const secondary = preferred === hit ? prior : hit;
107
+ byPath.set(hit.path, {
108
+ ...preferred,
109
+ evidence: {
110
+ lexical: preferred.evidence.lexical || secondary.evidence.lexical,
111
+ vector: preferred.evidence.vector || secondary.evidence.vector,
112
+ },
113
+ });
114
+ }
115
+ return [...byPath.values()];
116
+ }
117
+ function decodeCursor(cursor) {
118
+ if (cursor === undefined || cursor.trim() === "")
119
+ return 0;
120
+ const offset = Number(cursor);
121
+ return Number.isSafeInteger(offset) ? offset : 0;
122
+ }
123
+ function mergeFacets(results) {
124
+ const merged = new Map();
125
+ for (const result of results) {
126
+ for (const facet of result.facets ?? []) {
127
+ const key = `${facet.axis}\u0000${facet.key ?? ""}\u0000${facet.value.trim().toLocaleLowerCase()}`;
128
+ const prior = merged.get(key);
129
+ if (prior === undefined) {
130
+ merged.set(key, { ...facet });
131
+ }
132
+ else {
133
+ merged.set(key, { ...prior, count: prior.count + facet.count });
134
+ }
135
+ }
136
+ }
137
+ return [...merged.values()].sort((left, right) => left.axis.localeCompare(right.axis)
138
+ || (left.key ?? "").localeCompare(right.key ?? "")
139
+ || left.value.localeCompare(right.value));
140
+ }
141
+ function mergeReceipts(results) {
142
+ const used = new Set();
143
+ let approximated = false;
144
+ let drift = false;
145
+ for (const result of results) {
146
+ for (const channel of result.receipt?.usedChannels ?? [])
147
+ used.add(channel);
148
+ approximated ||= result.receipt?.approximated ?? false;
149
+ drift ||= result.receipt?.drift ?? false;
150
+ }
151
+ return { usedChannels: [...used], approximated, drift };
152
+ }
67
153
  //# sourceMappingURL=engine-search-backend.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"engine-search-backend.js","sourceRoot":"","sources":["../../../src/kernel/searchbackend/engine-search-backend.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"engine-search-backend.js","sourceRoot":"","sources":["../../../src/kernel/searchbackend/engine-search-backend.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import type { McpSemanticQueryResult, McpSemanticSearchMode, McpSemanticTypedSearch } from "../engine/mcp/types.js";
1
+ import type { McpSemanticQueryAxes, McpSemanticQueryResult, McpSemanticSearchMode, McpSemanticTypedSearch } from "../engine/mcp/types.js";
2
2
  /**
3
3
  * Every public spelling accepted for a semantic query.
4
4
  *
@@ -21,12 +21,19 @@ export interface SearchRequest {
21
21
  readonly intent?: string;
22
22
  readonly collection?: string;
23
23
  readonly collections?: readonly string[];
24
+ /** Vault-relative path prefix that constrains retrieval candidates. */
25
+ readonly collectionPath?: string;
24
26
  readonly index?: string;
27
+ /** Opaque offset cursor returned by a previous query. */
28
+ readonly cursor?: string;
29
+ /** Optional model-free axis narrowing shared with the MCP facade. */
30
+ readonly axes?: McpSemanticQueryAxes;
25
31
  }
26
32
  export interface NormalizedSearchRequest {
27
33
  /** Plain natural-language query retained for an optional reranker. */
28
34
  readonly query?: string;
29
35
  readonly searches: readonly McpSemanticTypedSearch[];
36
+ readonly mode?: McpSemanticSearchMode;
30
37
  readonly limit?: number;
31
38
  readonly candidateLimit?: number;
32
39
  readonly rerank?: boolean;
@@ -34,7 +41,10 @@ export interface NormalizedSearchRequest {
34
41
  readonly intent?: string;
35
42
  readonly collection?: string;
36
43
  readonly collections: readonly string[];
44
+ readonly collectionPath?: string;
37
45
  readonly index?: string;
46
+ readonly cursor?: string;
47
+ readonly axes?: McpSemanticQueryAxes;
38
48
  }
39
49
  export declare class InvalidSearchRequestError extends Error {
40
50
  constructor(message: string);
@@ -7,14 +7,38 @@ export class InvalidSearchRequestError extends Error {
7
7
  const searchTypes = ["lex", "vec", "hyde"];
8
8
  /** Normalize all public semantic-query spellings before backend selection. */
9
9
  export function normalizeSearchRequest(request) {
10
+ if (request === null || typeof request !== "object" || Array.isArray(request)) {
11
+ throw new InvalidSearchRequestError("search request must be an object");
12
+ }
10
13
  const query = typeof request.query === "string" && request.query.trim() !== ""
11
14
  ? request.query.trim()
12
15
  : undefined;
13
- const searches = Array.isArray(request.searches) && request.searches.length > 0
14
- ? request.searches
16
+ const hasQueryProperty = Object.prototype.hasOwnProperty.call(request, "query");
17
+ if (request.query !== undefined && typeof request.query !== "string") {
18
+ throw new InvalidSearchRequestError('"query" must be a string');
19
+ }
20
+ if (request.mode !== undefined && request.mode !== "query" && request.mode !== "search" && request.mode !== "vsearch") {
21
+ throw new InvalidSearchRequestError(`Unknown query mode "${String(request.mode)}"`);
22
+ }
23
+ if (request.searches !== undefined && !Array.isArray(request.searches)) {
24
+ throw new InvalidSearchRequestError('"searches" must be an array');
25
+ }
26
+ const searches = request.searches?.length
27
+ ? request.searches.map((search) => {
28
+ if (search === null ||
29
+ typeof search !== "object" ||
30
+ (search.type !== "lex" && search.type !== "vec" && search.type !== "hyde") ||
31
+ typeof search.query !== "string") {
32
+ throw new InvalidSearchRequestError('Each "searches" item must contain a lex, vec, or hyde type and string query');
33
+ }
34
+ return search;
35
+ })
15
36
  : [];
16
37
  const shorthands = searchTypes.flatMap((type) => {
17
38
  const value = request[type];
39
+ if (value !== undefined && typeof value !== "string") {
40
+ throw new InvalidSearchRequestError(`"${type}" must be a string`);
41
+ }
18
42
  return typeof value === "string" && value.trim() !== "" ? [{ type, query: value.trim() }] : [];
19
43
  });
20
44
  const hasExplicitSearches = searches.length > 0 || shorthands.length > 0;
@@ -25,17 +49,51 @@ export function normalizeSearchRequest(request) {
25
49
  throw new InvalidSearchRequestError(`'mode: ${request.mode}' and explicit typed searches are contradictory; supply typed searches or a mode, not both`);
26
50
  }
27
51
  if (query === undefined && !hasExplicitSearches) {
28
- throw new InvalidSearchRequestError("provide either 'query' or a non-empty typed search");
52
+ // An explicit empty query is the portable overview spelling. Keep a
53
+ // missing property invalid so malformed SearchBackend calls still fail
54
+ // loudly while MCP/CLI can intentionally request an overview.
55
+ if (!hasQueryProperty) {
56
+ throw new InvalidSearchRequestError("provide either 'query' or a non-empty typed search");
57
+ }
29
58
  }
30
59
  if (request.mode !== undefined && query === undefined) {
31
60
  throw new InvalidSearchRequestError("'mode' requires a plain 'query'");
32
61
  }
33
- const collections = (request.collections ?? []).filter((collection) => collection.trim() !== "");
62
+ if (request.collections !== undefined && !Array.isArray(request.collections)) {
63
+ throw new InvalidSearchRequestError('"collections" must be an array');
64
+ }
65
+ const collections = [...new Set((request.collections ?? [])
66
+ .map((collection) => {
67
+ if (typeof collection !== "string") {
68
+ throw new InvalidSearchRequestError('"collections" items must be strings');
69
+ }
70
+ return collection;
71
+ })
72
+ .map((collection) => collection.trim())
73
+ .filter((collection) => collection !== ""))];
74
+ if (request.limit !== undefined && (!Number.isFinite(request.limit) || request.limit < 0)) {
75
+ throw new InvalidSearchRequestError('"limit" must be a finite non-negative number');
76
+ }
77
+ if (request.cursor !== undefined) {
78
+ if (typeof request.cursor !== "string" || (request.cursor !== "" && !/^\d+$/u.test(request.cursor))) {
79
+ throw new InvalidSearchRequestError('"cursor" must be a non-negative integer offset');
80
+ }
81
+ if (request.cursor !== "" && !Number.isSafeInteger(Number(request.cursor))) {
82
+ throw new InvalidSearchRequestError('"cursor" must be a safe integer offset');
83
+ }
84
+ }
34
85
  return {
35
86
  query,
36
87
  searches: hasExplicitSearches
37
88
  ? [...searches, ...shorthands]
38
- : [{ type: request.mode === "vsearch" ? "vec" : "lex", query: query }],
89
+ : query === undefined
90
+ ? []
91
+ : request.mode === "vsearch"
92
+ ? [{ type: "vec", query }]
93
+ : request.mode === "query" || request.mode === "search"
94
+ ? [{ type: "lex", query }, { type: "vec", query }]
95
+ : [{ type: "lex", query }],
96
+ mode: request.mode,
39
97
  limit: request.limit ?? 10,
40
98
  candidateLimit: request.candidateLimit,
41
99
  rerank: request.rerank ?? false,
@@ -43,7 +101,10 @@ export function normalizeSearchRequest(request) {
43
101
  intent: request.intent,
44
102
  collection: request.collection,
45
103
  collections,
104
+ collectionPath: request.collectionPath,
46
105
  index: request.index,
106
+ cursor: request.cursor,
107
+ axes: request.axes,
47
108
  };
48
109
  }
49
110
  //# sourceMappingURL=search-backend.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"search-backend.js","sourceRoot":"","sources":["../../../src/kernel/searchbackend/search-backend.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"search-backend.js","sourceRoot":"","sources":["../../../src/kernel/searchbackend/search-backend.ts"],"names":[],"mappings":"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"}
@@ -17,18 +17,44 @@
17
17
  * file-based reads work without a model.
18
18
  */
19
19
  import { assembleCoreSemanticEngine, assembleEngine, } from "../engine/assemble.js";
20
+ import { resolveEmbeddingModel } from "../engine/embed/model.js";
20
21
  /** True when both canonical embedding-config env vars are set (ADR-007). */
21
22
  export function embeddingConfigPresent() {
22
- return Boolean(process.env["OMS_EMBEDDING_PROVIDER"] && process.env["OMS_EMBEDDING_MODEL"]);
23
+ return resolveEmbeddingModel().available;
23
24
  }
24
25
  function embeddingConfig(vault) {
26
+ const resolved = resolveEmbeddingModel();
27
+ const descriptor = resolved.descriptor;
25
28
  return {
26
29
  vault,
27
- ...(process.env["OMS_EMBEDDING_PROVIDER"]
28
- ? { embeddingProvider: process.env["OMS_EMBEDDING_PROVIDER"] }
30
+ ...(resolved.available && resolved.provider !== undefined
31
+ ? { embeddingProvider: resolved.provider }
29
32
  : {}),
30
- ...(process.env["OMS_EMBEDDING_MODEL"]
31
- ? { embeddingModel: process.env["OMS_EMBEDDING_MODEL"] }
33
+ ...(resolved.available && resolved.model !== undefined
34
+ ? { embeddingModel: resolved.modelPath ?? resolved.model }
35
+ : {}),
36
+ // Keep the setup descriptor intact as it crosses the semantic assembly
37
+ // seam. Flattening only provider/model loses width, context, MRL, and
38
+ // normalization metadata needed by the provider, store, and MCP sync.
39
+ ...(descriptor !== undefined
40
+ ? {
41
+ embeddingDescriptor: descriptor,
42
+ ...(descriptor.dimensions !== undefined ? { embeddingDimensions: descriptor.dimensions } : {}),
43
+ ...(descriptor.context !== undefined ? { embeddingContext: descriptor.context } : {}),
44
+ ...(descriptor.contextLength !== undefined
45
+ ? { embeddingContextLength: descriptor.contextLength }
46
+ : {}),
47
+ ...(descriptor.contextTokens !== undefined
48
+ ? { embeddingContextTokens: descriptor.contextTokens }
49
+ : {}),
50
+ ...(descriptor.mrlDim !== undefined ? { embeddingMrlDim: descriptor.mrlDim } : {}),
51
+ ...(descriptor.normalization !== undefined
52
+ ? { embeddingNormalization: descriptor.normalization }
53
+ : {}),
54
+ ...(descriptor.prefixScheme !== undefined
55
+ ? { embeddingPrefixScheme: descriptor.prefixScheme }
56
+ : {}),
57
+ }
32
58
  : {}),
33
59
  };
34
60
  }
@@ -1 +1 @@
1
- {"version":3,"file":"semantic-engine.js","sourceRoot":"","sources":["../../../src/kernel/semantic/semantic-engine.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EACL,0BAA0B,EAC1B,cAAc,GAEf,MAAM,uBAAuB,CAAC;AAG/B,4EAA4E;AAC5E,MAAM,UAAU,sBAAsB;IACpC,OAAO,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC,CAAC;AAC9F,CAAC;AAED,SAAS,eAAe,CAAC,KAAa;IACpC,OAAO;QACL,KAAK;QACL,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC;YACvC,CAAC,CAAC,EAAE,iBAAiB,EAAE,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC,EAAE;YAC9D,CAAC,CAAC,EAAE,CAAC;QACP,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC;YACpC,CAAC,CAAC,EAAE,cAAc,EAAE,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,EAAE;YACxD,CAAC,CAAC,EAAE,CAAC;KACR,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,0BAA0B,CAAC,KAAa,EAAE,QAAmB;IAC3E,OAAO,cAAc,CAAC,EAAE,GAAG,eAAe,CAAC,KAAK,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC;AACjE,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,sBAAsB,CAAC,KAAa,EAAE,QAAmB;IACvE,OAAO,sBAAsB,EAAE;QAC7B,CAAC,CAAC,cAAc,CAAC,EAAE,GAAG,eAAe,CAAC,KAAK,CAAC,EAAE,QAAQ,EAAE,CAAC;QACzD,CAAC,CAAC,0BAA0B,CAAC,EAAE,GAAG,eAAe,CAAC,KAAK,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC;AAC1E,CAAC"}
1
+ {"version":3,"file":"semantic-engine.js","sourceRoot":"","sources":["../../../src/kernel/semantic/semantic-engine.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  import type { MorningRetrieveOptions } from "../search/morning.js";
2
- import type { SemanticEmbeddingSyncOptions, SemanticGetOptions, SemanticMultiGetOptions, SemanticSearchMode } from "../search/semantic-contract.js";
2
+ import type { SemanticEmbeddingSyncOptions, SemanticGetOptions, SemanticMultiGetOptions, SemanticSearchFormat, SemanticSearchMode, SemanticTypedSearch } from "../search/semantic-contract.js";
3
+ import type { McpSemanticQueryAxes } from "../engine/mcp/types.js";
3
4
  export type ParseResult<T> = {
4
5
  readonly ok: true;
5
6
  readonly value: T;
@@ -11,16 +12,32 @@ export declare function semanticOptionsFromArgs(args: Record<string, unknown> |
11
12
  export declare function embeddingSyncOptionsFromArgs(vault: string, args: Record<string, unknown> | undefined): SemanticEmbeddingSyncOptions;
12
13
  export declare function semanticQueryOptionsFromArgs(vault: string, args: Record<string, unknown> | undefined): {
13
14
  vault: string;
14
- query: string;
15
+ query: string | undefined;
15
16
  collection: string | undefined;
17
+ collections: readonly string[] | undefined;
18
+ collectionPath: string | undefined;
16
19
  mode: SemanticSearchMode | undefined;
20
+ searches: SemanticTypedSearch[] | undefined;
17
21
  limit: number | undefined;
18
22
  minScore: number | undefined;
19
23
  intent: string | undefined;
20
24
  lex: string | undefined;
21
25
  vec: string | undefined;
22
26
  hyde: string | undefined;
27
+ all: boolean | undefined;
28
+ format: SemanticSearchFormat | undefined;
29
+ full: boolean | undefined;
30
+ lineNumbers: boolean | undefined;
31
+ fullPath: boolean | undefined;
32
+ chunkStrategy: string | undefined;
23
33
  index: string | undefined;
34
+ candidateLimit: number | undefined;
35
+ rerank: boolean | undefined;
36
+ noRerank: boolean | undefined;
37
+ cursor: string | undefined;
38
+ count: boolean | undefined;
39
+ facets: boolean | undefined;
40
+ axes: McpSemanticQueryAxes | undefined;
24
41
  };
25
42
  export declare function semanticStatusOptionsFromArgs(vault: string, args: Record<string, unknown> | undefined): {
26
43
  vault: string;
@@ -19,6 +19,36 @@ function stringArrayArg(args, key) {
19
19
  return undefined;
20
20
  return value;
21
21
  }
22
+ /**
23
+ * Preserve the closed query-axis object for the engine to validate. Runtime
24
+ * MCP input is untyped; retaining unknown keys here lets the query adapter
25
+ * reject them loudly instead of silently broadening the result set.
26
+ *
27
+ * Internal callers may still provide top-level axis keys; they are folded into
28
+ * the same `axes` object as the canonical nested form.
29
+ */
30
+ function queryAxesArg(args) {
31
+ const nested = args?.["axes"];
32
+ if (nested !== undefined && !isRecord(nested)) {
33
+ // Preserve the malformed value so the engine's closed-axis validator can
34
+ // reject it loudly rather than silently broadening the query.
35
+ return nested;
36
+ }
37
+ if (nested !== undefined) {
38
+ const axes = { ...nested };
39
+ for (const key of ["folder", "field", "link"]) {
40
+ if (args?.[key] !== undefined)
41
+ axes[key] = args[key];
42
+ }
43
+ return axes;
44
+ }
45
+ const axes = {};
46
+ for (const key of ["folder", "field", "link"]) {
47
+ if (args?.[key] !== undefined)
48
+ axes[key] = args[key];
49
+ }
50
+ return Object.keys(axes).length > 0 ? axes : undefined;
51
+ }
22
52
  function semanticSearchMode(value) {
23
53
  return value === "query" || value === "search" || value === "vsearch" ? value : undefined;
24
54
  }
@@ -36,18 +66,27 @@ function semanticTypedSearchType(value) {
36
66
  }
37
67
  function semanticSearchesArg(args) {
38
68
  const value = args?.["semanticSearches"];
39
- if (!Array.isArray(value))
69
+ if (value === undefined)
40
70
  return undefined;
71
+ if (!Array.isArray(value)) {
72
+ throw new Error('Argument "semanticSearches" must be an array.');
73
+ }
41
74
  const searches = [];
42
75
  for (const item of value) {
43
- if (!isRecord(item))
44
- continue;
76
+ if (!isRecord(item)) {
77
+ throw new Error('Each "semanticSearches" item must be an object.');
78
+ }
45
79
  const type = semanticTypedSearchType(stringArg(item, "type"));
46
80
  const query = stringArg(item, "query");
47
- if (type && query)
48
- searches.push({ type, query });
81
+ if (type === undefined || query === undefined) {
82
+ throw new Error('Each "semanticSearches" item requires a lex, vec, or hyde type and string query.');
83
+ }
84
+ searches.push({ type, query });
49
85
  }
50
- return searches.length > 0 ? searches : undefined;
86
+ // An explicitly supplied empty array is meaningful: it is the caller's
87
+ // request to use the normal query/mode path, not an excuse to discard the
88
+ // field while rebuilding options.
89
+ return searches;
51
90
  }
52
91
  export function semanticOptionsFromArgs(args) {
53
92
  return {
@@ -97,16 +136,51 @@ export function embeddingSyncOptionsFromArgs(vault, args) {
97
136
  export function semanticQueryOptionsFromArgs(vault, args) {
98
137
  return {
99
138
  vault,
100
- query: stringArg(args, "query") ?? "",
139
+ query: stringArg(args, "query"),
101
140
  collection: stringArg(args, "collection"),
141
+ collections: stringArrayArg(args, "collections"),
142
+ collectionPath: stringArg(args, "collectionPath"),
102
143
  mode: semanticSearchMode(stringArg(args, "mode")),
144
+ searches: (() => {
145
+ const value = args?.["searches"];
146
+ if (value === undefined)
147
+ return undefined;
148
+ if (!Array.isArray(value))
149
+ throw new Error('Argument "searches" must be an array.');
150
+ const searches = [];
151
+ for (const item of value) {
152
+ if (!isRecord(item)) {
153
+ throw new Error('Each "searches" item must be an object.');
154
+ }
155
+ const type = semanticTypedSearchType(stringArg(item, "type"));
156
+ const query = stringArg(item, "query");
157
+ if (type === undefined || query === undefined) {
158
+ throw new Error('Each "searches" item requires a lex, vec, or hyde type and string query.');
159
+ }
160
+ searches.push({ type, query });
161
+ }
162
+ return searches;
163
+ })(),
103
164
  limit: numberArg(args, "limit"),
104
165
  minScore: numberArg(args, "minScore"),
105
166
  intent: stringArg(args, "intent"),
106
167
  lex: stringArg(args, "lex"),
107
168
  vec: stringArg(args, "vec"),
108
169
  hyde: stringArg(args, "hyde"),
170
+ all: booleanArg(args, "all"),
171
+ format: semanticSearchFormat(stringArg(args, "format")),
172
+ full: booleanArg(args, "full"),
173
+ lineNumbers: booleanArg(args, "lineNumbers"),
174
+ fullPath: booleanArg(args, "fullPath"),
175
+ chunkStrategy: stringArg(args, "chunkStrategy"),
109
176
  index: stringArg(args, "index"),
177
+ candidateLimit: numberArg(args, "candidateLimit"),
178
+ rerank: booleanArg(args, "rerank"),
179
+ noRerank: booleanArg(args, "noRerank"),
180
+ cursor: stringArg(args, "cursor"),
181
+ count: booleanArg(args, "count"),
182
+ facets: booleanArg(args, "facets"),
183
+ axes: queryAxesArg(args),
110
184
  };
111
185
  }
112
186
  export function semanticStatusOptionsFromArgs(vault, args) {
@@ -1 +1 @@
1
- {"version":3,"file":"semantic-retrieve-args.js","sourceRoot":"","sources":["../../../src/kernel/semantic/semantic-retrieve-args.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"semantic-retrieve-args.js","sourceRoot":"","sources":["../../../src/kernel/semantic/semantic-retrieve-args.ts"],"names":[],"mappings":"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"}
@@ -22,6 +22,13 @@ export interface RunUpdateOptions {
22
22
  readonly check?: boolean;
23
23
  readonly dryRun?: boolean;
24
24
  readonly yes?: boolean;
25
+ /**
26
+ * Whether this invocation has an interactive TTY available for confirmation.
27
+ * Callers that do not provide this option remain non-interactive.
28
+ */
29
+ readonly interactive?: boolean;
30
+ /** Confirmation hook used by the CLI and deterministic tests. */
31
+ readonly confirm?: () => boolean | Promise<boolean>;
25
32
  readonly executeExternal?: boolean;
26
33
  readonly timeoutMs?: number;
27
34
  readonly runner?: UpdateRunner;