theslopmachine 0.4.2 → 0.4.5

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.
@@ -1,59 +1,63 @@
1
- **Engineering Details and Professionalism \- Self-Test Results**
1
+ ## Engineering Details and Professionalism Template
2
2
 
3
- * **Coding Standards**
4
- * **Error Handling**
5
- * **Input Validation and Message Prompts**
6
- * **Error Handling**
7
- * **File Upload Security**
3
+ Use this file as the structure reference for the engineering-details-and-professionalism submission output.
8
4
 
9
- **Image Upload Configuration**
5
+ Do not copy stack-specific example code or project-specific security claims into the final document.
6
+ Replace every placeholder with current-project evidence.
10
7
 
11
- image \= models.ImageField(upload\_to='suggestions/', blank=True, null=True)
8
+ ## Core checklist
12
9
 
13
- **Security Features:**
10
+ Cover these areas explicitly using project-type equivalents when the exact surface changes:
14
11
 
15
- * **CSRF Protection**: All POST requests require a CSRF token
16
- * **XSS Protection**: Django templates automatically escape HTML
17
- * **SQL Injection Protection**: Uses Django ORM with parameterized queries
18
- * **Clickjacking Protection**: X-Frame-Options middleware
19
- * **File Uploads**: Uses ImageField to validate image formats
12
+ 1. coding standards and consistency
13
+ 2. error handling and user-safe failures
14
+ 3. input validation
15
+ 4. logging or diagnostics
16
+ 5. security-sensitive implementation details
17
+ 6. test integrity
18
+ 7. cleanup and professionalism
20
19
 
21
- **Test Integrity**
20
+ ## Engineering details review
22
21
 
23
- **4.4.1 Test Case Coverage**
22
+ ### Coding standards
23
+ - `<what standards/patterns are followed>`
24
24
 
25
- **Test Coverage:**
25
+ ### Error handling
26
+ - `<how errors are handled and surfaced safely>`
26
27
 
27
- * **Model Testing**: 19 test cases (FoodVote, Suggestion, User models)
28
- * **View Testing**: 14 test cases (Home page, voting, suggestion list, word cloud generation)
29
- * ✅ **Integration Testing**: 8 test cases (End-to-end process, Chinese language support)
30
- * ✅ **Total**: 41 test cases all passed
28
+ ### Input validation
29
+ - `<how important inputs are validated>`
31
30
 
32
- **Test Isolation Mechanism:**
31
+ ### Logging / diagnostics
32
+ - `<what logging or diagnostics exist>`
33
33
 
34
- * Uses in-memory database (:memory:), automatically cleared after testing
35
- * Automatic transaction rollback after each test function runs
36
- * ✅ Test data does not pollute the production database (db.sqlite3)
37
- * ✅ Automatic data initialization scripts in startup scripts are disabled
34
+ ### Security details
35
+ - `<security mechanisms actually present>`
38
36
 
39
- **Test Screenshots**
37
+ ### Test integrity
38
+ - `<test types present, isolation model, and major coverage notes>`
40
39
 
41
- **Test Success Screenshots**
40
+ ### Cleanup and professionalism
41
+ - `<absence of secrets, debug leftovers, committed dependency trees, etc.>`
42
42
 
43
- **Engineering Details Rating**
43
+ ## Checklist table
44
44
 
45
- **Strengths:**
45
+ | Check | Status | Evidence |
46
+ | :---- | :---- | :---- |
47
+ | Error handling is credible | `<Pass/Partial/Fail>` | `<evidence>` |
48
+ | Important inputs are validated | `<Pass/Partial/Fail>` | `<evidence>` |
49
+ | Logging/diagnostics are useful | `<Pass/Partial/Fail>` | `<evidence>` |
50
+ | No secrets/keys are committed | `<Pass/Partial/Fail>` | `<evidence>` |
51
+ | No committed dependency directories | `<Pass/Partial/Fail>` | `<evidence>` |
52
+ | No obvious leftover debug statements | `<Pass/Partial/Fail>` | `<evidence>` |
46
53
 
