Agentic Task System (ats)

Convierte tu gestor de tareas en memoria de agente: recuperación híbrida (RRF) sobre TickTick o una bóveda de Obsidian mediante un contrato de adaptador. Servidor MCP + CLI, sin necesidad de mantener una base de datos vectorial.

Documentación

Agentic Task System

Tu gestor de tareas es la mejor memoria de agente que no estás usando.

npm version CI MIT license PRs welcome

ats es un servidor MCP y CLI que mantiene el contexto de los agentes de IA en los sistemas de tareas que ya gestionas — TickTick, Taskmaster, Beads, Obsidian, Notion, GitHub, Airtable, Google, o varios a la vez mediante el adaptador compuesto. Recupera tareas, notas, decisiones y runbooks relevantes con procedencia, y luego puede escribir los resultados cuando el adaptador activo admite escrituras. Funciona con Claude Code, Claude Desktop, Cursor y cualquier cliente MCP.

Adaptador, no migración. Tu aplicación de tareas, repositorio o bóveda sigue siendo la autoridad. ATS mapea esa fuente a un contrato de tareas común; las cachés opcionales y los índices vectoriales mejoran la recuperación pero nunca se convierten en un segundo registro que la gente deba editar. Es primero las tareas: la tarea es la columna vertebral, mientras que el material de apoyo, como los issues de GitHub y las especificaciones de Notion, se recupera como contexto detrás de ella.

Dos capas, un solo CLI: tareas y un grafo de conocimiento. La capa de tareas es basada en registros a propósito — cada entrada vive en los proyectos y campos de un backend, y ese backend sigue siendo la autoridad. Una capa basada en registros estructuralmente no puede contener la otra cosa que los agentes acumulan: conocimiento duradero escrito desde cualquier fuente, sobre temas mixtos, en un solo espacio. La capa de grafo de conocimiento — ats kg (kg = knowledge graph) — es la respuesta de ATS a exactamente eso: hechos sujeto–predicado–objeto con procedencia y validez temporal, propuestos por agentes desde cualquier lugar (una llamada, una tarea, un repo, un chat), ratificados por un humano, y consultados en un solo lugar sin importar en qué backend viva el trabajo circundante. El almacén integrado es embebido y sin dependencias. Para un motor de grafo dedicado, la combinación recomendada es Graphiti como servidor de base de datos de grafo y LadybugDB como base de datos de grafo embebida: ats kg export --cypher emite un script cargable por LadybugDB, y ats kg export (JSON, con procedencia completa) está listo para un pipeline de ingesta de Graphiti.

npm install -g @reneza/ats-cli @reneza/ats-adapter-ticktick
ats config use ticktick
ats auth login
ats find "deployment runbook"

ats find — one query fused across GitHub, Notion, and TickTick, ranked by RRF
Un ats find a través de GitHub + Notion + TickTick. ATS clasifica las ramas de recuperación disponibles con RRF y conserva la procedencia de los resultados.

Arquitectura y límites de confianza

ATS separa el registro autoritativo de la maquinaria de recuperación que lo rodea:

AI client or operator
        |
        | local stdio, or token-gated HTTP when self-hosted
        v
ATS CLI / MCP server
        |
        +-- Core: task contract, links, lifecycle, ledger, events
        +-- Retrieval: keyword + native + optional dense branches -> RRF
        |
        v
