-
Notifications
You must be signed in to change notification settings - Fork 0
Open
Labels
module:qstudioAI planning moduleAI planning modulestoryFeature story linked to epicFeature story linked to epic
Milestone
Description
User Story
As a developer, I want qstudio to index my local codebase so that AI planning has context about my project structure, dependencies, and existing patterns.
Design
Command Interface
# Index current project
qstudio index
# Index specific directory
qstudio index --path /path/to/project
# Force re-index (ignore cache)
qstudio index --force
# Show index status
qstudio index --status
# Clear index
qstudio index --clearOutput Format
Indexing project: /Users/james/projects/orders-service
Scanning files...
Found 234 source files
Found 45 test files
Found 12 config files
Analyzing structure...
Language: Java (Maven)
Framework: QQQ 0.27.0
Modules: 3 (core, api, web)
Building index...
Parsing AST... done
Extracting symbols... done
Mapping dependencies... done
Index complete. 291 files indexed in 4.2s
Index location: ~/.qctl/index/orders-service/
Index Storage
~/.qctl/index/
└── orders-service/
├── manifest.json # Project metadata
├── files.json # File list with hashes
├── symbols.json # Classes, methods, fields
├── dependencies.json # Import graph
└── chunks/ # Embeddings (optional)
├── chunk-001.bin
└── ...
Manifest Format
{
"project": "orders-service",
"path": "/Users/james/projects/orders-service",
"indexed_at": "2024-01-15T10:30:00Z",
"language": "java",
"build_tool": "maven",
"framework": "qqq",
"framework_version": "0.27.0",
"stats": {
"files": 291,
"classes": 156,
"methods": 1234,
"lines": 45000
}
}Files to Create/Modify
| File | Action | Purpose |
|---|---|---|
qctl-qstudio/src/main/java/io/qrun/qctl/qstudio/IndexCommand.java |
Create | Main index command |
qctl-qstudio/src/main/java/io/qrun/qctl/qstudio/index/CodeIndexer.java |
Create | Core indexing logic |
qctl-qstudio/src/main/java/io/qrun/qctl/qstudio/index/FileScanner.java |
Create | File discovery |
qctl-qstudio/src/main/java/io/qrun/qctl/qstudio/index/JavaParser.java |
Create | Java AST parsing |
qctl-qstudio/src/main/java/io/qrun/qctl/qstudio/index/SymbolExtractor.java |
Create | Symbol extraction |
qctl-qstudio/src/main/java/io/qrun/qctl/qstudio/index/IndexStore.java |
Create | Index persistence |
qctl-qstudio/src/main/java/io/qrun/qctl/qstudio/model/ProjectIndex.java |
Create | Index model |
qctl-qstudio/src/main/java/io/qrun/qctl/qstudio/model/SourceFile.java |
Create | File model |
qctl-qstudio/src/main/java/io/qrun/qctl/qstudio/model/Symbol.java |
Create | Symbol model |
Implementation Tasks
- Create IndexCommand with Picocli annotations
- Add --path, --force, --status, --clear options
- Implement FileScanner with gitignore support
- Implement JavaParser using Eclipse JDT or similar
- Implement SymbolExtractor for classes/methods/fields
- Create IndexStore for JSON persistence
- Detect project type (Maven/Gradle, framework)
- Support incremental indexing (hash-based change detection)
- Add progress indicators for large projects
- Implement index cache with TTL
- Write unit tests for CodeIndexer
- Write unit tests for JavaParser
Acceptance Criteria
-
qstudio indexindexes current project - Detects Java/Maven projects automatically
- Extracts classes, methods, and fields
- Stores index in ~/.qctl/index/
- Incremental update on re-index
-
--statusshows index info -
--clearremoves index - Respects .gitignore patterns
Metadata
Metadata
Assignees
Labels
module:qstudioAI planning moduleAI planning modulestoryFeature story linked to epicFeature story linked to epic
Type
Projects
Status
No status