chati-dev 3.1.1 → 3.2.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.
- package/README.md +4 -9
- package/framework/config.yaml +3 -5
- package/framework/constitution.md +2 -3
- package/framework/context/governance.md +1 -1
- package/framework/i18n/en.yaml +0 -1
- package/framework/i18n/es.yaml +0 -1
- package/framework/i18n/fr.yaml +0 -1
- package/framework/i18n/pt.yaml +0 -1
- package/framework/intelligence/context-engine.md +2 -3
- package/framework/schemas/config.schema.json +0 -6
- package/framework/schemas/session.schema.json +2 -2
- package/package.json +1 -2
- package/scripts/ide-sync.js +0 -6
- package/src/config/context-file-generator.js +0 -4
- package/src/config/framework-adapter.js +1 -6
- package/src/config/ide-configs.js +1 -10
- package/src/installer/core.js +2 -9
- package/src/installer/templates.js +0 -51
- package/src/terminal/adapters/index.js +0 -1
- package/src/terminal/cli-registry.js +1 -16
- package/src/terminal/spawner.js +1 -1
- package/src/utils/config-parser.js +1 -1
- package/src/wizard/i18n.js +0 -1
- package/src/wizard/index.js +0 -3
- package/src/wizard/questions.js +1 -2
- package/src/terminal/adapters/copilot-adapter.js +0 -28
package/README.md
CHANGED
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
<a href="https://www.npmjs.com/package/chati-dev"><img src="https://img.shields.io/npm/v/chati-dev?color=blue&label=npm" alt="npm"></a>
|
|
11
11
|
<a href="LICENSE"><img src="https://img.shields.io/badge/License-MIT-blue.svg" alt="License: MIT"></a>
|
|
12
12
|
<a href="https://nodejs.org/"><img src="https://img.shields.io/badge/node-%3E%3D20.0.0-brightgreen.svg" alt="Node.js"></a>
|
|
13
|
-
<a href="#multi-cli-support"><img src="https://img.shields.io/badge/LLM-Claude%20%7C%20Gemini%20%7C%20Codex
|
|
13
|
+
<a href="#multi-cli-support"><img src="https://img.shields.io/badge/LLM-Claude%20%7C%20Gemini%20%7C%20Codex-blueviolet.svg" alt="Multi-LLM"></a>
|
|
14
14
|
<a href="#internationalization"><img src="https://img.shields.io/badge/i18n-EN%20%7C%20PT%20%7C%20ES%20%7C%20FR-informational.svg" alt="i18n"></a>
|
|
15
15
|
<a href="https://github.com/Chati-dev/Chati.dev/actions/workflows/ci.yml"><img src="https://github.com/Chati-dev/Chati.dev/actions/workflows/ci.yml/badge.svg" alt="CI"></a>
|
|
16
16
|
<a href=".github/CONTRIBUTING.md"><img src="https://img.shields.io/badge/contributions-welcome-brightgreen.svg" alt="Contributions Welcome"></a>
|
|
@@ -58,7 +58,6 @@ Chati.dev introduces **Agent-Driven Development**: a pipeline where each agent o
|
|
|
58
58
|
- [Claude Code](https://docs.anthropic.com/en/docs/claude-code/overview) (recommended)
|
|
59
59
|
- [Gemini CLI](https://github.com/google-gemini/gemini-cli)
|
|
60
60
|
- [Codex CLI](https://github.com/openai/codex)
|
|
61
|
-
- [GitHub Copilot CLI](https://docs.github.com/en/copilot)
|
|
62
61
|
|
|
63
62
|
### 1. Install in your project
|
|
64
63
|
|
|
@@ -74,7 +73,7 @@ The wizard guides you through 4 steps:
|
|
|
74
73
|
|------|-------------|
|
|
75
74
|
| **Language** | English, Portuguese, Spanish, or French |
|
|
76
75
|
| **Project Type** | Greenfield (new) or Brownfield (existing) |
|
|
77
|
-
| **AI Provider** | Claude, Gemini,
|
|
76
|
+
| **AI Provider** | Claude, Gemini, or Codex — auto-configures optimal models per agent |
|
|
78
77
|
| **Confirm** | Review summary and proceed |
|
|
79
78
|
|
|
80
79
|
### 2. Activate the orchestrator
|
|
@@ -121,14 +120,14 @@ npx chati-dev status --watch # Auto-refresh every 5s
|
|
|
121
120
|
| Feature | What it means |
|
|
122
121
|
|---------|--------------|
|
|
123
122
|
| **13 Specialized Agents** | Each agent has a defined mission, success criteria, and handoff protocol — not one AI trying to do everything |
|
|
124
|
-
| **Multi-CLI Architecture** | Choose your AI provider at install time: Claude, Gemini,
|
|
123
|
+
| **Multi-CLI Architecture** | Choose your AI provider at install time: Claude, Gemini, or Codex. Each agent gets the optimal model for that provider |
|
|
125
124
|
| **Quality Gates** | Every phase is validated before moving forward. 3-tier verdicts: APPROVED, NEEDS_REVISION, or BLOCKED |
|
|
126
125
|
| **Context Persistence** | Sessions survive restarts. Close your IDE, come back next week — the system remembers everything |
|
|
127
126
|
| **Session Lock** | Once activated, you stay inside the system. No accidentally "falling out" into generic AI mode |
|
|
128
127
|
| **Multi-Terminal** | Autonomous agents run in parallel in separate terminals. Detail, Architect, and UX agents work simultaneously |
|
|
129
128
|
| **Memory System** | The system learns from mistakes. Gotchas are captured automatically and recalled when relevant |
|
|
130
129
|
| **Execution Profiles** | Three profiles — explore (read-only), guided (default), autonomous (gate >= 90%) — with safety net and circuit breaker |
|
|
131
|
-
| **IDE-Agnostic** | Works with Claude Code, VS Code, Cursor, Gemini CLI,
|
|
130
|
+
| **IDE-Agnostic** | Works with Claude Code, VS Code, Cursor, Gemini CLI, and AntiGravity |
|
|
132
131
|
| **4 Languages** | Interface supports English, Portuguese, Spanish, and French. Artifacts are always generated in English |
|
|
133
132
|
| **Supply Chain Security** | Every file is cryptographically signed (Ed25519). Tampered packages are blocked on install |
|
|
134
133
|
|
|
@@ -145,7 +144,6 @@ Chati.dev is provider-agnostic. You choose your AI provider during installation,
|
|
|
145
144
|
| **Claude** | `claude` | Opus | Sonnet / Haiku | Default |
|
|
146
145
|
| **Gemini** | `gemini` | Pro | Flash | Full support |
|
|
147
146
|
| **Codex** | `codex` | Codex | Codex Mini | Full support |
|
|
148
|
-
| **GitHub Copilot** | `copilot` | Sonnet 4.5 | GPT-5 | Full support |
|
|
149
147
|
|
|
150
148
|
### How Model Assignment Works
|
|
151
149
|
|
|
@@ -160,7 +158,6 @@ When you select a provider, the system maps each agent to the best available mod
|
|
|
160
158
|
Claude: architect → opus, brief → sonnet, greenfield-wu → haiku
|
|
161
159
|
Gemini: architect → pro, brief → flash, greenfield-wu → flash
|
|
162
160
|
Codex: architect → codex, brief → codex-mini
|
|
163
|
-
GitHub Copilot: architect → claude-sonnet, brief → claude-sonnet
|
|
164
161
|
```
|
|
165
162
|
|
|
166
163
|
### CLI Invocation Syntax
|
|
@@ -172,7 +169,6 @@ Each provider uses its own CLI syntax. Chati.dev handles this transparently:
|
|
|
172
169
|
| Claude | `claude --print --model <id>` | `claude --print --model claude-opus-4-6` |
|
|
173
170
|
| Gemini | `gemini --model <id>` | `gemini --model gemini-2.5-pro` |
|
|
174
171
|
| Codex | `codex exec -m <id>` | `codex exec -m gpt-5.3-codex` |
|
|
175
|
-
| GitHub Copilot | `copilot -p --model <id>` | `copilot -p --model claude-sonnet-4.5` |
|
|
176
172
|
|
|
177
173
|
Prompts are piped via stdin for all providers. You can override individual agent models in `chati.dev/config.yaml` under `agent_overrides`.
|
|
178
174
|
|
|
@@ -290,7 +286,6 @@ The system is governed by a **19-article Constitution** that enforces agent beha
|
|
|
290
286
|
| **VS Code** | `.vscode/chati.md` → orchestrator |
|
|
291
287
|
| **Cursor** | `.cursor/rules/chati.md` → orchestrator |
|
|
292
288
|
| **Gemini CLI** | `.gemini/commands/chati.toml` → orchestrator |
|
|
293
|
-
| **GitHub Copilot** | `.github/agents/chati.md` → orchestrator |
|
|
294
289
|
| **AntiGravity** | Platform agent config → orchestrator |
|
|
295
290
|
|
|
296
291
|
All IDEs use a thin router file that points to the same orchestrator. Your project works the same regardless of which IDE you use.
|
package/framework/config.yaml
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
# chati.dev Configuration
|
|
2
|
-
version: "3.0
|
|
2
|
+
version: "3.2.0"
|
|
3
3
|
installed_at: "2026-02-07T10:00:00Z"
|
|
4
|
-
updated_at: "2026-02-
|
|
5
|
-
installer_version: "3.0
|
|
4
|
+
updated_at: "2026-02-19T00:00:00Z"
|
|
5
|
+
installer_version: "3.2.0"
|
|
6
6
|
project_type: greenfield
|
|
7
7
|
language: en
|
|
8
8
|
ides: [claude-code]
|
|
@@ -18,8 +18,6 @@ providers:
|
|
|
18
18
|
codex:
|
|
19
19
|
enabled: false
|
|
20
20
|
model_default: codex
|
|
21
|
-
copilot:
|
|
22
|
-
enabled: false
|
|
23
21
|
|
|
24
22
|
# Per-agent provider/model overrides (optional — inherits from AGENT_MODELS default)
|
|
25
23
|
# agent_overrides:
|
|
@@ -282,7 +282,7 @@ The pipeline operates in three execution modes that control agent permissions. M
|
|
|
282
282
|
|
|
283
283
|
6. Autonomous spawn capability varies by IDE:
|
|
284
284
|
- Full autonomy: Claude Code, AntiGravity, Gemini CLI
|
|
285
|
-
- Continuation file: Cursor, VS Code
|
|
285
|
+
- Continuation file: Cursor, VS Code (user loads with /chati resume)
|
|
286
286
|
|
|
287
287
|
**Enforcement: BLOCK** — Bracket violations (injecting L3/L4 in CRITICAL) degrade agent quality.
|
|
288
288
|
|
|
@@ -368,11 +368,10 @@ The orchestrator SHALL select the optimal AI model for each agent to balance qua
|
|
|
368
368
|
|
|
369
369
|
8. Model selections are logged in session.yaml under `model_selections[]` for cost tracking and optimization.
|
|
370
370
|
|
|
371
|
-
9.
|
|
371
|
+
9. Three provider categories are recognized for multi-CLI execution:
|
|
372
372
|
- **claude**: Primary provider. Deep reasoning, complex analysis, code generation. Full hook support, MCP support.
|
|
373
373
|
- **gemini**: Large-context provider. Codebase analysis, discovery, document review. 1M token context window. Full hook support, MCP support.
|
|
374
374
|
- **codex**: Rapid-coding provider. Fast code generation, sandbox execution. No hook support, MCP support.
|
|
375
|
-
- **copilot**: Multi-model provider. Reads CLAUDE.md, GEMINI.md, and AGENTS.md natively. Full hook support, MCP support.
|
|
376
375
|
|
|
377
376
|
10. Claude is the default and primary provider. Multi-CLI is opt-in via `config.yaml` `providers` section. When only `claude` is enabled, the system behaves identically to v2.x.
|
|
378
377
|
|
|
@@ -44,7 +44,7 @@ Extracted from `chati.dev/constitution.md` (19 Articles). Read the full constitu
|
|
|
44
44
|
- Circuit breaker: CLOSED -> OPEN (3 failures) -> HALF_OPEN (probe)
|
|
45
45
|
|
|
46
46
|
## Multi-CLI Governance (Article XIX)
|
|
47
|
-
-
|
|
47
|
+
- 3 providers: Claude, Gemini, Codex
|
|
48
48
|
- Provider selected at install time, auto-configures optimal models per agent
|
|
49
49
|
- Resolution chain: agent_overrides > agent default > primary provider
|
|
50
50
|
- Context files auto-generated for non-Claude providers (GEMINI.md, AGENTS.md)
|
package/framework/i18n/en.yaml
CHANGED
|
@@ -19,7 +19,6 @@ installer:
|
|
|
19
19
|
llm_provider_claude: "Claude (Anthropic) — Best for structured reasoning"
|
|
20
20
|
llm_provider_gemini: "Gemini (Google) — 1M token context window"
|
|
21
21
|
llm_provider_codex: "Codex (OpenAI) — Optimized for code generation"
|
|
22
|
-
llm_provider_copilot: "Copilot (GitHub) — Multi-model, GitHub integrated"
|
|
23
22
|
llm_provider_not_installed: "(CLI not detected)"
|
|
24
23
|
llm_provider_label: "AI Provider"
|
|
25
24
|
will_install: "Will install:"
|
package/framework/i18n/es.yaml
CHANGED
|
@@ -19,7 +19,6 @@ installer:
|
|
|
19
19
|
llm_provider_claude: "Claude (Anthropic) — Mejor para razonamiento estructurado"
|
|
20
20
|
llm_provider_gemini: "Gemini (Google) — Ventana de contexto de 1M tokens"
|
|
21
21
|
llm_provider_codex: "Codex (OpenAI) — Optimizado para generacion de codigo"
|
|
22
|
-
llm_provider_copilot: "Copilot (GitHub) — Multi-modelo, integrado con GitHub"
|
|
23
22
|
llm_provider_not_installed: "(CLI no detectada)"
|
|
24
23
|
llm_provider_label: "Proveedor de IA"
|
|
25
24
|
will_install: "Se instalara:"
|
package/framework/i18n/fr.yaml
CHANGED
|
@@ -19,7 +19,6 @@ installer:
|
|
|
19
19
|
llm_provider_claude: "Claude (Anthropic) — Ideal pour le raisonnement structure"
|
|
20
20
|
llm_provider_gemini: "Gemini (Google) — Fenetre de contexte de 1M tokens"
|
|
21
21
|
llm_provider_codex: "Codex (OpenAI) — Optimise pour la generation de code"
|
|
22
|
-
llm_provider_copilot: "Copilot (GitHub) — Multi-modele, integre a GitHub"
|
|
23
22
|
llm_provider_not_installed: "(CLI non detecte)"
|
|
24
23
|
llm_provider_label: "Fournisseur IA"
|
|
25
24
|
will_install: "Sera installe:"
|
package/framework/i18n/pt.yaml
CHANGED
|
@@ -19,7 +19,6 @@ installer:
|
|
|
19
19
|
llm_provider_claude: "Claude (Anthropic) — Melhor para raciocinio estruturado"
|
|
20
20
|
llm_provider_gemini: "Gemini (Google) — Janela de contexto de 1M tokens"
|
|
21
21
|
llm_provider_codex: "Codex (OpenAI) — Otimizado para geracao de codigo"
|
|
22
|
-
llm_provider_copilot: "Copilot (GitHub) — Multi-modelo, integrado ao GitHub"
|
|
23
22
|
llm_provider_not_installed: "(CLI nao detectada)"
|
|
24
23
|
llm_provider_label: "Provedor de IA"
|
|
25
24
|
will_install: "Sera instalado:"
|
|
@@ -138,7 +138,7 @@ If Smart Continuation is insufficient, the orchestrator spawns a new session:
|
|
|
138
138
|
|-----|---------|---------|
|
|
139
139
|
| Claude Code | Automatic via PreCompact hook | Task tool subagent or CLI spawn |
|
|
140
140
|
| AntiGravity | Automatic via platform hooks | New agent session via platform API |
|
|
141
|
-
| Cursor / VS Code
|
|
141
|
+
| Cursor / VS Code | Automatic via context detection | Continuation file for manual resume |
|
|
142
142
|
| Gemini CLI | Automatic via context detection | CLI spawn |
|
|
143
143
|
|
|
144
144
|
---
|
|
@@ -168,7 +168,7 @@ If Smart Continuation is insufficient, the orchestrator spawns a new session:
|
|
|
168
168
|
|
|
169
169
|
When agents execute on different CLI providers, context injection adapts to the provider's capabilities:
|
|
170
170
|
|
|
171
|
-
### Hook-Based Providers (Claude Code, Gemini CLI
|
|
171
|
+
### Hook-Based Providers (Claude Code, Gemini CLI)
|
|
172
172
|
- PRISM context injected via `UserPromptSubmit` hook
|
|
173
173
|
- Mode governance enforced via `PreToolUse` hook
|
|
174
174
|
- Constitution guard enforced via `PreToolUse` hook
|
|
@@ -186,7 +186,6 @@ When agents execute on different CLI providers, context injection adapts to the
|
|
|
186
186
|
| Claude Code | CLAUDE.md | Native (already exists) |
|
|
187
187
|
| Gemini CLI | GEMINI.md | Auto-generated from CLAUDE.md |
|
|
188
188
|
| Codex CLI | AGENTS.md | Auto-generated from CLAUDE.md |
|
|
189
|
-
| GitHub Copilot CLI | All three | Reads CLAUDE.md, GEMINI.md, AGENTS.md natively |
|
|
190
189
|
|
|
191
190
|
### Cross-Provider Handoff
|
|
192
191
|
Handoff format is identical regardless of which provider executed the agent. The two-layer structure (Article VIII) ensures any provider can read any handoff. Session state in `.chati/session.yaml` is the single source of truth — all providers read from and write to the same session file.
|
|
@@ -62,12 +62,6 @@
|
|
|
62
62
|
"enabled": { "type": "boolean", "default": false },
|
|
63
63
|
"model_default": { "type": "string", "default": "codex" }
|
|
64
64
|
}
|
|
65
|
-
},
|
|
66
|
-
"copilot": {
|
|
67
|
-
"type": "object",
|
|
68
|
-
"properties": {
|
|
69
|
-
"enabled": { "type": "boolean", "default": false }
|
|
70
|
-
}
|
|
71
65
|
}
|
|
72
66
|
}
|
|
73
67
|
},
|
|
@@ -57,7 +57,7 @@
|
|
|
57
57
|
"ides": {
|
|
58
58
|
"type": "array",
|
|
59
59
|
"items": {
|
|
60
|
-
"enum": ["claude-code", "vscode", "antigravity", "cursor", "gemini-cli", "
|
|
60
|
+
"enum": ["claude-code", "vscode", "antigravity", "cursor", "gemini-cli", "codex-cli"]
|
|
61
61
|
},
|
|
62
62
|
"description": "Configured IDEs"
|
|
63
63
|
},
|
|
@@ -169,7 +169,7 @@
|
|
|
169
169
|
"recommended": { "enum": ["opus", "sonnet", "haiku"], "description": "Recommended model" },
|
|
170
170
|
"actual": { "enum": ["opus", "sonnet", "haiku"], "description": "Model actually used" },
|
|
171
171
|
"reason": { "type": "string", "description": "Why this model was selected (default, upgrade condition, no downgrade)" },
|
|
172
|
-
"provider": { "type": "string", "description": "CLI provider used (claude, gemini, codex
|
|
172
|
+
"provider": { "type": "string", "description": "CLI provider used (claude, gemini, codex)" },
|
|
173
173
|
"timestamp": { "type": "string", "format": "date-time" }
|
|
174
174
|
}
|
|
175
175
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "chati-dev",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.2.0",
|
|
4
4
|
"description": "AI-Powered Multi-Agent Orchestration System — Structured vibe coding for Full Stack Development",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -40,7 +40,6 @@
|
|
|
40
40
|
"claude",
|
|
41
41
|
"gemini",
|
|
42
42
|
"codex",
|
|
43
|
-
"copilot",
|
|
44
43
|
"multi-llm",
|
|
45
44
|
"orchestration",
|
|
46
45
|
"fullstack"
|
package/scripts/ide-sync.js
CHANGED
|
@@ -54,12 +54,6 @@ export const IDE_CONFIGS = {
|
|
|
54
54
|
format: 'toml',
|
|
55
55
|
description: 'Gemini CLI',
|
|
56
56
|
},
|
|
57
|
-
'github-copilot': {
|
|
58
|
-
agentsDir: '.github/agents/',
|
|
59
|
-
extension: '.md',
|
|
60
|
-
format: 'markdown',
|
|
61
|
-
description: 'GitHub Copilot',
|
|
62
|
-
},
|
|
63
57
|
};
|
|
64
58
|
|
|
65
59
|
// ---------------------------------------------------------------------------
|
|
@@ -8,7 +8,6 @@
|
|
|
8
8
|
* Provider conventions (verified Feb 2026):
|
|
9
9
|
* - Gemini CLI: auto-loads GEMINI.md, uses .gemini/commands/*.toml, no rules/
|
|
10
10
|
* - Codex CLI: auto-loads AGENTS.md, uses .agents/skills/chati/SKILL.md for $chati
|
|
11
|
-
* - Copilot CLI: auto-loads AGENTS.md + CLAUDE.md + GEMINI.md natively (no COPILOT.md needed)
|
|
12
11
|
*/
|
|
13
12
|
|
|
14
13
|
import { existsSync, readFileSync, writeFileSync } from 'fs';
|
|
@@ -139,8 +138,6 @@ export function generateAgentsMd(content) {
|
|
|
139
138
|
* CLAUDE.md from the project root, and writes the appropriate context
|
|
140
139
|
* files (GEMINI.md, AGENTS.md) when their providers are active.
|
|
141
140
|
*
|
|
142
|
-
* Copilot CLI does not need its own context file — it natively reads
|
|
143
|
-
* AGENTS.md, CLAUDE.md, and GEMINI.md.
|
|
144
141
|
*
|
|
145
142
|
* @param {string} projectDir - Project root directory
|
|
146
143
|
* @param {string} [baseContent] - Optional base content (used when CLAUDE.md doesn't exist on disk)
|
|
@@ -164,7 +161,6 @@ export function generateContextFiles(projectDir, baseContent = null) {
|
|
|
164
161
|
const enabledProviders = resolveEnabledProviders(projectDir);
|
|
165
162
|
|
|
166
163
|
// Provider-to-generator mapping
|
|
167
|
-
// Note: Copilot is intentionally excluded — it reads AGENTS.md + CLAUDE.md + GEMINI.md natively
|
|
168
164
|
const generators = {
|
|
169
165
|
gemini: {
|
|
170
166
|
filename: 'GEMINI.md',
|
|
@@ -57,11 +57,6 @@ const PROVIDER_META = {
|
|
|
57
57
|
contextFile: 'AGENTS.md',
|
|
58
58
|
localFile: '.chati/session.yaml',
|
|
59
59
|
},
|
|
60
|
-
copilot: {
|
|
61
|
-
cliName: 'GitHub Copilot CLI',
|
|
62
|
-
contextFile: 'AGENTS.md',
|
|
63
|
-
localFile: '.chati/session.yaml',
|
|
64
|
-
},
|
|
65
60
|
};
|
|
66
61
|
|
|
67
62
|
// ---------------------------------------------------------------------------
|
|
@@ -187,7 +182,7 @@ function buildReplacementConfig(provider) {
|
|
|
187
182
|
*
|
|
188
183
|
* @param {string} content - Original file content (Claude Code version)
|
|
189
184
|
* @param {string} filePath - Relative path within chati.dev/ (e.g. 'orchestrator/chati.md')
|
|
190
|
-
* @param {string} provider - Target provider: 'gemini', 'codex'
|
|
185
|
+
* @param {string} provider - Target provider: 'gemini', 'codex'
|
|
191
186
|
* @returns {string} Adapted content for the target provider
|
|
192
187
|
*/
|
|
193
188
|
export function adaptFrameworkFile(content, filePath, provider) {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* IDE Configuration Mapping (
|
|
2
|
+
* IDE Configuration Mapping (5 IDEs)
|
|
3
3
|
* Defines where chati.dev agents are deployed per IDE
|
|
4
4
|
*/
|
|
5
5
|
export const IDE_CONFIGS = {
|
|
@@ -57,15 +57,6 @@ export const IDE_CONFIGS = {
|
|
|
57
57
|
mcpConfigFile: '.gemini/settings.json',
|
|
58
58
|
formatNotes: 'TOML command format',
|
|
59
59
|
},
|
|
60
|
-
'github-copilot': {
|
|
61
|
-
name: 'GitHub Copilot',
|
|
62
|
-
description: 'GitHub AI pair programmer',
|
|
63
|
-
recommended: false,
|
|
64
|
-
configPath: '.github/agents/',
|
|
65
|
-
rulesFile: '.github/copilot-instructions.md',
|
|
66
|
-
mcpConfigFile: null,
|
|
67
|
-
formatNotes: 'GitHub Copilot agent format',
|
|
68
|
-
},
|
|
69
60
|
};
|
|
70
61
|
|
|
71
62
|
/**
|
package/src/installer/core.js
CHANGED
|
@@ -3,7 +3,7 @@ import { join, dirname } from 'path';
|
|
|
3
3
|
import { fileURLToPath } from 'url';
|
|
4
4
|
import { IDE_CONFIGS } from '../config/ide-configs.js';
|
|
5
5
|
import { generateClaudeMCPConfig } from '../config/mcp-configs.js';
|
|
6
|
-
import { generateSessionYaml, generateConfigYaml, generateClaudeMd, generateClaudeLocalMd, generateCodexSkill, generateGeminiRouter
|
|
6
|
+
import { generateSessionYaml, generateConfigYaml, generateClaudeMd, generateClaudeLocalMd, generateCodexSkill, generateGeminiRouter } from './templates.js';
|
|
7
7
|
import { generateContextFiles } from '../config/context-file-generator.js';
|
|
8
8
|
import { adaptFrameworkFile, ADAPTABLE_FILES } from '../config/framework-adapter.js';
|
|
9
9
|
import { verifyManifest } from './manifest.js';
|
|
@@ -317,13 +317,6 @@ Pass through all context: session state, handoffs, artifacts, and user input.
|
|
|
317
317
|
} else if (ideKey === 'gemini-cli') {
|
|
318
318
|
// Gemini CLI: TOML command file (native format for /chati command)
|
|
319
319
|
writeFileSync(join(targetDir, '.gemini', 'commands', 'chati.toml'), generateGeminiRouter(), 'utf-8');
|
|
320
|
-
} else if (ideKey === 'github-copilot') {
|
|
321
|
-
// GitHub Copilot: agent file (.github/agents/chati.md) for @chati invocation
|
|
322
|
-
writeFileSync(join(targetDir, '.github', 'agents', 'chati.md'), generateCopilotAgent(), 'utf-8');
|
|
323
|
-
|
|
324
|
-
// Copilot instructions file (auto-loaded by Copilot CLI)
|
|
325
|
-
createDir(dirname(join(targetDir, config.rulesFile)));
|
|
326
|
-
writeFileSync(join(targetDir, config.rulesFile), generateProviderInstructions(config.name), 'utf-8');
|
|
327
320
|
} else {
|
|
328
321
|
// VS Code, Cursor, AntiGravity — generic rules file
|
|
329
322
|
if (config.rulesFile) {
|
|
@@ -335,7 +328,7 @@ Pass through all context: session state, handoffs, artifacts, and user input.
|
|
|
335
328
|
|
|
336
329
|
/**
|
|
337
330
|
* Generate provider-agnostic instructions file content.
|
|
338
|
-
* Used for non-Claude IDEs (.
|
|
331
|
+
* Used for non-Claude IDEs (.vscode/chati/rules.md, .cursorrules, etc.)
|
|
339
332
|
*/
|
|
340
333
|
function generateProviderInstructions(providerName) {
|
|
341
334
|
return `# Chati.dev System Rules
|
|
@@ -80,15 +80,6 @@ export const PROVIDER_MODEL_MAPS = {
|
|
|
80
80
|
dev: 'codex', 'qa-implementation': 'codex', devops: 'mini',
|
|
81
81
|
},
|
|
82
82
|
},
|
|
83
|
-
copilot: {
|
|
84
|
-
deep: 'claude-sonnet', light: 'claude-sonnet', minimal: 'gpt-5',
|
|
85
|
-
agents: {
|
|
86
|
-
orchestrator: 'claude-sonnet', 'greenfield-wu': 'gpt-5', 'brownfield-wu': 'claude-sonnet',
|
|
87
|
-
brief: 'claude-sonnet', detail: 'claude-sonnet', architect: 'claude-sonnet', ux: 'claude-sonnet',
|
|
88
|
-
phases: 'claude-sonnet', tasks: 'claude-sonnet', 'qa-planning': 'claude-sonnet',
|
|
89
|
-
dev: 'claude-sonnet', 'qa-implementation': 'claude-sonnet', devops: 'claude-sonnet',
|
|
90
|
-
},
|
|
91
|
-
},
|
|
92
83
|
};
|
|
93
84
|
|
|
94
85
|
/**
|
|
@@ -110,7 +101,6 @@ export function generateConfigYaml(config) {
|
|
|
110
101
|
claude: { enabled: true, primary: provider === 'claude' },
|
|
111
102
|
gemini: { enabled: provider === 'gemini' || selectedIDEs.includes('gemini-cli'), model_default: 'pro', primary: provider === 'gemini' },
|
|
112
103
|
codex: { enabled: provider === 'codex' || selectedIDEs.includes('codex-cli'), model_default: 'codex', primary: provider === 'codex' },
|
|
113
|
-
copilot: { enabled: provider === 'copilot' || selectedIDEs.includes('github-copilot'), primary: provider === 'copilot' },
|
|
114
104
|
},
|
|
115
105
|
};
|
|
116
106
|
|
|
@@ -230,47 +220,6 @@ User input: {{args}}
|
|
|
230
220
|
`;
|
|
231
221
|
}
|
|
232
222
|
|
|
233
|
-
/**
|
|
234
|
-
* Generate GitHub Copilot agent file (.github/agents/chati.md)
|
|
235
|
-
*
|
|
236
|
-
* Copilot CLI uses .github/agents/*.md for custom agents.
|
|
237
|
-
* The user invokes with @chati in the Copilot CLI.
|
|
238
|
-
*/
|
|
239
|
-
export function generateCopilotAgent() {
|
|
240
|
-
return `# Chati.dev Orchestrator
|
|
241
|
-
|
|
242
|
-
You are the Chati.dev orchestrator agent for GitHub Copilot CLI.
|
|
243
|
-
|
|
244
|
-
## CRITICAL — Language Override
|
|
245
|
-
|
|
246
|
-
Read \`.chati/session.yaml\` field \`language\` BEFORE anything else.
|
|
247
|
-
ALL responses MUST be in this language. This overrides any global setting.
|
|
248
|
-
|
|
249
|
-
| Value | Language |
|
|
250
|
-
|-------|----------|
|
|
251
|
-
| \`en\` | English |
|
|
252
|
-
| \`pt\` | Portugues |
|
|
253
|
-
| \`es\` | Espanol |
|
|
254
|
-
| \`fr\` | Francais |
|
|
255
|
-
|
|
256
|
-
If session.yaml does not exist or has no language field, default to English.
|
|
257
|
-
|
|
258
|
-
## Load
|
|
259
|
-
|
|
260
|
-
The orchestrator and all agent files are **pre-configured for GitHub Copilot CLI**.
|
|
261
|
-
No translation needed — follow all instructions as written.
|
|
262
|
-
|
|
263
|
-
Read and execute the full orchestrator at \`chati.dev/orchestrator/chati.md\`.
|
|
264
|
-
|
|
265
|
-
**NEVER create or reference CLAUDE.md, CLAUDE.local.md, or .claude/ directories.**
|
|
266
|
-
|
|
267
|
-
**Context to pass:**
|
|
268
|
-
- \`.chati/session.yaml\` (session state — includes language)
|
|
269
|
-
- \`chati.dev/artifacts/handoffs/\` (latest handoff)
|
|
270
|
-
- \`chati.dev/config.yaml\` (version info)
|
|
271
|
-
`;
|
|
272
|
-
}
|
|
273
|
-
|
|
274
223
|
/**
|
|
275
224
|
* Generate CLAUDE.local.md content (runtime state — auto-gitignored, never committed)
|
|
276
225
|
*/
|
|
@@ -75,21 +75,6 @@ const PROVIDERS = {
|
|
|
75
75
|
},
|
|
76
76
|
adapter: adapters.codex,
|
|
77
77
|
},
|
|
78
|
-
copilot: {
|
|
79
|
-
name: 'copilot',
|
|
80
|
-
command: 'copilot',
|
|
81
|
-
baseArgs: ['-p'],
|
|
82
|
-
modelFlag: '--model',
|
|
83
|
-
stdinSupport: true,
|
|
84
|
-
hooksSupport: false,
|
|
85
|
-
mcpSupport: true,
|
|
86
|
-
contextFile: null,
|
|
87
|
-
modelMap: {
|
|
88
|
-
'claude-sonnet': 'claude-sonnet-4.5',
|
|
89
|
-
'gpt-5': 'gpt-5',
|
|
90
|
-
},
|
|
91
|
-
adapter: adapters.copilot,
|
|
92
|
-
},
|
|
93
78
|
};
|
|
94
79
|
|
|
95
80
|
// ---------------------------------------------------------------------------
|
|
@@ -99,7 +84,7 @@ const PROVIDERS = {
|
|
|
99
84
|
/**
|
|
100
85
|
* Get a provider configuration by name.
|
|
101
86
|
*
|
|
102
|
-
* @param {string} name - Provider name (claude, gemini, codex
|
|
87
|
+
* @param {string} name - Provider name (claude, gemini, codex)
|
|
103
88
|
* @returns {ProviderConfig}
|
|
104
89
|
* @throws {Error} When provider is not found
|
|
105
90
|
*/
|
package/src/terminal/spawner.js
CHANGED
|
@@ -86,7 +86,7 @@ export function cleanParentEnv(env) {
|
|
|
86
86
|
* @property {string} agent - Agent name (e.g. "architect")
|
|
87
87
|
* @property {string} taskId - Task identifier
|
|
88
88
|
* @property {string} [model] - LLM model tier name (e.g. opus, pro, codex, claude-sonnet)
|
|
89
|
-
* @property {string} [provider] - CLI provider name (claude, gemini, codex
|
|
89
|
+
* @property {string} [provider] - CLI provider name (claude, gemini, codex)
|
|
90
90
|
* @property {string} [prompt] - Full prompt string (from prompt-builder, piped via stdin)
|
|
91
91
|
* @property {object} [contextPayload] - Context to inject via env var
|
|
92
92
|
* @property {string[]} [writeScope] - Override write scope
|
|
@@ -22,7 +22,7 @@ export function parseProviderConfig(projectDir) {
|
|
|
22
22
|
}
|
|
23
23
|
|
|
24
24
|
const raw = readFileSync(configPath, 'utf-8');
|
|
25
|
-
const providers = ['claude', 'gemini', 'codex'
|
|
25
|
+
const providers = ['claude', 'gemini', 'codex'];
|
|
26
26
|
const enabled = [];
|
|
27
27
|
let primary = 'claude';
|
|
28
28
|
|
package/src/wizard/i18n.js
CHANGED
|
@@ -24,7 +24,6 @@ const FALLBACK_EN = {
|
|
|
24
24
|
llm_provider_claude: 'Claude (Anthropic) — Best for structured reasoning',
|
|
25
25
|
llm_provider_gemini: 'Gemini (Google) — 1M token context window',
|
|
26
26
|
llm_provider_codex: 'Codex (OpenAI) — Optimized for code generation',
|
|
27
|
-
llm_provider_copilot: 'Copilot (GitHub) — Multi-model, GitHub integrated',
|
|
28
27
|
llm_provider_not_installed: '(CLI not detected)',
|
|
29
28
|
llm_provider_label: 'AI Provider',
|
|
30
29
|
will_install: 'Will install:',
|
package/src/wizard/index.js
CHANGED
|
@@ -19,7 +19,6 @@ const PROVIDER_TO_IDE = {
|
|
|
19
19
|
claude: ['claude-code'],
|
|
20
20
|
gemini: ['gemini-cli'],
|
|
21
21
|
codex: ['codex-cli'],
|
|
22
|
-
copilot: ['github-copilot'],
|
|
23
22
|
};
|
|
24
23
|
|
|
25
24
|
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
@@ -89,7 +88,6 @@ export async function runWizard(targetDir, options = {}) {
|
|
|
89
88
|
'claude-code': 'Created .claude/commands/ (thin router)',
|
|
90
89
|
'gemini-cli': 'Created .gemini/commands/ (TOML command)',
|
|
91
90
|
'codex-cli': 'Created .agents/skills/chati/ (Codex skill)',
|
|
92
|
-
'github-copilot': 'Created .github/agents/ (Copilot agent)',
|
|
93
91
|
};
|
|
94
92
|
const commandStep = commandStepMap[primaryIDE] || t('installer.created_commands');
|
|
95
93
|
showStep(commandStep);
|
|
@@ -132,7 +130,6 @@ export async function runWizard(targetDir, options = {}) {
|
|
|
132
130
|
|
|
133
131
|
// Show quick start — same experience across all providers
|
|
134
132
|
const invokeCmdMap = {
|
|
135
|
-
'github-copilot': '@chati',
|
|
136
133
|
'codex-cli': '$chati',
|
|
137
134
|
};
|
|
138
135
|
const invokeCmd = invokeCmdMap[primaryIDE] || '/chati';
|
package/src/wizard/questions.js
CHANGED
|
@@ -67,7 +67,6 @@ export async function stepLlmProvider() {
|
|
|
67
67
|
{ name: 'claude', label: t('installer.llm_provider_claude') },
|
|
68
68
|
{ name: 'gemini', label: t('installer.llm_provider_gemini') },
|
|
69
69
|
{ name: 'codex', label: t('installer.llm_provider_codex') },
|
|
70
|
-
{ name: 'copilot', label: t('installer.llm_provider_copilot') },
|
|
71
70
|
];
|
|
72
71
|
|
|
73
72
|
// Check availability of each provider
|
|
@@ -110,7 +109,7 @@ export async function stepConfirmation(config) {
|
|
|
110
109
|
const { projectName, projectType, language, llmProvider, selectedMCPs, selectedIDEs } = config;
|
|
111
110
|
|
|
112
111
|
const langName = SUPPORTED_LANGUAGES.find(l => l.value === language)?.label || language;
|
|
113
|
-
const providerNames = { claude: 'Claude (Anthropic)', gemini: 'Gemini (Google)', codex: 'Codex (OpenAI)'
|
|
112
|
+
const providerNames = { claude: 'Claude (Anthropic)', gemini: 'Gemini (Google)', codex: 'Codex (OpenAI)' };
|
|
114
113
|
const providerDisplay = providerNames[llmProvider] || llmProvider;
|
|
115
114
|
const ideNames = (selectedIDEs || ['claude-code'])
|
|
116
115
|
.map(id => IDE_CONFIGS[id]?.name || id)
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @fileoverview GitHub Copilot CLI adapter.
|
|
3
|
-
*
|
|
4
|
-
* Translates chati.dev spawning config into Copilot CLI
|
|
5
|
-
* command, arguments, and environment variables.
|
|
6
|
-
*/
|
|
7
|
-
|
|
8
|
-
/**
|
|
9
|
-
* Build Copilot CLI command and arguments.
|
|
10
|
-
*
|
|
11
|
-
* @param {import('../spawner.js').SpawnConfig} config
|
|
12
|
-
* @param {import('../cli-registry.js').ProviderConfig} provider
|
|
13
|
-
* @returns {{ command: string, args: string[], stdinPrompt: string|null }}
|
|
14
|
-
*/
|
|
15
|
-
export function buildCommand(config, provider) {
|
|
16
|
-
const args = [...provider.baseArgs];
|
|
17
|
-
|
|
18
|
-
if (config.model) {
|
|
19
|
-
const resolvedModel = provider.modelMap[config.model] || config.model;
|
|
20
|
-
args.push(provider.modelFlag, resolvedModel);
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
return {
|
|
24
|
-
command: provider.command,
|
|
25
|
-
args,
|
|
26
|
-
stdinPrompt: config.prompt || null,
|
|
27
|
-
};
|
|
28
|
-
}
|