Adapter boundary (auth, mapping, reads, patch-style writes)
        |
        +-- TickTick / Notion / GitHub / Airtable / Google
        +-- Obsidian / Taskmaster / Beads / OKF files
        |
        +-- derived retrieval state
            corpus cache + optional Qdrant/Ollama index
  • El backend sigue siendo la autoridad. ATS no pide a los usuarios editar una base de datos de memoria duplicada. Las escrituras pasan por el adaptador activo, que posee la autenticación específica del backend, el mapeo de campos y los enlaces profundos.
  • El estado de recuperación es derivado, no canónico. Core mantiene una caché de corpus de cinco minutos por defecto. La recuperación densa es opcional: los adaptadores pueden proporcionar embeddings, y el adaptador de referencia TickTick puede usar Qdrant más Ollama. Sin vectores, las ramas de palabras clave y nativas del adaptador siguen funcionando.
  • Las credenciales permanecen en el límite del adaptador. Un adaptador compuesto delega la autenticación a cada hijo y no almacena credenciales adicionales entre fuentes. Sus hijos aún se ejecutan dentro de un solo proceso de ATS; esto es separación de enrutamiento, no aislamiento de procesos. El stdio local no expone un puerto MCP. El blueprint alojado añade una puerta de enlace con token bearer, servicios privados de Qdrant/Ollama y un backend de demostración público separado para el panel de operador opcional.
  • Core informa los fallos que puede ver. Las ramas de recuperación y los fallos de corpus compuesto de nivel superior devuelven degraded y warnings. Las rutas de omisión conocidas dentro de los fallbacks del adaptador se señalan en Compensaciones y límites.
  • Los cambios de estado son trazables. Los resultados llevan procedencia de fuente; find --explain expone las contribuciones de RRF; las escrituras usan semántica de parche, y las escrituras admitidas pueden conservar imágenes previas para deshacer.

La caché de corpus puede contener registros completos de tareas; el registro de consultas contiene texto de búsqueda; el libro de acciones puede contener imágenes previas de escritura; y las cargas útiles de Qdrant pueden contener texto de tareas y metadatos además de embeddings. ATS no aplica cifrado a nivel de aplicación ni redacción en tiempo de ejecución a estas copias. Limita el acceso al host, las copias de seguridad, la retención y el despliegue a la sensibilidad de los sistemas de tareas subyacentes. Consulta recuperación, integridad del estado y la guía de despliegue para el comportamiento exacto.

Opciones de despliegue

ModoRecuperaciónLímite de confianza y operaciones
Stdio localRecuperación por palabras clave/nativa por defecto; recuperación densa solo cuando el adaptador la proporcionaEl endpoint MCP no está expuesto a la red. Las llamadas del adaptador pueden llegar a sus sistemas de origen; las credenciales y los archivos de caché permanecen en la máquina que ejecuta ATS.
Adaptador compuestoUn corpus hijo combinado; Core clasifica las ramas de palabras clave y de búsqueda nativa unidas, con RRF entre las ramas disponibles. El compuesto no expone actualmente la búsqueda vectorial de los hijos.Cada hijo posee su autenticación y mapeo, pero se ejecuta en el mismo proceso de ATS. Un fallo de corpus hijo de nivel superior se informa como degradado; consulta las brechas de fallback conocidas a continuación.
Blueprint alojadoRecuperación por palabras clave/nativa más servicios privados de Qdrant/OllamaUna puerta de enlace MCP con token bearer y un backend separado opcional para el panel de operador son públicos; Qdrant y Ollama permanecen en la red de servicios privados. Qdrant/Ollama tienen discos, mientras que los archivos de tiempo de ejecución de ats-mcp son efímeros por defecto. Tú operas la rotación de tokens, la persistencia, las copias de seguridad, la disponibilidad y el costo de alojamiento.

“Sin migración” significa sin segunda fuente de verdad. No significa cero almacenamiento derivado.

Cómo se compara

EnfoqueRegistro autoritativoEstado adicionalRecuperación
CLAUDE.md / archivos de memoriaMarkdown mantenido para el agenteLos propios archivosBúsqueda de archivo completo o específica del harness
Servicio de memoria separadoBase de datos específica del agenteUn corpus y una ruta de ingesta que mantenerEspecífico del producto
Conector de backend simpleAplicación de tareas, repositorio o bóveda de origenGeneralmente nada más que el estado del conectorBúsqueda directa o nativa del backend
ATSAplicación de tareas, repositorio o bóveda de origenCaché, estado de consulta/acción/evento; índice vectorial derivado opcionalPalabras clave + nativa + recuperación densa opcional, RRF, procedencia, contexto tipado

