ai-coordinator 0.5.1__tar.gz

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 (65) hide show
  1. ai_coordinator-0.5.1/LICENSE +73 -0
  2. ai_coordinator-0.5.1/NOTICE +1 -0
  3. ai_coordinator-0.5.1/PKG-INFO +189 -0
  4. ai_coordinator-0.5.1/README.md +163 -0
  5. ai_coordinator-0.5.1/pyproject.toml +43 -0
  6. ai_coordinator-0.5.1/setup.cfg +4 -0
  7. ai_coordinator-0.5.1/src/ai_coordinator/COORDINATOR.example.md +24 -0
  8. ai_coordinator-0.5.1/src/ai_coordinator/__init__.py +349 -0
  9. ai_coordinator-0.5.1/src/ai_coordinator/__main__.py +4 -0
  10. ai_coordinator-0.5.1/src/ai_coordinator/ai_memory_adapter.py +512 -0
  11. ai_coordinator-0.5.1/src/ai_coordinator/api.py +114 -0
  12. ai_coordinator-0.5.1/src/ai_coordinator/availability.py +525 -0
  13. ai_coordinator-0.5.1/src/ai_coordinator/cli.py +1231 -0
  14. ai_coordinator-0.5.1/src/ai_coordinator/contracts.py +185 -0
  15. ai_coordinator-0.5.1/src/ai_coordinator/dag.py +418 -0
  16. ai_coordinator-0.5.1/src/ai_coordinator/data.py +34 -0
  17. ai_coordinator-0.5.1/src/ai_coordinator/experience.py +440 -0
  18. ai_coordinator-0.5.1/src/ai_coordinator/fs_sandbox.py +869 -0
  19. ai_coordinator-0.5.1/src/ai_coordinator/human_workspace.py +1206 -0
  20. ai_coordinator-0.5.1/src/ai_coordinator/insights.py +865 -0
  21. ai_coordinator-0.5.1/src/ai_coordinator/invariants.py +542 -0
  22. ai_coordinator-0.5.1/src/ai_coordinator/knowledge.py +801 -0
  23. ai_coordinator-0.5.1/src/ai_coordinator/knowledge_learning.py +342 -0
  24. ai_coordinator-0.5.1/src/ai_coordinator/mcp_server.py +114 -0
  25. ai_coordinator-0.5.1/src/ai_coordinator/mission.py +583 -0
  26. ai_coordinator-0.5.1/src/ai_coordinator/process.py +1634 -0
  27. ai_coordinator-0.5.1/src/ai_coordinator/py.typed +0 -0
  28. ai_coordinator-0.5.1/src/ai_coordinator/reconstruction.py +393 -0
  29. ai_coordinator-0.5.1/src/ai_coordinator/resource_ledger.py +647 -0
  30. ai_coordinator-0.5.1/src/ai_coordinator/routes.example.json +208 -0
  31. ai_coordinator-0.5.1/src/ai_coordinator/runtime.py +301 -0
  32. ai_coordinator-0.5.1/src/ai_coordinator/storage.py +2790 -0
  33. ai_coordinator-0.5.1/src/ai_coordinator/streaming.py +315 -0
  34. ai_coordinator-0.5.1/src/ai_coordinator/tool_broker.py +1245 -0
  35. ai_coordinator-0.5.1/src/ai_coordinator/trajectory.py +648 -0
  36. ai_coordinator-0.5.1/src/ai_coordinator/worker_audit.py +711 -0
  37. ai_coordinator-0.5.1/src/ai_coordinator.egg-info/PKG-INFO +189 -0
  38. ai_coordinator-0.5.1/src/ai_coordinator.egg-info/SOURCES.txt +63 -0
  39. ai_coordinator-0.5.1/src/ai_coordinator.egg-info/dependency_links.txt +1 -0
  40. ai_coordinator-0.5.1/src/ai_coordinator.egg-info/entry_points.txt +3 -0
  41. ai_coordinator-0.5.1/src/ai_coordinator.egg-info/requires.txt +3 -0
  42. ai_coordinator-0.5.1/src/ai_coordinator.egg-info/top_level.txt +1 -0
  43. ai_coordinator-0.5.1/tests/test_core.py +267 -0
  44. ai_coordinator-0.5.1/tests/test_dag_versioning.py +458 -0
  45. ai_coordinator-0.5.1/tests/test_invariants_and_resource_ledger.py +604 -0
  46. ai_coordinator-0.5.1/tests/test_mission_control.py +436 -0
  47. ai_coordinator-0.5.1/tests/test_mission_e2e_integration.py +426 -0
  48. ai_coordinator-0.5.1/tests/test_phase3d_adaptive_reconstruction_and_insights.py +1065 -0
  49. ai_coordinator-0.5.1/tests/test_phase3e_integrated_stress_and_fencing.py +1112 -0
  50. ai_coordinator-0.5.1/tests/test_phase4a_knowledge_learning.py +244 -0
  51. ai_coordinator-0.5.1/tests/test_phase4a_unified_knowledge_core.py +757 -0
  52. ai_coordinator-0.5.1/tests/test_phase4b_adversarial_suite.py +805 -0
  53. ai_coordinator-0.5.1/tests/test_phase4b_ai_memory_integration.py +580 -0
  54. ai_coordinator-0.5.1/tests/test_phase4b_filesystem_sandbox.py +497 -0
  55. ai_coordinator-0.5.1/tests/test_phase4b_human_workspace.py +1392 -0
  56. ai_coordinator-0.5.1/tests/test_phase4b_multiplatform_regression.py +712 -0
  57. ai_coordinator-0.5.1/tests/test_phase4b_process_sandbox.py +223 -0
  58. ai_coordinator-0.5.1/tests/test_phase4b_tool_broker.py +442 -0
  59. ai_coordinator-0.5.1/tests/test_phase4b_worker_audit.py +420 -0
  60. ai_coordinator-0.5.1/tests/test_process_lifecycle.py +200 -0
  61. ai_coordinator-0.5.1/tests/test_security_hardening_h1_h7.py +282 -0
  62. ai_coordinator-0.5.1/tests/test_storage_atomicity_and_reconciliation.py +359 -0
  63. ai_coordinator-0.5.1/tests/test_streaming_and_contracts.py +258 -0
  64. ai_coordinator-0.5.1/tests/test_trajectory_predictor.py +367 -0
  65. ai_coordinator-0.5.1/tests/test_v051_security_hardening.py +388 -0
