s9n-devops-agent 2.0.14 → 2.0.18-dev.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/House_Rules_Contracts/API_CONTRACT.md +612 -0
- package/House_Rules_Contracts/DATABASE_SCHEMA_CONTRACT.md +373 -0
- package/House_Rules_Contracts/DEVOPS_AGENT_INSTRUCTIONS.md +743 -0
- package/House_Rules_Contracts/FEATURES_CONTRACT.md +655 -0
- package/House_Rules_Contracts/INFRA_CONTRACT.md +638 -0
- package/House_Rules_Contracts/README.md +671 -0
- package/House_Rules_Contracts/SQL_CONTRACT.json +346 -0
- package/House_Rules_Contracts/THIRD_PARTY_INTEGRATIONS.md +604 -0
- package/README.md +93 -143
- package/bin/cs-devops-agent +20 -2
- package/houserules.md +1412 -0
- package/houserules_structured.md +1442 -0
- package/package.json +6 -2
- package/scripts/generate-ai-commit.js +135 -0
- package/scripts/local-install.sh +42 -0
- package/src/agent-chat.js +457 -0
- package/src/credentials-manager.js +1 -1
- package/src/cs-devops-agent-worker.js +84 -4
- package/src/house-rules-manager.js +4 -14
- package/src/session-coordinator.js +165 -15
- package/src/setup-cs-devops-agent.js +218 -242
- package/src/worktree-manager.js +2 -1
- package/start-devops-session.sh +9 -2
|
@@ -0,0 +1,671 @@
|
|
|
1
|
+
# House Rules Contracts - CS_DevOpsAgent
|
|
2
|
+
|
|
3
|
+
**Repository:** CS_DevOpsAgent
|
|
4
|
+
**Created:** 2024-12-16
|
|
5
|
+
**Version:** 1.0.0
|
|
6
|
+
**Purpose:** Single source of truth for all DevOps Agent components to prevent duplication and conflicts
|
|
7
|
+
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
## Overview
|
|
11
|
+
|
|
12
|
+
This folder contains **contract files** that document all aspects of the CS_DevOpsAgent project. These contracts serve as a **mandatory reference** for all coding agents before making changes to database schema, SQL queries, API endpoints, third-party integrations, features, or infrastructure configuration.
|
|
13
|
+
|
|
14
|
+
The contract system ensures that multiple AI agents can work on the same codebase without creating duplicate features, conflicting changes, or breaking existing functionality.
|
|
15
|
+
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
## Why Contracts Exist
|
|
19
|
+
|
|
20
|
+
### The Problem
|
|
21
|
+
|
|
22
|
+
When multiple coding agents work on the same codebase **without coordination**, they will create duplicate features with different names, create duplicate API endpoints for the same functionality, write duplicate SQL queries doing the same thing, integrate the same third-party service multiple times, make conflicting database changes that break each other, create duplicate environment variables with different names, overwrite each other's code unknowingly, and break existing functionality without realizing it.
|
|
23
|
+
|
|
24
|
+
### The Solution
|
|
25
|
+
|
|
26
|
+
Contracts provide a single source of truth that all agents must check before coding. This enables agents to discover existing functionality before building new, reuse existing code instead of duplicating, know exactly what exists and how to use it, avoid conflicts and breaking changes, coordinate changes across the codebase, maintain consistency and quality, and save time by not rebuilding what exists.
|
|
27
|
+
|
|
28
|
+
---
|
|
29
|
+
|
|
30
|
+
## Contract Files
|
|
31
|
+
|
|
32
|
+
| Contract File | Purpose | When to Check |
|
|
33
|
+
|---------------|---------|---------------|
|
|
34
|
+
| **[DATABASE_SCHEMA_CONTRACT.md](./DATABASE_SCHEMA_CONTRACT.md)** | All database tables, columns, indexes, migrations | Before creating/modifying database schema |
|
|
35
|
+
| **[SQL_CONTRACT.json](./SQL_CONTRACT.json)** | Reusable SQL queries with parameters and usage | Before writing any SQL query |
|
|
36
|
+
| **[API_CONTRACT.md](./API_CONTRACT.md)** | All API endpoints with full specifications | Before creating/modifying API endpoints |
|
|
37
|
+
| **[THIRD_PARTY_INTEGRATIONS.md](./THIRD_PARTY_INTEGRATIONS.md)** | External service integrations and binding modules | Before integrating third-party services |
|
|
38
|
+
| **[FEATURES_CONTRACT.md](./FEATURES_CONTRACT.md)** | All features with specifications and dependencies | Before implementing any feature |
|
|
39
|
+
| **[INFRA_CONTRACT.md](./INFRA_CONTRACT.md)** | Environment variables and infrastructure config | Before adding configuration/env vars |
|
|
40
|
+
| **[DEVOPS_AGENT_INSTRUCTIONS.md](./DEVOPS_AGENT_INSTRUCTIONS.md)** | Instructions for generating and maintaining contracts | For DevOps Agent to populate contracts |
|
|
41
|
+
|
|
42
|
+
---
|
|
43
|
+
|
|
44
|
+
## Quick Reference
|
|
45
|
+
|
|
46
|
+
**Before you code, ask yourself:**
|
|
47
|
+
|
|
48
|
+
- 📋 "Does this feature already exist?" → Check `FEATURES_CONTRACT.md`
|
|
49
|
+
- 🔌 "Does this API endpoint already exist?" → Check `API_CONTRACT.md`
|
|
50
|
+
- 🗄️ "Does this database table already exist?" → Check `DATABASE_SCHEMA_CONTRACT.md`
|
|
51
|
+
- 📝 "Does this SQL query already exist?" → Check `SQL_CONTRACT.json`
|
|
52
|
+
- 🌐 "Is this service already integrated?" → Check `THIRD_PARTY_INTEGRATIONS.md`
|
|
53
|
+
- ⚙️ "Does this env variable already exist?" → Check `INFRA_CONTRACT.md`
|
|
54
|
+
|
|
55
|
+
**If YES → REUSE IT**
|
|
56
|
+
**If NO → CREATE IT and DOCUMENT IT**
|
|
57
|
+
|
|
58
|
+
---
|
|
59
|
+
|
|
60
|
+
## Detailed Usage Examples
|
|
61
|
+
|
|
62
|
+
### Example 1: Adding a New API Endpoint
|
|
63
|
+
|
|
64
|
+
**Scenario:** You need to add an endpoint to retrieve DevOps Agent execution logs.
|
|
65
|
+
|
|
66
|
+
**Step 1: Check API_CONTRACT.md**
|
|
67
|
+
|
|
68
|
+
```bash
|
|
69
|
+
# Search for existing log-related endpoints
|
|
70
|
+
grep -i "log" House_Rules_Contracts/API_CONTRACT.md
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
**Step 2: Analyze Results**
|
|
74
|
+
|
|
75
|
+
If you find:
|
|
76
|
+
```markdown
|
|
77
|
+
#### `GET /api/v1/logs`
|
|
78
|
+
**Description:** Retrieves system logs
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
**Decision:** REUSE this endpoint. Don't create a duplicate.
|
|
82
|
+
|
|
83
|
+
**Step 3: Update "Used By" Section**
|
|
84
|
+
|
|
85
|
+
```markdown
|
|
86
|
+
**Used By:**
|
|
87
|
+
- `monitoring-service` - System monitoring
|
|
88
|
+
- `devops-agent` - Agent execution logs ← ADD THIS
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
**Step 4: If No Existing Endpoint, CREATE and DOCUMENT**
|
|
92
|
+
|
|
93
|
+
```markdown
|
|
94
|
+
#### `GET /api/v1/devops/executions/{id}/logs`
|
|
95
|
+
|
|
96
|
+
**Description:** Retrieves execution logs for a specific DevOps Agent run
|
|
97
|
+
|
|
98
|
+
**Authentication Required:** YES
|
|
99
|
+
**Required Roles:** `admin`, `devops`
|
|
100
|
+
|
|
101
|
+
**Path Parameters:**
|
|
102
|
+
| Parameter | Type | Required | Description |
|
|
103
|
+
|-----------|------|----------|-------------|
|
|
104
|
+
| `id` | string | YES | Execution ID |
|
|
105
|
+
|
|
106
|
+
**Query Parameters:**
|
|
107
|
+
| Parameter | Type | Required | Description |
|
|
108
|
+
|-----------|------|----------|-------------|
|
|
109
|
+
| `level` | string | NO | Log level filter (info, warn, error) |
|
|
110
|
+
| `limit` | integer | NO | Number of logs to return (default: 100) |
|
|
111
|
+
|
|
112
|
+
**Response (200 OK):**
|
|
113
|
+
\```json
|
|
114
|
+
{
|
|
115
|
+
"success": true,
|
|
116
|
+
"data": {
|
|
117
|
+
"execution_id": "exec_123",
|
|
118
|
+
"logs": [
|
|
119
|
+
{
|
|
120
|
+
"timestamp": "2024-12-16T10:30:00Z",
|
|
121
|
+
"level": "info",
|
|
122
|
+
"message": "Contract generation started",
|
|
123
|
+
"metadata": {}
|
|
124
|
+
}
|
|
125
|
+
]
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
\```
|
|
129
|
+
|
|
130
|
+
**Implementation:**
|
|
131
|
+
- Controller: `src/api/controllers/DevOpsController.js::getExecutionLogs()`
|
|
132
|
+
- Service: `src/services/DevOpsService.js::getExecutionLogs()`
|
|
133
|
+
- SQL Query: `get_execution_logs` (from SQL_CONTRACT.json)
|
|
134
|
+
|
|
135
|
+
**Used By:**
|
|
136
|
+
- `devops-dashboard` - Displays execution logs
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
---
|
|
140
|
+
|
|
141
|
+
### Example 2: Adding a New Database Table
|
|
142
|
+
|
|
143
|
+
**Scenario:** You need to store DevOps Agent execution history.
|
|
144
|
+
|
|
145
|
+
**Step 1: Check DATABASE_SCHEMA_CONTRACT.md**
|
|
146
|
+
|
|
147
|
+
```bash
|
|
148
|
+
# Search for existing execution-related tables
|
|
149
|
+
grep -i "execution" House_Rules_Contracts/DATABASE_SCHEMA_CONTRACT.md
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
**Step 2: Analyze Results**
|
|
153
|
+
|
|
154
|
+
If you find:
|
|
155
|
+
```markdown
|
|
156
|
+
### Table: agent_executions
|
|
157
|
+
**Purpose:** Stores agent execution history
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
**Decision:** REUSE this table. Check if it has the columns you need.
|
|
161
|
+
|
|
162
|
+
**Step 3: If Missing Columns, Document the Change**
|
|
163
|
+
|
|
164
|
+
```markdown
|
|
165
|
+
### Table: agent_executions
|
|
166
|
+
|
|
167
|
+
**Last Modified:** 2024-12-16
|
|
168
|
+
**Version:** 1.1.0
|
|
169
|
+
|
|
170
|
+
#### Schema Definition
|
|
171
|
+
|
|
172
|
+
\```sql
|
|
173
|
+
CREATE TABLE agent_executions (
|
|
174
|
+
id SERIAL PRIMARY KEY,
|
|
175
|
+
agent_type VARCHAR(50) NOT NULL,
|
|
176
|
+
execution_id VARCHAR(100) UNIQUE NOT NULL,
|
|
177
|
+
status VARCHAR(20) NOT NULL,
|
|
178
|
+
started_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
179
|
+
completed_at TIMESTAMP,
|
|
180
|
+
logs_path TEXT, -- ← NEW COLUMN ADDED
|
|
181
|
+
error_message TEXT,
|
|
182
|
+
metadata JSONB
|
|
183
|
+
);
|
|
184
|
+
\```
|
|
185
|
+
|
|
186
|
+
**Changelog:**
|
|
187
|
+
- **2024-12-16 v1.1.0:** Added `logs_path` column to store log file location
|
|
188
|
+
- **2024-12-02 v1.0.0:** Initial table creation
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
**Step 4: If No Existing Table, CREATE and DOCUMENT**
|
|
192
|
+
|
|
193
|
+
```markdown
|
|
194
|
+
### Table: devops_contract_scans
|
|
195
|
+
|
|
196
|
+
**Created:** 2024-12-16
|
|
197
|
+
**Last Modified:** 2024-12-16
|
|
198
|
+
**Version:** 1.0.0
|
|
199
|
+
**Purpose:** Stores results of contract generation scans
|
|
200
|
+
|
|
201
|
+
#### Schema Definition
|
|
202
|
+
|
|
203
|
+
\```sql
|
|
204
|
+
CREATE TABLE devops_contract_scans (
|
|
205
|
+
id SERIAL PRIMARY KEY,
|
|
206
|
+
execution_id VARCHAR(100) NOT NULL,
|
|
207
|
+
repository VARCHAR(255) NOT NULL,
|
|
208
|
+
scan_type VARCHAR(50) NOT NULL,
|
|
209
|
+
features_found INTEGER DEFAULT 0,
|
|
210
|
+
apis_found INTEGER DEFAULT 0,
|
|
211
|
+
tables_found INTEGER DEFAULT 0,
|
|
212
|
+
queries_found INTEGER DEFAULT 0,
|
|
213
|
+
integrations_found INTEGER DEFAULT 0,
|
|
214
|
+
env_vars_found INTEGER DEFAULT 0,
|
|
215
|
+
scan_results JSONB,
|
|
216
|
+
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
217
|
+
FOREIGN KEY (execution_id) REFERENCES agent_executions(execution_id)
|
|
218
|
+
);
|
|
219
|
+
\```
|
|
220
|
+
|
|
221
|
+
**Used By (Modules):**
|
|
222
|
+
- `devops-agent` - Stores scan results
|
|
223
|
+
- `contract-automation` - Retrieves historical scans
|
|
224
|
+
|
|
225
|
+
**Indexes:**
|
|
226
|
+
- `idx_execution_id` on `execution_id`
|
|
227
|
+
- `idx_repository` on `repository`
|
|
228
|
+
|
|
229
|
+
**Relationships:**
|
|
230
|
+
- References `agent_executions.execution_id`
|
|
231
|
+
```
|
|
232
|
+
|
|
233
|
+
---
|
|
234
|
+
|
|
235
|
+
### Example 3: Adding a Reusable SQL Query
|
|
236
|
+
|
|
237
|
+
**Scenario:** You need to query execution logs by status.
|
|
238
|
+
|
|
239
|
+
**Step 1: Check SQL_CONTRACT.json**
|
|
240
|
+
|
|
241
|
+
```bash
|
|
242
|
+
# Search for existing execution queries
|
|
243
|
+
cat House_Rules_Contracts/SQL_CONTRACT.json | jq '.queries | keys[]' | grep -i execution
|
|
244
|
+
```
|
|
245
|
+
|
|
246
|
+
**Step 2: Analyze Results**
|
|
247
|
+
|
|
248
|
+
If you find:
|
|
249
|
+
```json
|
|
250
|
+
"get_execution_by_id": {
|
|
251
|
+
"sql": "SELECT * FROM agent_executions WHERE execution_id = $1"
|
|
252
|
+
}
|
|
253
|
+
```
|
|
254
|
+
|
|
255
|
+
**Decision:** Check if you can reuse or extend this query.
|
|
256
|
+
|
|
257
|
+
**Step 3: If You Need a Different Query, CREATE and DOCUMENT**
|
|
258
|
+
|
|
259
|
+
Add to `SQL_CONTRACT.json`:
|
|
260
|
+
|
|
261
|
+
```json
|
|
262
|
+
{
|
|
263
|
+
"queries": {
|
|
264
|
+
"get_executions_by_status": {
|
|
265
|
+
"id": "get_executions_by_status",
|
|
266
|
+
"name": "Get Executions By Status",
|
|
267
|
+
"description": "Retrieves all agent executions filtered by status",
|
|
268
|
+
"sql": "SELECT id, agent_type, execution_id, status, started_at, completed_at FROM agent_executions WHERE status = $1 ORDER BY started_at DESC LIMIT $2",
|
|
269
|
+
"operation_type": "SELECT",
|
|
270
|
+
"parameters": [
|
|
271
|
+
{
|
|
272
|
+
"name": "status",
|
|
273
|
+
"type": "string",
|
|
274
|
+
"required": true,
|
|
275
|
+
"description": "Execution status (pending, running, completed, failed)",
|
|
276
|
+
"example": "completed"
|
|
277
|
+
},
|
|
278
|
+
{
|
|
279
|
+
"name": "limit",
|
|
280
|
+
"type": "integer",
|
|
281
|
+
"required": true,
|
|
282
|
+
"description": "Maximum number of results",
|
|
283
|
+
"example": 50
|
|
284
|
+
}
|
|
285
|
+
],
|
|
286
|
+
"returns": {
|
|
287
|
+
"type": "array",
|
|
288
|
+
"description": "Array of execution records"
|
|
289
|
+
},
|
|
290
|
+
"used_by_modules": [
|
|
291
|
+
{
|
|
292
|
+
"module": "devops-service",
|
|
293
|
+
"file": "src/services/DevOpsService.js",
|
|
294
|
+
"function": "getExecutionsByStatus",
|
|
295
|
+
"usage": "Retrieves completed executions for dashboard"
|
|
296
|
+
}
|
|
297
|
+
],
|
|
298
|
+
"performance_notes": "Indexed on status column for fast filtering",
|
|
299
|
+
"created": "2024-12-16",
|
|
300
|
+
"version": "1.0.0"
|
|
301
|
+
}
|
|
302
|
+
}
|
|
303
|
+
}
|
|
304
|
+
```
|
|
305
|
+
|
|
306
|
+
**Step 4: Use the Query in Your Code**
|
|
307
|
+
|
|
308
|
+
```javascript
|
|
309
|
+
// src/services/DevOpsService.js
|
|
310
|
+
const SQL_QUERIES = require('../contracts/SQL_CONTRACT.json').queries;
|
|
311
|
+
|
|
312
|
+
async function getExecutionsByStatus(status, limit = 50) {
|
|
313
|
+
const query = SQL_QUERIES.get_executions_by_status;
|
|
314
|
+
const result = await db.query(query.sql, [status, limit]);
|
|
315
|
+
return result.rows;
|
|
316
|
+
}
|
|
317
|
+
```
|
|
318
|
+
|
|
319
|
+
---
|
|
320
|
+
|
|
321
|
+
### Example 4: Adding a Third-Party Integration
|
|
322
|
+
|
|
323
|
+
**Scenario:** You need to integrate Slack for DevOps notifications.
|
|
324
|
+
|
|
325
|
+
**Step 1: Check THIRD_PARTY_INTEGRATIONS.md**
|
|
326
|
+
|
|
327
|
+
```bash
|
|
328
|
+
# Search for existing Slack integration
|
|
329
|
+
grep -i "slack" House_Rules_Contracts/THIRD_PARTY_INTEGRATIONS.md
|
|
330
|
+
```
|
|
331
|
+
|
|
332
|
+
**Step 2: Analyze Results**
|
|
333
|
+
|
|
334
|
+
If you find:
|
|
335
|
+
```markdown
|
|
336
|
+
### Slack (Team Communication)
|
|
337
|
+
**Status:** Active
|
|
338
|
+
```
|
|
339
|
+
|
|
340
|
+
**Decision:** REUSE the existing integration. Check the binding module location.
|
|
341
|
+
|
|
342
|
+
**Step 3: Update "Used By" Section**
|
|
343
|
+
|
|
344
|
+
```markdown
|
|
345
|
+
**Used By Modules:**
|
|
346
|
+
| Module | File | Usage |
|
|
347
|
+
|--------|------|-------|
|
|
348
|
+
| notification-service | `src/services/NotificationService.js` | Sends alerts |
|
|
349
|
+
| devops-agent | `src/integrations/slack/DevOpsNotifier.js` | Execution status updates ← ADD THIS |
|
|
350
|
+
```
|
|
351
|
+
|
|
352
|
+
**Step 4: If No Existing Integration, CREATE and DOCUMENT**
|
|
353
|
+
|
|
354
|
+
```markdown
|
|
355
|
+
### Groq (LLM API)
|
|
356
|
+
|
|
357
|
+
**Purpose:** AI-powered code analysis and contract generation
|
|
358
|
+
|
|
359
|
+
**Status:** Active
|
|
360
|
+
**Added:** 2024-12-16
|
|
361
|
+
**Version:** 1.0.0
|
|
362
|
+
|
|
363
|
+
**Authentication:**
|
|
364
|
+
- Method: API Key
|
|
365
|
+
- Key Location: `GROQ_API_KEY` (see INFRA_CONTRACT.md)
|
|
366
|
+
- Documentation: https://console.groq.com/docs
|
|
367
|
+
|
|
368
|
+
**Binding Module:**
|
|
369
|
+
- Location: `src/integrations/groq/`
|
|
370
|
+
- Main File: `src/integrations/groq/GroqClient.js`
|
|
371
|
+
- Initialization: `new GroqClient(process.env.GROQ_API_KEY)`
|
|
372
|
+
|
|
373
|
+
**API Endpoints Used:**
|
|
374
|
+
| Endpoint | Purpose | Rate Limit |
|
|
375
|
+
|----------|---------|------------|
|
|
376
|
+
| `POST /v1/chat/completions` | LLM inference | 30 req/min |
|
|
377
|
+
|
|
378
|
+
**Used By Modules:**
|
|
379
|
+
| Module | File | Usage |
|
|
380
|
+
|--------|------|-------|
|
|
381
|
+
| contract-automation | `scripts/contract-automation/analyze-with-llm.js` | Contract analysis |
|
|
382
|
+
| devops-agent | `src/services/ContractAnalyzer.js` | Code documentation |
|
|
383
|
+
|
|
384
|
+
**Error Handling:**
|
|
385
|
+
- Rate limit exceeded: Exponential backoff with max 3 retries
|
|
386
|
+
- API errors: Log and fallback to local scanning
|
|
387
|
+
- Timeout: 30 seconds per request
|
|
388
|
+
|
|
389
|
+
**Cost Optimization:**
|
|
390
|
+
- Use `llama-3.1-70b-versatile` for complex analysis
|
|
391
|
+
- Use `llama-3.1-8b-instant` for simple validation
|
|
392
|
+
- Cache results to avoid redundant calls
|
|
393
|
+
|
|
394
|
+
**Dependencies:**
|
|
395
|
+
- npm package: `openai` (OpenAI-compatible client)
|
|
396
|
+
- Version: `^4.0.0`
|
|
397
|
+
|
|
398
|
+
**Example Usage:**
|
|
399
|
+
\```javascript
|
|
400
|
+
const GroqClient = require('./integrations/groq/GroqClient');
|
|
401
|
+
|
|
402
|
+
const client = new GroqClient(process.env.GROQ_API_KEY);
|
|
403
|
+
const result = await client.analyzeCode(codeSnippet, 'llama-3.1-70b-versatile');
|
|
404
|
+
\```
|
|
405
|
+
```
|
|
406
|
+
|
|
407
|
+
---
|
|
408
|
+
|
|
409
|
+
### Example 5: Adding a New Feature
|
|
410
|
+
|
|
411
|
+
**Scenario:** You need to add automated contract compliance checking.
|
|
412
|
+
|
|
413
|
+
**Step 1: Check FEATURES_CONTRACT.md**
|
|
414
|
+
|
|
415
|
+
```bash
|
|
416
|
+
# Search for existing contract-related features
|
|
417
|
+
grep -i "contract" House_Rules_Contracts/FEATURES_CONTRACT.md
|
|
418
|
+
```
|
|
419
|
+
|
|
420
|
+
**Step 2: Analyze Results**
|
|
421
|
+
|
|
422
|
+
If you find:
|
|
423
|
+
```markdown
|
|
424
|
+
**Feature ID:** [F-001] - Contract Generation
|
|
425
|
+
**Status:** Active
|
|
426
|
+
```
|
|
427
|
+
|
|
428
|
+
**Decision:** Check if compliance checking is part of this feature or needs to be separate.
|
|
429
|
+
|
|
430
|
+
**Step 3: If It's a New Feature, CREATE and DOCUMENT**
|
|
431
|
+
|
|
432
|
+
```markdown
|
|
433
|
+
## Feature Overview
|
|
434
|
+
|
|
435
|
+
### Feature ID: [F-003] - Contract Compliance Checking
|
|
436
|
+
|
|
437
|
+
**Feature Name:** Automated Contract Compliance Checking
|
|
438
|
+
**Status:** Active
|
|
439
|
+
**Priority:** High
|
|
440
|
+
**Owner Module:** `contract-automation`
|
|
441
|
+
**Completion:** 100%
|
|
442
|
+
**Created:** 2024-12-16
|
|
443
|
+
**Last Updated:** 2024-12-16
|
|
444
|
+
**Version:** 1.0.0
|
|
445
|
+
|
|
446
|
+
**Description:**
|
|
447
|
+
|
|
448
|
+
This feature provides automated validation to ensure that the codebase remains in sync with the contract files. It scans the entire repository to detect discrepancies such as features in code but missing from contracts, API endpoints not documented, database tables not tracked, SQL queries not registered, third-party services not documented, and environment variables not cataloged.
|
|
449
|
+
|
|
450
|
+
**User Story:**
|
|
451
|
+
|
|
452
|
+
As a DevOps Agent, I want to automatically check if contracts are up-to-date so that I can alert developers when code changes are not properly documented in the contract system.
|
|
453
|
+
|
|
454
|
+
**Acceptance Criteria:**
|
|
455
|
+
|
|
456
|
+
1. The system can scan the codebase and extract all features, APIs, database tables, SQL queries, third-party integrations, and environment variables.
|
|
457
|
+
2. The system can compare discovered items against the contract files and identify missing or extra items.
|
|
458
|
+
3. The system generates a detailed report showing all discrepancies with specific file locations.
|
|
459
|
+
4. The system supports both text and JSON output formats for integration with CI/CD pipelines.
|
|
460
|
+
5. The system can run in strict mode and exit with an error code if discrepancies are found.
|
|
461
|
+
6. The compliance check can be executed via command line with configurable options.
|
|
462
|
+
|
|
463
|
+
**Dependencies:**
|
|
464
|
+
|
|
465
|
+
- **Features:** [F-001] - Contract Generation (must exist first)
|
|
466
|
+
- **APIs:** None (command-line tool)
|
|
467
|
+
- **Database:** `devops_contract_scans` table (for storing compliance results)
|
|
468
|
+
- **SQL Queries:** None (uses direct file system scanning)
|
|
469
|
+
- **Third-party Services:** None
|
|
470
|
+
- **Environment Variables:** None
|
|
471
|
+
|
|
472
|
+
**Related Contracts:**
|
|
473
|
+
|
|
474
|
+
- `scripts/contract-automation/check-compliance.js` - Implementation
|
|
475
|
+
- `DEVOPS_AGENT_INSTRUCTIONS.md` - Usage instructions
|
|
476
|
+
|
|
477
|
+
**API Endpoints:**
|
|
478
|
+
|
|
479
|
+
None (command-line tool)
|
|
480
|
+
|
|
481
|
+
**Technical Implementation:**
|
|
482
|
+
|
|
483
|
+
- **Location:** `scripts/contract-automation/check-compliance.js`
|
|
484
|
+
- **Technology:** Node.js
|
|
485
|
+
- **Execution:** `node scripts/contract-automation/check-compliance.js [--strict] [--report=json]`
|
|
486
|
+
|
|
487
|
+
**Usage Example:**
|
|
488
|
+
|
|
489
|
+
\```bash
|
|
490
|
+
# Run compliance check
|
|
491
|
+
node scripts/contract-automation/check-compliance.js
|
|
492
|
+
|
|
493
|
+
# Run in strict mode (exit with error if issues found)
|
|
494
|
+
node scripts/contract-automation/check-compliance.js --strict
|
|
495
|
+
|
|
496
|
+
# Generate JSON report
|
|
497
|
+
node scripts/contract-automation/check-compliance.js --report=json > compliance-report.json
|
|
498
|
+
\```
|
|
499
|
+
|
|
500
|
+
**Changelog:**
|
|
501
|
+
|
|
502
|
+
- **2024-12-16 v1.0.0:** Initial implementation with full scanning capabilities
|
|
503
|
+
```
|
|
504
|
+
|
|
505
|
+
---
|
|
506
|
+
|
|
507
|
+
### Example 6: Adding Environment Variables
|
|
508
|
+
|
|
509
|
+
**Scenario:** You need to add a Groq API key for LLM integration.
|
|
510
|
+
|
|
511
|
+
**Step 1: Check INFRA_CONTRACT.md**
|
|
512
|
+
|
|
513
|
+
```bash
|
|
514
|
+
# Search for existing API key variables
|
|
515
|
+
grep -i "api_key" House_Rules_Contracts/INFRA_CONTRACT.md
|
|
516
|
+
```
|
|
517
|
+
|
|
518
|
+
**Step 2: Analyze Results**
|
|
519
|
+
|
|
520
|
+
If you find similar variables like `OPENAI_API_KEY`, use the same naming pattern.
|
|
521
|
+
|
|
522
|
+
**Step 3: CREATE and DOCUMENT**
|
|
523
|
+
|
|
524
|
+
Add to `INFRA_CONTRACT.md`:
|
|
525
|
+
|
|
526
|
+
```markdown
|
|
527
|
+
### LLM Integration
|
|
528
|
+
|
|
529
|
+
| Variable | Type | Required | Default | Description | Example |
|
|
530
|
+
|----------|------|----------|---------|-------------|---------|
|
|
531
|
+
| `GROQ_API_KEY` | string | YES | - | Groq API key for LLM-powered contract analysis | `gsk_abc123...` |
|
|
532
|
+
| `GROQ_MODEL` | string | NO | `llama-3.1-70b-versatile` | Default Groq model to use | `llama-3.1-8b-instant` |
|
|
533
|
+
| `GROQ_TIMEOUT` | integer | NO | `30000` | Request timeout in milliseconds | `60000` |
|
|
534
|
+
|
|
535
|
+
**Used By:**
|
|
536
|
+
- `scripts/contract-automation/analyze-with-llm.js` - Contract analysis
|
|
537
|
+
- `src/services/ContractAnalyzer.js` - Code documentation
|
|
538
|
+
|
|
539
|
+
**Setup Instructions:**
|
|
540
|
+
|
|
541
|
+
1. Sign up at https://console.groq.com
|
|
542
|
+
2. Generate an API key
|
|
543
|
+
3. Add to `.env` file:
|
|
544
|
+
\```
|
|
545
|
+
GROQ_API_KEY=your_key_here
|
|
546
|
+
GROQ_MODEL=llama-3.1-70b-versatile
|
|
547
|
+
\```
|
|
548
|
+
4. Never commit `.env` to version control
|
|
549
|
+
```
|
|
550
|
+
|
|
551
|
+
---
|
|
552
|
+
|
|
553
|
+
## Workflow: Making a Change
|
|
554
|
+
|
|
555
|
+
### Step-by-Step Process
|
|
556
|
+
|
|
557
|
+
**1. Understand the Change Request**
|
|
558
|
+
|
|
559
|
+
- What is the goal?
|
|
560
|
+
- Which contracts are affected?
|
|
561
|
+
- What type of change is it? (Feature, API, Database, etc.)
|
|
562
|
+
|
|
563
|
+
**2. Consult the Contracts**
|
|
564
|
+
|
|
565
|
+
- Navigate to `House_Rules_Contracts/`
|
|
566
|
+
- Read the relevant contract files
|
|
567
|
+
- Search for existing implementations
|
|
568
|
+
|
|
569
|
+
**3. Analyze and Decide**
|
|
570
|
+
|
|
571
|
+
- **If component exists:** REUSE it, update "Used By" section
|
|
572
|
+
- **If component doesn't exist:** CREATE it, document immediately
|
|
573
|
+
|
|
574
|
+
**4. Implement the Change**
|
|
575
|
+
|
|
576
|
+
- Write the code following project standards
|
|
577
|
+
- Use components as defined in contracts
|
|
578
|
+
- Ensure proper error handling
|
|
579
|
+
|
|
580
|
+
**5. Update the Contracts**
|
|
581
|
+
|
|
582
|
+
- Add changelog entry with date
|
|
583
|
+
- Increment version number
|
|
584
|
+
- Document impact (breaking/non-breaking)
|
|
585
|
+
- Add cross-references
|
|
586
|
+
|
|
587
|
+
**6. Commit with Proper Format**
|
|
588
|
+
|
|
589
|
+
```
|
|
590
|
+
feat(scope): Brief description
|
|
591
|
+
|
|
592
|
+
Contracts: [SQL:T, API:T, DB:F, 3RD:F, FEAT:T, INFRA:F]
|
|
593
|
+
|
|
594
|
+
[WHY] Explanation of motivation
|
|
595
|
+
|
|
596
|
+
[WHAT]
|
|
597
|
+
- File(s): path/to/file.js - Description
|
|
598
|
+
- File(s): House_Rules_Contracts/API_CONTRACT.md - Updated
|
|
599
|
+
```
|
|
600
|
+
|
|
601
|
+
---
|
|
602
|
+
|
|
603
|
+
## Contract Validation
|
|
604
|
+
|
|
605
|
+
### Pre-Commit Validation
|
|
606
|
+
|
|
607
|
+
Before committing, run:
|
|
608
|
+
|
|
609
|
+
```bash
|
|
610
|
+
node scripts/contract-automation/validate-commit.js --check-staged --auto-fix
|
|
611
|
+
```
|
|
612
|
+
|
|
613
|
+
This validates that your contract flags match actual file changes.
|
|
614
|
+
|
|
615
|
+
### Periodic Compliance Check
|
|
616
|
+
|
|
617
|
+
Run weekly or after major changes:
|
|
618
|
+
|
|
619
|
+
```bash
|
|
620
|
+
node scripts/contract-automation/check-compliance.js --strict
|
|
621
|
+
```
|
|
622
|
+
|
|
623
|
+
This ensures contracts stay in sync with the codebase.
|
|
624
|
+
|
|
625
|
+
---
|
|
626
|
+
|
|
627
|
+
## Benefits
|
|
628
|
+
|
|
629
|
+
### For the Project
|
|
630
|
+
|
|
631
|
+
The contract system provides automated contract generation, commit validation that catches mistakes before they're pushed, compliance checking that prevents drift between code and contracts, LLM enhancement for rich documentation automatically generated, and CI/CD integration for automated validation on pull requests.
|
|
632
|
+
|
|
633
|
+
### For Agents
|
|
634
|
+
|
|
635
|
+
Agents receive clear guidance through scripts that tell them what to do, automated checks that eliminate manual validation, auto-fix capabilities that correct mistakes automatically, and fast feedback that immediately indicates when something is wrong.
|
|
636
|
+
|
|
637
|
+
### For Users
|
|
638
|
+
|
|
639
|
+
Users benefit from higher quality as contracts stay in sync with code, faster development through automation that saves time, better coordination as multiple agents work without conflicts, and visibility that ensures they always know what's in the codebase.
|
|
640
|
+
|
|
641
|
+
---
|
|
642
|
+
|
|
643
|
+
## Status
|
|
644
|
+
|
|
645
|
+
| Contract | Status | Completion | Last Updated |
|
|
646
|
+
|----------|--------|------------|--------------|
|
|
647
|
+
| DATABASE_SCHEMA_CONTRACT.md | Template | 0% | 2024-12-16 |
|
|
648
|
+
| SQL_CONTRACT.json | Template | 0% | 2024-12-16 |
|
|
649
|
+
| API_CONTRACT.md | Template | 0% | 2024-12-16 |
|
|
650
|
+
| THIRD_PARTY_INTEGRATIONS.md | Template | 0% | 2024-12-16 |
|
|
651
|
+
| FEATURES_CONTRACT.md | Template | 0% | 2024-12-16 |
|
|
652
|
+
| INFRA_CONTRACT.md | Template | 0% | 2024-12-16 |
|
|
653
|
+
|
|
654
|
+
**Next Steps:**
|
|
655
|
+
|
|
656
|
+
1. DevOps Agent executes contract generation (see `DEVOPS_AGENT_INSTRUCTIONS.md`)
|
|
657
|
+
2. Review and validate generated contracts
|
|
658
|
+
3. Fill in missing information
|
|
659
|
+
4. Begin using contracts for all development
|
|
660
|
+
|
|
661
|
+
---
|
|
662
|
+
|
|
663
|
+
## Version History
|
|
664
|
+
|
|
665
|
+
| Date | Version | Changes |
|
|
666
|
+
|------|---------|---------|
|
|
667
|
+
| 2024-12-16 | 1.0.0 | Initial contract system creation with comprehensive examples |
|
|
668
|
+
|
|
669
|
+
---
|
|
670
|
+
|
|
671
|
+
*These contracts are living documents. Update them with every change.*
|