chati-dev 3.2.2 → 3.2.4
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
CHANGED
|
@@ -133,7 +133,7 @@ The system saves your full session state — pipeline position, current agent, d
|
|
|
133
133
|
| **Session Lock** | Once activated, you stay inside the system. No accidentally "falling out" into generic AI mode |
|
|
134
134
|
| **Multi-Terminal** | Autonomous agents run in parallel in separate terminals. Detail, Architect, and UX agents work simultaneously |
|
|
135
135
|
| **Memory System** | The system learns from mistakes. Gotchas are captured automatically and recalled when relevant |
|
|
136
|
-
| **Execution Profiles** | Three profiles — explore (read-only), guided (default), autonomous (gate >=
|
|
136
|
+
| **Execution Profiles** | Three profiles — explore (read-only), guided (default), autonomous (gate >= 95%) — with safety net and circuit breaker |
|
|
137
137
|
| **IDE-Agnostic** | Works with Claude Code, VS Code, Cursor, Gemini CLI, Codex CLI, and AntiGravity |
|
|
138
138
|
| **4 Languages** | Interface supports English, Portuguese, Spanish, and French. Artifacts are always generated in English |
|
|
139
139
|
| **Supply Chain Security** | Every file is cryptographically signed (Ed25519). Tampered packages are blocked on install |
|
|
@@ -189,7 +189,7 @@ Three profiles control how much autonomy agents have:
|
|
|
189
189
|
|---------|----------|-------------|
|
|
190
190
|
| **explore** | Read-only. Agents analyze but don't modify files | Understanding a new codebase |
|
|
191
191
|
| **guided** | Default. Agents propose changes, you approve | Normal development workflow |
|
|
192
|
-
| **autonomous** | Agents execute without confirmation (quality gates >=
|
|
192
|
+
| **autonomous** | Agents execute without confirmation (quality gates >= 95%) | Trusted pipelines with high quality scores |
|
|
193
193
|
|
|
194
194
|
The system starts in `guided` mode. Transition to `autonomous` requires both QA gates scoring >= 95%. A safety net with 5 triggers (stuck loop, quality drop, scope creep, error cascade, user override) automatically reverts to guided mode when needed.
|
|
195
195
|
|
|
@@ -418,9 +418,9 @@ The installer and agent interactions support 4 languages:
|
|
|
418
418
|
| Language | Code | Status |
|
|
419
419
|
|----------|------|--------|
|
|
420
420
|
| **English** | `en` | Default |
|
|
421
|
-
| **
|
|
422
|
-
| **
|
|
423
|
-
| **
|
|
421
|
+
| **Português** | `pt` | Full support |
|
|
422
|
+
| **Español** | `es` | Full support |
|
|
423
|
+
| **Français** | `fr` | Full support |
|
|
424
424
|
|
|
425
425
|
Artifacts are always generated in English for portability and team collaboration.
|
|
426
426
|
|
package/framework/config.yaml
CHANGED
package/package.json
CHANGED
|
@@ -103,11 +103,6 @@ function buildReplacementConfig(provider) {
|
|
|
103
103
|
['/model haiku', `/model ${minimal}`],
|
|
104
104
|
];
|
|
105
105
|
|
|
106
|
-
// Codex CLI uses $chati for skill invocation, not /chati
|
|
107
|
-
if (provider === 'codex') {
|
|
108
|
-
strings.push(['/chati', '$chati']);
|
|
109
|
-
}
|
|
110
|
-
|
|
111
106
|
// --- Regex patterns for model names in structured contexts ---
|
|
112
107
|
const patterns = [
|
|
113
108
|
// Identity section: **Model**: opus | ...
|
|
@@ -175,6 +170,15 @@ function buildReplacementConfig(provider) {
|
|
|
175
170
|
{ pattern: /Update CLAUDE\.md/g, replacement: `Update ${contextFile}` },
|
|
176
171
|
];
|
|
177
172
|
|
|
173
|
+
// Codex CLI uses $chati for skill invocation, not /chati.
|
|
174
|
+
// Lookbehind prevents replacing /chati in file paths (e.g., orchestrator/chati.md).
|
|
175
|
+
if (provider === 'codex') {
|
|
176
|
+
patterns.push({
|
|
177
|
+
pattern: /(?<![/\w])\/chati/g,
|
|
178
|
+
replacement: '$$chati',
|
|
179
|
+
});
|
|
180
|
+
}
|
|
181
|
+
|
|
178
182
|
return { strings, patterns };
|
|
179
183
|
}
|
|
180
184
|
|
|
@@ -482,13 +482,39 @@ export function generateAllGeminiHooks() {
|
|
|
482
482
|
/**
|
|
483
483
|
* Generate .gemini/settings.json content with hook configuration.
|
|
484
484
|
*
|
|
485
|
+
* Gemini CLI expects hooks as an object keyed by event name, where each
|
|
486
|
+
* event contains an array of hook groups. Each group has an optional
|
|
487
|
+
* `matcher` and a `hooks` array with `{ name, type, command }` entries.
|
|
488
|
+
*
|
|
485
489
|
* @returns {string} JSON string for .gemini/settings.json
|
|
486
490
|
*/
|
|
487
491
|
export function generateGeminiSettings() {
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
+
// Group hooks by event
|
|
493
|
+
const eventGroups = {};
|
|
494
|
+
for (const [name, config] of Object.entries(HOOK_MAP)) {
|
|
495
|
+
if (!eventGroups[config.event]) {
|
|
496
|
+
eventGroups[config.event] = [];
|
|
497
|
+
}
|
|
498
|
+
eventGroups[config.event].push({
|
|
499
|
+
name,
|
|
500
|
+
type: 'command',
|
|
501
|
+
command: `node .gemini/hooks/${name}.js`,
|
|
502
|
+
description: config.description,
|
|
503
|
+
});
|
|
504
|
+
}
|
|
505
|
+
|
|
506
|
+
// Build the settings object: each event → array of hook groups
|
|
507
|
+
const hooks = {};
|
|
508
|
+
for (const [event, hookList] of Object.entries(eventGroups)) {
|
|
509
|
+
// Tool events (BeforeTool) use matcher; lifecycle events don't
|
|
510
|
+
const isToolEvent = event.includes('Tool');
|
|
511
|
+
hooks[event] = [
|
|
512
|
+
{
|
|
513
|
+
...(isToolEvent ? { matcher: '.*' } : {}),
|
|
514
|
+
hooks: hookList,
|
|
515
|
+
},
|
|
516
|
+
];
|
|
517
|
+
}
|
|
492
518
|
|
|
493
519
|
return JSON.stringify({ hooks }, null, 2) + '\n';
|
|
494
520
|
}
|