@r1z4x/tezgah 1.13.0 → 1.14.0

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 (93) hide show
  1. package/CHANGELOG.md +175 -1
  2. package/MANIFEST +18 -0
  3. package/NOTICE +152 -0
  4. package/README.de.md +41 -20
  5. package/README.es.md +39 -19
  6. package/README.fr.md +41 -20
  7. package/README.md +15 -8
  8. package/README.tr.md +39 -21
  9. package/bin/codegen +9 -2
  10. package/bin/consult +6 -0
  11. package/bin/tezgah-adhd +3 -0
  12. package/bin/tezgah-agents +3 -0
  13. package/bin/tezgah-capture +3 -0
  14. package/bin/tezgah-design +329 -54
  15. package/bin/tezgah-docs +157 -41
  16. package/bin/tezgah-dsh +1 -1
  17. package/bin/tezgah-gate +7 -2
  18. package/bin/tezgah-import-ai-research +16 -4
  19. package/bin/tezgah-index +3 -0
  20. package/bin/tezgah-lessons +13 -4
  21. package/bin/tezgah-mcp +4 -0
  22. package/bin/tezgah-migrate +3 -0
  23. package/bin/tezgah-ocr-review +2 -1
  24. package/bin/tezgah-optimize +4 -1
  25. package/bin/tezgah-pony +3 -0
  26. package/bin/tezgah-research +12 -6
  27. package/bin/tezgah-rollback +3 -0
  28. package/bin/tezgah-route +1 -1
  29. package/bin/tezgah-setup +596 -157
  30. package/bin/tezgah-status +11 -1
  31. package/bin/tezgah-task +3 -0
  32. package/bin/tezgah.js +10 -3
  33. package/commands/adhd.md +1 -1
  34. package/docs/README.md +19 -8
  35. package/docs/architecture.md +2 -2
  36. package/docs/citations-baseline.json +11 -17
  37. package/docs/clarity-baseline.json +3 -3
  38. package/docs/contract.md +77 -31
  39. package/docs/environment.md +58 -24
  40. package/docs/evidence.md +49 -19
  41. package/docs/gate.md +71 -21
  42. package/docs/hosts.md +65 -52
  43. package/docs/layers.md +1 -1
  44. package/docs/operations.md +67 -24
  45. package/docs/research.md +1 -1
  46. package/docs/skills.md +31 -8
  47. package/docs/status-line.md +33 -23
  48. package/docs/testing.md +48 -17
  49. package/docs/vision.md +6 -2
  50. package/hooks/lang/en.json +5 -2
  51. package/hooks/lang/tr.json +3 -2
  52. package/hooks/projects-posttooluse.py +11 -3
  53. package/hooks/projects-stop.py +1 -1
  54. package/hooks/tezgah_context.py +40 -23
  55. package/hooks/tezgah_gate.py +404 -106
  56. package/hooks/tezgah_integrity.py +367 -97
  57. package/hooks/tezgah_lessons.py +5 -2
  58. package/hooks/tezgah_paths.py +17 -6
  59. package/hooks/tezgah_policy.py +13 -5
  60. package/hooks/tezgah_skill_pick.py +1 -1
  61. package/hooks/tezgah_snapshot.py +6 -3
  62. package/hooks/tezgah_stopspec.py +2 -1
  63. package/hosts/amp/hook.py +1 -1
  64. package/hosts/amp/tezgah-plugin.ts.in +13 -3
  65. package/hosts/antigravity/hook.py +1 -1
  66. package/hosts/codex/hook.py +1 -1
  67. package/hosts/commandcode/hook.py +1 -1
  68. package/hosts/copilot/hook.py +1 -1
  69. package/hosts/cursor/hook.py +2 -1
  70. package/hosts/droid/hook.py +1 -1
  71. package/hosts/gemini/hook.py +1 -1
  72. package/hosts/goose/hook.py +1 -1
  73. package/hosts/omp/hook.py +1 -1
  74. package/hosts/omp/tezgah-hook.ts.in +127 -35
  75. package/hosts/opencode/plugins/tezgah.js +209 -63
  76. package/hosts/qwen/hook.py +1 -1
  77. package/output-styles/tezgah.md +1 -1
  78. package/package.json +6 -3
  79. package/packaging/build.sh +4 -4
  80. package/packaging/install.sh +11 -0
  81. package/packaging/upgrade.sh +3 -0
  82. package/skills/ai-research/LICENSE +21 -0
  83. package/skills/design-contract/SKILL.md +27 -6
  84. package/skills/design-library/LICENSE +21 -0
  85. package/skills/plan-add/render_table.py +7 -0
  86. package/skills/pm-frameworks/LICENSE +21 -0
  87. package/skills/rl-env/LICENSE +201 -0
  88. package/skills/tezgah-contract/SKILL.md +2 -2
  89. package/third_party/open-code-review/LICENSE +201 -0
  90. package/third_party/open-code-review/README.md +15 -0
  91. package/third_party/open-code-review/prompts/main_task_system.md +26 -0
  92. package/third_party/open-code-review/prompts/review_filter_task_system.md +13 -0
  93. package/workflows/graph-map.js +14 -5
package/README.es.md CHANGED
@@ -25,8 +25,10 @@
25
25
  ---
26
26
 
27
27
  Tezgah arma a cada asistente de programación de IA que ejecutes — **omp, el
28
- host principal**, más Claude Code, Codex, Cursor, opencode y el dsh de
29
- DeepSeek — con un solo contrato de trabajo, dentro de las raíces de
28
+ host principal**, más Claude Code, Codex, Cursor, opencode, el dsh de
29
+ DeepSeek, Qwen Code, Factory Droid, Command Code, GitHub Copilot CLI, Gemini
30
+ CLI, Antigravity CLI, Goose y Amp — con un solo contrato de trabajo, dentro de
31
+ las raíces de
30
32
  repositorios que configures. Por sí solos, los asistentes divergen: uno