ATS es una buena opción cuando el contexto operativo ya vive en sistemas de tareas o herramientas de trabajo conectadas y los agentes necesitan recuperación clasificada y trazable entre ellos. Si el Markdown limpio ya es la fuente de verdad completa y la carga de archivos completos sigue siendo pequeña, un flujo de trabajo nativo de archivos puede ser más simple.

Lo que obtienes

  • Un bus bidireccional. El agente lee los campos de tarea que proporciona un adaptador; donde el adaptador admite escrituras, escribe los resultados donde los verás.
  • Relevancia en la primera búsqueda. Las ramas basadas en capacidades — búsqueda por palabras clave y nativa del adaptador, más recuperación densa cuando esté disponible — se fusionan con RRF y procedencia para reducir los bucles repetidos de búsqueda y refinamiento.
  • Enlaces tipados duraderos. Un agente adjunta un enlace decision / depends-on / output / supersedes; un agente posterior en un contexto nuevo lo recibe mediante ats context. La transferencia vive en la aplicación de tareas, no en un registro de chat.
  • Contexto de ejecución. ats intent captura resultado/por qué/cuándo se hizo; ats lifecycle evita que el contexto obsoleto dirija el trabajo actual; ats security registra decisiones de permitir/denegar con alcance para clientes cooperantes; ats ledger registra lo que hizo un agente y si la tarea avanzó; ats promote convierte la exploración en un objetivo comprometido; ats hierarchy evaluate verifica que el trabajo local aún respalda su padre.
  • Eventos acotados. ats events watch --json emite NDJSON determinista task.created/updated/completed/..., con 0600 en cola y recuperación de pendientes/confirmados e IDs de deduplicación estables. ATS solo emite observaciones — un consumidor aún evalúa intención, validez y seguridad antes de actuar.
  • Grafo de tareas para agentes. Las tareas se convierten en nodos estructurados con bordes de prueba, escritura, revisión, ciclo de vida y enlaces en lugar de texto de memoria libre; consulta docs/task-graph-for-agents.md.
  • Una capa de hechos. ats kg mantiene conocimiento duradero sujeto–predicado–objeto junto a las tareas: los agentes proponen, un humano ratifica (la única ruta de escritura), y ats kg ask responde con puntuación léxica determinista más procedencia completa — sin LLM, sin servidor de grafo, un archivo de solo añadido que viaja con ats state export. La retractación cierra el intervalo de validez de un hecho en lugar de eliminarlo, y ats kg export --cypher carga el grafo en motores embebidos (LadybugDB/Kùzu).
  • Transferencia de índice de sesión. Los navegadores de sesión de agentes de codificación pueden mantener análisis de transcripciones crudas mientras ATS almacena el resumen duradero vinculado a la tarea; consulta docs/agent-session-index.md.

Los metadatos de ejecución gestionados por ATS pueden codificarse en el cuerpo de la tarea, con enlaces tipados bajo ## Related y fuentes consultadas bajo ## References. Los helpers gestionados están diseñados para preservar filas y enlaces creados por humanos, pero una actualización directa de contenido puede reemplazar el cuerpo completo; los llamadores deben leer primero, escribir el cambio intencionado más pequeño y verificar el resultado. npm run prove:intent ejecuta una prueba sintética determinista de la ruta de contexto de ejecución.