47
- * **Coding Standards**: Follows PEP 8, clear naming, complete Chinese comments
48
- * **Error Handling**: Layered processing, user-friendly prompts, comprehensive exception capturing
49
- * **Security**: Django built-in security features, CSRF/XSS/SQL injection protection
50
- * **Test Integrity**: 41 test cases, completely isolated test environment
51
- * **Maintainability**: Modular design, clear responsibilities, easy to extend
54
+ ## Professionalism summary
52
55
 
53
- **Room for Improvement:**
56
+ **Strengths:**
54
57
 
55
- * Consider adding logging functionality
56
- * Consider adding API documentation (e.g., using Swagger)
58
+ - `<strength 1>`
59
+ - `<strength 2>`
57
60
 
58
- Would you like me to help you draft the logging configuration or the Swagger integration mentioned in the improvement section?
61
+ **Remaining concerns:**
59
62
 
63
+ - `<concern 1 or 'None material'>`
@@ -1,36 +1,43 @@
1
- **8.2 Actual Implementation vs. Requirements Comparison**
1
+ ## Prompt Understanding and Adaptability Template
2
2
 
3
- | Requirement Item | Original Requirement | Actual Implementation | Exceeding Portion |
3
+ Use this file as the structure reference for the prompt-understanding-and-adaptability submission output.
4
+
5
+ Do not copy example requirements or project-specific features into the final document.
6
+ Replace every placeholder with current-project evidence.
7
+
8
+ ## Actual implementation vs requirements comparison
9
+
10
+ | Requirement Item | Original Requirement | Actual Implementation | Exceeding Portion / Notes |
4
11
  | :---- | :---- | :---- | :---- |
5
- | **Complaint & Suggestion Function** | Basic requirement | Fully implemented | Added categories, status tracking, and administrator replies |
6
- | **Data Management** | Basic requirement | Fully implemented | Added Django Admin backend management |
7
- | **User Interaction** | Not specified | ✅ Fully implemented | Added responsive design and aesthetic interface |
8
- | **Innovative Features** | Not required | ✅ Exceeded implementation | "What I Want to Eat Most Tomorrow" leaderboard, voting function, and word cloud display |
9
- | **Image Upload** | Not required | ✅ Exceeded implementation | Supports uploading images as evidence |
10
-
11
- **8.3 Depth of Requirement Understanding**
12
- The project not only met the original requirements but also deeply understood the underlying business scenarios:
13
-
14
- * **Understood the "Canteen" scenario**: Beyond just complaints and suggestions, a "What I Want to Eat Most Tomorrow" voting function was added to increase user engagement.
15
- * **Understood "Management" needs**: Provided a complete backend management system supporting categorization, status tracking, and administrator replies.
16
- * **Understood the value of "Visualization"**: Used word clouds to display trending issues, intuitively showing user points of concern.
17
- * **Understood the importance of "User Experience"**: Responsive design, aesthetic interface, and smooth animations.
18
- * **Understood the key to "Runnability"**: Docker one-click deployment, data persistence, and comprehensive testing.
19
- * **Homepage Display**
20
- * **Suggestion Word Cloud**
21
- * **Submit Suggestion**
22
- * **View Suggestions**
23
- * **Status Filtering**
24
-
25
- **Admin Management Default Password**: admin / admin123
26
-
27
- * **Admin Management**
28
- * **Background Color Toggle**
29
- * **Add User**
30
- * **Modify User Information**
31
- * **User Permission Control**
32
- * **Modify Suggestion**
33
- * **Batch Execution**
34
- * **Search**
35
- * **Add Suggestion**
12
+ | `<requirement>` | `<what the prompt asked for>` | `<what was delivered>` | `<extra or note>` |
13
+ | `<requirement>` | `<what the prompt asked for>` | `<what was delivered>` | `<extra or note>` |
14
+
15
+ ## Depth of requirement understanding
16
+
17
+ Explain whether the delivered project shows real understanding of:
18
+
19
+ - business objectives
20
+ - user and operator flows
21
+ - implicit constraints
22
+ - runnability and maintainability expectations
23
+ - why the chosen implementation fits the actual problem
24
+
25
+ Use project-specific evidence only.
26
+
27
+ ## Prompt-fit summary
28
+
29
+ Answer explicitly:
30
+
31
+ 1. Did the implementation stay aligned with the actual prompt?
32
+ 2. Did it cover the core required flows completely?
33
+ 3. Did it understand the business goal rather than only surface technical tasks?
34
+ 4. Where did it exceed, refine, or interpret the prompt, and was that prompt-faithful?
35
+
36
+ ## Over-delivery / adaptability notes
37
+
38
+ - `<meaningful improvement or adaptation>`
39
+ - `<meaningful improvement or adaptation>`
40
+
41
+ ## Risks or caveats
36
42
 