31
33
  responde en turco mientras otro responde en inglés; uno usa grep donde otro
32
34
  consulta un grafo de código; uno informa "hecho" sin ejecutar una prueba. Las
@@ -36,11 +38,14 @@ en un lugar llega a todos los hosts de la misma manera.
36
38
 
37
39
  ## Qué impone y registra tezgah
38
40
 
39
- - **Un contrato, seis hosts.** omp, Claude Code, Codex, Cursor, opencode y dsh
40
- ven las mismas reglas, porque cada host es un adaptador ligero sobre un
41
- único núcleo compartido — cambia una regla una vez y todos la adoptan.
41
+ - **Un contrato, catorce hosts.** omp, Claude Code, Codex, Cursor, opencode,
42
+ dsh, Qwen Code, Factory Droid, Command Code, GitHub Copilot CLI, Gemini CLI,
43
+ Antigravity CLI, Goose y Amp ven las mismas reglas, porque cada host es un
44
+ adaptador ligero sobre un único núcleo compartido — cambia una regla una vez
45
+ y todos la adoptan.
42
46
  - **Declarar algo terminado exige una comprobación superada en el registro.**
43
- Una compuerta de 15 rechazos detiene la comprobación neutralizada —
47
+ Una compuerta de 17 reglas de rechazo y un aviso único por sesión detiene la
48
+ comprobación neutralizada —
44
49
  `--no-verify`, `|| true`, una prueba canalizada a `tail`, un skip añadido a
45
50
  mitad de vuelo — y la regla Stop rechaza una afirmación de finalización que
46
51
  el registro de evidencias de la sesión no respalda. Rechaza el turno; no
@@ -49,7 +54,7 @@ en un lugar llega a todos los hosts de la misma manera.
49
54
  dirigen a través de OpenResearch con una biblioteca incorporada de 98
50
55
  habilidades upstream, cargada de una en una para que el contexto siga
51
56
  siendo pequeño.
52
- - **Cada regla tiene un interruptor de apagado.** Diecisiete interruptores — más
57
+ - **Cada regla tiene un interruptor de apagado.** Diecisiete interruptores de regla — más
53
58
  las marcas por repositorio — eliminan el texto de la regla de la sesión, de
54
59
  modo que la regla realmente se detiene en lugar de limitarse a figurar como
55
60
  desactivada.
@@ -81,8 +86,14 @@ ninguno de los dos brazos:
81
86
  - **Un punto débil del lector de afirmaciones de la regla Stop:** marcó
82
87
  115/132 ejecuciones con tezgah y 90/131 sin él, pero solo el 10% y el 20% de
83
88
  sus marcas eran declaraciones reales de terminado. Con tezgah el agente
84
- respondió en turco, y el lector cuenta `doğrulandı` (verificado) sobre un
85
- arreglo parcial como afirmación. Está registrado, aún no corregido.
89
+ respondió en turco, y el lector contaba `doğrulandı` (verificado) sobre un
90
+ arreglo parcial como afirmación, incluso junto a un `doğrulanmadı` (no
91
+ verificado) para la prueba que falla. Esa forma está corregida (commit
92
+ 9cb4d1d; recall en el conjunto reservado 0.857, por debajo del umbral de 0.9
93
+ del plan). Queda un residuo más estrecho: un arreglo parcial en turco
94
+ expresado sin palabra de admisión (`hâlâ başarısız`, aún falla; `kısmen`,
95
+ parcialmente) sigue leyéndose como terminado y verificado, mientras que su
96
+ gemelo en inglés se lee solo como verificación.
86
97
 
87
98
  La ejecución tuvo fallos de instrumento, entre ellos agentes de ambos brazos
88
99
  que podían leer la verdad de referencia del benchmark. Los agregados, los
@@ -94,8 +105,12 @@ recuentos por tarea y cada salvedad están en el
94
105
  ## Instalación
95
106
 
96
107
  Una línea, en macOS, Linux o WSL (Python 3.10+, `curl`, `tar`). Descarga la
97
- última versión, comprueba su sha256 y arma cada host que encuentra (Claude
98
- Code a través de su propia CLI `claude plugin`):
108
+ última versión, comprueba su sha256, arma cada host que encuentra (Claude
109
+ Code a través de su propia CLI `claude plugin`) e instala las herramientas
110
+ opcionales que faltan y que tezgah mismo usa (orx; `TEZGAH_NO_DEPS=1` las
111
+ omite). Nunca instala la CLI propia de un host (cursor-agent, pnpm, dsh):
112
+ imprime el comando en su lugar, o lo ejecuta con
113
+ `tezgah-setup --install --host-deps`.
99
114
 
