@squadrules/mcp 5.0.0-beta.1 → 5.0.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 (162) hide show
  1. package/README.md +23 -20
  2. package/dist/.tsbuildinfo +1 -1
  3. package/dist/config/embedding-fastembed.d.ts +9 -0
  4. package/dist/config/embedding-fastembed.d.ts.map +1 -0
  5. package/dist/config/embedding-fastembed.js +20 -0
  6. package/dist/config/embedding-fastembed.js.map +1 -0
  7. package/dist/config.d.ts +8 -4
  8. package/dist/config.d.ts.map +1 -1
  9. package/dist/config.js +10 -4
  10. package/dist/config.js.map +1 -1
  11. package/dist/embed-docs/mem/adapter-migration.md +1 -1
  12. package/dist/embed-docs/mem/bulk-insert-adapters-via-cli.md +1 -1
  13. package/dist/embed-docs/mem/challenge-type-guide.md +1 -1
  14. package/dist/embed-docs/mem/create-new-protocol.md +1 -1
  15. package/dist/embed-docs/mem/phase-critic-guide.md +1 -1
  16. package/dist/embed-docs/mem/phase-critic.md +1 -1
  17. package/dist/embed-docs/mem/protocol-linking-guide.md +1 -1
  18. package/dist/embed-docs/mem/refine-search.md +1 -1
  19. package/dist/embed-docs/mem/skill-format-guide.md +1 -1
  20. package/dist/http/http-api-snapshot.d.ts.map +1 -1
  21. package/dist/http/http-api-snapshot.js +13 -1
  22. package/dist/http/http-api-snapshot.js.map +1 -1
  23. package/dist/http/http-health-routes.d.ts.map +1 -1
  24. package/dist/http/http-health-routes.js +6 -3
  25. package/dist/http/http-health-routes.js.map +1 -1
  26. package/dist/index.d.ts.map +1 -1
  27. package/dist/index.js +15 -5
  28. package/dist/index.js.map +1 -1
  29. package/dist/resources/embedded-mcp-resources.js +9 -9
  30. package/dist/resources/embedded-mcp-resources.js.map +1 -1
  31. package/dist/resources/mem-resources-boot.d.ts.map +1 -1
  32. package/dist/resources/mem-resources-boot.js +2 -28
  33. package/dist/resources/mem-resources-boot.js.map +1 -1
  34. package/dist/resources/mem-uuid-mapper.d.ts.map +1 -1
  35. package/dist/resources/mem-uuid-mapper.js +8 -23
  36. package/dist/resources/mem-uuid-mapper.js.map +1 -1
  37. package/dist/server.d.ts.map +1 -1
  38. package/dist/server.js +9 -7
  39. package/dist/server.js.map +1 -1
  40. package/dist/services/embedding/fastembed-provider.d.ts +2 -0
  41. package/dist/services/embedding/fastembed-provider.d.ts.map +1 -0
  42. package/dist/services/embedding/fastembed-provider.js +78 -0
  43. package/dist/services/embedding/fastembed-provider.js.map +1 -0
  44. package/dist/services/embedding/health.d.ts.map +1 -1
  45. package/dist/services/embedding/health.js +99 -96
  46. package/dist/services/embedding/health.js.map +1 -1
  47. package/dist/services/embedding/provider-audit.d.ts +15 -0
  48. package/dist/services/embedding/provider-audit.d.ts.map +1 -0
  49. package/dist/services/embedding/provider-audit.js +28 -0
  50. package/dist/services/embedding/provider-audit.js.map +1 -0
  51. package/dist/services/embedding/providers.d.ts +2 -1
  52. package/dist/services/embedding/providers.d.ts.map +1 -1
  53. package/dist/services/embedding/providers.js +21 -23
  54. package/dist/services/embedding/providers.js.map +1 -1
  55. package/dist/services/embedding/service.d.ts +2 -2
  56. package/dist/services/embedding/service.d.ts.map +1 -1
  57. package/dist/services/embedding/service.js +13 -16
  58. package/dist/services/embedding/service.js.map +1 -1
  59. package/dist/services/execution-trace-store.d.ts +5 -29
  60. package/dist/services/execution-trace-store.d.ts.map +1 -1
  61. package/dist/services/execution-trace-store.js +10 -2
  62. package/dist/services/execution-trace-store.js.map +1 -1
  63. package/dist/services/memory/store.d.ts +23 -0
  64. package/dist/services/memory/store.d.ts.map +1 -1
  65. package/dist/services/memory/store.js +110 -3
  66. package/dist/services/memory/store.js.map +1 -1
  67. package/dist/services/memory-store.d.ts +5 -0
  68. package/dist/services/memory-store.d.ts.map +1 -1
  69. package/dist/services/memory-store.js +5 -0
  70. package/dist/services/memory-store.js.map +1 -1
  71. package/dist/services/qdrant/service.d.ts.map +1 -1
  72. package/dist/services/qdrant/service.js +11 -2
  73. package/dist/services/qdrant/service.js.map +1 -1
  74. package/dist/services/vector-store/IExecutionTraceStore.d.ts +25 -0
  75. package/dist/services/vector-store/IExecutionTraceStore.d.ts.map +1 -0
  76. package/dist/services/vector-store/IExecutionTraceStore.js +2 -0
  77. package/dist/services/vector-store/IExecutionTraceStore.js.map +1 -0
  78. package/dist/services/vector-store/IVectorRecordStore.d.ts +58 -0
  79. package/dist/services/vector-store/IVectorRecordStore.d.ts.map +1 -0
  80. package/dist/services/vector-store/IVectorRecordStore.js +2 -0
  81. package/dist/services/vector-store/IVectorRecordStore.js.map +1 -0
  82. package/dist/services/vector-store/commit-retry.d.ts +21 -0
  83. package/dist/services/vector-store/commit-retry.d.ts.map +1 -0
  84. package/dist/services/vector-store/commit-retry.js +58 -0
  85. package/dist/services/vector-store/commit-retry.js.map +1 -0
  86. package/dist/services/vector-store/embedded-store-singleton.d.ts +12 -0
  87. package/dist/services/vector-store/embedded-store-singleton.d.ts.map +1 -0
  88. package/dist/services/vector-store/embedded-store-singleton.js +17 -0
  89. package/dist/services/vector-store/embedded-store-singleton.js.map +1 -0
  90. package/dist/services/vector-store/lancedb/LanceExecutionTraceStore.d.ts +28 -0
  91. package/dist/services/vector-store/lancedb/LanceExecutionTraceStore.d.ts.map +1 -0
  92. package/dist/services/vector-store/lancedb/LanceExecutionTraceStore.js +222 -0
  93. package/dist/services/vector-store/lancedb/LanceExecutionTraceStore.js.map +1 -0
  94. package/dist/services/vector-store/lancedb/LanceVectorRecordStore.d.ts +77 -0
  95. package/dist/services/vector-store/lancedb/LanceVectorRecordStore.d.ts.map +1 -0
  96. package/dist/services/vector-store/lancedb/LanceVectorRecordStore.js +136 -0
  97. package/dist/services/vector-store/lancedb/LanceVectorRecordStore.js.map +1 -0
  98. package/dist/services/vector-store/lancedb/lance-records-engine.d.ts +41 -0
  99. package/dist/services/vector-store/lancedb/lance-records-engine.d.ts.map +1 -0
  100. package/dist/services/vector-store/lancedb/lance-records-engine.js +102 -0
  101. package/dist/services/vector-store/lancedb/lance-records-engine.js.map +1 -0
  102. package/dist/services/vector-store/lancedb/lance-records-mutations.d.ts +22 -0
  103. package/dist/services/vector-store/lancedb/lance-records-mutations.d.ts.map +1 -0
  104. package/dist/services/vector-store/lancedb/lance-records-mutations.js +211 -0
  105. package/dist/services/vector-store/lancedb/lance-records-mutations.js.map +1 -0
  106. package/dist/services/vector-store/lancedb/lance-records-reads.d.ts +64 -0
  107. package/dist/services/vector-store/lancedb/lance-records-reads.d.ts.map +1 -0
  108. package/dist/services/vector-store/lancedb/lance-records-reads.js +237 -0
  109. package/dist/services/vector-store/lancedb/lance-records-reads.js.map +1 -0
  110. package/dist/services/vector-store/lancedb/lance-records-schema.d.ts +48 -0
  111. package/dist/services/vector-store/lancedb/lance-records-schema.d.ts.map +1 -0
  112. package/dist/services/vector-store/lancedb/lance-records-schema.js +159 -0
  113. package/dist/services/vector-store/lancedb/lance-records-schema.js.map +1 -0
  114. package/dist/services/vector-store/lancedb/lance-records-search.d.ts +30 -0
  115. package/dist/services/vector-store/lancedb/lance-records-search.d.ts.map +1 -0
  116. package/dist/services/vector-store/lancedb/lance-records-search.js +112 -0
  117. package/dist/services/vector-store/lancedb/lance-records-search.js.map +1 -0
  118. package/dist/services/vector-store/lancedb/lance-records-write-artifact.d.ts +11 -0
  119. package/dist/services/vector-store/lancedb/lance-records-write-artifact.d.ts.map +1 -0
  120. package/dist/services/vector-store/lancedb/lance-records-write-artifact.js +121 -0
  121. package/dist/services/vector-store/lancedb/lance-records-write-artifact.js.map +1 -0
  122. package/dist/services/vector-store/lancedb/lance-records-write-helpers.d.ts +52 -0
  123. package/dist/services/vector-store/lancedb/lance-records-write-helpers.d.ts.map +1 -0
  124. package/dist/services/vector-store/lancedb/lance-records-write-helpers.js +216 -0
  125. package/dist/services/vector-store/lancedb/lance-records-write-helpers.js.map +1 -0
  126. package/dist/services/vector-store/lancedb/lance-records-writes.d.ts +21 -0
  127. package/dist/services/vector-store/lancedb/lance-records-writes.d.ts.map +1 -0
  128. package/dist/services/vector-store/lancedb/lance-records-writes.js +294 -0
  129. package/dist/services/vector-store/lancedb/lance-records-writes.js.map +1 -0
  130. package/dist/services/vector-store/lancedb-connection.d.ts +12 -0
  131. package/dist/services/vector-store/lancedb-connection.d.ts.map +1 -0
  132. package/dist/services/vector-store/lancedb-connection.js +28 -0
  133. package/dist/services/vector-store/lancedb-connection.js.map +1 -0
  134. package/dist/services/vector-store/types.d.ts +85 -0
  135. package/dist/services/vector-store/types.d.ts.map +1 -0
  136. package/dist/services/vector-store/types.js +2 -0
  137. package/dist/services/vector-store/types.js.map +1 -0
  138. package/dist/tools/artifact-catalog.d.ts.map +1 -1
  139. package/dist/tools/artifact-catalog.js +6 -33
  140. package/dist/tools/artifact-catalog.js.map +1 -1
  141. package/dist/tools/search.d.ts.map +1 -1
  142. package/dist/tools/search.js +6 -20
  143. package/dist/tools/search.js.map +1 -1
  144. package/dist/tools/search_schema.d.ts +1 -1
  145. package/dist/tools/skill-export/enumerate-space-adapters.d.ts +1 -1
  146. package/dist/tools/skill-export/enumerate-space-adapters.d.ts.map +1 -1
  147. package/dist/tools/skill-export/enumerate-space-adapters.js +11 -27
  148. package/dist/tools/skill-export/enumerate-space-adapters.js.map +1 -1
  149. package/dist/tools/spaces.d.ts.map +1 -1
  150. package/dist/tools/spaces.js +2 -15
  151. package/dist/tools/spaces.js.map +1 -1
  152. package/dist/ui/assets/{AccountPage-B0ali9jz.js → AccountPage-BJm56sur.js} +1 -1
  153. package/dist/ui/assets/{ProtocolEditPage-DIySo-F_.js → ProtocolEditPage-mChBe3JY.js} +1 -1
  154. package/dist/ui/assets/{RichTextEditor-uun0UIVc.js → RichTextEditor-Bj6JxHM5.js} +1 -1
  155. package/dist/ui/assets/{SkillBundlePage-DtOlpupj.js → SkillBundlePage-D1OPKJzA.js} +1 -1
  156. package/dist/ui/assets/{index-BlCipoHI.js → index-PouLvU1c.js} +2 -2
  157. package/dist/ui/index.html +1 -1
  158. package/dist/utils/squadrules-user-dirs.d.ts +10 -0
  159. package/dist/utils/squadrules-user-dirs.d.ts.map +1 -1
  160. package/dist/utils/squadrules-user-dirs.js +12 -0
  161. package/dist/utils/squadrules-user-dirs.js.map +1 -1
  162. package/package.json +18 -11