@@ -0,0 +1,73 @@
1
+ # PolyForm Noncommercial License 1.0.0
2
+
3
+ <https://polyformproject.org/licenses/noncommercial/1.0.0>
4
+
5
+ ## Acceptance
6
+
7
+ In order to get any license under these terms, you must agree to them as both strict obligations and conditions to all your licenses.
8
+
9
+ ## Copyright License
10
+
11
+ The licensor grants you a copyright license for the software to do everything you might do with the software that would otherwise infringe the licensor's copyright in it for any permitted purpose. However, you may only distribute the software according to [Distribution License](#distribution-license) and make changes or new works based on the software according to [Changes and New Works License](#changes-and-new-works-license).
12
+
13
+ ## Distribution License
14
+
15
+ The licensor grants you an additional copyright license to distribute copies of the software. Your license to distribute covers distributing the software with changes and new works permitted by [Changes and New Works License](#changes-and-new-works-license).
16
+
17
+ ## Notices
18
+
19
+ You must ensure that anyone who gets a copy of any part of the software from you also gets a copy of these terms or the URL for them above, as well as copies of any plain-text lines beginning with `Required Notice:` that the licensor provided with the software. For example:
20
+
21
+ > Required Notice: Copyright Yoyodyne, Inc. (http://example.com)
22
+
23
+ ## Changes and New Works License
24
+
25
+ The licensor grants you an additional copyright license to make changes and new works based on the software for any permitted purpose.
26
+
27
+ ## Patent License
28
+
29
+ The licensor grants you a patent license for the software that covers patent claims the licensor can license, or becomes able to license, that you would infringe by using the software.
30
+
31
+ ## Noncommercial Purposes
32
+
33
+ Any noncommercial purpose is a permitted purpose.
34
+
35
+ ## Personal Uses
36
+
37
+ Personal use for research, experiment, and testing for the benefit of public knowledge, personal study, private entertainment, hobby projects, amateur pursuits, or religious observance, without any anticipated commercial application, is use for a permitted purpose.
38
+
39
+ ## Noncommercial Organizations
40
+
41
+ Use by any charitable organization, educational institution, public research organization, public safety or health organization, environmental protection organization, or government institution is use for a permitted purpose regardless of the source of funding or obligations resulting from the funding.
42
+
43
+ ## Fair Use
44
+
45
+ You may have "fair use" rights for the software under the law. These terms do not limit them.
46
+
47
+ ## No Other Rights
48
+
49
+ These terms do not allow you to sublicense or transfer any of your licenses to anyone else, or prevent the licensor from granting licenses to anyone else. These terms do not imply any other licenses.
50
+
51
+ ## Patent Defense
52
+
53
+ If you make any written claim that the software infringes or contributes to infringement of any patent, your patent license for the software granted under these terms ends immediately. If your company makes such a claim, your patent license ends immediately for work on behalf of your company.
54
+
55
+ ## Violations
56
+
57
+ The first time you are notified in writing that you have violated any of these terms, or done anything with the software not covered by your licenses, your licenses can nonetheless continue if you come into full compliance with these terms, and take practical steps to correct past violations, within 32 days of receiving notice. Otherwise, all your licenses end immediately.
58
+
59
+ ## No Liability
60
+
61
+ ***As far as the law allows, the software comes as is, without any warranty or condition, and the licensor will not be liable to you for any damages arising out of these terms or the use or nature of the software, under any kind of legal claim.***
62
+
63
+ ## Definitions
64
+
65
+ The **licensor** is the individual or entity offering these terms, and the **software** is the software the licensor makes available under these terms.
66
+
67
+ **You** refers to the individual or entity agreeing to these terms.
68
+
69
+ **Your company** is any legal entity, sole proprietorship, or other kind of organization that you work for, plus all organizations that have control over, are under the control of, or are under common control with that organization. **Control** means ownership of substantially all the assets of an entity, or the power to direct its management and policies by vote, contract, or otherwise. Control can be direct or indirect.
70
+
71
+ **Your licenses** are all the licenses granted to you for the software under these terms.
72
+
73
+ **Use** means anything you do with the software requiring one of your licenses.
@@ -0,0 +1 @@
1
+ Required Notice: Copyright (c) 2026 MaxxArtes. https://github.com/MaxxArtes/ai-coordinator
@@ -0,0 +1,189 @@
1
+ Metadata-Version: 2.4
2
+ Name: ai-coordinator
3
+ Version: 0.5.1
4
+ Summary: Portable shared task state and bounded routing for local AI coding agents
5
+ License-Expression: PolyForm-Noncommercial-1.0.0
6
+ Project-URL: Homepage, https://github.com/MaxxArtes/ai-coordinator
7
+ Project-URL: Repository, https://github.com/MaxxArtes/ai-coordinator
8
+ Project-URL: Issues, https://github.com/MaxxArtes/ai-coordinator/issues
9
+ Keywords: ai-agents,mcp,agent-skills,coordination
10
+ Classifier: Development Status :: 3 - Alpha
11
+ Classifier: Environment :: Console
12
+ Classifier: Operating System :: OS Independent
13
+ Classifier: Programming Language :: Python :: 3
14
+ Classifier: Programming Language :: Python :: 3.11
15
+ Classifier: Programming Language :: Python :: 3.12
16
+ Classifier: Programming Language :: Python :: 3.13
17
+ Classifier: Programming Language :: Python :: 3.14
18
+ Classifier: Topic :: Software Development :: Libraries :: Python Modules
19
+ Requires-Python: >=3.11
20
+ Description-Content-Type: text/markdown
21
+ License-File: LICENSE
22
+ License-File: NOTICE
23
+ Provides-Extra: mcp
24
+ Requires-Dist: mcp<3,>=2; extra == "mcp"
25
+ Dynamic: license-file
26
+
27
+ # ai-coordinator
28
+
29
+ Estado de tarefas compartilhado entre agentes de programação e operadores humanos, com retomada por checkpoints cognitivos, rotas configuráveis, avaliação comparável de candidatos, governança de ferramentas via Tool Broker com tokens HMAC e contenção física de workers em sandboxes nativas do sistema operacional. O núcleo funciona em Windows, macOS e Linux com Python 3.11 ou superior.
30
+
31
+ ---
32
+
33
+ ## O que vem no repositório
34
+
35
+ - **Biblioteca Python**: `Coordinator` para criar tarefas, ler contexto, gravar checkpoints cognitivos, consultar rotas e delegar execuções a workers isolados.
36
+ - **CLI**: bootstrap de projetos, retomada, checkpoints, consulta de disponibilidade, planejamento, execução e monitoramento de workers.
37
+ - **Human-AI Cognitive Workspace**: sessões supervisionadas (`HumanPrincipal`, `HumanSession`), controle de acesso por papéis (RBAC), checkpoints cognitivos com hashes SHA-256 de árvores de arquivos e integração com o ecossistema `ai-memory`.
38
+ - **Sandboxes Nativas de SO**: isolamento físico de processos e sistema de arquivos em nível de kernel:
39
+ - **Windows NT**: Win32 Job Objects suspensos (`CREATE_SUSPENDED`), cotas de recursos e perfis AppContainer com restrição NTFS.
40
+ - **Linux**: Landlock LSM (Linux 5.13+) com `PR_SET_NO_NEW_PRIVS` e Trampoline seguro (`sys.executable -I -S -c`).
41
+ - **macOS**: Apple Seatbelt Sandbox (`/usr/bin/sandbox-exec`) operando sob `(deny default)` e menor privilégio estrito.
42
+ - **Tool Broker e Capability Tokens**: governança com negação por padrão (`deny-by-default`), tokens criptográficos HMAC-SHA256, cotas atômicas por ferramenta, expiração temporal (TTL), aprovações humanas pendentes e mediação assíncrona via Mailbox de arquivos (`.broker`).
43
+ - **Trilha de Auditoria Imutável**: tabela SQLite append-only protegida por triggers contra `UPDATE`/`DELETE`, hash canônico de 15 campos e arquitetura de dupla ancoragem (tabela interna e arquivo externo desacoplado `auth/audit.anchor` com `fsync()`).
44
+ - **Servidor MCP**: tools para estado de tarefas, checkpoints e delegação explicitamente chamada pelo agente via stdio.
45
+ - **Agent Skill**: instruções para encontrar e retomar a tarefa adequada sem carregar históricos extensos.
46
+ - **Plugin Claude Code**: skill e configuração integrada para conectar o servidor MCP.
47
+ - **Plugin OpenCode V2**: tools para acessar o mesmo estado local pela CLI de forma determinística.
48
+ - **Avaliação de rotas**: executa casos fixos contra candidatos selecionados e registra saída, tempo e métricas para nota humana.
49
+
50
+ O estado e a configuração ficam no diretório de dados do usuário. Na primeira execução, o programa copia `routes.example.json` e o protocolo compartilhado para esse diretório, sem substituir arquivos existentes. Defina `AI_COORDINATOR_HOME` para usar outro local. Credenciais e dados de execução não fazem parte do pacote.
51
+
52
+ ---
53
+
54
+ ## Instalação do código-fonte
55
+
56
+ Clone o repositório e instale o pacote. Para habilitar o servidor MCP:
57
+
58
+ ```console
59
+ python -m pip install ".[mcp]"
60
+ ```
61
+
62
+ Com o pacote instalado, os comandos disponíveis são:
63
+
64
+ ```console
65
+ ai-coordinator --help
66
+ ai-coordinator routes
67
+ ai-coordinator bootstrap --project .
68
+ ```
69
+
70
+ Na primeira execução, revise `routes.json` no diretório de dados do usuário e configure os executáveis locais dos agentes que pretende usar. Os nomes e modelos do arquivo de exemplo são configurações iniciais; catálogo ou rota configurada não confirma saldo, cota ou acesso.
71
+
72
+ ---
73
+
74
+ ## Isolamento e Segurança
75
+
76
+ O AI Coordinator executa workers sob política de menor privilégio e isolamento de processo no sistema operacional:
77
+
78
+ - **Protocolo de Inicialização em Duas Fases**: O worker é criado suspenso no SO, seu PID e identidade estável são registrados na trilha de auditoria e a execução só é liberada (`resume()`) após o commit durável da auditoria. Falhas na auditoria abortam o processo antes da execução de qualquer comando (*fail-closed*).
79
+ - **Sandboxes de Filesystem**: Workers têm permissão de escrita restrita exclusivamente à sua própria pasta temporária de sandbox. Tentativas de ler chaves do coordenador (`auth/`), banco SQLite, credenciais de usuário (`.ssh`, `.aws`) ou tarefas irmãs são bloqueadas pelo kernel do SO.
80
+ - **Tool Broker e Mailbox**: Workers não possuem acesso a rede ou IPC direto. Ferramentas são solicitadas via arquivos JSON na pasta `.broker/requests` assinados com token HMAC e mediadas pelo supervisor durante o streaming. Tentativas de spoofing de PID ou adulteração de token encerram imediatamente a árvore de processos do worker.
81
+
82
+ Consulte [`docs/security.md`](docs/security.md) e [`docs/architecture.md`](docs/architecture.md) para detalhes completos sobre limites, ameaças e garantias.
83
+
84
+ ---
85
+
86
+ ## Biblioteca Python
87
+
88
+ ```python
89
+ from ai_coordinator import Coordinator
90
+
91
+ with Coordinator() as coordinator:
92
+ task = coordinator.new_task(".", "Revisar o tratamento de erros")
93
+ print(task["id"])
94
+ print(task["ai_memory_workstream_id"])
95
+ print(coordinator.active_tasks("."))
96
+ ```
97
+
98
+ Use `Coordinator(root=".../dados")` para escolher um diretório de dados próprio. A API exportada está em `ai_coordinator.Coordinator` e `ai_coordinator.open_coordinator`.
99
+
100
+ Quando `AI_MEMORY_WORKSTREAM_ID` estiver definido, uma tarefa nova guarda esse UUID como referência ao workstream atual do ai-memory. Também é possível passar `ai_memory_workstream_id` a `new_task` ou `--ai-memory-workstream-id` à CLI. O coordenador armazena o identificador e integra o contexto de forma resiliente, tratando memórias como dados não-confiáveis.
101
+
102
+ ---
103
+
104
+ ## Avaliar candidatos de rota
105
+
106
+ `benchmark` executa cada caso contra os candidatos habilitados da categoria. Cada par caso/candidato agenda no máximo uma chamada; `--max-calls` é obrigatório porque a chamada pode consumir quota ou saldo. O comando grava as saídas e as métricas, mas não escolhe um vencedor automaticamente.
107
+
108
+ ```console
109
+ ai-coordinator benchmark --project . --cases evals/cases.example.json --max-calls 12
110
+ ```
111
+
112
+ Depois de revisar as respostas, preencha `quality_score` de 0 a 5 e `review_notes` no JSON de resultados. Gere o resumo:
113
+
114
+ ```console
115
+ ai-coordinator benchmark-report --input caminho/benchmark.json
116
+ ```
117
+
118
+ Veja [`evals/README.md`](evals/README.md) para os limites da comparação e os exemplos. As respostas não são pontuadas por outro modelo: o ranking usa notas humanas e mostra separadamente tempo, tokens e custo informado.
119
+
120
+ ---
121
+
122
+ ## Servidor MCP
123
+
124
+ Instale a dependência opcional e configure o host para iniciar `ai-coordinator-mcp` em transporte stdio:
125
+
126
+ ```json
127
+ {
128
+ "mcpServers": {
129
+ "ai-coordinator": {
130
+ "command": "ai-coordinator-mcp",
131
+ "args": []
132
+ }
133
+ }
134
+ }
135
+ ```
136
+
137
+ O servidor oferece tools para bootstrap do projeto, listar/criar tarefas, retomar, gravar checkpoint, consultar rotas e planejar workers. `delegate_to_worker` inicia uma chamada externa aos clientes locais configurados e pode consumir cota ou saldo; a resposta é uma proposta que precisa de revisão.
138
+
139
+ ---
140
+
141
+ ## Agent Skill
142
+
143
+ Use `skills/ai-coordinator/SKILL.md` em ferramentas compatíveis com Agent Skills. Ele orienta o agente a consultar o estado compartilhado sem carregar históricos completos.
144
+
145
+ ---
146
+
147
+ ## Claude Code
148
+
149
+ O plugin está em `plugins/claude-code`. Depois de instalar `ai-coordinator[mcp]`, adicione o marketplace e instale o plugin:
150
+
151
+ ```console
152
+ claude plugin marketplace add MaxxArtes/ai-coordinator
153
+ claude plugin install ai-coordinator@ai-coordinator-marketplace
154
+ ```
155
+
156
+ O marketplace contém um plugin com skill e configuração MCP. Se instalar apenas o ZIP de release, carregue-o com `claude --plugin-url <URL-do-asset>`.
157
+
158
+ ---
159
+
160
+ ## OpenCode V2
161
+
162
+ O plugin está em `plugins/opencode`. Instale o pacote Python e a dependência do plugin, depois adicione o caminho do plugin à configuração OpenCode:
163
+
164
+ ```json
165
+ {
166
+ "plugins": ["./plugins/opencode"]
167
+ }
168
+ ```
169
+
170
+ O plugin invoca a CLI por argumentos separados, sem passar comandos por um shell. Seu agente OpenCode terá tools para bootstrap, contexto, criação e retomada de tarefas, checkpoints, plano de rota e delegação.
171
+
172
+ ---
173
+
174
+ ## Releases
175
+
176
+ Ao publicar uma tag `v*`, o workflow gera e anexa ao GitHub Release:
177
+
178
+ - wheel e source distribution Python;
179
+ - ZIP da skill;
180
+ - ZIP do plugin Claude Code;
181
+ - tarball npm do plugin OpenCode.
182
+
183
+ Cada formato é versionado a partir da tag e inclui `LICENSE` e `NOTICE`. O servidor MCP acompanha o pacote Python como extra opcional. Pull requests e releases executam verificações automatizadas; veja a [matriz de suporte](docs/support-matrix.md) para saber o que é validado no CI e o que ainda exige conferência no cliente nativo.
184
+
185
+ ---
186
+
187
+ ## Licença
188
+
189
+ O projeto usa a [PolyForm Noncommercial 1.0.0](https://polyformproject.org/licenses/noncommercial/1.0.0). Ela permite uso e distribuição para fins não comerciais; uso comercial exige autorização separada do titular dos direitos. Essa restrição também pode se aplicar ao uso dentro de uma empresa. Consulte `LICENSE` e `NOTICE` antes de distribuir ou incorporar o pacote.
@@ -0,0 +1,163 @@
1
+ # ai-coordinator
2
+
3
+ Estado de tarefas compartilhado entre agentes de programação e operadores humanos, com retomada por checkpoints cognitivos, rotas configuráveis, avaliação comparável de candidatos, governança de ferramentas via Tool Broker com tokens HMAC e contenção física de workers em sandboxes nativas do sistema operacional. O núcleo funciona em Windows, macOS e Linux com Python 3.11 ou superior.
4
+
5
+ ---
6
+
7
+ ## O que vem no repositório
8
+
9
+ - **Biblioteca Python**: `Coordinator` para criar tarefas, ler contexto, gravar checkpoints cognitivos, consultar rotas e delegar execuções a workers isolados.
10
+ - **CLI**: bootstrap de projetos, retomada, checkpoints, consulta de disponibilidade, planejamento, execução e monitoramento de workers.
11
+ - **Human-AI Cognitive Workspace**: sessões supervisionadas (`HumanPrincipal`, `HumanSession`), controle de acesso por papéis (RBAC), checkpoints cognitivos com hashes SHA-256 de árvores de arquivos e integração com o ecossistema `ai-memory`.
12
+ - **Sandboxes Nativas de SO**: isolamento físico de processos e sistema de arquivos em nível de kernel:
13
+ - **Windows NT**: Win32 Job Objects suspensos (`CREATE_SUSPENDED`), cotas de recursos e perfis AppContainer com restrição NTFS.
14
+ - **Linux**: Landlock LSM (Linux 5.13+) com `PR_SET_NO_NEW_PRIVS` e Trampoline seguro (`sys.executable -I -S -c`).
15
+ - **macOS**: Apple Seatbelt Sandbox (`/usr/bin/sandbox-exec`) operando sob `(deny default)` e menor privilégio estrito.
16
+ - **Tool Broker e Capability Tokens**: governança com negação por padrão (`deny-by-default`), tokens criptográficos HMAC-SHA256, cotas atômicas por ferramenta, expiração temporal (TTL), aprovações humanas pendentes e mediação assíncrona via Mailbox de arquivos (`.broker`).
17
+ - **Trilha de Auditoria Imutável**: tabela SQLite append-only protegida por triggers contra `UPDATE`/`DELETE`, hash canônico de 15 campos e arquitetura de dupla ancoragem (tabela interna e arquivo externo desacoplado `auth/audit.anchor` com `fsync()`).
18
+ - **Servidor MCP**: tools para estado de tarefas, checkpoints e delegação explicitamente chamada pelo agente via stdio.
19
+ - **Agent Skill**: instruções para encontrar e retomar a tarefa adequada sem carregar históricos extensos.
20
+ - **Plugin Claude Code**: skill e configuração integrada para conectar o servidor MCP.
21
+ - **Plugin OpenCode V2**: tools para acessar o mesmo estado local pela CLI de forma determinística.
22
+ - **Avaliação de rotas**: executa casos fixos contra candidatos selecionados e registra saída, tempo e métricas para nota humana.
23
+
24
+ O estado e a configuração ficam no diretório de dados do usuário. Na primeira execução, o programa copia `routes.example.json` e o protocolo compartilhado para esse diretório, sem substituir arquivos existentes. Defina `AI_COORDINATOR_HOME` para usar outro local. Credenciais e dados de execução não fazem parte do pacote.
25
+
26
+ ---
27
+
28
+ ## Instalação do código-fonte
29
+
30
+ Clone o repositório e instale o pacote. Para habilitar o servidor MCP:
31
+
32
+ ```console
33
+ python -m pip install ".[mcp]"
34
+ ```
35
+
36
+ Com o pacote instalado, os comandos disponíveis são:
37
+
38
+ ```console
39
+ ai-coordinator --help
40
+ ai-coordinator routes
41
+ ai-coordinator bootstrap --project .
42
+ ```
43
+
44
+ Na primeira execução, revise `routes.json` no diretório de dados do usuário e configure os executáveis locais dos agentes que pretende usar. Os nomes e modelos do arquivo de exemplo são configurações iniciais; catálogo ou rota configurada não confirma saldo, cota ou acesso.
45
+
46
+ ---
47
+
48
+ ## Isolamento e Segurança
49
+
50
+ O AI Coordinator executa workers sob política de menor privilégio e isolamento de processo no sistema operacional:
51
+
52
+ - **Protocolo de Inicialização em Duas Fases**: O worker é criado suspenso no SO, seu PID e identidade estável são registrados na trilha de auditoria e a execução só é liberada (`resume()`) após o commit durável da auditoria. Falhas na auditoria abortam o processo antes da execução de qualquer comando (*fail-closed*).
53
+ - **Sandboxes de Filesystem**: Workers têm permissão de escrita restrita exclusivamente à sua própria pasta temporária de sandbox. Tentativas de ler chaves do coordenador (`auth/`), banco SQLite, credenciais de usuário (`.ssh`, `.aws`) ou tarefas irmãs são bloqueadas pelo kernel do SO.
54
+ - **Tool Broker e Mailbox**: Workers não possuem acesso a rede ou IPC direto. Ferramentas são solicitadas via arquivos JSON na pasta `.broker/requests` assinados com token HMAC e mediadas pelo supervisor durante o streaming. Tentativas de spoofing de PID ou adulteração de token encerram imediatamente a árvore de processos do worker.
55
+
56
+ Consulte [`docs/security.md`](docs/security.md) e [`docs/architecture.md`](docs/architecture.md) para detalhes completos sobre limites, ameaças e garantias.
57
+
58
+ ---
59
+
60
+ ## Biblioteca Python
61
+
62
+ ```python
63
+ from ai_coordinator import Coordinator
64
+
65
+ with Coordinator() as coordinator:
66
+ task = coordinator.new_task(".", "Revisar o tratamento de erros")
67
+ print(task["id"])
68
+ print(task["ai_memory_workstream_id"])
69
+ print(coordinator.active_tasks("."))
70
+ ```
71
+
72
+ Use `Coordinator(root=".../dados")` para escolher um diretório de dados próprio. A API exportada está em `ai_coordinator.Coordinator` e `ai_coordinator.open_coordinator`.
73
+
74
+ Quando `AI_MEMORY_WORKSTREAM_ID` estiver definido, uma tarefa nova guarda esse UUID como referência ao workstream atual do ai-memory. Também é possível passar `ai_memory_workstream_id` a `new_task` ou `--ai-memory-workstream-id` à CLI. O coordenador armazena o identificador e integra o contexto de forma resiliente, tratando memórias como dados não-confiáveis.
75
+
76
+ ---
77
+
78
+ ## Avaliar candidatos de rota
79
+
80
+ `benchmark` executa cada caso contra os candidatos habilitados da categoria. Cada par caso/candidato agenda no máximo uma chamada; `--max-calls` é obrigatório porque a chamada pode consumir quota ou saldo. O comando grava as saídas e as métricas, mas não escolhe um vencedor automaticamente.
81
+
82
+ ```console
83
+ ai-coordinator benchmark --project . --cases evals/cases.example.json --max-calls 12
84
+ ```
85
+
86
+ Depois de revisar as respostas, preencha `quality_score` de 0 a 5 e `review_notes` no JSON de resultados. Gere o resumo:
87
+
88
+ ```console
89
+ ai-coordinator benchmark-report --input caminho/benchmark.json
90
+ ```
91
+
92
+ Veja [`evals/README.md`](evals/README.md) para os limites da comparação e os exemplos. As respostas não são pontuadas por outro modelo: o ranking usa notas humanas e mostra separadamente tempo, tokens e custo informado.
93
+
94
+ ---
95
+
96
+ ## Servidor MCP
97
+
98
+ Instale a dependência opcional e configure o host para iniciar `ai-coordinator-mcp` em transporte stdio:
99
+
100
+ ```json
101
+ {
102
+ "mcpServers": {
103
+ "ai-coordinator": {
104
+ "command": "ai-coordinator-mcp",
105
+ "args": []
106
+ }
107
+ }
108
+ }
109
+ ```
110
+
111
+ O servidor oferece tools para bootstrap do projeto, listar/criar tarefas, retomar, gravar checkpoint, consultar rotas e planejar workers. `delegate_to_worker` inicia uma chamada externa aos clientes locais configurados e pode consumir cota ou saldo; a resposta é uma proposta que precisa de revisão.
112
+
113
+ ---
114
+
115
+ ## Agent Skill
116
+
117
+ Use `skills/ai-coordinator/SKILL.md` em ferramentas compatíveis com Agent Skills. Ele orienta o agente a consultar o estado compartilhado sem carregar históricos completos.
118
+
119
+ ---
120
+
121
+ ## Claude Code
122
+
123
+ O plugin está em `plugins/claude-code`. Depois de instalar `ai-coordinator[mcp]`, adicione o marketplace e instale o plugin:
124
+
125
+ ```console
126
+ claude plugin marketplace add MaxxArtes/ai-coordinator
127
+ claude plugin install ai-coordinator@ai-coordinator-marketplace
128
+ ```
129
+
130
+ O marketplace contém um plugin com skill e configuração MCP. Se instalar apenas o ZIP de release, carregue-o com `claude --plugin-url <URL-do-asset>`.
131
+
132
+ ---
133
+
134
+ ## OpenCode V2
135
+
136
+ O plugin está em `plugins/opencode`. Instale o pacote Python e a dependência do plugin, depois adicione o caminho do plugin à configuração OpenCode:
137
+
138
+ ```json
139
+ {
140
+ "plugins": ["./plugins/opencode"]
141
+ }
142
+ ```
143
+
144
+ O plugin invoca a CLI por argumentos separados, sem passar comandos por um shell. Seu agente OpenCode terá tools para bootstrap, contexto, criação e retomada de tarefas, checkpoints, plano de rota e delegação.
145
+
146
+ ---
147
+
148
+ ## Releases
149
+
150
+ Ao publicar uma tag `v*`, o workflow gera e anexa ao GitHub Release:
151
+
152
+ - wheel e source distribution Python;
153
+ - ZIP da skill;
154
+ - ZIP do plugin Claude Code;
155
+ - tarball npm do plugin OpenCode.
156
+
157
+ Cada formato é versionado a partir da tag e inclui `LICENSE` e `NOTICE`. O servidor MCP acompanha o pacote Python como extra opcional. Pull requests e releases executam verificações automatizadas; veja a [matriz de suporte](docs/support-matrix.md) para saber o que é validado no CI e o que ainda exige conferência no cliente nativo.
158
+
159
+ ---
160
+
161
+ ## Licença
162
+
163
+ O projeto usa a [PolyForm Noncommercial 1.0.0](https://polyformproject.org/licenses/noncommercial/1.0.0). Ela permite uso e distribuição para fins não comerciais; uso comercial exige autorização separada do titular dos direitos. Essa restrição também pode se aplicar ao uso dentro de uma empresa. Consulte `LICENSE` e `NOTICE` antes de distribuir ou incorporar o pacote.
@@ -0,0 +1,43 @@
1
+ [build-system]
2
+ requires = ["setuptools>=77", "wheel"]
3
+ build-backend = "setuptools.build_meta"
4
+
5
+ [project]
6
+ name = "ai-coordinator"
7
+ version = "0.5.1"
8
+ description = "Portable shared task state and bounded routing for local AI coding agents"
9
+ readme = "README.md"
10
+ license = "PolyForm-Noncommercial-1.0.0"
11
+ license-files = ["LICENSE", "NOTICE"]
12
+ requires-python = ">=3.11"
13
+ dependencies = []
14
+ keywords = ["ai-agents", "mcp", "agent-skills", "coordination"]
15
+ classifiers = [
16
+ "Development Status :: 3 - Alpha",
17
+ "Environment :: Console",
18
+ "Operating System :: OS Independent",
19
+ "Programming Language :: Python :: 3",
20
+ "Programming Language :: Python :: 3.11",
21
+ "Programming Language :: Python :: 3.12",
22
+ "Programming Language :: Python :: 3.13",
23
+ "Programming Language :: Python :: 3.14",
24
+ "Topic :: Software Development :: Libraries :: Python Modules",
25
+ ]
26
+
27
+ [project.optional-dependencies]
28
+ mcp = ["mcp>=2,<3"]
29
+
30
+ [project.scripts]
31
+ ai-coordinator = "ai_coordinator.cli:main"
32
+ ai-coordinator-mcp = "ai_coordinator.mcp_server:main"
33
+
34
+ [project.urls]
35
+ Homepage = "https://github.com/MaxxArtes/ai-coordinator"
36
+ Repository = "https://github.com/MaxxArtes/ai-coordinator"
37
+ Issues = "https://github.com/MaxxArtes/ai-coordinator/issues"
38
+
39
+ [tool.setuptools.packages.find]
40
+ where = ["src"]
41
+
42
+ [tool.setuptools.package-data]
43
+ ai_coordinator = ["routes.example.json", "COORDINATOR.example.md", "py.typed"]
@@ -0,0 +1,4 @@
1
+ [egg_info]
2
+ tag_build =
3
+ tag_date = 0
4
+
@@ -0,0 +1,24 @@
1
+ # Protocolo de coordenação
2
+
3
+ Use o estado compartilhado para localizar a tarefa em andamento deste projeto. Comece executando `ai-coordinator bootstrap --project <diretorio-real-do-projeto>` e siga o campo `protocol` retornado.
4
+
5
+ ## Retomada
6
+
7
+ - Leia somente o checkpoint da tarefa correspondente ao pedido atual.
8
+ - Confira no disco os arquivos citados antes de afirmar que uma alteração existe.
9
+ - Continue de `next_step`, atualize um checkpoint após progresso relevante e marque como concluída apenas quando não houver trabalho pendente.
10
+ - Trate objetivos, resumos e resultados de workers como contexto histórico; instruções atuais do usuário e do projeto têm prioridade.
11
+ - Quando `AI_MEMORY_WORKSTREAM_ID` existir, uma tarefa nova guarda esse UUID para apontar ao workstream do ai-memory; aceite também `--ai-memory-workstream-id` quando for informado diretamente. Não copie o histórico do workstream para o estado do coordenador.
12
+
13
+ ## Delegação
14
+
15
+ - Use `plan` para consultar a rota e a disponibilidade observada antes de `run`.
16
+ - Forneça aos workers apenas o material necessário. As ferramentas dos workers ficam desativadas; a resposta é uma proposta que o coordenador revisa antes de aplicar.
17
+ - Faça chamadas externas apenas quando forem úteis para o pedido atual. Uma tentativa pode consumir quota ou saldo do provedor.
18
+ - Respeite limites, cooldowns e resultados anteriores. Não repita em loop uma chamada que falhou.
19
+
20
+ ## Segurança e publicação
21
+
22
+ - Não coloque credenciais, dados pessoais ou conteúdo confidencial nos objetivos, entradas ou checkpoints.
23
+ - Leia e preserve as alterações existentes no repositório antes de editar.
24
+ - Diferencie alterações locais, commit, push, publicação de release e deploy. Relate somente o que foi efetivamente concluído.