43
+ - `<any remaining prompt-fit caveat or 'None material'>`
@@ -1,108 +1,67 @@
1
- **Self-Test Results \- Engineering and Architecture Quality**
2
- **Project Positioning**
1
+ ## Engineering and Architecture Quality Template
3
2
 
4
- This is a full-stack canteen management system, including:
3
+ Use this file as the structure reference for the engineering-and-architecture self-assessment output.
5
4
 
6
- * **Frontend Display Page**: User-facing; displays "Tomorrow's Most Wanted Food List," allows submission of opinions and suggestions, and displays word clouds.
7
- * **Administrator Backend**: Admin-facing; manages food voting and opinions/suggestions.
5
+ Do not copy stack-specific or project-specific example content into the final document.
6
+ Replace every placeholder with current-project evidence.
8
7
 
9
- **Technology Stack Selection**
8
+ ## Project positioning
10
9
 
11
- * **Backend**: Django 6.0.2 \+ Python 3.8+
12
- * **Database**: SQLite3
13
- * **Image Processing**: Pillow 12.1.0
14
- * **Chinese Segmentation**: jieba 0.42.1
15
- * **Word Cloud Generation**: wordcloud 1.9.6 \+ matplotlib 3.10.8
16
- * **Testing Framework**: pytest 8.3.4 \+ pytest-django 4.9.0
17
- * **Deployment**: Docker Compose one-click startup
10
+ - **Project Type:** `<web/mobile/desktop/cli/library/etc.>`
11
+ - **Primary problem solved:** `<short summary>`
12
+ - **Major user or operator surfaces:**
13
+ - `<surface 1>`
14
+ - `<surface 2>`
18
15
 
19
- **Overall Architecture Diagram**
16
+ ## Technology stack selection
20
17
 
21
- *(Architecture diagram placeholder)*
18
+ - **Primary runtime stack:** `<actual stack>`
19
+ - **Primary language(s):** `<actual language(s)>`
20
+ - **Persistence / data layer:** `<actual persistence>`
21
+ - **Testing stack:** `<actual test stack>`
22
+ - **Deployment / runtime model:** `<actual runtime model>`
22
23
 
23
- **Architecture Description:**
24
+ ## Architecture description
24
25
 
25
- * **Client Layer**: Browser access to frontend pages and backend management.
26
- * **URL Routing Layer**: Receives HTTP requests and routes them to corresponding view functions.
27
- * **View Layer**: Processes business logic and calls the model layer for data operations.
28
- * **Model Layer**: Defines data models and interacts with the database via Django ORM.
29
- * **Template Layer**: Renders HTML pages to return to the client.
30
- * **Backend Management**: Management interface provided by Django Admin.
31
- * **Data Layer**: SQLite3 database for data storage.
26
+ - **High-level structure:** `<major layers/modules>`
27
+ - **Runtime boundaries:** `<how runtime pieces fit together>`
28
+ - **Data or state boundaries:** `<where state lives and how it flows>`
29
+ - **Key contracts:** `<critical interfaces or shared contracts>`
32
30
 
