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.
Files changed (47) hide show
  1. claude_mpm/VERSION +1 -1
  2. claude_mpm/agents/BASE_AGENT_TEMPLATE.md +118 -0
  3. claude_mpm/agents/BASE_PM.md +75 -1
  4. claude_mpm/agents/templates/agent-manager.json +4 -1
  5. claude_mpm/agents/templates/agentic-coder-optimizer.json +4 -1
  6. claude_mpm/agents/templates/api_qa.json +4 -1
  7. claude_mpm/agents/templates/clerk-ops.json +4 -1
  8. claude_mpm/agents/templates/code_analyzer.json +4 -1
  9. claude_mpm/agents/templates/content-agent.json +4 -1
  10. claude_mpm/agents/templates/dart_engineer.json +4 -1
  11. claude_mpm/agents/templates/data_engineer.json +4 -1
  12. claude_mpm/agents/templates/documentation.json +4 -1
  13. claude_mpm/agents/templates/engineer.json +4 -1
  14. claude_mpm/agents/templates/gcp_ops_agent.json +4 -1
  15. claude_mpm/agents/templates/golang_engineer.json +4 -1
  16. claude_mpm/agents/templates/imagemagick.json +4 -1
  17. claude_mpm/agents/templates/local_ops_agent.json +12 -2
  18. claude_mpm/agents/templates/memory_manager.json +4 -1
  19. claude_mpm/agents/templates/nextjs_engineer.json +13 -5
  20. claude_mpm/agents/templates/ops.json +4 -1
  21. claude_mpm/agents/templates/php-engineer.json +5 -2
  22. claude_mpm/agents/templates/product_owner.json +6 -3
  23. claude_mpm/agents/templates/project_organizer.json +4 -1
  24. claude_mpm/agents/templates/prompt-engineer.json +8 -1
  25. claude_mpm/agents/templates/python_engineer.json +18 -5
  26. claude_mpm/agents/templates/qa.json +4 -1
  27. claude_mpm/agents/templates/react_engineer.json +5 -2
  28. claude_mpm/agents/templates/refactoring_engineer.json +4 -1
  29. claude_mpm/agents/templates/research.json +4 -1
  30. claude_mpm/agents/templates/ruby-engineer.json +5 -2
  31. claude_mpm/agents/templates/rust_engineer.json +4 -1
  32. claude_mpm/agents/templates/security.json +4 -1
  33. claude_mpm/agents/templates/ticketing.json +4 -1
  34. claude_mpm/agents/templates/typescript_engineer.json +5 -2
  35. claude_mpm/agents/templates/vercel_ops_agent.json +4 -1
  36. claude_mpm/agents/templates/version_control.json +4 -1
  37. claude_mpm/agents/templates/web_qa.json +4 -1
  38. claude_mpm/agents/templates/web_ui.json +4 -1
  39. claude_mpm/hooks/kuzu_memory_hook.py +10 -2
  40. claude_mpm/services/mcp_gateway/main.py +9 -0
  41. claude_mpm/services/mcp_gateway/tools/kuzu_memory_service.py +25 -5
  42. {claude_mpm-4.8.3.dist-info → claude_mpm-4.9.0.dist-info}/METADATA +5 -4
  43. {claude_mpm-4.8.3.dist-info → claude_mpm-4.9.0.dist-info}/RECORD +47 -47
  44. {claude_mpm-4.8.3.dist-info → claude_mpm-4.9.0.dist-info}/WHEEL +0 -0
  45. {claude_mpm-4.8.3.dist-info → claude_mpm-4.9.0.dist-info}/entry_points.txt +0 -0
  46. {claude_mpm-4.8.3.dist-info → claude_mpm-4.9.0.dist-info}/licenses/LICENSE +0 -0
  47. {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 installed
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.info("Kuzu-memory not found. Install with: pipx install kuzu-memory")
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
- """Install kuzu-memory using pipx (preferred over pip)."""
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
- """Initialize the kuzu-memory service."""
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 installed, attempting installation..."
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(f"Failed to install {self.package_name}")
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.8.3
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, kuzu-memory)
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
- - Without optional dependencies, MCP services auto-install on first use via pipx
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=AEVPKSR95YHO5i3IZ6Mwxvzasys23MsCiBd5USQlVYs,6
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=aK9qxS1FRpm_8VaB5GI2I6YA9Wr8dGHuea_txMFe44M,5524
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=0n8b45wdRMb9ODLd8tiUu7fBP-UR33Bj0LS-AzHLXNE,3960
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=Y_O1ZCLGgIfW_v-2kNBRQPYzeCvRKkHnCoZH5CVoH6c,15492
33
- claude_mpm/agents/templates/agentic-coder-optimizer.json,sha256=injWgR0aHjFh88wLnrxNiXxm6icEHeNOknL5dckj1R8,15407
34
- claude_mpm/agents/templates/api_qa.json,sha256=FxDFIDsihrw8acBugsiY9RtkNtKF0fUT20f9ox6jihU,5786
35
- claude_mpm/agents/templates/clerk-ops.json,sha256=4xB-ndC-hpOvrjJTeVLZeSrN1hTyrDf3RbaiamZQvTU,17116
36
- claude_mpm/agents/templates/code_analyzer.json,sha256=5t5a9gzKW8BDv9-GgZx2dhEJ0dPlu5YO3zuoOJIuWHQ,7417
37
- claude_mpm/agents/templates/content-agent.json,sha256=xLgZdtYTab-BM8a9L0szJap6_6tM_xxCZxOdR5wfp1I,29956
38
- claude_mpm/agents/templates/dart_engineer.json,sha256=-GSr98Ut_raIZdL73Wcv5lMK2JG4mGhzAVnPjVYIxX4,22219
39
- claude_mpm/agents/templates/data_engineer.json,sha256=FdjmqOB1cc-cDDOV7IYjOoiavnGNxXT0_7ICkRApey4,19562
40
- claude_mpm/agents/templates/documentation.json,sha256=3rk1hZmqG65CKOZ8RwVAPfQe2a4b5xu_K29RS4tGeK8,10026
41
- claude_mpm/agents/templates/engineer.json,sha256=1JDcpBkO3U5gBZBWi2d1LojUuSv390m8H84W04fXEFM,5259
42
- claude_mpm/agents/templates/gcp_ops_agent.json,sha256=ta9IvRt94xmIhyS1URAv3KnOlgeS0qzUWYg4LmmqpSk,10813
43
- claude_mpm/agents/templates/golang_engineer.json,sha256=EOWf0mTqBA4Nfd7Yn-WFR4iDi75fSVQmnYktRX2qzv4,12439
44
- claude_mpm/agents/templates/imagemagick.json,sha256=AZnOVAoin79hDqW9wbCSPtnrTTsyGAcoV1X0wdbQASk,17747
45
- claude_mpm/agents/templates/local_ops_agent.json,sha256=RJTAWTV2V3VWxurkFaJWonw647ie01Ai0_yAiW6_GKs,17090
46
- claude_mpm/agents/templates/memory_manager.json,sha256=h1DCAn5Wd8TbTzCGjqZ9I8LgGqVgPu_81TEvGyL5YqY,12733
47
- claude_mpm/agents/templates/nextjs_engineer.json,sha256=xSTsZA5GmcA1hGxsZ51OQLzLftmHzjP2D9kQP4xP8hc,13076
48
- claude_mpm/agents/templates/ops.json,sha256=z6qQyMOxuMMqL8kL8lsh0BsRa0kLgAozVsz-K6sOmkA,10912
49
- claude_mpm/agents/templates/php-engineer.json,sha256=KghgrKHNE7oaDphIUN1GzQWMAB0WW_krvQ53JHX5xd4,12403
50
- claude_mpm/agents/templates/product_owner.json,sha256=auql9BNZrur3NAoUJ74bwa-St2C-ZEAAhwM1c1sflV8,39742
51
- claude_mpm/agents/templates/project_organizer.json,sha256=-u0JqiEjx9igxFbfHWwW8RLvhtPZld6FS2j6Hys9mA8,7314
52
- claude_mpm/agents/templates/prompt-engineer.json,sha256=WWBGnJxQPbixNUyDXDxuhaKfZ9KdB8bYwk2tT8HZ4UM,37300
53
- claude_mpm/agents/templates/python_engineer.json,sha256=HbUtyCW2j8RKtpHEAKCR6vLU1VIoq3wX-4Zvdbu2HdI,33336
54
- claude_mpm/agents/templates/qa.json,sha256=B_pWrC78G3lOfxmKweOzbdG9fYOG42w6gSJTCkabDQs,10414
55
- claude_mpm/agents/templates/react_engineer.json,sha256=heW2yT65_7ku-99HCp3s8sKzdjuKNQOwRxZuKY1QI40,12898
56
- claude_mpm/agents/templates/refactoring_engineer.json,sha256=oik5Hufp8W5K2BJIBx-d765XU6PLI7YouiPaKThoLqA,11883
57
- claude_mpm/agents/templates/research.json,sha256=32YSundUnEKEhDmXIPV561rTz6fHwDKvcOtwsk0_PAc,12159
58
- claude_mpm/agents/templates/ruby-engineer.json,sha256=ZjVaPqrvkC2KhpM-MY_X_aZSvohscyb7gY1A3eI-ioI,12135
59
- claude_mpm/agents/templates/rust_engineer.json,sha256=OKlgVvSsjRR7nu9fylqKBkn3sfs6XxRSQpVMd6_YbiM,12070
60
- claude_mpm/agents/templates/security.json,sha256=a2txld126oF_9hGAxQKt859JBB25yrVoEFIMeKILRUc,24309
61
- claude_mpm/agents/templates/ticketing.json,sha256=qda7sOKnsOEtz0BGX2clDcYFl_82KVr9hZdzUET-z8k,11656
62
- claude_mpm/agents/templates/typescript_engineer.json,sha256=ULewwS8p61v7-BNtM8yNRbPGb9c6QitY15XAN37Oc6o,18250
63
- claude_mpm/agents/templates/vercel_ops_agent.json,sha256=2N8fksufcwvdFVRUkThfZllfJ7yFm1JgGbRaOaIpSD0,27048
64
- claude_mpm/agents/templates/version_control.json,sha256=WETyIYty0XSblvHJR9pXuH1NqmhRCYJ9lrxtZZWoAhs,14511
65
- claude_mpm/agents/templates/web_qa.json,sha256=hYUaug9B6ol8zBOcNSZ7eI0XZGC-SNDLNTzXHGWKCWc,27783
66
- claude_mpm/agents/templates/web_ui.json,sha256=hApFnhb8W3rU-ROJYdZnFcD1gvdVLMUb2BfqipiYCj8,35035
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=ockbKXXc69Yiryq2uWNCAUpSxtN8eqAec9i5BB1MRaI,12265
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=7--1VAPiW6vRkE4Sf4SFckh24n0_20WDVAMPENeY8vo,17822
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=Js2YI_jOd8lOlMYifeVzVwQEwVOViK1iIQNqpY6XXKs,16830
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.8.3.dist-info/licenses/LICENSE,sha256=lpaivOlPuBZW1ds05uQLJJswy8Rp_HMNieJEbFlqvLk,1072
801
- claude_mpm-4.8.3.dist-info/METADATA,sha256=Rob3oaSdY-f6qtH7rjXzCawVCHgEFmbhOP3NfAemq0A,17517
802
- claude_mpm-4.8.3.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
803
- claude_mpm-4.8.3.dist-info/entry_points.txt,sha256=Vlw3GNi-OtTpKSrez04iNrPmxNxYDpIWxmJCxiZ5Tx8,526
804
- claude_mpm-4.8.3.dist-info/top_level.txt,sha256=1nUg3FEaBySgm8t-s54jK5zoPnu3_eY6EP6IOlekyHA,11
805
- claude_mpm-4.8.3.dist-info/RECORD,,
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,,