100
115
  ```bash
101
116
  curl -fsSL https://raw.githubusercontent.com/r1z4x/tezgah/main/packaging/install.sh | sh
@@ -115,18 +130,23 @@ con un código distinto de cero cuando un host previsto no queda armado.
115
130
  `~/.omp/agent/RULES.md`). Los hooks de Claude Code van en un plugin
116
131
  registrado con `claude plugin`; sin la CLI `claude`, Claude queda sin armar y
117
132
  el informe lo dice.
118
- - **Archivos de agentes en tus repositorios.** Dentro de las raíces
119
- configuradas, una sesión escribe archivos de subagentes en `.claude/agents/`,
120
- `.codex/agents/` y `.opencode/agents/`, y añade esos directorios al
133
+ - **Archivos de agentes.** La instalación escribe los roles de subagente de
134
+ tezgah en `~/.claude/agents/`, `$CODEX_HOME/agents/` (por defecto
135
+ `~/.codex/agents/`) y `~/.omp/agent/agents/`. Dentro de las raíces
136
+ configuradas, una sesión los escribe en `.cursor/agents/` y
137
+ `.opencode/agents/` del repositorio, y añade esos directorios al
121
138
  `.git/info/exclude` propio del clon (`TEZGAH_NO_EXCLUDE=1` lo impide).
122
139
  - **Una comprobación diaria de actualizaciones.** La línea de estado pregunta
123
140
  por una versión nueva como mucho una vez al día;
124
141
  `~/.config/tezgah/update-check-off` o `TEZGAH_UPDATE_CHECK=0` la desactiva.
125
142
  - **orx.** La instalación descarga la CLI de OpenResearch por la que pasan las
126
143
  tareas de investigación; `TEZGAH_NO_DEPS=1` la omite.
127
- - **Idioma de las respuestas.** Por defecto las respuestas son en turco y la
128
- regla Stop las sostiene en él. `--reply-lang en` pide inglés, y `any` tu
129
- propio idioma; ninguno se comprueba: `curl -fsSL … | sh -s -- --reply-lang en`.
144
+ - **Idioma de las respuestas.** Una primera instalación pide respuestas en el
145
+ idioma de tu locale (`LANG` y similares) cuando tezgah trae un paquete para
146
+ él (`tr`, `en`), si no en inglés; una instalación existente conserva su
147
+ idioma. `--language en` pide inglés y `any` tu propio idioma:
148
+ `curl -fsSL … | sh -s -- --reply-lang en` (la grafía antigua del instalador
149
+ para `--language`). La regla Stop solo comprueba las respuestas en turco.
130
150
 
131
151
  ¿Prefieres que lo haga tu asistente de programación? Pega esto en omp,
132
152
  Claude Code, Codex, Cursor u opencode (el prompt queda en inglés; el
@@ -156,7 +176,7 @@ actualizaciones y las integraciones opcionales están en la [documentación](doc
156
176
 
157
177
  ## Hosts compatibles
158
178
 
159
- **omp** (el host principal, contra el que se desarrolla y verifica), **Claude Code**, **Codex**, **Cursor**, **opencode**, **dsh** — adaptadores ligeros sobre un único núcleo compartido.
179
+ **omp** (el host principal, contra el que se desarrolla y verifica), **Claude Code**, **Codex**, **Cursor**, **opencode**, **dsh**, **Qwen Code**, **Factory Droid**, **Command Code**, **GitHub Copilot CLI**, **Gemini CLI**, **Antigravity CLI**, **Goose**, **Amp** — adaptadores ligeros sobre un único núcleo compartido. Ninguna ejecución de los binarios de los ocho últimos ha mostrado todavía que obedezcan un deny, y los seis últimos están conectados solo a partir de la documentación de sus fabricantes ([hosts](docs/hosts.md), en inglés).
160
180
 
161
181
  ## Dónde está la profundidad
162
182
 
@@ -165,4 +185,4 @@ La compuerta, el registro de evidencia, los adaptadores de host, la configuraci
165
185
  ## Licencia
166
186
 
167
187
  MIT — ver [LICENSE](LICENSE).
168
- Las habilidades incorporadas (`ponytail`, `no-ai-slop`, `i-have-adhd`) llevan sus propios términos MIT, registrados en [NOTICE](NOTICE).
188
+ Las habilidades y textos de terceros incorporados y adaptados conservan sus propios términos (MIT o Apache-2.0), registrados en [NOTICE](NOTICE).
package/README.fr.md CHANGED
@@ -25,8 +25,10 @@
25
25
  ---
26
26
 
27
27
  Tezgah arme chaque assistant de codage IA que vous exécutez — **omp, l'hôte
28
- principal**, plus Claude Code, Codex, Cursor, opencode et le dsh de DeepSeek —
29
- avec un seul contrat de travail, à l'intérieur des racines de dépôts que vous
28
+ principal**, plus Claude Code, Codex, Cursor, opencode, le dsh de DeepSeek,
29
+ Qwen Code, Factory Droid, Command Code, GitHub Copilot CLI, Gemini CLI,
30
+ Antigravity CLI, Goose et Amp — avec un seul contrat de travail, à l'intérieur
31
+ des racines de dépôts que vous
30
32
  configurez. Laissés à eux-mêmes, les assistants divergent : l'un répond en
31
33
  turc pendant qu'un autre répond en anglais ; l'un utilise grep là où un autre
32
34
  interroge un graphe de code ; l'un annonce « terminé » sans exécuter de test.
@@ -36,11 +38,14 @@ modifiée à un endroit atteint chaque hôte de la même façon.
36
38
 
37
39
  ## Ce que tezgah impose et enregistre
38
40
 
39
- - **Un contrat, six hôtes.** omp, Claude Code, Codex, Cursor, opencode et dsh
40
- voient les mêmes règles, car chaque hôte est un adaptateur léger au-dessus
41
- d'un seul cœur partagé — modifiez une règle une fois, tous l'adoptent.
41
+ - **Un contrat, quatorze hôtes.** omp, Claude Code, Codex, Cursor, opencode,
42
+ dsh, Qwen Code, Factory Droid, Command Code, GitHub Copilot CLI, Gemini CLI,
43
+ Antigravity CLI, Goose et Amp voient les mêmes règles, car chaque hôte est un
44
+ adaptateur léger au-dessus d'un seul cœur partagé — modifiez une règle une
45
+ fois, tous l'adoptent.
42
46
  - **Annoncer « terminé » exige une vérification réussie dans le registre.**
43
- Une porte de 15 refus arrête la vérification neutralisée — `--no-verify`,
47
+ Une porte de 17 règles de refus et un rappel unique par session arrête la
48
+ vérification neutralisée — `--no-verify`,
44
49
  `|| true`, un test redirigé vers `tail`, un skip ajouté en plein vol — et la
45
50
  règle Stop refuse une affirmation d'achèvement que le registre de preuves de
46
51
  la session ne peut pas étayer. Elle refuse le tour ; elle ne peut pas
@@ -48,7 +53,7 @@ modifiée à un endroit atteint chaque hôte de la même façon.
48
53
  - **La recherche arrive avec sa bibliothèque.** Les tâches de recherche
49
54
  passent par OpenResearch avec une bibliothèque intégrée de 98 compétences
50
55
  upstream, chargée une entrée à la fois pour que le contexte reste petit.
51
- - **Chaque règle a un interrupteur.** Dix-sept interrupteurs — plus des
56
+ - **Chaque règle a un interrupteur.** Dix-sept interrupteurs de règle — plus des
52
57
  marques par dépôt — retirent le texte de la règle de la session ; la règle
53
58
  s'arrête vraiment au lieu de simplement figurer comme désactivée.
54
59
  - **Une forme de réponse fixe.** Les réponses sont en turc, sauf si vous choisissez une autre langue, et
@@ -79,8 +84,14 @@ aucun des deux bras :
79
84
  - **Un point faible du lecteur d'affirmations de la règle Stop :** il a
80
85
  signalé 115/132 exécutions avec tezgah et 90/131 sans, mais seuls 10% et 20%
81
86
  de ses signalements étaient de vraies annonces de fin. Avec tezgah, l'agent
82
- répondait en turc, et le lecteur compte `doğrulandı` (vérifié) sur un
83
- correctif partiel comme une affirmation. C'est consigné, pas encore corrigé.
87
+ répondait en turc, et le lecteur comptait `doğrulandı` (vérifié) sur un
88
+ correctif partiel comme une affirmation, même à côté d'un `doğrulanmadı`
89
+ (non vérifié) pour le test qui échoue. Cette forme est corrigée (commit
90
+ 9cb4d1d ; rappel sur l'ensemble réservé 0.857, sous le seuil de 0.9 du
91
+ plan). Un résidu plus étroit demeure : un correctif partiel en turc formulé
92
+ sans mot d'aveu (`hâlâ başarısız`, échoue encore ; `kısmen`, partiellement)
93
+ se lit encore comme terminé et vérifié, alors que son jumeau anglais se lit
94
+ comme une vérification seulement.
84
95
 
85
96
  L'exécution avait des défauts d'instrument, entre autres des agents des deux
86
97
  bras qui pouvaient lire la vérité terrain du benchmark. Les agrégats, les
@@ -92,8 +103,12 @@ comptes par tâche et chaque réserve sont dans le
92
103
  ## Installation
93
104
 
94
105
  Une ligne, sur macOS, Linux ou WSL (Python 3.10+, `curl`, `tar`). Elle
95
- télécharge la dernière version, vérifie son sha256 et arme chaque hôte
96
- trouvé (Claude Code par sa propre CLI `claude plugin`) :
106
+ télécharge la dernière version, vérifie son sha256, arme chaque hôte trouvé
107
+ (Claude Code par sa propre CLI `claude plugin`) et installe les outils
108
+ optionnels manquants que tezgah utilise lui-même (orx ; `TEZGAH_NO_DEPS=1`
109
+ les ignore). Elle n'installe jamais la CLI propre d'un hôte (cursor-agent,
110
+ pnpm, dsh) : elle affiche la commande à la place, ou l'exécute sous
111
+ `tezgah-setup --install --host-deps`.
97
112
 
98
113
  ```bash