33
- **Module Division (Clear Responsibilities)**
31
+ ## Module division
34
32
 
35
- | Module | Responsibility | File |
33
+ | Module | Responsibility | File / Area |
36
34
  | :---- | :---- | :---- |
37
- | **Configuration Management** | Django settings, middleware, database configuration | complaint\_system/settings.py |
38
- | **URL Routing** | Request routing and dispatch | complaint\_system/urls.py, main/urls.py |
39
- | **Data Models** | ORM model definitions, database table structures | main/models.py |
40
- | **View Functions** | Business logic processing, request/response handling | main/views.py |
41
- | **Backend Management** | Django Admin configuration | main/admin.py |
42
- | **Templates** | HTML page rendering | main/templates/ |
43
- | **Testing** | Unit testing, integration testing | tests/ |
35
+ | `<module>` | `<responsibility>` | `<path>` |
36
+ | `<module>` | `<responsibility>` | `<path>` |
44
37
 
45
- **Request Processing Flow**
38
+ ## Architecture quality assessment
46
39
 
47
- *(Data flow diagram placeholder)*
40
+ **Score / Rating:** `<score or qualitative result>`
48
41
 
49
- **3.2 Architecture Quality Rating**
42
+ **Strengths:**
50
43
 
51
- **Score: 9.0/10**
44
+ - `<strength 1>`
45
+ - `<strength 2>`
46
+ - `<strength 3>`
52
47
 
53
- **Pros:**
48
+ **Areas for improvement:**
54
49
 
55
- * **Modular Design**: Clear responsibilities, low coupling, and easy to maintain.
56
- * **Layered Architecture**: Clear levels from View Layer → Model Layer → Data Layer.
57
- * **Django Best Practices**: Utilizes built-in functions such as Django ORM, Admin, and Messages.
58
- * **Centralized Configuration**: All configurations are managed centrally in settings.py.
59
- * **Scalability**: The database can be easily replaced with PostgreSQL or MySQL.
50
+ - `<improvement 1 or 'None material'>`
51
+ - `<improvement 2 if needed>`
60
52
 
61
- **Areas for Improvement:**
53
+ ## Maintainability review
62
54
 
63
- * Consider introducing a Service layer to decouple complex business logic from views.
64
- * Consider using the Django REST Framework to provide API interfaces.
55
+ Address explicitly:
65
56
 
66
- **3.3 Database Design**
57
+ 1. Is the structure modular and reviewable?
58
+ 2. Are cross-cutting concerns handled consistently?
59
+ 3. Are there major coupling or extension risks?
60
+ 4. Does the project look like a credible maintained system rather than a stacked prototype?
67
61
 
68
- **Table Structure: FoodVote (Food Voting)**
69
-
70
- | Field | Type | Description |
71
- | :---- | :---- | :---- |
72
- | id | INTEGER PK | Primary Key |
73
- | name | VARCHAR(100) | Food Name |
74
- | meal\_type | VARCHAR(20) | Meal Type (breakfast/lunch/dinner) |
75
- | vote\_count | INTEGER | Vote Count |
76
- | created\_at | DATETIME | Creation Time |
77
- | updated\_at | DATETIME | Update Time |
78
-
79
- **Table Structure: Suggestion (Opinions and Suggestions)**
80
-
81
- | Field | Type | Description |
82
- | :---- | :---- | :---- |
83
- | id | INTEGER PK | Primary Key |
84
- | title | VARCHAR(200) | Title |
85
- | content | TEXT | Content |
86
- | category | VARCHAR(20) | Category (food/service/environment/price/other) |
87
- | status | VARCHAR(20) | Status (pending/processing/resolved/closed) |
88
- | submitter\_name | VARCHAR(50) | Submitter Name (Optional) |
89
- | submitter\_contact | VARCHAR(100) | Contact Info (Optional) |
90
- | image | VARCHAR(100) | Image Path (Optional) |
91
- | admin\_reply | TEXT | Admin Reply (Optional) |
92
- | created\_at | DATETIME | Creation Time |
93
- | updated\_at | DATETIME | Update Time |
94
-
95
- **Index Design**
96
-
97
- * **FoodVote Table Index**: Composite index to support queries by meal type and vote count: models.Index(fields=\['meal\_type', '-vote\_count'\]).
98
- * **Suggestion Table Index**:
99
- * Composite index for status and creation time: models.Index(fields=\['status', '-created\_at'\]).
100
- * Composite index for category and creation time: models.Index(fields=\['category', '-created\_at'\]).
101
-
102
- **Design Evaluation:**
103
-
104
- * ✅ Index design is reasonable and covers main query scenarios.
105
- * ✅ Field types are chosen appropriately, using TextChoices enumeration types.
106
- * ✅ Uses Django ORM for easy migration to other databases.
107
- * ✅ Timestamp fields are automatically managed using auto\_now\_add and auto\_now.
62
+ ## Evidence to include
108
63
 
