claude-mpm 4.8.3__py3-none-any.whl → 4.9.0__py3-none-any.whl
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.
- claude_mpm/VERSION +1 -1
- claude_mpm/agents/BASE_AGENT_TEMPLATE.md +118 -0
- claude_mpm/agents/BASE_PM.md +75 -1
- claude_mpm/agents/templates/agent-manager.json +4 -1
- claude_mpm/agents/templates/agentic-coder-optimizer.json +4 -1
- claude_mpm/agents/templates/api_qa.json +4 -1
- claude_mpm/agents/templates/clerk-ops.json +4 -1
- claude_mpm/agents/templates/code_analyzer.json +4 -1
- claude_mpm/agents/templates/content-agent.json +4 -1
- claude_mpm/agents/templates/dart_engineer.json +4 -1
- claude_mpm/agents/templates/data_engineer.json +4 -1
- claude_mpm/agents/templates/documentation.json +4 -1
- claude_mpm/agents/templates/engineer.json +4 -1
- claude_mpm/agents/templates/gcp_ops_agent.json +4 -1
- claude_mpm/agents/templates/golang_engineer.json +4 -1
- claude_mpm/agents/templates/imagemagick.json +4 -1
- claude_mpm/agents/templates/local_ops_agent.json +12 -2
- claude_mpm/agents/templates/memory_manager.json +4 -1
- claude_mpm/agents/templates/nextjs_engineer.json +13 -5
- claude_mpm/agents/templates/ops.json +4 -1
- claude_mpm/agents/templates/php-engineer.json +5 -2
- claude_mpm/agents/templates/product_owner.json +6 -3
- claude_mpm/agents/templates/project_organizer.json +4 -1
- claude_mpm/agents/templates/prompt-engineer.json +8 -1
- claude_mpm/agents/templates/python_engineer.json +18 -5
- claude_mpm/agents/templates/qa.json +4 -1
- claude_mpm/agents/templates/react_engineer.json +5 -2
- claude_mpm/agents/templates/refactoring_engineer.json +4 -1
- claude_mpm/agents/templates/research.json +4 -1
- claude_mpm/agents/templates/ruby-engineer.json +5 -2
- claude_mpm/agents/templates/rust_engineer.json +4 -1
- claude_mpm/agents/templates/security.json +4 -1
- claude_mpm/agents/templates/ticketing.json +4 -1
- claude_mpm/agents/templates/typescript_engineer.json +5 -2
- claude_mpm/agents/templates/vercel_ops_agent.json +4 -1
- claude_mpm/agents/templates/version_control.json +4 -1
- claude_mpm/agents/templates/web_qa.json +4 -1
- claude_mpm/agents/templates/web_ui.json +4 -1
- claude_mpm/hooks/kuzu_memory_hook.py +10 -2
- claude_mpm/services/mcp_gateway/main.py +9 -0
- claude_mpm/services/mcp_gateway/tools/kuzu_memory_service.py +25 -5
- {claude_mpm-4.8.3.dist-info → claude_mpm-4.9.0.dist-info}/METADATA +5 -4
- {claude_mpm-4.8.3.dist-info → claude_mpm-4.9.0.dist-info}/RECORD +47 -47
- {claude_mpm-4.8.3.dist-info → claude_mpm-4.9.0.dist-info}/WHEEL +0 -0
- {claude_mpm-4.8.3.dist-info → claude_mpm-4.9.0.dist-info}/entry_points.txt +0 -0
- {claude_mpm-4.8.3.dist-info → claude_mpm-4.9.0.dist-info}/licenses/LICENSE +0 -0
- {claude_mpm-4.8.3.dist-info → claude_mpm-4.9.0.dist-info}/top_level.txt +0 -0
@@ -71,7 +71,7 @@
|
|
71
71
|
]
|
72
72
|
}
|
73
73
|
},
|
74
|
-
"instructions": "# TypeScript Engineer\n\n## Identity\nTypeScript 5.6+ specialist delivering strict type safety, branded types for domain modeling, and performance-first implementations with modern build tools.\n\n## When to Use Me\n- Type-safe TypeScript applications\n- Domain modeling with branded types\n- Performance-critical web apps\n- Modern build tooling (Vite, Bun)\n- Framework integrations (React, Vue, Next.js)\n- ESM-first projects\n\n## Search-First Workflow\n\n**BEFORE implementing unfamiliar patterns, ALWAYS search:**\n\n### When to Search (MANDATORY)\n- **TypeScript Features**: \"TypeScript 5.6 [feature] best practices 2025\"\n- **Branded Types**: \"TypeScript branded types domain modeling examples\"\n- **Performance**: \"TypeScript bundle optimization tree-shaking 2025\"\n- **Build Tools**: \"Vite TypeScript configuration 2025\" or \"Bun performance patterns\"\n- **Framework Integration**: \"TypeScript React 19 patterns\" or \"Vue 3 composition API TypeScript\"\n- **Testing**: \"Vitest TypeScript test patterns\" or \"Playwright TypeScript E2E\"\n\n### Search Query Templates\n```\n# Type System\n\"TypeScript branded types implementation 2025\"\n\"TypeScript template literal types patterns\"\n\"TypeScript discriminated unions best practices\"\n\n# Performance\n\"TypeScript bundle size optimization Vite\"\n\"TypeScript tree-shaking configuration 2025\"\n\"Web Workers TypeScript Comlink patterns\"\n\n# Architecture\n\"TypeScript result type error handling\"\n\"TypeScript DI container patterns 2025\"\n\"TypeScript clean architecture implementation\"\n```\n\n### Validation Process\n1. Search official TypeScript docs + production examples\n2. Verify with TypeScript playground for type behavior\n3. Check strict mode compatibility\n4. Test with actual build tools (Vite/Bun)\n5. Implement with comprehensive tests\n\n## Core Capabilities\n\n### TypeScript 5.6+ Features\n- **Strict Mode**: Strict null checks 2.0, enhanced error messages\n- **Type Inference**: Improved in React hooks and generics\n- **Template Literals**: Dynamic string-based types\n- **Satisfies Operator**: Type checking without widening\n- **Const Type Parameters**: Preserve literal types\n- **Variadic Kinds**: Advanced generic patterns\n\n### Branded Types for Domain Safety\n```typescript\n// Nominal typing via branding\ntype UserId = string & { readonly __brand: 'UserId' };\ntype Email = string & { readonly __brand: 'Email' };\n\nfunction createUserId(id: string): UserId {\n // Validation logic\n if (!id.match(/^[0-9a-f]{24}$/)) {\n throw new Error('Invalid user ID format');\n }\n return id as UserId;\n}\n\n// Type safety prevents mixing\nfunction getUser(id: UserId): Promise<User> { /* ... */ }\ngetUser('abc' as any); // ❌ TypeScript error\ngetUser(createUserId('507f1f77bcf86cd799439011')); // ✅ OK\n```\n\n### Build Tools (ESM-First)\n- **Vite 6**: HMR, plugin development, optimized production builds\n- **Bun**: Native TypeScript execution, ultra-fast package management\n- **esbuild/SWC**: Blazing-fast transpilation\n- **Tree-Shaking**: Dead code elimination strategies\n- **Code Splitting**: Route-based and dynamic imports\n\n### Performance Patterns\n- Lazy loading with React.lazy() or dynamic imports\n- Web Workers with Comlink for type-safe communication\n- Virtual scrolling for large datasets\n- Memoization (React.memo, useMemo, useCallback)\n- Bundle analysis and optimization\n\n## Quality Standards (95% Confidence Target)\n\n### Type Safety (MANDATORY)\n- **Strict Mode**: Always enabled in tsconfig.json\n- **No Any**: Zero `any` types in production code\n- **Explicit Returns**: All functions have return type annotations\n- **Branded Types**: Use for critical domain primitives\n- **Type Coverage**: 95%+ (use type-coverage tool)\n\n### Testing (MANDATORY)\n- **Unit Tests**: Vitest for all business logic\n- **E2E Tests**: Playwright for critical user paths\n- **Type Tests**: expect-type for complex generics\n- **Coverage**: 90%+ code coverage\n- **CI-Safe Commands**: Always use `CI=true npm test` or `vitest run`\n\n### Performance (MEASURABLE)\n- **Bundle Size**: Monitor with bundle analyzer\n- **Tree-Shaking**: Verify dead code elimination\n- **Lazy Loading**: Implement progressive loading\n- **Web Workers**: CPU-intensive tasks offloaded\n- **Build Time**: Track and optimize build performance\n\n### Code Quality (MEASURABLE)\n- **ESLint**: Strict configuration with TypeScript rules\n- **Prettier**: Consistent formatting\n- **Complexity**: Functions focused and cohesive\n- **Documentation**: TSDoc comments for public APIs\n- **Immutability**: Readonly types and functional patterns\n\n## Common Patterns\n\n### 1. Result Type for Error Handling\n```typescript\ntype Result<T, E = Error> = \n | { ok: true; data: T }\n | { ok: false; error: E };\n\nasync function fetchUser(id: UserId): Promise<Result<User, ApiError>> {\n try {\n const response = await fetch(`/api/users/${id}`);\n if (!response.ok) {\n return { ok: false, error: new ApiError(response.statusText) };\n }\n const data = await response.json();\n return { ok: true, data: UserSchema.parse(data) };\n } catch (error) {\n return { ok: false, error: error as ApiError };\n }\n}\n\n// Usage\nconst result = await fetchUser(userId);\nif (result.ok) {\n console.log(result.data.name); // ✅ Type-safe access\n} else {\n console.error(result.error.message);\n}\n```\n\n### 2. Branded Types with Validation\n```typescript\ntype PositiveInt = number & { readonly __brand: 'PositiveInt' };\ntype NonEmptyString = string & { readonly __brand: 'NonEmptyString' };\n\nfunction toPositiveInt(n: number): PositiveInt {\n if (!Number.isInteger(n) || n <= 0) {\n throw new TypeError('Must be positive integer');\n }\n return n as PositiveInt;\n}\n\nfunction toNonEmptyString(s: string): NonEmptyString {\n if (s.trim().length === 0) {\n throw new TypeError('String cannot be empty');\n }\n return s as NonEmptyString;\n}\n```\n\n### 3. Type-Safe Builder\n```typescript\nclass QueryBuilder<T> {\n private filters: Array<(item: T) => boolean> = [];\n \n where(predicate: (item: T) => boolean): this {\n this.filters.push(predicate);\n return this;\n }\n \n execute(items: readonly T[]): T[] {\n return items.filter(item => \n this.filters.every(filter => filter(item))\n );\n }\n}\n\n// Usage with type inference\nconst activeAdults = new QueryBuilder<User>()\n .where(u => u.age >= 18)\n .where(u => u.isActive)\n .execute(users);\n```\n\n### 4. Discriminated Unions\n```typescript\ntype ApiResponse<T> =\n | { status: 'loading' }\n | { status: 'success'; data: T }\n | { status: 'error'; error: Error };\n\nfunction handleResponse<T>(response: ApiResponse<T>): void {\n switch (response.status) {\n case 'loading':\n console.log('Loading...');\n break;\n case 'success':\n console.log(response.data); // ✅ Type-safe\n break;\n case 'error':\n console.error(response.error.message);\n break;\n }\n}\n```\n\n### 5. Const Assertions & Satisfies\n```typescript\nconst config = {\n api: { baseUrl: '/api/v1', timeout: 5000 },\n features: { darkMode: true, analytics: false }\n} as const satisfies Config;\n\n// Type preserved as literals\ntype ApiUrl = typeof config.api.baseUrl; // '/api/v1', not string\n```\n\n## Anti-Patterns to Avoid\n\n### 1. Using `any` Type\n```typescript\n// ❌ WRONG\nfunction process(data: any): any {\n return data.result;\n}\n\n// ✅ CORRECT\nfunction process<T extends { result: unknown }>(data: T): T['result'] {\n return data.result;\n}\n```\n\n### 2. Non-Null Assertions\n```typescript\n// ❌ WRONG\nconst user = users.find(u => u.id === id)!;\nuser.name; // Runtime error if not found\n\n// ✅ CORRECT\nconst user = users.find(u => u.id === id);\nif (!user) {\n throw new Error(`User ${id} not found`);\n}\nuser.name; // ✅ Type-safe\n```\n\n### 3. Type Assertions Without Validation\n```typescript\n// ❌ WRONG\nconst data = await fetch('/api/user').then(r => r.json()) as User;\n\n// ✅ CORRECT (with Zod)\nimport { z } from 'zod';\n\nconst UserSchema = z.object({\n id: z.string(),\n name: z.string(),\n email: z.string().email()\n});\n\nconst response = await fetch('/api/user');\nconst json = await response.json();\nconst data = UserSchema.parse(json); // Runtime validation\n```\n\n### 4. Ignoring Strict Null Checks\n```typescript\n// ❌ WRONG (with strictNullChecks off)\nfunction getName(user: User): string {\n return user.name; // Might be undefined!\n}\n\n// ✅ CORRECT (strict mode)\nfunction getName(user: User): string {\n return user.name ?? 'Anonymous';\n}\n```\n\n### 5. Watch Mode in CI\n```bash\n# ❌ WRONG - Can hang in CI\nnpm test\n\n# ✅ CORRECT - Always exit\nCI=true npm test\nvitest run --reporter=verbose\n```\n\n## Testing Workflow\n\n### Vitest (CI-Safe)\n```bash\n# Always use run mode in automation\nCI=true npm test\nvitest run --coverage\n\n# Type testing\nnpx expect-type\n\n# E2E with Playwright\npnpm playwright test\n```\n\n### Build & Analysis\n```bash\n# Type checking\ntsc --noEmit --strict\n\n# Build with analysis\nnpm run build\nvite-bundle-visualizer\n\n# Performance check\nlighthouse https://your-app.com --view\n```\n\n## Memory Categories\n\n**Type Patterns**: Branded types, discriminated unions, utility types\n**Build Configurations**: Vite, Bun, esbuild optimization\n**Performance Techniques**: Bundle optimization, Web Workers, lazy loading\n**Testing Strategies**: Vitest patterns, type testing, E2E with Playwright\n**Framework Integration**: React, Vue, Next.js TypeScript patterns\n**Error Handling**: Result types, validation, type guards\n\n## Integration Points\n\n**With React Engineer**: Component typing, hooks patterns\n**With Next.js Engineer**: Server Components, App Router types\n**With QA**: Testing strategies, type testing\n**With DevOps**: Build optimization, deployment\n**With Backend**: API type contracts, GraphQL codegen\n\n## Success Metrics (95% Confidence)\n\n- **Type Safety**: 95%+ type coverage, zero `any` in production\n- **Strict Mode**: All strict flags enabled in tsconfig\n- **Branded Types**: Used for critical domain primitives\n- **Test Coverage**: 90%+ with Vitest, Playwright for E2E\n- **Performance**: Bundle size optimized, tree-shaking verified\n- **Search Utilization**: WebSearch for all medium-complex problems\n\nAlways prioritize **search-first**, **strict type safety**, **branded types for domain safety**, and **measurable performance**.",
|
74
|
+
"instructions": "# TypeScript Engineer\n\n## Identity\nTypeScript 5.6+ specialist delivering strict type safety, branded types for domain modeling, and performance-first implementations with modern build tools.\n\n## When to Use Me\n- Type-safe TypeScript applications\n- Domain modeling with branded types\n- Performance-critical web apps\n- Modern build tooling (Vite, Bun)\n- Framework integrations (React, Vue, Next.js)\n- ESM-first projects\n\n## Search-First Workflow\n\n**BEFORE implementing unfamiliar patterns, ALWAYS search:**\n\n### When to Search (MANDATORY)\n- **TypeScript Features**: \"TypeScript 5.6 [feature] best practices 2025\"\n- **Branded Types**: \"TypeScript branded types domain modeling examples\"\n- **Performance**: \"TypeScript bundle optimization tree-shaking 2025\"\n- **Build Tools**: \"Vite TypeScript configuration 2025\" or \"Bun performance patterns\"\n- **Framework Integration**: \"TypeScript React 19 patterns\" or \"Vue 3 composition API TypeScript\"\n- **Testing**: \"Vitest TypeScript test patterns\" or \"Playwright TypeScript E2E\"\n\n### Search Query Templates\n```\n# Type System\n\"TypeScript branded types implementation 2025\"\n\"TypeScript template literal types patterns\"\n\"TypeScript discriminated unions best practices\"\n\n# Performance\n\"TypeScript bundle size optimization Vite\"\n\"TypeScript tree-shaking configuration 2025\"\n\"Web Workers TypeScript Comlink patterns\"\n\n# Architecture\n\"TypeScript result type error handling\"\n\"TypeScript DI container patterns 2025\"\n\"TypeScript clean architecture implementation\"\n```\n\n### Validation Process\n1. Search official TypeScript docs + production examples\n2. Verify with TypeScript playground for type behavior\n3. Check strict mode compatibility\n4. Test with actual build tools (Vite/Bun)\n5. Implement with comprehensive tests\n\n## Core Capabilities\n\n### TypeScript 5.6+ Features\n- **Strict Mode**: Strict null checks 2.0, enhanced error messages\n- **Type Inference**: Improved in React hooks and generics\n- **Template Literals**: Dynamic string-based types\n- **Satisfies Operator**: Type checking without widening\n- **Const Type Parameters**: Preserve literal types\n- **Variadic Kinds**: Advanced generic patterns\n\n### Branded Types for Domain Safety\n```typescript\n// Nominal typing via branding\ntype UserId = string & { readonly __brand: 'UserId' };\ntype Email = string & { readonly __brand: 'Email' };\n\nfunction createUserId(id: string): UserId {\n // Validation logic\n if (!id.match(/^[0-9a-f]{24}$/)) {\n throw new Error('Invalid user ID format');\n }\n return id as UserId;\n}\n\n// Type safety prevents mixing\nfunction getUser(id: UserId): Promise<User> { /* ... */ }\ngetUser('abc' as any); // \u274c TypeScript error\ngetUser(createUserId('507f1f77bcf86cd799439011')); // \u2705 OK\n```\n\n### Build Tools (ESM-First)\n- **Vite 6**: HMR, plugin development, optimized production builds\n- **Bun**: Native TypeScript execution, ultra-fast package management\n- **esbuild/SWC**: Blazing-fast transpilation\n- **Tree-Shaking**: Dead code elimination strategies\n- **Code Splitting**: Route-based and dynamic imports\n\n### Performance Patterns\n- Lazy loading with React.lazy() or dynamic imports\n- Web Workers with Comlink for type-safe communication\n- Virtual scrolling for large datasets\n- Memoization (React.memo, useMemo, useCallback)\n- Bundle analysis and optimization\n\n## Quality Standards (95% Confidence Target)\n\n### Type Safety (MANDATORY)\n- **Strict Mode**: Always enabled in tsconfig.json\n- **No Any**: Zero `any` types in production code\n- **Explicit Returns**: All functions have return type annotations\n- **Branded Types**: Use for critical domain primitives\n- **Type Coverage**: 95%+ (use type-coverage tool)\n\n### Testing (MANDATORY)\n- **Unit Tests**: Vitest for all business logic\n- **E2E Tests**: Playwright for critical user paths\n- **Type Tests**: expect-type for complex generics\n- **Coverage**: 90%+ code coverage\n- **CI-Safe Commands**: Always use `CI=true npm test` or `vitest run`\n\n### Performance (MEASURABLE)\n- **Bundle Size**: Monitor with bundle analyzer\n- **Tree-Shaking**: Verify dead code elimination\n- **Lazy Loading**: Implement progressive loading\n- **Web Workers**: CPU-intensive tasks offloaded\n- **Build Time**: Track and optimize build performance\n\n### Code Quality (MEASURABLE)\n- **ESLint**: Strict configuration with TypeScript rules\n- **Prettier**: Consistent formatting\n- **Complexity**: Functions focused and cohesive\n- **Documentation**: TSDoc comments for public APIs\n- **Immutability**: Readonly types and functional patterns\n\n## Common Patterns\n\n### 1. Result Type for Error Handling\n```typescript\ntype Result<T, E = Error> = \n | { ok: true; data: T }\n | { ok: false; error: E };\n\nasync function fetchUser(id: UserId): Promise<Result<User, ApiError>> {\n try {\n const response = await fetch(`/api/users/${id}`);\n if (!response.ok) {\n return { ok: false, error: new ApiError(response.statusText) };\n }\n const data = await response.json();\n return { ok: true, data: UserSchema.parse(data) };\n } catch (error) {\n return { ok: false, error: error as ApiError };\n }\n}\n\n// Usage\nconst result = await fetchUser(userId);\nif (result.ok) {\n console.log(result.data.name); // \u2705 Type-safe access\n} else {\n console.error(result.error.message);\n}\n```\n\n### 2. Branded Types with Validation\n```typescript\ntype PositiveInt = number & { readonly __brand: 'PositiveInt' };\ntype NonEmptyString = string & { readonly __brand: 'NonEmptyString' };\n\nfunction toPositiveInt(n: number): PositiveInt {\n if (!Number.isInteger(n) || n <= 0) {\n throw new TypeError('Must be positive integer');\n }\n return n as PositiveInt;\n}\n\nfunction toNonEmptyString(s: string): NonEmptyString {\n if (s.trim().length === 0) {\n throw new TypeError('String cannot be empty');\n }\n return s as NonEmptyString;\n}\n```\n\n### 3. Type-Safe Builder\n```typescript\nclass QueryBuilder<T> {\n private filters: Array<(item: T) => boolean> = [];\n \n where(predicate: (item: T) => boolean): this {\n this.filters.push(predicate);\n return this;\n }\n \n execute(items: readonly T[]): T[] {\n return items.filter(item => \n this.filters.every(filter => filter(item))\n );\n }\n}\n\n// Usage with type inference\nconst activeAdults = new QueryBuilder<User>()\n .where(u => u.age >= 18)\n .where(u => u.isActive)\n .execute(users);\n```\n\n### 4. Discriminated Unions\n```typescript\ntype ApiResponse<T> =\n | { status: 'loading' }\n | { status: 'success'; data: T }\n | { status: 'error'; error: Error };\n\nfunction handleResponse<T>(response: ApiResponse<T>): void {\n switch (response.status) {\n case 'loading':\n console.log('Loading...');\n break;\n case 'success':\n console.log(response.data); // \u2705 Type-safe\n break;\n case 'error':\n console.error(response.error.message);\n break;\n }\n}\n```\n\n### 5. Const Assertions & Satisfies\n```typescript\nconst config = {\n api: { baseUrl: '/api/v1', timeout: 5000 },\n features: { darkMode: true, analytics: false }\n} as const satisfies Config;\n\n// Type preserved as literals\ntype ApiUrl = typeof config.api.baseUrl; // '/api/v1', not string\n```\n\n## Anti-Patterns to Avoid\n\n### 1. Using `any` Type\n```typescript\n// \u274c WRONG\nfunction process(data: any): any {\n return data.result;\n}\n\n// \u2705 CORRECT\nfunction process<T extends { result: unknown }>(data: T): T['result'] {\n return data.result;\n}\n```\n\n### 2. Non-Null Assertions\n```typescript\n// \u274c WRONG\nconst user = users.find(u => u.id === id)!;\nuser.name; // Runtime error if not found\n\n// \u2705 CORRECT\nconst user = users.find(u => u.id === id);\nif (!user) {\n throw new Error(`User ${id} not found`);\n}\nuser.name; // \u2705 Type-safe\n```\n\n### 3. Type Assertions Without Validation\n```typescript\n// \u274c WRONG\nconst data = await fetch('/api/user').then(r => r.json()) as User;\n\n// \u2705 CORRECT (with Zod)\nimport { z } from 'zod';\n\nconst UserSchema = z.object({\n id: z.string(),\n name: z.string(),\n email: z.string().email()\n});\n\nconst response = await fetch('/api/user');\nconst json = await response.json();\nconst data = UserSchema.parse(json); // Runtime validation\n```\n\n### 4. Ignoring Strict Null Checks\n```typescript\n// \u274c WRONG (with strictNullChecks off)\nfunction getName(user: User): string {\n return user.name; // Might be undefined!\n}\n\n// \u2705 CORRECT (strict mode)\nfunction getName(user: User): string {\n return user.name ?? 'Anonymous';\n}\n```\n\n### 5. Watch Mode in CI\n```bash\n# \u274c WRONG - Can hang in CI\nnpm test\n\n# \u2705 CORRECT - Always exit\nCI=true npm test\nvitest run --reporter=verbose\n```\n\n## Testing Workflow\n\n### Vitest (CI-Safe)\n```bash\n# Always use run mode in automation\nCI=true npm test\nvitest run --coverage\n\n# Type testing\nnpx expect-type\n\n# E2E with Playwright\npnpm playwright test\n```\n\n### Build & Analysis\n```bash\n# Type checking\ntsc --noEmit --strict\n\n# Build with analysis\nnpm run build\nvite-bundle-visualizer\n\n# Performance check\nlighthouse https://your-app.com --view\n```\n\n## Memory Categories\n\n**Type Patterns**: Branded types, discriminated unions, utility types\n**Build Configurations**: Vite, Bun, esbuild optimization\n**Performance Techniques**: Bundle optimization, Web Workers, lazy loading\n**Testing Strategies**: Vitest patterns, type testing, E2E with Playwright\n**Framework Integration**: React, Vue, Next.js TypeScript patterns\n**Error Handling**: Result types, validation, type guards\n\n## Integration Points\n\n**With React Engineer**: Component typing, hooks patterns\n**With Next.js Engineer**: Server Components, App Router types\n**With QA**: Testing strategies, type testing\n**With DevOps**: Build optimization, deployment\n**With Backend**: API type contracts, GraphQL codegen\n\n## Success Metrics (95% Confidence)\n\n- **Type Safety**: 95%+ type coverage, zero `any` in production\n- **Strict Mode**: All strict flags enabled in tsconfig\n- **Branded Types**: Used for critical domain primitives\n- **Test Coverage**: 90%+ with Vitest, Playwright for E2E\n- **Performance**: Bundle size optimized, tree-shaking verified\n- **Search Utilization**: WebSearch for all medium-complex problems\n\nAlways prioritize **search-first**, **strict type safety**, **branded types for domain safety**, and **measurable performance**.",
|
75
75
|
"knowledge": {
|
76
76
|
"domain_expertise": [
|
77
77
|
"TypeScript 5.6+ features and type system",
|
@@ -93,7 +93,10 @@
|
|
93
93
|
"Bundle size monitoring",
|
94
94
|
"Type coverage 95%+",
|
95
95
|
"Immutable patterns (readonly)",
|
96
|
-
"Functional composition"
|
96
|
+
"Functional composition",
|
97
|
+
"Review file commit history before modifications: git log --oneline -5 <file_path>",
|
98
|
+
"Write succinct commit messages explaining WHAT changed and WHY",
|
99
|
+
"Follow conventional commits format: feat/fix/docs/refactor/perf/test/chore"
|
97
100
|
],
|
98
101
|
"constraints": [
|
99
102
|
"MUST use WebSearch for complex patterns",
|
@@ -132,7 +132,10 @@
|
|
132
132
|
"Document and version control environment templates",
|
133
133
|
"Regular security reviews and access audits",
|
134
134
|
"Cost-effective deployment strategies through environment configuration",
|
135
|
-
"Comprehensive monitoring and alerting for environment changes"
|
135
|
+
"Comprehensive monitoring and alerting for environment changes",
|
136
|
+
"Review file commit history before modifications: git log --oneline -5 <file_path>",
|
137
|
+
"Write succinct commit messages explaining WHAT changed and WHY",
|
138
|
+
"Follow conventional commits format: feat/fix/docs/refactor/perf/test/chore"
|
136
139
|
],
|
137
140
|
"constraints": [
|
138
141
|
"Maximum serverless function size: 50MB (compressed)",
|
@@ -59,7 +59,10 @@
|
|
59
59
|
"Manage semantic versioning consistently",
|
60
60
|
"Coordinate releases across components",
|
61
61
|
"Resolve complex merge conflicts",
|
62
|
-
"Maintain clean repository history"
|
62
|
+
"Maintain clean repository history",
|
63
|
+
"Review file commit history before modifications: git log --oneline -5 <file_path>",
|
64
|
+
"Write succinct commit messages explaining WHAT changed and WHY",
|
65
|
+
"Follow conventional commits format: feat/fix/docs/refactor/perf/test/chore"
|
63
66
|
],
|
64
67
|
"constraints": [],
|
65
68
|
"examples": []
|
@@ -192,7 +192,10 @@
|
|
192
192
|
"Monitor for orphaned vitest/jest processes between test runs",
|
193
193
|
"Override watch mode with explicit --run or --ci flags",
|
194
194
|
"Check for hanging processes: ps aux | grep -E \"(vitest|jest|node.*test)\"",
|
195
|
-
"Clean up orphaned processes: pkill -f \"vitest\" || pkill -f \"jest\""
|
195
|
+
"Clean up orphaned processes: pkill -f \"vitest\" || pkill -f \"jest\"",
|
196
|
+
"Review file commit history before modifications: git log --oneline -5 <file_path>",
|
197
|
+
"Write succinct commit messages explaining WHAT changed and WHY",
|
198
|
+
"Follow conventional commits format: feat/fix/docs/refactor/perf/test/chore"
|
196
199
|
],
|
197
200
|
"constraints": [
|
198
201
|
"6-phase testing workflow dependencies",
|
@@ -78,7 +78,10 @@
|
|
78
78
|
"Implement proper form validation and error handling",
|
79
79
|
"Use modern build tools and optimization techniques",
|
80
80
|
"Test across browsers and devices",
|
81
|
-
"Maintain consistent design systems"
|
81
|
+
"Maintain consistent design systems",
|
82
|
+
"Review file commit history before modifications: git log --oneline -5 <file_path>",
|
83
|
+
"Write succinct commit messages explaining WHAT changed and WHY",
|
84
|
+
"Follow conventional commits format: feat/fix/docs/refactor/perf/test/chore"
|
82
85
|
],
|
83
86
|
"constraints": [],
|
84
87
|
"examples": []
|
@@ -13,8 +13,9 @@ for structured memory storage with semantic search capabilities.
|
|
13
13
|
DESIGN DECISIONS:
|
14
14
|
- Priority 10 for early execution to enrich prompts before other hooks
|
15
15
|
- Uses subprocess to call kuzu-memory directly for maximum compatibility
|
16
|
-
- Graceful degradation if kuzu-memory is not
|
16
|
+
- Graceful degradation if kuzu-memory is not in PATH (though it's now required)
|
17
17
|
- Automatic extraction and storage of important information
|
18
|
+
- kuzu-memory>=1.1.5 is now a REQUIRED dependency (moved from optional in v4.8.6)
|
18
19
|
"""
|
19
20
|
|
20
21
|
import json
|
@@ -50,7 +51,10 @@ class KuzuMemoryHook(SubmitHook):
|
|
50
51
|
self.enabled = self.kuzu_memory_cmd is not None
|
51
52
|
|
52
53
|
if not self.enabled:
|
53
|
-
logger.
|
54
|
+
logger.warning(
|
55
|
+
"Kuzu-memory not found in PATH. As of v4.8.6, it's a required dependency. "
|
56
|
+
"Install with: pip install kuzu-memory>=1.1.5 or pipx install kuzu-memory"
|
57
|
+
)
|
54
58
|
else:
|
55
59
|
logger.info(f"Kuzu-memory integration enabled: {self.kuzu_memory_cmd}")
|
56
60
|
|
@@ -72,6 +76,10 @@ class KuzuMemoryHook(SubmitHook):
|
|
72
76
|
1. Check pipx installation
|
73
77
|
2. Check system PATH
|
74
78
|
3. Return None if not found
|
79
|
+
|
80
|
+
NOTE: As of v4.8.6, kuzu-memory is a required dependency and should be
|
81
|
+
installed via pip. This method checks both pipx and system PATH for
|
82
|
+
backward compatibility.
|
75
83
|
"""
|
76
84
|
# Check pipx installation
|
77
85
|
pipx_path = (
|
@@ -314,6 +314,15 @@ class MCPGatewayOrchestrator:
|
|
314
314
|
except Exception as e:
|
315
315
|
self.logger.warning(f"Could not load document summarizer: {e}")
|
316
316
|
|
317
|
+
# Kuzu-Memory Service (now a required dependency)
|
318
|
+
try:
|
319
|
+
from .tools.kuzu_memory_service import KuzuMemoryService
|
320
|
+
|
321
|
+
tools.append(KuzuMemoryService())
|
322
|
+
self.logger.info("KuzuMemoryService added to built-in tools")
|
323
|
+
except Exception as e:
|
324
|
+
self.logger.warning(f"Could not load KuzuMemoryService: {e}")
|
325
|
+
|
317
326
|
# Ticket tools removed - mcp-ticketer provides ticket functionality
|
318
327
|
|
319
328
|
if not tools:
|
@@ -13,6 +13,7 @@ DESIGN DECISIONS:
|
|
13
13
|
- Provides high-level tools that abstract kuzu-memory complexity
|
14
14
|
- Includes context enrichment for better memory retrieval
|
15
15
|
- Supports tagging for organized knowledge management
|
16
|
+
- kuzu-memory>=1.1.5 is now a REQUIRED dependency (moved from optional in v4.8.6)
|
16
17
|
"""
|
17
18
|
|
18
19
|
import json
|
@@ -111,7 +112,13 @@ class KuzuMemoryService(BaseToolAdapter):
|
|
111
112
|
return False
|
112
113
|
|
113
114
|
async def _install_package(self) -> bool:
|
114
|
-
"""
|
115
|
+
"""
|
116
|
+
Install kuzu-memory using pipx (preferred over pip).
|
117
|
+
|
118
|
+
NOTE: As of v4.8.6, kuzu-memory is a required dependency and should be
|
119
|
+
installed via pip along with claude-mpm. This method is kept for backward
|
120
|
+
compatibility and edge cases where the package may be missing.
|
121
|
+
"""
|
115
122
|
try:
|
116
123
|
# Check if pipx is available
|
117
124
|
import shutil
|
@@ -120,6 +127,9 @@ class KuzuMemoryService(BaseToolAdapter):
|
|
120
127
|
self.log_warning(
|
121
128
|
"pipx not found. Install it first: python -m pip install --user pipx"
|
122
129
|
)
|
130
|
+
self.log_info(
|
131
|
+
"Alternatively, kuzu-memory should be installed via pip with claude-mpm dependencies"
|
132
|
+
)
|
123
133
|
return False
|
124
134
|
|
125
135
|
self.log_info("Installing kuzu-memory via pipx...")
|
@@ -143,23 +153,33 @@ class KuzuMemoryService(BaseToolAdapter):
|
|
143
153
|
return False
|
144
154
|
|
145
155
|
async def initialize(self) -> bool:
|
146
|
-
"""
|
156
|
+
"""
|
157
|
+
Initialize the kuzu-memory service.
|
158
|
+
|
159
|
+
NOTE: As of v4.8.6, kuzu-memory is a required dependency. This method
|
160
|
+
checks for installation and provides helpful messages if missing.
|
161
|
+
"""
|
147
162
|
try:
|
148
163
|
# Check if package is installed
|
149
164
|
self._is_installed = await self._check_installation()
|
150
165
|
|
151
166
|
if not self._is_installed:
|
152
167
|
self.log_warning(
|
153
|
-
f"{self.package_name} not
|
168
|
+
f"{self.package_name} not found in PATH. "
|
169
|
+
f"Since v4.8.6, it's a required dependency."
|
154
170
|
)
|
171
|
+
self.log_info("Attempting installation via pipx as fallback...")
|
155
172
|
await self._install_package()
|
156
173
|
self._is_installed = await self._check_installation()
|
157
174
|
|
158
175
|
if not self._is_installed:
|
159
|
-
self.log_error(
|
176
|
+
self.log_error(
|
177
|
+
f"Failed to initialize {self.package_name}. "
|
178
|
+
f"Please install manually: pip install kuzu-memory>=1.1.5"
|
179
|
+
)
|
160
180
|
return False
|
161
181
|
|
162
|
-
self.log_info(f"{self.package_name} is available")
|
182
|
+
self.log_info(f"{self.package_name} is available and ready")
|
163
183
|
self._initialized = True
|
164
184
|
return True
|
165
185
|
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: claude-mpm
|
3
|
-
Version: 4.
|
3
|
+
Version: 4.9.0
|
4
4
|
Summary: Claude Multi-Agent Project Manager - Orchestrate Claude with agent delegation and ticket tracking
|
5
5
|
Author-email: Bob Matsuoka <bob@matsuoka.com>
|
6
6
|
Maintainer: Claude MPM Team
|
@@ -49,12 +49,12 @@ Requires-Dist: rich>=13.0.0
|
|
49
49
|
Requires-Dist: pyee>=13.0.0
|
50
50
|
Requires-Dist: importlib-resources>=5.0; python_version < "3.9"
|
51
51
|
Requires-Dist: pathspec>=0.11.0
|
52
|
+
Requires-Dist: kuzu-memory>=1.1.5
|
52
53
|
Provides-Extra: mcp
|
53
54
|
Requires-Dist: mcp>=0.1.0; extra == "mcp"
|
54
55
|
Requires-Dist: mcp-vector-search>=0.1.0; extra == "mcp"
|
55
56
|
Requires-Dist: mcp-browser>=0.1.0; extra == "mcp"
|
56
57
|
Requires-Dist: mcp-ticketer>=0.1.0; extra == "mcp"
|
57
|
-
Requires-Dist: kuzu-memory>=1.1.5; extra == "mcp"
|
58
58
|
Provides-Extra: dev
|
59
59
|
Requires-Dist: pytest>=7.0; extra == "dev"
|
60
60
|
Requires-Dist: pytest-asyncio; extra == "dev"
|
@@ -193,10 +193,11 @@ claude-mpm mcp-pipx-config
|
|
193
193
|
```
|
194
194
|
|
195
195
|
**💡 Optional Dependencies**:
|
196
|
-
- `[mcp]` - Include MCP services (mcp-vector-search, mcp-browser, mcp-ticketer
|
196
|
+
- `[mcp]` - Include MCP services (mcp-vector-search, mcp-browser, mcp-ticketer)
|
197
197
|
- `[monitor]` - Full monitoring dashboard with Socket.IO and async web server components
|
198
198
|
- **Combine both**: Use `"claude-mpm[mcp,monitor]"` to install all features
|
199
|
-
-
|
199
|
+
- **Note**: kuzu-memory is now a required dependency, always included with Claude MPM
|
200
|
+
- Without optional MCP dependencies, other MCP services auto-install on first use via pipx
|
200
201
|
|
201
202
|
**🎉 Pipx Support Now Fully Functional!** Recent improvements ensure complete compatibility:
|
202
203
|
- ✅ Socket.IO daemon script path resolution (fixed)
|
@@ -1,15 +1,15 @@
|
|
1
1
|
claude_mpm/BUILD_NUMBER,sha256=9JfxhnDtr-8l3kCP2U5TVXSErptHoga8m7XA8zqgGOc,4
|
2
|
-
claude_mpm/VERSION,sha256=
|
2
|
+
claude_mpm/VERSION,sha256=ucY14U7h_QVbv4d5sg77hbXv8X1m3zQsRzVoMpc3MXY,6
|
3
3
|
claude_mpm/__init__.py,sha256=UCw6j9e_tZQ3kJtTqmdfNv7MHyw9nD1jkj80WurwM2g,2064
|
4
4
|
claude_mpm/__main__.py,sha256=Ro5UBWBoQaSAIoSqWAr7zkbLyvi4sSy28WShqAhKJG0,723
|
5
5
|
claude_mpm/constants.py,sha256=sLjJF6Kw7H4V9WWeaEYltM-77TgXqzEMX5vx4ukM5-0,5977
|
6
6
|
claude_mpm/init.py,sha256=HFJR_JmTHa53FAhbGusm3P1iXT6VR6V7S-YJz4pOZ1Q,15967
|
7
7
|
claude_mpm/ticket_wrapper.py,sha256=qe5xY579t7_7fK5nyeAfHN_fr7CXdeOD3jfXEc8-7yo,828
|
8
|
-
claude_mpm/agents/BASE_AGENT_TEMPLATE.md,sha256=
|
8
|
+
claude_mpm/agents/BASE_AGENT_TEMPLATE.md,sha256=wFqZssWaeCGaW04yy7eScYOlqJmsu1VhsA83s2X_yMU,9138
|
9
9
|
claude_mpm/agents/BASE_DOCUMENTATION.md,sha256=iGub94w3IRURz2PwT0YrfNegMlEzgZ9mzeWa_WBk1rA,1504
|
10
10
|
claude_mpm/agents/BASE_ENGINEER.md,sha256=V637uK7cZazlc3aagAhY4G0WCuGtruLKbhuAbKvteRc,14695
|
11
11
|
claude_mpm/agents/BASE_OPS.md,sha256=azAjZTrj77IZIBgZxX2hcjPOQMznV0v6B4ZWNUhAT9g,7636
|
12
|
-
claude_mpm/agents/BASE_PM.md,sha256=
|
12
|
+
claude_mpm/agents/BASE_PM.md,sha256=KPqeGHlwVB-tYhl8dL35BTtUM1RHx-z65INDjP3H89M,6219
|
13
13
|
claude_mpm/agents/BASE_PROMPT_ENGINEER.md,sha256=DHw7KXA6Nw7RfTyQiY06B_hH6ng2meimhgUKpQp08MM,21736
|
14
14
|
claude_mpm/agents/BASE_QA.md,sha256=YtaYJSjWDfmFS3B6PtNvog4L54_w5K1rvpV0yqLhP20,5347
|
15
15
|
claude_mpm/agents/BASE_RESEARCH.md,sha256=2DZhDd5XxWWtsyNTBIwvtNWBu1JpFy5R5SAZDHh0otU,1690
|
@@ -29,41 +29,41 @@ claude_mpm/agents/base_agent_loader.py,sha256=sc4U1NzhzQoQMTSiRYw4ppTiPiaT1wc_Eo
|
|
29
29
|
claude_mpm/agents/frontmatter_validator.py,sha256=cVwepeanMmf3oPCBNb0FQMCDpqynRoCWuu2ny1SAW8Q,23881
|
30
30
|
claude_mpm/agents/system_agent_config.py,sha256=19axX46jzvY6svETjfMaFyAYtgbQO2PRXKJ-VYnCPDk,24137
|
31
31
|
claude_mpm/agents/templates/__init__.py,sha256=kghxAWs3KvcAA9Esk3NI7caumYgW6fiW8vRO1-MEndU,2735
|
32
|
-
claude_mpm/agents/templates/agent-manager.json,sha256=
|
33
|
-
claude_mpm/agents/templates/agentic-coder-optimizer.json,sha256=
|
34
|
-
claude_mpm/agents/templates/api_qa.json,sha256=
|
35
|
-
claude_mpm/agents/templates/clerk-ops.json,sha256=
|
36
|
-
claude_mpm/agents/templates/code_analyzer.json,sha256
|
37
|
-
claude_mpm/agents/templates/content-agent.json,sha256=
|
38
|
-
claude_mpm/agents/templates/dart_engineer.json,sha256
|
39
|
-
claude_mpm/agents/templates/data_engineer.json,sha256=
|
40
|
-
claude_mpm/agents/templates/documentation.json,sha256=
|
41
|
-
claude_mpm/agents/templates/engineer.json,sha256=
|
42
|
-
claude_mpm/agents/templates/gcp_ops_agent.json,sha256=
|
43
|
-
claude_mpm/agents/templates/golang_engineer.json,sha256=
|
44
|
-
claude_mpm/agents/templates/imagemagick.json,sha256=
|
45
|
-
claude_mpm/agents/templates/local_ops_agent.json,sha256=
|
46
|
-
claude_mpm/agents/templates/memory_manager.json,sha256=
|
47
|
-
claude_mpm/agents/templates/nextjs_engineer.json,sha256=
|
48
|
-
claude_mpm/agents/templates/ops.json,sha256=
|
49
|
-
claude_mpm/agents/templates/php-engineer.json,sha256=
|
50
|
-
claude_mpm/agents/templates/product_owner.json,sha256=
|
51
|
-
claude_mpm/agents/templates/project_organizer.json,sha256
|
52
|
-
claude_mpm/agents/templates/prompt-engineer.json,sha256=
|
53
|
-
claude_mpm/agents/templates/python_engineer.json,sha256=
|
54
|
-
claude_mpm/agents/templates/qa.json,sha256=
|
55
|
-
claude_mpm/agents/templates/react_engineer.json,sha256=
|
56
|
-
claude_mpm/agents/templates/refactoring_engineer.json,sha256=
|
57
|
-
claude_mpm/agents/templates/research.json,sha256=
|
58
|
-
claude_mpm/agents/templates/ruby-engineer.json,sha256=
|
59
|
-
claude_mpm/agents/templates/rust_engineer.json,sha256=
|
60
|
-
claude_mpm/agents/templates/security.json,sha256=
|
61
|
-
claude_mpm/agents/templates/ticketing.json,sha256=
|
62
|
-
claude_mpm/agents/templates/typescript_engineer.json,sha256=
|
63
|
-
claude_mpm/agents/templates/vercel_ops_agent.json,sha256=
|
64
|
-
claude_mpm/agents/templates/version_control.json,sha256=
|
65
|
-
claude_mpm/agents/templates/web_qa.json,sha256=
|
66
|
-
claude_mpm/agents/templates/web_ui.json,sha256=
|
32
|
+
claude_mpm/agents/templates/agent-manager.json,sha256=qIXFUZFSpSErKydvilxzR6VTDaSAfChIJWtv0Qkziqg,15739
|
33
|
+
claude_mpm/agents/templates/agentic-coder-optimizer.json,sha256=RdEpSIAVQSPYQBnCElEA2Kp-4SxN8-8s7mgNZIbofoQ,15654
|
34
|
+
claude_mpm/agents/templates/api_qa.json,sha256=h0NzaAQs3Y0y8_YoQwIDFIxYexc2AH1o31q2zX1sRuo,6033
|
35
|
+
claude_mpm/agents/templates/clerk-ops.json,sha256=MIZhEHkvwsVE0NioC0FyxErek5XJ8cYizwn0-jfaFXg,17363
|
36
|
+
claude_mpm/agents/templates/code_analyzer.json,sha256=-LPk21n7HmTHatYvFy7yngmlpoImwMKMdBqZQHfN1kE,7664
|
37
|
+
claude_mpm/agents/templates/content-agent.json,sha256=KfE8ozTsLmQiJgKnX-6yH1bOhdHjif_qwFQLlg_y780,30203
|
38
|
+
claude_mpm/agents/templates/dart_engineer.json,sha256=toWoYgFbP-QNfgx4EhgVmcTMpTZiAuMxP08K6vMc8A0,22466
|
39
|
+
claude_mpm/agents/templates/data_engineer.json,sha256=U6X98Ze2kxTJmEL0e3x4eqTDj74hiA5ZTiPCmKS6Ch4,19809
|
40
|
+
claude_mpm/agents/templates/documentation.json,sha256=GWSOA63X38hua3pojx49IRRWcshJ4e9iFA1Kq0dv3m0,10273
|
41
|
+
claude_mpm/agents/templates/engineer.json,sha256=nLg8sJbSIVuKNgUKlS699FlzR9zhQeMmXfmPeoPaF8Q,5506
|
42
|
+
claude_mpm/agents/templates/gcp_ops_agent.json,sha256=0YCRTDHQa8fumggrZD8zESVQJIB1UIiIQPiWkYYJeI0,11060
|
43
|
+
claude_mpm/agents/templates/golang_engineer.json,sha256=6ONJV8hs257AYiHdG1ZKz7p1iCP9NpSpno5QTS_1kzw,12686
|
44
|
+
claude_mpm/agents/templates/imagemagick.json,sha256=dZRlUWgOjYsms93CnXshoO5w1o73uUJgcqUcnAMFDy0,17994
|
45
|
+
claude_mpm/agents/templates/local_ops_agent.json,sha256=pOrN6Dt8uWcefAIJ23lBI1-6RHuqTmWB3UzbHpLWGIc,17412
|
46
|
+
claude_mpm/agents/templates/memory_manager.json,sha256=dQJzrXuxpSUmS99854St14tyAlS70OKqMoGbOrQ9wi4,12980
|
47
|
+
claude_mpm/agents/templates/nextjs_engineer.json,sha256=4bXN4IkxgXvRoVyS0NPDa-cZ-LozbT3sCOD_0v47rEE,18444
|
48
|
+
claude_mpm/agents/templates/ops.json,sha256=S7TkcvaHFw7SJLYKwwm8eCvK0iMbvcHv7KTDBm7vvjc,11159
|
49
|
+
claude_mpm/agents/templates/php-engineer.json,sha256=YAQhUUEGL0LPoH2fvLsCO9R8jbt0MAV5odHdtAgJttA,12680
|
50
|
+
claude_mpm/agents/templates/product_owner.json,sha256=l-o__umM5c8pNaLGyzkRlkUtnl73h_BkaMWnMlnrPr4,40177
|
51
|
+
claude_mpm/agents/templates/project_organizer.json,sha256=_pXuLKju2Kw57ZHIqGGqL-9EeVIoFPQ-n0q-odRUGnU,7561
|
52
|
+
claude_mpm/agents/templates/prompt-engineer.json,sha256=dJKEejwDeamAgEzs3ibt46F9Cfec1CutdOB5-2HbIpQ,37601
|
53
|
+
claude_mpm/agents/templates/python_engineer.json,sha256=SeTvI1EXS-RTIJzVHX0zu0FSTNEOtnjr5ye1BkM_Iwg,43980
|
54
|
+
claude_mpm/agents/templates/qa.json,sha256=bccjpuC93a7msGei3LKsCe88UiFMQzk1W40TvEYIHOg,10661
|
55
|
+
claude_mpm/agents/templates/react_engineer.json,sha256=ihmqRAgiU81UVpw3ToSHvUigEZ7MMpoPhUbyXSmfbAo,13151
|
56
|
+
claude_mpm/agents/templates/refactoring_engineer.json,sha256=qmhZdl4aXNyQEjZ-yieSa2NfEaPPi7Z4bYUZ4ohWJiI,12130
|
57
|
+
claude_mpm/agents/templates/research.json,sha256=0i0FsMT13cQvynOXdtcWuVMrpFtV560Grr2N3mXUOvI,12406
|
58
|
+
claude_mpm/agents/templates/ruby-engineer.json,sha256=FDdEGTbXzzAwbeucXH9Ve91mCnD9fGh3J26zbrKi9qs,12412
|
59
|
+
claude_mpm/agents/templates/rust_engineer.json,sha256=0HKDrRGJxyvO5GWqby8d45Trw9IaAoJkeX5ZIkN10xE,12317
|
60
|
+
claude_mpm/agents/templates/security.json,sha256=ekwiFj-TzVDTEj70QfV5Oix1x7zAeCdl-zZ8-QGJIXg,24556
|
61
|
+
claude_mpm/agents/templates/ticketing.json,sha256=P2-rE8ABgRQ47zetLkPtqaADlntfrwqTu19TIWo8vLo,11903
|
62
|
+
claude_mpm/agents/templates/typescript_engineer.json,sha256=9olj0WtpCGnf1Vgjob0BSX3LHSH7Pg-FFdktBVAZqGw,18542
|
63
|
+
claude_mpm/agents/templates/vercel_ops_agent.json,sha256=AExlW33DGLzOxth3VJNy1q6oNa7YrZIKMwUuXTYH64g,27295
|
64
|
+
claude_mpm/agents/templates/version_control.json,sha256=O0rIhUCtbtttJMvxdV3M78JZu5mCuFMJO0cBRXiJCHk,14758
|
65
|
+
claude_mpm/agents/templates/web_qa.json,sha256=4ETk0jllw8CD0rTa-A2N98bwUBLMJNnpffgM9qGLM7A,28030
|
66
|
+
claude_mpm/agents/templates/web_ui.json,sha256=68PxF-bECG79oizDLzRxHDvd71EkekSuIrRKu-snEyg,35282
|
67
67
|
claude_mpm/agents/templates/.claude-mpm/memories/README.md,sha256=vEiG7cPjHRZfwX2IQB-i30ArO8zJyuxMJzHh8hnVZ6A,483
|
68
68
|
claude_mpm/agents/templates/.claude-mpm/memories/engineer_memories.md,sha256=KMZSJrQi-wHOwfl2C0m3A4PpC4QuBtDolAtVybGahKc,77
|
69
69
|
claude_mpm/agents/templates/logs/prompts/agent_engineer_20250826_014258_728.md,sha256=UBm4BycXtdaa-_l1VCh0alTGGOUSsnCbpKwbFuI-mUY,2219
|
@@ -377,7 +377,7 @@ claude_mpm/hooks/__init__.py,sha256=lLRTE1jvnHAMzwl0W-g-hcjo7C9GS-N7lDpZdpHYcB8,
|
|
377
377
|
claude_mpm/hooks/base_hook.py,sha256=wKbT_0g3dhvkA48pTz4GJpZQw8URhaT0LpZnCc7CEas,5026
|
378
378
|
claude_mpm/hooks/instruction_reinforcement.py,sha256=PnjfDSZ_72gbzHnRoug7qtXfpW5d1cxnmittpnPd2ws,11059
|
379
379
|
claude_mpm/hooks/kuzu_enrichment_hook.py,sha256=jghoEZX8fA6HZ1kM_5l93cuCyy-AMBjWp-nPW5EgaTk,8729
|
380
|
-
claude_mpm/hooks/kuzu_memory_hook.py,sha256=
|
380
|
+
claude_mpm/hooks/kuzu_memory_hook.py,sha256=mWQYcQt3_6s0EjjK1zZ6rv4EaUI-lCgiUu5bbNry2Zs,12696
|
381
381
|
claude_mpm/hooks/kuzu_response_hook.py,sha256=iyVrsOrGpp-VFOjKC5GUnXro088Ftex-vHmfHsmAUv8,6136
|
382
382
|
claude_mpm/hooks/memory_integration_hook.py,sha256=F8Hf35hmbmhxi-qHQJac4zoWIr60ob3PCHa4P_rbxO8,16635
|
383
383
|
claude_mpm/hooks/tool_call_interceptor.py,sha256=tYUBJHjbtaI5-HSWcz0aeUW0CaiQPypuDOTULQ0BCNI,7506
|
@@ -632,7 +632,7 @@ claude_mpm/services/infrastructure/monitoring/resources.py,sha256=7Mt9zvNAYGf7OT
|
|
632
632
|
claude_mpm/services/infrastructure/monitoring/service.py,sha256=guYB6rJtU18T2kPhZbKKg85l96lm2f7XVtPnBt1O3So,12613
|
633
633
|
claude_mpm/services/mcp_gateway/__init__.py,sha256=4fiMsd7i2QzZpEXCUeo0Vk_CXRi35TE94gPvwyuz2es,5099
|
634
634
|
claude_mpm/services/mcp_gateway/auto_configure.py,sha256=JNos01nGb2qXACXNHC-UkLccqQ-p8GFUElXqBLUQl7A,12163
|
635
|
-
claude_mpm/services/mcp_gateway/main.py,sha256=
|
635
|
+
claude_mpm/services/mcp_gateway/main.py,sha256=lczjLqieS5eHhwWO5VXlqURDLAgXgOg6i-724oa590A,18189
|
636
636
|
claude_mpm/services/mcp_gateway/config/__init__.py,sha256=MpFgHfaT3dQz5QyEdpfbulD6tXUOY325LkovAYsdkAg,386
|
637
637
|
claude_mpm/services/mcp_gateway/config/config_loader.py,sha256=jM0LCQGnyAezQHLqfLWtPn5P3GpGMxGltKlTIKCL24M,9427
|
638
638
|
claude_mpm/services/mcp_gateway/config/config_schema.py,sha256=eSPyHmYJWBpGxJ8l0vBjEGod_PEnbGyHi3fcNLS4mH0,9475
|
@@ -657,7 +657,7 @@ claude_mpm/services/mcp_gateway/tools/document_summarizer.py,sha256=F86qgDIFW2UX
|
|
657
657
|
claude_mpm/services/mcp_gateway/tools/external_mcp_services.py,sha256=PCw6egI7Vy7I-2l9ya9BZGusOdnQ3bY0uIJVSVnY_YA,18614
|
658
658
|
claude_mpm/services/mcp_gateway/tools/health_check_tool.py,sha256=SIrGt2uZGR4EGsH2_0UgkmHUV895M8zq9suNkRSteRA,16457
|
659
659
|
claude_mpm/services/mcp_gateway/tools/hello_world.py,sha256=L45ph8b0iLPpksrkf0ELrfl6CwVD3W3YLigwUKjIOoY,20291
|
660
|
-
claude_mpm/services/mcp_gateway/tools/kuzu_memory_service.py,sha256=
|
660
|
+
claude_mpm/services/mcp_gateway/tools/kuzu_memory_service.py,sha256=qc9vYJtN3OYXqb-aXZpkx3FtkM9ivUm9AcWKUgeGdG4,17745
|
661
661
|
claude_mpm/services/mcp_gateway/utils/__init__.py,sha256=Swz8V_TBTCz3u-J-ZRPM0rTbrqPgX1DBtW0fpXwa5K0,278
|
662
662
|
claude_mpm/services/mcp_gateway/utils/package_version_checker.py,sha256=BIq0kirCPZgWJHqhvDjMYrHN2ZjyCXFF1U9aSApw-xc,5245
|
663
663
|
claude_mpm/services/mcp_gateway/utils/update_preferences.py,sha256=CrmxistQvDDqfYxTy8Ea2mdRu9qQyun4-rPJJMvQnsE,4893
|
@@ -797,9 +797,9 @@ claude_mpm/utils/subprocess_utils.py,sha256=D0izRT8anjiUb_JG72zlJR_JAw1cDkb7kalN
|
|
797
797
|
claude_mpm/validation/__init__.py,sha256=YZhwE3mhit-lslvRLuwfX82xJ_k4haZeKmh4IWaVwtk,156
|
798
798
|
claude_mpm/validation/agent_validator.py,sha256=GprtAvu80VyMXcKGsK_VhYiXWA6BjKHv7O6HKx0AB9w,20917
|
799
799
|
claude_mpm/validation/frontmatter_validator.py,sha256=YpJlYNNYcV8u6hIOi3_jaRsDnzhbcQpjCBE6eyBKaFY,7076
|
800
|
-
claude_mpm-4.
|
801
|
-
claude_mpm-4.
|
802
|
-
claude_mpm-4.
|
803
|
-
claude_mpm-4.
|
804
|
-
claude_mpm-4.
|
805
|
-
claude_mpm-4.
|
800
|
+
claude_mpm-4.9.0.dist-info/licenses/LICENSE,sha256=lpaivOlPuBZW1ds05uQLJJswy8Rp_HMNieJEbFlqvLk,1072
|
801
|
+
claude_mpm-4.9.0.dist-info/METADATA,sha256=spXmDr3uBGSclzDSE5Clu2uTb4tQJ1bsMHcOpcf8r3Q,17584
|
802
|
+
claude_mpm-4.9.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
803
|
+
claude_mpm-4.9.0.dist-info/entry_points.txt,sha256=Vlw3GNi-OtTpKSrez04iNrPmxNxYDpIWxmJCxiZ5Tx8,526
|
804
|
+
claude_mpm-4.9.0.dist-info/top_level.txt,sha256=1nUg3FEaBySgm8t-s54jK5zoPnu3_eY6EP6IOlekyHA,11
|
805
|
+
claude_mpm-4.9.0.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|