Saltar al contenido principal

Tipos

El SDK exporta interfaces TypeScript para cada forma de unidad de conocimiento, esquemas Zod para validación en tiempo de ejecución y un conjunto de clases de error tipadas. Todos los tipos son importables desde el punto de entrada de nivel superior @knowledgepulse/sdk.

Enums​

KnowledgeUnitType​

type KnowledgeUnitType = "ReasoningTrace" | "ToolCallPattern" | "ExpertSOP";

Las tres categorías de conocimiento que pueden ser capturadas, almacenadas y compartidas a través del protocolo.

PrivacyLevel​

type PrivacyLevel = "aggregated" | "federated" | "private";
ValorDescripción
"aggregated"El conocimiento se anonimiza completamente y se fusiona en el pool público
"federated"El conocimiento permanece dentro de un límite de federación; solo salen insights agregados
"private"El conocimiento nunca sale del agente u organización de origen

Visibility​

type Visibility = "private" | "org" | "network";
ValorDescripción
"private"Visible solo para el agente propietario
"org"Visible para todos los agentes dentro de la misma organización
"network"Visible para cada participante en la red KnowledgePulse

Interfaz Común: KnowledgeUnitMeta​

Cada unidad de conocimiento lleva un campo metadata con esta forma:

interface KnowledgeUnitMeta {
created_at: string; // Fecha y hora ISO 8601
agent_id?: string; // kp:agent:<id>
framework?: string; // "langgraph" | "crewai" | "autogen" | "openclaw"
task_domain: string; // ej. "customer-support", "code-review"
success: boolean;
quality_score: number; // 0.0 a 1.0
visibility: Visibility;
privacy_level: PrivacyLevel;
validated_by?: string[]; // kp:validator:<id>[]
}

Tipos de Unidad de Conocimiento​

ReasoningTrace​

Un registro paso a paso del proceso de razonamiento de un agente, incluyendo llamadas a herramientas, observaciones y recuperaciones de errores.

interface ReasoningTrace {
"@context": "https://openknowledgepulse.org/schema/v1";
"@type": "ReasoningTrace";
id: string; // kp:trace:<uuid>
source_skill?: string; // kp:skill:<name>:<version>
metadata: KnowledgeUnitMeta;
task: {
objective: string;
input_schema?: Record<string, unknown>;
};
steps: ReasoningTraceStep[];
outcome: {
result_summary: string;
confidence: number; // 0.0 a 1.0
};
knowledge_graph_delta?: {
entities: Array<{ name: string; type: string }>;
relationships: Array<{ fact: string; valid_from: string }>;
};
}

ReasoningTraceStep​

Cada paso en una traza tiene uno de cuatro tipos:

interface ReasoningTraceStep {
step_id: number;
type: "thought" | "tool_call" | "observation" | "error_recovery";
content?: string;
tool?: {
name: string;
mcp_server?: string;
};
input?: Record<string, unknown>;
output_summary?: string;
latency_ms?: number;
}
Tipo de PasoDescripción
"thought"Paso de razonamiento o planificación interna
"tool_call"Invocación de una herramienta o API externa
"observation"Resultado o salida recibida de una llamada a herramienta
"error_recovery"Acción de recuperación tomada después de un error

ToolCallPattern​

Un patrón reutilizable que describe una secuencia de invocaciones de herramientas que logra un tipo de tarea específico.

interface ToolCallPattern {
"@context": "https://openknowledgepulse.org/schema/v1";
"@type": "ToolCallPattern";
id: string; // kp:pattern:<uuid>
name: string;
description: string;
metadata: KnowledgeUnitMeta;
trigger_conditions: {
task_types: string[];
required_tools?: string[];
};
tool_sequence: Array<{
step: string;
execution: "parallel" | "sequential";
tools: Array<{
name: string;
query_template?: string;
input_template?: Record<string, unknown>;
}>;
condition?: string;
}>;
performance: {
avg_ms: number;
success_rate: number; // 0.0 a 1.0
uses: number;
};
}

ExpertSOP​

Un procedimiento operativo estándar estructurado escrito por un experto humano, incluyendo un árbol de decisión con lógica condicional.