64
+ - brief architecture explanation
65
+ - major module map
66
+ - any key diagrams or screenshots when useful
67
+ - repo structure screenshot reference when used in the final generated file
@@ -1,4 +1,4 @@
1
- # Developer Rulebook v2
1
+ # Developer Rulebook
2
2
 
3
3
  This file is the repo-local engineering rulebook for `slopmachine` projects.
4
4
 
@@ -41,6 +41,10 @@ For Dockerized web backend/fullstack projects:
41
41
  - `./run_tests.sh` must run the broad full-test path through Docker
42
42
  - local non-Docker tests should still exist for normal development work
43
43
  - final broad verification should use the Dockerized `./run_tests.sh` path, not only local test commands
44
+ - keep Compose isolation safe for shared machines: no unnecessary `container_name`, unique `COMPOSE_PROJECT_NAME`, and Compose-scoped image/network/volume naming
45
+ - expose only the primary app-facing port to host by default, bind it to `127.0.0.1`, and keep databases/cache/internal services off host ports unless truly required
46
+ - prefer random host-port assignment by default so parallel local projects do not collide; if a fixed host port is truly required, support override plus free-port fallback in the runtime or test wrapper
47
+ - add healthchecks and wait for service readiness before tests or dependent startup steps proceed
44
48
 
45
49
  When `docker compose up --build` is not the runtime contract, provide `./run_app.sh` as the single primary runtime wrapper.
46
50
 
@@ -74,6 +78,8 @@ Selected-stack defaults:
74
78
  - Do not rely on `.env`, `.env.local`, `.env.example`, or similar files for project startup.
75
79
  - Do not hardcode secrets.
76
80
  - If runtime env-file format is required, generate it ephemerally and do not commit or package it.
81
+ - If Dockerized dev/test startup or tests require credentials, provide deterministic non-secret local-only default values through Docker runtime configuration so `docker compose up --build` and `./run_tests.sh` do not fail on missing credentials.
82
+ - Keep those Dockerized dev/test default credentials out of Dockerfile image layers.
77
83
 
78
84
  Selected-stack secret/config defaults:
79
85
 
@@ -2,10 +2,32 @@
2
2
 
3
3
  import argparse
4
4
  import json
5
+ import re
5
6
  from pathlib import Path
6
7
  from typing import Any
7
8
 
8
9
 
10
+ SUBAGENT_TITLE_SUFFIX = re.compile(r"\s+\(@[^)]*subagent\)\s*$")
11
+
12
+
13
+ def clean_title(title: Any) -> Any:
14
+ if not isinstance(title, str):
15
+ return title
16
+ return SUBAGENT_TITLE_SUFFIX.sub("", title)
17
+
18
+
19
+ def clean_message_info(info: Any) -> Any:
20
+ if not isinstance(info, dict):
21
+ return info
22
+
23
+ cleaned = dict(info)
24
+ tools = cleaned.get("tools")
25
+ if isinstance(tools, dict) and tools and all(value is False for value in tools.values()):
26
+ cleaned.pop("tools", None)
27
+
28
+ return cleaned
29
+
30
+
9
31
  def strip_parent_id(data: Any) -> Any:
