@mytechtoday/augment-extensions 0.2.0 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +614 -39
- package/augment-extensions/coding-standards/bash/README.md +196 -0
- package/augment-extensions/coding-standards/bash/module.json +163 -0
- package/augment-extensions/coding-standards/bash/rules/naming-conventions.md +336 -0
- package/augment-extensions/coding-standards/bash/rules/universal-standards.md +289 -0
- package/augment-extensions/coding-standards/css/README.md +40 -0
- package/augment-extensions/coding-standards/css/examples/css-examples.css +550 -0
- package/augment-extensions/coding-standards/css/module.json +44 -0
- package/augment-extensions/coding-standards/css/rules/css-modern-features.md +448 -0
- package/augment-extensions/coding-standards/css/rules/css-standards.md +492 -0
- package/augment-extensions/coding-standards/html/README.md +40 -0
- package/augment-extensions/coding-standards/html/examples/html-examples.html +267 -0
- package/augment-extensions/coding-standards/html/examples/responsive-layout.html +505 -0
- package/augment-extensions/coding-standards/html/module.json +44 -0
- package/augment-extensions/coding-standards/html/rules/html-standards.md +349 -0
- package/augment-extensions/coding-standards/html-css-js/README.md +194 -0
- package/augment-extensions/coding-standards/html-css-js/examples/async-examples.js +487 -0
- package/augment-extensions/coding-standards/html-css-js/examples/css-examples.css +550 -0
- package/augment-extensions/coding-standards/html-css-js/examples/dom-examples.js +667 -0
- package/augment-extensions/coding-standards/html-css-js/examples/html-examples.html +267 -0
- package/augment-extensions/coding-standards/html-css-js/examples/javascript-examples.js +612 -0
- package/augment-extensions/coding-standards/html-css-js/examples/responsive-layout.html +505 -0
- package/augment-extensions/coding-standards/html-css-js/module.json +48 -0
- package/augment-extensions/coding-standards/html-css-js/rules/async-patterns.md +515 -0
- package/augment-extensions/coding-standards/html-css-js/rules/css-modern-features.md +448 -0
- package/augment-extensions/coding-standards/html-css-js/rules/css-standards.md +492 -0
- package/augment-extensions/coding-standards/html-css-js/rules/dom-manipulation.md +439 -0
- package/augment-extensions/coding-standards/html-css-js/rules/html-standards.md +349 -0
- package/augment-extensions/coding-standards/html-css-js/rules/javascript-standards.md +486 -0
- package/augment-extensions/coding-standards/html-css-js/rules/performance.md +463 -0
- package/augment-extensions/coding-standards/html-css-js/rules/tooling.md +543 -0
- package/augment-extensions/coding-standards/js/README.md +46 -0
- package/augment-extensions/coding-standards/js/examples/async-examples.js +487 -0
- package/augment-extensions/coding-standards/js/examples/dom-examples.js +667 -0
- package/augment-extensions/coding-standards/js/examples/javascript-examples.js +612 -0
- package/augment-extensions/coding-standards/js/module.json +49 -0
- package/augment-extensions/coding-standards/js/rules/async-patterns.md +515 -0
- package/augment-extensions/coding-standards/js/rules/dom-manipulation.md +439 -0
- package/augment-extensions/coding-standards/js/rules/javascript-standards.md +486 -0
- package/augment-extensions/coding-standards/js/rules/performance.md +463 -0
- package/augment-extensions/coding-standards/js/rules/tooling.md +543 -0
- package/augment-extensions/coding-standards/php/README.md +248 -0
- package/augment-extensions/coding-standards/php/examples/api-endpoint-example.php +204 -0
- package/augment-extensions/coding-standards/php/examples/cli-command-example.php +206 -0
- package/augment-extensions/coding-standards/php/examples/legacy-refactoring-example.php +234 -0
- package/augment-extensions/coding-standards/php/examples/web-application-example.php +211 -0
- package/augment-extensions/coding-standards/php/examples/woocommerce-extension-example.php +215 -0
- package/augment-extensions/coding-standards/php/examples/wordpress-plugin-example.php +189 -0
- package/augment-extensions/coding-standards/php/module.json +166 -0
- package/augment-extensions/coding-standards/php/rules/api-development.md +480 -0
- package/augment-extensions/coding-standards/php/rules/category-configuration.md +332 -0
- package/augment-extensions/coding-standards/php/rules/cli-tools.md +472 -0
- package/augment-extensions/coding-standards/php/rules/cms-integration.md +561 -0
- package/augment-extensions/coding-standards/php/rules/code-quality.md +402 -0
- package/augment-extensions/coding-standards/php/rules/documentation.md +425 -0
- package/augment-extensions/coding-standards/php/rules/ecommerce.md +627 -0
- package/augment-extensions/coding-standards/php/rules/error-handling.md +336 -0
- package/augment-extensions/coding-standards/php/rules/legacy-migration.md +677 -0
- package/augment-extensions/coding-standards/php/rules/naming-conventions.md +279 -0
- package/augment-extensions/coding-standards/php/rules/performance.md +392 -0
- package/augment-extensions/coding-standards/php/rules/psr-standards.md +186 -0
- package/augment-extensions/coding-standards/php/rules/security.md +358 -0
- package/augment-extensions/coding-standards/php/rules/testing.md +403 -0
- package/augment-extensions/coding-standards/php/rules/type-declarations.md +331 -0
- package/augment-extensions/coding-standards/php/rules/web-applications.md +426 -0
- package/augment-extensions/coding-standards/powershell/README.md +154 -0
- package/augment-extensions/coding-standards/powershell/examples/admin-example.ps1 +272 -0
- package/augment-extensions/coding-standards/powershell/examples/automation-example.ps1 +173 -0
- package/augment-extensions/coding-standards/powershell/examples/cloud-example.ps1 +243 -0
- package/augment-extensions/coding-standards/powershell/examples/cross-platform-example.ps1 +297 -0
- package/augment-extensions/coding-standards/powershell/examples/dsc-example.ps1 +224 -0
- package/augment-extensions/coding-standards/powershell/examples/legacy-migration-example.ps1 +340 -0
- package/augment-extensions/coding-standards/powershell/examples/module-example.psm1 +255 -0
- package/augment-extensions/coding-standards/powershell/module.json +165 -0
- package/augment-extensions/coding-standards/powershell/rules/administrative-tools.md +439 -0
- package/augment-extensions/coding-standards/powershell/rules/automation-scripts.md +240 -0
- package/augment-extensions/coding-standards/powershell/rules/cloud-orchestration.md +384 -0
- package/augment-extensions/coding-standards/powershell/rules/configuration-schema.md +383 -0
- package/augment-extensions/coding-standards/powershell/rules/cross-platform-scripts.md +482 -0
- package/augment-extensions/coding-standards/powershell/rules/dsc-configurations.md +296 -0
- package/augment-extensions/coding-standards/powershell/rules/error-handling.md +314 -0
- package/augment-extensions/coding-standards/powershell/rules/legacy-migrations.md +466 -0
- package/augment-extensions/coding-standards/powershell/rules/modules-functions.md +244 -0
- package/augment-extensions/coding-standards/powershell/rules/naming-conventions.md +266 -0
- package/augment-extensions/coding-standards/powershell/rules/performance-optimization.md +209 -0
- package/augment-extensions/coding-standards/powershell/rules/security-practices.md +314 -0
- package/augment-extensions/coding-standards/powershell/rules/testing-guidelines.md +268 -0
- package/augment-extensions/coding-standards/powershell/rules/universal-standards.md +197 -0
- package/augment-extensions/coding-standards/python/README.md +12 -8
- package/augment-extensions/coding-standards/python/examples/best-practices.py +373 -0
- package/augment-extensions/coding-standards/python/module.json +8 -4
- package/augment-extensions/coding-standards/python/rules/async-patterns.md +884 -0
- package/augment-extensions/coding-standards/python/rules/documentation.md +831 -0
- package/augment-extensions/coding-standards/python/rules/error-handling.md +855 -68
- package/augment-extensions/coding-standards/python/rules/testing.md +409 -0
- package/augment-extensions/coding-standards/python/rules/tooling.md +446 -0
- package/augment-extensions/coding-standards/python/rules/type-hints.md +115 -50
- package/augment-extensions/collections/html-css-js/README.md +82 -0
- package/augment-extensions/collections/html-css-js/collection.json +41 -0
- package/augment-extensions/domain-rules/database/README.md +161 -0
- package/augment-extensions/domain-rules/database/examples/flat-database-example.md +793 -0
- package/augment-extensions/domain-rules/database/examples/hybrid-database-example.md +1132 -0
- package/augment-extensions/domain-rules/database/examples/nosql-document-example.md +868 -0
- package/augment-extensions/domain-rules/database/examples/nosql-graph-example.md +805 -0
- package/augment-extensions/domain-rules/database/examples/relational-schema-example.md +621 -0
- package/augment-extensions/domain-rules/database/examples/vector-database-example.md +965 -0
- package/augment-extensions/domain-rules/database/module.json +28 -0
- package/augment-extensions/domain-rules/database/rules/flat-databases.md +624 -0
- package/augment-extensions/domain-rules/database/rules/nosql-databases.md +588 -0
- package/augment-extensions/domain-rules/database/rules/nosql-document-stores.md +856 -0
- package/augment-extensions/domain-rules/database/rules/nosql-graph-databases.md +778 -0
- package/augment-extensions/domain-rules/database/rules/nosql-key-value-stores.md +963 -0
- package/augment-extensions/domain-rules/database/rules/performance-optimization.md +1076 -0
- package/augment-extensions/domain-rules/database/rules/relational-databases.md +697 -0
- package/augment-extensions/domain-rules/database/rules/relational-indexing.md +671 -0
- package/augment-extensions/domain-rules/database/rules/relational-query-optimization.md +607 -0
- package/augment-extensions/domain-rules/database/rules/relational-schema-design.md +907 -0
- package/augment-extensions/domain-rules/database/rules/relational-transactions.md +783 -0
- package/augment-extensions/domain-rules/database/rules/security-standards.md +980 -0
- package/augment-extensions/domain-rules/database/rules/universal-best-practices.md +485 -0
- package/augment-extensions/domain-rules/database/rules/vector-databases.md +521 -0
- package/augment-extensions/domain-rules/database/rules/vector-embeddings.md +858 -0
- package/augment-extensions/domain-rules/database/rules/vector-indexing.md +934 -0
- package/augment-extensions/domain-rules/design/color/themes/catppuccin-latte/README.md +23 -0
- package/augment-extensions/domain-rules/design/color/themes/catppuccin-latte/module.json +26 -0
- package/augment-extensions/domain-rules/design/color/themes/catppuccin-mocha/README.md +23 -0
- package/augment-extensions/domain-rules/design/color/themes/catppuccin-mocha/module.json +26 -0
- package/augment-extensions/domain-rules/design/color/themes/dracula/README.md +23 -0
- package/augment-extensions/domain-rules/design/color/themes/dracula/module.json +26 -0
- package/augment-extensions/domain-rules/design/color/themes/gruvbox-dark/README.md +23 -0
- package/augment-extensions/domain-rules/design/color/themes/gruvbox-dark/module.json +26 -0
- package/augment-extensions/domain-rules/design/color/themes/gruvbox-light/README.md +23 -0
- package/augment-extensions/domain-rules/design/color/themes/gruvbox-light/module.json +26 -0
- package/augment-extensions/domain-rules/design/color/themes/high-contrast/README.md +27 -0
- package/augment-extensions/domain-rules/design/color/themes/high-contrast/module.json +26 -0
- package/augment-extensions/domain-rules/design/color/themes/monokai/README.md +23 -0
- package/augment-extensions/domain-rules/design/color/themes/monokai/module.json +26 -0
- package/augment-extensions/domain-rules/design/color/themes/nord/README.md +23 -0
- package/augment-extensions/domain-rules/design/color/themes/nord/module.json +26 -0
- package/augment-extensions/domain-rules/design/color/themes/one-dark/README.md +23 -0
- package/augment-extensions/domain-rules/design/color/themes/one-dark/module.json +26 -0
- package/augment-extensions/domain-rules/design/color/themes/one-light/README.md +23 -0
- package/augment-extensions/domain-rules/design/color/themes/one-light/module.json +26 -0
- package/augment-extensions/domain-rules/design/color/themes/solarized-dark/README.md +23 -0
- package/augment-extensions/domain-rules/design/color/themes/solarized-dark/module.json +26 -0
- package/augment-extensions/domain-rules/design/color/themes/solarized-light/README.md +23 -0
- package/augment-extensions/domain-rules/design/color/themes/solarized-light/module.json +26 -0
- package/augment-extensions/domain-rules/design/color/themes/tokyo-night/README.md +23 -0
- package/augment-extensions/domain-rules/design/color/themes/tokyo-night/module.json +26 -0
- package/augment-extensions/domain-rules/marketing-standards/seo-sales-marketing/README.md +136 -0
- package/augment-extensions/domain-rules/marketing-standards/seo-sales-marketing/SCHEMA-VALIDATION-REPORT.md +216 -0
- package/augment-extensions/domain-rules/marketing-standards/seo-sales-marketing/examples/brand-kit-example.yaml +292 -0
- package/augment-extensions/domain-rules/marketing-standards/seo-sales-marketing/examples/campaign-brief-example.yaml +389 -0
- package/augment-extensions/domain-rules/marketing-standards/seo-sales-marketing/examples/content-calendar-example.yaml +643 -0
- package/augment-extensions/domain-rules/marketing-standards/seo-sales-marketing/examples/email-newsletter-example.md +376 -0
- package/augment-extensions/domain-rules/marketing-standards/seo-sales-marketing/examples/landing-page-example.md +934 -0
- package/augment-extensions/domain-rules/marketing-standards/seo-sales-marketing/examples/ppc-ad-copy-example.md +301 -0
- package/augment-extensions/domain-rules/marketing-standards/seo-sales-marketing/examples/seo-blog-post-example.md +347 -0
- package/augment-extensions/domain-rules/marketing-standards/seo-sales-marketing/examples/social-media-campaign-example.md +606 -0
- package/augment-extensions/domain-rules/marketing-standards/seo-sales-marketing/module.json +50 -0
- package/augment-extensions/domain-rules/marketing-standards/seo-sales-marketing/rules/affiliate-influencer-marketing.md +593 -0
- package/augment-extensions/domain-rules/marketing-standards/seo-sales-marketing/rules/asset-management.md +418 -0
- package/augment-extensions/domain-rules/marketing-standards/seo-sales-marketing/rules/brand-consistency.md +210 -0
- package/augment-extensions/domain-rules/marketing-standards/seo-sales-marketing/rules/content-marketing.md +337 -0
- package/augment-extensions/domain-rules/marketing-standards/seo-sales-marketing/rules/conversion-optimization.md +455 -0
- package/augment-extensions/domain-rules/marketing-standards/seo-sales-marketing/rules/direct-sales.md +499 -0
- package/augment-extensions/domain-rules/marketing-standards/seo-sales-marketing/rules/email-marketing.md +439 -0
- package/augment-extensions/domain-rules/marketing-standards/seo-sales-marketing/rules/legal-compliance.md +227 -0
- package/augment-extensions/domain-rules/marketing-standards/seo-sales-marketing/rules/ppc-advertising.md +569 -0
- package/augment-extensions/domain-rules/marketing-standards/seo-sales-marketing/rules/seo-optimization.md +470 -0
- package/augment-extensions/domain-rules/marketing-standards/seo-sales-marketing/rules/social-media-marketing.md +414 -0
- package/augment-extensions/domain-rules/marketing-standards/seo-sales-marketing/rules/universal-marketing.md +177 -0
- package/augment-extensions/domain-rules/marketing-standards/seo-sales-marketing/schemas/asset-inventory.schema.json +247 -0
- package/augment-extensions/domain-rules/marketing-standards/seo-sales-marketing/schemas/brand-kit.schema.json +326 -0
- package/augment-extensions/domain-rules/marketing-standards/seo-sales-marketing/schemas/campaign-brief.schema.json +342 -0
- package/augment-extensions/domain-rules/marketing-standards/seo-sales-marketing/schemas/color-palette.schema.json +223 -0
- package/augment-extensions/domain-rules/marketing-standards/seo-sales-marketing/schemas/content-template.schema.json +383 -0
- package/augment-extensions/domain-rules/mcp/README.md +150 -0
- package/augment-extensions/domain-rules/mcp/examples/compressed-example.md +522 -0
- package/augment-extensions/domain-rules/mcp/examples/graph-augmented-example.md +520 -0
- package/augment-extensions/domain-rules/mcp/examples/hybrid-example.md +570 -0
- package/augment-extensions/domain-rules/mcp/examples/state-based-example.md +427 -0
- package/augment-extensions/domain-rules/mcp/examples/token-based-example.md +435 -0
- package/augment-extensions/domain-rules/mcp/examples/vector-based-example.md +502 -0
- package/augment-extensions/domain-rules/mcp/module.json +49 -0
- package/augment-extensions/domain-rules/mcp/rules/compressed-mcp.md +595 -0
- package/augment-extensions/domain-rules/mcp/rules/configuration.md +345 -0
- package/augment-extensions/domain-rules/mcp/rules/graph-augmented-mcp.md +687 -0
- package/augment-extensions/domain-rules/mcp/rules/hybrid-mcp.md +636 -0
- package/augment-extensions/domain-rules/mcp/rules/state-based-mcp.md +484 -0
- package/augment-extensions/domain-rules/mcp/rules/testing-validation.md +360 -0
- package/augment-extensions/domain-rules/mcp/rules/token-based-mcp.md +393 -0
- package/augment-extensions/domain-rules/mcp/rules/universal-rules.md +194 -0
- package/augment-extensions/domain-rules/mcp/rules/vector-based-mcp.md +625 -0
- package/augment-extensions/workflows/beads/module.json +4 -3
- package/augment-extensions/workflows/beads-integration/IMPLEMENTATION-STATUS.md +145 -0
- package/augment-extensions/workflows/beads-integration/README.md +143 -0
- package/augment-extensions/workflows/beads-integration/config/defaults.json +32 -0
- package/augment-extensions/workflows/beads-integration/config/schema.json +140 -0
- package/augment-extensions/workflows/beads-integration/examples/basic-task-generation.md +293 -0
- package/augment-extensions/workflows/beads-integration/module.json +75 -0
- package/augment-extensions/workflows/beads-integration/rules/core-rules.md +219 -0
- package/augment-extensions/workflows/beads-integration/rules/effectiveness-standards.md +256 -0
- package/augment-extensions/workflows/beads-integration/rules/task-generation.md +607 -0
- package/augment-extensions/workflows/database/README.md +195 -0
- package/augment-extensions/workflows/database/ai-prompt-testing.md +295 -0
- package/augment-extensions/workflows/database/examples/migration-example.md +498 -0
- package/augment-extensions/workflows/database/examples/optimization-example.md +496 -0
- package/augment-extensions/workflows/database/examples/schema-design-example.md +444 -0
- package/augment-extensions/workflows/database/module.json +42 -0
- package/augment-extensions/workflows/database/rules/data-migration.md +249 -0
- package/augment-extensions/workflows/database/rules/documentation-standards.md +339 -0
- package/augment-extensions/workflows/database/rules/migration-workflow.md +352 -0
- package/augment-extensions/workflows/database/rules/optimization-workflow.md +435 -0
- package/augment-extensions/workflows/database/rules/schema-design-workflow.md +535 -0
- package/augment-extensions/workflows/database/rules/testing-patterns.md +305 -0
- package/augment-extensions/workflows/database/rules/workflow.md +458 -0
- package/augment-extensions/workflows/openspec/module.json +4 -3
- package/augment-extensions/writing-standards/screenplay/README.md +300 -0
- package/augment-extensions/writing-standards/screenplay/_templates/README.md +121 -0
- package/augment-extensions/writing-standards/screenplay/_templates/genre-template.md +153 -0
- package/augment-extensions/writing-standards/screenplay/_templates/style-template.md +243 -0
- package/augment-extensions/writing-standards/screenplay/_templates/theme-template.md +213 -0
- package/augment-extensions/writing-standards/screenplay/examples/aaa-hollywood-scene.fountain +164 -0
- package/augment-extensions/writing-standards/screenplay/examples/beat-sheet-example.yaml +95 -0
- package/augment-extensions/writing-standards/screenplay/examples/character-profile-example.yaml +116 -0
- package/augment-extensions/writing-standards/screenplay/examples/commercial-30sec.fountain +151 -0
- package/augment-extensions/writing-standards/screenplay/examples/independent-monologue.fountain +67 -0
- package/augment-extensions/writing-standards/screenplay/examples/news-segment.fountain +142 -0
- package/augment-extensions/writing-standards/screenplay/examples/plot-outline-example.yaml +184 -0
- package/augment-extensions/writing-standards/screenplay/examples/tv-episode-teaser.fountain +204 -0
- package/augment-extensions/writing-standards/screenplay/genres/README.md +181 -0
- package/augment-extensions/writing-standards/screenplay/genres/examples/.gitkeep +2 -0
- package/augment-extensions/writing-standards/screenplay/genres/module.json +70 -0
- package/augment-extensions/writing-standards/screenplay/genres/rules/.gitkeep +2 -0
- package/augment-extensions/writing-standards/screenplay/genres/rules/action.md +399 -0
- package/augment-extensions/writing-standards/screenplay/genres/rules/adventure.md +407 -0
- package/augment-extensions/writing-standards/screenplay/genres/rules/animation.md +293 -0
- package/augment-extensions/writing-standards/screenplay/genres/rules/biographical.md +293 -0
- package/augment-extensions/writing-standards/screenplay/genres/rules/comedy.md +401 -0
- package/augment-extensions/writing-standards/screenplay/genres/rules/documentary.md +293 -0
- package/augment-extensions/writing-standards/screenplay/genres/rules/drama.md +409 -0
- package/augment-extensions/writing-standards/screenplay/genres/rules/fantasy.md +293 -0
- package/augment-extensions/writing-standards/screenplay/genres/rules/historical.md +293 -0
- package/augment-extensions/writing-standards/screenplay/genres/rules/horror.md +268 -0
- package/augment-extensions/writing-standards/screenplay/genres/rules/musical.md +294 -0
- package/augment-extensions/writing-standards/screenplay/genres/rules/mystery.md +293 -0
- package/augment-extensions/writing-standards/screenplay/genres/rules/noir.md +294 -0
- package/augment-extensions/writing-standards/screenplay/genres/rules/romance.md +293 -0
- package/augment-extensions/writing-standards/screenplay/genres/rules/sci-fi.md +289 -0
- package/augment-extensions/writing-standards/screenplay/genres/rules/superhero.md +293 -0
- package/augment-extensions/writing-standards/screenplay/genres/rules/thriller.md +294 -0
- package/augment-extensions/writing-standards/screenplay/genres/rules/western.md +293 -0
- package/augment-extensions/writing-standards/screenplay/module.json +124 -0
- package/augment-extensions/writing-standards/screenplay/rules/aaa-hollywood-films.md +339 -0
- package/augment-extensions/writing-standards/screenplay/rules/ai-integration-testing.md +329 -0
- package/augment-extensions/writing-standards/screenplay/rules/character-development.md +169 -0
- package/augment-extensions/writing-standards/screenplay/rules/commercials.md +437 -0
- package/augment-extensions/writing-standards/screenplay/rules/dialogue-writing.md +263 -0
- package/augment-extensions/writing-standards/screenplay/rules/diversity-inclusion.md +261 -0
- package/augment-extensions/writing-standards/screenplay/rules/examples-guide.md +315 -0
- package/augment-extensions/writing-standards/screenplay/rules/formatting-validation.md +413 -0
- package/augment-extensions/writing-standards/screenplay/rules/fountain-format.md +372 -0
- package/augment-extensions/writing-standards/screenplay/rules/independent-films.md +374 -0
- package/augment-extensions/writing-standards/screenplay/rules/live-tv-productions.md +443 -0
- package/augment-extensions/writing-standards/screenplay/rules/narrative-structures.md +207 -0
- package/augment-extensions/writing-standards/screenplay/rules/news-broadcasts.md +444 -0
- package/augment-extensions/writing-standards/screenplay/rules/pacing-timing.md +331 -0
- package/augment-extensions/writing-standards/screenplay/rules/quality-review-checklist.md +334 -0
- package/augment-extensions/writing-standards/screenplay/rules/quick-reference.md +299 -0
- package/augment-extensions/writing-standards/screenplay/rules/screen-continuity.md +263 -0
- package/augment-extensions/writing-standards/screenplay/rules/streaming-content.md +412 -0
- package/augment-extensions/writing-standards/screenplay/rules/trope-management.md +370 -0
- package/augment-extensions/writing-standards/screenplay/rules/tv-series.md +374 -0
- package/augment-extensions/writing-standards/screenplay/rules/universal-formatting.md +339 -0
- package/augment-extensions/writing-standards/screenplay/rules/vscode-integration.md +277 -0
- package/augment-extensions/writing-standards/screenplay/rules/web-content.md +393 -0
- package/augment-extensions/writing-standards/screenplay/schemas/beat-sheet.json +332 -0
- package/augment-extensions/writing-standards/screenplay/schemas/character-profile.json +247 -0
- package/augment-extensions/writing-standards/screenplay/schemas/feature-selection.json +200 -0
- package/augment-extensions/writing-standards/screenplay/schemas/plot-outline.json +233 -0
- package/augment-extensions/writing-standards/screenplay/schemas/screenplay-config.json +245 -0
- package/augment-extensions/writing-standards/screenplay/schemas/trope-inventory.json +221 -0
- package/augment-extensions/writing-standards/screenplay/styles/README.md +159 -0
- package/augment-extensions/writing-standards/screenplay/styles/examples/.gitkeep +2 -0
- package/augment-extensions/writing-standards/screenplay/styles/examples/style-applications.md +1449 -0
- package/augment-extensions/writing-standards/screenplay/styles/module.json +64 -0
- package/augment-extensions/writing-standards/screenplay/styles/rules/.gitkeep +2 -0
- package/augment-extensions/writing-standards/screenplay/styles/rules/dialogue-centric.md +520 -0
- package/augment-extensions/writing-standards/screenplay/styles/rules/ensemble.md +499 -0
- package/augment-extensions/writing-standards/screenplay/styles/rules/epic.md +497 -0
- package/augment-extensions/writing-standards/screenplay/styles/rules/experimental.md +492 -0
- package/augment-extensions/writing-standards/screenplay/styles/rules/flashback.md +509 -0
- package/augment-extensions/writing-standards/screenplay/styles/rules/linear.md +490 -0
- package/augment-extensions/writing-standards/screenplay/styles/rules/minimalist.md +499 -0
- package/augment-extensions/writing-standards/screenplay/styles/rules/non-linear.md +501 -0
- package/augment-extensions/writing-standards/screenplay/styles/rules/poetic.md +499 -0
- package/augment-extensions/writing-standards/screenplay/styles/rules/realistic.md +498 -0
- package/augment-extensions/writing-standards/screenplay/styles/rules/satirical.md +499 -0
- package/augment-extensions/writing-standards/screenplay/styles/rules/surreal.md +508 -0
- package/augment-extensions/writing-standards/screenplay/styles/rules/voice-over.md +500 -0
- package/augment-extensions/writing-standards/screenplay/themes/README.md +158 -0
- package/augment-extensions/writing-standards/screenplay/themes/examples/.gitkeep +2 -0
- package/augment-extensions/writing-standards/screenplay/themes/examples/common-mistakes-and-fixes.md +643 -0
- package/augment-extensions/writing-standards/screenplay/themes/examples/complete-scene-example.md +311 -0
- package/augment-extensions/writing-standards/screenplay/themes/examples/individual-theme-examples.md +562 -0
- package/augment-extensions/writing-standards/screenplay/themes/examples/multi-theme-weaving.md +538 -0
- package/augment-extensions/writing-standards/screenplay/themes/examples/theme-application-guide.md +432 -0
- package/augment-extensions/writing-standards/screenplay/themes/examples/theme-integration-across-acts.md +637 -0
- package/augment-extensions/writing-standards/screenplay/themes/module.json +66 -0
- package/augment-extensions/writing-standards/screenplay/themes/rules/.gitkeep +2 -0
- package/augment-extensions/writing-standards/screenplay/themes/rules/ambition.md +458 -0
- package/augment-extensions/writing-standards/screenplay/themes/rules/betrayal.md +490 -0
- package/augment-extensions/writing-standards/screenplay/themes/rules/environment.md +458 -0
- package/augment-extensions/writing-standards/screenplay/themes/rules/fate.md +459 -0
- package/augment-extensions/writing-standards/screenplay/themes/rules/friendship.md +491 -0
- package/augment-extensions/writing-standards/screenplay/themes/rules/growth.md +491 -0
- package/augment-extensions/writing-standards/screenplay/themes/rules/identity.md +490 -0
- package/augment-extensions/writing-standards/screenplay/themes/rules/isolation.md +464 -0
- package/augment-extensions/writing-standards/screenplay/themes/rules/justice.md +461 -0
- package/augment-extensions/writing-standards/screenplay/themes/rules/love.md +489 -0
- package/augment-extensions/writing-standards/screenplay/themes/rules/power.md +494 -0
- package/augment-extensions/writing-standards/screenplay/themes/rules/redemption.md +483 -0
- package/augment-extensions/writing-standards/screenplay/themes/rules/revenge.md +489 -0
- package/augment-extensions/writing-standards/screenplay/themes/rules/survival.md +496 -0
- package/augment-extensions/writing-standards/screenplay/themes/rules/technology.md +463 -0
- package/cli/MODULES.md +302 -0
- package/cli/dist/cli.js +168 -10
- package/cli/dist/cli.js.map +1 -1
- package/cli/dist/commands/catalog.d.ts +13 -0
- package/cli/dist/commands/catalog.d.ts.map +1 -0
- package/cli/dist/commands/catalog.js +104 -0
- package/cli/dist/commands/catalog.js.map +1 -0
- package/cli/dist/commands/gui.d.ts +6 -0
- package/cli/dist/commands/gui.d.ts.map +1 -0
- package/cli/dist/commands/gui.js +211 -0
- package/cli/dist/commands/gui.js.map +1 -0
- package/cli/dist/commands/init.d.ts.map +1 -1
- package/cli/dist/commands/init.js +12 -0
- package/cli/dist/commands/init.js.map +1 -1
- package/cli/dist/commands/install-rules.d.ts +14 -0
- package/cli/dist/commands/install-rules.d.ts.map +1 -0
- package/cli/dist/commands/install-rules.js +127 -0
- package/cli/dist/commands/install-rules.js.map +1 -0
- package/cli/dist/commands/link.d.ts.map +1 -1
- package/cli/dist/commands/link.js +9 -11
- package/cli/dist/commands/link.js.map +1 -1
- package/cli/dist/commands/list.d.ts.map +1 -1
- package/cli/dist/commands/list.js +11 -28
- package/cli/dist/commands/list.js.map +1 -1
- package/cli/dist/commands/mcp.d.ts +48 -0
- package/cli/dist/commands/mcp.d.ts.map +1 -0
- package/cli/dist/commands/mcp.js +229 -0
- package/cli/dist/commands/mcp.js.map +1 -0
- package/cli/dist/commands/self-remove.d.ts +7 -0
- package/cli/dist/commands/self-remove.d.ts.map +1 -0
- package/cli/dist/commands/self-remove.js +179 -0
- package/cli/dist/commands/self-remove.js.map +1 -0
- package/cli/dist/commands/show.d.ts +19 -0
- package/cli/dist/commands/show.d.ts.map +1 -1
- package/cli/dist/commands/show.js +478 -63
- package/cli/dist/commands/show.js.map +1 -1
- package/cli/dist/commands/skill.d.ts +67 -0
- package/cli/dist/commands/skill.d.ts.map +1 -0
- package/cli/dist/commands/skill.js +513 -0
- package/cli/dist/commands/skill.js.map +1 -0
- package/cli/dist/commands/unlink.d.ts +6 -0
- package/cli/dist/commands/unlink.d.ts.map +1 -0
- package/cli/dist/commands/unlink.js +115 -0
- package/cli/dist/commands/unlink.js.map +1 -0
- package/cli/dist/commands/validate.d.ts +6 -0
- package/cli/dist/commands/validate.d.ts.map +1 -0
- package/cli/dist/commands/validate.js +159 -0
- package/cli/dist/commands/validate.js.map +1 -0
- package/cli/dist/types/gui.d.ts +62 -0
- package/cli/dist/types/gui.d.ts.map +1 -0
- package/cli/dist/types/gui.js +30 -0
- package/cli/dist/types/gui.js.map +1 -0
- package/cli/dist/utils/catalog-sync.d.ts +22 -0
- package/cli/dist/utils/catalog-sync.d.ts.map +1 -0
- package/cli/dist/utils/catalog-sync.js +157 -0
- package/cli/dist/utils/catalog-sync.js.map +1 -0
- package/cli/dist/utils/character-count.d.ts +56 -0
- package/cli/dist/utils/character-count.d.ts.map +1 -0
- package/cli/dist/utils/character-count.js +190 -0
- package/cli/dist/utils/character-count.js.map +1 -0
- package/cli/dist/utils/documentation-validator.d.ts +18 -0
- package/cli/dist/utils/documentation-validator.d.ts.map +1 -0
- package/cli/dist/utils/documentation-validator.js +233 -0
- package/cli/dist/utils/documentation-validator.js.map +1 -0
- package/cli/dist/utils/gui-helpers.d.ts +23 -0
- package/cli/dist/utils/gui-helpers.d.ts.map +1 -0
- package/cli/dist/utils/gui-helpers.js +159 -0
- package/cli/dist/utils/gui-helpers.js.map +1 -0
- package/cli/dist/utils/install-rules.d.ts +32 -0
- package/cli/dist/utils/install-rules.d.ts.map +1 -0
- package/cli/dist/utils/install-rules.js +375 -0
- package/cli/dist/utils/install-rules.js.map +1 -0
- package/cli/dist/utils/mcp-integration.d.ts +70 -0
- package/cli/dist/utils/mcp-integration.d.ts.map +1 -0
- package/cli/dist/utils/mcp-integration.js +292 -0
- package/cli/dist/utils/mcp-integration.js.map +1 -0
- package/cli/dist/utils/module-system.d.ts +232 -0
- package/cli/dist/utils/module-system.d.ts.map +1 -0
- package/cli/dist/utils/module-system.js +900 -0
- package/cli/dist/utils/module-system.js.map +1 -0
- package/cli/dist/utils/modules-catalog.d.ts +33 -0
- package/cli/dist/utils/modules-catalog.d.ts.map +1 -0
- package/cli/dist/utils/modules-catalog.js +163 -0
- package/cli/dist/utils/modules-catalog.js.map +1 -0
- package/cli/dist/utils/rule-install-hooks.d.ts +19 -0
- package/cli/dist/utils/rule-install-hooks.d.ts.map +1 -0
- package/cli/dist/utils/rule-install-hooks.js +224 -0
- package/cli/dist/utils/rule-install-hooks.js.map +1 -0
- package/cli/dist/utils/skill-system.d.ts +95 -0
- package/cli/dist/utils/skill-system.d.ts.map +1 -0
- package/cli/dist/utils/skill-system.js +313 -0
- package/cli/dist/utils/skill-system.js.map +1 -0
- package/modules.md +559 -105
- package/package.json +17 -6
|
@@ -0,0 +1,636 @@
|
|
|
1
|
+
# Hybrid MCP Guidelines
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
|
|
5
|
+
**Hybrid MCP** combines multiple memory types (token, state, vector, graph, compressed) to create sophisticated multi-memory architectures. This enables optimal context management across diverse use cases.
|
|
6
|
+
|
|
7
|
+
**Key Challenge**: Orchestrating multiple memory systems with different characteristics, budgets, and retrieval patterns while maintaining coherence and performance.
|
|
8
|
+
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
## 1. Multi-Memory Architecture
|
|
12
|
+
|
|
13
|
+
### Memory Type Characteristics
|
|
14
|
+
|
|
15
|
+
| Memory Type | Latency | Capacity | Precision | Cost | Use Case |
|
|
16
|
+
|-------------|---------|----------|-----------|------|----------|
|
|
17
|
+
| **Token** | Instant | Limited (200k) | Perfect | High | Immediate context |
|
|
18
|
+
| **State** | Low | Medium | Perfect | Low | Session continuity |
|
|
19
|
+
| **Vector** | Medium | High | Approximate | Medium | Semantic search |
|
|
20
|
+
| **Graph** | Medium | High | Structured | Medium | Relationships |
|
|
21
|
+
| **Compressed** | Low | High | Lossy | Low | Long-term memory |
|
|
22
|
+
|
|
23
|
+
### Architecture Patterns
|
|
24
|
+
|
|
25
|
+
**Tiered Memory**:
|
|
26
|
+
|
|
27
|
+
```python
|
|
28
|
+
class TieredMemory:
|
|
29
|
+
"""Multi-tier memory with hot/warm/cold storage"""
|
|
30
|
+
|
|
31
|
+
def __init__(self):
|
|
32
|
+
# Tier 1: Hot (token-based, immediate context)
|
|
33
|
+
self.hot_memory = TokenMemory(max_tokens=4096)
|
|
34
|
+
|
|
35
|
+
# Tier 2: Warm (state-based, session context)
|
|
36
|
+
self.warm_memory = StateMemory()
|
|
37
|
+
|
|
38
|
+
# Tier 3: Cold (vector-based, long-term knowledge)
|
|
39
|
+
self.cold_memory = VectorMemory()
|
|
40
|
+
|
|
41
|
+
def retrieve(self, query: str, token_budget=4096):
|
|
42
|
+
"""Retrieve from all tiers with budget allocation"""
|
|
43
|
+
# Allocate budget across tiers
|
|
44
|
+
hot_budget = int(token_budget * 0.5) # 50% for immediate context
|
|
45
|
+
warm_budget = int(token_budget * 0.3) # 30% for session context
|
|
46
|
+
cold_budget = int(token_budget * 0.2) # 20% for knowledge base
|
|
47
|
+
|
|
48
|
+
# Retrieve from each tier
|
|
49
|
+
hot_context = self.hot_memory.get_recent(hot_budget)
|
|
50
|
+
warm_context = self.warm_memory.get_session(warm_budget)
|
|
51
|
+
cold_context = self.cold_memory.search(query, cold_budget)
|
|
52
|
+
|
|
53
|
+
# Combine contexts
|
|
54
|
+
return self.merge_contexts(hot_context, warm_context, cold_context)
|
|
55
|
+
|
|
56
|
+
def merge_contexts(self, hot, warm, cold):
|
|
57
|
+
"""Merge contexts with deduplication"""
|
|
58
|
+
# Deduplicate and prioritize by tier
|
|
59
|
+
seen = set()
|
|
60
|
+
merged = []
|
|
61
|
+
|
|
62
|
+
for context in [hot, warm, cold]:
|
|
63
|
+
for item in context:
|
|
64
|
+
key = self.get_key(item)
|
|
65
|
+
if key not in seen:
|
|
66
|
+
merged.append(item)
|
|
67
|
+
seen.add(key)
|
|
68
|
+
|
|
69
|
+
return merged
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
**Specialized Memory**:
|
|
73
|
+
|
|
74
|
+
```python
|
|
75
|
+
class SpecializedMemory:
|
|
76
|
+
"""Different memory types for different content"""
|
|
77
|
+
|
|
78
|
+
def __init__(self):
|
|
79
|
+
# Vector memory for documents
|
|
80
|
+
self.document_memory = VectorMemory()
|
|
81
|
+
|
|
82
|
+
# Graph memory for entities and relationships
|
|
83
|
+
self.entity_memory = GraphMemory()
|
|
84
|
+
|
|
85
|
+
# State memory for conversation
|
|
86
|
+
self.conversation_memory = StateMemory()
|
|
87
|
+
|
|
88
|
+
# Compressed memory for long-term history
|
|
89
|
+
self.history_memory = CompressedMemory()
|
|
90
|
+
|
|
91
|
+
def retrieve(self, query: str, query_type: str):
|
|
92
|
+
"""Route to appropriate memory based on query type"""
|
|
93
|
+
if query_type == "factual":
|
|
94
|
+
return self.document_memory.search(query)
|
|
95
|
+
elif query_type == "relational":
|
|
96
|
+
return self.entity_memory.traverse(query)
|
|
97
|
+
elif query_type == "conversational":
|
|
98
|
+
return self.conversation_memory.get_context()
|
|
99
|
+
elif query_type == "historical":
|
|
100
|
+
return self.history_memory.recall(query)
|
|
101
|
+
else:
|
|
102
|
+
# Hybrid retrieval
|
|
103
|
+
return self.hybrid_retrieve(query)
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
**Best Practices**:
|
|
107
|
+
- Allocate token budget across memory types
|
|
108
|
+
- Use tiered memory for general-purpose agents
|
|
109
|
+
- Use specialized memory for domain-specific agents
|
|
110
|
+
- Implement fallback strategies
|
|
111
|
+
|
|
112
|
+
---
|
|
113
|
+
|
|
114
|
+
## 2. Budget Allocation
|
|
115
|
+
|
|
116
|
+
### Static Allocation
|
|
117
|
+
|
|
118
|
+
Fixed budget per memory type:
|
|
119
|
+
|
|
120
|
+
```python
|
|
121
|
+
class StaticBudgetAllocator:
|
|
122
|
+
"""Fixed budget allocation across memory types"""
|
|
123
|
+
|
|
124
|
+
def __init__(self, total_budget=4096):
|
|
125
|
+
self.total_budget = total_budget
|
|
126
|
+
self.allocations = {
|
|
127
|
+
'token': 0.4, # 40% for immediate context
|
|
128
|
+
'state': 0.2, # 20% for session state
|
|
129
|
+
'vector': 0.3, # 30% for semantic search
|
|
130
|
+
'graph': 0.1 # 10% for relationships
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
def allocate(self):
|
|
134
|
+
"""Return budget for each memory type"""
|
|
135
|
+
return {
|
|
136
|
+
memory_type: int(self.total_budget * ratio)
|
|
137
|
+
for memory_type, ratio in self.allocations.items()
|
|
138
|
+
}
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
### Dynamic Allocation
|
|
142
|
+
|
|
143
|
+
Adaptive budget based on query:
|
|
144
|
+
|
|
145
|
+
```python
|
|
146
|
+
class DynamicBudgetAllocator:
|
|
147
|
+
"""Adaptive budget allocation based on query characteristics"""
|
|
148
|
+
|
|
149
|
+
def __init__(self, total_budget=4096):
|
|
150
|
+
self.total_budget = total_budget
|
|
151
|
+
|
|
152
|
+
def allocate(self, query: str, query_type: str):
|
|
153
|
+
"""Allocate budget based on query type"""
|
|
154
|
+
if query_type == "factual":
|
|
155
|
+
# Prioritize vector search
|
|
156
|
+
return {
|
|
157
|
+
'token': int(self.total_budget * 0.2),
|
|
158
|
+
'vector': int(self.total_budget * 0.6),
|
|
159
|
+
'graph': int(self.total_budget * 0.2)
|
|
160
|
+
}
|
|
161
|
+
elif query_type == "conversational":
|
|
162
|
+
# Prioritize conversation history
|
|
163
|
+
return {
|
|
164
|
+
'token': int(self.total_budget * 0.5),
|
|
165
|
+
'state': int(self.total_budget * 0.4),
|
|
166
|
+
'vector': int(self.total_budget * 0.1)
|
|
167
|
+
}
|
|
168
|
+
elif query_type == "analytical":
|
|
169
|
+
# Prioritize graph traversal
|
|
170
|
+
return {
|
|
171
|
+
'token': int(self.total_budget * 0.2),
|
|
172
|
+
'graph': int(self.total_budget * 0.5),
|
|
173
|
+
'vector': int(self.total_budget * 0.3)
|
|
174
|
+
}
|
|
175
|
+
else:
|
|
176
|
+
# Balanced allocation
|
|
177
|
+
return {
|
|
178
|
+
'token': int(self.total_budget * 0.3),
|
|
179
|
+
'state': int(self.total_budget * 0.2),
|
|
180
|
+
'vector': int(self.total_budget * 0.3),
|
|
181
|
+
'graph': int(self.total_budget * 0.2)
|
|
182
|
+
}
|
|
183
|
+
```
|
|
184
|
+
|
|
185
|
+
**Best Practices**:
|
|
186
|
+
- Start with static allocation for simplicity
|
|
187
|
+
- Use dynamic allocation for complex agents
|
|
188
|
+
- Monitor actual usage vs allocation
|
|
189
|
+
- Adjust based on performance metrics
|
|
190
|
+
|
|
191
|
+
---
|
|
192
|
+
|
|
193
|
+
## 3. Orchestration Patterns
|
|
194
|
+
|
|
195
|
+
### Sequential Orchestration
|
|
196
|
+
|
|
197
|
+
Retrieve from memory types in sequence:
|
|
198
|
+
|
|
199
|
+
```python
|
|
200
|
+
class SequentialOrchestrator:
|
|
201
|
+
"""Retrieve from memory types sequentially"""
|
|
202
|
+
|
|
203
|
+
def __init__(self, memories: dict):
|
|
204
|
+
self.memories = memories
|
|
205
|
+
|
|
206
|
+
def retrieve(self, query: str, budget_allocation: dict):
|
|
207
|
+
"""Retrieve sequentially with early stopping"""
|
|
208
|
+
results = []
|
|
209
|
+
total_tokens = 0
|
|
210
|
+
|
|
211
|
+
# Define retrieval order
|
|
212
|
+
order = ['token', 'state', 'vector', 'graph']
|
|
213
|
+
|
|
214
|
+
for memory_type in order:
|
|
215
|
+
if memory_type not in self.memories:
|
|
216
|
+
continue
|
|
217
|
+
|
|
218
|
+
budget = budget_allocation.get(memory_type, 0)
|
|
219
|
+
if budget == 0:
|
|
220
|
+
continue
|
|
221
|
+
|
|
222
|
+
# Retrieve from this memory type
|
|
223
|
+
memory_results = self.memories[memory_type].retrieve(query, budget)
|
|
224
|
+
|
|
225
|
+
# Add to results
|
|
226
|
+
for result in memory_results:
|
|
227
|
+
result_tokens = count_tokens(result)
|
|
228
|
+
if total_tokens + result_tokens <= sum(budget_allocation.values()):
|
|
229
|
+
results.append(result)
|
|
230
|
+
total_tokens += result_tokens
|
|
231
|
+
else:
|
|
232
|
+
# Budget exhausted
|
|
233
|
+
return results
|
|
234
|
+
|
|
235
|
+
return results
|
|
236
|
+
```
|
|
237
|
+
|
|
238
|
+
### Parallel Orchestration
|
|
239
|
+
|
|
240
|
+
Retrieve from all memory types simultaneously:
|
|
241
|
+
|
|
242
|
+
```python
|
|
243
|
+
import asyncio
|
|
244
|
+
|
|
245
|
+
class ParallelOrchestrator:
|
|
246
|
+
"""Retrieve from memory types in parallel"""
|
|
247
|
+
|
|
248
|
+
def __init__(self, memories: dict):
|
|
249
|
+
self.memories = memories
|
|
250
|
+
|
|
251
|
+
async def retrieve(self, query: str, budget_allocation: dict):
|
|
252
|
+
"""Retrieve in parallel and merge"""
|
|
253
|
+
# Create retrieval tasks
|
|
254
|
+
tasks = []
|
|
255
|
+
for memory_type, memory in self.memories.items():
|
|
256
|
+
budget = budget_allocation.get(memory_type, 0)
|
|
257
|
+
if budget > 0:
|
|
258
|
+
task = memory.retrieve_async(query, budget)
|
|
259
|
+
tasks.append((memory_type, task))
|
|
260
|
+
|
|
261
|
+
# Execute in parallel
|
|
262
|
+
results_by_type = {}
|
|
263
|
+
for memory_type, task in tasks:
|
|
264
|
+
results_by_type[memory_type] = await task
|
|
265
|
+
|
|
266
|
+
# Merge and deduplicate
|
|
267
|
+
return self.merge_results(results_by_type, budget_allocation)
|
|
268
|
+
|
|
269
|
+
def merge_results(self, results_by_type: dict, budget_allocation: dict):
|
|
270
|
+
"""Merge results with priority weighting"""
|
|
271
|
+
merged = []
|
|
272
|
+
seen = set()
|
|
273
|
+
|
|
274
|
+
# Priority order
|
|
275
|
+
priority = ['token', 'state', 'vector', 'graph']
|
|
276
|
+
|
|
277
|
+
for memory_type in priority:
|
|
278
|
+
if memory_type not in results_by_type:
|
|
279
|
+
continue
|
|
280
|
+
|
|
281
|
+
for result in results_by_type[memory_type]:
|
|
282
|
+
key = self.get_key(result)
|
|
283
|
+
if key not in seen:
|
|
284
|
+
merged.append(result)
|
|
285
|
+
seen.add(key)
|
|
286
|
+
|
|
287
|
+
return merged
|
|
288
|
+
```
|
|
289
|
+
|
|
290
|
+
### Hierarchical Orchestration
|
|
291
|
+
|
|
292
|
+
Use coarse-to-fine retrieval:
|
|
293
|
+
|
|
294
|
+
```python
|
|
295
|
+
class HierarchicalOrchestrator:
|
|
296
|
+
"""Hierarchical retrieval with refinement"""
|
|
297
|
+
|
|
298
|
+
def __init__(self, memories: dict):
|
|
299
|
+
self.memories = memories
|
|
300
|
+
|
|
301
|
+
def retrieve(self, query: str, budget_allocation: dict):
|
|
302
|
+
"""Retrieve hierarchically"""
|
|
303
|
+
# Stage 1: Coarse retrieval (compressed memory)
|
|
304
|
+
if 'compressed' in self.memories:
|
|
305
|
+
coarse_results = self.memories['compressed'].retrieve(
|
|
306
|
+
query,
|
|
307
|
+
budget_allocation.get('compressed', 512)
|
|
308
|
+
)
|
|
309
|
+
|
|
310
|
+
# Extract relevant topics/entities
|
|
311
|
+
topics = self.extract_topics(coarse_results)
|
|
312
|
+
else:
|
|
313
|
+
topics = [query]
|
|
314
|
+
|
|
315
|
+
# Stage 2: Medium retrieval (vector memory)
|
|
316
|
+
if 'vector' in self.memories:
|
|
317
|
+
medium_results = []
|
|
318
|
+
for topic in topics:
|
|
319
|
+
results = self.memories['vector'].retrieve(
|
|
320
|
+
topic,
|
|
321
|
+
budget_allocation.get('vector', 2048) // len(topics)
|
|
322
|
+
)
|
|
323
|
+
medium_results.extend(results)
|
|
324
|
+
|
|
325
|
+
# Extract specific entities
|
|
326
|
+
entities = self.extract_entities(medium_results)
|
|
327
|
+
else:
|
|
328
|
+
entities = []
|
|
329
|
+
|
|
330
|
+
# Stage 3: Fine retrieval (graph memory)
|
|
331
|
+
if 'graph' in self.memories and entities:
|
|
332
|
+
fine_results = self.memories['graph'].traverse(
|
|
333
|
+
entities,
|
|
334
|
+
budget_allocation.get('graph', 1024)
|
|
335
|
+
)
|
|
336
|
+
else:
|
|
337
|
+
fine_results = []
|
|
338
|
+
|
|
339
|
+
# Combine all stages
|
|
340
|
+
return self.combine_stages(coarse_results, medium_results, fine_results)
|
|
341
|
+
```
|
|
342
|
+
|
|
343
|
+
**Best Practices**:
|
|
344
|
+
- Use sequential for simple agents
|
|
345
|
+
- Use parallel for low-latency requirements
|
|
346
|
+
- Use hierarchical for complex queries
|
|
347
|
+
- Monitor latency and adjust
|
|
348
|
+
|
|
349
|
+
---
|
|
350
|
+
|
|
351
|
+
## 4. Conflict Resolution
|
|
352
|
+
|
|
353
|
+
### Deduplication
|
|
354
|
+
|
|
355
|
+
Remove duplicate information:
|
|
356
|
+
|
|
357
|
+
```python
|
|
358
|
+
def deduplicate_results(results: list, similarity_threshold=0.9):
|
|
359
|
+
"""Remove duplicate results based on semantic similarity"""
|
|
360
|
+
unique_results = []
|
|
361
|
+
embeddings = generate_embeddings([r['text'] for r in results])
|
|
362
|
+
|
|
363
|
+
for i, result in enumerate(results):
|
|
364
|
+
is_duplicate = False
|
|
365
|
+
|
|
366
|
+
for j, unique_result in enumerate(unique_results):
|
|
367
|
+
similarity = cosine_similarity(embeddings[i], embeddings[j])
|
|
368
|
+
if similarity > similarity_threshold:
|
|
369
|
+
is_duplicate = True
|
|
370
|
+
break
|
|
371
|
+
|
|
372
|
+
if not is_duplicate:
|
|
373
|
+
unique_results.append(result)
|
|
374
|
+
|
|
375
|
+
return unique_results
|
|
376
|
+
```
|
|
377
|
+
|
|
378
|
+
### Contradiction Detection
|
|
379
|
+
|
|
380
|
+
Identify conflicting information:
|
|
381
|
+
|
|
382
|
+
```python
|
|
383
|
+
def detect_contradictions(results: list):
|
|
384
|
+
"""Detect contradictions in retrieved results"""
|
|
385
|
+
contradictions = []
|
|
386
|
+
|
|
387
|
+
for i, result1 in enumerate(results):
|
|
388
|
+
for j, result2 in enumerate(results[i+1:], start=i+1):
|
|
389
|
+
# Use LLM to detect contradiction
|
|
390
|
+
prompt = f"""
|
|
391
|
+
Do these two statements contradict each other?
|
|
392
|
+
|
|
393
|
+
Statement 1: {result1['text']}
|
|
394
|
+
Statement 2: {result2['text']}
|
|
395
|
+
|
|
396
|
+
Answer with YES or NO and explain briefly.
|
|
397
|
+
"""
|
|
398
|
+
|
|
399
|
+
response = llm_call(prompt)
|
|
400
|
+
if response.startswith("YES"):
|
|
401
|
+
contradictions.append({
|
|
402
|
+
'result1': result1,
|
|
403
|
+
'result2': result2,
|
|
404
|
+
'explanation': response
|
|
405
|
+
})
|
|
406
|
+
|
|
407
|
+
return contradictions
|
|
408
|
+
```
|
|
409
|
+
|
|
410
|
+
### Priority-Based Resolution
|
|
411
|
+
|
|
412
|
+
Resolve conflicts using priority:
|
|
413
|
+
|
|
414
|
+
```python
|
|
415
|
+
def resolve_conflicts(results: list, priority_order: list):
|
|
416
|
+
"""Resolve conflicts using memory type priority"""
|
|
417
|
+
# Group by memory type
|
|
418
|
+
by_type = {}
|
|
419
|
+
for result in results:
|
|
420
|
+
memory_type = result['memory_type']
|
|
421
|
+
if memory_type not in by_type:
|
|
422
|
+
by_type[memory_type] = []
|
|
423
|
+
by_type[memory_type].append(result)
|
|
424
|
+
|
|
425
|
+
# Detect contradictions
|
|
426
|
+
contradictions = detect_contradictions(results)
|
|
427
|
+
|
|
428
|
+
# Resolve using priority
|
|
429
|
+
resolved = []
|
|
430
|
+
for contradiction in contradictions:
|
|
431
|
+
result1 = contradiction['result1']
|
|
432
|
+
result2 = contradiction['result2']
|
|
433
|
+
|
|
434
|
+
# Choose based on priority
|
|
435
|
+
type1_priority = priority_order.index(result1['memory_type'])
|
|
436
|
+
type2_priority = priority_order.index(result2['memory_type'])
|
|
437
|
+
|
|
438
|
+
if type1_priority < type2_priority:
|
|
439
|
+
resolved.append(result1)
|
|
440
|
+
else:
|
|
441
|
+
resolved.append(result2)
|
|
442
|
+
|
|
443
|
+
# Add non-conflicting results
|
|
444
|
+
conflicting_ids = set()
|
|
445
|
+
for c in contradictions:
|
|
446
|
+
conflicting_ids.add(c['result1']['id'])
|
|
447
|
+
conflicting_ids.add(c['result2']['id'])
|
|
448
|
+
|
|
449
|
+
for result in results:
|
|
450
|
+
if result['id'] not in conflicting_ids:
|
|
451
|
+
resolved.append(result)
|
|
452
|
+
|
|
453
|
+
return resolved
|
|
454
|
+
```
|
|
455
|
+
|
|
456
|
+
**Best Practices**:
|
|
457
|
+
- Always deduplicate results
|
|
458
|
+
- Detect contradictions for critical applications
|
|
459
|
+
- Use priority-based resolution (token > state > vector > graph)
|
|
460
|
+
- Log conflicts for debugging
|
|
461
|
+
|
|
462
|
+
---
|
|
463
|
+
|
|
464
|
+
## 5. Best Practices
|
|
465
|
+
|
|
466
|
+
### DO
|
|
467
|
+
|
|
468
|
+
✅ **Allocate budget strategically**: Prioritize based on query type
|
|
469
|
+
✅ **Use parallel retrieval**: Reduce latency
|
|
470
|
+
✅ **Deduplicate results**: Avoid redundant context
|
|
471
|
+
✅ **Detect contradictions**: Ensure consistency
|
|
472
|
+
✅ **Monitor performance**: Track latency and quality
|
|
473
|
+
✅ **Implement fallbacks**: Handle memory failures gracefully
|
|
474
|
+
✅ **Version memory schemas**: Support evolution
|
|
475
|
+
✅ **Cache frequently accessed data**: Improve performance
|
|
476
|
+
|
|
477
|
+
### DON'T
|
|
478
|
+
|
|
479
|
+
❌ **Don't use all memory types for every query**: Be selective
|
|
480
|
+
❌ **Don't ignore conflicts**: Contradictions confuse LLMs
|
|
481
|
+
❌ **Don't over-allocate**: Respect token budgets
|
|
482
|
+
❌ **Don't forget to deduplicate**: Wastes tokens
|
|
483
|
+
❌ **Don't use sequential when parallel is better**: Optimize latency
|
|
484
|
+
❌ **Don't hard-code allocations**: Make them configurable
|
|
485
|
+
❌ **Don't ignore memory type characteristics**: Match to use case
|
|
486
|
+
|
|
487
|
+
---
|
|
488
|
+
|
|
489
|
+
## 6. Common Pitfalls
|
|
490
|
+
|
|
491
|
+
### Over-Complexity
|
|
492
|
+
|
|
493
|
+
**Problem**: Too many memory types, complex orchestration
|
|
494
|
+
|
|
495
|
+
**Solution**:
|
|
496
|
+
- Start simple (2-3 memory types)
|
|
497
|
+
- Add complexity only when needed
|
|
498
|
+
- Measure impact of each memory type
|
|
499
|
+
|
|
500
|
+
### Budget Imbalance
|
|
501
|
+
|
|
502
|
+
**Problem**: Poor allocation leads to suboptimal retrieval
|
|
503
|
+
|
|
504
|
+
**Solution**:
|
|
505
|
+
- Monitor actual usage
|
|
506
|
+
- Adjust allocations based on query patterns
|
|
507
|
+
- Use dynamic allocation for diverse queries
|
|
508
|
+
|
|
509
|
+
### Latency Issues
|
|
510
|
+
|
|
511
|
+
**Problem**: Sequential retrieval too slow
|
|
512
|
+
|
|
513
|
+
**Solution**:
|
|
514
|
+
- Use parallel orchestration
|
|
515
|
+
- Implement caching
|
|
516
|
+
- Optimize each memory type independently
|
|
517
|
+
|
|
518
|
+
### Conflict Proliferation
|
|
519
|
+
|
|
520
|
+
**Problem**: Too many contradictions, unclear resolution
|
|
521
|
+
|
|
522
|
+
**Solution**:
|
|
523
|
+
- Establish clear priority order
|
|
524
|
+
- Use recency as tiebreaker
|
|
525
|
+
- Log and review conflicts regularly
|
|
526
|
+
|
|
527
|
+
---
|
|
528
|
+
|
|
529
|
+
## 7. Integration Example
|
|
530
|
+
|
|
531
|
+
Complete hybrid MCP implementation:
|
|
532
|
+
|
|
533
|
+
```python
|
|
534
|
+
class HybridMCP:
|
|
535
|
+
"""Complete hybrid MCP with multiple memory types"""
|
|
536
|
+
|
|
537
|
+
def __init__(self, config: dict):
|
|
538
|
+
# Initialize memory types
|
|
539
|
+
self.token_memory = TokenMemory(config['token'])
|
|
540
|
+
self.state_memory = StateMemory(config['state'])
|
|
541
|
+
self.vector_memory = VectorMemory(config['vector'])
|
|
542
|
+
self.graph_memory = GraphMemory(config['graph'])
|
|
543
|
+
|
|
544
|
+
# Initialize orchestrator
|
|
545
|
+
memories = {
|
|
546
|
+
'token': self.token_memory,
|
|
547
|
+
'state': self.state_memory,
|
|
548
|
+
'vector': self.vector_memory,
|
|
549
|
+
'graph': self.graph_memory
|
|
550
|
+
}
|
|
551
|
+
self.orchestrator = ParallelOrchestrator(memories)
|
|
552
|
+
|
|
553
|
+
# Initialize budget allocator
|
|
554
|
+
self.allocator = DynamicBudgetAllocator(config['total_budget'])
|
|
555
|
+
|
|
556
|
+
async def retrieve(self, query: str, query_type: str = "general"):
|
|
557
|
+
"""Retrieve context from all memory types"""
|
|
558
|
+
# Allocate budget
|
|
559
|
+
budget = self.allocator.allocate(query, query_type)
|
|
560
|
+
|
|
561
|
+
# Retrieve in parallel
|
|
562
|
+
results = await self.orchestrator.retrieve(query, budget)
|
|
563
|
+
|
|
564
|
+
# Deduplicate
|
|
565
|
+
results = deduplicate_results(results)
|
|
566
|
+
|
|
567
|
+
# Detect and resolve conflicts
|
|
568
|
+
contradictions = detect_contradictions(results)
|
|
569
|
+
if contradictions:
|
|
570
|
+
priority_order = ['token', 'state', 'vector', 'graph']
|
|
571
|
+
results = resolve_conflicts(results, priority_order)
|
|
572
|
+
|
|
573
|
+
return results
|
|
574
|
+
|
|
575
|
+
def update(self, content: str, memory_types: list):
|
|
576
|
+
"""Update multiple memory types"""
|
|
577
|
+
for memory_type in memory_types:
|
|
578
|
+
if memory_type == 'token':
|
|
579
|
+
self.token_memory.add(content)
|
|
580
|
+
elif memory_type == 'state':
|
|
581
|
+
self.state_memory.update(content)
|
|
582
|
+
elif memory_type == 'vector':
|
|
583
|
+
self.vector_memory.index(content)
|
|
584
|
+
elif memory_type == 'graph':
|
|
585
|
+
self.graph_memory.add_entities(content)
|
|
586
|
+
```
|
|
587
|
+
|
|
588
|
+
---
|
|
589
|
+
|
|
590
|
+
## Configuration Example
|
|
591
|
+
|
|
592
|
+
```json
|
|
593
|
+
{
|
|
594
|
+
"mcp": {
|
|
595
|
+
"type": "hybrid",
|
|
596
|
+
"total_budget": 8192,
|
|
597
|
+
"memories": {
|
|
598
|
+
"token": {
|
|
599
|
+
"max_tokens": 4096,
|
|
600
|
+
"sliding_window": true
|
|
601
|
+
},
|
|
602
|
+
"state": {
|
|
603
|
+
"persistence": "redis",
|
|
604
|
+
"ttl": 3600
|
|
605
|
+
},
|
|
606
|
+
"vector": {
|
|
607
|
+
"provider": "pinecone",
|
|
608
|
+
"embedding_model": "text-embedding-3-small",
|
|
609
|
+
"chunk_size": 512
|
|
610
|
+
},
|
|
611
|
+
"graph": {
|
|
612
|
+
"provider": "neo4j",
|
|
613
|
+
"entity_extraction": "llm"
|
|
614
|
+
}
|
|
615
|
+
},
|
|
616
|
+
"orchestration": {
|
|
617
|
+
"mode": "parallel",
|
|
618
|
+
"deduplication": true,
|
|
619
|
+
"conflict_detection": true,
|
|
620
|
+
"priority_order": ["token", "state", "vector", "graph"]
|
|
621
|
+
},
|
|
622
|
+
"allocation": {
|
|
623
|
+
"mode": "dynamic",
|
|
624
|
+
"default": {
|
|
625
|
+
"token": 0.3,
|
|
626
|
+
"state": 0.2,
|
|
627
|
+
"vector": 0.3,
|
|
628
|
+
"graph": 0.2
|
|
629
|
+
}
|
|
630
|
+
}
|
|
631
|
+
}
|
|
632
|
+
}
|
|
633
|
+
```
|
|
634
|
+
|
|
635
|
+
---
|
|
636
|
+
|