Flujo de trabajo mínimo neutral al adaptador

  1. Selecciona y verifica un adaptador: ats config use <adapter>, autentícate como describe su README, luego ejecuta ats doctor.
  2. Recupera el conjunto de trabajo: ats find "deployment runbook" --json clasifica las ramas disponibles de ese adaptador y conserva la procedencia.
  3. Inspecciona el elemento autoritativo y su contexto: ats context <project> <task> usa el contrato común del adaptador y no requiere una capa de notas específica del adaptador.
  4. Adjunta contexto de ejecución duradero: ats intent set <project> <task> --outcome "..." --done-when "a,b" y ats link add <src-project> <src-task> <dst-project> <dst-task> --type depends-on.
  5. Verifica la transferencia ensamblada: vuelve a ejecutar ats context <project> <task> para leer decisiones vinculadas, dependencias, prueba, estado del ciclo de vida y resultados de recuperación relevantes.
  6. Escribe a través del adaptador o la aplicación de origen, luego lee de vuelta. Mantén el backend autoritativo actualizado para que el próximo agente reciba estado duradero en lugar de una transferencia solo de chat.

Despliégalo tú mismo

El panel de operador opcional es una aplicación web estática orientada a teléfonos que se puede desplegar en Cloudflare Pages. El blueprint de Render suministrado construye la puerta de enlace/servidor MCP más servicios privados de Qdrant y Ollama.

Deploy to Render

Después del despliegue, copia el ATS_MCP_TOKEN autogenerado de la pestaña Entorno del servicio ats-mcp, apunta tu cliente MCP a https://<your-mcp-url>/mcp con el encabezado Authorization: Bearer <ATS_MCP_TOKEN>, y establece TICKTICK_ACCESS_TOKEN para leer tus tareas reales. ¿Prefieres tu propia máquina o un VPS? Mismas piezas como contenedores Docker simples — consulta la guía de despliegue.

Adaptadores disponibles

Los conectores de backend permiten que un agente alcance Notion, GitHub y sistemas de tareas, pero el acceso solo no proporciona una respuesta clasificada a una pregunta como "¿qué sé sobre la migración de autenticación?" ATS añade una capa de recuperación común: el adaptador compuesto combina los corpus hijos instalados, asigna espacios de nombres a sus IDs de proyecto, une los resultados de búsqueda nativa admitidos y permite que Core clasifique las ramas disponibles con procedencia. Cada hijo lee sus propias credenciales, pero todos los hijos configurados se ejecutan en el mismo proceso de ATS.

AdaptadorFuente autoritativaNotas de recuperación o escritura
ticktickTickTick OpenAPI v1La recuperación por palabra clave/nativa funciona sin vectores; Qdrant + Ollama opcionales añaden recuperación densa.
obsidianBóveda Markdown localNativo de archivos, las escrituras tipo patch preservan frontmatter desconocido.
okfPaquete Markdown de Open Knowledge FormatPaquete local.
taskmaster.taskmaster/tasks/tasks.json localEstado de tareas local al repositorio.
beadsBeads local al repositorio vía bd --jsonEstado de tareas local con conciencia de dependencias.
airtableAPI REST de Airtable (tabla = proyecto)Acceso a API con alcance de adaptador.
googleGoogle Sheets / Docs / SlidesSolo lectura.
notionBases de datos y páginas de NotionAcceso con alcance de integración.
githubIssues y discussions de GitHubAcceso con alcance de repositorio.
compositeBackends hijos instaladosCombina corpus hijos, espacios de nombres para IDs de proyecto, unifica resultados de búsqueda nativa y enruta escrituras; no es un almacén de registros independiente y actualmente no expone embeddings hijos.
things / apple-notes / google-tasksLista de deseos, no implementado.

La autenticación y el mapeo por adaptador viven en el README de cada paquete. Se aceptan PRs — haz scaffolding y verifica contra el contrato:

ats adapter new linear              # writes a contract-complete skeleton
ats adapter test ./ats-adapter-linear   # pass/fail/skip per contract check