10
32
  if not isinstance(data, dict):
11
33
  raise ValueError("Expected top-level JSON object")
@@ -20,13 +42,30 @@ def strip_parent_id(data: Any) -> Any:
20
42
  # Remove only the session-level parent marker. Message-level parentIDs
21
43
  # are preserved so the conversation structure remains intact.
22
44
  cleaned_info.pop("parentID", None)
45
+ cleaned_info.pop("permission", None)
46
+ cleaned_info["title"] = clean_title(cleaned_info.get("title"))
23
47
  cleaned["info"] = cleaned_info
48
+
49
+ messages = cleaned.get("messages")
50
+ if isinstance(messages, list):
51
+ cleaned_messages = []
52
+ for message in messages:
53
+ if not isinstance(message, dict):
54
+ cleaned_messages.append(message)
55
+ continue
56
+
57
+ cleaned_message = dict(message)
58
+ cleaned_message["info"] = clean_message_info(message.get("info"))
59
+ cleaned_messages.append(cleaned_message)
60
+
61
+ cleaned["messages"] = cleaned_messages
62
+
24
63
  return cleaned
25
64
 
26
65
 
27
66
  def parse_args() -> argparse.Namespace:
28
67
  parser = argparse.ArgumentParser(
29
- description="Remove the top-level parentID from an OpenCode session export."
68
+ description="Remove subagent-only top-level metadata from an OpenCode session export."
30
69
  )
31
70
  parser.add_argument("input", type=Path, help="Path to the source session JSON file")
32
71
  parser.add_argument(
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "theslopmachine",
3
- "version": "0.4.2",
3
+ "version": "0.4.5",
4
4
  "description": "SlopMachine installer and project bootstrap CLI",
5
5
  "license": "MIT",
6
6
  "type": "module",
package/src/constants.js CHANGED
@@ -1,87 +1,90 @@
1
- import os from 'node:os'
2
- import path from 'node:path'
3
- import { fileURLToPath } from 'node:url'
1
+ import os from "node:os";
2
+ import path from "node:path";
3
+ import { fileURLToPath } from "node:url";
4
4
 
5
- export const PACKAGE_VERSION = '0.4.0'
6
- export const OPCODE_VERSION = '1.3.5'
7
- export const BR_VERSION = '0.1.34'
8
- export const PACKAGE_ROOT = path.resolve(path.dirname(fileURLToPath(import.meta.url)), '..')
5
+ export const PACKAGE_VERSION = "0.4.5";
6
+ export const OPCODE_VERSION = "1.3.5";
7
+ export const BR_VERSION = "0.1.34";
8
+ export const PACKAGE_ROOT = path.resolve(
9
+ path.dirname(fileURLToPath(import.meta.url)),
10
+ "..",
11
+ );
9
12
 
10
13
  export function resolveHomeDir() {
11
- return process.env.SLOPMACHINE_HOME || os.homedir()
14
+ return process.env.SLOPMACHINE_HOME || os.homedir();
12
15
  }
13
16
 
14
17
  export function buildPaths() {
15
- const home = resolveHomeDir()
18
+ const home = resolveHomeDir();
16
19
  return {
17
20
  home,
18
- slopmachineDir: path.join(home, 'slopmachine'),
19
- opencodeDir: path.join(home, '.config', 'opencode'),
20
- opencodeAgentsDir: path.join(home, '.config', 'opencode', 'agents'),
21
- opencodeConfigPath: path.join(home, '.config', 'opencode', 'opencode.json'),
22
- globalSkillsDir: path.join(home, '.agents', 'skills'),
23
- }
21
+ slopmachineDir: path.join(home, "slopmachine"),
22
+ opencodeDir: path.join(home, ".config", "opencode"),
23
+ opencodeAgentsDir: path.join(home, ".config", "opencode", "agents"),
24
+ opencodeConfigPath: path.join(home, ".config", "opencode", "opencode.json"),
25
+ globalSkillsDir: path.join(home, ".agents", "skills"),
26
+ };
24
27
  }
