AI Project Manifest (JSON Knowledge Base)

The AI Project Manifest is a powerful feature that generates a project_knowledge.json file containing structured information about your project’s APIs, DTOs, configuration, and service relationships. This enables AI agents to work with your project using significantly fewer tokens.

Overview

What is the Project Manifest?

The Project Manifest is a JSON-based knowledge base that stores:

  • Endpoints: All HTTP endpoints with methods, paths, and parameters

  • DTO Schemas: Data transfer objects with field types and validation rules

  • Configuration: Port configurations and environment variables

  • Service Relationships: Dependencies between microservices

Why Use It?

  1. Token Optimization: AI agents can query the JSON manifest instead of parsing raw source code

  2. Fast Analysis: Pre-computed project structure enables instant insights

  3. Smart Sync: Only changed files are re-scanned, saving time

  4. Multi-Language Support: Works with Python, Java, JavaScript/TypeScript, and more

Installation

The project manifest is included in socialseed-e2e by default. No additional installation required.

Quick Start

1. Generate the Manifest

The manifest is generated for a microservice and stored in a centralized folder within the framework (NOT in the microservice directory).

# Generate manifest for a microservice
# The manifest is saved at: <framework_root>/manifests/<service_name>/project_knowledge.json
e2e manifest ../services/auth-service

# Force full re-scan (instead of smart sync)
e2e manifest ../services/auth-service --force

2. Query the Manifest

Use the service name to query the manifest:

# Display project summary as JSON
e2e manifest-query auth-service

# Display as Markdown
e2e manifest-query auth-service -f markdown

3. Watch Files for Changes

# Start file watcher with auto-update for a specific service
e2e watch auth-service

Project Structure

After running e2e manifest, the manifest is stored in the framework’s manifests folder:

socialseed-e2e/                          # Framework root
├── manifests/                            # Centralized manifests folder
│   ├── auth-service/                   # Manifest for auth service
│   │   └── project_knowledge.json
│   ├── user-service/                    # Manifest for user service
│   │   └── project_knowledge.json
│   └── payment-service/                 # Manifest for payment service
│       └── project_knowledge.json
└── src/
    └── socialseed_e2e/                  # Framework source code

This approach keeps the microservice code clean while providing a centralized location for AI agents to query project knowledge.

Manifest Schema

ProjectKnowledge

Root object containing all project information:

{
  "version": "1.0.0",
  "project_name": "my-api",
  "project_root": "/path/to/project",
  "generated_at": "2024-01-15T10:30:00Z",
  "last_updated": "2024-01-15T10:30:00Z",
  "services": [...],
  "file_metadata": {...},
  "global_env_vars": [...]
}

ServiceInfo

Each detected service:

{
  "name": "users-api",
  "language": "python",
  "framework": "fastapi",
  "root_path": "/services/users",
  "endpoints": [...],
  "dto_schemas": [...],
  "ports": [...],
  "environment_vars": [...],
  "dependencies": [...]
}

EndpointInfo

REST endpoint details:

{
  "name": "create_user",
  "method": "POST",
  "path": "/users",
  "full_path": "/api/v1/users",
  "parameters": [...],
  "request_dto": "UserRequest",
  "response_dto": "UserResponse",
  "requires_auth": true,
  "file_path": "/routes.py",
  "line_number": 25
}

DtoSchema

DTO definition:

{
  "name": "UserRequest",
  "fields": [
    {
      "name": "username",
      "type": "str",
      "required": true,
      "validations": [
        {"rule_type": "min_length", "value": 3},
        {"rule_type": "max_length", "value": 50}
      ]
    }
  ],
  "file_path": "/dtos.py",
  "line_number": 10
}

Supported Languages and Frameworks

Python

  • FastAPI: Detects @app.get(), @app.post(), etc.

  • Flask: Detects @app.route() decorators

  • Django: Basic detection (limited)

  • Pydantic: Extracts models with validation rules

Java

  • Spring Boot: Detects @RestController, @GetMapping, etc.

  • Records: Extracts Java record definitions

  • Validation annotations: @NotNull, @Size, @Email, etc.

JavaScript/TypeScript

  • Express.js: Detects app.get(), app.post(), etc.

  • TypeScript: Extracts interfaces and types

  • NestJS: Basic detection

Smart Sync

The smart sync feature detects file changes and only re-scans modified files:

from socialseed_e2e.project_manifest import ManifestGenerator

generator = ManifestGenerator("/path/to/project")
manifest = generator.generate()  # Automatically uses smart sync

How It Works

  1. First Run: Performs full project scan

  2. Subsequent Runs: Compares file checksums

  3. Incremental Update: Only scans changed/new files

  4. Deleted Files: Removes entries for deleted files

Internal API

Query the manifest programmatically:

from socialseed_e2e.project_manifest import ManifestAPI, HttpMethod

# Initialize API
api = ManifestAPI("/path/to/project")

# Get all services
services = api.get_services()

