尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证Agente conversacional de órdenes de compra – Prueba IA Periferia
翻译准备中
取自仓库 README
正在加载完整 README。
查看完整 README ↗Agente conversacional de órdenes de compra – Prueba IA Periferia (Reto 3).
Chat web en español que conversa con Claude, llama herramientas tipadas con zod y crea órdenes de compra en un SAP simulado, siempre con confirmación humana antes de crear la OC.
Link de prueba: https://agente-oc-periferia.vercel.app (público, sin clave de acceso) · Diseño y decisiones: SOLUCION.md
cp .env.example .env.local # escribe tu ANTHROPIC_API_KEY en .env.local
bun install && bun run dev # http://localhost:3000
Demo sin modelo de IA (no necesita clave): bun install && bun run demo.ts
| Ruta | Qué es |
|---|---|
app/page.tsx | Chat web: historial, tarjetas de herramientas (nombre, argumentos, resultado resumido), markdown y botones Confirmar / Cancelar. |
app/api/* | API HTTP: /api/chat, /api/sessions/:id, /api/health. |
src/agent/ | Ciclo del agente (loop.ts), registro de herramientas, sesiones, detección de confirmaciones y carga del prompt. |
src/llm/ | Interfaz propia del proveedor (adapter.ts) e implementación Anthropic (anthropic.ts). |
agent/prompt.md | System prompt (comportamiento). Se envía junto con src/knowledge/ordenes-compra.md. |
src/tools/oc.ts | Herramientas oc_leer_paquete, oc_validar, oc_construir_payload, oc_generar_evidencia, oc_crear (contrato PRD 6.2). |
src/domain/ | Reglas RC1–RC10, parseo, payload y evidencia como funciones puras. |
src/sap/adapter.ts, src/sap/mock.ts | Interfaz SapAdapter y SAP simulado sobre archivos (out/sap/ordenes.jsonl). |
src/knowledge/ordenes-compra.md | Conocimiento del proceso: reglas, maestros y qué hacer en cada excepción. |
demo.ts | Procesa sol-001 a sol-006 llamando las herramientas sin modelo de IA; verifica el resultado esperado. |
fixtures/reto-03/ | Maestros y casos del reto (sol-001 a sol-006), solo lectura. |
modulo/ | Bonus PRD 9.4: el agente empaquetado (agent.md, tools/oc.ts, skill/ordenes-compra/SKILL.md) sin depender del servidor. |
scripts/modulo.ts | Genera y verifica modulo/ desde las fuentes de la app. |
SOLUCION.md | Documento de la solución (arquitectura, controles, adaptador SAP, análisis). |
bun install
cp .env.example .env.local # y escribe tu ANTHROPIC_API_KEY en .env.local
.env.local está en .gitignore: la clave nunca se sube al repositorio.
bun run dev # abre http://localhost:3000
bun run demo.ts # demo sin IA: procesa sol-001 a sol-006 y verifica el resultado esperado
bun run typecheck # revisa tipos
bun run build # verifica modulo/ y compila como en producción
bun run modulo # regenera modulo/ desde agent/prompt.md y src/knowledge/
Salidas en out/ (configurable con OUT_DIR; en Vercel se usa /tmp/out): sap/ordenes.jsonl, control.csv, log.jsonl y, por caso, trazabilidad.json, aprobacion.txt y aprobacion.pdf.
modulo/)El agente empaquetado para otras plataformas de agentes (PRD 9.4), sin depender del servidor:
| Archivo | Contenido | Fuente única |
|---|---|---|
modulo/agent.md | Frontmatter (description, mode: primary, permission: { edit: deny, bash: deny }) + system prompt | agent/prompt.md |
modulo/tools/oc.ts | Re-exporta las herramientas (leer_paquete, validar, construir_payload, generar_evidencia, crear) | src/tools/oc.ts |
modulo/skill/ordenes-compra/SKILL.md | Frontmatter (name, description) + conocimiento del proceso | src/knowledge/ordenes-compra.md |
bun run modulo # regenera agent.md y SKILL.md tras cambiar el prompt o el conocimiento
bun run modulo --verificar # falla si modulo/ difiere de las fuentes
La verificación corre en bun run build (y por tanto en cada despliegue de Vercel) y en demo.ts: no puede quedar una copia divergente.
| Método | Ruta | Cuerpo / respuesta |
|---|---|---|
POST | /api/chat | { sessionId, message } → { sessionId, reply, toolCalls[], needsConfirmation } |
GET | /api/sessions/:id | { sessionId, creada, tokens, pendientes, historial[] } |
GET | /api/health | { ok, provider, model } (ok = hay clave configurada; nunca expone la clave) |
sessionId: 8 a 64 caracteres [A-Za-z0-9_-]; el chat lo genera y lo guarda en el navegador.toolCalls[]: { nombre, args, ok, resumen, resultado, nota? } por cada herramienta ejecutada en el turno.needsConfirmation: true cuando un caso quedó con confirmación humana pendiente. Para confirmar se envía un mensaje como «confirmo»; para cancelar, «cancelar».{ error: "No pude procesar la solicitud, intenta de nuevo" }; el detalle técnico queda solo en los logs del servidor.Ejemplo:
curl -s -X POST http://localhost:3000/api/chat -H 'content-type: application/json' \
-d '{"sessionId":"prueba-0001","message":"Procesa la solicitud sol-004"}'
Todas están en .env.example, sin valores.
| Variable | Obligatoria | Por defecto |
|---|---|---|
ANTHROPIC_API_KEY | Sí (solo para el chat; la demo no la usa) | — |
ANTHROPIC_MODEL | No | claude-sonnet-5-5 |
MAX_ITERACIONES | No | 25 |
MAX_TOKENS_SESION | No | 300000 |
LLM_TIMEOUT_MS | No | 60000 |
OUT_DIR | No | ./out (en Vercel /tmp/out) |
agente-oc-periferia.bun.lock y usa Bun para instalar.ANTHROPIC_API_KEY (y, si quieres, las variables opcionales de la tabla anterior).main publica una nueva versión automáticamente.En Vercel el disco es de solo lectura: las salidas van a
/tmp/outy se pierden cuando la función se recicla. Es suficiente para la demo; en producción se reemplaza por un adaptador SAP real.