Compensaciones y límites

  • La frescura depende del adaptador. La caché de corpus de Core tiene un TTL predeterminado de cinco minutos. El comportamiento de sincronización del backend, la paginación y la inclusión de trabajo completado varían según el adaptador; ATS no promete lecturas universales en tiempo real. ats cache sync refresca la caché bajo demanda (compatible con cron) — de forma incremental cuando el adaptador implementa bulkFetchDelta(), como una recuperación completa en caso contrario.
  • La recuperación densa añade infraestructura. Qdrant y Ollama pueden mejorar el recuerdo semántico, pero añaden trabajo de indexación, persistencia, recursos y respaldo. La línea base find aún devuelve resultados por palabra clave/nativos cuando los vectores no están disponibles, aunque una rama de vectores intentada puede degradar la respuesta; las operaciones hybrid y similar solo con vectores aún requieren esa infraestructura.
  • El contrato común es intencionalmente pequeño. La interfaz del adaptador define seis métodos de almacenamiento más enlaces del ciclo de vida de autenticación, mientras que la cobertura práctica de escritura, campos más ricos y búsqueda nativa varían. Consulta el README del adaptador antes de asumir paridad entre backends.
  • Los resultados degradados siguen siendo resultados parciales. ATS informa ramas de Core fallidas o con tiempo agotado, fuentes de corpus descartadas — incluidos fallos por proyecto dentro de una recuperación compuesta de respaldo y recuperaciones de proyectos de TickTick — y fuentes de búsqueda nativa que un backend no pudo leer. El llamador debe decidir si el contexto parcial es aceptable; warnings dice qué falta, no si importó.
  • La búsqueda compuesta no es deduplicación semántica. ats dedup es un comando de análisis separado. La identidad de fusión tiene espacio de nombres por backend (<backend>:<taskId>), por lo que IDs crudos idénticos de diferentes backends permanecen como resultados distintos; las tareas semánticamente duplicadas aún aparecen por separado hasta que las enlazas.
  • El blueprint alojado es un despliegue de referencia, no un servicio gestionado. Un token bearer otorga toda la superficie de herramientas MCP; el blueprint no proporciona alcances por usuario o por herramienta, RBAC multiinquilino, alta disponibilidad ni un SLA.
  • El estado del runtime de ATS alojado es efímero por defecto. El blueprint persiste Qdrant y Ollama, pero no monta un disco para ats-mcp; su caché, registro de consultas, libro de acciones e imágenes previas de deshacer, cola de eventos y metadatos de sincronización de vectores desaparecen en un reinicio o redespliegue.
  • Los eventos son observaciones, no autorización. ats events watch puede informar cambios de tareas, pero un consumidor aún debe evaluar intención, validez y seguridad antes de tomar una acción externa.
  • La capa de hechos es léxica y con puerta humana. ats kg ask es puntuación determinista por palabra clave con procedencia, no búsqueda semántica, y nada llega al almacén de hechos sin ratificación humana — una ráfaga de propuestas de agentes espera revisión por diseño.
  • La política de ATS no es un sandbox. La CLI aplica los metadatos de aprobación declarados — una escritura cuyo objetivo establece intent.approvalRequired o lista la acción en security.approvalRequiredFor se pone en etapa en ats review en lugar de llegar al backend (ATS_REVIEW_ALL=1 controla cada escritura) — pero esto protege solo la ruta de escritura propia de ATS. ats security check sigue siendo un punto de decisión a nivel de aplicación para clientes cooperativos, y nada aquí intercepta acceso a shell, sistema de archivos, red, modelo o secretos fuera de ATS. Un cliente que llama a un adaptador directamente omite la puerta de la CLI.

