@kernel.chat/kbot 3.14.0 → 3.15.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 (34) hide show
  1. package/dist/agent.d.ts.map +1 -1
  2. package/dist/agent.js +19 -3
  3. package/dist/agent.js.map +1 -1
  4. package/dist/cli.js +49 -0
  5. package/dist/cli.js.map +1 -1
  6. package/dist/consultation.d.ts +117 -0
  7. package/dist/consultation.d.ts.map +1 -0
  8. package/dist/consultation.js +388 -0
  9. package/dist/consultation.js.map +1 -0
  10. package/dist/doctor.d.ts.map +1 -1
  11. package/dist/doctor.js +22 -2
  12. package/dist/doctor.js.map +1 -1
  13. package/dist/packages/kbot/src/tools/mcp-client.d.ts +2 -0
  14. package/dist/packages/kbot/src/tools/mcp-client.d.ts.map +1 -0
  15. package/dist/packages/kbot/src/tools/mcp-client.js +132 -0
  16. package/dist/packages/kbot/src/tools/mcp-client.js.map +1 -0
  17. package/dist/packages/kbot/src/tools/mcp-discovery.d.ts +2 -0
  18. package/dist/packages/kbot/src/tools/mcp-discovery.d.ts.map +1 -0
  19. package/dist/packages/kbot/src/tools/mcp-discovery.js +433 -0
  20. package/dist/packages/kbot/src/tools/mcp-discovery.js.map +1 -0
  21. package/dist/packages/kbot/src/tools/memory-harness.d.ts +2 -0
  22. package/dist/packages/kbot/src/tools/memory-harness.d.ts.map +1 -0
  23. package/dist/packages/kbot/src/tools/memory-harness.js +542 -0
  24. package/dist/packages/kbot/src/tools/memory-harness.js.map +1 -0
  25. package/dist/streaming.d.ts +5 -0
  26. package/dist/streaming.d.ts.map +1 -1
  27. package/dist/streaming.js +10 -0
  28. package/dist/streaming.js.map +1 -1
  29. package/dist/tools/search.js +1 -1
  30. package/dist/tools/search.js.map +1 -1
  31. package/dist/ui.d.ts.map +1 -1
  32. package/dist/ui.js +2 -1
  33. package/dist/ui.js.map +1 -1
  34. package/package.json +1 -1
