@oka-core/reason 0.2.11 → 0.2.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/client.d.ts +53 -2
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +50 -3
- package/dist/tools/read.d.ts.map +1 -1
- package/dist/tools/read.js +78 -2
- package/package.json +1 -1
package/dist/client.d.ts
CHANGED
|
@@ -115,6 +115,52 @@ export interface SemanticSearchResponse {
|
|
|
115
115
|
results: SemanticSearchResult[];
|
|
116
116
|
total: number;
|
|
117
117
|
}
|
|
118
|
+
export interface HybridSearchOptions {
|
|
119
|
+
repo?: string;
|
|
120
|
+
limit?: number;
|
|
121
|
+
min_confidence?: number;
|
|
122
|
+
min_similarity?: number;
|
|
123
|
+
rerank?: boolean;
|
|
124
|
+
file_patterns?: string;
|
|
125
|
+
visibility?: "user_repo" | "account_wide" | "user_private";
|
|
126
|
+
mode?: "hybrid" | "bm25_only" | "vector_only";
|
|
127
|
+
}
|
|
128
|
+
export interface HybridResultScores {
|
|
129
|
+
final_score: number;
|
|
130
|
+
bm25_score: number | null;
|
|
131
|
+
vector_similarity: number | null;
|
|
132
|
+
rrf_score: number;
|
|
133
|
+
feature_score: number;
|
|
134
|
+
rerank_score: number | null;
|
|
135
|
+
}
|
|
136
|
+
export interface HybridResultItem {
|
|
137
|
+
id: string;
|
|
138
|
+
summary: string;
|
|
139
|
+
detailed_description?: string;
|
|
140
|
+
tags: string[];
|
|
141
|
+
file_patterns: string[];
|
|
142
|
+
category: string;
|
|
143
|
+
confidence: number;
|
|
144
|
+
evidence_count: number;
|
|
145
|
+
suggested_action?: string;
|
|
146
|
+
status: string;
|
|
147
|
+
scores: HybridResultScores;
|
|
148
|
+
matching_strategies: string[];
|
|
149
|
+
}
|
|
150
|
+
export interface HybridPipelineMeta {
|
|
151
|
+
bm25_candidates: number;
|
|
152
|
+
vector_candidates: number;
|
|
153
|
+
fused_candidates: number;
|
|
154
|
+
after_dedup: number;
|
|
155
|
+
pipeline_stages: string[];
|
|
156
|
+
elapsed_ms: number;
|
|
157
|
+
}
|
|
158
|
+
export interface HybridSearchResponse {
|
|
159
|
+
query: string;
|
|
160
|
+
results: HybridResultItem[];
|
|
161
|
+
total_candidates: number;
|
|
162
|
+
pipeline: HybridPipelineMeta;
|
|
163
|
+
}
|
|
118
164
|
/**
|
|
119
165
|
* Unified HTTP client for Oka Reason API.
|
|
120
166
|
*
|
|
@@ -147,8 +193,8 @@ export declare class OkaClient {
|
|
|
147
193
|
getContext(topic: string, options?: ContextQueryOptions): Promise<ContextResponse>;
|
|
148
194
|
query(params: Record<string, string | undefined>): Promise<QueryResult>;
|
|
149
195
|
/**
|
|
150
|
-
* Query
|
|
151
|
-
* GET /api/reasoning/learnings
|
|
196
|
+
* Query learnings with rich filtering.
|
|
197
|
+
* GET /api/reasoning/learnings
|
|
152
198
|
*/
|
|
153
199
|
getLearnings(params?: EnhancedLearningParams): Promise<PaginatedLearnings>;
|
|
154
200
|
/**
|
|
@@ -166,6 +212,11 @@ export declare class OkaClient {
|
|
|
166
212
|
* GET /api/learnings/semantic/:query
|
|
167
213
|
*/
|
|
168
214
|
semanticSearch(query: string, options?: SemanticSearchOptions): Promise<SemanticSearchResponse>;
|
|
215
|
+
/**
|
|
216
|
+
* Hybrid search combining BM25 + vector + RRF fusion.
|
|
217
|
+
* GET /api/learnings/query/:input
|
|
218
|
+
*/
|
|
219
|
+
hybridSearch(query: string, options?: HybridSearchOptions): Promise<HybridSearchResponse>;
|
|
169
220
|
/**
|
|
170
221
|
* Trigger a consolidation run.
|
|
171
222
|
* POST /api/reasoning/consolidate
|
package/dist/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
package/dist/client.js
CHANGED
|
@@ -110,8 +110,8 @@ export class OkaClient {
|
|
|
110
110
|
}
|
|
111
111
|
// ─── Learning queries ───────────────────────────────────────────
|
|
112
112
|
/**
|
|
113
|
-
* Query
|
|
114
|
-
* GET /api/reasoning/learnings
|
|
113
|
+
* Query learnings with rich filtering.
|
|
114
|
+
* GET /api/reasoning/learnings
|
|
115
115
|
*/
|
|
116
116
|
async getLearnings(params) {
|
|
117
117
|
const searchParams = new URLSearchParams();
|
|
@@ -123,7 +123,12 @@ export class OkaClient {
|
|
|
123
123
|
}
|
|
124
124
|
}
|
|
125
125
|
}
|
|
126
|
-
return this.get(`/api/reasoning/learnings
|
|
126
|
+
return this.get(`/api/reasoning/learnings?${searchParams}`).catch(() => ({
|
|
127
|
+
learnings: [],
|
|
128
|
+
total: 0,
|
|
129
|
+
limit: 50,
|
|
130
|
+
offset: 0,
|
|
131
|
+
}));
|
|
127
132
|
}
|
|
128
133
|
/**
|
|
129
134
|
* Get learning statistics.
|
|
@@ -181,6 +186,48 @@ export class OkaClient {
|
|
|
181
186
|
params.set("visibility", options.visibility);
|
|
182
187
|
return this.get(`/api/learnings/semantic/${encodeURIComponent(query)}?${params}`).catch(() => ({ query, results: [], total: 0 }));
|
|
183
188
|
}
|
|
189
|
+
// ─── Hybrid search (unified pipeline) ───────────────────────────
|
|
190
|
+
/**
|
|
191
|
+
* Hybrid search combining BM25 + vector + RRF fusion.
|
|
192
|
+
* GET /api/learnings/query/:input
|
|
193
|
+
*/
|
|
194
|
+
async hybridSearch(query, options) {
|
|
195
|
+
const params = new URLSearchParams();
|
|
196
|
+
// repo scoping: same logic as semanticSearch
|
|
197
|
+
if (options?.repo)
|
|
198
|
+
params.set("repo", options.repo);
|
|
199
|
+
else if (!options?.visibility ||
|
|
200
|
+
options.visibility === "user_repo" ||
|
|
201
|
+
options.visibility === "user_private")
|
|
202
|
+
params.set("repo", this.repo);
|
|
203
|
+
if (options?.limit)
|
|
204
|
+
params.set("limit", String(options.limit));
|
|
205
|
+
if (options?.min_confidence)
|
|
206
|
+
params.set("min_confidence", String(options.min_confidence));
|
|
207
|
+
if (options?.min_similarity)
|
|
208
|
+
params.set("min_similarity", String(options.min_similarity));
|
|
209
|
+
if (options?.file_patterns)
|
|
210
|
+
params.set("file_patterns", options.file_patterns);
|
|
211
|
+
if (options?.visibility)
|
|
212
|
+
params.set("visibility", options.visibility);
|
|
213
|
+
if (options?.rerank)
|
|
214
|
+
params.set("rerank", "true");
|
|
215
|
+
if (options?.mode)
|
|
216
|
+
params.set("mode", options.mode);
|
|
217
|
+
return this.get(`/api/learnings/query/${encodeURIComponent(query)}?${params}`).catch(() => ({
|
|
218
|
+
query,
|
|
219
|
+
results: [],
|
|
220
|
+
total_candidates: 0,
|
|
221
|
+
pipeline: {
|
|
222
|
+
bm25_candidates: 0,
|
|
223
|
+
vector_candidates: 0,
|
|
224
|
+
fused_candidates: 0,
|
|
225
|
+
after_dedup: 0,
|
|
226
|
+
pipeline_stages: [],
|
|
227
|
+
elapsed_ms: 0,
|
|
228
|
+
},
|
|
229
|
+
}));
|
|
230
|
+
}
|
|
184
231
|
// ─── Consolidation ──────────────────────────────────────────────
|
|
185
232
|
/**
|
|
186
233
|
* Trigger a consolidation run.
|
package/dist/tools/read.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"read.d.ts","sourceRoot":"","sources":["../../src/tools/read.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEzE,OAAO,KAAK,EACV,SAAS,
|
|
1
|
+
{"version":3,"file":"read.d.ts","sourceRoot":"","sources":["../../src/tools/read.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEzE,OAAO,KAAK,EACV,SAAS,EAKV,MAAM,cAAc,CAAC;AA+HtB;;;;;;;;;;;;GAYG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,GAAG,IAAI,CAopB5E"}
|
package/dist/tools/read.js
CHANGED
|
@@ -42,6 +42,52 @@ function formatContextLearnings(topic, learnings, totalMatched) {
|
|
|
42
42
|
}
|
|
43
43
|
return lines.join("\n");
|
|
44
44
|
}
|
|
45
|
+
function formatHybridResults(query, results, totalCandidates, pipeline) {
|
|
46
|
+
if (results.length === 0) {
|
|
47
|
+
return `No knowledge found for query "${query}".`;
|
|
48
|
+
}
|
|
49
|
+
const lines = [
|
|
50
|
+
`## Knowledge: ${query}`,
|
|
51
|
+
``,
|
|
52
|
+
`> ${totalCandidates} candidate(s), showing top ${results.length} | Pipeline: ${pipeline.pipeline_stages.join(" → ")} (${pipeline.elapsed_ms}ms)`,
|
|
53
|
+
``,
|
|
54
|
+
];
|
|
55
|
+
for (const r of results) {
|
|
56
|
+
const finalPct = (r.scores.final_score * 100).toFixed(0);
|
|
57
|
+
const confPct = (r.confidence * 100).toFixed(0);
|
|
58
|
+
lines.push(`### ${r.summary}`);
|
|
59
|
+
const scoreParts = [
|
|
60
|
+
`**Score:** ${finalPct}%`,
|
|
61
|
+
`**Confidence:** ${confPct}%`,
|
|
62
|
+
];
|
|
63
|
+
if (r.scores.bm25_score != null)
|
|
64
|
+
scoreParts.push(`BM25: ${r.scores.bm25_score.toFixed(2)}`);
|
|
65
|
+
if (r.scores.vector_similarity != null)
|
|
66
|
+
scoreParts.push(`Vector: ${(r.scores.vector_similarity * 100).toFixed(0)}%`);
|
|
67
|
+
if (r.scores.rerank_score != null)
|
|
68
|
+
scoreParts.push(`Rerank: ${(r.scores.rerank_score * 100).toFixed(0)}%`);
|
|
69
|
+
scoreParts.push(`**Category:** ${r.category}`);
|
|
70
|
+
lines.push(scoreParts.join(" | "));
|
|
71
|
+
if (r.evidence_count > 1) {
|
|
72
|
+
lines.push(`**Evidence:** ${r.evidence_count} source(s)`);
|
|
73
|
+
}
|
|
74
|
+
if (r.detailed_description) {
|
|
75
|
+
lines.push(`\n${r.detailed_description}`);
|
|
76
|
+
}
|
|
77
|
+
if (r.suggested_action) {
|
|
78
|
+
lines.push(`\n**Suggested action:** ${r.suggested_action}`);
|
|
79
|
+
}
|
|
80
|
+
if (r.file_patterns?.length > 0) {
|
|
81
|
+
lines.push(`**Related files:** ${r.file_patterns.join(", ")}`);
|
|
82
|
+
}
|
|
83
|
+
if (r.tags?.length > 0) {
|
|
84
|
+
lines.push(`**Tags:** ${r.tags.join(", ")}`);
|
|
85
|
+
}
|
|
86
|
+
lines.push(`*Matched by: ${r.matching_strategies.join(" + ")}*`);
|
|
87
|
+
lines.push("");
|
|
88
|
+
}
|
|
89
|
+
return lines.join("\n");
|
|
90
|
+
}
|
|
45
91
|
// ─── Tool registration ─────────────────────────────────────────────
|
|
46
92
|
/**
|
|
47
93
|
* Register read tools on the MCP server.
|
|
@@ -82,7 +128,18 @@ export function registerReadTools(server, client) {
|
|
|
82
128
|
.describe("Visibility scope: user_repo (default), account_wide (cross-repo), user_private"),
|
|
83
129
|
}, async (params) => {
|
|
84
130
|
try {
|
|
85
|
-
// Try
|
|
131
|
+
// 1. Try hybrid search first (BM25 + vector + RRF)
|
|
132
|
+
const hybridResult = await client.hybridSearch(params.topic, {
|
|
133
|
+
file_patterns: params.file_patterns,
|
|
134
|
+
limit: params.limit,
|
|
135
|
+
min_confidence: params.min_confidence,
|
|
136
|
+
visibility: params.visibility,
|
|
137
|
+
});
|
|
138
|
+
if (hybridResult.results.length > 0) {
|
|
139
|
+
const text = formatHybridResults(params.topic, hybridResult.results, hybridResult.total_candidates, hybridResult.pipeline);
|
|
140
|
+
return { content: [{ type: "text", text }] };
|
|
141
|
+
}
|
|
142
|
+
// 2. Fall back to legacy context endpoint
|
|
86
143
|
const contextResult = await client.getContext(params.topic, {
|
|
87
144
|
file_patterns: params.file_patterns,
|
|
88
145
|
limit: params.limit,
|
|
@@ -93,7 +150,7 @@ export function registerReadTools(server, client) {
|
|
|
93
150
|
const text = formatContextLearnings(params.topic, contextResult.learnings, contextResult.total_matched);
|
|
94
151
|
return { content: [{ type: "text", text }] };
|
|
95
152
|
}
|
|
96
|
-
// Fall back to raw event query
|
|
153
|
+
// 3. Fall back to raw event query
|
|
97
154
|
const rawResult = await client.query({
|
|
98
155
|
area: params.topic,
|
|
99
156
|
});
|
|
@@ -470,6 +527,25 @@ export function registerReadTools(server, client) {
|
|
|
470
527
|
"user_private (personal learnings only)"),
|
|
471
528
|
}, async (params) => {
|
|
472
529
|
try {
|
|
530
|
+
// Try hybrid search first (BM25 + vector + RRF fusion)
|
|
531
|
+
const hybridResult = await client
|
|
532
|
+
.hybridSearch(params.query, {
|
|
533
|
+
limit: params.limit,
|
|
534
|
+
min_similarity: params.min_similarity,
|
|
535
|
+
visibility: params.visibility,
|
|
536
|
+
})
|
|
537
|
+
.catch(() => null);
|
|
538
|
+
if (hybridResult && hybridResult.results.length > 0) {
|
|
539
|
+
return {
|
|
540
|
+
content: [
|
|
541
|
+
{
|
|
542
|
+
type: "text",
|
|
543
|
+
text: formatHybridResults(params.query, hybridResult.results, hybridResult.total_candidates, hybridResult.pipeline),
|
|
544
|
+
},
|
|
545
|
+
],
|
|
546
|
+
};
|
|
547
|
+
}
|
|
548
|
+
// Fall back to legacy semantic search
|
|
473
549
|
const result = await client.semanticSearch(params.query, {
|
|
474
550
|
limit: params.limit,
|
|
475
551
|
min_similarity: params.min_similarity,
|