# Get specific endpoint
endpoint = api.get_endpoint("/api/users", HttpMethod.POST)

# Search endpoints
results = api.search_endpoints(tags=["auth"])

# Get DTO fields
fields = api.get_dto_fields("UserRequest")

# Get project summary
summary = api.get_summary()

Token-Optimized Queries

For minimal token usage:

from socialseed_e2e.project_manifest import ManifestAPI, TokenOptimizedQuery

api = ManifestAPI("/path/to/project")
query = TokenOptimizedQuery(api)

# Compact signatures
endpoint_sig = query.get_endpoint_signature("/api/users", HttpMethod.POST)
dto_sig = query.get_dto_signature("UserRequest")

# Compact lists
all_endpoints = query.list_all_endpoints_compact()
all_dtos = query.list_all_dtos_compact()

File Watcher

Monitor files for changes:

from socialseed_e2e.project_manifest import ManifestGenerator, SmartSyncManager

generator = ManifestGenerator("/path/to/project")
manager = SmartSyncManager(generator)

# Start watching
manager.start_watching(blocking=True)  # Blocks until interrupted

With Debouncing

# Wait 5 seconds after last change before updating
manager = SmartSyncManager(generator, debounce_seconds=5.0)

Configuration

Exclude Patterns

Exclude files from scanning:

generator = ManifestGenerator(
    project_root="/path/to/project",
    exclude_patterns=[
        "**/node_modules/**",
        "**/__pycache__/**",
        "**/tests/**",
        "**/*.test.py",
    ]
)

Custom Manifest Path

generator = ManifestGenerator(
    project_root="/path/to/project",
    manifest_path=Path("/custom/path/manifest.json")
)

CLI Commands

e2e manifest

Generate the project manifest for a microservice. The manifest is stored in the framework’s manifests folder.

Arguments:

  • directory: Path to the microservice directory (e.g., ../services/auth-service)

Options:

  • --force: Force full scan instead of smart sync

Examples:

e2e manifest ../services/auth-service   # Generate for auth service
e2e manifest ../services/user-service    # Generate for user service
e2e manifest ../services/auth-service --force  # Force full re-scan

e2e manifest-query

Query the generated manifest using the service name.

Arguments:

  • directory: Service name (e.g., auth-service)

Options:

  • --format, -f: Output format (json or markdown)

Examples:

e2e manifest-query auth-service           # JSON output
e2e manifest-query auth-service -f markdown  # Markdown output

e2e manifest-check

Validate manifest freshness using source code hashes.

Arguments:

  • directory: Service name (e.g., auth-service)

Examples:

e2e manifest-check auth-service

e2e build-index

Build vector index for semantic search.

Arguments:

  • directory: Service name (e.g., auth-service)

Examples:

e2e build-index auth-service

e2e retrieve

Retrieve context for a specific task.

Arguments:

  • task: Task description

Options:

  • --service, -s: Service name (required)

  • --max-chunks, -c: Maximum chunks (default: 5)

Examples:

e2e retrieve "create auth tests" -s auth-service
e2e retrieve "test payment flow" -s payment-service --max-chunks 3

e2e watch

Watch files and auto-update manifest for a specific service.

Arguments:

  • directory: Service name (e.g., auth-service)

Examples:

e2e watch auth-service

Best Practices

  1. Centralized Manifest Location: The manifest is stored in <framework_root>/manifests/<service_name>/ - this keeps microservices clean

  2. AI Agent Usage: Point AI agents to the manifest location for context instead of parsing source code

  3. CI/CD Integration: Generate manifest in CI to validate project structure

  4. Use Smart Sync: Let the system detect changes automatically instead of full rescans

Workflow for AI Agents

# 1. Generate manifest for the microservice
e2e manifest ../services/auth-service

# 2. Query to understand the service
e2e manifest-query auth-service

# 3. Build index for semantic search (requires rag extras)
e2e build-index auth-service

# 4. Use search/retrieve for context
e2e search "login endpoint" -s auth-service
e2e retrieve "write tests" -s auth-service

Pre-commit Hook Example

#!/bin/sh
# .git/hooks/pre-commit

# Update manifest for known services
for service in auth-service user-service payment-service; do
    e2e manifest ../services/$service
    if [ $? -ne 0 ]; then
        echo "Failed to update manifest for $service"
        exit 1
    fi
done

Troubleshooting

Manifest Not Found

# Check if manifest exists in the framework
ls -la src/manifests/<service_name>/

# Generate manifest
e2e manifest ../services/<service_name>

Services Not Detected

  • Verify source files are in recognized languages

  • Check exclude patterns aren’t too broad

  • Ensure files have proper framework imports

Outdated Manifest

# Check freshness
e2e manifest-check auth-service

# Regenerate with force
e2e manifest ../services/auth-service --force

# Or use watch mode for automatic updates
e2e watch auth-service

API Reference

See the API Reference for detailed documentation of all classes and methods.

Contributing

Contributions are welcome! See Contributing Guide for details.

License

MIT License - see LICENSE for details.