Verificación y evidencia operativa

  • CI ejecuta la puerta completa del repositorio en Node 20 y 22: lint, verificaciones de afirmaciones públicas, verificaciones de PII, pruebas unitarias, pruebas de adaptador e intención, y el benchmark de progreso.
  • La puerta de seguridad de publicación escanea tanto la superficie del repositorio como los tarballs de paquetes npm en busca de secretos, rutas personales, patrones de datos personales configurados y términos de denylist configurados localmente. Protege las superficies de publicación. En runtime, el adaptador compuesto puede además hacer cumplir niveles de confianza por backend con patrones de redacción configurados — una escritura enrutada a un hijo "trust": "public" que coincide con un patrón se bloquea, no se elimina silenciosamente (ver el README compuesto). Esa pantalla protege la ruta de escritura compuesta propia de ATS; no es prevención general de pérdida de datos.
  • Pruebas de integridad de estado y convenciones cubren escrituras tipo patch, preservación de campos desconocidos, mapeo explícito de almacén a Task, procedencia de resultados y contribuciones RRF explicables.
  • Comportamiento de recuperación documenta las ramas de Core, la caché de corpus, presupuestos de tiempo, fallo elegante de ramas, registro de uso y qué afecta la latencia.

Estas puertas verifican el comportamiento del repositorio; no son una certificación de disponibilidad o seguridad de producción.

Superficie de CLI

# Lifecycle
ats init [adapter]                  # select an adapter and run a health check
ats config use <adapter>            # switch the active adapter
ats auth login                      # delegate login to the active adapter
ats doctor                          # inspect adapter and service health

# Retrieval  (any read command takes --json for piping to jq / agents)
ats find <query> [--explain]       # parallel + RRF + provenance — DEFAULT
ats open <project> <task>          # open any adapter item by explicit ids
ats context <project> <task>       # task + valid linked/retrieved context
ats link list <project> <task>     # list portable typed links
ats hybrid <query>                 # dense+sparse retrieval when embeddings exist
ats similar <id>                   # related items when embeddings exist

# Notes-layer shortcuts (currently TickTick and Obsidian)
ats get <id-or-title> [--extract raw|json|yaml]
ats url <id-or-title>              # paste-ready note cross-reference
ats links <project> <task>         # resolve deep-links in a note body

# Authoring
ats create "<title>" [--content ..][--project <id>]
ats update <project> <task> [--content ..][--title ..]

# Agent execution context (portable across adapters)
ats intent set <project> <task> --outcome ".." --done-when "a,b"
ats promote <src-proj> <src-task> <target-proj> --outcome ".." --done-when "a,b"
ats hierarchy set <project> <task> --kind task
ats hierarchy evaluate <project> <task>
ats lifecycle set <project> <task> --status active --valid-until 2026-12-31
ats link add <src-proj> <src-task> <dst-proj> <dst-task> --type decision
ats graph <project> <task>
ats context <project> <task>

# Facts layer (proposed by agents, ratified by you)
ats kg propose "Acme GmbH" "prefers" "invoices as PDF" --domain sales --source "call 2026-08-01"
ats review approve <id> && ats kg ratify --all
ats kg ask "what does Acme prefer" --domain sales --json
ats kg export --cypher > facts.cypher      # load into LadybugDB / Kùzu
ats ledger record <project> <task> --action release.verified --advanced true
ats security set <project> <task> --trust trusted --allow-actions read --allow-resources task:self
ats security check <project> <task> --action read --resource task:self --reason "load context"
ats events watch --json            # NDJSON observations; never launches agents

# Ops
ats review list                 # writes staged by approvalRequired targets
ats review approve ID && ats review apply --all
ats cache sync                  # refresh the corpus cache (cron-friendly)
ats bench run
ats bench score
ats bench progress --json
ats bench analyze-usage --days 7
npm run prove:intent
npm run prove:taskmaster
npm run prove:beads
npm run prove:progress

Úsalo desde cualquier cliente MCP (Claude Code, Claude Desktop, Cursor, Windsurf, OpenCode)

@reneza/ats-mcp expone el adaptador activo como un conjunto de herramientas que abarca recuperación, CRUD y contexto de ejecución (find, get_task, create_task, set_task_intent, add_task_link, resolve_task_links, context_for_task, record_action, undo_write, poll_task_events y más). Para Claude Code esto proporciona contexto persistente entre sesiones sin reemplazar el sistema de tareas como fuente de verdad; las cachés opcionales y los índices vectoriales siguen siendo estado de recuperación derivado.