@@ -0,0 +1,294 @@
1
+ /**
2
+ * Lance adapter write path (train/store).
3
+ *
4
+ * Reuses the backend-neutral parsing and build helpers the Qdrant handlers use —
5
+ * `normalizeMarkdownBlob`, `parseFrontmatter`, `buildHeaderMemoryAdapter`,
6
+ * `generateLabel`/`generateTags`/`parseMarkdownStructure`, `deriveDomainTaskType`,
7
+ * `modelStats`, `buildActivationSearchFieldsForMemory` and the batch embedding
8
+ * call with zero-vector fallback — and only swaps the index primitives (dedup,
9
+ * slug mint, similarity guard, upsert) for the Lance `LanceWriteRepo`. The point
10
+ * payload shape is reproduced verbatim from the header/default handlers so a
11
+ * Lance-trained adapter reads, searches and reward-propagates exactly like a
12
+ * Qdrant one. The header (H1/H2) vs default branch mirrors `storeAdapter`.
13
+ */
14
+ import crypto from 'node:crypto';
15
+ import { logger } from '../../../utils/structured-logger.js';
16
+ import { CodeBlockProcessor } from '../../code-block-processor.js';
17
+ import { embeddingService } from '../../embedding/service.js';
18
+ import { getEmbeddingDimension } from '../../embedding/config.js';
19
+ import { bm25Tokenizer } from '../../embedding/bm25-tokenizer.js';
20
+ import { IDGenerator } from '../../id-generator.js';
21
+ import { modelStats } from '../../stats/model-stats.js';
22
+ import { redisCacheService } from '../../redis-cache.js';
23
+ import { memoryStore, memoryAdapterSize } from '../../metrics/memory-metrics.js';
24
+ import { getTenantId, getSpaceContext } from '../../../utils/tenant-context.js';
25
+ import { normalizeMarkdownBlob, generateLabel, generateTags, parseMarkdownStructure } from '../../../utils/memory-store-utils.js';
26
+ import { parseFrontmatter } from '../../../utils/frontmatter.js';
27
+ import { resolveProtocolSlugCandidate } from '../../../utils/protocol-slug.js';
28
+ import { SquadrulesError } from '../../../types/index.js';
29
+ import { getActivationPatternVectorName, getAdapterTitleVectorName, getPrimaryVectorName } from '../../../utils/qdrant-vector-types.js';
30
+ import { buildHeaderMemoryAdapter } from '../../memory/adapter-builder.js';
31
+ import { buildActivationSearchFieldsForMemory } from '../../memory/activation-search-fields.js';
32
+ import { LanceWriteRepo } from './lance-records-write-helpers.js';
33
+ import { LanceArtifactWriter } from './lance-records-write-artifact.js';
34
+ export class LanceRecordWriter {
35
+ engine;
36
+ repo;
37
+ codeBlockProcessor = new CodeBlockProcessor();
38
+ artifactWriter;
39
+ constructor(engine, search) {
40
+ this.engine = engine;
41
+ this.repo = new LanceWriteRepo(engine, search);
42
+ this.artifactWriter = new LanceArtifactWriter(engine, this.repo);
43
+ }
44
+ storeArtifact(content, options) {
45
+ return this.artifactWriter.storeArtifact(content, options);
46
+ }
47
+ async storeAdapter(docs, llmModelId, options = {}) {
48
+ if (!Array.isArray(docs) || docs.length === 0)
49
+ return [];
50
+ const normalizedDocs = docs.map(normalizeMarkdownBlob);
51
+ const now = new Date();
52
+ let docsForDefault = normalizedDocs;
53
+ let effectiveProtocolVersion = options.protocolVersion;
54
+ let parsedSingleDoc;
55
+ if (normalizedDocs.length === 1) {
56
+ const markdownDoc = normalizedDocs[0];
57
+ const parsed = parseFrontmatter(markdownDoc);
58
+ parsedSingleDoc = parsed;
59
+ const docForAdapter = parsed.body.length > 0 ? parsed.body : markdownDoc;
60
+ effectiveProtocolVersion = options.protocolVersion ?? parsed.version;
61
+ const headerMemories = buildHeaderMemoryAdapter(docForAdapter, llmModelId, now, this.codeBlockProcessor);
62
+ if (headerMemories.length > 0) {
63
+ if (effectiveProtocolVersion) {
64
+ for (const m of headerMemories)
65
+ if (m.adapter)
66
+ m.adapter.protocol_version = effectiveProtocolVersion;
67
+ }
68
+ if (parsedSingleDoc?.chainRoot) {
69
+ for (const m of headerMemories)
70
+ if (m.adapter)
71
+ m.adapter.chain_root = parsedSingleDoc.chainRoot;
72
+ }
73
+ const adapterTitle = this.resolveAdapterTitle(headerMemories[0]);
74
+ const slugCand = resolveProtocolSlugCandidate(parsedSingleDoc?.slugRaw !== undefined ? { slugRaw: parsedSingleDoc.slugRaw } : {}, adapterTitle);
75
+ if ('error' in slugCand)
76
+ throw new SquadrulesError(slugCand.message, 'INVALID_SLUG', 400, { message: slugCand.message });
77
+ const titleForSimilarity = (parsedSingleDoc?.title?.trim() || adapterTitle).slice(0, 120);
78
+ await this.repo.checkSimilarAdapterByTitle(titleForSimilarity, options.forceUpdate || false);
79
+ return this.storeHeaderBasedAdapter(headerMemories, llmModelId, options.forceUpdate || false, { slug: slugCand.slug, authorSupplied: slugCand.authorSupplied }, !!options.forkNewAdapter);
80
+ }
81
+ docsForDefault = [docForAdapter];
82
+ }
83
+ const doc0 = docsForDefault[0];
84
+ const struct0 = parseMarkdownStructure(doc0);
85
+ const titleForSimilarity = (parsedSingleDoc?.title?.trim() || struct0.h1 || generateLabel(doc0)).slice(0, 120);
86
+ await this.repo.checkSimilarAdapterByTitle(titleForSimilarity, options.forceUpdate || false);
87
+ return this.storeDefaultAdapter(docsForDefault, llmModelId, now, options.forceUpdate || false, effectiveProtocolVersion, parsedSingleDoc, !!options.forkNewAdapter);
88
+ }
89
+ resolveAdapterTitle(first) {
90
+ const firstLabel = first?.label || 'Knowledge Adapter';
91
+ const explicit = first?.adapter?.name;
92
+ if (explicit && explicit.trim().length > 0)
93
+ return explicit.trim();
94
+ return firstLabel.includes(':') ? firstLabel.split(':')[0].trim() : firstLabel.trim();
95
+ }
96
+ async embedActivation(memories) {
97
+ const vectorSize = getEmbeddingDimension();
98
+ const activationFields = memories.map((m) => buildActivationSearchFieldsForMemory(m));
99
+ const zeros = () => memories.map(() => Array(vectorSize).fill(0));
100
+ try {
101
+ const batch = await embeddingService.generateBatchEmbeddings(activationFields.flatMap((f) => [f.primaryDenseText, f.titleDenseText, f.activationPatternDenseText]));
102
+ const embeddings = batch.embeddings;
103
+ const wrongCount = embeddings.length !== memories.length * 3;
104
+ const wrongDim = embeddings.some((v) => !Array.isArray(v) || v.length !== vectorSize);
105
+ if (wrongCount || wrongDim) {
106
+ logger.warn(`[LanceStore] Embedding shape mismatch (count=${embeddings.length}/${memories.length * 3}); zero vectors`);
107
+ return { primary: zeros(), title: zeros(), activation: zeros() };
108
+ }
109
+ return {
110
+ primary: memories.map((_, i) => embeddings[i * 3]),
111
+ title: memories.map((_, i) => embeddings[i * 3 + 1]),
112
+ activation: memories.map((_, i) => embeddings[i * 3 + 2])
113
+ };
114
+ }
115
+ catch (err) {
116
+ logger.error('[LanceStore] Embedding generation failed; falling back to zero vectors', err);
117
+ return { primary: zeros(), title: zeros(), activation: zeros() };
118
+ }
119
+ }
120
+ vectorNames() {
121
+ const size = getEmbeddingDimension();
122
+ return { primary: getPrimaryVectorName(size), title: getAdapterTitleVectorName(size), activation: getActivationPatternVectorName(size) };
123
+ }
124
+ async storeHeaderBasedAdapter(memories, llmModelId, forceUpdate, slugInput, forkNewAdapter) {
125
+ const adapterTitle = this.resolveAdapterTitle(memories[0]);
126
+ const adapterUuid = forkNewAdapter ? crypto.randomUUID() : IDGenerator.generateAdapterUUIDv5(adapterTitle);
127
+ await this.repo.handleDuplicateAdapter(adapterUuid, forceUpdate);
128
+ const protocolSlug = await this.repo.allocateAdapterSlugForMint(slugInput, adapterUuid);
129
+ const names = this.vectorNames();
130
+ const vectors = await this.embedActivation(memories);
131
+ const activationFields = memories.map((m) => buildActivationSearchFieldsForMemory(m));
132
+ const context = getSpaceContext();
133
+ const spaceId = context.defaultWriteSpaceId;
134
+ const actorId = context.userId || 'system';
135
+ const layerCount = memories.length;
136
+ const points = memories.map((memory, i) => {
137
+ const dtt = this.repo.deriveDomainTaskType(memory.label, memory.text, memory.tags || []);
138
+ const qualityMetadata = modelStats.calculateStepQualityMetadata(memory.label, 'general', dtt.task, dtt.type, memory.tags);
139
+ const fields = activationFields[i];
140
+ const sparse = bm25Tokenizer.tokenize(fields.sparseText);
141
+ const adapter = memory.adapter ?? { id: adapterUuid, name: adapterTitle, layer_index: i + 1, layer_count: layerCount };
142
+ return {
143
+ id: memory.memory_uuid,
144
+ vector: {
145
+ [names.primary]: vectors.primary[i],
146
+ [names.title]: vectors.title[i],
147
+ [names.activation]: vectors.activation[i],
148
+ bm25: { indices: sparse.indices, values: sparse.values }
149
+ },
150
+ payload: {
151
+ space_id: spaceId,
152
+ label: memory.label,
153
+ tags: memory.tags,
154
+ text: memory.text,
155
+ llm_model_id: memory.llm_model_id,
156
+ created_at: memory.created_at,
157
+ created_by: actorId,
158
+ modified_at: memory.created_at,
159
+ modified_by: actorId,
160
+ adapter_name_text: fields.adapterNameText,
161
+ label_text: fields.labelText,
162
+ activation_patterns_text: fields.activationPatternsText,
163
+ tags_text: fields.tagsText,
164
+ inference_contract: memory.inference_contract,
165
+ task: dtt.task,
166
+ type: dtt.type,
167
+ quality_metadata: { step_quality_score: qualityMetadata.step_quality_score, step_quality: qualityMetadata.step_quality },
168
+ adapter: {
169
+ id: adapterUuid,
170
+ name: adapterTitle,
171
+ layer_index: i + 1,
172
+ layer_count: layerCount,
173
+ ...(adapter.protocol_version && { protocol_version: adapter.protocol_version }),
174
+ ...(adapter.activation_patterns && { activation_patterns: adapter.activation_patterns }),
175
+ ...(typeof adapter.reward_signal === 'string' && { reward_signal: adapter.reward_signal }),
176
+ ...(typeof adapter.chain_root === 'string' && adapter.chain_root.length > 0 && { chain_root: adapter.chain_root })
177
+ },
178
+ slug: protocolSlug
179
+ }
180
+ };
181
+ });
182
+ await this.enginePut(points);
183
+ await this.recordContributions(memories);
184
+ return memories;
185
+ }
186
+ async storeDefaultAdapter(normalizedDocs, llmModelId, now, forceUpdate, protocolVersion, parsedFrontmatter, forkNewAdapter) {
187
+ const uuids = normalizedDocs.map(() => crypto.randomUUID());
188
+ const processedDocs = normalizedDocs.map((text) => {
189
+ const codeResult = this.codeBlockProcessor.processMarkdown(text);
190
+ const enhanced = this.codeBlockProcessor.enhanceContentForSearch(text, codeResult);
191
+ return { original: text, enhanced, codeResult };
192
+ });
193
+ if (processedDocs.length === 0)
194
+ return [];
195
+ const firstGeneratedLabel = generateLabel(processedDocs[0].original);
196
+ const adapterUuid = forkNewAdapter ? crypto.randomUUID() : IDGenerator.generateAdapterUUIDv5(firstGeneratedLabel);
197
+ await this.repo.handleDuplicateAdapter(adapterUuid, forceUpdate);
198
+ const slugCand = resolveProtocolSlugCandidate(parsedFrontmatter?.slugRaw !== undefined ? { slugRaw: parsedFrontmatter.slugRaw } : {}, firstGeneratedLabel);
199
+ if ('error' in slugCand)
200
+ throw new SquadrulesError(slugCand.message, 'INVALID_SLUG', 400, { message: slugCand.message });
201
+ const protocolSlug = await this.repo.allocateAdapterSlugForMint({ slug: slugCand.slug, authorSupplied: slugCand.authorSupplied }, adapterUuid);
202
+ const memories = processedDocs.map((processed, index) => {
203
+ const allTags = [...generateTags(processed.original), ...processed.codeResult.allIdentifiers.slice(0, 5)];
204
+ const adapter = { id: adapterUuid, name: firstGeneratedLabel, layer_index: index + 1, layer_count: normalizedDocs.length };
205
+ if (protocolVersion)
206
+ adapter.protocol_version = protocolVersion;
207
+ return {
208
+ memory_uuid: uuids[index],
209
+ label: generateLabel(processed.original),
210
+ tags: allTags,
211
+ text: processed.enhanced,
212
+ llm_model_id: llmModelId,
213
+ created_at: now.toISOString(),
214
+ adapter
215
+ };
216
+ });
217
+ const names = this.vectorNames();
218
+ const vectors = await this.embedActivation(memories);
219
+ const activationFields = memories.map((m) => buildActivationSearchFieldsForMemory(m));
220
+ const context = getSpaceContext();
221
+ const spaceId = context.defaultWriteSpaceId;
222
+ const actorId = context.userId || 'system';
223
+ const points = memories.map((memory, index) => {
224
+ const { task, type } = this.repo.deriveDomainTaskType(memory.label, memory.text, memory.tags || []);
225
+ const qualityMetadata = modelStats.calculateStepQualityMetadata(memory.label, 'general', task, type, memory.tags);
226
+ const fields = activationFields[index];
227
+ const sparse = bm25Tokenizer.tokenize(fields.sparseText);
228
+ const adapter = memory.adapter ?? { id: adapterUuid, name: firstGeneratedLabel, layer_index: index + 1, layer_count: normalizedDocs.length };
229
+ return {
230
+ id: memory.memory_uuid,
231
+ vector: {
232
+ [names.primary]: vectors.primary[index],
233
+ [names.title]: vectors.title[index],
234
+ [names.activation]: vectors.activation[index],
235
+ bm25: { indices: sparse.indices, values: sparse.values }
236
+ },
237
+ payload: {
238
+ space_id: spaceId,
239
+ label: memory.label,
240
+ tags: memory.tags,
241
+ text: memory.text,
242
+ llm_model_id: memory.llm_model_id,
243
+ created_at: memory.created_at,
244
+ created_by: actorId,
245
+ modified_at: memory.created_at,
246
+ modified_by: actorId,
247
+ slug: protocolSlug,
248
+ adapter_name_text: fields.adapterNameText,
249
+ label_text: fields.labelText,
250
+ activation_patterns_text: fields.activationPatternsText,
251
+ tags_text: fields.tagsText,
252
+ inference_contract: memory.inference_contract,
253
+ task,
254
+ type,
255
+ quality_metadata: { step_quality_score: qualityMetadata.step_quality_score, step_quality: qualityMetadata.step_quality },
256
+ adapter: {
257
+ id: adapter.id,
258
+ name: adapter.name,
259
+ layer_index: adapter.layer_index,
260
+ layer_count: adapter.layer_count,
261
+ ...(adapter.protocol_version && { protocol_version: adapter.protocol_version }),
262
+ ...(adapter.activation_patterns && { activation_patterns: adapter.activation_patterns }),
263
+ ...(typeof adapter.reward_signal === 'string' && { reward_signal: adapter.reward_signal })
264
+ }
265
+ }
266
+ };
267
+ });
268
+ await this.enginePut(points);
269
+ await this.recordContributions(memories);
270
+ return memories;
271
+ }
272
+ async enginePut(points) {
273
+ const count = await this.engine.putPoints(points);
274
+ logger.tool('lance-store', 'upsert', `points=${count}`);
275
+ await redisCacheService.invalidateAfterUpdate();
276
+ }
277
+ async recordContributions(memories) {
278
+ const tenantId = getTenantId();
279
+ for (const memory of memories) {
280
+ try {
281
+ const { task, type } = this.repo.deriveDomainTaskType(memory.label, memory.text, memory.tags || []);
282
+ const score = modelStats.calculateQualityScore(memory.label, task, type, memory.tags);
283
+ await modelStats.processContribution(memory.llm_model_id, score, memory.label);
284
+ memoryStore.inc({ quality: score.quality, tenant_id: tenantId });
285
+ if (memory.adapter)
286
+ memoryAdapterSize.observe({ tenant_id: tenantId }, memory.adapter.layer_count);
287
+ }
288
+ catch {
289
+ /* metrics are best-effort */
290
+ }
291
+ }
292
+ }
293
+ }
294
+ //# sourceMappingURL=lance-records-writes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lance-records-writes.js","sourceRoot":"","sources":["../../../../src/services/vector-store/lancedb/lance-records-writes.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ type LanceDbModule = typeof import('@lancedb/lancedb');
2
+ export type LanceConnection = Awaited<ReturnType<LanceDbModule['connect']>>;
3
+ export type LanceTable = Awaited<ReturnType<LanceConnection['openTable']>>;
4
+ /** Resolve the per-user LanceDB directory (derived from the shared config dir). */
5
+ export declare function resolveLanceDbDir(): string;
6
+ /**
7
+ * Open a strong-consistency connection to the embedded store. Reads see other
8
+ * processes' commits; the directory is created on demand by the SDK.
9
+ */
10
+ export declare function openLanceConnection(databaseDir?: string): Promise<LanceConnection>;
11
+ export {};
12
+ //# sourceMappingURL=lancedb-connection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lancedb-connection.d.ts","sourceRoot":"","sources":["../../../src/services/vector-store/lancedb-connection.ts"],"names":[],"mappings":"AAgBA,KAAK,aAAa,GAAG,cAAc,kBAAkB,CAAC,CAAC;AACvD,MAAM,MAAM,eAAe,GAAG,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AAC5E,MAAM,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;AAE3E,mFAAmF;AACnF,wBAAgB,iBAAiB,IAAI,MAAM,CAE1C;AAED;;;GAGG;AACH,wBAAsB,mBAAmB,CAAC,WAAW,GAAE,MAA4B,GAAG,OAAO,CAAC,eAAe,CAAC,CAG7G"}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Strong-consistency connection for the embedded LanceDB store.
3
+ *
4
+ * Each server process opens the shared per-user directory directly (no daemon,
5
+ * no lock). The one property a Qdrant server used to give implicitly - a reader
6
+ * seeing another process's latest commits - must be requested explicitly here:
7
+ * `readConsistencyInterval: 0` makes every read check the latest committed
8
+ * version. Writes are always consistent under MVCC.
9
+ *
10
+ * The SDK is imported lazily inside these functions so that merely loading this
11
+ * module (for example on the Qdrant path, where it is never called) does not
12
+ * pull in native bindings at startup.
13
+ */
14
+ import { join } from 'path';
15
+ import { getSquadrulesConfigDir } from '../../utils/squadrules-user-dirs.js';
16
+ /** Resolve the per-user LanceDB directory (derived from the shared config dir). */
17
+ export function resolveLanceDbDir() {
18
+ return join(getSquadrulesConfigDir(), 'lancedb');
19
+ }
20
+ /**
21
+ * Open a strong-consistency connection to the embedded store. Reads see other
22
+ * processes' commits; the directory is created on demand by the SDK.
23
+ */
24
+ export async function openLanceConnection(databaseDir = resolveLanceDbDir()) {
25
+ const lancedb = await import('@lancedb/lancedb');
26
+ return lancedb.connect(databaseDir, { readConsistencyInterval: 0 });
27
+ }
28
+ //# sourceMappingURL=lancedb-connection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lancedb-connection.js","sourceRoot":"","sources":["../../../src/services/vector-store/lancedb-connection.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,sBAAsB,EAAE,MAAM,qCAAqC,CAAC;AAM7E,mFAAmF;AACnF,MAAM,UAAU,iBAAiB;IAC/B,OAAO,IAAI,CAAC,sBAAsB,EAAE,EAAE,SAAS,CAAC,CAAC;AACnD,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,cAAsB,iBAAiB,EAAE;IACjF,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,CAAC;IACjD,OAAO,OAAO,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,uBAAuB,EAAE,CAAC,EAAE,CAAC,CAAC;AACtE,CAAC"}
@@ -0,0 +1,85 @@
1
+ /**
2
+ * Backend-neutral domain types for the vector-store abstraction.
3
+ *
4
+ * The ports (`IVectorRecordStore`, `IExecutionTraceStore`) and their adapters
5
+ * speak these shapes. Concrete backends (Qdrant points,
6
+ * Lance Arrow rows) are mapped to/from them inside each adapter, so no port
7
+ * leaks a backend client or payload object. This file must not import a
8
+ * backend client library.
9
+ */
10
+ import type { Memory, ExecutionTrace, RewardRecord, TensorValue } from '../../types/memory.js';
11
+ export type { Memory, ExecutionTrace, RewardRecord, TensorValue };
12
+ /** Result of a semantic search; matches the existing `{ memories, scores }` shape. */
13
+ export interface MemorySearchResult {
14
+ readonly memories: Memory[];
15
+ readonly scores: number[];
16
+ }
17
+ /** Options for storing an adapter chain. */
18
+ export interface StoreAdapterOptions {
19
+ readonly forceUpdate?: boolean;
20
+ readonly protocolVersion?: string;
21
+ readonly forkNewAdapter?: boolean;
22
+ }
23
+ /** Options for reading a single memory. `fresh` bypasses any read cache. */
24
+ export interface GetMemoryOptions {
25
+ readonly fresh?: boolean;
26
+ }
27
+ /**
28
+ * One adapter layer as the app consumes it today: point id plus payload.
29
+ * Mirrors the inline `AdapterLayerPoint` the tune tools already use, kept
30
+ * backend-neutral so a LanceDB row can be shaped identically to a Qdrant point.
31
+ */
32
+ export interface LayerRecord {
33
+ readonly uuid: string;
34
+ readonly payload: Memory;
35
+ }
36
+ /** Outcome of resolving an adapter slug to its entry-layer point id. */
37
+ export interface SlugResolveOutcome {
38
+ readonly layerUuid: string | null;
39
+ readonly disambiguation_note?: string;
40
+ }
41
+ /** Outcome of resolving an artifact slug to its point id (null when ambiguous). */
42
+ export interface ArtifactResolveOutcome {
43
+ readonly artifactUuid: string | null;
44
+ readonly disambiguation_note?: string;
45
+ }
46
+ /** Parameters to open an execution (mirrors ExecutionTraceStore.startExecution). */
47
+ export interface StartExecutionParams {
48
+ readonly executionId: string;
49
+ readonly adapterId: string;
50
+ readonly adapterUri: string;
51
+ readonly activationQuery?: string;
52
+ }
53
+ /**
54
+ * Persisted execution record. Relocated here from `execution-trace-store.ts`
55
+ * so the trace port has a neutral home; the Qdrant store re-exports it.
56
+ */
57
+ export interface StoredExecutionTrace {
58
+ execution_id: string;
59
+ adapter_id: string;
60
+ adapter_uri: string;
61
+ activation_query?: string;
62
+ reward?: RewardRecord;
63
+ traces: ExecutionTrace[];
64
+ }
65
+ /** A supervised-fine-tuning pair built from stored traces. Relocated as above. */
66
+ export interface TrainingPair {
67
+ id: string;
68
+ execution_id: string;
69
+ adapter_uri: string;
70
+ layer_uri: string;
71
+ layer_index: number;
72
+ timestamp: string;
73
+ instruction: {
74
+ activation_query?: string;
75
+ tensor_in: Record<string, unknown>;
76
+ layer_instructions: string;
77
+ };
78
+ response: {
79
+ tensor_out?: TensorValue;
80
+ trace?: string;
81
+ raw_solution?: unknown;
82
+ };
83
+ reward?: RewardRecord;
84
+ }
85
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/services/vector-store/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,KAAK,EAAE,MAAM,EAAE,cAAc,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAE/F,YAAY,EAAE,MAAM,EAAE,cAAc,EAAE,YAAY,EAAE,WAAW,EAAE,CAAC;AAElE,sFAAsF;AACtF,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC;IAC5B,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC;CAC3B;AAED,4CAA4C;AAC5C,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC;IAC/B,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,cAAc,CAAC,EAAE,OAAO,CAAC;CACnC;AAED,4EAA4E;AAC5E,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED;;;;GAIG;AACH,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED,wEAAwE;AACxE,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,QAAQ,CAAC,mBAAmB,CAAC,EAAE,MAAM,CAAC;CACvC;AAED,mFAAmF;AACnF,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,QAAQ,CAAC,mBAAmB,CAAC,EAAE,MAAM,CAAC;CACvC;AAED,oFAAoF;AACpF,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;CACnC;AAED;;;GAGG;AACH,MAAM,WAAW,oBAAoB;IACnC,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,MAAM,EAAE,cAAc,EAAE,CAAC;CAC1B;AAED,kFAAkF;AAClF,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE;QACX,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAC1B,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACnC,kBAAkB,EAAE,MAAM,CAAC;KAC5B,CAAC;IACF,QAAQ,EAAE;QACR,UAAU,CAAC,EAAE,WAAW,CAAC;QACzB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,YAAY,CAAC,EAAE,OAAO,CAAC;KACxB,CAAC;IACF,MAAM,CAAC,EAAE,YAAY,CAAC;CACvB"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/services/vector-store/types.ts"],"names":[],"mappings":""}
@@ -1 +1 @@
1
- {"version":3,"file":"artifact-catalog.d.ts","sourceRoot":"","sources":["../../src/tools/artifact-catalog.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAKrE,MAAM,WAAW,uBAAuB;IACtC,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;CACd;AA6DD,wBAAsB,oBAAoB,CACxC,WAAW,EAAE,iBAAiB,EAC9B,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,uBAAuB,EAAE,CAAC,CAgCpC"}
1
+ {"version":3,"file":"artifact-catalog.d.ts","sourceRoot":"","sources":["../../src/tools/artifact-catalog.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAErE,MAAM,WAAW,uBAAuB;IACtC,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;CACd;AAoDD,wBAAsB,oBAAoB,CACxC,WAAW,EAAE,iBAAiB,EAC9B,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,uBAAuB,EAAE,CAAC,CAepC"}
@@ -1,14 +1,3 @@
1
- import { ALLOWED_ARTIFACT_MIMES } from './artifact-mime.js';
2
- import { buildSpaceFilter } from '../utils/space-filter.js';
3
- import { getSearchSpaceIds } from '../utils/tenant-context.js';
4
- function buildArtifactScrollFilter(adapterId) {
5
- return buildSpaceFilter(getSearchSpaceIds(), {
6
- must: [
7
- { key: 'adapter.id', match: { value: adapterId } },
8
- { key: 'content_type', match: { any: [...ALLOWED_ARTIFACT_MIMES] } }
9
- ]
10
- });
11
- }
12
1
  function toArtifactMetadata(point, adapterId) {
13
2
  const payload = (point.payload ?? {});
14
3
  const artifactPayload = (payload['artifact'] ?? {});
@@ -52,30 +41,14 @@ function toArtifactMetadata(point, adapterId) {
52
41
  };
53
42
  }
54
43
  export async function listAdapterArtifacts(memoryStore, adapterId) {
55
- const { client, collection } = memoryStore.getQdrantAccess();
44
+ const records = await memoryStore.listAdapterArtifacts(adapterId);
56
45
  const artifacts = [];
57
- let offset;
58
- do {
59
- const page = await client.scroll(collection, {
60
- filter: buildArtifactScrollFilter(adapterId),
61
- limit: 256,
62
- ...(offset !== undefined ? { offset } : {}),
63
- with_payload: true,
64
- with_vector: false
65
- });
66
- const points = Array.isArray(page?.points) ? page.points : [];
67
- for (const point of points) {
68
- const row = toArtifactMetadata(point, adapterId);
69
- if (row) {
70
- artifacts.push(row);
71
- }
46
+ for (const record of records) {
47
+ const row = toArtifactMetadata({ id: record.uuid, payload: record.payload }, adapterId);
48
+ if (row) {
49
+ artifacts.push(row);
72
50
  }
73
- const nextOffset = page?.next_page_offset;
74
- offset =
75
- typeof nextOffset === 'string' || typeof nextOffset === 'number'
76
- ? nextOffset
77
- : undefined;
78
- } while (offset !== null && offset !== undefined);
51
+ }
79
52
  artifacts.sort((a, b) => a.name.localeCompare(b.name) || a.artifact_uuid.localeCompare(b.artifact_uuid));
80
53
  return artifacts;
81
54
  }
@@ -1 +1 @@
1
- {"version":3,"file":"artifact-catalog.js","sourceRoot":"","sources":["../../src/tools/artifact-catalog.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"artifact-catalog.js","sourceRoot":"","sources":["../../src/tools/artifact-catalog.ts"],"names":[],"mappings":"AAiBA,SAAS,kBAAkB,CAAC,KAAyD,EAAE,SAAiB;IACtG,MAAM,OAAO,GAAG,CAAC,KAAK,CAAC,OAAO,IAAI,EAAE,CAA4B,CAAC;IACjE,MAAM,eAAe,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,EAAE,CAA4B,CAAC;IAC/E,MAAM,KAAK,GAAG,KAAK,CAAC,EAAE,CAAC;IACvB,MAAM,YAAY,GAChB,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACrF,IAAI,CAAC,YAAY;QAAE,OAAO,IAAI,CAAC;IAE/B,MAAM,IAAI,GACR,OAAO,eAAe,CAAC,MAAM,CAAC,KAAK,QAAQ,IAAI,eAAe,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC;QACtF,CAAC,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE;QAChC,CAAC,CAAC,OAAO,OAAO,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC;YAC1E,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE;YACzB,CAAC,CAAC,YAAY,CAAC;IACrB,MAAM,IAAI,GACR,OAAO,eAAe,CAAC,MAAM,CAAC,KAAK,QAAQ,IAAI,eAAe,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC;QACtF,CAAC,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE;QAChC,CAAC,CAAC,YAAY,CAAC;IACnB,MAAM,OAAO,GACX,OAAO,eAAe,CAAC,SAAS,CAAC,KAAK,QAAQ,IAAI,eAAe,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC;QAC5F,CAAC,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE;QACnC,CAAC,CAAC,GAAG,CAAC;IACV,MAAM,MAAM,GAAG,OAAO,eAAe,CAAC,QAAQ,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC9F,MAAM,YAAY,GAChB,OAAO,eAAe,CAAC,eAAe,CAAC,KAAK,QAAQ,IAAI,eAAe,CAAC,eAAe,CAAC,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC;QACxG,CAAC,CAAC,eAAe,CAAC,eAAe,CAAC,CAAC,IAAI,EAAE;QACzC,CAAC,CAAC,IAAI,CAAC;IACX,MAAM,WAAW,GACf,OAAO,OAAO,CAAC,cAAc,CAAC,KAAK,QAAQ,IAAI,OAAO,CAAC,cAAc,CAAC,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC;QACtF,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,IAAI,EAAE;QAChC,CAAC,CAAC,YAAY,CAAC;IACnB,MAAM,aAAa,GAAG,OAAO,CAAC,SAAS,CAA+C,CAAC;IACvF,MAAM,WAAW,GAAG,OAAO,aAAa,EAAE,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;IAExF,OAAO;QACL,aAAa,EAAE,YAAY;QAC3B,UAAU,EAAE,SAAS;QACrB,YAAY,EAAE,WAAW;QACzB,KAAK,EAAE,OAAO,OAAO,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI;QACrE,IAAI;QACJ,OAAO;QACP,IAAI;QACJ,aAAa,EAAE,YAAY;QAC3B,MAAM;QACN,YAAY,EAAE,WAAW;QACzB,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;QACrF,IAAI,EAAE,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE;KACjE,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,WAA8B,EAC9B,SAAiB;IAEjB,MAAM,OAAO,GAAG,MAAM,WAAW,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAC;IAClE,MAAM,SAAS,GAA8B,EAAE,CAAC;IAChD,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,MAAM,GAAG,GAAG,kBAAkB,CAC5B,EAAE,EAAE,EAAE,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,OAA6C,EAAE,EAClF,SAAS,CACV,CAAC;QACF,IAAI,GAAG,EAAE,CAAC;YACR,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACtB,CAAC;IACH,CAAC;IAED,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC;IACzG,OAAO,SAAS,CAAC;AACnB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../src/tools/search.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAkBnE,OAAO,EAAsB,KAAK,WAAW,EAAE,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAmL7F;;;GAGG;AACH,wBAAsB,aAAa,CACjC,WAAW,EAAE,iBAAiB,EAC9B,aAAa,EAAE,aAAa,GAAG,SAAS,EACxC,KAAK,EAAE,WAAW,EAClB,OAAO,CAAC,EAAE;IAAE,UAAU,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,OAAO,CAAC,YAAY,CAAC,KAAK,OAAO,CAAC,YAAY,CAAC,CAAA;CAAE,GACpF,OAAO,CAAC,YAAY,CAAC,CAwDvB"}
1
+ {"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../src/tools/search.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAkBnE,OAAO,EAAsB,KAAK,WAAW,EAAE,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAwK7F;;;GAGG;AACH,wBAAsB,aAAa,CACjC,WAAW,EAAE,iBAAiB,EAC9B,aAAa,EAAE,aAAa,GAAG,SAAS,EACxC,KAAK,EAAE,WAAW,EAClB,OAAO,CAAC,EAAE;IAAE,UAAU,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,OAAO,CAAC,YAAY,CAAC,KAAK,OAAO,CAAC,YAAY,CAAC,CAAA;CAAE,GACpF,OAAO,CAAC,YAAY,CAAC,CAwDvB"}
@@ -6,7 +6,6 @@ import { searchOutputSchema } from './search_schema.js';
6
6
  import { logSearchAnomaly } from '../services/embedding/audit.js';
7
7
  import { structuredLogger } from '../utils/structured-logger.js';
8
8
  import { SQUADRULES_CREATION_FOOTER_NEXT_ACTION, SQUADRULES_CREATION_PROTOCOL_SLUG, SQUADRULES_REFINING_PROTOCOL_SLUG } from '../constants/builtin-search-meta.js';
9
- import { SQUADRULES_APP_SPACE_ID } from '../config.js';
10
9
  import { buildAdapterUri } from './squadrules-uri.js';
11
10
  const CREATION_PROTOCOL_URI = buildAdapterUri(SQUADRULES_CREATION_PROTOCOL_SLUG);
12
11
  const REFINING_PROTOCOL_URI = buildAdapterUri(SQUADRULES_REFINING_PROTOCOL_SLUG);
@@ -77,27 +76,14 @@ async function searchAndBuildCandidates(memoryStore, query, enableGroupCollapse,
77
76
  /** Never throws: footer versions are optional; Qdrant errors must not break search or the error fallback. */
78
77
  async function resolveFooterProtocolVersions(memoryStore) {
79
78
  try {
80
- const { client, collection } = memoryStore.getQdrantAccess();
81
- const slugs = [SQUADRULES_REFINING_PROTOCOL_SLUG, SQUADRULES_CREATION_PROTOCOL_SLUG];
82
- const page = await client.scroll(collection, {
83
- filter: {
84
- must: [
85
- { key: 'slug', match: { any: slugs } },
86
- { key: 'space_id', match: { value: SQUADRULES_APP_SPACE_ID } },
87
- { key: 'adapter.layer_index', match: { value: 1 } }
88
- ]
89
- },
90
- limit: 10,
91
- with_payload: { include: ['slug', 'adapter'] },
92
- with_vector: false
93
- });
79
+ const layers = await memoryStore.findProtocolFooterLayers(SQUADRULES_REFINING_PROTOCOL_SLUG, SQUADRULES_CREATION_PROTOCOL_SLUG);
94
80
  let refine = null;
95
81
  let create = null;
96
- for (const point of page?.points ?? []) {
97
- const payload = (point.payload ?? {});
98
- const slug = typeof payload['slug'] === 'string' ? payload['slug'] : '';
99
- const version = typeof payload['adapter']?.protocol_version === 'string'
100
- ? payload['adapter'].protocol_version
82
+ for (const { payload } of layers) {
83
+ const record = payload;
84
+ const slug = typeof record['slug'] === 'string' ? record['slug'] : '';
85
+ const version = typeof record['adapter']?.protocol_version === 'string'
86
+ ? record['adapter'].protocol_version
101
87
  : null;
102
88
  if (slug === SQUADRULES_REFINING_PROTOCOL_SLUG)
103
89
  refine = version;