@vfarcic/dot-ai
Version:
AI-powered development productivity platform that enhances software development workflows through intelligent automation and AI-driven assistance
118 lines (117 loc) • 4.93 kB
JavaScript
"use strict";
/**
* Knowledge Base REST API Response Schemas
*
* PRD #356: Knowledge Base System
* Schemas for HTTP-only endpoints (not exposed via MCP)
*/
Object.defineProperty(exports, "__esModule", { value: true });
exports.KnowledgeAskErrorSchema = exports.KnowledgeAskPluginUnavailableErrorSchema = exports.KnowledgeAskAIUnavailableErrorSchema = exports.KnowledgeAskBadRequestErrorSchema = exports.KnowledgeAskResponseSchema = exports.KnowledgeAskDataSchema = exports.KnowledgeAskChunkSchema = exports.KnowledgeAskSourceSchema = exports.KnowledgeAskRequestSchema = exports.DeleteBySourceErrorSchema = exports.DeleteBySourcePluginUnavailableErrorSchema = exports.DeleteBySourceBadRequestErrorSchema = exports.DeleteBySourceResponseSchema = exports.DeleteBySourceDataSchema = void 0;
const zod_1 = require("zod");
const common_1 = require("./common");
/**
* Delete by source response data
*/
exports.DeleteBySourceDataSchema = zod_1.z.object({
sourceIdentifier: zod_1.z.string().describe('The source identifier that was deleted'),
chunksDeleted: zod_1.z.number().describe('Number of chunks deleted'),
});
/**
* Delete by source success response
*/
exports.DeleteBySourceResponseSchema = (0, common_1.createSuccessResponseSchema)(exports.DeleteBySourceDataSchema);
/**
* Delete by source error responses
*/
exports.DeleteBySourceBadRequestErrorSchema = common_1.ErrorResponseSchema.extend({
error: zod_1.z.object({
code: zod_1.z.literal('BAD_REQUEST'),
message: zod_1.z.string(),
details: zod_1.z.unknown().optional(),
}),
});
exports.DeleteBySourcePluginUnavailableErrorSchema = common_1.ErrorResponseSchema.extend({
error: zod_1.z.object({
code: zod_1.z.literal('PLUGIN_UNAVAILABLE'),
message: zod_1.z.string(),
details: zod_1.z.unknown().optional(),
}),
});
exports.DeleteBySourceErrorSchema = common_1.ErrorResponseSchema.extend({
error: zod_1.z.object({
code: zod_1.z.literal('DELETE_SOURCE_ERROR'),
message: zod_1.z.string(),
details: zod_1.z.unknown().optional(),
}),
});
// ============================================
// Knowledge Ask Schemas (PRD #356)
// HTTP-only endpoint for AI-synthesized answers
// ============================================
/**
* Knowledge Ask request body
*/
exports.KnowledgeAskRequestSchema = zod_1.z.object({
query: zod_1.z.string().min(1).describe('The question to answer from the knowledge base'),
limit: zod_1.z.number().optional().default(20).describe('Maximum chunks to retrieve (default: 20)'),
uriFilter: zod_1.z.string().optional().describe('Optional: filter to specific document URI'),
});
/**
* Source reference in knowledge ask response
*/
exports.KnowledgeAskSourceSchema = zod_1.z.object({
uri: zod_1.z.string().describe('Source document URI'),
title: zod_1.z.string().optional().describe('Document title if available from metadata'),
});
/**
* Chunk in knowledge ask response
*/
exports.KnowledgeAskChunkSchema = zod_1.z.object({
content: zod_1.z.string().describe('Chunk text content'),
uri: zod_1.z.string().describe('Source document URI'),
score: zod_1.z.number().describe('Relevance score from semantic search'),
chunkIndex: zod_1.z.number().describe('Position of chunk within source document'),
});
/**
* Knowledge Ask response data
*/
exports.KnowledgeAskDataSchema = zod_1.z.object({
answer: zod_1.z.string().describe('AI-synthesized answer to the question'),
sources: zod_1.z.array(exports.KnowledgeAskSourceSchema).describe('Deduplicated source documents used'),
chunks: zod_1.z.array(exports.KnowledgeAskChunkSchema).describe('Original chunks for transparency'),
});
/**
* Knowledge Ask success response
*/
exports.KnowledgeAskResponseSchema = (0, common_1.createSuccessResponseSchema)(exports.KnowledgeAskDataSchema);
/**
* Knowledge Ask error responses
*/
exports.KnowledgeAskBadRequestErrorSchema = common_1.ErrorResponseSchema.extend({
error: zod_1.z.object({
code: zod_1.z.literal('BAD_REQUEST'),
message: zod_1.z.string(),
details: zod_1.z.unknown().optional(),
}),
});
exports.KnowledgeAskAIUnavailableErrorSchema = common_1.ErrorResponseSchema.extend({
error: zod_1.z.object({
code: zod_1.z.literal('AI_UNAVAILABLE'),
message: zod_1.z.string(),
details: zod_1.z.unknown().optional(),
}),
});
exports.KnowledgeAskPluginUnavailableErrorSchema = common_1.ErrorResponseSchema.extend({
error: zod_1.z.object({
code: zod_1.z.literal('PLUGIN_UNAVAILABLE'),
message: zod_1.z.string(),
details: zod_1.z.unknown().optional(),
}),
});
exports.KnowledgeAskErrorSchema = common_1.ErrorResponseSchema.extend({
error: zod_1.z.object({
code: zod_1.z.enum(['SEARCH_ERROR', 'SYNTHESIS_ERROR']),
message: zod_1.z.string(),
details: zod_1.z.unknown().optional(),
}),
});