codex-team 0.1.0__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.
- codex_team-0.1.0/MANIFEST.in +5 -0
- codex_team-0.1.0/PKG-INFO +216 -0
- codex_team-0.1.0/README.md +197 -0
- codex_team-0.1.0/config.example.json +7 -0
- codex_team-0.1.0/pyproject.toml +35 -0
- codex_team-0.1.0/setup.cfg +4 -0
- codex_team-0.1.0/src/codex_team/__init__.py +4 -0
- codex_team-0.1.0/src/codex_team/__main__.py +3 -0
- codex_team-0.1.0/src/codex_team/cli.py +579 -0
- codex_team-0.1.0/src/codex_team.egg-info/PKG-INFO +216 -0
- codex_team-0.1.0/src/codex_team.egg-info/SOURCES.txt +15 -0
- codex_team-0.1.0/src/codex_team.egg-info/dependency_links.txt +1 -0
- codex_team-0.1.0/src/codex_team.egg-info/entry_points.txt +3 -0
- codex_team-0.1.0/src/codex_team.egg-info/top_level.txt +1 -0
- codex_team-0.1.0/team.py +10 -0
- codex_team-0.1.0/test_package.py +46 -0
- codex_team-0.1.0/test_team.py +197 -0
|
@@ -0,0 +1,216 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: codex-team
|
|
3
|
+
Version: 0.1.0
|
|
4
|
+
Summary: Orchestrate local Codex agents with tmux, Git submodules, and persistent task queues.
|
|
5
|
+
Author: PixPool
|
|
6
|
+
Keywords: codex,tmux,agents,orchestration,git,submodules
|
|
7
|
+
Classifier: Development Status :: 3 - Alpha
|
|
8
|
+
Classifier: Environment :: Console
|
|
9
|
+
Classifier: Intended Audience :: Developers
|
|
10
|
+
Classifier: Operating System :: POSIX :: Linux
|
|
11
|
+
Classifier: Programming Language :: Python :: 3
|
|
12
|
+
Classifier: Programming Language :: Python :: 3 :: Only
|
|
13
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
14
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
15
|
+
Classifier: Topic :: Software Development
|
|
16
|
+
Classifier: Topic :: Utilities
|
|
17
|
+
Requires-Python: >=3.10
|
|
18
|
+
Description-Content-Type: text/markdown
|
|
19
|
+
|
|
20
|
+
# Codex Team
|
|
21
|
+
|
|
22
|
+
Linux, Python 3.10+, Git, tmux e Codex CLI autenticado. Compatibilidade conferida
|
|
23
|
+
com Codex CLI 0.163.0 e tmux 3.3a. Usa a autenticação e o modelo configurados no
|
|
24
|
+
Codex local; não instala SDK nem exige uma chave de API separada.
|
|
25
|
+
|
|
26
|
+
## Instalar pelo pip
|
|
27
|
+
|
|
28
|
+
```bash
|
|
29
|
+
python3 -m pip install codex-team
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
Em um Python gerenciado pelo sistema operacional, use um ambiente virtual ou
|
|
33
|
+
`pipx install codex-team`. Git, tmux e Codex CLI são dependências externas
|
|
34
|
+
que precisam estar no PATH. Nenhuma biblioteca Python adicional é necessária.
|
|
35
|
+
|
|
36
|
+
```bash
|
|
37
|
+
codex-team --version
|
|
38
|
+
codex-team example-config > config.json
|
|
39
|
+
# Edite config.json para informar os repositórios reais.
|
|
40
|
+
start-git-codex-team --root /caminho/novo-time --agents config.json
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
O comando completo equivalente é:
|
|
44
|
+
|
|
45
|
+
```bash
|
|
46
|
+
codex-team start --root /caminho/novo-time --agents config.json
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
Também funciona como módulo: `python3 -m codex_team --help`.
|
|
50
|
+
Depois da criação, use `./team` dentro da pasta do time para adicionar agentes,
|
|
51
|
+
enviar tarefas e consultar resultados. Fora dela, use por exemplo
|
|
52
|
+
`codex-team --root /caminho/novo-time status`.
|
|
53
|
+
|
|
54
|
+
## Iniciar a partir deste checkout
|
|
55
|
+
|
|
56
|
+
Copie `config.example.json` para um `config.json` e substitua as URLs pelos
|
|
57
|
+
repositórios reais. Repositórios privados precisam de acesso Git/SSH na máquina.
|
|
58
|
+
Não inclua tokens ou senhas nas URLs.
|
|
59
|
+
|
|
60
|
+
```bash
|
|
61
|
+
./ops/start-git-codex-team.sh --root /caminho/novo-time --agents /caminho/config.json
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
O diretório passado em `--root` precisa estar vazio ou já
|
|
65
|
+
pertencer a este gerenciador. Por padrão a raiz é `./codex-team`; sem `--agents`,
|
|
66
|
+
carrega `./config.json` se existir. Sem JSON, inicia apenas o controlador.
|
|
67
|
+
Também aceita uma lista JSON diretamente, além do objeto com a chave `agents`.
|
|
68
|
+
Cada agente exige `name` e `repo`; `branch` é opcional (branch existente no remoto).
|
|
69
|
+
|
|
70
|
+
Use `--no-attach` para iniciar sem anexar o terminal. O layout padrão usa painéis
|
|
71
|
+
lado a lado; `--layout windows` cria uma janela por agente. Quando não há espaço
|
|
72
|
+
para mais divisões, um novo agente ganha uma janela própria. Escolha o layout na
|
|
73
|
+
primeira inicialização. A sessão tem nome derivado da pasta; `--session equipe-x`
|
|
74
|
+
permite escolher o nome na primeira inicialização. Não reutilize o mesmo nome
|
|
75
|
+
para times diferentes.
|
|
76
|
+
|
|
77
|
+
A raiz passa a ter:
|
|
78
|
+
|
|
79
|
+
```text
|
|
80
|
+
novo-time/
|
|
81
|
+
├── .git/ # Repositório Git raiz, sem commit automático
|
|
82
|
+
├── .gitmodules # Projetos registrados como submódulos
|
|
83
|
+
├── AGENTS.md # Instruções do controlador
|
|
84
|
+
├── README.md
|
|
85
|
+
├── team # Gerenciador local, executável
|
|
86
|
+
├── repos/
|
|
87
|
+
│ ├── publicapi/ # Submódulo Git
|
|
88
|
+
│ └── parceiros/ # Submódulo Git
|
|
89
|
+
└── .codex-team/ # Banco, filas, sessões e resultados locais
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
`git submodule add` deixa `.gitmodules` e os gitlinks no índice. O gerenciador não
|
|
93
|
+
faz commit nem push na raiz ou nos projetos. A raiz ainda não possui remoto;
|
|
94
|
+
configure um se quiser compartilhar a composição do time. O runtime é local e
|
|
95
|
+
ignorado pelo Git; os arquivos versionados sozinhos não reinstalam o gerenciador
|
|
96
|
+
em outra máquina. Preserve essa pasta para retomar este time.
|
|
97
|
+
|
|
98
|
+
## Conversar com o controlador
|
|
99
|
+
|
|
100
|
+
O painel Controlador é uma sessão interativa do Codex. Você pode pedir:
|
|
101
|
+
|
|
102
|
+
> Adicione um responsável chamado pagamentos para o repositório
|
|
103
|
+
> git@github.com:empresa/pagamentos.git e aguarde as tarefas.
|
|
104
|
+
|
|
105
|
+
O AGENTS.md instrui o chefe a executar:
|
|
106
|
+
|
|
107
|
+
```bash
|
|
108
|
+
./team add --name pagamentos --repo git@github.com:empresa/pagamentos.git
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
O novo projeto é cadastrado como submódulo e seu painel é aberto. Um responsável
|
|
112
|
+
inicialmente fica ocioso; não há chamada ao modelo para apenas aguardar. Ao
|
|
113
|
+
receber uma tarefa, o executor chama `codex exec --json`, registra seu thread ID e
|
|
114
|
+
reutiliza a conversa usando `codex exec resume` nas tarefas seguintes.
|
|
115
|
+
|
|
116
|
+
Os painéis dos responsáveis mostram mensagens, comandos e resultados da
|
|
117
|
+
execução. São consoles do executor, não TUIs interativas do Codex. Envie tarefas
|
|
118
|
+
pelo controlador ou pelo comando abaixo, sem digitar no painel do responsável.
|
|
119
|
+
|
|
120
|
+
```bash
|
|
121
|
+
cd /caminho/novo-time
|
|
122
|
+
./team task publicapi --message 'Implemente o endpoint X e valide os testes.'
|
|
123
|
+
./team task parceiros --file /caminho/tarefa.txt
|
|
124
|
+
./team status
|
|
125
|
+
./team wait ID_DA_TAREFA --timeout 50
|
|
126
|
+
./team result ID_DA_TAREFA
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
`wait` retorna 0 se todas terminaram com sucesso de execução, 1 se alguma falhou
|
|
130
|
+
ou foi interrompida, e 2 se ainda há pendentes. Leia o relatório para conferir
|
|
131
|
+
se os critérios de aceitação e os testes passaram; `done` indica que a chamada
|
|
132
|
+
Codex terminou normalmente, não substitui revisão. Não há dependências implícitas
|
|
133
|
+
na fila: o chefe deve esperar a API antes de enviar uma integração dependente.
|
|
134
|
+
Cada responsável executa uma tarefa por vez; repositórios diferentes trabalham
|
|
135
|
+
em paralelo. Uma tarefa interrompida é marcada e não é reenviada automaticamente.
|
|
136
|
+
|
|
137
|
+
A fila usa SQLite e a espera ociosa dos responsáveis usa FIFO. Resultados ficam
|
|
138
|
+
em `.codex-team/results/ID.md`, logs em `.codex-team/logs/ID.jsonl`. Esses arquivos
|
|
139
|
+
podem conter conteúdo do projeto; não os publique inadvertidamente.
|
|
140
|
+
|
|
141
|
+
O chefe deve chamar `wait`/`result` enquanto acompanha um pedido. O gerenciador
|
|
142
|
+
não reativa espontaneamente um controlador que já encerrou sua resposta.
|
|
143
|
+
Ele pode distribuir várias tarefas e aguardar resultados na mesma conversa.
|
|
144
|
+
|
|
145
|
+
## Permissões e escopo
|
|
146
|
+
|
|
147
|
+
O controlador usa `workspace-write` com aprovação `on-request`. Git remoto, tmux
|
|
148
|
+
ou ações fora do sandbox podem exigir aprovação conforme sua instalação. Os
|
|
149
|
+
responsáveis usam `workspace-write` e aprovação `never`: se uma ação não for
|
|
150
|
+
permitida, devem relatar o impedimento ao chefe. O gerenciador não usa bypass de
|
|
151
|
+
sandbox nem executa comandos recebidos por interpolação de shell.
|
|
152
|
+
|
|
153
|
+
A tarefa instrui cada responsável a alterar apenas seu submódulo. Isso é uma
|
|
154
|
+
regra de coordenação, não um isolamento de leitura ou segurança entre processos
|
|
155
|
+
que compartilham o mesmo usuário Linux. Instruções locais do repositório e
|
|
156
|
+
configurações do Codex continuam aplicáveis.
|
|
157
|
+
|
|
158
|
+
## Sair, parar e retomar
|
|
159
|
+
|
|
160
|
+
- Desconectar mantendo o trabalho: `Ctrl+B`, depois `D`.
|
|
161
|
+
- Voltar: `./team attach` na raiz do time.
|
|
162
|
+
- Parar os responsáveis com segurança, em outro terminal:
|
|
163
|
+
|
|
164
|
+
```bash
|
|
165
|
+
cd /caminho/novo-time
|
|
166
|
+
./team stop --timeout 50
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
`stop` fecha a entrada de tarefas. A tarefa atual de cada responsável pode
|
|
170
|
+
terminar, mas as pendentes ficam preservadas. Se o prazo expirar, retorna 2 e
|
|
171
|
+
não força a interrupção. Execute `stop` novamente depois. O controlador e a
|
|
172
|
+
sessão tmux permanecem abertos. Quando ele estiver ocioso e os responsáveis
|
|
173
|
+
parados, encerre a sessão usando o nome mostrado em `./team status`:
|
|
174
|
+
|
|
175
|
+
```bash
|
|
176
|
+
tmux kill-session -t NOME_DA_SESSAO
|
|
177
|
+
```
|
|
178
|
+
|
|
179
|
+
Para reabrir o time, reaproveite a mesma raiz:
|
|
180
|
+
|
|
181
|
+
```bash
|
|
182
|
+
./ops/start-git-codex-team.sh --root /caminho/novo-time
|
|
183
|
+
```
|
|
184
|
+
|
|
185
|
+
Isso restaura os painéis ausentes, as filas e os IDs das conversas dos
|
|
186
|
+
responsáveis. Tarefas pendentes voltam a ser executadas. Se um controlador foi
|
|
187
|
+
fechado, abre uma conversa nova que consulta o estado persistido; a conversa
|
|
188
|
+
interativa anterior pode ser retomada manualmente pelo Codex. Nenhum arquivo
|
|
189
|
+
modificado ou commit dos submódulos é descartado.
|
|
190
|
+
|
|
191
|
+
## Validação
|
|
192
|
+
|
|
193
|
+
```bash
|
|
194
|
+
python3 -m unittest discover -s ops/codex-team -p 'test_*.py' -v
|
|
195
|
+
```
|
|
196
|
+
|
|
197
|
+
Os testes usam repositórios Git locais, servidor tmux isolado e um executável
|
|
198
|
+
Codex simulado. Não fazem chamadas ao modelo, não clonam projetos reais e não
|
|
199
|
+
alteram o servidor tmux do usuário.
|
|
200
|
+
|
|
201
|
+
Referência: [execução não interativa do Codex](https://developers.openai.com/codex/noninteractive).
|
|
202
|
+
|
|
203
|
+
## Desenvolvimento e build
|
|
204
|
+
|
|
205
|
+
```bash
|
|
206
|
+
cd ops/codex-team
|
|
207
|
+
python3 -m pip install -e .
|
|
208
|
+
python3 -m pip install build twine
|
|
209
|
+
python3 -m build
|
|
210
|
+
python3 -m twine check dist/*
|
|
211
|
+
```
|
|
212
|
+
|
|
213
|
+
A distribuição inclui somente o gerenciador, a documentação e os exemplos;
|
|
214
|
+
nenhum repositório de trabalho, fila, credencial ou configuração de usuário é
|
|
215
|
+
incluído nos artefatos. A versão inicial é 0.1.0 (alpha). A implementação usa
|
|
216
|
+
tmux; GNU screen não é um backend suportado por este pacote.
|
|
@@ -0,0 +1,197 @@
|
|
|
1
|
+
# Codex Team
|
|
2
|
+
|
|
3
|
+
Linux, Python 3.10+, Git, tmux e Codex CLI autenticado. Compatibilidade conferida
|
|
4
|
+
com Codex CLI 0.163.0 e tmux 3.3a. Usa a autenticação e o modelo configurados no
|
|
5
|
+
Codex local; não instala SDK nem exige uma chave de API separada.
|
|
6
|
+
|
|
7
|
+
## Instalar pelo pip
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
python3 -m pip install codex-team
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
Em um Python gerenciado pelo sistema operacional, use um ambiente virtual ou
|
|
14
|
+
`pipx install codex-team`. Git, tmux e Codex CLI são dependências externas
|
|
15
|
+
que precisam estar no PATH. Nenhuma biblioteca Python adicional é necessária.
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
codex-team --version
|
|
19
|
+
codex-team example-config > config.json
|
|
20
|
+
# Edite config.json para informar os repositórios reais.
|
|
21
|
+
start-git-codex-team --root /caminho/novo-time --agents config.json
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
O comando completo equivalente é:
|
|
25
|
+
|
|
26
|
+
```bash
|
|
27
|
+
codex-team start --root /caminho/novo-time --agents config.json
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
Também funciona como módulo: `python3 -m codex_team --help`.
|
|
31
|
+
Depois da criação, use `./team` dentro da pasta do time para adicionar agentes,
|
|
32
|
+
enviar tarefas e consultar resultados. Fora dela, use por exemplo
|
|
33
|
+
`codex-team --root /caminho/novo-time status`.
|
|
34
|
+
|
|
35
|
+
## Iniciar a partir deste checkout
|
|
36
|
+
|
|
37
|
+
Copie `config.example.json` para um `config.json` e substitua as URLs pelos
|
|
38
|
+
repositórios reais. Repositórios privados precisam de acesso Git/SSH na máquina.
|
|
39
|
+
Não inclua tokens ou senhas nas URLs.
|
|
40
|
+
|
|
41
|
+
```bash
|
|
42
|
+
./ops/start-git-codex-team.sh --root /caminho/novo-time --agents /caminho/config.json
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
O diretório passado em `--root` precisa estar vazio ou já
|
|
46
|
+
pertencer a este gerenciador. Por padrão a raiz é `./codex-team`; sem `--agents`,
|
|
47
|
+
carrega `./config.json` se existir. Sem JSON, inicia apenas o controlador.
|
|
48
|
+
Também aceita uma lista JSON diretamente, além do objeto com a chave `agents`.
|
|
49
|
+
Cada agente exige `name` e `repo`; `branch` é opcional (branch existente no remoto).
|
|
50
|
+
|
|
51
|
+
Use `--no-attach` para iniciar sem anexar o terminal. O layout padrão usa painéis
|
|
52
|
+
lado a lado; `--layout windows` cria uma janela por agente. Quando não há espaço
|
|
53
|
+
para mais divisões, um novo agente ganha uma janela própria. Escolha o layout na
|
|
54
|
+
primeira inicialização. A sessão tem nome derivado da pasta; `--session equipe-x`
|
|
55
|
+
permite escolher o nome na primeira inicialização. Não reutilize o mesmo nome
|
|
56
|
+
para times diferentes.
|
|
57
|
+
|
|
58
|
+
A raiz passa a ter:
|
|
59
|
+
|
|
60
|
+
```text
|
|
61
|
+
novo-time/
|
|
62
|
+
├── .git/ # Repositório Git raiz, sem commit automático
|
|
63
|
+
├── .gitmodules # Projetos registrados como submódulos
|
|
64
|
+
├── AGENTS.md # Instruções do controlador
|
|
65
|
+
├── README.md
|
|
66
|
+
├── team # Gerenciador local, executável
|
|
67
|
+
├── repos/
|
|
68
|
+
│ ├── publicapi/ # Submódulo Git
|
|
69
|
+
│ └── parceiros/ # Submódulo Git
|
|
70
|
+
└── .codex-team/ # Banco, filas, sessões e resultados locais
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
`git submodule add` deixa `.gitmodules` e os gitlinks no índice. O gerenciador não
|
|
74
|
+
faz commit nem push na raiz ou nos projetos. A raiz ainda não possui remoto;
|
|
75
|
+
configure um se quiser compartilhar a composição do time. O runtime é local e
|
|
76
|
+
ignorado pelo Git; os arquivos versionados sozinhos não reinstalam o gerenciador
|
|
77
|
+
em outra máquina. Preserve essa pasta para retomar este time.
|
|
78
|
+
|
|
79
|
+
## Conversar com o controlador
|
|
80
|
+
|
|
81
|
+
O painel Controlador é uma sessão interativa do Codex. Você pode pedir:
|
|
82
|
+
|
|
83
|
+
> Adicione um responsável chamado pagamentos para o repositório
|
|
84
|
+
> git@github.com:empresa/pagamentos.git e aguarde as tarefas.
|
|
85
|
+
|
|
86
|
+
O AGENTS.md instrui o chefe a executar:
|
|
87
|
+
|
|
88
|
+
```bash
|
|
89
|
+
./team add --name pagamentos --repo git@github.com:empresa/pagamentos.git
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
O novo projeto é cadastrado como submódulo e seu painel é aberto. Um responsável
|
|
93
|
+
inicialmente fica ocioso; não há chamada ao modelo para apenas aguardar. Ao
|
|
94
|
+
receber uma tarefa, o executor chama `codex exec --json`, registra seu thread ID e
|
|
95
|
+
reutiliza a conversa usando `codex exec resume` nas tarefas seguintes.
|
|
96
|
+
|
|
97
|
+
Os painéis dos responsáveis mostram mensagens, comandos e resultados da
|
|
98
|
+
execução. São consoles do executor, não TUIs interativas do Codex. Envie tarefas
|
|
99
|
+
pelo controlador ou pelo comando abaixo, sem digitar no painel do responsável.
|
|
100
|
+
|
|
101
|
+
```bash
|
|
102
|
+
cd /caminho/novo-time
|
|
103
|
+
./team task publicapi --message 'Implemente o endpoint X e valide os testes.'
|
|
104
|
+
./team task parceiros --file /caminho/tarefa.txt
|
|
105
|
+
./team status
|
|
106
|
+
./team wait ID_DA_TAREFA --timeout 50
|
|
107
|
+
./team result ID_DA_TAREFA
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
`wait` retorna 0 se todas terminaram com sucesso de execução, 1 se alguma falhou
|
|
111
|
+
ou foi interrompida, e 2 se ainda há pendentes. Leia o relatório para conferir
|
|
112
|
+
se os critérios de aceitação e os testes passaram; `done` indica que a chamada
|
|
113
|
+
Codex terminou normalmente, não substitui revisão. Não há dependências implícitas
|
|
114
|
+
na fila: o chefe deve esperar a API antes de enviar uma integração dependente.
|
|
115
|
+
Cada responsável executa uma tarefa por vez; repositórios diferentes trabalham
|
|
116
|
+
em paralelo. Uma tarefa interrompida é marcada e não é reenviada automaticamente.
|
|
117
|
+
|
|
118
|
+
A fila usa SQLite e a espera ociosa dos responsáveis usa FIFO. Resultados ficam
|
|
119
|
+
em `.codex-team/results/ID.md`, logs em `.codex-team/logs/ID.jsonl`. Esses arquivos
|
|
120
|
+
podem conter conteúdo do projeto; não os publique inadvertidamente.
|
|
121
|
+
|
|
122
|
+
O chefe deve chamar `wait`/`result` enquanto acompanha um pedido. O gerenciador
|
|
123
|
+
não reativa espontaneamente um controlador que já encerrou sua resposta.
|
|
124
|
+
Ele pode distribuir várias tarefas e aguardar resultados na mesma conversa.
|
|
125
|
+
|
|
126
|
+
## Permissões e escopo
|
|
127
|
+
|
|
128
|
+
O controlador usa `workspace-write` com aprovação `on-request`. Git remoto, tmux
|
|
129
|
+
ou ações fora do sandbox podem exigir aprovação conforme sua instalação. Os
|
|
130
|
+
responsáveis usam `workspace-write` e aprovação `never`: se uma ação não for
|
|
131
|
+
permitida, devem relatar o impedimento ao chefe. O gerenciador não usa bypass de
|
|
132
|
+
sandbox nem executa comandos recebidos por interpolação de shell.
|
|
133
|
+
|
|
134
|
+
A tarefa instrui cada responsável a alterar apenas seu submódulo. Isso é uma
|
|
135
|
+
regra de coordenação, não um isolamento de leitura ou segurança entre processos
|
|
136
|
+
que compartilham o mesmo usuário Linux. Instruções locais do repositório e
|
|
137
|
+
configurações do Codex continuam aplicáveis.
|
|
138
|
+
|
|
139
|
+
## Sair, parar e retomar
|
|
140
|
+
|
|
141
|
+
- Desconectar mantendo o trabalho: `Ctrl+B`, depois `D`.
|
|
142
|
+
- Voltar: `./team attach` na raiz do time.
|
|
143
|
+
- Parar os responsáveis com segurança, em outro terminal:
|
|
144
|
+
|
|
145
|
+
```bash
|
|
146
|
+
cd /caminho/novo-time
|
|
147
|
+
./team stop --timeout 50
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
`stop` fecha a entrada de tarefas. A tarefa atual de cada responsável pode
|
|
151
|
+
terminar, mas as pendentes ficam preservadas. Se o prazo expirar, retorna 2 e
|
|
152
|
+
não força a interrupção. Execute `stop` novamente depois. O controlador e a
|
|
153
|
+
sessão tmux permanecem abertos. Quando ele estiver ocioso e os responsáveis
|
|
154
|
+
parados, encerre a sessão usando o nome mostrado em `./team status`:
|
|
155
|
+
|
|
156
|
+
```bash
|
|
157
|
+
tmux kill-session -t NOME_DA_SESSAO
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
Para reabrir o time, reaproveite a mesma raiz:
|
|
161
|
+
|
|
162
|
+
```bash
|
|
163
|
+
./ops/start-git-codex-team.sh --root /caminho/novo-time
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
Isso restaura os painéis ausentes, as filas e os IDs das conversas dos
|
|
167
|
+
responsáveis. Tarefas pendentes voltam a ser executadas. Se um controlador foi
|
|
168
|
+
fechado, abre uma conversa nova que consulta o estado persistido; a conversa
|
|
169
|
+
interativa anterior pode ser retomada manualmente pelo Codex. Nenhum arquivo
|
|
170
|
+
modificado ou commit dos submódulos é descartado.
|
|
171
|
+
|
|
172
|
+
## Validação
|
|
173
|
+
|
|
174
|
+
```bash
|
|
175
|
+
python3 -m unittest discover -s ops/codex-team -p 'test_*.py' -v
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
Os testes usam repositórios Git locais, servidor tmux isolado e um executável
|
|
179
|
+
Codex simulado. Não fazem chamadas ao modelo, não clonam projetos reais e não
|
|
180
|
+
alteram o servidor tmux do usuário.
|
|
181
|
+
|
|
182
|
+
Referência: [execução não interativa do Codex](https://developers.openai.com/codex/noninteractive).
|
|
183
|
+
|
|
184
|
+
## Desenvolvimento e build
|
|
185
|
+
|
|
186
|
+
```bash
|
|
187
|
+
cd ops/codex-team
|
|
188
|
+
python3 -m pip install -e .
|
|
189
|
+
python3 -m pip install build twine
|
|
190
|
+
python3 -m build
|
|
191
|
+
python3 -m twine check dist/*
|
|
192
|
+
```
|
|
193
|
+
|
|
194
|
+
A distribuição inclui somente o gerenciador, a documentação e os exemplos;
|
|
195
|
+
nenhum repositório de trabalho, fila, credencial ou configuração de usuário é
|
|
196
|
+
incluído nos artefatos. A versão inicial é 0.1.0 (alpha). A implementação usa
|
|
197
|
+
tmux; GNU screen não é um backend suportado por este pacote.
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"agents": [
|
|
3
|
+
{"name": "publicapi", "repo": "git@github.com:SUA_ORGANIZACAO/publicapi.git"},
|
|
4
|
+
{"name": "anunciantes", "repo": "git@github.com:SUA_ORGANIZACAO/flutter_anunciantes.git"},
|
|
5
|
+
{"name": "parceiros", "repo": "git@github.com:SUA_ORGANIZACAO/flutter_parceiros.git"}
|
|
6
|
+
]
|
|
7
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
[build-system]
|
|
2
|
+
requires = ["setuptools>=77.0.3"]
|
|
3
|
+
build-backend = "setuptools.build_meta"
|
|
4
|
+
|
|
5
|
+
[project]
|
|
6
|
+
name = "codex-team"
|
|
7
|
+
dynamic = ["version"]
|
|
8
|
+
description = "Orchestrate local Codex agents with tmux, Git submodules, and persistent task queues."
|
|
9
|
+
readme = "README.md"
|
|
10
|
+
requires-python = ">=3.10"
|
|
11
|
+
authors = [{name = "PixPool"}]
|
|
12
|
+
keywords = ["codex", "tmux", "agents", "orchestration", "git", "submodules"]
|
|
13
|
+
classifiers = [
|
|
14
|
+
"Development Status :: 3 - Alpha",
|
|
15
|
+
"Environment :: Console",
|
|
16
|
+
"Intended Audience :: Developers",
|
|
17
|
+
"Operating System :: POSIX :: Linux",
|
|
18
|
+
"Programming Language :: Python :: 3",
|
|
19
|
+
"Programming Language :: Python :: 3 :: Only",
|
|
20
|
+
"Programming Language :: Python :: 3.10",
|
|
21
|
+
"Programming Language :: Python :: 3.11",
|
|
22
|
+
"Topic :: Software Development",
|
|
23
|
+
"Topic :: Utilities",
|
|
24
|
+
]
|
|
25
|
+
dependencies = []
|
|
26
|
+
|
|
27
|
+
[project.scripts]
|
|
28
|
+
codex-team = "codex_team.cli:entrypoint"
|
|
29
|
+
start-git-codex-team = "codex_team.cli:start_entrypoint"
|
|
30
|
+
|
|
31
|
+
[tool.setuptools.packages.find]
|
|
32
|
+
where = ["src"]
|
|
33
|
+
|
|
34
|
+
[tool.setuptools.dynamic]
|
|
35
|
+
version = {attr = "codex_team.cli.VERSION"}
|