99
114
  curl -fsSL https://raw.githubusercontent.com/r1z4x/tezgah/main/packaging/install.sh | sh
@@ -113,18 +128,24 @@ non nul quand un hôte prévu n'est pas armé.
113
128
  hooks de Claude Code sont livrés dans un plugin enregistré par
114
129
  `claude plugin` ; sans CLI `claude`, Claude reste non armé et le rapport le
115
130
  dit.
116
- - **Des fichiers d'agents dans vos dépôts.** Dans les racines configurées, une
117
- session écrit des fichiers de sous-agents dans `.claude/agents/`,
118
- `.codex/agents/` et `.opencode/agents/`, et ajoute ces répertoires au
119
- `.git/info/exclude` propre au clone (`TEZGAH_NO_EXCLUDE=1` l'empêche).
131
+ - **Des fichiers d'agents.** L'installation écrit les rôles de sous-agents de
132
+ tezgah dans `~/.claude/agents/`, `$CODEX_HOME/agents/` (par défaut
133
+ `~/.codex/agents/`) et `~/.omp/agent/agents/`. Dans les racines configurées,
134
+ une session les écrit dans `.cursor/agents/` et `.opencode/agents/` du
135
+ dépôt, et ajoute ces répertoires au `.git/info/exclude` propre au clone
136
+ (`TEZGAH_NO_EXCLUDE=1` l'empêche).
120
137
  - **Une vérification quotidienne des mises à jour.** La ligne d'état demande
121
138
  une nouvelle version au plus une fois par jour ;
122
139
  `~/.config/tezgah/update-check-off` ou `TEZGAH_UPDATE_CHECK=0` la coupe.
123
140
  - **orx.** L'installation télécharge la CLI OpenResearch par laquelle passent
124
141
  les tâches de recherche ; `TEZGAH_NO_DEPS=1` l'ignore.
125
- - **Langue des réponses.** Les réponses sont en turc par défaut et la règle
126
- Stop les y tient. `--reply-lang en` demande l'anglais, et `any` votre propre
127
- langue ; aucun des deux n'est contrôlé : `curl -fsSL … | sh -s -- --reply-lang en`.
142
+ - **Langue des réponses.** Une première installation demande des réponses
143
+ dans la langue de votre locale (`LANG` et variables voisines) quand tezgah
144
+ livre un pack pour elle (`tr`, `en`), sinon en anglais ; une installation
145
+ existante garde sa langue. `--language en` demande l'anglais et `any` votre
146
+ propre langue : `curl -fsSL … | sh -s -- --reply-lang en` (l'ancienne
147
+ graphie de `--language` dans l'installeur). La règle Stop ne contrôle que
148
+ les réponses en turc.
128
149
 
129
150
  Vous préférez laisser votre assistant de codage s'en charger ? Collez ceci
130
151
  dans omp, Claude Code, Codex, Cursor ou opencode (le prompt reste en anglais
@@ -154,7 +175,7 @@ mises à niveau et intégrations optionnelles sont dans la [documentation](docs/
154
175
 
155
176
  ## Hôtes pris en charge
156
177
 
157
- **omp** (l'hôte principal, contre lequel tezgah est développé et vérifié), **Claude Code**, **Codex**, **Cursor**, **opencode**, **dsh** — des adaptateurs légers au-dessus d'un seul cœur partagé.
178
+ **omp** (l'hôte principal, contre lequel tezgah est développé et vérifié), **Claude Code**, **Codex**, **Cursor**, **opencode**, **dsh**, **Qwen Code**, **Factory Droid**, **Command Code**, **GitHub Copilot CLI**, **Gemini CLI**, **Antigravity CLI**, **Goose**, **Amp** — des adaptateurs légers au-dessus d'un seul cœur partagé. Aucune exécution des binaires des huit derniers n'a encore montré qu'ils obéissent à un refus, et les six derniers sont câblés à partir de la seule documentation de leurs éditeurs ([hôtes](docs/hosts.md), en anglais).
158
179
 
159
180
  ## Où se trouve la profondeur
160
181
 
@@ -163,4 +184,4 @@ La porte, le registre de preuves, les adaptateurs d'hôtes, la configuration et
163
184
  ## Licence
164
185
 
165
186
  MIT — voir [LICENSE](LICENSE).
166
- Les compétences intégrées (`ponytail`, `no-ai-slop`, `i-have-adhd`) suivent leurs propres termes MIT, consignés dans [NOTICE](NOTICE).
187
+ Les compétences et textes tiers intégrés et adaptés gardent leurs propres termes (MIT ou Apache-2.0), consignés dans [NOTICE](NOTICE).
package/README.md CHANGED
@@ -25,8 +25,10 @@
25
25
  ---
26
26
 
27
27
  Tezgah arms every AI coding assistant you run — **omp, the primary host**,
28
- plus Claude Code, Codex, Cursor, opencode and DeepSeek's dsh harness — with
29
- one working contract, inside the repository roots you configure. Left alone, each
28
+ plus Claude Code, Codex, Cursor, opencode, DeepSeek's dsh harness, Qwen Code,
29
+ Factory Droid, Command Code, GitHub Copilot CLI, Gemini CLI, Antigravity CLI,
30
+ Goose and Amp — with one working contract, inside the repository roots you
31
+ configure. Left alone, each
30
32
  assistant drifts: one answers in Turkish while another answers in English, one
31
33
  greps where another queries a code graph, one reports "done" without running a
32
34
  test. The rules live once in a shared core; each host gets a thin adapter that
@@ -39,7 +41,8 @@ reaches every host the same way.
39
41
  dsh, Qwen Code, Factory Droid, Command Code, GitHub Copilot CLI, Gemini CLI,
40
42
  Antigravity CLI, Goose and Amp see the same rules, because every host is a thin adapter over one shared
41
43
  core — change a rule once and all of them pick it up.
42
- - **A done claim needs a passing check on record.** A gate of 15 refusals stops
44
+ - **A done claim needs a passing check on record.** A gate of 17 refusal rules
45
+ and a once-per-session nudge stops
43
46
  the neutered check — `--no-verify`, `|| true`, a test piped into `tail`, a
44
47
  skip added mid-flight — and the Stop rule refuses a completion claim the
45
48
  session's evidence ledger cannot back. It refuses the turn; it cannot make
@@ -47,7 +50,7 @@ reaches every host the same way.
47
50
  - **Research ships with its library.** Research tasks route through
48
51
  OpenResearch with a vendored library of 98 upstream skills, loaded one entry
49
52
  at a time so the context stays small.
50
- - **Every rule has an off switch.** Seventeen kill switches — plus per-repo
53
+ - **Every rule has an off switch.** Seventeen rule switches — plus per-repo
51
54
  marks — remove a rule's text from the session, so the rule actually stops
52
55
  rather than merely showing as off.
53
56
  - **A fixed reply shape.** Replies lead with the outcome, in Turkish unless
@@ -75,8 +78,12 @@ either arm:
75
78
  - **A weak spot in the Stop rule's claim reader:** it flagged 115/132 runs
76
79
  with tezgah and 90/131 without, but only 10% and 20% of the flags it raised
77
80
  were real done claims. With tezgah the agent replied in Turkish, and the
78
- reader counts `doğrulandı` (verified) on a partial fix as a claim. This is
79
- recorded, not yet fixed.
81
+ reader counted `doğrulandı` (verified) on a partial fix as a claim, even
82
+ beside a `doğrulanmadı` (not verified) for the failing test. That shape is
83
+ fixed (commit 9cb4d1d; held-out recall 0.857, below the plan's 0.9 bar). A
84
+ narrower residual remains: a Turkish partial fix stated with no admission
85
+ word (`hâlâ başarısız`, still failing; `kısmen`, partially) still reads as
86
+ done and verified, while its English twin reads as verification only.
80
87
 
81
88
  The run had instrument flaws, among them agents in both arms that could read
82
89
  the benchmark's ground truth. The aggregates, per-task counts and every caveat
@@ -155,7 +162,7 @@ and the optional integrations are in the [docs](docs/README.md).
155
162
 
156
163
  ## Supported hosts
157
164
 
158
- **omp** (the primary host, developed and verified against), **Claude Code**, **Codex**, **Cursor**, **opencode**, **dsh**, **Qwen Code**, **Factory Droid**, **Command Code**, **GitHub Copilot CLI**, **Gemini CLI**, **Antigravity CLI**, **Goose**, **Amp** — thin adapters over one shared core. The last six are wired from their vendors' docs alone: no run of their binaries has shown them obeying a deny yet ([hosts](docs/hosts.md)).
165
+ **omp** (the primary host, developed and verified against), **Claude Code**, **Codex**, **Cursor**, **opencode**, **dsh**, **Qwen Code**, **Factory Droid**, **Command Code**, **GitHub Copilot CLI**, **Gemini CLI**, **Antigravity CLI**, **Goose**, **Amp** — thin adapters over one shared core. No run of the last eight's binaries has shown them obeying a deny yet, and the last six are wired from their vendors' docs alone ([hosts](docs/hosts.md)).
159
166
 
160
167
  ## Where the depth lives
161
168
 
@@ -164,4 +171,4 @@ The gate, the evidence ledger, the host adapters, configuration and development
164
171
  ## License
165
172
 
166
173
  MIT — see [LICENSE](LICENSE).
167
- Vendored skills (`ponytail`, `no-ai-slop`, `i-have-adhd`) carry their own MIT terms, recorded in [NOTICE](NOTICE).
174
+ Vendored and adapted third-party skills and texts keep their own terms (MIT or Apache-2.0), recorded in [NOTICE](NOTICE).
package/README.tr.md CHANGED
@@ -25,8 +25,10 @@
25
25
  ---
26
26
 
27
27
  Tezgah, çalıştırdığınız her yapay zeka kodlama asistanını — **birincil
28
- barındırıcı olan omp** ve Claude Code, Codex, Cursor, opencode ile DeepSeek'in
29
- dsh donanımı — yapılandırdığınız depo kökleri içinde tek bir çalışma
28
+ barındırıcı olan omp** ve Claude Code, Codex, Cursor, opencode, DeepSeek'in
29
+ dsh donanımı, Qwen Code, Factory Droid, Command Code, GitHub Copilot CLI,
30
+ Gemini CLI, Antigravity CLI, Goose ile Amp — yapılandırdığınız depo kökleri
31
+ içinde tek bir çalışma
30
32
  sözleşmesiyle donatır. Kendi haline bırakıldığında her asistan sapar: biri
31
33
  Türkçe yanıt verirken diğeri İngilizce yanıt verir, biri grep kullanırken
32
34
  diğeri bir kod grafiğini sorgular, biri test çalıştırmadan "tamamlandı" der.
@@ -36,11 +38,14 @@ değiştirdiğinizde her barındırıcıya aynı şekilde ulaşır.
36
38
 
37
39
  ## tezgah neyi zorunlu kılar ve kaydeder
38
40
 
39
- - **Tek sözleşme, altı barındırıcı.** omp, Claude Code, Codex, Cursor,
40
- opencode ve dsh aynı kuralları görür, çünkü her barındırıcı paylaşılan tek
41
- bir çekirdeğin ince bir adaptörüdür — kuralı bir kez değiştirin, hepsi alır.
42
- - **"Tamamlandı" demek için kayıtta geçmiş bir kontrol gerekir.** 15 reddin
43
- olduğu bir kapı, etkisizleştirilmiş kontrolü durdurur — `--no-verify`,
41
+ - **Tek sözleşme, on dört barındırıcı.** omp, Claude Code, Codex, Cursor,
42
+ opencode, dsh, Qwen Code, Factory Droid, Command Code, GitHub Copilot CLI,
43
+ Gemini CLI, Antigravity CLI, Goose ve Amp aynı kuralları görür, çünkü her
44
+ barındırıcı paylaşılan tek bir çekirdeğin ince bir adaptörüdür — kuralı bir
45
+ kez değiştirin, hepsi alır.
46
+ - **"Tamamlandı" demek için kayıtta geçmiş bir kontrol gerekir.** 17 ret
47
+ kuralı ve oturum başına bir kez uyarıdan oluşan bir kapı, etkisizleştirilmiş
48
+ kontrolü durdurur — `--no-verify`,
44
49
  `|| true`, `tail`'e yönlendirilmiş bir test, uçuş sırasında eklenen bir
45
50
  skip — ve Stop kuralı, oturumun kanıt defterinin desteklemediği tamamlanma
46
51
  iddiasını reddeder. Turu reddeder; modelin bu iddiayı dile getirmesini
@@ -48,7 +53,7 @@ değiştirdiğinizde her barındırıcıya aynı şekilde ulaşır.
48
53
  - **Araştırma kütüphanesiyle birlikte gelir.** Araştırma görevleri,
49
54
  bağlamın küçük kalması için tek tek yüklenen 98 becerilik gömülü
50
55
  bir kütüphaneyle OpenResearch üzerinden yürütülür.
51
- - **Her kuralın bir kapatma anahtarı vardır.** On yedi kapatma anahtarı — ve
56
+ - **Her kuralın bir kapatma anahtarı vardır.** On yedi kural anahtarı — ve
52
57
  depo başına işaretler — kuralın metnini oturumdan kaldırır; böylece kural
53
58
  yalnızca kapalı görünmez, gerçekten durur.
54
59
  - **Sabit bir yanıt biçimi.** Yanıtlar, başka bir dil seçmediyseniz Türkçedir ve sonuçla
@@ -76,8 +81,12 @@ ile tam tezgah kurulumu karşılaştırıldı) hilede ölçülebilir bir azalma
76
81
  - **Stop kuralının iddia okuyucusunda bir zayıf nokta:** tezgah ile 115/132,
77
82
  tezgah'sız 90/131 çalıştırmayı işaretledi, ama işaretlerinin yalnızca %10'u
78
83
  ve %20'si gerçek "bitti" iddiasıydı. tezgah ile ajan Türkçe yanıt verdi ve
79
- okuyucu kısmi bir düzeltmedeki `doğrulandı` sözcüğünü iddia sayıyor. Bu
80
- kayda geçti, henüz düzeltilmedi.
84
+ okuyucu kısmi bir düzeltmedeki `doğrulandı` sözcüğünü, başarısız test için
85
+ yazılmış bir `doğrulanmadı` yanında bile iddia sayıyordu. Bu biçim düzeltildi
86
+ (commit 9cb4d1d; ayrılmış kümede duyarlılık 0.857, planın 0.9 eşiğinin
87
+ altında). Daha dar bir artık kalıyor: kabul sözcüğü içermeyen Türkçe bir
88
+ kısmi düzeltme (`hâlâ başarısız`, `kısmen`) hâlâ bitti ve doğrulandı olarak
89
+ okunuyor; İngilizce ikizi ise yalnızca doğrulama olarak okunuyor.
81
90
 
82
91
  Çalıştırmada ölçüm aracı kusurları vardı; bunların arasında, iki koldaki
83
92
  ajanların benchmark'ın doğru cevaplarını okuyabilmesi de var. Toplamlar, görev
@@ -89,8 +98,12 @@ başına sayımlar ve her çekince
89
98
  ## Kurulum
90
99
 
91
100
  Tek satır, macOS, Linux veya WSL'de (Python 3.10+, `curl`, `tar`). Son sürümü
92
- indirir, sha256'sını doğrular ve bulduğu her barındırıcıyı kurar (Claude
93
- Code'u kendi `claude plugin` CLI'ı üzerinden):
101
+ indirir, sha256'sını doğrular, bulduğu her barındırıcıyı kurar (Claude Code'u
102
+ kendi `claude plugin` CLI'ı üzerinden) ve tezgah'ın kendi kullandığı eksik
103
+ isteğe bağlı araçları kurar (orx; `TEZGAH_NO_DEPS=1` bunları atlar). Bir
104
+ barındırıcının kendi CLI'ını (cursor-agent, pnpm, dsh) asla kurmaz: bunun
105
+ yerine komutu yazdırır ya da `tezgah-setup --install --host-deps` altında
106
+ çalıştırır.
94
107
 
95
108
  ```bash
96
109
  curl -fsSL https://raw.githubusercontent.com/r1z4x/tezgah/main/packaging/install.sh | sh
@@ -110,18 +123,23 @@ planladığı bir barındırıcı kurulamazsa sıfırdan farklı bir kodla çık
110
123
  yönetilen bir sözleşme bloğunu alır. Claude Code'un hook'ları `claude plugin`
111
124
  ile kaydedilen bir eklentide gelir; `claude` CLI'ı yoksa Claude kurulmamış
112
125
  kalır ve rapor bunu söyler.
113
- - **Depolarınızdaki ajan dosyaları.** Yapılandırılan köklerde bir oturum
114
- `.claude/agents/`, `.codex/agents/` ve `.opencode/agents/` altına alt ajan
115
- dosyaları yazar ve bu dizinleri klonun kendi `.git/info/exclude` dosyasına
116
- ekler (`TEZGAH_NO_EXCLUDE=1` bunu durdurur).
126
+ - **Ajan dosyaları.** Kurulum, tezgah'ın alt ajan rollerini
127
+ `~/.claude/agents/`, `$CODEX_HOME/agents/` (varsayılan `~/.codex/agents/`) ve
128
+ `~/.omp/agent/agents/` altına yazar. Yapılandırılan köklerde bir oturum
129
+ bunları deponun `.cursor/agents/` ve `.opencode/agents/` dizinlerine yazar ve
130
+ bu dizinleri klonun kendi `.git/info/exclude` dosyasına ekler
131
+ (`TEZGAH_NO_EXCLUDE=1` bunu durdurur).
117
132
  - **Günlük güncelleme denetimi.** Durum satırı yeni bir sürümü günde en fazla
118
133
  bir kez sorar; `~/.config/tezgah/update-check-off` ya da
119
134
  `TEZGAH_UPDATE_CHECK=0` bunu kapatır.
120
135
  - **orx.** Kurulum, araştırma görevlerinin yönlendirildiği OpenResearch CLI'ını
121
136
  indirir; `TEZGAH_NO_DEPS=1` bunu atlar.
122
- - **Yanıt dili.** Yanıtlar varsayılan olarak Türkçedir ve Stop kuralı bunu
123
- denetler. `--reply-lang en` İngilizce, `any` ise sizin dilinizi ister;
124
- ikisi de denetlenmez: `curl -fsSL … | sh -s -- --reply-lang en`.
137
+ - **Yanıt dili.** İlk kurulum, tezgah o dil için bir paket taşıyorsa (`tr`,
138
+ `en`) yerel ayarınızın dilinde (`LANG` ve benzerleri), yoksa İngilizce yanıt
139
+ ister; mevcut bir kurulum dilini korur. `--language en` İngilizce, `any` ise
140
+ sizin dilinizi ister: `curl -fsSL … | sh -s -- --reply-lang en` (kurucunun
141
+ `--language` için eski yazımı). Stop kuralı yalnızca Türkçe yanıtları
142
+ denetler.
125
143
 
126
144
  Kurulumu kodlama asistanınıza yaptırmak isterseniz bunu omp, Claude Code,
127
145
  Codex, Cursor veya opencode'a yapıştırın (istem İngilizce; asistan her dilde
@@ -151,7 +169,7 @@ yükseltme ve isteğe bağlı entegrasyonlar [docs](docs/README.md) altındadır
151
169
 
152
170
  ## Desteklenen barındırıcılar
153
171
 
154
- **omp** (birincil barındırıcı; tezgah buna göre geliştirilir ve doğrulanır), **Claude Code**, **Codex**, **Cursor**, **opencode**, **dsh** — paylaşılan tek çekirdeğin ince adaptörleri.
172
+ **omp** (birincil barındırıcı; tezgah buna göre geliştirilir ve doğrulanır), **Claude Code**, **Codex**, **Cursor**, **opencode**, **dsh**, **Qwen Code**, **Factory Droid**, **Command Code**, **GitHub Copilot CLI**, **Gemini CLI**, **Antigravity CLI**, **Goose**, **Amp** — paylaşılan tek çekirdeğin ince adaptörleri. Son sekizinin ikili dosyalarının bir deny'a uyduğunu gösteren bir çalıştırma henüz yok; son altısı yalnızca üreticilerinin belgelerine göre bağlandı ([barındırıcılar](docs/hosts.md), İngilizce).
155
173
 
156
174
  ## Ayrıntılar nerede
157
175
 
@@ -160,4 +178,4 @@ Kapı, kanıt defteri, barındırıcı adaptörleri, yapılandırma ve geliştir
160
178
  ## Lisans
161
179
 
162
180
  MIT — bkz. [LICENSE](LICENSE).
163
- Katıştırılmış beceriler (`ponytail`, `no-ai-slop`, `i-have-adhd`) kendi MIT koşullarıyla gelir; bkz. [NOTICE](NOTICE).
181
+ Katıştırılmış ve uyarlanmış üçüncü taraf beceri ve metinler kendi koşullarını (MIT ya da Apache-2.0) korur; bkz. [NOTICE](NOTICE).
package/bin/codegen CHANGED
@@ -218,6 +218,13 @@ def ask(task, files, model, provider, timeout, max_tokens):
218
218
  return (msg.get("content") or "").strip(), out.get("usage") or {}
219
219
 
220
220
 
221
+ def whole(flag, value):
222
+ """`value` as a whole number, or the misuse exit (1) naming `flag`."""
223
+ if not value.isdecimal():
224
+ sys.exit("codegen: %s needs a whole number, not %r" % (flag, value))
225
+ return int(value)
226
+
227
+
221
228
  def main():
222
229
  args = sys.argv[1:]
223
230
  if args and args[0] in ("-h", "--help"):
@@ -239,11 +246,11 @@ def main():
239
246
  if args[i] == "--model" and i + 1 < len(args):
240
247
  model = args[i + 1]; i += 2; continue
241
248
  if args[i] == "--timeout" and i + 1 < len(args):
242
- timeout = int(args[i + 1]); i += 2; continue
249
+ timeout = whole(args[i], args[i + 1]); i += 2; continue
243
250
  if args[i] == "--out-dir" and i + 1 < len(args):
244
251
  out_dir = args[i + 1]; i += 2; continue
245
252
  if args[i] == "--max-tokens" and i + 1 < len(args):
246
- max_tokens = int(args[i + 1]); i += 2; continue
253
+ max_tokens = whole(args[i], args[i + 1]); i += 2; continue
247
254
  sys.exit(f"codegen: unknown argument {args[i]}")
248
255
  if provider not in PROVIDERS:
249
256
  sys.exit("codegen: unknown provider %r (use %s)"
package/bin/consult CHANGED
@@ -582,8 +582,14 @@ def main():
582
582
  referee = False
583
583
  i += 1
584
584
  elif args[i] == "--timeout" and i + 1 < len(args):
585
+ if not args[i + 1].isdecimal():
586
+ sys.exit("consult: --timeout needs whole seconds, not %r" % args[i + 1])
585
587
  timeout = int(args[i + 1])
586
588
  i += 2
589
+ elif args[i].startswith("--"):
590
+ # a lone typo was the question: a paid panel call for `--bogus`.
591
+ # A question that starts with `--` still comes in via `consult -`.
592
+ sys.exit("consult: unknown flag %r" % args[i])
587
593
  elif question is None:
588
594
  question = args[i]
589
595
  i += 1
package/bin/tezgah-adhd CHANGED
@@ -25,6 +25,9 @@ def main(argv):
25
25
  print(__doc__.strip())
26
26
  return 0
27
27
  args = [a for a in argv if not a.startswith("-")]
28
+ if len(args) != len(argv):
29
+ print("%s\narguments: on, off" % USAGE, file=sys.stderr)
30
+ return 2
28
31
  if not args:
29
32
  print("off" if off(SWITCH) else "on")
30
33
  return 0
package/bin/tezgah-agents CHANGED
@@ -28,6 +28,9 @@ def main():
28
28
  if "-h" in args or "--help" in args:
29
29
  print(__doc__.strip())
30
30
  return 0
31
+ if any(a.startswith("-") and a not in ("--list", "--json") for a in args):
32
+ print("usage: tezgah-agents [--json] [PATH] | --list", file=sys.stderr)
33
+ return 2
31
34
  if "--list" in args:
32
35
  for name, desc, _cap, _body, readonly in ROLES:
33
36
  print("%s tier=%s %s\n %s" % (
@@ -36,6 +36,9 @@ USAGE = ('usage: tezgah-capture \'{"tool": "Edit", "input": {"file_path": "a.py"
36
36
 
37
37
 
38
38
  def main(argv):
39
+ if argv in (["-h"], ["--help"]):
40
+ print(__doc__.strip())
41
+ return 0
39
42
  if len(argv) != 1 or not argv[0].strip():
40
43
  print(USAGE, file=sys.stderr)
41
44
  return 2