ATS habla MCP sobre stdio, por lo que cualquier cliente que pueda lanzar un servidor MCP stdio funciona. Solo el archivo de configuración y la clave de wrapper difieren; el binario (ats-mcp) y su env ATS_ADAPTER son los mismos en todas partes.

ClienteDónde vive la configuraciónClave de wrapper
Claude Codeclaude mcp add (abajo)n/a
Claude Desktopclaude_desktop_config.jsonmcpServers
Cursor~/.cursor/mcp.jsonmcpServers
Windsurf~/.codeium/windsurf/mcp_config.jsonmcpServers
OpenCodeopencode.jsonmcp (la forma difiere, abajo)
# Claude Code
claude mcp add ats -e ATS_ADAPTER=@reneza/ats-adapter-ticktick -- ats-mcp
// Claude Desktop / Cursor / Windsurf — identical `mcpServers` shape
{
  "mcpServers": {
    "ats": { "command": "ats-mcp", "env": { "ATS_ADAPTER": "@reneza/ats-adapter-ticktick" } }
  }
}
// OpenCode (opencode.json) — local stdio server, note `command` is an array
{
  "mcp": {
    "ats": {
      "type": "local",
      "command": ["ats-mcp"],
      "environment": { "ATS_ADAPTER": "@reneza/ats-adapter-ticktick" },
      "enabled": true
    }
  }
}

Instala el binario en PATH primero (npm i -g @reneza/ats-cli), o usa una ruta absoluta a ats-mcp si tu cliente no hereda tu PATH de shell.

Convenciones

  • Proyecto wiki. Un proyecto designado (por defecto Permanent Notes) contiene conocimiento duradero; otros contienen tareas efímeras.
  • Notas de datos de agente = una nota cuyo cuerpo tiene un bloque cercado json / yaml block, extracted via ats get <title> --extract json.
  • Referencias cruzadas = enlaces profundos nativos del adaptador — genera con ats url <title>, no los escribas a mano.
  • Patrón completo: docs/wiki-conventions.md.

Integridad de estado

ATS prueba reescrituras de metadatos gestionados para preservación de campos escritos por humanos, requiere mapeo explícito de almacén a Task, y lleva procedencia de resultados (sources, find --explain). La cobertura y el comportamiento de actualización cruda siguen siendo específicos del adaptador. Una puerta de seguridad de publicación (check-no-pii.mjs) falla la compilación cuando patrones de datos personales cubiertos aparecen en superficies de repositorio o paquete. Nota completa: docs/state-integrity.md.

Para el modelo operativo del lado del agente, ver docs/task-graph-for-agents.md: el texto de la tarea es la proyección humana, pero la capa de ejecución necesita enlaces estructurados, comandos de prueba, requisitos de revisión y objetivos de escritura inversa.

Trabajando en ATS

Contribuciones bienvenidas — correcciones de errores y especialmente nuevos adaptadores bajo packages/adapter-*. Ver CONTRIBUTING.md para la configuración de desarrollo y el patrón de adaptador, y AGENTS.md si conduces un agente de codificación sobre el repositorio. Trabajando en el código fuente, pi-codegraph le da a tu agente un grafo de llamadas del monorepo — el patrón de adaptador y el radio de explosión de un cambio central — para que deje de releer todo el árbol en cada sesión.

Lanzamientos y licencia

v0.10.0 añadió informes de recuperación parcial, reranking opcional, observabilidad de uso, detección de duplicados/contradicciones y refresco OAuth reactivo. v0.9.0 añadió escrituras reversibles, enlaces hacia adelante/colgantes, endurecimiento de rutas de Obsidian y configuración stdio verificada para más clientes. Historial completo: CHANGELOG.md.

MIT. Ver LICENSE.

Si ATS es útil, considera un ⭐ — ayuda a otros a encontrarlo.