@houtini/lm 1.0.13 → 2.0.0
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/dist/index.d.ts +5 -3
- package/dist/index.js +142 -213
- package/dist/index.js.map +1 -1
- package/package.json +10 -33
- package/CHANGELOG.md +0 -282
- package/dist/cache/analysis-cache.d.ts +0 -33
- package/dist/cache/analysis-cache.d.ts.map +0 -1
- package/dist/cache/analysis-cache.js +0 -56
- package/dist/cache/analysis-cache.js.map +0 -1
- package/dist/cache/cache-manager.d.ts +0 -29
- package/dist/cache/cache-manager.d.ts.map +0 -1
- package/dist/cache/cache-manager.js +0 -85
- package/dist/cache/cache-manager.js.map +0 -1
- package/dist/cache/index.d.ts +0 -16
- package/dist/cache/index.d.ts.map +0 -1
- package/dist/cache/index.js +0 -17
- package/dist/cache/index.js.map +0 -1
- package/dist/cache/prompt-cache.d.ts +0 -33
- package/dist/cache/prompt-cache.d.ts.map +0 -1
- package/dist/cache/prompt-cache.js +0 -61
- package/dist/cache/prompt-cache.js.map +0 -1
- package/dist/config.d.ts +0 -41
- package/dist/config.d.ts.map +0 -1
- package/dist/config.js +0 -71
- package/dist/config.js.map +0 -1
- package/dist/core/ThreeStagePromptManager.d.ts +0 -23
- package/dist/core/ThreeStagePromptManager.d.ts.map +0 -1
- package/dist/core/ThreeStagePromptManager.js +0 -118
- package/dist/core/ThreeStagePromptManager.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/plugins/base-plugin.d.ts +0 -55
- package/dist/plugins/base-plugin.d.ts.map +0 -1
- package/dist/plugins/base-plugin.js +0 -120
- package/dist/plugins/base-plugin.js.map +0 -1
- package/dist/plugins/index.d.ts +0 -58
- package/dist/plugins/index.d.ts.map +0 -1
- package/dist/plugins/index.js +0 -162
- package/dist/plugins/index.js.map +0 -1
- package/dist/plugins/types.d.ts +0 -5
- package/dist/plugins/types.d.ts.map +0 -1
- package/dist/plugins/types.js +0 -5
- package/dist/plugins/types.js.map +0 -1
- package/dist/prompts/analyze/code-quality.d.ts +0 -116
- package/dist/prompts/analyze/code-quality.d.ts.map +0 -1
- package/dist/prompts/analyze/code-quality.js +0 -437
- package/dist/prompts/analyze/code-quality.js.map +0 -1
- package/dist/prompts/analyze/compare-integration.d.ts +0 -130
- package/dist/prompts/analyze/compare-integration.d.ts.map +0 -1
- package/dist/prompts/analyze/compare-integration.js +0 -547
- package/dist/prompts/analyze/compare-integration.js.map +0 -1
- package/dist/prompts/analyze/count-files.d.ts +0 -109
- package/dist/prompts/analyze/count-files.d.ts.map +0 -1
- package/dist/prompts/analyze/count-files.js +0 -403
- package/dist/prompts/analyze/count-files.js.map +0 -1
- package/dist/prompts/analyze/database-queries.d.ts +0 -156
- package/dist/prompts/analyze/database-queries.d.ts.map +0 -1
- package/dist/prompts/analyze/database-queries.js +0 -763
- package/dist/prompts/analyze/database-queries.js.map +0 -1
- package/dist/prompts/analyze/dependencies.d.ts +0 -97
- package/dist/prompts/analyze/dependencies.d.ts.map +0 -1
- package/dist/prompts/analyze/dependencies.js +0 -337
- package/dist/prompts/analyze/dependencies.js.map +0 -1
- package/dist/prompts/analyze/diff-signatures.d.ts +0 -139
- package/dist/prompts/analyze/diff-signatures.d.ts.map +0 -1
- package/dist/prompts/analyze/diff-signatures.js +0 -708
- package/dist/prompts/analyze/diff-signatures.js.map +0 -1
- package/dist/prompts/analyze/find-patterns.d.ts +0 -128
- package/dist/prompts/analyze/find-patterns.d.ts.map +0 -1
- package/dist/prompts/analyze/find-patterns.js +0 -524
- package/dist/prompts/analyze/find-patterns.js.map +0 -1
- package/dist/prompts/analyze/find-unused-css.d.ts +0 -151
- package/dist/prompts/analyze/find-unused-css.d.ts.map +0 -1
- package/dist/prompts/analyze/find-unused-css.js +0 -760
- package/dist/prompts/analyze/find-unused-css.js.map +0 -1
- package/dist/prompts/analyze/n8n-workflow.d.ts +0 -137
- package/dist/prompts/analyze/n8n-workflow.d.ts.map +0 -1
- package/dist/prompts/analyze/n8n-workflow.js +0 -533
- package/dist/prompts/analyze/n8n-workflow.js.map +0 -1
- package/dist/prompts/analyze/project-structure.d.ts +0 -126
- package/dist/prompts/analyze/project-structure.d.ts.map +0 -1
- package/dist/prompts/analyze/project-structure.js +0 -573
- package/dist/prompts/analyze/project-structure.js.map +0 -1
- package/dist/prompts/analyze/security-audit.d.ts +0 -142
- package/dist/prompts/analyze/security-audit.d.ts.map +0 -1
- package/dist/prompts/analyze/security-audit.js +0 -641
- package/dist/prompts/analyze/security-audit.js.map +0 -1
- package/dist/prompts/analyze/single-file.d.ts +0 -162
- package/dist/prompts/analyze/single-file.d.ts.map +0 -1
- package/dist/prompts/analyze/single-file.js +0 -669
- package/dist/prompts/analyze/single-file.js.map +0 -1
- package/dist/prompts/analyze/trace-execution.d.ts +0 -126
- package/dist/prompts/analyze/trace-execution.d.ts.map +0 -1
- package/dist/prompts/analyze/trace-execution.js +0 -613
- package/dist/prompts/analyze/trace-execution.js.map +0 -1
- package/dist/prompts/analyze/wordpress-plugin-audit.d.ts +0 -116
- package/dist/prompts/analyze/wordpress-plugin-audit.d.ts.map +0 -1
- package/dist/prompts/analyze/wordpress-plugin-audit.js +0 -456
- package/dist/prompts/analyze/wordpress-plugin-audit.js.map +0 -1
- package/dist/prompts/analyze/wordpress-plugin-readiness.d.ts +0 -103
- package/dist/prompts/analyze/wordpress-plugin-readiness.d.ts.map +0 -1
- package/dist/prompts/analyze/wordpress-plugin-readiness.js +0 -506
- package/dist/prompts/analyze/wordpress-plugin-readiness.js.map +0 -1
- package/dist/prompts/analyze/wordpress-security.d.ts +0 -146
- package/dist/prompts/analyze/wordpress-security.d.ts.map +0 -1
- package/dist/prompts/analyze/wordpress-security.js +0 -702
- package/dist/prompts/analyze/wordpress-security.js.map +0 -1
- package/dist/prompts/analyze/wordpress-theme-audit.d.ts +0 -114
- package/dist/prompts/analyze/wordpress-theme-audit.d.ts.map +0 -1
- package/dist/prompts/analyze/wordpress-theme-audit.js +0 -540
- package/dist/prompts/analyze/wordpress-theme-audit.js.map +0 -1
- package/dist/prompts/custom/custom-prompt.d.ts +0 -135
- package/dist/prompts/custom/custom-prompt.d.ts.map +0 -1
- package/dist/prompts/custom/custom-prompt.js +0 -421
- package/dist/prompts/custom/custom-prompt.js.map +0 -1
- package/dist/prompts/fun/arcade-game.d.ts +0 -152
- package/dist/prompts/fun/arcade-game.d.ts.map +0 -1
- package/dist/prompts/fun/arcade-game.js +0 -657
- package/dist/prompts/fun/arcade-game.js.map +0 -1
- package/dist/prompts/fun/create_text_adventure.d.ts +0 -100
- package/dist/prompts/fun/create_text_adventure.d.ts.map +0 -1
- package/dist/prompts/fun/create_text_adventure.js +0 -401
- package/dist/prompts/fun/create_text_adventure.js.map +0 -1
- package/dist/prompts/fun/css-art-generator.d.ts +0 -168
- package/dist/prompts/fun/css-art-generator.d.ts.map +0 -1
- package/dist/prompts/fun/css-art-generator.js +0 -831
- package/dist/prompts/fun/css-art-generator.js.map +0 -1
- package/dist/prompts/generate/project-documentation.d.ts +0 -137
- package/dist/prompts/generate/project-documentation.d.ts.map +0 -1
- package/dist/prompts/generate/project-documentation.js +0 -670
- package/dist/prompts/generate/project-documentation.js.map +0 -1
- package/dist/prompts/generate/refactoring.d.ts +0 -164
- package/dist/prompts/generate/refactoring.d.ts.map +0 -1
- package/dist/prompts/generate/refactoring.js +0 -625
- package/dist/prompts/generate/refactoring.js.map +0 -1
- package/dist/prompts/generate/responsive-component.d.ts +0 -147
- package/dist/prompts/generate/responsive-component.d.ts.map +0 -1
- package/dist/prompts/generate/responsive-component.js +0 -957
- package/dist/prompts/generate/responsive-component.js.map +0 -1
- package/dist/prompts/generate/typescript-conversion.d.ts +0 -144
- package/dist/prompts/generate/typescript-conversion.d.ts.map +0 -1
- package/dist/prompts/generate/typescript-conversion.js +0 -531
- package/dist/prompts/generate/typescript-conversion.js.map +0 -1
- package/dist/prompts/generate/unit-tests.d.ts +0 -139
- package/dist/prompts/generate/unit-tests.d.ts.map +0 -1
- package/dist/prompts/generate/unit-tests.js +0 -582
- package/dist/prompts/generate/unit-tests.js.map +0 -1
- package/dist/prompts/generate/wordpress-plugin.d.ts +0 -179
- package/dist/prompts/generate/wordpress-plugin.d.ts.map +0 -1
- package/dist/prompts/generate/wordpress-plugin.js +0 -767
- package/dist/prompts/generate/wordpress-plugin.js.map +0 -1
- package/dist/prompts/generate/wordpress-theme-from-static.d.ts +0 -177
- package/dist/prompts/generate/wordpress-theme-from-static.d.ts.map +0 -1
- package/dist/prompts/generate/wordpress-theme-from-static.js +0 -699
- package/dist/prompts/generate/wordpress-theme-from-static.js.map +0 -1
- package/dist/prompts/shared/cache-manager.d.ts +0 -45
- package/dist/prompts/shared/cache-manager.d.ts.map +0 -1
- package/dist/prompts/shared/cache-manager.js +0 -129
- package/dist/prompts/shared/cache-manager.js.map +0 -1
- package/dist/prompts/shared/helpers.d.ts +0 -39
- package/dist/prompts/shared/helpers.d.ts.map +0 -1
- package/dist/prompts/shared/helpers.js +0 -151
- package/dist/prompts/shared/helpers.js.map +0 -1
- package/dist/prompts/shared/templates.d.ts +0 -35
- package/dist/prompts/shared/templates.d.ts.map +0 -1
- package/dist/prompts/shared/templates.js +0 -77
- package/dist/prompts/shared/templates.js.map +0 -1
- package/dist/prompts/shared/types.d.ts +0 -112
- package/dist/prompts/shared/types.d.ts.map +0 -1
- package/dist/prompts/shared/types.js +0 -5
- package/dist/prompts/shared/types.js.map +0 -1
- package/dist/prompts/system/find-unused-files.d.ts +0 -106
- package/dist/prompts/system/find-unused-files.d.ts.map +0 -1
- package/dist/prompts/system/find-unused-files.js +0 -357
- package/dist/prompts/system/find-unused-files.js.map +0 -1
- package/dist/security/index.d.ts +0 -39
- package/dist/security/index.d.ts.map +0 -1
- package/dist/security/index.js +0 -46
- package/dist/security/index.js.map +0 -1
- package/dist/security/integration-helpers.d.ts +0 -121
- package/dist/security/integration-helpers.d.ts.map +0 -1
- package/dist/security/integration-helpers.js +0 -190
- package/dist/security/integration-helpers.js.map +0 -1
- package/dist/security/output-encoder.d.ts +0 -94
- package/dist/security/output-encoder.d.ts.map +0 -1
- package/dist/security/output-encoder.js +0 -295
- package/dist/security/output-encoder.js.map +0 -1
- package/dist/security/prompt-injection-guard.d.ts +0 -59
- package/dist/security/prompt-injection-guard.d.ts.map +0 -1
- package/dist/security/prompt-injection-guard.js +0 -249
- package/dist/security/prompt-injection-guard.js.map +0 -1
- package/dist/security/sanitisation.d.ts +0 -67
- package/dist/security/sanitisation.d.ts.map +0 -1
- package/dist/security/sanitisation.js +0 -398
- package/dist/security/sanitisation.js.map +0 -1
- package/dist/security/security-service.d.ts +0 -103
- package/dist/security/security-service.d.ts.map +0 -1
- package/dist/security/security-service.js +0 -303
- package/dist/security/security-service.js.map +0 -1
- package/dist/security-config.d.ts +0 -45
- package/dist/security-config.d.ts.map +0 -1
- package/dist/security-config.js +0 -63
- package/dist/security-config.js.map +0 -1
- package/dist/system/function-list.d.ts +0 -61
- package/dist/system/function-list.d.ts.map +0 -1
- package/dist/system/function-list.js +0 -111
- package/dist/system/function-list.js.map +0 -1
- package/dist/system/function-registry.d.ts +0 -23
- package/dist/system/function-registry.d.ts.map +0 -1
- package/dist/system/function-registry.js +0 -136
- package/dist/system/function-registry.js.map +0 -1
- package/dist/system/health-check.d.ts +0 -33
- package/dist/system/health-check.d.ts.map +0 -1
- package/dist/system/health-check.js +0 -98
- package/dist/system/health-check.js.map +0 -1
- package/dist/system/path-resolver.d.ts +0 -55
- package/dist/system/path-resolver.d.ts.map +0 -1
- package/dist/system/path-resolver.js +0 -90
- package/dist/system/path-resolver.js.map +0 -1
- package/dist/templates/plugin-template.d.ts +0 -121
- package/dist/templates/plugin-template.d.ts.map +0 -1
- package/dist/templates/plugin-template.js +0 -454
- package/dist/templates/plugin-template.js.map +0 -1
- package/dist/types/chunking-types.d.ts +0 -88
- package/dist/types/chunking-types.d.ts.map +0 -1
- package/dist/types/chunking-types.js +0 -18
- package/dist/types/chunking-types.js.map +0 -1
- package/dist/types/prompt-stages.d.ts +0 -30
- package/dist/types/prompt-stages.d.ts.map +0 -1
- package/dist/types/prompt-stages.js +0 -6
- package/dist/types/prompt-stages.js.map +0 -1
- package/dist/types.d.ts +0 -45
- package/dist/types.d.ts.map +0 -1
- package/dist/types.js +0 -6
- package/dist/types.js.map +0 -1
- package/dist/utils/css-parser.d.ts +0 -26
- package/dist/utils/css-parser.d.ts.map +0 -1
- package/dist/utils/css-parser.js +0 -117
- package/dist/utils/css-parser.js.map +0 -1
- package/dist/utils/path-resolver.d.ts +0 -13
- package/dist/utils/path-resolver.d.ts.map +0 -1
- package/dist/utils/path-resolver.js +0 -78
- package/dist/utils/path-resolver.js.map +0 -1
- package/dist/utils/plugin-utilities.d.ts +0 -176
- package/dist/utils/plugin-utilities.d.ts.map +0 -1
- package/dist/utils/plugin-utilities.js +0 -269
- package/dist/utils/plugin-utilities.js.map +0 -1
- package/dist/utils/streamHandler.d.ts +0 -3
- package/dist/utils/streamHandler.d.ts.map +0 -1
- package/dist/utils/streamHandler.js +0 -137
- package/dist/utils/streamHandler.js.map +0 -1
- package/dist/validation/output-validator.d.ts +0 -136
- package/dist/validation/output-validator.d.ts.map +0 -1
- package/dist/validation/output-validator.js +0 -262
- package/dist/validation/output-validator.js.map +0 -1
- package/dist/validation/response-factory.d.ts +0 -44
- package/dist/validation/response-factory.d.ts.map +0 -1
- package/dist/validation/response-factory.js +0 -202
- package/dist/validation/response-factory.js.map +0 -1
- package/dist/validation/schemas.d.ts +0 -519
- package/dist/validation/schemas.d.ts.map +0 -1
- package/dist/validation/schemas.js +0 -6
- package/dist/validation/schemas.js.map +0 -1
package/CHANGELOG.md
DELETED
|
@@ -1,282 +0,0 @@
|
|
|
1
|
-
# Changelog
|
|
2
|
-
|
|
3
|
-
All notable changes to this project will be documented in this file.
|
|
4
|
-
|
|
5
|
-
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
6
|
-
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
|
-
|
|
8
|
-
## [1.0.10] - 2025-01-09
|
|
9
|
-
|
|
10
|
-
### Fixed
|
|
11
|
-
- **Increased timeout to 5 minutes** - Changed LM Studio timeout from 120000ms (2 minutes) to 300000ms (5 minutes)
|
|
12
|
-
- Prevents timeouts on large multi-file analysis and complex generation tasks
|
|
13
|
-
- Improves reliability for slower local models or heavily loaded systems
|
|
14
|
-
- Addresses timeout issues with project-wide security audits and creative functions
|
|
15
|
-
- Particularly beneficial for WordPress plugin/theme analysis and large codebase operations
|
|
16
|
-
|
|
17
|
-
## [4.1.0] - 2025-08-29
|
|
18
|
-
|
|
19
|
-
### 🎉 MAJOR RELEASE - 3-Stage Architecture Complete
|
|
20
|
-
|
|
21
|
-
### Added
|
|
22
|
-
- **Complete 3-Stage Architecture Deployment** - All multifile plugins now use the proven 3-stage prompt architecture
|
|
23
|
-
- `ThreeStagePromptManager` integration across all 4 multifile plugins
|
|
24
|
-
- `getPromptStages()` method with structured prompt stages (System+Context, Data Payload, Output Instructions)
|
|
25
|
-
- `executeSinglePass()` and `executeWithChunking()` methods for intelligent operation sizing
|
|
26
|
-
- Dynamic context detection from LM Studio (23,832 tokens from Qwen 3 Coder 30B)
|
|
27
|
-
|
|
28
|
-
### Changed
|
|
29
|
-
- **Architecture Consistency** - Eliminated dual chunking conflicts throughout codebase
|
|
30
|
-
- Context Window Manager is now the sole chunking authority
|
|
31
|
-
- Single, consistent 3-stage chunking system across all multifile operations
|
|
32
|
-
- Smart prompt staging for optimal LLM utilization
|
|
33
|
-
- Consistent error handling and response formatting
|
|
34
|
-
|
|
35
|
-
### Fixed
|
|
36
|
-
- **100% Success Rate** - All multifile functions tested and verified working:
|
|
37
|
-
- ✅ `compare_integration`: Perfect integration analysis with detailed findings
|
|
38
|
-
- ✅ `trace_execution_path`: Successful 4-chunk processing with execution traces
|
|
39
|
-
- ✅ `diff_method_signatures`: Accurate signature compatibility analysis
|
|
40
|
-
- ✅ `find_pattern_usage`: Pattern detection across entire codebase
|
|
41
|
-
|
|
42
|
-
### Performance
|
|
43
|
-
- **Context Preservation** - Eliminated hardcoded limits in favor of dynamic detection
|
|
44
|
-
- **Scalable Operations** - Support for any operation size through intelligent chunking
|
|
45
|
-
- **Memory Efficiency** - Optimized prompt staging reduces token waste
|
|
46
|
-
- **Reliability** - Robust error handling and fallback mechanisms
|
|
47
|
-
|
|
48
|
-
## [4.0.1] - 2025-08-29
|
|
49
|
-
|
|
50
|
-
### Fixed
|
|
51
|
-
- **Cache Management Tools Registration** - Fixed plugin loader to properly register cache management functions
|
|
52
|
-
- `clear_analysis_cache` and `get_cache_statistics` now properly available as MCP tools
|
|
53
|
-
- Fixed file:// URL format issue in plugin loader for Windows paths
|
|
54
|
-
- Build process now correctly compiles and exposes all 17 functions
|
|
55
|
-
|
|
56
|
-
### Added
|
|
57
|
-
- **100% Function Completion** - All 17 functions from functional specification v4.0 now working:
|
|
58
|
-
- 4 Analysis functions: analyze_single_file, security_audit, analyze_project_structure, analyze_n8n_workflow
|
|
59
|
-
- 6 Generation functions: generate_unit_tests, generate_documentation, suggest_refactoring, generate_wordpress_plugin, convert_to_typescript, generate_responsive_component
|
|
60
|
-
- 4 Multi-file functions: compare_integration, trace_execution_path, find_pattern_usage, diff_method_signatures
|
|
61
|
-
- 3 System functions: health_check, clear_analysis_cache, get_cache_statistics
|
|
62
|
-
|
|
63
|
-
### Changed
|
|
64
|
-
- **Documentation Updates** - Comprehensive README.md updates to reflect 100% completion status
|
|
65
|
-
- Updated function counts and categorization
|
|
66
|
-
- Added completion badges and status indicators
|
|
67
|
-
- Improved tool organization and descriptions
|
|
68
|
-
- Token savings data refreshed
|
|
69
|
-
|
|
70
|
-
## [4.0.0] - 2025-08-28
|
|
71
|
-
|
|
72
|
-
### Changed
|
|
73
|
-
- **BREAKING**: Renamed `analyze_code_structure` to `analyze_single_file` for clarity
|
|
74
|
-
- The function now explicitly indicates it analyses a single file, not a directory
|
|
75
|
-
- Use `analyze_project_structure` for multi-file/directory analysis
|
|
76
|
-
- All enum references updated from `CODE_STRUCTURE` to `ANALYZE_SINGLE_FILE`
|
|
77
|
-
|
|
78
|
-
## [3.0.4] - 2025-08-27
|
|
79
|
-
|
|
80
|
-
### Fixed
|
|
81
|
-
- **Critical streaming issue** - Resolved `[object Object]` output when processing LLM responses
|
|
82
|
-
- **LM Studio SDK compatibility** - Proper handling of object-based chunks with `content` property
|
|
83
|
-
- **Qwen model support** - Fixed streaming for Qwen thinking models that output structured chunks
|
|
84
|
-
|
|
85
|
-
### Added
|
|
86
|
-
- **Stream handler integration** - Robust chunk processing for multiple streaming formats
|
|
87
|
-
- **Test scripts**:
|
|
88
|
-
- `test-llm-streaming.mjs` - Direct LLM streaming validation
|
|
89
|
-
- `test-streaming-fix.mjs` - MCP protocol streaming test
|
|
90
|
-
- **Comprehensive streaming support** for:
|
|
91
|
-
- LM Studio object chunks
|
|
92
|
-
- OpenAI-style responses
|
|
93
|
-
- Plain text strings
|
|
94
|
-
- Unknown object formats with JSON fallback
|
|
95
|
-
|
|
96
|
-
### Changed
|
|
97
|
-
- Replaced simple string concatenation with `handleLLMResponse` function
|
|
98
|
-
- Improved error handling for malformed chunks
|
|
99
|
-
|
|
100
|
-
## [3.0.3] - 2025-08-26
|
|
101
|
-
|
|
102
|
-
### Fixed
|
|
103
|
-
- Added missing `health_check` tool definition (handler existed but tool wasn't registered)
|
|
104
|
-
- Added empty handlers for `resources/list` and `prompts/list` to prevent "Method not found" errors in Claude logs
|
|
105
|
-
- These optional MCP protocol methods now return empty arrays as expected
|
|
106
|
-
|
|
107
|
-
### Added
|
|
108
|
-
- **Diagnostic Tools**:
|
|
109
|
-
- `diagnostics/run-diagnostics.mjs` - Comprehensive system diagnostic tool that checks:
|
|
110
|
-
- Node.js version compatibility
|
|
111
|
-
- LM Studio connection and loaded models
|
|
112
|
-
- Claude configuration validity
|
|
113
|
-
- Multiple Claude process detection
|
|
114
|
-
- MCP server startup capability
|
|
115
|
-
- Generates detailed `diagnostic-report.json`
|
|
116
|
-
- `diagnostics/check-claude-processes.mjs` - Windows-specific tool to detect multiple Claude.exe processes
|
|
117
|
-
- **Documentation Updates**:
|
|
118
|
-
- Added "Known Issues" section to TROUBLESHOOTING.md
|
|
119
|
-
- Documented multiple Claude.exe processes issue and solution
|
|
120
|
-
- Documented "Method not found" errors and resolution
|
|
121
|
-
- Added diagnostic tool usage instructions
|
|
122
|
-
|
|
123
|
-
### Changed
|
|
124
|
-
- Enhanced troubleshooting guide with new debugging tools section
|
|
125
|
-
- Improved error diagnostics and user guidance
|
|
126
|
-
|
|
127
|
-
## [3.0.2] - 2025-08-23
|
|
128
|
-
|
|
129
|
-
### Fixed
|
|
130
|
-
- Added missing shebang (`#!/usr/bin/env node`) to dist/index.js for NPX execution
|
|
131
|
-
- Fixed NPM package execution on Windows
|
|
132
|
-
- Added post-build script to ensure shebang persists after TypeScript compilation
|
|
133
|
-
|
|
134
|
-
## [3.0.1] - 2025-08-23
|
|
135
|
-
|
|
136
|
-
### Changed
|
|
137
|
-
- Cleaned up root directory by removing development and handover files
|
|
138
|
-
- Updated .gitignore to prevent future development file commits
|
|
139
|
-
- Repository now contains only essential files for npm package and GitHub
|
|
140
|
-
|
|
141
|
-
### Removed
|
|
142
|
-
- Development documentation files (handover, implementation notes)
|
|
143
|
-
- Test files used during development (test-enhanced*.mjs)
|
|
144
|
-
- Backup directories and migration scripts
|
|
145
|
-
- 18 unnecessary files total
|
|
146
|
-
|
|
147
|
-
## [3.0.0] - 2025-08-25
|
|
148
|
-
|
|
149
|
-
### Added
|
|
150
|
-
- **Context-aware prompts** for enhanced code analysis
|
|
151
|
-
- Support for 11 project types (WordPress, React, n8n, Node.js, etc.)
|
|
152
|
-
- Framework-specific best practices and suggestions
|
|
153
|
-
- Optional context parameter maintains backward compatibility
|
|
154
|
-
- **5 new powerful tools**:
|
|
155
|
-
- `generate_wordpress_plugin` - Complete WordPress plugin generator with Brain Monkey test support
|
|
156
|
-
- `analyze_n8n_workflow` - n8n workflow optimization and analysis
|
|
157
|
-
- `generate_responsive_component` - Accessible, responsive component generator
|
|
158
|
-
- `convert_to_typescript` - Intelligent JavaScript to TypeScript converter
|
|
159
|
-
- `security_audit` - Project-specific security vulnerability scanner
|
|
160
|
-
- **90% token savings** through intelligent task delegation
|
|
161
|
-
- **Enhanced type system** with comprehensive TypeScript definitions
|
|
162
|
-
- **Project-specific security checklists** for each supported framework
|
|
163
|
-
|
|
164
|
-
### Changed
|
|
165
|
-
- **RENAMED**: `analyze_code_structure` is now `analyze_single_file` for clarity
|
|
166
|
-
- `analyze_single_file` - Now provides framework-specific insights for a single file
|
|
167
|
-
- Note: Use `analyze_project_structure` for multi-file/directory analysis
|
|
168
|
-
- Enhanced existing tools with optional context support:
|
|
169
|
-
- `generate_unit_tests` - Creates framework-aware test suites
|
|
170
|
-
- `generate_documentation` - Generates audience-appropriate documentation
|
|
171
|
-
- `suggest_refactoring` - Offers project-specific improvements
|
|
172
|
-
- Improved prompt quality for better LLM responses
|
|
173
|
-
- Better error messages with context-aware suggestions
|
|
174
|
-
|
|
175
|
-
### Technical Improvements
|
|
176
|
-
- Modular prompt system for easier maintenance
|
|
177
|
-
- Comprehensive type definitions for all contexts
|
|
178
|
-
- Enhanced prompt templates with domain knowledge
|
|
179
|
-
- Improved code organization and separation of concerns
|
|
180
|
-
|
|
181
|
-
## [2.2.2] - 2025-08-25
|
|
182
|
-
|
|
183
|
-
### Fixed
|
|
184
|
-
- Fixed NPX execution on Windows by normalizing file paths
|
|
185
|
-
- Handle forward/backward slash differences between import.meta.url and process.argv
|
|
186
|
-
- Fixed "server transport closed unexpectedly" error when using NPX
|
|
187
|
-
|
|
188
|
-
## [2.2.1] - 2025-08-25
|
|
189
|
-
|
|
190
|
-
### Fixed
|
|
191
|
-
- Added missing bin field to enable NPX execution
|
|
192
|
-
- Fixed "could not determine executable to run" error
|
|
193
|
-
- Updated examples to show NPX usage
|
|
194
|
-
|
|
195
|
-
### Added
|
|
196
|
-
- Clean and rebuild scripts for easier development
|
|
197
|
-
|
|
198
|
-
## [2.2.0] - 2025-08-25
|
|
199
|
-
|
|
200
|
-
### Fixed
|
|
201
|
-
- Restored all missing tool definitions in setupHandlers
|
|
202
|
-
- Fixed issue where only health_check was being registered
|
|
203
|
-
|
|
204
|
-
### Added
|
|
205
|
-
- All 10 tools now properly available:
|
|
206
|
-
- analyze_single_file
|
|
207
|
-
- generate_unit_tests
|
|
208
|
-
- generate_documentation
|
|
209
|
-
- suggest_refactoring
|
|
210
|
-
- detect_patterns
|
|
211
|
-
- validate_syntax
|
|
212
|
-
- suggest_variable_names
|
|
213
|
-
- analyze_file
|
|
214
|
-
- analyze_csv_data
|
|
215
|
-
- health_check
|
|
216
|
-
|
|
217
|
-
## [2.1.0] - 2025-08-24
|
|
218
|
-
|
|
219
|
-
### Added
|
|
220
|
-
- **Security Features**:
|
|
221
|
-
- Path validation to prevent unauthorized file access
|
|
222
|
-
- Configurable allowed directories via LLM_MCP_ALLOWED_DIRS
|
|
223
|
-
- Path traversal protection
|
|
224
|
-
- File size limits (configurable, default 10MB)
|
|
225
|
-
- **Configuration options**:
|
|
226
|
-
- Environment variable support for security settings
|
|
227
|
-
- Configurable retry logic
|
|
228
|
-
- Adjustable timeout settings
|
|
229
|
-
|
|
230
|
-
### Fixed
|
|
231
|
-
- Thinking tag regex for better response parsing
|
|
232
|
-
- TypeScript strict mode compliance
|
|
233
|
-
- Better error handling for invalid paths
|
|
234
|
-
|
|
235
|
-
### Changed
|
|
236
|
-
- Improved security posture with opt-in directory access
|
|
237
|
-
- Better error messages for permission issues
|
|
238
|
-
|
|
239
|
-
## [2.0.0] - 2025-08-23
|
|
240
|
-
|
|
241
|
-
### Added
|
|
242
|
-
- **File attachment support** - Analyze files directly without reading content first
|
|
243
|
-
- **LM Studio SDK integration** - Replaced axios with official @lmstudio/sdk
|
|
244
|
-
- **New tools**:
|
|
245
|
-
- `analyze_file` - General file analysis with custom instructions
|
|
246
|
-
- `analyze_csv_data` - CSV filtering and analysis
|
|
247
|
-
- **Streaming support** for better performance
|
|
248
|
-
- **Enhanced error handling** with better LM Studio status detection
|
|
249
|
-
|
|
250
|
-
### Changed
|
|
251
|
-
- Complete rewrite using LM Studio SDK
|
|
252
|
-
- Improved connection handling and retry logic
|
|
253
|
-
- Better model detection and validation
|
|
254
|
-
|
|
255
|
-
### Removed
|
|
256
|
-
- Axios dependency (replaced with LM Studio SDK)
|
|
257
|
-
- Manual HTTP request handling
|
|
258
|
-
|
|
259
|
-
## [1.0.0] - 2025-08-22
|
|
260
|
-
|
|
261
|
-
### Initial Release
|
|
262
|
-
- Basic code analysis tools
|
|
263
|
-
- Unit test generation
|
|
264
|
-
- Documentation generation
|
|
265
|
-
- Refactoring suggestions
|
|
266
|
-
- Pattern detection
|
|
267
|
-
- Bug finding
|
|
268
|
-
- Variable naming suggestions
|
|
269
|
-
- Basic LM Studio integration via HTTP
|
|
270
|
-
|
|
271
|
-
## Migration Notes
|
|
272
|
-
|
|
273
|
-
### Upgrading to v3.0.0
|
|
274
|
-
- No breaking changes - all existing code continues to work
|
|
275
|
-
- To use new context features, add optional `context` parameter
|
|
276
|
-
- New tools available immediately after upgrade
|
|
277
|
-
- See [Migration Guide](MIGRATION_GUIDE_V3.md) for detailed upgrade instructions
|
|
278
|
-
|
|
279
|
-
### Upgrading to v2.0.0
|
|
280
|
-
- Update LM Studio URL from http:// to ws:// protocol
|
|
281
|
-
- File analysis now available through new tools
|
|
282
|
-
- Check [Migration Guide](MIGRATION_GUIDE.md) for details
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Analysis Result Cache
|
|
3
|
-
* Specialized caching for plugin analysis results
|
|
4
|
-
*/
|
|
5
|
-
import { BaseCacheManager, CacheConfig } from './cache-manager.js';
|
|
6
|
-
export interface AnalysisResult {
|
|
7
|
-
summary: string;
|
|
8
|
-
findings?: any[];
|
|
9
|
-
data?: any;
|
|
10
|
-
metadata?: {
|
|
11
|
-
modelUsed: string;
|
|
12
|
-
executionTime: number;
|
|
13
|
-
timestamp: string;
|
|
14
|
-
};
|
|
15
|
-
}
|
|
16
|
-
export declare class AnalysisCache extends BaseCacheManager<AnalysisResult> {
|
|
17
|
-
private static instance;
|
|
18
|
-
constructor(config?: Partial<CacheConfig>);
|
|
19
|
-
static getInstance(config?: Partial<CacheConfig>): AnalysisCache;
|
|
20
|
-
/**
|
|
21
|
-
* Generate cache key for analysis results
|
|
22
|
-
*/
|
|
23
|
-
generateKey(functionName: string, params: any, fileHashes?: string[]): string;
|
|
24
|
-
/**
|
|
25
|
-
* Cache analysis result with metadata
|
|
26
|
-
*/
|
|
27
|
-
cacheAnalysis(key: string, result: AnalysisResult, metadata: AnalysisResult['metadata']): Promise<void>;
|
|
28
|
-
/**
|
|
29
|
-
* Simple hash function for cache keys
|
|
30
|
-
*/
|
|
31
|
-
private hashObject;
|
|
32
|
-
}
|
|
33
|
-
//# sourceMappingURL=analysis-cache.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"analysis-cache.d.ts","sourceRoot":"","sources":["../../src/cache/analysis-cache.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEnE,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,GAAG,EAAE,CAAC;IACjB,IAAI,CAAC,EAAE,GAAG,CAAC;IACX,QAAQ,CAAC,EAAE;QACT,SAAS,EAAE,MAAM,CAAC;QAClB,aAAa,EAAE,MAAM,CAAC;QACtB,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;CACH;AAED,qBAAa,aAAc,SAAQ,gBAAgB,CAAC,cAAc,CAAC;IACjE,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAgB;gBAE3B,MAAM,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC;IASzC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,GAAG,aAAa;IAOhE;;OAEG;IACH,WAAW,CACT,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE,GAAG,EACX,UAAU,CAAC,EAAE,MAAM,EAAE,GACpB,MAAM;IAOT;;OAEG;IACG,aAAa,CACjB,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,cAAc,EACtB,QAAQ,EAAE,cAAc,CAAC,UAAU,CAAC,GACnC,OAAO,CAAC,IAAI,CAAC;IAYhB;;OAEG;IACH,OAAO,CAAC,UAAU;CAUnB"}
|
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Analysis Result Cache
|
|
3
|
-
* Specialized caching for plugin analysis results
|
|
4
|
-
*/
|
|
5
|
-
import { BaseCacheManager } from './cache-manager.js';
|
|
6
|
-
export class AnalysisCache extends BaseCacheManager {
|
|
7
|
-
constructor(config) {
|
|
8
|
-
super({
|
|
9
|
-
maxEntries: 50, // Smaller cache for analysis results
|
|
10
|
-
ttlMs: 30 * 60 * 1000, // 30 minutes TTL
|
|
11
|
-
enableStats: true,
|
|
12
|
-
...config
|
|
13
|
-
});
|
|
14
|
-
}
|
|
15
|
-
static getInstance(config) {
|
|
16
|
-
if (!this.instance) {
|
|
17
|
-
this.instance = new AnalysisCache(config);
|
|
18
|
-
}
|
|
19
|
-
return this.instance;
|
|
20
|
-
}
|
|
21
|
-
/**
|
|
22
|
-
* Generate cache key for analysis results
|
|
23
|
-
*/
|
|
24
|
-
generateKey(functionName, params, fileHashes) {
|
|
25
|
-
const paramHash = this.hashObject(params);
|
|
26
|
-
const filesHash = fileHashes ? fileHashes.join('|') : '';
|
|
27
|
-
return `${functionName}:${paramHash}:${filesHash}`.substring(0, 128);
|
|
28
|
-
}
|
|
29
|
-
/**
|
|
30
|
-
* Cache analysis result with metadata
|
|
31
|
-
*/
|
|
32
|
-
async cacheAnalysis(key, result, metadata) {
|
|
33
|
-
const enrichedResult = {
|
|
34
|
-
...result,
|
|
35
|
-
metadata: {
|
|
36
|
-
...metadata,
|
|
37
|
-
cachedAt: new Date().toISOString()
|
|
38
|
-
}
|
|
39
|
-
};
|
|
40
|
-
await this.set(key, enrichedResult);
|
|
41
|
-
}
|
|
42
|
-
/**
|
|
43
|
-
* Simple hash function for cache keys
|
|
44
|
-
*/
|
|
45
|
-
hashObject(obj) {
|
|
46
|
-
const str = JSON.stringify(obj, Object.keys(obj).sort());
|
|
47
|
-
let hash = 0;
|
|
48
|
-
for (let i = 0; i < str.length; i++) {
|
|
49
|
-
const char = str.charCodeAt(i);
|
|
50
|
-
hash = ((hash << 5) - hash) + char;
|
|
51
|
-
hash = hash & hash; // Convert to 32bit integer
|
|
52
|
-
}
|
|
53
|
-
return Math.abs(hash).toString(36);
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
//# sourceMappingURL=analysis-cache.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"analysis-cache.js","sourceRoot":"","sources":["../../src/cache/analysis-cache.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,gBAAgB,EAAe,MAAM,oBAAoB,CAAC;AAanE,MAAM,OAAO,aAAc,SAAQ,gBAAgC;IAGjE,YAAY,MAA6B;QACvC,KAAK,CAAC;YACJ,UAAU,EAAE,EAAE,EAAG,qCAAqC;YACtD,KAAK,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI,EAAG,iBAAiB;YACzC,WAAW,EAAE,IAAI;YACjB,GAAG,MAAM;SACV,CAAC,CAAC;IACL,CAAC;IAED,MAAM,CAAC,WAAW,CAAC,MAA6B;QAC9C,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACnB,IAAI,CAAC,QAAQ,GAAG,IAAI,aAAa,CAAC,MAAM,CAAC,CAAC;QAC5C,CAAC;QACD,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAED;;OAEG;IACH,WAAW,CACT,YAAoB,EACpB,MAAW,EACX,UAAqB;QAErB,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QAC1C,MAAM,SAAS,GAAG,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAEzD,OAAO,GAAG,YAAY,IAAI,SAAS,IAAI,SAAS,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IACvE,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,aAAa,CACjB,GAAW,EACX,MAAsB,EACtB,QAAoC;QAEpC,MAAM,cAAc,GAAG;YACrB,GAAG,MAAM;YACT,QAAQ,EAAE;gBACR,GAAG,QAAQ;gBACX,QAAQ,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;aACnC;SACF,CAAC;QAEF,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;IACtC,CAAC;IAED;;OAEG;IACK,UAAU,CAAC,GAAQ;QACzB,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QACzD,IAAI,IAAI,GAAG,CAAC,CAAC;QACb,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACpC,MAAM,IAAI,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;YAC/B,IAAI,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;YACnC,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,2BAA2B;QACjD,CAAC;QACD,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IACrC,CAAC;CACF"}
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Core Cache Manager
|
|
3
|
-
* Foundation for all caching functionality - analysis, prompts, memory, etc.
|
|
4
|
-
*/
|
|
5
|
-
export interface CacheEntry<T = any> {
|
|
6
|
-
value: T;
|
|
7
|
-
timestamp: number;
|
|
8
|
-
hits: number;
|
|
9
|
-
size?: number;
|
|
10
|
-
}
|
|
11
|
-
export interface CacheConfig {
|
|
12
|
-
maxEntries: number;
|
|
13
|
-
ttlMs?: number;
|
|
14
|
-
enableStats: boolean;
|
|
15
|
-
}
|
|
16
|
-
export declare abstract class BaseCacheManager<T = any> {
|
|
17
|
-
protected cache: Map<string, CacheEntry<T>>;
|
|
18
|
-
protected config: CacheConfig;
|
|
19
|
-
constructor(config?: Partial<CacheConfig>);
|
|
20
|
-
protected isExpired(entry: CacheEntry<T>): boolean;
|
|
21
|
-
protected evictIfNeeded(): void;
|
|
22
|
-
protected createEntry(value: T): CacheEntry<T>;
|
|
23
|
-
protected estimateSize(value: T): number;
|
|
24
|
-
get(key: string): Promise<T | null>;
|
|
25
|
-
set(key: string, value: T): Promise<void>;
|
|
26
|
-
clear(key?: string): void;
|
|
27
|
-
getStatistics(): any;
|
|
28
|
-
}
|
|
29
|
-
//# sourceMappingURL=cache-manager.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"cache-manager.d.ts","sourceRoot":"","sources":["../../src/cache/cache-manager.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,UAAU,CAAC,CAAC,GAAG,GAAG;IACjC,KAAK,EAAE,CAAC,CAAC;IACT,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,WAAW;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,OAAO,CAAC;CACtB;AAED,8BAAsB,gBAAgB,CAAC,CAAC,GAAG,GAAG;IAC5C,SAAS,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,CAAa;IACxD,SAAS,CAAC,MAAM,EAAE,WAAW,CAAC;gBAElB,MAAM,GAAE,OAAO,CAAC,WAAW,CAAM;IAS7C,SAAS,CAAC,SAAS,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,GAAG,OAAO;IAKlD,SAAS,CAAC,aAAa,IAAI,IAAI;IAU/B,SAAS,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC;IAS9C,SAAS,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC,GAAG,MAAM;IAQlC,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC;IAgBnC,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAM/C,KAAK,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI;IAQzB,aAAa,IAAI,GAAG;CAerB"}
|
|
@@ -1,85 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Core Cache Manager
|
|
3
|
-
* Foundation for all caching functionality - analysis, prompts, memory, etc.
|
|
4
|
-
*/
|
|
5
|
-
export class BaseCacheManager {
|
|
6
|
-
constructor(config = {}) {
|
|
7
|
-
this.cache = new Map();
|
|
8
|
-
this.config = {
|
|
9
|
-
maxEntries: 100,
|
|
10
|
-
ttlMs: undefined, // No TTL by default
|
|
11
|
-
enableStats: true,
|
|
12
|
-
...config
|
|
13
|
-
};
|
|
14
|
-
}
|
|
15
|
-
isExpired(entry) {
|
|
16
|
-
if (!this.config.ttlMs)
|
|
17
|
-
return false;
|
|
18
|
-
return (Date.now() - entry.timestamp) > this.config.ttlMs;
|
|
19
|
-
}
|
|
20
|
-
evictIfNeeded() {
|
|
21
|
-
if (this.cache.size <= this.config.maxEntries)
|
|
22
|
-
return;
|
|
23
|
-
// Simple FIFO eviction - remove oldest entry
|
|
24
|
-
const firstKey = this.cache.keys().next().value;
|
|
25
|
-
if (firstKey) {
|
|
26
|
-
this.cache.delete(firstKey);
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
createEntry(value) {
|
|
30
|
-
return {
|
|
31
|
-
value,
|
|
32
|
-
timestamp: Date.now(),
|
|
33
|
-
hits: 0,
|
|
34
|
-
size: this.estimateSize(value)
|
|
35
|
-
};
|
|
36
|
-
}
|
|
37
|
-
estimateSize(value) {
|
|
38
|
-
try {
|
|
39
|
-
return JSON.stringify(value).length;
|
|
40
|
-
}
|
|
41
|
-
catch {
|
|
42
|
-
return 0;
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
async get(key) {
|
|
46
|
-
const entry = this.cache.get(key);
|
|
47
|
-
if (!entry)
|
|
48
|
-
return null;
|
|
49
|
-
if (this.isExpired(entry)) {
|
|
50
|
-
this.cache.delete(key);
|
|
51
|
-
return null;
|
|
52
|
-
}
|
|
53
|
-
// Update hit count for stats
|
|
54
|
-
entry.hits++;
|
|
55
|
-
return entry.value;
|
|
56
|
-
}
|
|
57
|
-
async set(key, value) {
|
|
58
|
-
this.evictIfNeeded();
|
|
59
|
-
const entry = this.createEntry(value);
|
|
60
|
-
this.cache.set(key, entry);
|
|
61
|
-
}
|
|
62
|
-
clear(key) {
|
|
63
|
-
if (key) {
|
|
64
|
-
this.cache.delete(key);
|
|
65
|
-
}
|
|
66
|
-
else {
|
|
67
|
-
this.cache.clear();
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
getStatistics() {
|
|
71
|
-
const entries = Array.from(this.cache.values());
|
|
72
|
-
const totalSize = entries.reduce((sum, entry) => sum + (entry.size || 0), 0);
|
|
73
|
-
const totalHits = entries.reduce((sum, entry) => sum + entry.hits, 0);
|
|
74
|
-
return {
|
|
75
|
-
totalEntries: this.cache.size,
|
|
76
|
-
maxEntries: this.config.maxEntries,
|
|
77
|
-
memoryUsage: `${(totalSize / 1024).toFixed(2)} KB`,
|
|
78
|
-
totalHits,
|
|
79
|
-
avgHitsPerEntry: entries.length > 0 ? (totalHits / entries.length).toFixed(1) : 0,
|
|
80
|
-
oldestEntry: entries.length > 0 ? new Date(Math.min(...entries.map(e => e.timestamp))) : null,
|
|
81
|
-
config: this.config
|
|
82
|
-
};
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
//# sourceMappingURL=cache-manager.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"cache-manager.js","sourceRoot":"","sources":["../../src/cache/cache-manager.ts"],"names":[],"mappings":"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"}
|
package/dist/cache/index.d.ts
DELETED
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Cache System Exports
|
|
3
|
-
* Centralized exports for all caching functionality
|
|
4
|
-
*/
|
|
5
|
-
export { BaseCacheManager } from './cache-manager.js';
|
|
6
|
-
export type { CacheEntry, CacheConfig } from './cache-manager.js';
|
|
7
|
-
export { AnalysisCache } from './analysis-cache.js';
|
|
8
|
-
export type { AnalysisResult } from './analysis-cache.js';
|
|
9
|
-
export { PromptCache, MemoryCache } from './prompt-cache.js';
|
|
10
|
-
export type { PromptCacheEntry, MemoryEntry } from './prompt-cache.js';
|
|
11
|
-
import { AnalysisCache } from './analysis-cache.js';
|
|
12
|
-
import { PromptCache, MemoryCache } from './prompt-cache.js';
|
|
13
|
-
export declare const getAnalysisCache: () => AnalysisCache;
|
|
14
|
-
export declare const getPromptCache: () => PromptCache;
|
|
15
|
-
export declare const getMemoryCache: () => MemoryCache;
|
|
16
|
-
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cache/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAGlE,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,YAAY,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAE1D,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAC7D,YAAY,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGvE,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAG7D,eAAO,MAAM,gBAAgB,qBAAoC,CAAC;AAClE,eAAO,MAAM,cAAc,mBAAkC,CAAC;AAC9D,eAAO,MAAM,cAAc,mBAAkC,CAAC"}
|
package/dist/cache/index.js
DELETED
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Cache System Exports
|
|
3
|
-
* Centralized exports for all caching functionality
|
|
4
|
-
*/
|
|
5
|
-
// Core cache infrastructure
|
|
6
|
-
export { BaseCacheManager } from './cache-manager.js';
|
|
7
|
-
// Specialized cache implementations
|
|
8
|
-
export { AnalysisCache } from './analysis-cache.js';
|
|
9
|
-
export { PromptCache, MemoryCache } from './prompt-cache.js';
|
|
10
|
-
// Import the classes for the convenience functions
|
|
11
|
-
import { AnalysisCache } from './analysis-cache.js';
|
|
12
|
-
import { PromptCache, MemoryCache } from './prompt-cache.js';
|
|
13
|
-
// Convenience exports for common usage patterns
|
|
14
|
-
export const getAnalysisCache = () => AnalysisCache.getInstance();
|
|
15
|
-
export const getPromptCache = () => PromptCache.getInstance();
|
|
16
|
-
export const getMemoryCache = () => MemoryCache.getInstance();
|
|
17
|
-
//# sourceMappingURL=index.js.map
|
package/dist/cache/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cache/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,4BAA4B;AAC5B,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAGtD,sCAAsC;AACtC,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAGpD,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAG7D,mDAAmD;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAE7D,gDAAgD;AAChD,MAAM,CAAC,MAAM,gBAAgB,GAAG,GAAG,EAAE,CAAC,aAAa,CAAC,WAAW,EAAE,CAAC;AAClE,MAAM,CAAC,MAAM,cAAc,GAAG,GAAG,EAAE,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC;AAC9D,MAAM,CAAC,MAAM,cAAc,GAAG,GAAG,EAAE,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC"}
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Prompt/Memory Cache - Placeholder for your planned feature
|
|
3
|
-
*
|
|
4
|
-
* This is where prompt caching and memory functionality will live
|
|
5
|
-
*/
|
|
6
|
-
import { BaseCacheManager, CacheConfig } from './cache-manager.js';
|
|
7
|
-
export interface PromptCacheEntry {
|
|
8
|
-
prompt: string;
|
|
9
|
-
response: string;
|
|
10
|
-
modelUsed: string;
|
|
11
|
-
timestamp: string;
|
|
12
|
-
contextHash: string;
|
|
13
|
-
}
|
|
14
|
-
export interface MemoryEntry {
|
|
15
|
-
content: string;
|
|
16
|
-
context: any;
|
|
17
|
-
importance: number;
|
|
18
|
-
associations: string[];
|
|
19
|
-
timestamp: string;
|
|
20
|
-
}
|
|
21
|
-
export declare class PromptCache extends BaseCacheManager<PromptCacheEntry> {
|
|
22
|
-
private static instance;
|
|
23
|
-
constructor(config?: Partial<CacheConfig>);
|
|
24
|
-
static getInstance(config?: Partial<CacheConfig>): PromptCache;
|
|
25
|
-
cachePromptResponse(promptHash: string, prompt: string, response: string, modelUsed: string): Promise<void>;
|
|
26
|
-
}
|
|
27
|
-
export declare class MemoryCache extends BaseCacheManager<MemoryEntry> {
|
|
28
|
-
private static instance;
|
|
29
|
-
constructor(config?: Partial<CacheConfig>);
|
|
30
|
-
static getInstance(config?: Partial<CacheConfig>): MemoryCache;
|
|
31
|
-
storeMemory(key: string, content: string, context: any, importance?: number): Promise<void>;
|
|
32
|
-
}
|
|
33
|
-
//# sourceMappingURL=prompt-cache.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"prompt-cache.d.ts","sourceRoot":"","sources":["../../src/cache/prompt-cache.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEnE,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,GAAG,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,qBAAa,WAAY,SAAQ,gBAAgB,CAAC,gBAAgB,CAAC;IACjE,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAc;gBAEzB,MAAM,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC;IASzC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,GAAG,WAAW;IAQxD,mBAAmB,CACvB,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,IAAI,CAAC;CAWjB;AAED,qBAAa,WAAY,SAAQ,gBAAgB,CAAC,WAAW,CAAC;IAC5D,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAc;gBAEzB,MAAM,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC;IASzC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,GAAG,WAAW;IAQxD,WAAW,CACf,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,GAAG,EACZ,UAAU,GAAE,MAAY,GACvB,OAAO,CAAC,IAAI,CAAC;CAWjB"}
|
|
@@ -1,61 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Prompt/Memory Cache - Placeholder for your planned feature
|
|
3
|
-
*
|
|
4
|
-
* This is where prompt caching and memory functionality will live
|
|
5
|
-
*/
|
|
6
|
-
import { BaseCacheManager } from './cache-manager.js';
|
|
7
|
-
export class PromptCache extends BaseCacheManager {
|
|
8
|
-
constructor(config) {
|
|
9
|
-
super({
|
|
10
|
-
maxEntries: 200, // Larger cache for prompts
|
|
11
|
-
ttlMs: 60 * 60 * 1000, // 1 hour TTL
|
|
12
|
-
enableStats: true,
|
|
13
|
-
...config
|
|
14
|
-
});
|
|
15
|
-
}
|
|
16
|
-
static getInstance(config) {
|
|
17
|
-
if (!this.instance) {
|
|
18
|
-
this.instance = new PromptCache(config);
|
|
19
|
-
}
|
|
20
|
-
return this.instance;
|
|
21
|
-
}
|
|
22
|
-
// TODO: Implement your prompt caching logic here
|
|
23
|
-
async cachePromptResponse(promptHash, prompt, response, modelUsed) {
|
|
24
|
-
const entry = {
|
|
25
|
-
prompt,
|
|
26
|
-
response,
|
|
27
|
-
modelUsed,
|
|
28
|
-
timestamp: new Date().toISOString(),
|
|
29
|
-
contextHash: promptHash
|
|
30
|
-
};
|
|
31
|
-
await this.set(promptHash, entry);
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
export class MemoryCache extends BaseCacheManager {
|
|
35
|
-
constructor(config) {
|
|
36
|
-
super({
|
|
37
|
-
maxEntries: 1000, // Large cache for memory
|
|
38
|
-
ttlMs: undefined, // No expiration for memory
|
|
39
|
-
enableStats: true,
|
|
40
|
-
...config
|
|
41
|
-
});
|
|
42
|
-
}
|
|
43
|
-
static getInstance(config) {
|
|
44
|
-
if (!this.instance) {
|
|
45
|
-
this.instance = new MemoryCache(config);
|
|
46
|
-
}
|
|
47
|
-
return this.instance;
|
|
48
|
-
}
|
|
49
|
-
// TODO: Implement your memory functionality here
|
|
50
|
-
async storeMemory(key, content, context, importance = 0.5) {
|
|
51
|
-
const entry = {
|
|
52
|
-
content,
|
|
53
|
-
context,
|
|
54
|
-
importance,
|
|
55
|
-
associations: [], // TODO: Implement association logic
|
|
56
|
-
timestamp: new Date().toISOString()
|
|
57
|
-
};
|
|
58
|
-
await this.set(key, entry);
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
//# sourceMappingURL=prompt-cache.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"prompt-cache.js","sourceRoot":"","sources":["../../src/cache/prompt-cache.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,gBAAgB,EAAe,MAAM,oBAAoB,CAAC;AAkBnE,MAAM,OAAO,WAAY,SAAQ,gBAAkC;IAGjE,YAAY,MAA6B;QACvC,KAAK,CAAC;YACJ,UAAU,EAAE,GAAG,EAAG,2BAA2B;YAC7C,KAAK,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI,EAAG,aAAa;YACrC,WAAW,EAAE,IAAI;YACjB,GAAG,MAAM;SACV,CAAC,CAAC;IACL,CAAC;IAED,MAAM,CAAC,WAAW,CAAC,MAA6B;QAC9C,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACnB,IAAI,CAAC,QAAQ,GAAG,IAAI,WAAW,CAAC,MAAM,CAAC,CAAC;QAC1C,CAAC;QACD,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAED,iDAAiD;IACjD,KAAK,CAAC,mBAAmB,CACvB,UAAkB,EAClB,MAAc,EACd,QAAgB,EAChB,SAAiB;QAEjB,MAAM,KAAK,GAAqB;YAC9B,MAAM;YACN,QAAQ;YACR,SAAS;YACT,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACnC,WAAW,EAAE,UAAU;SACxB,CAAC;QAEF,MAAM,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;IACpC,CAAC;CACF;AAED,MAAM,OAAO,WAAY,SAAQ,gBAA6B;IAG5D,YAAY,MAA6B;QACvC,KAAK,CAAC;YACJ,UAAU,EAAE,IAAI,EAAG,yBAAyB;YAC5C,KAAK,EAAE,SAAS,EAAI,2BAA2B;YAC/C,WAAW,EAAE,IAAI;YACjB,GAAG,MAAM;SACV,CAAC,CAAC;IACL,CAAC;IAED,MAAM,CAAC,WAAW,CAAC,MAA6B;QAC9C,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACnB,IAAI,CAAC,QAAQ,GAAG,IAAI,WAAW,CAAC,MAAM,CAAC,CAAC;QAC1C,CAAC;QACD,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAED,iDAAiD;IACjD,KAAK,CAAC,WAAW,CACf,GAAW,EACX,OAAe,EACf,OAAY,EACZ,aAAqB,GAAG;QAExB,MAAM,KAAK,GAAgB;YACzB,OAAO;YACP,OAAO;YACP,UAAU;YACV,YAAY,EAAE,EAAE,EAAE,oCAAoC;YACtD,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACpC,CAAC;QAEF,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAC7B,CAAC;CACF"}
|