interface ExpertSOP {
"@context": "https://openknowledgepulse.org/schema/v1";
"@type": "ExpertSOP";
id: string; // kp:sop:<uuid>
name: string;
domain: string;
metadata: KnowledgeUnitMeta;
source: {
type: "human_expert";
expert_id: string;
credentials: string[]; // kp:sbt:<cert>[]
};
decision_tree: Array<{
step: string;
instruction: string;
criteria?: Record<string, string>;
conditions?: Record<string, {
action: string;
sla_min?: number;
}>;
tool_suggestions?: Array<{
name: string;
when: string;
}>;
}>;
validation?: {
test_cases: Array<{
input: Record<string, unknown>;
expected_output: Record<string, unknown>;
}>;
};
}

Tipo Unión​

El tipo KnowledgeUnit es una unión discriminada de los tres tipos de unidad de conocimiento:

type KnowledgeUnit = ReasoningTrace | ToolCallPattern | ExpertSOP;

Tipos SKILL.md​

SkillMdFrontmatter​

Campos estándar del frontmatter YAML de SKILL.md:

interface SkillMdFrontmatter {
name: string;
description: string;
version?: string;
author?: string;
license?: string;
tags?: string[];
"allowed-tools"?: string[];
}

SkillMdKpExtension​

Campos de extensión de KnowledgePulse anidados bajo la clave kp: en el frontmatter de SKILL.md:

interface SkillMdKpExtension {
knowledge_capture?: boolean;
domain?: string;
quality_threshold?: number; // 0.0 a 1.0
privacy_level?: PrivacyLevel;
visibility?: Visibility;
reward_eligible?: boolean;
}

Tipos de Importación de SOP​

El SDK proporciona tipos y funciones para importar SOPs desde documentos. Estos son usados por la función de importación de documentos de SOP Studio pero también pueden usarse independientemente.

LLMConfig​

Configuración para el proveedor de LLM usado durante la extracción de documentos:

interface LLMConfig {
provider: "openai" | "anthropic" | "ollama";
apiKey: string; // Tu clave API del proveedor
model: string; // Identificador del modelo (ej. "gpt-4o")
baseUrl?: string; // Endpoint personalizado (requerido para Ollama)
temperature?: number; // 0.0 a 1.0 (defecto: 0.2)
}

ParseResult​

Devuelto por parseDocx y parsePdf después de parsear un documento:

interface ParseResult {
text: string; // Contenido completo en texto plano
sections: Array<{
heading: string;
content: string;
level: number; // Nivel de encabezado (1-6)
}>;
tables: Array<{
headers: string[];
rows: string[][];
}>;
metadata: {
title?: string;
author?: string;
pageCount?: number;
};
}

ExtractionResult​

Devuelto por extractDecisionTree después de la extracción con LLM:

interface ExtractionResult {
name: string; // Nombre del SOP detectado
domain: string; // Dominio detectado
description: string; // Descripción generada
decision_tree: Array<{ // Árbol de decisión compatible con ExpertSOP
step: string;
instruction: string;
criteria?: Record<string, string>;
conditions?: Record<string, {
action: string;
sla_min?: number;
}>;
tool_suggestions?: Array<{
name: string;
when: string;
}>;
}>;
confidence: number; // 0.0 a 1.0
warnings: string[]; // Problemas o ambigüedades de extracción
}

Funciones de Parseo de Documentos​

import { parseDocx, parsePdf, extractDecisionTree } from "@knowledgepulse/sdk";

// Parsear un archivo DOCX
const docxResult: ParseResult = await parseDocx(buffer);

// Parsear un archivo PDF
const pdfResult: ParseResult = await parsePdf(buffer);

// Extraer un árbol de decisión usando un LLM
const extraction: ExtractionResult = await extractDecisionTree(pdfResult, {
provider: "openai",
apiKey: "sk-...",
model: "gpt-4o",
temperature: 0.2,
});

Esquemas Zod​

Cada tipo anterior tiene un esquema Zod correspondiente para validación en tiempo de ejecución. Los esquemas se exportan desde @knowledgepulse/sdk y pueden usarse directamente con safeParse o parse.

