@mytechtoday/augment-extensions 0.1.2 → 0.4.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/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/domain-rules/wordpress/README.md +163 -0
- package/augment-extensions/domain-rules/wordpress/module.json +32 -0
- package/augment-extensions/domain-rules/wordpress/rules/coding-standards.md +617 -0
- package/augment-extensions/domain-rules/wordpress/rules/directory-structure.md +270 -0
- package/augment-extensions/domain-rules/wordpress/rules/file-patterns.md +423 -0
- package/augment-extensions/domain-rules/wordpress/rules/gutenberg-blocks.md +493 -0
- package/augment-extensions/domain-rules/wordpress/rules/performance.md +568 -0
- package/augment-extensions/domain-rules/wordpress/rules/plugin-development.md +510 -0
- package/augment-extensions/domain-rules/wordpress/rules/project-detection.md +251 -0
- package/augment-extensions/domain-rules/wordpress/rules/rest-api.md +501 -0
- package/augment-extensions/domain-rules/wordpress/rules/security.md +564 -0
- package/augment-extensions/domain-rules/wordpress/rules/theme-development.md +388 -0
- package/augment-extensions/domain-rules/wordpress/rules/woocommerce.md +441 -0
- package/augment-extensions/domain-rules/wordpress-plugin/README.md +139 -0
- package/augment-extensions/domain-rules/wordpress-plugin/examples/ajax-plugin.md +1599 -0
- package/augment-extensions/domain-rules/wordpress-plugin/examples/custom-post-type-plugin.md +1727 -0
- package/augment-extensions/domain-rules/wordpress-plugin/examples/gutenberg-block-plugin.md +428 -0
- package/augment-extensions/domain-rules/wordpress-plugin/examples/gutenberg-block.md +422 -0
- package/augment-extensions/domain-rules/wordpress-plugin/examples/mvc-plugin.md +1623 -0
- package/augment-extensions/domain-rules/wordpress-plugin/examples/object-oriented-plugin.md +1343 -0
- package/augment-extensions/domain-rules/wordpress-plugin/examples/rest-endpoint.md +734 -0
- package/augment-extensions/domain-rules/wordpress-plugin/examples/settings-page-plugin.md +1350 -0
- package/augment-extensions/domain-rules/wordpress-plugin/examples/simple-procedural-plugin.md +503 -0
- package/augment-extensions/domain-rules/wordpress-plugin/examples/singleton-plugin.md +971 -0
- package/augment-extensions/domain-rules/wordpress-plugin/module.json +53 -0
- package/augment-extensions/domain-rules/wordpress-plugin/rules/activation-hooks.md +770 -0
- package/augment-extensions/domain-rules/wordpress-plugin/rules/admin-interface.md +874 -0
- package/augment-extensions/domain-rules/wordpress-plugin/rules/ajax-handlers.md +629 -0
- package/augment-extensions/domain-rules/wordpress-plugin/rules/asset-management.md +559 -0
- package/augment-extensions/domain-rules/wordpress-plugin/rules/context-providers.md +709 -0
- package/augment-extensions/domain-rules/wordpress-plugin/rules/cron-jobs.md +736 -0
- package/augment-extensions/domain-rules/wordpress-plugin/rules/database-management.md +1057 -0
- package/augment-extensions/domain-rules/wordpress-plugin/rules/documentation-standards.md +463 -0
- package/augment-extensions/domain-rules/wordpress-plugin/rules/frontend-functionality.md +478 -0
- package/augment-extensions/domain-rules/wordpress-plugin/rules/gutenberg-blocks.md +818 -0
- package/augment-extensions/domain-rules/wordpress-plugin/rules/internationalization.md +416 -0
- package/augment-extensions/domain-rules/wordpress-plugin/rules/migration.md +667 -0
- package/augment-extensions/domain-rules/wordpress-plugin/rules/performance-optimization.md +878 -0
- package/augment-extensions/domain-rules/wordpress-plugin/rules/plugin-architecture.md +693 -0
- package/augment-extensions/domain-rules/wordpress-plugin/rules/plugin-structure.md +352 -0
- package/augment-extensions/domain-rules/wordpress-plugin/rules/rest-api.md +818 -0
- package/augment-extensions/domain-rules/wordpress-plugin/rules/scaffolding-workflow.md +624 -0
- package/augment-extensions/domain-rules/wordpress-plugin/rules/security-best-practices.md +866 -0
- package/augment-extensions/domain-rules/wordpress-plugin/rules/testing-patterns.md +1165 -0
- package/augment-extensions/domain-rules/wordpress-plugin/rules/testing.md +414 -0
- package/augment-extensions/domain-rules/wordpress-plugin/rules/vscode-integration.md +751 -0
- package/augment-extensions/domain-rules/wordpress-plugin/rules/woocommerce-integration.md +949 -0
- package/augment-extensions/domain-rules/wordpress-plugin/rules/wordpress-org-submission.md +458 -0
- package/augment-extensions/examples/gutenberg-block-plugin/README.md +101 -0
- package/augment-extensions/examples/gutenberg-block-plugin/examples/testimonial-block.md +428 -0
- package/augment-extensions/examples/gutenberg-block-plugin/module.json +40 -0
- package/augment-extensions/examples/rest-api-plugin/README.md +98 -0
- package/augment-extensions/examples/rest-api-plugin/examples/task-manager-api.md +1299 -0
- package/augment-extensions/examples/rest-api-plugin/module.json +40 -0
- package/augment-extensions/examples/woocommerce-extension/README.md +98 -0
- package/augment-extensions/examples/woocommerce-extension/examples/product-customizer.md +763 -0
- package/augment-extensions/examples/woocommerce-extension/module.json +40 -0
- package/augment-extensions/workflows/beads/module.json +4 -3
- 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/workflows/wordpress-plugin/README.md +232 -0
- package/augment-extensions/workflows/wordpress-plugin/ai-prompts.md +839 -0
- package/augment-extensions/workflows/wordpress-plugin/bead-decomposition-patterns.md +854 -0
- package/augment-extensions/workflows/wordpress-plugin/examples/complete-plugin-example.md +540 -0
- package/augment-extensions/workflows/wordpress-plugin/examples/custom-post-type-example.md +1083 -0
- package/augment-extensions/workflows/wordpress-plugin/examples/feature-addition-workflow.md +669 -0
- package/augment-extensions/workflows/wordpress-plugin/examples/plugin-creation-workflow.md +597 -0
- package/augment-extensions/workflows/wordpress-plugin/examples/secure-form-handler-example.md +925 -0
- package/augment-extensions/workflows/wordpress-plugin/examples/security-audit-workflow.md +752 -0
- package/augment-extensions/workflows/wordpress-plugin/examples/wordpress-org-submission-workflow.md +773 -0
- package/augment-extensions/workflows/wordpress-plugin/module.json +49 -0
- package/augment-extensions/workflows/wordpress-plugin/rules/best-practices.md +942 -0
- package/augment-extensions/workflows/wordpress-plugin/rules/development-workflow.md +702 -0
- package/augment-extensions/workflows/wordpress-plugin/rules/submission-workflow.md +728 -0
- package/augment-extensions/workflows/wordpress-plugin/rules/testing-workflow.md +775 -0
- package/augment-extensions/writing-standards/screenplay/README.md +171 -0
- package/augment-extensions/writing-standards/screenplay/examples/aaa-hollywood-scene.fountain +164 -0
- package/augment-extensions/writing-standards/screenplay/module.json +124 -0
- package/augment-extensions/writing-standards/screenplay/rules/universal-formatting.md +339 -0
- package/cli/MODULES.md +302 -0
- package/cli/dist/cli.js +142 -9
- 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.map +1 -1
- package/cli/dist/commands/show.js +42 -71
- 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/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/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 +153 -0
- package/cli/dist/utils/module-system.d.ts.map +1 -0
- package/cli/dist/utils/module-system.js +528 -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 +534 -70
- package/package.json +12 -3
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
# Model Context Protocol (MCP) Guidelines
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
|
|
5
|
+
This module provides comprehensive guidelines for designing and implementing **Model Context Protocol (MCP)** systems. MCP refers to the strategies and patterns for managing context in Large Language Model (LLM) applications, including how context is stored, retrieved, compressed, and injected into prompts.
|
|
6
|
+
|
|
7
|
+
## Key Benefits
|
|
8
|
+
|
|
9
|
+
- **Multi-Type Coverage**: Guidelines for 6 MCP types (token, state, vector, hybrid, graph, compressed)
|
|
10
|
+
- **Universal Rules**: Cross-cutting concerns (security, monitoring, testing)
|
|
11
|
+
- **Configuration System**: Flexible project-level configuration
|
|
12
|
+
- **Practical Examples**: Real-world implementation patterns
|
|
13
|
+
- **Best Practices**: Industry-proven patterns and anti-patterns
|
|
14
|
+
|
|
15
|
+
## Installation
|
|
16
|
+
|
|
17
|
+
### With CLI (Future)
|
|
18
|
+
```bash
|
|
19
|
+
augx link domain-rules/mcp
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
### Without CLI (Current)
|
|
23
|
+
1. Copy this module to your project's `.augment/` folder
|
|
24
|
+
2. Reference rule files in your project's AGENTS.md
|
|
25
|
+
3. Create `.augment/mcp-config.json` with your configuration
|
|
26
|
+
|
|
27
|
+
## Directory Structure
|
|
28
|
+
|
|
29
|
+
```
|
|
30
|
+
augment-extensions/domain-rules/mcp/
|
|
31
|
+
├── module.json # Module metadata
|
|
32
|
+
├── README.md # This file
|
|
33
|
+
├── rules/ # Detailed guidelines
|
|
34
|
+
│ ├── universal-rules.md # Cross-cutting concerns
|
|
35
|
+
│ ├── configuration.md # Configuration system
|
|
36
|
+
│ ├── testing-validation.md # Testing strategies
|
|
37
|
+
│ ├── token-based-mcp.md # Token-based MCP
|
|
38
|
+
│ ├── state-based-mcp.md # State-based MCP
|
|
39
|
+
│ ├── vector-based-mcp.md # Vector-based MCP (RAG)
|
|
40
|
+
│ ├── hybrid-mcp.md # Hybrid multi-memory
|
|
41
|
+
│ ├── graph-augmented-mcp.md # Graph-augmented MCP
|
|
42
|
+
│ └── compressed-mcp.md # Compressed MCP
|
|
43
|
+
└── examples/ # Implementation examples
|
|
44
|
+
├── token-based-example.md # Legal contract analysis
|
|
45
|
+
├── state-based-example.md # Customer support agent
|
|
46
|
+
├── vector-based-example.md # Knowledge base Q&A
|
|
47
|
+
├── hybrid-example.md # Research assistant
|
|
48
|
+
├── graph-augmented-example.md # Supply chain analysis
|
|
49
|
+
└── compressed-example.md # Mobile assistant
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
## MCP Types
|
|
53
|
+
|
|
54
|
+
### 1. Token-Based MCP
|
|
55
|
+
Manage context within token limits using compression, chunking, and budgeting.
|
|
56
|
+
|
|
57
|
+
**Use Cases**: Long document analysis, legal contracts, research papers
|
|
58
|
+
|
|
59
|
+
### 2. State-Based MCP
|
|
60
|
+
Persist conversation state across sessions with serialization and concurrency control.
|
|
61
|
+
|
|
62
|
+
**Use Cases**: Customer support, multi-turn agents, workflow automation
|
|
63
|
+
|
|
64
|
+
### 3. Vector-Based MCP
|
|
65
|
+
Retrieve relevant context using semantic search and embeddings (RAG).
|
|
66
|
+
|
|
67
|
+
**Use Cases**: Knowledge base Q&A, documentation search, semantic retrieval
|
|
68
|
+
|
|
69
|
+
### 4. Hybrid MCP
|
|
70
|
+
Combine multiple memory types (token + vector + state) for complex applications.
|
|
71
|
+
|
|
72
|
+
**Use Cases**: Research assistants, enterprise agents, multi-modal systems
|
|
73
|
+
|
|
74
|
+
### 5. Graph-Augmented MCP
|
|
75
|
+
Use knowledge graphs for structured context with entity relationships.
|
|
76
|
+
|
|
77
|
+
**Use Cases**: Supply chain analysis, fraud detection, knowledge management
|
|
78
|
+
|
|
79
|
+
### 6. Compressed MCP
|
|
80
|
+
Apply aggressive compression for resource-constrained environments.
|
|
81
|
+
|
|
82
|
+
**Use Cases**: Mobile apps, edge devices, cost-sensitive applications
|
|
83
|
+
|
|
84
|
+
## Core Workflow
|
|
85
|
+
|
|
86
|
+
### 1. Choose MCP Type(s)
|
|
87
|
+
|
|
88
|
+
Analyze your requirements:
|
|
89
|
+
- **Token limits?** → Token-based
|
|
90
|
+
- **Persistent state?** → State-based
|
|
91
|
+
- **Large knowledge base?** → Vector-based
|
|
92
|
+
- **Complex requirements?** → Hybrid
|
|
93
|
+
- **Structured knowledge?** → Graph-augmented
|
|
94
|
+
- **Resource constraints?** → Compressed
|
|
95
|
+
|
|
96
|
+
### 2. Configure Module
|
|
97
|
+
|
|
98
|
+
Create `.augment/mcp-config.json`:
|
|
99
|
+
|
|
100
|
+
```json
|
|
101
|
+
{
|
|
102
|
+
"version": "1.0",
|
|
103
|
+
"mcpTypes": ["token", "vector"],
|
|
104
|
+
"strictMode": true,
|
|
105
|
+
"universalRules": true,
|
|
106
|
+
"typeSpecificConfig": {
|
|
107
|
+
"token": {
|
|
108
|
+
"maxContextWindow": 200000,
|
|
109
|
+
"compressionThreshold": 0.85
|
|
110
|
+
},
|
|
111
|
+
"vector": {
|
|
112
|
+
"embeddingModel": "voyage-3-large",
|
|
113
|
+
"topK": 10
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
### 3. Apply Rules
|
|
120
|
+
|
|
121
|
+
Follow type-specific guidelines from `rules/` directory:
|
|
122
|
+
- Read universal rules first
|
|
123
|
+
- Apply type-specific patterns
|
|
124
|
+
- Implement testing strategies
|
|
125
|
+
- Monitor and optimize
|
|
126
|
+
|
|
127
|
+
### 4. Validate Implementation
|
|
128
|
+
|
|
129
|
+
Use testing checklist from `rules/testing-validation.md`:
|
|
130
|
+
- Unit tests for transformations
|
|
131
|
+
- Integration tests for pipelines
|
|
132
|
+
- Performance benchmarks
|
|
133
|
+
- Security validation
|
|
134
|
+
|
|
135
|
+
## Character Count
|
|
136
|
+
|
|
137
|
+
**Total**: ~219,130 characters
|
|
138
|
+
|
|
139
|
+
## Contents
|
|
140
|
+
|
|
141
|
+
- **Universal Rules**: Context optimization, error handling, security, monitoring, testing, documentation
|
|
142
|
+
- **Type-Specific Rules**: Detailed guidelines for each of 6 MCP types
|
|
143
|
+
- **Configuration System**: JSON schema, validation, override semantics
|
|
144
|
+
- **Testing Framework**: Unit, integration, synthetic testing strategies
|
|
145
|
+
- **Examples**: 6 complete implementation examples with code
|
|
146
|
+
|
|
147
|
+
## Version History
|
|
148
|
+
|
|
149
|
+
- **1.0.0** (2026-01-29): Initial release with 6 MCP types and universal rules
|
|
150
|
+
|
|
@@ -0,0 +1,522 @@
|
|
|
1
|
+
# Compressed MCP Example: Mobile Assistant
|
|
2
|
+
|
|
3
|
+
## Use Case
|
|
4
|
+
|
|
5
|
+
A mobile AI assistant that operates under strict resource constraints (limited bandwidth, battery, storage) requiring aggressive context compression.
|
|
6
|
+
|
|
7
|
+
**Challenges**:
|
|
8
|
+
- Minimize token usage for cost/latency
|
|
9
|
+
- Compress context without losing critical information
|
|
10
|
+
- Operate on mobile devices with limited resources
|
|
11
|
+
- Balance compression ratio vs. information retention
|
|
12
|
+
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
## Configuration
|
|
16
|
+
|
|
17
|
+
```json
|
|
18
|
+
{
|
|
19
|
+
"mcp": {
|
|
20
|
+
"type": "compressed",
|
|
21
|
+
"compression": {
|
|
22
|
+
"strategy": "multi_stage",
|
|
23
|
+
"stages": [
|
|
24
|
+
{"type": "deduplication", "enabled": true},
|
|
25
|
+
{"type": "summarization", "ratio": 0.3},
|
|
26
|
+
{"type": "entity_extraction", "enabled": true},
|
|
27
|
+
{"type": "semantic_compression", "ratio": 0.5}
|
|
28
|
+
],
|
|
29
|
+
"targetRatio": 0.15,
|
|
30
|
+
"minQualityScore": 0.7
|
|
31
|
+
},
|
|
32
|
+
"caching": {
|
|
33
|
+
"enabled": true,
|
|
34
|
+
"maxSize": "10MB",
|
|
35
|
+
"evictionPolicy": "lru"
|
|
36
|
+
},
|
|
37
|
+
"optimization": {
|
|
38
|
+
"batchRequests": true,
|
|
39
|
+
"prefetch": true,
|
|
40
|
+
"deltaEncoding": true
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
---
|
|
47
|
+
|
|
48
|
+
## Architecture
|
|
49
|
+
|
|
50
|
+
```
|
|
51
|
+
┌─────────────────────────────────────────────────────────────┐
|
|
52
|
+
│ Original Context (10,000 tokens) │
|
|
53
|
+
└─────────────────────────────────────────────────────────────┘
|
|
54
|
+
│
|
|
55
|
+
▼
|
|
56
|
+
┌─────────────────────────────────────────────────────────────┐
|
|
57
|
+
│ Stage 1: Deduplication │
|
|
58
|
+
│ Remove duplicate sentences/phrases │
|
|
59
|
+
│ Output: 8,000 tokens (20% reduction) │
|
|
60
|
+
└─────────────────────────────────────────────────────────────┘
|
|
61
|
+
│
|
|
62
|
+
▼
|
|
63
|
+
┌─────────────────────────────────────────────────────────────┐
|
|
64
|
+
│ Stage 2: Summarization │
|
|
65
|
+
│ Compress to 30% of original │
|
|
66
|
+
│ Output: 2,400 tokens (70% reduction) │
|
|
67
|
+
└─────────────────────────────────────────────────────────────┘
|
|
68
|
+
│
|
|
69
|
+
▼
|
|
70
|
+
┌─────────────────────────────────────────────────────────────┐
|
|
71
|
+
│ Stage 3: Entity Extraction │
|
|
72
|
+
│ Extract key entities and facts │
|
|
73
|
+
│ Output: Structured entities + 1,800 tokens │
|
|
74
|
+
└─────────────────────────────────────────────────────────────┘
|
|
75
|
+
│
|
|
76
|
+
▼
|
|
77
|
+
┌─────────────────────────────────────────────────────────────┐
|
|
78
|
+
│ Stage 4: Semantic Compression │
|
|
79
|
+
│ Compress to 50% using semantic similarity │
|
|
80
|
+
│ Output: 900 tokens (91% total reduction) │
|
|
81
|
+
└─────────────────────────────────────────────────────────────┘
|
|
82
|
+
│
|
|
83
|
+
▼
|
|
84
|
+
┌─────────────────────────────────────────────────────────────┐
|
|
85
|
+
│ Final Compressed Context (1,500 tokens) │
|
|
86
|
+
│ Entities + Compressed Text │
|
|
87
|
+
│ Compression Ratio: 15% │
|
|
88
|
+
└─────────────────────────────────────────────────────────────┘
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
---
|
|
92
|
+
|
|
93
|
+
## Implementation
|
|
94
|
+
|
|
95
|
+
### Step 1: Compression Pipeline
|
|
96
|
+
|
|
97
|
+
```python
|
|
98
|
+
import tiktoken
|
|
99
|
+
from typing import List, Dict, Any
|
|
100
|
+
import openai
|
|
101
|
+
from collections import Counter
|
|
102
|
+
import hashlib
|
|
103
|
+
|
|
104
|
+
class CompressionPipeline:
|
|
105
|
+
def __init__(self, config: Dict[str, Any], openai_api_key: str):
|
|
106
|
+
self.config = config
|
|
107
|
+
self.client = openai.OpenAI(api_key=openai_api_key)
|
|
108
|
+
self.tokenizer = tiktoken.encoding_for_model("gpt-4o")
|
|
109
|
+
self.target_ratio = config["compression"]["targetRatio"]
|
|
110
|
+
|
|
111
|
+
def compress(self, text: str) -> Dict[str, Any]:
|
|
112
|
+
"""Apply multi-stage compression"""
|
|
113
|
+
stages = self.config["compression"]["stages"]
|
|
114
|
+
|
|
115
|
+
current_text = text
|
|
116
|
+
original_tokens = len(self.tokenizer.encode(text))
|
|
117
|
+
compression_log = []
|
|
118
|
+
|
|
119
|
+
for stage in stages:
|
|
120
|
+
if not stage.get("enabled", True):
|
|
121
|
+
continue
|
|
122
|
+
|
|
123
|
+
stage_type = stage["type"]
|
|
124
|
+
|
|
125
|
+
if stage_type == "deduplication":
|
|
126
|
+
current_text = self._deduplicate(current_text)
|
|
127
|
+
elif stage_type == "summarization":
|
|
128
|
+
current_text = self._summarize(current_text, stage["ratio"])
|
|
129
|
+
elif stage_type == "entity_extraction":
|
|
130
|
+
entities = self._extract_entities(current_text)
|
|
131
|
+
current_text = self._compress_with_entities(current_text, entities)
|
|
132
|
+
elif stage_type == "semantic_compression":
|
|
133
|
+
current_text = self._semantic_compress(current_text, stage["ratio"])
|
|
134
|
+
|
|
135
|
+
current_tokens = len(self.tokenizer.encode(current_text))
|
|
136
|
+
compression_log.append({
|
|
137
|
+
"stage": stage_type,
|
|
138
|
+
"tokens": current_tokens,
|
|
139
|
+
"ratio": current_tokens / original_tokens
|
|
140
|
+
})
|
|
141
|
+
|
|
142
|
+
final_tokens = len(self.tokenizer.encode(current_text))
|
|
143
|
+
|
|
144
|
+
return {
|
|
145
|
+
"compressed_text": current_text,
|
|
146
|
+
"original_tokens": original_tokens,
|
|
147
|
+
"compressed_tokens": final_tokens,
|
|
148
|
+
"compression_ratio": final_tokens / original_tokens,
|
|
149
|
+
"stages": compression_log
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
def _deduplicate(self, text: str) -> str:
|
|
153
|
+
"""Remove duplicate sentences"""
|
|
154
|
+
sentences = text.split('. ')
|
|
155
|
+
seen = set()
|
|
156
|
+
unique_sentences = []
|
|
157
|
+
|
|
158
|
+
for sentence in sentences:
|
|
159
|
+
# Hash sentence for deduplication
|
|
160
|
+
sentence_hash = hashlib.md5(sentence.lower().strip().encode()).hexdigest()
|
|
161
|
+
|
|
162
|
+
if sentence_hash not in seen:
|
|
163
|
+
seen.add(sentence_hash)
|
|
164
|
+
unique_sentences.append(sentence)
|
|
165
|
+
|
|
166
|
+
return '. '.join(unique_sentences)
|
|
167
|
+
|
|
168
|
+
def _summarize(self, text: str, ratio: float) -> str:
|
|
169
|
+
"""Summarize text to target ratio"""
|
|
170
|
+
current_tokens = len(self.tokenizer.encode(text))
|
|
171
|
+
target_tokens = int(current_tokens * ratio)
|
|
172
|
+
|
|
173
|
+
response = self.client.chat.completions.create(
|
|
174
|
+
model="gpt-4o-mini", # Use mini for cost efficiency
|
|
175
|
+
messages=[
|
|
176
|
+
{
|
|
177
|
+
"role": "system",
|
|
178
|
+
"content": f"Summarize the text to approximately {target_tokens} tokens. Preserve key information."
|
|
179
|
+
},
|
|
180
|
+
{
|
|
181
|
+
"role": "user",
|
|
182
|
+
"content": text
|
|
183
|
+
}
|
|
184
|
+
],
|
|
185
|
+
temperature=0.3
|
|
186
|
+
)
|
|
187
|
+
|
|
188
|
+
return response.choices[0].message.content
|
|
189
|
+
|
|
190
|
+
def _extract_entities(self, text: str) -> List[Dict[str, Any]]:
|
|
191
|
+
"""Extract key entities from text"""
|
|
192
|
+
response = self.client.chat.completions.create(
|
|
193
|
+
model="gpt-4o-mini",
|
|
194
|
+
messages=[
|
|
195
|
+
{
|
|
196
|
+
"role": "system",
|
|
197
|
+
"content": """Extract key entities from the text.
|
|
198
|
+
|
|
199
|
+
Return JSON array:
|
|
200
|
+
[{"type": "PERSON", "value": "John"}, {"type": "DATE", "value": "2024-01-15"}, ...]"""
|
|
201
|
+
},
|
|
202
|
+
{
|
|
203
|
+
"role": "user",
|
|
204
|
+
"content": text
|
|
205
|
+
}
|
|
206
|
+
],
|
|
207
|
+
response_format={"type": "json_object"}
|
|
208
|
+
)
|
|
209
|
+
|
|
210
|
+
import json
|
|
211
|
+
result = json.loads(response.choices[0].message.content)
|
|
212
|
+
return result.get("entities", [])
|
|
213
|
+
|
|
214
|
+
def _compress_with_entities(self, text: str, entities: List[Dict[str, Any]]) -> str:
|
|
215
|
+
"""Compress text while preserving entities"""
|
|
216
|
+
# Create entity placeholders
|
|
217
|
+
entity_map = {}
|
|
218
|
+
compressed_text = text
|
|
219
|
+
|
|
220
|
+
for i, entity in enumerate(entities):
|
|
221
|
+
placeholder = f"[E{i}]"
|
|
222
|
+
entity_map[placeholder] = f"{entity['type']}:{entity['value']}"
|
|
223
|
+
compressed_text = compressed_text.replace(entity['value'], placeholder)
|
|
224
|
+
|
|
225
|
+
# Add entity legend
|
|
226
|
+
entity_legend = "\n\nEntities: " + ", ".join(f"{k}={v}" for k, v in entity_map.items())
|
|
227
|
+
|
|
228
|
+
return compressed_text + entity_legend
|
|
229
|
+
|
|
230
|
+
def _semantic_compress(self, text: str, ratio: float) -> str:
|
|
231
|
+
"""Compress using semantic similarity (remove redundant sentences)"""
|
|
232
|
+
sentences = text.split('. ')
|
|
233
|
+
|
|
234
|
+
if len(sentences) <= 3:
|
|
235
|
+
return text
|
|
236
|
+
|
|
237
|
+
# Simple heuristic: keep sentences with unique keywords
|
|
238
|
+
target_count = max(3, int(len(sentences) * ratio))
|
|
239
|
+
|
|
240
|
+
# Score sentences by keyword diversity
|
|
241
|
+
all_words = ' '.join(sentences).lower().split()
|
|
242
|
+
word_freq = Counter(all_words)
|
|
243
|
+
|
|
244
|
+
sentence_scores = []
|
|
245
|
+
for sentence in sentences:
|
|
246
|
+
words = sentence.lower().split()
|
|
247
|
+
# Score based on rare words (more informative)
|
|
248
|
+
score = sum(1 / (word_freq[word] + 1) for word in words if word in word_freq)
|
|
249
|
+
sentence_scores.append((score, sentence))
|
|
250
|
+
|
|
251
|
+
# Keep top-scoring sentences
|
|
252
|
+
sentence_scores.sort(reverse=True)
|
|
253
|
+
selected_sentences = [s for _, s in sentence_scores[:target_count]]
|
|
254
|
+
|
|
255
|
+
return '. '.join(selected_sentences)
|
|
256
|
+
|
|
257
|
+
class MobileAssistant:
|
|
258
|
+
def __init__(self, config: Dict[str, Any], openai_api_key: str):
|
|
259
|
+
self.compression_pipeline = CompressionPipeline(config, openai_api_key)
|
|
260
|
+
self.client = openai.OpenAI(api_key=openai_api_key)
|
|
261
|
+
self.cache = {} # Simple in-memory cache
|
|
262
|
+
self.cache_max_size = 10 * 1024 * 1024 # 10MB
|
|
263
|
+
|
|
264
|
+
def process_query(self, query: str, context: str) -> Dict[str, Any]:
|
|
265
|
+
"""Process query with compressed context"""
|
|
266
|
+
# Check cache
|
|
267
|
+
cache_key = hashlib.md5(context.encode()).hexdigest()
|
|
268
|
+
|
|
269
|
+
if cache_key in self.cache:
|
|
270
|
+
compressed_result = self.cache[cache_key]
|
|
271
|
+
else:
|
|
272
|
+
# Compress context
|
|
273
|
+
compressed_result = self.compression_pipeline.compress(context)
|
|
274
|
+
|
|
275
|
+
# Cache result
|
|
276
|
+
self._cache_result(cache_key, compressed_result)
|
|
277
|
+
|
|
278
|
+
# Generate response with compressed context
|
|
279
|
+
response = self.client.chat.completions.create(
|
|
280
|
+
model="gpt-4o-mini", # Use mini for mobile efficiency
|
|
281
|
+
messages=[
|
|
282
|
+
{
|
|
283
|
+
"role": "system",
|
|
284
|
+
"content": "You are a helpful mobile assistant. Use the compressed context to answer questions concisely."
|
|
285
|
+
},
|
|
286
|
+
{
|
|
287
|
+
"role": "user",
|
|
288
|
+
"content": f"""Context (compressed):
|
|
289
|
+
{compressed_result['compressed_text']}
|
|
290
|
+
|
|
291
|
+
Question: {query}
|
|
292
|
+
|
|
293
|
+
Answer:"""
|
|
294
|
+
}
|
|
295
|
+
],
|
|
296
|
+
temperature=0.5,
|
|
297
|
+
max_tokens=200 # Limit response length for mobile
|
|
298
|
+
)
|
|
299
|
+
|
|
300
|
+
answer = response.choices[0].message.content
|
|
301
|
+
|
|
302
|
+
return {
|
|
303
|
+
"answer": answer,
|
|
304
|
+
"compression_stats": {
|
|
305
|
+
"original_tokens": compressed_result["original_tokens"],
|
|
306
|
+
"compressed_tokens": compressed_result["compressed_tokens"],
|
|
307
|
+
"compression_ratio": compressed_result["compression_ratio"],
|
|
308
|
+
"stages": compressed_result["stages"]
|
|
309
|
+
},
|
|
310
|
+
"cached": cache_key in self.cache
|
|
311
|
+
}
|
|
312
|
+
|
|
313
|
+
def _cache_result(self, key: str, result: Dict[str, Any]) -> None:
|
|
314
|
+
"""Cache compression result with LRU eviction"""
|
|
315
|
+
import sys
|
|
316
|
+
|
|
317
|
+
result_size = sys.getsizeof(result)
|
|
318
|
+
|
|
319
|
+
# Simple LRU: remove oldest if cache full
|
|
320
|
+
if sum(sys.getsizeof(v) for v in self.cache.values()) + result_size > self.cache_max_size:
|
|
321
|
+
if self.cache:
|
|
322
|
+
oldest_key = next(iter(self.cache))
|
|
323
|
+
del self.cache[oldest_key]
|
|
324
|
+
|
|
325
|
+
self.cache[key] = result
|
|
326
|
+
```
|
|
327
|
+
|
|
328
|
+
---
|
|
329
|
+
|
|
330
|
+
## Usage Example
|
|
331
|
+
|
|
332
|
+
```python
|
|
333
|
+
# Configuration
|
|
334
|
+
config = {
|
|
335
|
+
"compression": {
|
|
336
|
+
"strategy": "multi_stage",
|
|
337
|
+
"stages": [
|
|
338
|
+
{"type": "deduplication", "enabled": True},
|
|
339
|
+
{"type": "summarization", "ratio": 0.3},
|
|
340
|
+
{"type": "entity_extraction", "enabled": True},
|
|
341
|
+
{"type": "semantic_compression", "ratio": 0.5}
|
|
342
|
+
],
|
|
343
|
+
"targetRatio": 0.15,
|
|
344
|
+
"minQualityScore": 0.7
|
|
345
|
+
},
|
|
346
|
+
"caching": {
|
|
347
|
+
"enabled": True,
|
|
348
|
+
"maxSize": "10MB",
|
|
349
|
+
"evictionPolicy": "lru"
|
|
350
|
+
}
|
|
351
|
+
}
|
|
352
|
+
|
|
353
|
+
# Initialize assistant
|
|
354
|
+
assistant = MobileAssistant(config, "your-openai-key")
|
|
355
|
+
|
|
356
|
+
# Long context (e.g., article, documentation)
|
|
357
|
+
long_context = """
|
|
358
|
+
[Long article text here - 10,000 tokens]
|
|
359
|
+
Python is a high-level programming language. Python is widely used.
|
|
360
|
+
Python supports multiple programming paradigms. Python has a large ecosystem.
|
|
361
|
+
...
|
|
362
|
+
"""
|
|
363
|
+
|
|
364
|
+
# Process query with compression
|
|
365
|
+
result = assistant.process_query(
|
|
366
|
+
query="What are the key features of Python?",
|
|
367
|
+
context=long_context
|
|
368
|
+
)
|
|
369
|
+
|
|
370
|
+
print(f"Answer: {result['answer']}")
|
|
371
|
+
print(f"\nCompression Stats:")
|
|
372
|
+
print(f" Original: {result['compression_stats']['original_tokens']} tokens")
|
|
373
|
+
print(f" Compressed: {result['compression_stats']['compressed_tokens']} tokens")
|
|
374
|
+
print(f" Ratio: {result['compression_stats']['compression_ratio']:.2%}")
|
|
375
|
+
print(f" Cached: {result['cached']}")
|
|
376
|
+
```
|
|
377
|
+
|
|
378
|
+
---
|
|
379
|
+
|
|
380
|
+
## Key Features
|
|
381
|
+
|
|
382
|
+
### 1. Multi-Stage Compression
|
|
383
|
+
- Deduplication (remove duplicates)
|
|
384
|
+
- Summarization (compress to ratio)
|
|
385
|
+
- Entity extraction (preserve key info)
|
|
386
|
+
- Semantic compression (remove redundancy)
|
|
387
|
+
|
|
388
|
+
### 2. Caching
|
|
389
|
+
- LRU eviction policy
|
|
390
|
+
- Size-based limits (10MB)
|
|
391
|
+
- Cache hit tracking
|
|
392
|
+
|
|
393
|
+
### 3. Mobile Optimization
|
|
394
|
+
- Use gpt-4o-mini for cost/speed
|
|
395
|
+
- Limit response tokens (200)
|
|
396
|
+
- Batch requests when possible
|
|
397
|
+
- Prefetch common contexts
|
|
398
|
+
|
|
399
|
+
### 4. Quality Preservation
|
|
400
|
+
- Entity preservation
|
|
401
|
+
- Keyword diversity scoring
|
|
402
|
+
- Configurable quality thresholds
|
|
403
|
+
|
|
404
|
+
---
|
|
405
|
+
|
|
406
|
+
## Testing
|
|
407
|
+
|
|
408
|
+
```python
|
|
409
|
+
import pytest
|
|
410
|
+
|
|
411
|
+
def test_deduplication():
|
|
412
|
+
pipeline = CompressionPipeline(config, "key")
|
|
413
|
+
|
|
414
|
+
text = "Python is great. Python is great. Python is awesome."
|
|
415
|
+
result = pipeline._deduplicate(text)
|
|
416
|
+
|
|
417
|
+
assert result.count("Python is great") == 1
|
|
418
|
+
|
|
419
|
+
def test_compression_ratio():
|
|
420
|
+
pipeline = CompressionPipeline(config, "key")
|
|
421
|
+
|
|
422
|
+
text = "This is a long text. " * 100
|
|
423
|
+
result = pipeline.compress(text)
|
|
424
|
+
|
|
425
|
+
assert result["compression_ratio"] < 0.5
|
|
426
|
+
assert result["compressed_tokens"] < result["original_tokens"]
|
|
427
|
+
|
|
428
|
+
def test_caching():
|
|
429
|
+
assistant = MobileAssistant(config, "key")
|
|
430
|
+
|
|
431
|
+
context = "Test context"
|
|
432
|
+
|
|
433
|
+
# First call - not cached
|
|
434
|
+
result1 = assistant.process_query("test", context)
|
|
435
|
+
assert not result1["cached"]
|
|
436
|
+
|
|
437
|
+
# Second call - cached
|
|
438
|
+
result2 = assistant.process_query("test", context)
|
|
439
|
+
assert result2["cached"]
|
|
440
|
+
|
|
441
|
+
def test_entity_extraction():
|
|
442
|
+
pipeline = CompressionPipeline(config, "key")
|
|
443
|
+
|
|
444
|
+
text = "John met Mary on January 15, 2024 in New York."
|
|
445
|
+
entities = pipeline._extract_entities(text)
|
|
446
|
+
|
|
447
|
+
assert len(entities) > 0
|
|
448
|
+
assert any(e["type"] == "PERSON" for e in entities)
|
|
449
|
+
```
|
|
450
|
+
|
|
451
|
+
---
|
|
452
|
+
|
|
453
|
+
## Best Practices
|
|
454
|
+
|
|
455
|
+
1. **Compression Ratio**: Target 10-20% for mobile use cases
|
|
456
|
+
2. **Quality Monitoring**: Track information retention metrics
|
|
457
|
+
3. **Caching Strategy**: Cache frequently accessed contexts
|
|
458
|
+
4. **Model Selection**: Use gpt-4o-mini for cost efficiency
|
|
459
|
+
5. **Batch Processing**: Batch multiple compressions
|
|
460
|
+
6. **Progressive Compression**: Compress incrementally as needed
|
|
461
|
+
7. **Fallback**: Keep original context for quality checks
|
|
462
|
+
8. **Monitoring**: Track compression performance and quality
|
|
463
|
+
|
|
464
|
+
---
|
|
465
|
+
|
|
466
|
+
## Performance Optimization
|
|
467
|
+
|
|
468
|
+
- **Parallel Compression**: Compress multiple contexts in parallel
|
|
469
|
+
- **Incremental Updates**: Only compress new content
|
|
470
|
+
- **Delta Encoding**: Store only changes from previous version
|
|
471
|
+
- **Prefetching**: Prefetch and compress common contexts
|
|
472
|
+
- **Lazy Compression**: Compress only when needed
|
|
473
|
+
- **Compression Levels**: Offer multiple compression levels
|
|
474
|
+
|
|
475
|
+
---
|
|
476
|
+
|
|
477
|
+
## Quality Metrics
|
|
478
|
+
|
|
479
|
+
### Compression Metrics
|
|
480
|
+
- **Compression Ratio**: Compressed tokens / Original tokens
|
|
481
|
+
- **Latency**: Time to compress
|
|
482
|
+
- **Cache Hit Rate**: Cached requests / Total requests
|
|
483
|
+
|
|
484
|
+
### Quality Metrics
|
|
485
|
+
- **Information Retention**: Key facts preserved
|
|
486
|
+
- **Entity Preservation**: Critical entities retained
|
|
487
|
+
- **Semantic Similarity**: Cosine similarity to original
|
|
488
|
+
- **User Satisfaction**: Feedback on answer quality
|
|
489
|
+
|
|
490
|
+
---
|
|
491
|
+
|
|
492
|
+
## Mobile-Specific Optimizations
|
|
493
|
+
|
|
494
|
+
### Bandwidth Optimization
|
|
495
|
+
- Compress requests/responses
|
|
496
|
+
- Use delta encoding for updates
|
|
497
|
+
- Batch multiple requests
|
|
498
|
+
- Prefetch common queries
|
|
499
|
+
|
|
500
|
+
### Battery Optimization
|
|
501
|
+
- Minimize API calls
|
|
502
|
+
- Cache aggressively
|
|
503
|
+
- Use efficient models (mini)
|
|
504
|
+
- Reduce token usage
|
|
505
|
+
|
|
506
|
+
### Storage Optimization
|
|
507
|
+
- Limit cache size (10MB)
|
|
508
|
+
- LRU eviction
|
|
509
|
+
- Compress cached data
|
|
510
|
+
- Periodic cache cleanup
|
|
511
|
+
|
|
512
|
+
---
|
|
513
|
+
|
|
514
|
+
## Security
|
|
515
|
+
|
|
516
|
+
- **Data Minimization**: Only compress necessary data
|
|
517
|
+
- **Cache Encryption**: Encrypt cached contexts
|
|
518
|
+
- **PII Handling**: Remove PII before compression
|
|
519
|
+
- **Audit Logging**: Log compression operations
|
|
520
|
+
- **Rate Limiting**: Limit compression requests per user
|
|
521
|
+
```
|
|
522
|
+
|