@@ -0,0 +1,117 @@
1
+ import { type EvalResult } from './self-eval.js';
2
+ export interface ConsultationClient {
3
+ id: string;
4
+ email: string;
5
+ name?: string;
6
+ industry?: string;
7
+ goals?: string;
8
+ challenges?: string;
9
+ context: Record<string, unknown>;
10
+ intake_complete: boolean;
11
+ }
12
+ export interface ConsultationThread {
13
+ id: string;
14
+ client_id: string;
15
+ subject: string;
16
+ status: 'intake' | 'valuation' | 'awaiting_payment' | 'active' | 'completed' | 'capped';
17
+ reply_count: number;
18
+ max_replies: number;
19
+ agent?: string;
20
+ quality_scores: EvalResult[];
21
+ idea_summary?: string;
22
+ market_value_low?: number;
23
+ market_value_high?: number;
24
+ consultation_fee?: number;
25
+ paid?: boolean;
26
+ summary?: string;
27
+ action_items: Array<{
28
+ task: string;
29
+ owner: string;
30
+ }>;
31
+ completed_at?: string;
32
+ }
33
+ export interface ConsultationMessage {
34
+ role: 'client' | 'kbot';
35
+ content: string;
36
+ agent?: string;
37
+ eval_score?: EvalResult;
38
+ }
39
+ export interface ConsultationResult {
40
+ reply: string;
41
+ eval: EvalResult;
42
+ agent: string;
43
+ guardrailBlocked: boolean;
44
+ guardrailMessage?: string;
45
+ threadStatus: 'intake' | 'valuation' | 'awaiting_payment' | 'active' | 'completed' | 'capped';
46
+ summary?: string;
47
+ actionItems?: Array<{
48
+ task: string;
49
+ owner: string;
50
+ }>;
51
+ }
52
+ interface DomainGuardrailResult {
53
+ blocked: boolean;
54
+ domain?: string;
55
+ message?: string;
56
+ suggestedTopic?: string;
57
+ }
58
+ /**
59
+ * Check if a message touches restricted domains.
60
+ * Uses keyword/regex detection — fast and free ($0).
61
+ */
62
+ export declare function checkDomainGuardrails(message: string): DomainGuardrailResult;
63
+ /**
64
+ * Parse intake answers from a client's reply.
65
+ * Looks for numbered responses or paragraph breaks.
66
+ */
67
+ export declare function parseIntakeAnswers(message: string): Partial<ConsultationClient>;
68
+ /**
69
+ * Generate the intake email for a new client.
70
+ */
71
+ export declare function getIntakeMessage(): string;
72
+ /**
73
+ * Run the critic gate on a consultation response.
74
+ * Returns the response if it passes, or a clarifying question if it doesn't.
75
+ */
76
+ export declare function criticGate(clientMessage: string, proposedResponse: string, threadHistory: string): Promise<{
77
+ passed: boolean;
78
+ response: string;
79
+ eval: EvalResult;
80
+ }>;
81
+ /**
82
+ * Detect if a client message signals thread closure.
83
+ */
84
+ export declare function detectThreadClosure(message: string): boolean;
85
+ /**
86
+ * Generate a consultation summary with action items.
87
+ * Uses the analyst agent for structured output.
88
+ */
89
+ export declare function generateThreadSummary(messages: ConsultationMessage[], client: ConsultationClient): Promise<{
90
+ summary: string;
91
+ actionItems: Array<{
92
+ task: string;
93
+ owner: string;
94
+ }>;
95
+ }>;
96
+ /**
97
+ * Process an inbound consultation email through the full pipeline.
98
+ *
99
+ * @param clientEmail - The sender's email address
100
+ * @param clientName - The sender's name (if available)
101
+ * @param subject - Email subject line
102
+ * @param messageBody - Email body text
103
+ * @param db - Database adapter (Supabase client or compatible)
104
+ */
105
+ export declare function processConsultationEmail(clientEmail: string, clientName: string | null, subject: string, messageBody: string, db: ConsultationDB): Promise<ConsultationResult>;
106
+ export interface ConsultationDB {
107
+ getClientByEmail(email: string): Promise<ConsultationClient | null>;
108
+ createClient(email: string, name: string | null): Promise<ConsultationClient>;
109
+ updateClient(id: string, data: Partial<ConsultationClient>): Promise<void>;
110
+ getActiveThread(clientId: string): Promise<ConsultationThread | null>;
111
+ createThread(clientId: string, subject: string, status: string): Promise<ConsultationThread>;
112
+ updateThread(id: string, data: Partial<ConsultationThread>): Promise<void>;
113
+ addMessage(threadId: string, role: 'client' | 'kbot', content: string, evalScore?: EvalResult, agent?: string): Promise<void>;
114
+ getThreadMessages(threadId: string): Promise<ConsultationMessage[]>;
115
+ }
116
+ export {};
117
+ //# sourceMappingURL=consultation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"consultation.d.ts","sourceRoot":"","sources":["../src/consultation.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,388 @@
1
+ // kbot Consultation Engine — autonomous email consultation pipeline
2
+ //
3
+ // Flow: inbound email → guardrail check → client lookup → agent routing
4
+ // → generate response → critic gate → send reply
5
+ //
6
+ // Features:
7
+ // 1. Client profile system (intake on first contact)
8
+ // 2. Critic gate (self-eval before sending)
9
+ // 3. Domain guardrails (refuse legal/medical/financial/tax)
10
+ // 4. Thread summary + action items on close
11
+ import { evaluateResponse } from './self-eval.js';
12
+ import { runAgent } from './agent.js';
13
+ const RESTRICTED_DOMAINS = [
14
+ {
15
+ domain: 'legal',
16
+ patterns: [
17
+ /\b(legal advice|lawyer|attorney|lawsuit|sue|litigation|court|plaintiff|defendant|statute|liability|tort|contract law|intellectual property law|patent law|trademark law|copyright law|legal obligation|legal rights|legal counsel)\b/i,
18
+ /\b(should i sue|can i be sued|is this legal|legally binding|terms of service review|NDA review|employment law|labor law)\b/i,
19
+ ],
20
+ professional: 'lawyer or legal counsel',
21
+ suggestion: 'business strategy, contract negotiation approach, or risk assessment from a business perspective',
22
+ },
23
+ {
24
+ domain: 'medical',
25
+ patterns: [
26
+ /\b(medical advice|diagnosis|treatment|prescription|medication|symptoms|disease|illness|health condition|clinical|therapy|dosage|side effects|medical condition)\b/i,
27
+ /\b(should i take|what medication|am i sick|health risk|medical opinion)\b/i,
28
+ ],
29
+ professional: 'qualified healthcare provider',
30
+ suggestion: 'health tech strategy, wellness program design, or healthcare business operations',
31
+ },
32
+ {
33
+ domain: 'financial',
34
+ patterns: [
35
+ /\b(investment advice|stock picks|buy or sell|portfolio allocation|financial planning|retirement planning|tax-loss harvesting|securities|hedge fund|mutual fund|cryptocurrency investment|forex trading)\b/i,
36
+ /\b(should i invest|which stocks|financial advisor|fiduciary|wealth management|estate planning)\b/i,
37
+ ],
38
+ professional: 'licensed financial advisor',
39
+ suggestion: 'business financial strategy, revenue modeling, pricing strategy, or fundraising approach',
40
+ },
41
+ {
42
+ domain: 'tax',
43
+ patterns: [
44
+ /\b(tax advice|tax filing|tax deduction|tax return|tax liability|tax shelter|tax evasion|tax avoidance|IRS|tax audit|tax code|capital gains tax|estate tax|income tax filing)\b/i,
45
+ /\b(how to file taxes|tax write-off|can i deduct|tax bracket|tax-exempt)\b/i,
46
+ ],
47
+ professional: 'certified accountant or tax professional',
48
+ suggestion: 'business expense planning, financial modeling, or revenue optimization',
49
+ },
50
+ ];
51
+ /**
52
+ * Check if a message touches restricted domains.
53
+ * Uses keyword/regex detection — fast and free ($0).
54
+ */
55
+ export function checkDomainGuardrails(message) {
56
+ for (const domain of RESTRICTED_DOMAINS) {
57
+ for (const pattern of domain.patterns) {
58
+ if (pattern.test(message)) {
59
+ return {
60
+ blocked: true,
61
+ domain: domain.domain,
62
+ message: `This touches on ${domain.domain} territory. I'd recommend consulting a ${domain.professional} for this specific question. I can definitely help with ${domain.suggestion} instead — would you like to explore that?`,
63
+ suggestedTopic: domain.suggestion,
64
+ };
65
+ }
66
+ }
67
+ }
68
+ return { blocked: false };
69
+ }
70
+ // ── Intake System ──
71
+ const INTAKE_QUESTIONS = `Thank you for reaching out to Kernel Consultation.
72
+
73
+ Before I can give you the best possible advice, I'd love to learn a bit about your business. Could you answer these quick questions?
74
+
75
+ 1. **What industry are you in?** (e.g., SaaS, e-commerce, healthcare, fintech, agency)
76
+ 2. **What does your business do?** (one sentence is fine)
77
+ 3. **What's your biggest challenge right now?**
78
+ 4. **What are you hoping to achieve in the next 3-6 months?**
79
+ 5. **Is there anything specific you'd like help with today?**
80
+
81
+ Just reply to this email with your answers and we'll get started right away.`;
82
+ /**
83
+ * Parse intake answers from a client's reply.
84
+ * Looks for numbered responses or paragraph breaks.
85
+ */
86
+ export function parseIntakeAnswers(message) {
87
+ const lines = message.split('\n').filter(l => l.trim());
88
+ const answers = { context: {} };
89
+ // Try numbered format first (1. answer, 2. answer, etc.)
90
+ const numbered = lines.filter(l => /^\s*\d+[\.\)]\s*/.test(l));
91
+ if (numbered.length >= 3) {
92
+ const clean = numbered.map(l => l.replace(/^\s*\d+[\.\)]\s*/, '').trim());
93
+ answers.industry = clean[0] || undefined;
94
+ answers.goals = clean[1] || undefined;
95
+ answers.challenges = clean[2] || undefined;
96
+ if (clean[3])
97
+ answers.context.timeline = clean[3];
98
+ if (clean[4])
99
+ answers.context.specific_request = clean[4];
100
+ }
101
+ else {
102
+ // Paragraph format — use the whole message as context
103
+ answers.context = { raw_intake: message };
104
+ // Try to extract industry from keywords
105
+ const industryMatch = message.match(/\b(SaaS|e-commerce|ecommerce|healthcare|fintech|agency|consulting|retail|manufacturing|education|real estate|media|tech|startup)\b/i);
106
+ if (industryMatch)
107
+ answers.industry = industryMatch[1];
108
+ }
109
+ return answers;
110
+ }
111
+ /**
112
+ * Generate the intake email for a new client.
113
+ */
114
+ export function getIntakeMessage() {
115
+ return INTAKE_QUESTIONS;
116
+ }
117
+ // ── Critic Gate ──
118
+ /** Consultation-specific thresholds (stricter than default) */
119
+ const CONSULTATION_THRESHOLDS = {
120
+ faithfulness: 0.6,
121
+ relevancy: 0.7,
122
+ overall: 0.5,
123
+ };
124
+ const CLARIFYING_QUESTION_PROMPT = `The client asked a question but I'm not confident enough in my answer to send it. Instead of guessing, generate a thoughtful clarifying question that will help me give a better answer. Be specific about what additional information would help.`;
125
+ /**
126
+ * Run the critic gate on a consultation response.
127
+ * Returns the response if it passes, or a clarifying question if it doesn't.
128
+ */
129
+ export async function criticGate(clientMessage, proposedResponse, threadHistory) {
130
+ const evalResult = await evaluateResponse(clientMessage, proposedResponse, threadHistory);
131
+ const passes = evalResult.faithfulness >= CONSULTATION_THRESHOLDS.faithfulness &&
132
+ evalResult.relevancy >= CONSULTATION_THRESHOLDS.relevancy &&
133
+ evalResult.overall >= CONSULTATION_THRESHOLDS.overall;
134
+ if (passes) {
135
+ return { passed: true, response: proposedResponse, eval: evalResult };
136
+ }
137
+ // Generate a clarifying question instead
138
+ try {
139
+ const clarifyResult = await runAgent(`${CLARIFYING_QUESTION_PROMPT}\n\nClient's message: "${clientMessage}"\n\nThread context: ${threadHistory.slice(0, 500)}`, { agent: 'communicator', skipPlanner: true });
140
+ return {
141
+ passed: false,
142
+ response: clarifyResult.content,
143
+ eval: evalResult,
144
+ };
145
+ }
146
+ catch {
147
+ // Fallback clarifying question
148
+ return {
149
+ passed: false,
150
+ response: `Thank you for your question. To make sure I give you the most relevant advice, could you provide a bit more context? Specifically, what outcome are you hoping to achieve, and what have you already tried?`,
151
+ eval: evalResult,
152
+ };
153
+ }
154
+ }
155
+ // ── Thread Closure Detection ──
156
+ const CLOSURE_PATTERNS = [
157
+ /\b(thanks?|thank you|thx|cheers|appreciate it|that's all|that's everything|perfect|great|awesome|wonderful)\b/i,
158
+ /\b(goodbye|bye|talk later|have a good|take care|signing off|all set|no more questions)\b/i,
159
+ ];
160
+ /**
161
+ * Detect if a client message signals thread closure.
162
+ */
163
+ export function detectThreadClosure(message) {
164
+ // Short messages with closure words are strong signals
165
+ if (message.length < 100) {
166
+ return CLOSURE_PATTERNS.some(p => p.test(message));
167
+ }
168
+ return false;
169
+ }
170
+ // ── Thread Summary Generation ──
171
+ /**
172
+ * Generate a consultation summary with action items.
173
+ * Uses the analyst agent for structured output.
174
+ */
175
+ export async function generateThreadSummary(messages, client) {
176
+ const transcript = messages
177
+ .map(m => `${m.role === 'client' ? 'Client' : 'Consultant'}: ${m.content}`)
178
+ .join('\n\n');
179
+ const prompt = `Analyze this consultation thread and produce a structured summary.
180
+
181
+ Client: ${client.name || client.email}
182
+ Industry: ${client.industry || 'Not specified'}
183
+ Goals: ${client.goals || 'Not specified'}
184
+
185
+ --- Transcript ---
186
+ ${transcript.slice(0, 4000)}
187
+ --- End Transcript ---
188
+
189
+ Produce your response in this EXACT format:
190
+
191
+ ## Key Points Discussed
192
+ - [point 1]
193
+ - [point 2]
194
+ - [point 3]
195
+
196
+ ## Recommendations
197
+ - [recommendation 1]
198
+ - [recommendation 2]
199
+
200
+ ## Action Items
201
+ - [ ] [task description] — Owner: [Client/Consultant]
202
+ - [ ] [task description] — Owner: [Client/Consultant]
203
+
204
+ ## Next Steps
205
+ [1-2 sentences on suggested follow-up]`;
206
+ try {
207
+ const result = await runAgent(prompt, { agent: 'analyst', skipPlanner: true });
208
+ const content = result.content;
209
+ // Extract action items from the structured output
210
+ const actionItems = [];
211
+ const actionRegex = /- \[ ?\] (.+?) — Owner: (.+)/g;
212
+ let match;
213
+ while ((match = actionRegex.exec(content)) !== null) {
214
+ actionItems.push({ task: match[1].trim(), owner: match[2].trim() });
215
+ }
216
+ return { summary: content, actionItems };
217
+ }
218
+ catch {
219
+ return {
220
+ summary: `Consultation with ${client.name || client.email} — ${messages.length} messages exchanged.`,
221
+ actionItems: [],
222
+ };
223
+ }
224
+ }
225
+ // ── Main Pipeline ──
226
+ /**
227
+ * Process an inbound consultation email through the full pipeline.
228
+ *
229
+ * @param clientEmail - The sender's email address
230
+ * @param clientName - The sender's name (if available)
231
+ * @param subject - Email subject line
232
+ * @param messageBody - Email body text
233
+ * @param db - Database adapter (Supabase client or compatible)
234
+ */
235
+ export async function processConsultationEmail(clientEmail, clientName, subject, messageBody, db) {
236
+ // 1. Domain guardrail check (before any processing)
237
+ const guardrail = checkDomainGuardrails(messageBody);
238
+ if (guardrail.blocked) {
239
+ return {
240
+ reply: guardrail.message,
241
+ eval: { faithfulness: 1, relevancy: 1, overall: 1, shouldRetry: false },
242
+ agent: 'guardrail',
243
+ guardrailBlocked: true,
244
+ guardrailMessage: guardrail.message,
245
+ threadStatus: 'active',
246
+ };
247
+ }
248
+ // 2. Client lookup / creation
249
+ let client = await db.getClientByEmail(clientEmail);
250
+ if (!client) {
251
+ client = await db.createClient(clientEmail, clientName);
252
+ }
253
+ // 3. If intake not complete, handle intake flow
254
+ if (!client.intake_complete) {
255
+ // Check if this is the first message (send intake questions)
256
+ // or the reply to intake (parse answers)
257
+ const existingThread = await db.getActiveThread(client.id);
258
+ if (!existingThread || existingThread.status === 'intake') {
259
+ if (!existingThread) {
260
+ // First contact — create intake thread and send questions
261
+ const thread = await db.createThread(client.id, subject, 'intake');
262
+ await db.addMessage(thread.id, 'client', messageBody);
263
+ const intakeMsg = getIntakeMessage();
264
+ await db.addMessage(thread.id, 'kbot', intakeMsg);
265
+ return {
266
+ reply: intakeMsg,
267
+ eval: { faithfulness: 1, relevancy: 1, overall: 1, shouldRetry: false },
268
+ agent: 'intake',
269
+ guardrailBlocked: false,
270
+ threadStatus: 'intake',
271
+ };
272
+ }
273
+ else {
274
+ // Reply to intake — parse answers and activate
275
+ await db.addMessage(existingThread.id, 'client', messageBody);
276
+ const answers = parseIntakeAnswers(messageBody);
277
+ await db.updateClient(client.id, { ...answers, intake_complete: true });
278
+ await db.updateThread(existingThread.id, { status: 'active' });
279
+ // Now process their original question + context
280
+ client = { ...client, ...answers, intake_complete: true };
281
+ }
282
+ }
283
+ }
284
+ // 4. Get or create active thread
285
+ let thread = await db.getActiveThread(client.id);
286
+ if (!thread) {
287
+ thread = await db.createThread(client.id, subject, 'active');
288
+ }
289
+ // 5. Check reply cap
290
+ if (thread.reply_count >= thread.max_replies) {
291
+ // Generate summary and close
292
+ const messages = await db.getThreadMessages(thread.id);
293
+ const { summary, actionItems } = await generateThreadSummary(messages, client);
294
+ await db.updateThread(thread.id, {
295
+ status: 'capped',
296
+ summary,
297
+ action_items: actionItems,
298
+ completed_at: new Date().toISOString(),
299
+ });
300
+ const capMessage = `We've reached the end of this consultation thread (${thread.max_replies} exchanges). Here's a summary of what we covered:\n\n${summary}\n\nTo continue our work together, simply send a new email to start a fresh thread. Thank you for choosing Kernel Consultation.`;
301
+ return {
302
+ reply: capMessage,
303
+ eval: { faithfulness: 1, relevancy: 1, overall: 1, shouldRetry: false },
304
+ agent: 'summary',
305
+ guardrailBlocked: false,
306
+ threadStatus: 'capped',
307
+ summary,
308
+ actionItems,
309
+ };
310
+ }
311
+ // 6. Record client message
312
+ await db.addMessage(thread.id, 'client', messageBody);
313
+ // 7. Build context for the agent
314
+ const threadMessages = await db.getThreadMessages(thread.id);
315
+ const threadHistory = threadMessages
316
+ .slice(-10) // last 10 messages for context
317
+ .map(m => `${m.role === 'client' ? 'Client' : 'Consultant'}: ${m.content}`)
318
+ .join('\n\n');
319
+ const clientContext = [
320
+ client.industry ? `Industry: ${client.industry}` : '',
321
+ client.goals ? `Goals: ${client.goals}` : '',
322
+ client.challenges ? `Challenges: ${client.challenges}` : '',
323
+ ].filter(Boolean).join('\n');
324
+ const systemContext = `You are a professional business consultant responding via email. Be concise, actionable, and specific to the client's business.
325
+
326
+ Client Profile:
327
+ ${clientContext || 'No profile data yet.'}
328
+
329
+ Thread History:
330
+ ${threadHistory}
331
+
332
+ Respond to the client's latest message. Be professional but warm. Give specific, actionable advice. Do NOT give legal, medical, financial investment, or tax advice.`;
333
+ // 8. Route to specialist agent and generate response
334
+ let agentResponse;
335
+ try {
336
+ agentResponse = await runAgent(`${systemContext}\n\nClient's message: ${messageBody}`, { skipPlanner: true });
337
+ }
338
+ catch (err) {
339
+ return {
340
+ reply: `Thank you for your message. I'm experiencing a temporary issue processing your request. I'll get back to you shortly. If this is urgent, please send a follow-up email.`,
341
+ eval: { faithfulness: 0, relevancy: 0, overall: 0, shouldRetry: false },
342
+ agent: 'error',
343
+ guardrailBlocked: false,
344
+ threadStatus: 'active',
345
+ };
346
+ }
347
+ // 9. Critic gate — evaluate quality before sending
348
+ const criticResult = await criticGate(messageBody, agentResponse.content, threadHistory);
349
+ // 10. Check for thread closure
350
+ const isClosing = detectThreadClosure(messageBody);
351
+ let finalReply = criticResult.response;
352
+ let threadStatus = 'active';
353
+ let summary;
354
+ let actionItems;
355
+ if (isClosing) {
356
+ // Generate summary
357
+ const messages = await db.getThreadMessages(thread.id);
358
+ const summaryResult = await generateThreadSummary(messages, client);
359
+ summary = summaryResult.summary;
360
+ actionItems = summaryResult.actionItems;
361
+ threadStatus = 'completed';
362
+ finalReply += `\n\n---\n\n**Consultation Summary**\n\n${summary}\n\nThank you for choosing Kernel Consultation. Feel free to reach out anytime you need help.`;
363
+ await db.updateThread(thread.id, {
364
+ status: 'completed',
365
+ summary,
366
+ action_items: actionItems,
367
+ completed_at: new Date().toISOString(),
368
+ });
369
+ }
370
+ // 11. Record kbot's response
371
+ await db.addMessage(thread.id, 'kbot', finalReply, criticResult.eval, agentResponse.agent);
372
+ // 12. Update thread
373
+ await db.updateThread(thread.id, {
374
+ reply_count: thread.reply_count + 1,
375
+ agent: agentResponse.agent,
376
+ quality_scores: [...(thread.quality_scores || []), criticResult.eval],
377
+ });
378
+ return {
379
+ reply: finalReply,
380
+ eval: criticResult.eval,
381
+ agent: agentResponse.agent,
382
+ guardrailBlocked: false,
383
+ threadStatus,
384
+ summary,
385
+ actionItems,
386
+ };
387
+ }
388
+ //# sourceMappingURL=consultation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"consultation.js","sourceRoot":"","sources":["../src/consultation.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../src/doctor.ts"],"names":[],"mappings":"AA2BA,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,CAAA;AAElD,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,WAAW,CAAA;IACnB,OAAO,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,WAAW,EAAE,CAAA;IACrB,SAAS,EAAE,MAAM,CAAA;IACjB,0EAA0E;IAC1E,OAAO,EAAE,WAAW,CAAA;CACrB;AA8SD,wBAAsB,SAAS,IAAI,OAAO,CAAC,YAAY,CAAC,CA6CvD;AAkBD,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,CA+B/D"}
1
+ {"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../src/doctor.ts"],"names":[],"mappings":"AA2BA,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,CAAA;AAElD,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,WAAW,CAAA;IACnB,OAAO,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,WAAW,EAAE,CAAA;IACrB,SAAS,EAAE,MAAM,CAAA;IACjB,0EAA0E;IAC1E,OAAO,EAAE,WAAW,CAAA;CACrB;AAiUD,wBAAsB,SAAS,IAAI,OAAO,CAAC,YAAY,CAAC,CA6CvD;AAkBD,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,CA+B/D"}
package/dist/doctor.js CHANGED
@@ -184,8 +184,28 @@ async function checkLocalRuntimes() {
184
184
  const runtimes = [];
185
185
  // Ollama (default port 11434)
186
186
  const ollamaUp = await isOllamaRunning();
187
- if (ollamaUp)
188
- runtimes.push('Ollama');
187
+ if (ollamaUp) {
188
+ let modelInfo = '';
189
+ try {
190
+ const res = await fetch('http://localhost:11434/api/tags', { signal: AbortSignal.timeout(3000) });
191
+ if (res.ok) {
192
+ const data = await res.json();
193
+ const models = data.models ?? [];
194
+ modelInfo = models.length > 0
195
+ ? ` (${models.length} models: ${models.slice(0, 5).map(m => m.name.split(':')[0]).join(', ')}${models.length > 5 ? '...' : ''})`
196
+ : ' (no models pulled)';
197
+ }
198
+ }
199
+ catch { }
200
+ runtimes.push(`Ollama${modelInfo}`);
201
+ }
202
+ // MLX server (Apple Silicon, port 8899)
203
+ try {
204
+ const res = await fetch('http://localhost:8899/v1/models', { signal: AbortSignal.timeout(2000) });
205
+ if (res.ok)
206
+ runtimes.push('MLX');
207
+ }
208
+ catch { /* not running */ }
189
209
  // LM Studio (default port 1234)
190
210
  try {
191
211
  const lmHost = process.env.LMSTUDIO_HOST || 'http://localhost:1234';
@@ -1 +1 @@
1
- {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../src/doctor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../src/doctor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=mcp-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-client.d.ts","sourceRoot":"","sources":["../../../../../src/packages/kbot/src/tools/mcp-client.ts"],"names":[],"mappings":""}