EsquemaValida
KnowledgeUnitSchemaUnión discriminada sobre @type (los tres tipos de unidad)
KnowledgeUnitTypeSchema"ReasoningTrace" | "ToolCallPattern" | "ExpertSOP"
KnowledgeUnitMetaSchemaEl objeto metadata
PrivacyLevelSchema"aggregated" | "federated" | "private"
VisibilitySchema"private" | "org" | "network"
ReasoningTraceSchemaObjeto ReasoningTrace completo
ReasoningTraceStepSchemaPaso individual en una traza
ToolCallPatternSchemaObjeto ToolCallPattern completo
ExpertSOPSchemaObjeto ExpertSOP completo
SkillMdFrontmatterSchemaCampos del frontmatter SKILL.md
SkillMdKpExtensionSchemaCampos de extensión KnowledgePulse

Ejemplo de Validación​

import { KnowledgeUnitSchema } from "@knowledgepulse/sdk";

const result = KnowledgeUnitSchema.safeParse(unknownData);

if (result.success) {
// result.data está tipado como KnowledgeUnit
const unit = result.data;
console.log(unit["@type"]); // "ReasoningTrace" | "ToolCallPattern" | "ExpertSOP"
} else {
// result.error.issues contiene errores de validación detallados
for (const issue of result.error.issues) {
console.error(`${issue.path.join(".")}: ${issue.message}`);
}
}

El KnowledgeUnitSchema es una unión discriminada de Zod basada en el campo @type. Esto significa que el esquema selecciona automáticamente el validador correcto (ReasoningTraceSchema, ToolCallPatternSchema o ExpertSOPSchema) basándose en el valor de @type en los datos de entrada.

Validación Estricta con parse​

Si prefieres excepciones en lugar de objetos de resultado, usa parse:

import { ReasoningTraceSchema } from "@knowledgepulse/sdk";

try {
const trace = ReasoningTraceSchema.parse(data);
// trace está tipado como ReasoningTrace
} catch (err) {
// ZodError con array .issues
}

Clases de Error​

El SDK exporta una jerarquía de clases de error para manejo estructurado de errores.

KPError (base)​

class KPError extends Error {
readonly code: string;
constructor(message: string, code: string);
}

Todos los errores del SDK extienden KPError. El campo code proporciona un identificador de error legible por máquinas.

ValidationError​

class ValidationError extends KPError {
readonly issues: Array<{ path: string; message: string }>;
// code: "VALIDATION_ERROR"
}

Se lanza cuando los datos fallan la validación del esquema Zod o el parseo de SKILL.md. El array issues contiene una entrada por cada problema a nivel de campo, cada una con un path delimitado por puntos y un message legible por humanos.

SanitizationError​

class SanitizationError extends KPError {
readonly field?: string;
// code: "SANITIZATION_ERROR"
}

Se lanza cuando la sanitización de contenido detecta patrones peligrosos como caracteres Unicode invisibles o intentos de inyección de prompt.

AuthenticationError​

class AuthenticationError extends KPError {
// code: "AUTHENTICATION_ERROR"
// mensaje por defecto: "Authentication required"
}

Se lanza cuando una llamada API requiere autenticación pero no se proporcionaron credenciales válidas.

RateLimitError​

class RateLimitError extends KPError {
readonly retryAfter: number; // segundos
// code: "RATE_LIMIT_ERROR"
}

Se lanza cuando el registro devuelve un estado 429. El campo retryAfter indica cuántos segundos esperar antes de reintentar.

NotFoundError​

class NotFoundError extends KPError {
// code: "NOT_FOUND"
}

Se lanza cuando un recurso solicitado (unidad de conocimiento, skill, etc.) no existe en el registro.

Ejemplo de Manejo de Errores​

import {
KPError,
ValidationError,
RateLimitError,
} from "@knowledgepulse/sdk";

try {
await contributeKnowledge(unit, { apiKey: "kp_..." });
} catch (err) {
if (err instanceof RateLimitError) {
console.log(`Rate limited. Retry in ${err.retryAfter}s`);
} else if (err instanceof ValidationError) {
for (const issue of err.issues) {
console.error(` ${issue.path}: ${issue.message}`);
}
} else if (err instanceof KPError) {
console.error(`KP error [${err.code}]: ${err.message}`);
}
}