25
28
 
26
29
  export const REQUIRED_SKILL_DIRS = [
27
- 'clarification-gate',
28
- 'developer-session-lifecycle',
29
- 'session-rollover',
30
- 'final-evaluation-orchestration',
31
- 'beads-operations',
32
- 'planning-guidance',
33
- 'planning-gate',
34
- 'scaffold-guidance',
35
- 'development-guidance',
36
- 'verification-gates',
37
- 'integrated-verification',
38
- 'hardening-gate',
39
- 'evaluation-triage',
40
- 'remediation-guidance',
41
- 'submission-packaging',
42
- 'retrospective-analysis',
43
- 'owner-evidence-discipline',
44
- 'report-output-discipline',
45
- 'frontend-design',
46
- ]
30
+ "clarification-gate",
31
+ "developer-session-lifecycle",
32
+ "session-rollover",
33
+ "final-evaluation-orchestration",
34
+ "beads-operations",
35
+ "planning-guidance",
36
+ "planning-gate",
37
+ "scaffold-guidance",
38
+ "development-guidance",
39
+ "verification-gates",
40
+ "integrated-verification",
41
+ "hardening-gate",
42
+ "evaluation-triage",
43
+ "remediation-guidance",
44
+ "submission-packaging",
45
+ "retrospective-analysis",
46
+ "owner-evidence-discipline",
47
+ "report-output-discipline",
48
+ "frontend-design",
49
+ ];
47
50
 
48
51
  export const REQUIRED_SLOPMACHINE_FILES = [
49
- 'backend-evaluation-prompt.md',
50
- 'frontend-evaluation-prompt.md',
51
- 'document-completeness.md',
52
- 'quality-document.md',
53
- 'engineering-results.md',
54
- 'implementation-comparison.md',
55
- 'workflow-init.js',
56
- 'templates/AGENTS.md',
57
- 'utils/strip_session_parent.py',
58
- 'utils/convert_ai_session.py',
59
- ]
52
+ "backend-evaluation-prompt.md",
53
+ "frontend-evaluation-prompt.md",
54
+ "document-completeness.md",
55
+ "quality-document.md",
56
+ "engineering-results.md",
57
+ "implementation-comparison.md",
58
+ "workflow-init.js",
59
+ "templates/AGENTS.md",
60
+ "utils/strip_session_parent.py",
61
+ "utils/convert_ai_session.py",
62
+ ];
60
63
 
61
64
  export const MCP_ENTRIES = {
62
- 'chrome-devtools': {
63
- type: 'local',
64
- command: ['npx', '-y', 'chrome-devtools-mcp@latest'],
65
+ "chrome-devtools": {
66
+ type: "local",
67
+ command: ["npx", "-y", "chrome-devtools-mcp@latest"],
65
68
  },
66
69
  context7: {
67
70
  enabled: true,
68
- type: 'remote',
69
- url: 'https://mcp.context7.com/mcp',
71
+ type: "remote",
72
+ url: "https://mcp.context7.com/mcp",
70
73
  headers: {
71
- CONTEXT7_API_KEY: '',
74
+ CONTEXT7_API_KEY: "",
72
75
  },
73
76
  },
74
77
  exa: {
75
78
  enabled: true,
76
- type: 'remote',
77
- url: 'https://mcp.exa.ai/mcp',
79
+ type: "remote",
80
+ url: "https://mcp.exa.ai/mcp",
78
81
  headers: {
79
- EXA_API_KEY: '',
82
+ EXA_API_KEY: "",
80
83
  },
81
84
  },
82
85
  shadcn: {
83
- command: ['npx', 'shadcn@latest', 'mcp'],
86
+ command: ["npx", "shadcn@latest", "mcp"],
84
87
  enabled: false,
85
- type: 'local',
88
+ type: "local",
86
89
  },
87
- }
90
+ };