diff --git a/packages/ipuaro/CHANGELOG.md b/packages/ipuaro/CHANGELOG.md index 6385ead..deca2cb 100644 --- a/packages/ipuaro/CHANGELOG.md +++ b/packages/ipuaro/CHANGELOG.md @@ -5,6 +5,66 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [0.26.0] - 2025-12-05 - Rich Initial Context: Decorator Extraction + +### Added + +- **Decorator Extraction (0.24.4)** + - Functions now show their decorators in initial context + - Classes now show their decorators in initial context + - Methods show decorators per-method + - New format: `@Controller('users') class UserController` + - Function format: `@Get(':id') async getUser(id: string): Promise` + - Supports NestJS decorators: `@Controller`, `@Get`, `@Post`, `@Injectable`, `@UseGuards`, etc. + - Supports Angular decorators: `@Component`, `@Injectable`, `@Input`, `@Output`, etc. + +- **FileAST.ts Enhancements** + - `decorators?: string[]` field on `FunctionInfo` + - `decorators?: string[]` field on `MethodInfo` + - `decorators?: string[]` field on `ClassInfo` + +- **ASTParser.ts Enhancements** + - `formatDecorator()` - formats decorator node to string (e.g., `@Get(':id')`) + - `extractNodeDecorators()` - extracts decorators that are direct children of a node + - `extractDecoratorsFromSiblings()` - extracts decorators before the declaration in export statements + - Decorators are extracted for classes, methods, and exported functions + +- **prompts.ts Enhancements** + - `formatDecoratorsPrefix()` - formats decorators as a prefix string for display + - Used in `formatFunctionSignature()` for function decorators + - Used in `formatFileSummary()` for class decorators + +### New Context Format + +``` +### src/controllers/user.controller.ts +- @Controller('users') class UserController extends BaseController +- @Get(':id') @Auth() async getUser(id: string): Promise +- @Post() @ValidateBody() async createUser(data: UserDTO): Promise +``` + +### Technical Details + +- Total tests: 1754 passed (was 1720, +34 new tests) + - 14 new tests for ASTParser decorator extraction + - 6 new tests for prompts decorator formatting + - +14 other tests from internal improvements +- Coverage: 97.49% lines, 91.14% branches, 98.61% functions +- 0 ESLint errors, 2 warnings (pre-existing complexity in ASTParser and prompts) +- Build successful + +### Notes + +This completes the v0.24.0 Rich Initial Context milestone: +- ✅ 0.24.1 - Function Signatures with Types +- ✅ 0.24.2 - Interface/Type Field Definitions +- ✅ 0.24.3 - Enum Value Definitions +- ✅ 0.24.4 - Decorator Extraction + +Next milestone: v0.25.0 - Graph Metrics in Context + +--- + ## [0.25.0] - 2025-12-04 - Rich Initial Context: Interface Fields & Type Definitions ### Added diff --git a/packages/ipuaro/ROADMAP.md b/packages/ipuaro/ROADMAP.md index dbbf882..c876988 100644 --- a/packages/ipuaro/ROADMAP.md +++ b/packages/ipuaro/ROADMAP.md @@ -1779,10 +1779,10 @@ export interface ScanResult { --- -## Version 0.24.0 - Rich Initial Context 📋 +## Version 0.24.0 - Rich Initial Context 📋 ✅ **Priority:** HIGH -**Status:** In Progress (3/4 complete) +**Status:** Complete (v0.24.0 released) Enhance initial context for LLM: add function signatures, interface field types, and enum values. This allows LLM to answer questions about types and parameters without tool calls. @@ -1858,7 +1858,7 @@ Enhance initial context for LLM: add function signatures, interface field types, **Why:** LLM knows valid enum values. -### 0.24.4 - Decorator Extraction +### 0.24.4 - Decorator Extraction ⭐ ✅ **Problem:** LLM doesn't see decorators (important for NestJS, Angular) **Solution:** Show decorators in context @@ -1872,16 +1872,15 @@ Enhance initial context for LLM: add function signatures, interface field types, ``` **Changes:** -- [ ] Add `decorators: string[]` to FunctionInfo and ClassInfo -- [ ] Update `ASTParser.ts` to extract decorators -- [ ] Update context to display decorators +- [x] Add `decorators: string[]` to FunctionInfo, MethodInfo, and ClassInfo +- [x] Update `ASTParser.ts` to extract decorators via `extractNodeDecorators()` and `extractDecoratorsFromSiblings()` +- [x] Update `prompts.ts` to display decorators via `formatDecoratorsPrefix()` **Why:** LLM understands routing, DI, guards in NestJS/Angular. **Tests:** -- [ ] Unit tests for enhanced ASTParser -- [ ] Unit tests for new context format -- [ ] Integration tests for full flow +- [x] Unit tests for ASTParser decorator extraction (14 tests) +- [x] Unit tests for prompts decorator formatting (6 tests) --- @@ -1999,7 +1998,7 @@ interface FileMeta { - [x] 0 ESLint errors ✅ - [x] Examples working ✅ (v0.18.0) - [x] CHANGELOG.md up to date ✅ -- [ ] Rich initial context (v0.24.0) — function signatures, interface fields, enum values +- [x] Rich initial context (v0.24.0) — function signatures, interface fields, enum values, decorators ✅ - [ ] Graph metrics in context (v0.25.0) — dependency graph, circular deps, impact score --- @@ -2079,7 +2078,7 @@ sessions:list # List **Last Updated:** 2025-12-05 **Target Version:** 1.0.0 -**Current Version:** 0.25.0 -**Next Milestones:** v0.24.0 (Rich Context - 3/4 complete), v0.25.0 (Graph Metrics) +**Current Version:** 0.26.0 +**Next Milestones:** v0.25.0 (Graph Metrics - 0/4 complete) -> **Note:** v0.24.0 and v0.25.0 are required for 1.0.0 release. They enable LLM to answer questions about types, signatures, and architecture without tool calls. \ No newline at end of file +> **Note:** v0.24.0 complete ✅. v0.25.0 (Graph Metrics) is required for 1.0.0 release. It enables LLM to see architecture without tool calls. \ No newline at end of file diff --git a/packages/ipuaro/package.json b/packages/ipuaro/package.json index c09bbf8..693b269 100644 --- a/packages/ipuaro/package.json +++ b/packages/ipuaro/package.json @@ -1,6 +1,6 @@ { "name": "@samiyev/ipuaro", - "version": "0.25.0", + "version": "0.26.0", "description": "Local AI agent for codebase operations with infinite context feeling", "author": "Fozilbek Samiyev ", "license": "MIT",