chati-dev 1.1.0 → 1.2.1
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/bin/chati.js
CHANGED
|
@@ -121,7 +121,7 @@ async function main() {
|
|
|
121
121
|
console.log(' - Constitution (10 Articles + Preamble)');
|
|
122
122
|
console.log(' - Dashboard TUI');
|
|
123
123
|
console.log(' - Upgrade system with migrations');
|
|
124
|
-
console.log(' -
|
|
124
|
+
console.log(' - 6 IDE support');
|
|
125
125
|
console.log(' - 4-language i18n (EN/PT/ES/FR)');
|
|
126
126
|
break;
|
|
127
127
|
}
|
|
@@ -259,5 +259,21 @@ The pipeline operates in three execution modes that control agent permissions. M
|
|
|
259
259
|
|
|
260
260
|
---
|
|
261
261
|
|
|
262
|
-
|
|
262
|
+
## Article XV: Session Lock Governance
|
|
263
|
+
|
|
264
|
+
Once the orchestrator is activated via `/chati`, a session lock engages. All agents and the orchestrator itself are bound by these rules:
|
|
265
|
+
|
|
266
|
+
1. **Lock is mandatory**: When a session is active (session.yaml has project.name and current_agent), the session lock MUST be ACTIVE. CLAUDE.md MUST contain the Session Lock block.
|
|
267
|
+
2. **All messages routed**: Every user message MUST be routed through the orchestrator and then to the active agent. No message may be answered outside of the chati.dev framework while the lock is active.
|
|
268
|
+
3. **No generic responses**: The AI MUST NOT respond as a generic assistant while the lock is active. It IS the chati.dev orchestrator. Off-topic requests are handled via the Deviation Protocol (5.7), not by dropping out of the system.
|
|
269
|
+
4. **Explicit exit only**: The session lock is released ONLY by explicit user intent via recognized exit commands (`/chati exit`, `/chati stop`, `/chati quit`) or clear natural language exit requests in the user's language.
|
|
270
|
+
5. **Exit preserves state**: On exit, all session state, progress, and partial work MUST be persisted. The session lock status in CLAUDE.md is set to INACTIVE. The user can resume anytime with `/chati`.
|
|
271
|
+
6. **Resume re-locks**: When `/chati` is invoked after a previous exit, the session lock is immediately re-activated and CLAUDE.md is updated with the active lock block.
|
|
272
|
+
7. **IDE restart resilience**: If the IDE is closed/restarted, the session lock status in CLAUDE.md persists. On the next `/chati` invocation, the orchestrator detects the existing session and re-engages the lock.
|
|
273
|
+
|
|
274
|
+
**Enforcement: BLOCK** — Responses outside the chati.dev framework while session lock is active are violations.
|
|
275
|
+
|
|
276
|
+
---
|
|
277
|
+
|
|
278
|
+
*chati.dev Constitution v1.2.0 — 15 Articles + Preamble*
|
|
263
279
|
*All agents are bound by this Constitution. Violations are enforced per article.*
|
|
@@ -26,19 +26,50 @@ When the user invokes `/chati`, execute this sequence:
|
|
|
26
26
|
5. Detect language from session.yaml -> respond in that language
|
|
27
27
|
```
|
|
28
28
|
|
|
29
|
-
### Step 2:
|
|
29
|
+
### Step 2: Check Subcommands
|
|
30
|
+
|
|
31
|
+
Before determining state, check if the user passed a subcommand:
|
|
32
|
+
|
|
33
|
+
```
|
|
34
|
+
/chati exit | /chati stop | /chati quit:
|
|
35
|
+
-> Execute Exit Protocol (see Session Lock Protocol section)
|
|
36
|
+
-> Do NOT proceed further
|
|
37
|
+
|
|
38
|
+
/chati status:
|
|
39
|
+
-> Display status dashboard (see /chati status section)
|
|
40
|
+
-> Stay locked, do NOT exit
|
|
41
|
+
|
|
42
|
+
/chati resume:
|
|
43
|
+
-> Load continuation from .chati/continuation/latest.md (if exists)
|
|
44
|
+
-> Resume session with full context recovery
|
|
45
|
+
-> Re-activate session lock
|
|
46
|
+
|
|
47
|
+
/chati help:
|
|
48
|
+
-> Display available commands:
|
|
49
|
+
/chati Start or resume session
|
|
50
|
+
/chati status Show project dashboard
|
|
51
|
+
/chati resume Resume from continuation file
|
|
52
|
+
/chati exit Save and exit session
|
|
53
|
+
/chati help Show this help
|
|
54
|
+
-> Stay locked
|
|
55
|
+
|
|
56
|
+
(no subcommand or unrecognized):
|
|
57
|
+
-> Continue to Step 3 (Determine State)
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
### Step 3: Determine State
|
|
30
61
|
|
|
31
62
|
**If session.yaml is empty or project.name is empty:**
|
|
32
63
|
```
|
|
33
|
-
-> First run. Go to Step
|
|
64
|
+
-> First run. Go to Step 4 (New Project Setup)
|
|
34
65
|
```
|
|
35
66
|
|
|
36
67
|
**If session.yaml has active project:**
|
|
37
68
|
```
|
|
38
|
-
-> Resume session. Go to Step
|
|
69
|
+
-> Resume session. Go to Step 5 (Session Resume)
|
|
39
70
|
```
|
|
40
71
|
|
|
41
|
-
### Step
|
|
72
|
+
### Step 4: New Project Setup
|
|
42
73
|
|
|
43
74
|
#### 3a. Detect Project Type
|
|
44
75
|
```
|
|
@@ -78,7 +109,7 @@ If greenfield -> Read chati.dev/agents/clarity/greenfield-wu.md -> Activate
|
|
|
78
109
|
If brownfield -> Read chati.dev/agents/clarity/brownfield-wu.md -> Activate
|
|
79
110
|
```
|
|
80
111
|
|
|
81
|
-
### Step
|
|
112
|
+
### Step 5: Session Resume
|
|
82
113
|
```
|
|
83
114
|
1. Read session.yaml -> identify current_agent, project.state, last_handoff
|
|
84
115
|
2. Read latest handoff from chati.dev/artifacts/handoffs/
|
|
@@ -412,10 +443,125 @@ To activate autonomous mode:
|
|
|
412
443
|
|
|
413
444
|
---
|
|
414
445
|
|
|
446
|
+
## Session Lock Protocol
|
|
447
|
+
|
|
448
|
+
Once `/chati` is invoked and a session is active, the orchestrator LOCKS the session. ALL subsequent user messages are routed through the orchestrator and the active agent. The user never "falls out" of the chati.dev system.
|
|
449
|
+
|
|
450
|
+
### Lock Activation
|
|
451
|
+
|
|
452
|
+
```
|
|
453
|
+
When /chati is invoked:
|
|
454
|
+
1. Load session state (Step 1-2 above)
|
|
455
|
+
2. SET session lock = ACTIVE
|
|
456
|
+
3. Update CLAUDE.md with Session Lock block (see template below)
|
|
457
|
+
4. ALL subsequent messages are intercepted by the orchestrator
|
|
458
|
+
5. Messages are routed to current_agent
|
|
459
|
+
```
|
|
460
|
+
|
|
461
|
+
### Session Lock Block (CLAUDE.md)
|
|
462
|
+
|
|
463
|
+
When the session is active, CLAUDE.md MUST contain this block:
|
|
464
|
+
|
|
465
|
+
```markdown
|
|
466
|
+
## ⚠️ Session Lock — ACTIVE
|
|
467
|
+
|
|
468
|
+
**chati.dev session is ACTIVE.** You MUST follow these rules for EVERY message:
|
|
469
|
+
|
|
470
|
+
1. Read `chati.dev/orchestrator/chati.md` and follow its routing logic
|
|
471
|
+
2. Route ALL user messages through the current agent: `{current_agent}`
|
|
472
|
+
3. NEVER respond outside of the chati.dev framework
|
|
473
|
+
4. NEVER act as generic Claude — you ARE the chati.dev orchestrator
|
|
474
|
+
5. If the user asks something unrelated to the current agent's scope,
|
|
475
|
+
handle it via the Deviation Protocol (Section 5.7), do NOT exit the system
|
|
476
|
+
6. The ONLY way to exit is via explicit exit commands (see below)
|
|
477
|
+
```
|
|
478
|
+
|
|
479
|
+
This block is injected into CLAUDE.md when the session starts and removed when the user exits.
|
|
480
|
+
|
|
481
|
+
### Message Routing (while locked)
|
|
482
|
+
|
|
483
|
+
```
|
|
484
|
+
User sends message:
|
|
485
|
+
│
|
|
486
|
+
├─ Is it an exit command? (see Exit Commands below)
|
|
487
|
+
│ YES -> Execute Exit Protocol
|
|
488
|
+
│ NO -> Continue
|
|
489
|
+
│
|
|
490
|
+
├─ Is it a /chati subcommand? (/chati status, /chati help, etc.)
|
|
491
|
+
│ YES -> Execute subcommand, stay locked
|
|
492
|
+
│ NO -> Continue
|
|
493
|
+
│
|
|
494
|
+
├─ Is it relevant to current agent's scope?
|
|
495
|
+
│ YES -> Route to current agent
|
|
496
|
+
│ NO -> Handle via Deviation Protocol (5.7)
|
|
497
|
+
│ -> Orchestrator re-routes to appropriate agent
|
|
498
|
+
│ -> Stay locked
|
|
499
|
+
│
|
|
500
|
+
└─ NEVER drop to raw/generic mode
|
|
501
|
+
```
|
|
502
|
+
|
|
503
|
+
### Exit Commands
|
|
504
|
+
|
|
505
|
+
The session lock is ONLY released by explicit user intent:
|
|
506
|
+
|
|
507
|
+
```
|
|
508
|
+
Explicit commands (any language):
|
|
509
|
+
/chati exit
|
|
510
|
+
/chati stop
|
|
511
|
+
/chati quit
|
|
512
|
+
|
|
513
|
+
Natural language (detected by orchestrator):
|
|
514
|
+
EN: "exit chati", "stop chati", "I want to leave", "quit the system"
|
|
515
|
+
PT: "sair do chati", "quero sair", "parar o chati"
|
|
516
|
+
ES: "salir de chati", "quiero salir", "parar el chati"
|
|
517
|
+
FR: "quitter chati", "je veux sortir", "arrêter chati"
|
|
518
|
+
|
|
519
|
+
NOT exit triggers (stay locked):
|
|
520
|
+
- "stop" (without "chati" — could mean stop current task)
|
|
521
|
+
- "wait" / "pause" (temporary, not exit)
|
|
522
|
+
- "go back" / "voltar" (navigation within pipeline)
|
|
523
|
+
- "cancel" (cancel current action, not exit system)
|
|
524
|
+
- Closing the IDE (session persists in session.yaml for resume)
|
|
525
|
+
```
|
|
526
|
+
|
|
527
|
+
### Exit Protocol
|
|
528
|
+
|
|
529
|
+
```
|
|
530
|
+
When exit is triggered:
|
|
531
|
+
1. Save current agent state to session.yaml
|
|
532
|
+
2. Generate session digest (for Memory Layer):
|
|
533
|
+
- Decisions made this session
|
|
534
|
+
- Current progress and partial work
|
|
535
|
+
- Pending items
|
|
536
|
+
3. Update CLAUDE.md:
|
|
537
|
+
- REMOVE Session Lock block
|
|
538
|
+
- UPDATE project status with current state
|
|
539
|
+
- ADD resume instructions:
|
|
540
|
+
"Session paused at {agent}. Type /chati to resume."
|
|
541
|
+
4. Confirm to user in their language:
|
|
542
|
+
EN: "Session saved. Type /chati anytime to resume."
|
|
543
|
+
PT: "Sessão salva. Digite /chati para retomar."
|
|
544
|
+
ES: "Sesión guardada. Escribe /chati para reanudar."
|
|
545
|
+
FR: "Session sauvée. Tapez /chati pour reprendre."
|
|
546
|
+
5. Session data PERSISTS — nothing is lost
|
|
547
|
+
```
|
|
548
|
+
|
|
549
|
+
### Resume After Exit
|
|
550
|
+
|
|
551
|
+
```
|
|
552
|
+
When user types /chati after a previous exit:
|
|
553
|
+
-> Normal Step 5 (Session Resume) flow
|
|
554
|
+
-> Session Lock is RE-ACTIVATED
|
|
555
|
+
-> CLAUDE.md lock block is RE-INJECTED
|
|
556
|
+
-> User is back in the system seamlessly
|
|
557
|
+
```
|
|
558
|
+
|
|
559
|
+
---
|
|
560
|
+
|
|
415
561
|
## Constitution Enforcement
|
|
416
562
|
|
|
417
563
|
The orchestrator enforces the Constitution (chati.dev/constitution.md):
|
|
418
|
-
- **BLOCK** enforcement: Halt agent on violation (Articles I, II, III, IV, VII, VIII, X, XI)
|
|
564
|
+
- **BLOCK** enforcement: Halt agent on violation (Articles I, II, III, IV, VII, VIII, X, XI, XV)
|
|
419
565
|
- **GUIDE** enforcement: Correct behavior without halting (Articles V, IX)
|
|
420
566
|
- **WARN** enforcement: Generate warning in QA (Article VI)
|
|
421
567
|
|
|
@@ -31,7 +31,7 @@
|
|
|
31
31
|
"ides": {
|
|
32
32
|
"type": "array",
|
|
33
33
|
"items": {
|
|
34
|
-
"enum": ["claude-code", "vscode", "antigravity", "cursor", "
|
|
34
|
+
"enum": ["claude-code", "vscode", "antigravity", "cursor", "gemini-cli", "github-copilot"]
|
|
35
35
|
},
|
|
36
36
|
"description": "Configured IDEs"
|
|
37
37
|
},
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "chati-dev",
|
|
3
|
-
"version": "1.1
|
|
4
|
-
"description": "AI-Powered Multi-Agent Development Framework — 13 agents,
|
|
3
|
+
"version": "1.2.1",
|
|
4
|
+
"description": "AI-Powered Multi-Agent Development Framework — 13 agents, 6 IDEs, 4 languages",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
7
7
|
"chati": "bin/chati.js",
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* IDE Configuration Mapping (
|
|
2
|
+
* IDE Configuration Mapping (6 IDEs)
|
|
3
3
|
* Defines where chati.dev agents are deployed per IDE
|
|
4
4
|
*/
|
|
5
5
|
export const IDE_CONFIGS = {
|
|
@@ -39,15 +39,6 @@ export const IDE_CONFIGS = {
|
|
|
39
39
|
mcpConfigFile: null,
|
|
40
40
|
formatNotes: 'Cursor rules format',
|
|
41
41
|
},
|
|
42
|
-
'windsurf': {
|
|
43
|
-
name: 'Windsurf',
|
|
44
|
-
description: 'AI-powered development environment',
|
|
45
|
-
recommended: false,
|
|
46
|
-
configPath: '.windsurf/rules/',
|
|
47
|
-
rulesFile: '.windsurfrules',
|
|
48
|
-
mcpConfigFile: null,
|
|
49
|
-
formatNotes: 'Windsurf rules format',
|
|
50
|
-
},
|
|
51
42
|
'gemini-cli': {
|
|
52
43
|
name: 'Gemini CLI',
|
|
53
44
|
description: 'Google AI for development',
|
|
@@ -80,6 +80,13 @@ export function generateClaudeMd(config) {
|
|
|
80
80
|
## Quick Start
|
|
81
81
|
Type \`/chati\` to activate the orchestrator. It will guide you through the entire process.
|
|
82
82
|
|
|
83
|
+
## Session Lock
|
|
84
|
+
**Status: INACTIVE** — Type \`/chati\` to activate.
|
|
85
|
+
|
|
86
|
+
When active, ALL messages are routed through the chati.dev orchestrator. The user stays inside the system until they explicitly exit with \`/chati exit\`.
|
|
87
|
+
|
|
88
|
+
<!-- SESSION-LOCK:INACTIVE -->
|
|
89
|
+
|
|
83
90
|
## Key Files
|
|
84
91
|
- **Session**: \`.chati/session.yaml\` (runtime state)
|
|
85
92
|
- **Constitution**: \`chati.dev/constitution.md\` (governance)
|