mcp-efficiency-engine 0.1.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/.github/CODEOWNERS +40 -0
- package/.github/GITHUB_MCP_INTEGRATION.md +366 -0
- package/.github/ISSUE_TEMPLATE/bug.md +51 -0
- package/.github/ISSUE_TEMPLATE/feature_request.md +45 -0
- package/.github/ISSUE_TEMPLATE/question.md +18 -0
- package/.github/agents/backend.agent.md +18 -0
- package/.github/agents/community-manager.agent.md +18 -0
- package/.github/agents/dba.agent.md +18 -0
- package/.github/agents/frontend-agent.agent.md +18 -0
- package/.github/agents/github-repository-manager.agent.md +338 -0
- package/.github/agents/iot.agent.md +20 -0
- package/.github/agents/legacy.agent.md +18 -0
- package/.github/agents/rag-azure.agent.md +18 -0
- package/.github/agents/rag-local.agent.md +18 -0
- package/.github/agents/snapshot.agent.md +18 -0
- package/.github/agents/ux-ui.agent.md +18 -0
- package/.github/agents/wiki-agent.agent.md +23 -0
- package/.github/copilot-instructions.md +44 -0
- package/.github/instructions/always-on-optimization.instructions.md +54 -0
- package/.github/prompts/auto-route.prompt.md +33 -0
- package/.github/prompts/azure-rag.query.prompt.md +19 -0
- package/.github/prompts/backend.fix-bug.prompt.md +13 -0
- package/.github/prompts/cavecrew.prompt.md +16 -0
- package/.github/prompts/caveman-commit.prompt.md +14 -0
- package/.github/prompts/caveman-compress.prompt.md +15 -0
- package/.github/prompts/caveman-debug.prompt.md +13 -0
- package/.github/prompts/caveman-help.prompt.md +11 -0
- package/.github/prompts/caveman-review.prompt.md +15 -0
- package/.github/prompts/caveman-stats.prompt.md +11 -0
- package/.github/prompts/caveman.prompt.md +11 -0
- package/.github/prompts/community.post.prompt.md +14 -0
- package/.github/prompts/dba.query-review.prompt.md +15 -0
- package/.github/prompts/dev.fix-bug.prompt.md +13 -0
- package/.github/prompts/frontend.code.prompt.md +13 -0
- package/.github/prompts/legacy.impact-analysis.prompt.md +14 -0
- package/.github/prompts/project.kickoff-analysis.prompt.md +51 -0
- package/.github/prompts/rag.knowledge-answer.prompt.md +13 -0
- package/.github/prompts/token-saver-review.prompt.md +14 -0
- package/.github/prompts/ux-ui.review.prompt.md +14 -0
- package/.github/pull_request_template.md +71 -0
- package/.github/skills/ahorro-tokens/SKILL.md +36 -0
- package/.github/skills/azure-rag-enterprise/SKILL.md +24 -0
- package/.github/skills/backend-coding/SKILL.md +24 -0
- package/.github/skills/cavecrew/SKILL.md +17 -0
- package/.github/skills/caveman/SKILL.md +25 -0
- package/.github/skills/caveman-commit/SKILL.md +15 -0
- package/.github/skills/caveman-compress/SKILL.md +14 -0
- package/.github/skills/caveman-help/SKILL.md +19 -0
- package/.github/skills/caveman-mode/SKILL.md +43 -0
- package/.github/skills/caveman-review/SKILL.md +16 -0
- package/.github/skills/caveman-stats/SKILL.md +13 -0
- package/.github/skills/community-content/SKILL.md +22 -0
- package/.github/skills/database-analysis/SKILL.md +23 -0
- package/.github/skills/dev-coding/SKILL.md +24 -0
- package/.github/skills/frontend-coding/SKILL.md +24 -0
- package/.github/skills/human-in-the-loop/SKILL.md +47 -0
- package/.github/skills/iot-architecture/SKILL.md +22 -0
- package/.github/skills/legacy-migration/SKILL.md +22 -0
- package/.github/skills/rag-knowledge/SKILL.md +21 -0
- package/.github/skills/token-saver/SKILL.md +36 -0
- package/.github/skills/ux-ui-governance/SKILL.md +24 -0
- package/.github/skills/wiki-tools.json +24 -0
- package/.github/workflows/auto-devlog.yml +56 -0
- package/.github/workflows/auto-manage-issues.yml +64 -0
- package/.github/workflows/auto-sync.yml +54 -0
- package/.github/workflows/autodocs-sync.yml +114 -0
- package/.github/workflows/ci.yml +68 -0
- package/.github/workflows/pages.yml +59 -0
- package/.github/workflows/routing-evals.yml +59 -0
- package/.github/workflows/techriders-coverage-effective.yml +91 -0
- package/.vscode/mcp.json +44 -0
- package/AGENTS.md +160 -0
- package/ARCHITECTURE.md +57 -0
- package/FINAL_USAGE_GUIDE.md +106 -0
- package/LICENSE +21 -0
- package/README.md +385 -0
- package/README_WIKI.md +130 -0
- package/autodocs/README.md +22 -0
- package/autodocs/schema/wiki-node.schema.json +56 -0
- package/autolearning/feedback-loop.md +90 -0
- package/bin/install-host.js +326 -0
- package/bin/mcpee.js +116 -0
- package/context/repomix/repomix.config.json +20 -0
- package/memory/cross-memory-reasoning.md +17 -0
- package/memory/mempry-registry.yml +16 -0
- package/observability/evals/chat-token-usage-report.json +64 -0
- package/observability/evals/chat-token-usage-report.md +33 -0
- package/observability/evals/iteration-value-report.json +76 -0
- package/observability/evals/iteration-value-report.md +39 -0
- package/observability/evals/learning-loop-report.json +268 -0
- package/observability/evals/learning-loop-report.md +37 -0
- package/observability/evals/repo-intake-eval-cases.md +23 -0
- package/observability/evals/routing-eval-cases.json +68 -0
- package/observability/evals/routing-eval-cases.md +25 -0
- package/observability/evals/routing-eval-report.json +72 -0
- package/observability/evaluation.md +34 -0
- package/observability/logs/copilot-usage-ingest-report.json +13 -0
- package/observability/logs/iteration-metrics.jsonl +75 -0
- package/observability/logs/learning-feedback.jsonl +152 -0
- package/observability/logs/routing-decisions.jsonl +333 -0
- package/observability/logs/session/agent-pipeline-preflight-20260701-004146.log +8 -0
- package/observability/logs/session/agent-pipeline-preflight-20260701-005554.log +8 -0
- package/observability/logs/session/agent-pipeline-preflight-20260701-010351.log +8 -0
- package/observability/logs/session/agent-pipeline-preflight-20260704-145829.log +8 -0
- package/observability/logs/session/agent-pipeline-preflight-20260704-150021.log +8 -0
- package/observability/logs/session/agent-pipeline-preflight-20260704-154328.log +8 -0
- package/observability/logs/session/bye-20260629-221513.json +39 -0
- package/observability/logs/session/bye-20260629-221545.json +59 -0
- package/observability/logs/session/bye-20260629-222007.json +52 -0
- package/observability/logs/session/bye-20260629-222133.json +59 -0
- package/observability/logs/session/bye-20260629-222412.json +45 -0
- package/observability/logs/session/bye-20260629-223224.json +52 -0
- package/observability/logs/session/bye-20260629-224050.json +59 -0
- package/observability/logs/session/bye-20260630-105732.json +24 -0
- package/observability/logs/session/bye-20260630-211536.json +87 -0
- package/observability/logs/session/bye-20260630-223423.json +87 -0
- package/observability/logs/session/bye-20260630-232534.json +87 -0
- package/observability/logs/session/bye-20260701-003638.json +126 -0
- package/observability/logs/session/bye-20260701-003849.json +126 -0
- package/observability/logs/session/bye-20260701-004315.json +138 -0
- package/observability/logs/session/bye-20260701-004559.json +76 -0
- package/observability/logs/session/bye-20260701-005913.json +138 -0
- package/observability/logs/session/bye-20260701-010753.json +138 -0
- package/observability/logs/session/bye-20260703-194106.json +24 -0
- package/observability/logs/session/bye-20260703-233443.json +76 -0
- package/observability/logs/session/bye-20260703-233653.json +76 -0
- package/observability/logs/session/bye-20260704-150317.json +152 -0
- package/observability/logs/session/bye-20260704-150929.json +75 -0
- package/observability/logs/session/bye-20260704-151050.json +75 -0
- package/observability/logs/session/bye-20260705-115458.json +165 -0
- package/observability/logs/session/codegraph-status-20260701-004228.log +39 -0
- package/observability/logs/session/codegraph-status-20260701-004310.log +39 -0
- package/observability/logs/session/codegraph-status-20260701-005637.log +39 -0
- package/observability/logs/session/codegraph-status-20260701-005908.log +39 -0
- package/observability/logs/session/codegraph-status-20260701-010444.log +39 -0
- package/observability/logs/session/codegraph-status-20260701-010747.log +39 -0
- package/observability/logs/session/codegraph-status-20260704-150137.log +26 -0
- package/observability/logs/session/codegraph-status-20260704-150313.log +28 -0
- package/observability/logs/session/codegraph-status-20260704-154445.log +26 -0
- package/observability/logs/session/codegraph-status-20260705-115454.log +27 -0
- package/observability/logs/session/codegraph-sync-20260701-004211.log +88 -0
- package/observability/logs/session/codegraph-sync-20260701-004241.log +82 -0
- package/observability/logs/session/codegraph-sync-20260701-005620.log +89 -0
- package/observability/logs/session/codegraph-sync-20260701-005840.log +88 -0
- package/observability/logs/session/codegraph-sync-20260701-010419.log +93 -0
- package/observability/logs/session/codegraph-sync-20260701-010609.log +90 -0
- package/observability/logs/session/codegraph-sync-20260704-145856.log +70 -0
- package/observability/logs/session/codegraph-sync-20260704-150047.log +53 -0
- package/observability/logs/session/codegraph-sync-20260704-150204.log +44 -0
- package/observability/logs/session/codegraph-sync-20260704-154353.log +26 -0
- package/observability/logs/session/codegraph-sync-20260705-115337.log +32 -0
- package/observability/logs/session/hi-20260629-221459.json +38 -0
- package/observability/logs/session/hi-20260629-221945.json +59 -0
- package/observability/logs/session/hi-20260629-222108.json +66 -0
- package/observability/logs/session/hi-20260629-222352.json +45 -0
- package/observability/logs/session/hi-20260629-225719.json +59 -0
- package/observability/logs/session/hi-20260629-233722.json +52 -0
- package/observability/logs/session/hi-20260629-233913.json +198 -0
- package/observability/logs/session/hi-20260630-110156.json +177 -0
- package/observability/logs/session/hi-20260630-191243.json +184 -0
- package/observability/logs/session/hi-20260630-230050.json +234 -0
- package/observability/logs/session/hi-20260630-230523.json +227 -0
- package/observability/logs/session/hi-20260630-230855.json +227 -0
- package/observability/logs/session/hi-20260630-231638.json +227 -0
- package/observability/logs/session/hi-20260630-231756.json +219 -0
- package/observability/logs/session/hi-20260701-002842.json +234 -0
- package/observability/logs/session/hi-20260701-003458.json +282 -0
- package/observability/logs/session/hi-20260701-004233.json +290 -0
- package/observability/logs/session/hi-20260701-004554.json +236 -0
- package/observability/logs/session/hi-20260701-005641.json +290 -0
- package/observability/logs/session/hi-20260701-010450.json +290 -0
- package/observability/logs/session/hi-20260703-233854.json +312 -0
- package/observability/logs/session/hi-20260703-234448.json +318 -0
- package/observability/logs/session/hi-20260704-145907.json +353 -0
- package/observability/logs/session/hi-20260704-150141.json +392 -0
- package/observability/logs/session/hi-20260704-154448.json +392 -0
- package/observability/logs/session/iteration-value-refresh-20260701-004309.log +3 -0
- package/observability/logs/session/iteration-value-refresh-20260701-005907.log +3 -0
- package/observability/logs/session/iteration-value-refresh-20260701-010747.log +3 -0
- package/observability/logs/session/iteration-value-refresh-20260704-150312.log +3 -0
- package/observability/logs/session/iteration-value-refresh-20260705-115453.log +3 -0
- package/observability/logs/session/learning-loop-refresh-20260701-004309.log +3 -0
- package/observability/logs/session/learning-loop-refresh-20260701-005906.log +3 -0
- package/observability/logs/session/learning-loop-refresh-20260701-010745.log +3 -0
- package/observability/logs/session/learning-loop-refresh-20260704-150309.log +3 -0
- package/observability/logs/session/learning-loop-refresh-20260705-115450.log +3 -0
- package/observability/logs/session/project-notes-refresh-20260701-004227.log +1 -0
- package/observability/logs/session/project-notes-refresh-20260701-004308.log +1 -0
- package/observability/logs/session/project-notes-refresh-20260701-005636.log +1 -0
- package/observability/logs/session/project-notes-refresh-20260701-005906.log +1 -0
- package/observability/logs/session/project-notes-refresh-20260701-010443.log +1 -0
- package/observability/logs/session/project-notes-refresh-20260701-010744.log +1 -0
- package/observability/logs/session/project-notes-refresh-20260704-150133.log +1 -0
- package/observability/logs/session/project-notes-refresh-20260704-150309.log +1 -0
- package/observability/logs/session/project-notes-refresh-20260704-154442.log +1 -0
- package/observability/logs/session/project-notes-refresh-20260705-115449.log +1 -0
- package/observability/logs/session/repo-intake-20260701-004218.log +6 -0
- package/observability/logs/session/repo-intake-20260701-005626.log +6 -0
- package/observability/logs/session/repo-intake-20260701-010433.log +6 -0
- package/observability/logs/session/repo-intake-20260704-150053.log +6 -0
- package/observability/logs/session/repo-intake-20260704-154404.log +6 -0
- package/observability/logs/session/repo-intake-refresh-20260701-004247.log +6 -0
- package/observability/logs/session/repo-intake-refresh-20260701-005847.log +6 -0
- package/observability/logs/session/repo-intake-refresh-20260701-010615.log +6 -0
- package/observability/logs/session/repo-intake-refresh-20260704-150209.log +6 -0
- package/observability/logs/session/repo-intake-refresh-20260705-115342.log +6 -0
- package/observability/logs/session/repo-registry-validation-20260701-004234.log +2 -0
- package/observability/logs/session/repo-registry-validation-20260701-004556.log +2 -0
- package/observability/logs/session/repo-registry-validation-20260701-005833.log +2 -0
- package/observability/logs/session/repo-registry-validation-20260701-010601.log +2 -0
- package/observability/logs/session/repo-registry-validation-20260704-150155.log +2 -0
- package/observability/logs/session/repo-registry-validation-20260705-115323.log +2 -0
- package/observability/logs/session/repomix-refresh-20260701-003823.log +4236 -0
- package/observability/logs/session/repomix-refresh-20260701-004251.log +4275 -0
- package/observability/logs/session/repomix-refresh-20260701-005850.log +4248 -0
- package/observability/logs/session/repomix-refresh-20260701-010619.log +6531 -0
- package/observability/logs/session/repomix-refresh-20260704-150239.log +652 -0
- package/observability/logs/session/repomix-refresh-20260705-115419.log +178 -0
- package/observability/logs/session/routing-evals-20260701-004221.log +2 -0
- package/observability/logs/session/routing-evals-20260701-004235.log +2 -0
- package/observability/logs/session/routing-evals-20260701-005629.log +2 -0
- package/observability/logs/session/routing-evals-20260701-005834.log +2 -0
- package/observability/logs/session/routing-evals-20260701-010437.log +2 -0
- package/observability/logs/session/routing-evals-20260701-010603.log +2 -0
- package/observability/logs/session/routing-evals-20260704-150125.log +2 -0
- package/observability/logs/session/routing-evals-20260704-150157.log +2 -0
- package/observability/logs/session/routing-evals-20260704-154434.log +2 -0
- package/observability/logs/session/routing-evals-20260705-115327.log +2 -0
- package/observability/logs/session/sibling-discovery-refresh-20260701-004250.log +3 -0
- package/observability/logs/session/sibling-discovery-refresh-20260701-005850.log +3 -0
- package/observability/logs/session/sibling-discovery-refresh-20260701-010618.log +3 -0
- package/observability/logs/session/sibling-discovery-refresh-20260704-150238.log +3 -0
- package/observability/logs/session/sibling-discovery-refresh-20260705-115418.log +3 -0
- package/observability/logs.schema.json +95 -0
- package/observability/logs.schema.md +26 -0
- package/observability/metrics.md +35 -0
- package/observability/routing-evaluator.md +37 -0
- package/observability/scoring-rubric.md +38 -0
- package/optimization/ALWAYS_ON_OPTIMIZATION.md +98 -0
- package/optimization/caveman-mode.md +62 -0
- package/optimization/examples/login-bug.md +25 -0
- package/optimization/examples/sla-query.md +25 -0
- package/optimization/optimization-routing.md +30 -0
- package/optimization/policies/response-style.policy.md +45 -0
- package/optimization/policies/token-budget.policy.md +28 -0
- package/optimization/profiles/always-on.profile.md +19 -0
- package/optimization/profiles/architecture.profile.md +20 -0
- package/optimization/profiles/debug.profile.md +20 -0
- package/optimization/profiles/enterprise-rag.profile.md +20 -0
- package/optimization/profiles/training.profile.md +20 -0
- package/optimization/token-saver.md +58 -0
- package/orchestrator/corporate-routing.md +51 -0
- package/orchestrator/decision-matrix.md +33 -0
- package/orchestrator/fallback.md +29 -0
- package/orchestrator/repo-routing.md +58 -0
- package/orchestrator/router.md +75 -0
- package/orchestrator/wiki/__init__.py +5 -0
- package/orchestrator/wiki/graph_consolidator.py +506 -0
- package/orchestrator/wiki/incremental_engine.py +57 -0
- package/orchestrator/wiki/plugin_manager.py +40 -0
- package/package.json +70 -0
- package/policies/context-policy.md +25 -0
- package/policies/cost-policy.md +25 -0
- package/policies/repo-intake-policy.md +36 -0
- package/policies/security-policy.md +25 -0
- package/repo-intake/README.md +81 -0
- package/repo-intake/templates/agent.template.md +4 -0
- package/repo-intake/templates/context-manifest.template.md +4 -0
- package/repo-intake/templates/skill.template.md +3 -0
- package/repo-registry/repos.schema.json +102 -0
- package/repo-registry/repos.template.json +26 -0
- package/requirements.txt +1 -0
- package/scripts/README.md +109 -0
- package/scripts/__init__.py +0 -0
- package/scripts/bootstrap-portable.cmd +4 -0
- package/scripts/bootstrap-portable.ps1 +90 -0
- package/scripts/context/azure-rag-mcp-adapter.py +1 -0
- package/scripts/context/build-graphify.ps1 +1 -0
- package/scripts/context/build-repomix.ps1 +1 -0
- package/scripts/discovery/discover-boost-repos.cmd +4 -0
- package/scripts/discovery/discover-boost-repos.py +186 -0
- package/scripts/discovery/refresh-project-notes.py +179 -0
- package/scripts/github/INSTALL.md +295 -0
- package/scripts/github/README.md +455 -0
- package/scripts/github/apply-boost-templates.ps1 +163 -0
- package/scripts/github/apply-single-repo.ps1 +85 -0
- package/scripts/github/create-devlog.ps1 +380 -0
- package/scripts/github/manage-issues.ps1 +332 -0
- package/scripts/github/sync-repo.ps1 +267 -0
- package/scripts/intake/agent-pipeline-preflight.py +151 -0
- package/scripts/intake/init-template-registry.cmd +4 -0
- package/scripts/intake/init-template-registry.ps1 +258 -0
- package/scripts/intake/repo-intake.py +354 -0
- package/scripts/intake/resolve-routing.py +620 -0
- package/scripts/intake/run-repo-intake.cmd +4 -0
- package/scripts/intake/run-repo-intake.ps1 +46 -0
- package/scripts/intake/run-routing-evals.py +147 -0
- package/scripts/intake/validate-database-routing.py +91 -0
- package/scripts/intake/validate-rag-routing.py +85 -0
- package/scripts/intake/validate-repo-registry.ps1 +20 -0
- package/scripts/intake/validate-repo-registry.py +286 -0
- package/scripts/intake/validate-security.py +170 -0
- package/scripts/learning/autolearning-gate.py +71 -0
- package/scripts/learning/chat-token-usage-report.py +326 -0
- package/scripts/learning/ingest-copilot-session-usage.py +421 -0
- package/scripts/learning/iteration-value-report.py +275 -0
- package/scripts/learning/learning-loop-report.py +272 -0
- package/scripts/learning/record-iteration-metrics.py +116 -0
- package/scripts/learning/record-learning-feedback.py +91 -0
- package/scripts/ops/bye.ps1 +620 -0
- package/scripts/ops/compare-demo-results.ps1 +826 -0
- package/scripts/ops/demo1.ps1 +11 -0
- package/scripts/ops/demo2.ps1 +11 -0
- package/scripts/ops/demo3.ps1 +11 -0
- package/scripts/ops/demo4.ps1 +11 -0
- package/scripts/ops/hi.ps1 +1045 -0
- package/scripts/ops/llm-token-probe.py +164 -0
- package/scripts/ops/run-all-demos.ps1 +39 -0
- package/scripts/ops/run-demo-block.ps1 +85 -0
- package/scripts/ops/run-demo-session.ps1 +532 -0
- package/scripts/setup/optimize-engines.ps1 +183 -0
- package/scripts/setup/setup-codegraph.ps1 +3 -0
- package/scripts/setup/setup-gitnexus.ps1 +3 -0
- package/scripts/setup/setup-graphify.ps1 +2 -0
- package/scripts/setup/setup-prerequisites.ps1 +205 -0
- package/scripts/setup/start-gitnexus.ps1 +71 -0
- package/scripts/setup/validate-context.ps1 +361 -0
- package/scripts/wiki/__init__.py +0 -0
- package/scripts/wiki/compiler_main.py +189 -0
- package/scripts/wiki/normalizer.py +206 -0
- package/scripts/wiki/providers/base_provider.py +25 -0
- package/scripts/wiki/providers/codegraph_provider.py +49 -0
- package/scripts/wiki/providers/graphify_provider.py +49 -0
- package/scripts/wiki/providers/repo_content_provider.py +408 -0
- package/scripts/wiki/query_autodocs.py +60 -0
- package/scripts/wiki/validator.py +183 -0
- package/scripts/wiki/wiki_compiler.py +5 -0
- package/specs/architecture.spec.md +32 -0
- package/specs/azure-rag.spec.md +28 -0
- package/specs/coding-standards.spec.md +24 -0
- package/specs/database.spec.md +29 -0
- package/specs/migration.spec.md +26 -0
- package/specs/observability.spec.md +24 -0
- package/specs/optimization.spec.md +31 -0
- package/specs/rag.spec.md +30 -0
- package/specs/repo-intake.spec.md +25 -0
- package/specs/routing.spec.md +24 -0
- package/specs/security.spec.md +30 -0
- package/specs/wiki/provider-contract.json +33 -0
- package/specs/wiki/unified-knowledge-graph.json +25 -0
- package/templates/BOOST_README_TEMPLATE.md +96 -0
- package/templates/CODEOWNERS_TEMPLATE.txt +29 -0
- package/templates/LICENSE_MIT_TEMPLATE.txt +21 -0
- package/templates/PERSONAL_README_TEMPLATE.md +90 -0
- package/templates/README_boost_RAG_Azure.md +46 -0
- package/templates/README_boost_azure_iot_edge.md +48 -0
- package/templates/README_boost_backend.md +47 -0
- package/templates/README_boost_dba.md +57 -0
- package/templates/ci.yml.template +73 -0
- package/tooling/tooling.manifest.json +72 -0
|
@@ -0,0 +1,206 @@
|
|
|
1
|
+
import re
|
|
2
|
+
from typing import Any, Dict, List
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
_SECTION_CATALOG = [
|
|
6
|
+
{
|
|
7
|
+
"id": "capabilities",
|
|
8
|
+
"title": "Capabilities",
|
|
9
|
+
"description": "Capacidades operativas e integraciones disponibles en el motor.",
|
|
10
|
+
},
|
|
11
|
+
{
|
|
12
|
+
"id": "agents",
|
|
13
|
+
"title": "Agents",
|
|
14
|
+
"description": "Agentes y sus responsabilidades dentro del sistema.",
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
"id": "skills",
|
|
18
|
+
"title": "Skills",
|
|
19
|
+
"description": "Skills, comandos y utilidades operativas consumibles por agentes.",
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
"id": "routing",
|
|
23
|
+
"title": "Routing",
|
|
24
|
+
"description": "Reglas de orquestacion y decisiones de enrutado.",
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
"id": "projects",
|
|
28
|
+
"title": "Projects",
|
|
29
|
+
"description": "Proyectos o dominios servidos por MCP Efficiency Engine.",
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
"id": "policies",
|
|
33
|
+
"title": "Policies",
|
|
34
|
+
"description": "Politicas y contratos operativos del repositorio.",
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
"id": "specs",
|
|
38
|
+
"title": "Specs",
|
|
39
|
+
"description": "Especificaciones tecnicas y contratos declarativos.",
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
"id": "observability",
|
|
43
|
+
"title": "Observability",
|
|
44
|
+
"description": "Telemetria, metricas y reportes del sistema.",
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
"id": "reports",
|
|
48
|
+
"title": "Reports",
|
|
49
|
+
"description": "Reportes generados y artefactos de analisis.",
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
"id": "misc",
|
|
53
|
+
"title": "Misc",
|
|
54
|
+
"description": "Contenido no clasificado o pendiente de taxonomy.",
|
|
55
|
+
},
|
|
56
|
+
]
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
def section_catalog() -> List[Dict[str, str]]:
|
|
60
|
+
return list(_SECTION_CATALOG)
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
def normalize_node(node_key: str, raw_node: Dict[str, Any]) -> Dict[str, Any]:
|
|
64
|
+
metadata = raw_node.get("metadata", {}) if isinstance(raw_node.get("metadata", {}), dict) else {}
|
|
65
|
+
capability = metadata.get("capability", {}) if isinstance(metadata.get("capability", {}), dict) else {}
|
|
66
|
+
manifest = metadata.get("manifest", {}) if isinstance(metadata.get("manifest", {}), dict) else {}
|
|
67
|
+
explicit_title = str(metadata.get("title") or "").strip()
|
|
68
|
+
explicit_slug = str(metadata.get("slug") or "").strip()
|
|
69
|
+
explicit_kind = str(metadata.get("kind") or "").strip()
|
|
70
|
+
explicit_section = str(metadata.get("section") or "").strip()
|
|
71
|
+
explicit_summary = str(metadata.get("summary") or "").strip()
|
|
72
|
+
explicit_domain = str(metadata.get("domain") or "").strip()
|
|
73
|
+
explicit_owner = str(metadata.get("owner") or "").strip()
|
|
74
|
+
explicit_tags = metadata.get("tags", []) if isinstance(metadata.get("tags", []), list) else []
|
|
75
|
+
explicit_sources = metadata.get("source_refs", []) if isinstance(metadata.get("source_refs", []), list) else []
|
|
76
|
+
|
|
77
|
+
repo = str(capability.get("repo") or manifest.get("repo") or metadata.get("boost") or node_key)
|
|
78
|
+
provider = str(raw_node.get("provider", "unknown"))
|
|
79
|
+
kind = explicit_kind or _normalize_kind(raw_node, capability, manifest)
|
|
80
|
+
domain = explicit_domain or str(capability.get("domain") or manifest.get("domain") or provider or "unknown")
|
|
81
|
+
agent = str(capability.get("agent") or manifest.get("agent") or "")
|
|
82
|
+
engine = str(capability.get("engine") or manifest.get("engine") or provider)
|
|
83
|
+
title = explicit_title or repo
|
|
84
|
+
section = explicit_section or _section_for_kind(kind)
|
|
85
|
+
slug = explicit_slug or _slugify(f"{provider}-{repo}")
|
|
86
|
+
boost = str(metadata.get("boost") or repo)
|
|
87
|
+
source_refs = explicit_sources or _source_refs(boost)
|
|
88
|
+
tags = explicit_tags or _tags(provider=provider, domain=domain, kind=kind, engine=engine, agent=agent)
|
|
89
|
+
|
|
90
|
+
summary = explicit_summary or _summary_for_node(
|
|
91
|
+
title=title,
|
|
92
|
+
kind=kind,
|
|
93
|
+
domain=domain,
|
|
94
|
+
provider=provider,
|
|
95
|
+
capability=capability,
|
|
96
|
+
manifest=manifest,
|
|
97
|
+
agent=agent,
|
|
98
|
+
engine=engine,
|
|
99
|
+
)
|
|
100
|
+
|
|
101
|
+
wiki_node = {
|
|
102
|
+
"node_id": node_key,
|
|
103
|
+
"provider": provider,
|
|
104
|
+
"type": str(raw_node.get("type", "unknown")),
|
|
105
|
+
"checksum": str(raw_node.get("checksum", "")),
|
|
106
|
+
"title": title,
|
|
107
|
+
"slug": slug,
|
|
108
|
+
"kind": kind,
|
|
109
|
+
"domain": domain,
|
|
110
|
+
"owner": explicit_owner or agent,
|
|
111
|
+
"summary": summary,
|
|
112
|
+
"source_refs": source_refs,
|
|
113
|
+
"relations": raw_node.get("relations", []),
|
|
114
|
+
"tags": tags,
|
|
115
|
+
"path": f"{section}/{slug}.md",
|
|
116
|
+
"navigation": {
|
|
117
|
+
"section": section,
|
|
118
|
+
"weight": 100,
|
|
119
|
+
"parent": section,
|
|
120
|
+
"tags": tags,
|
|
121
|
+
},
|
|
122
|
+
"quality": {
|
|
123
|
+
"has_summary": bool(summary.strip()),
|
|
124
|
+
"has_relations": bool(raw_node.get("relations", [])),
|
|
125
|
+
"has_sources": bool(source_refs),
|
|
126
|
+
},
|
|
127
|
+
"metadata": metadata,
|
|
128
|
+
}
|
|
129
|
+
return wiki_node
|
|
130
|
+
|
|
131
|
+
|
|
132
|
+
def _normalize_kind(raw_node: Dict[str, Any], capability: Dict[str, Any], manifest: Dict[str, Any]) -> str:
|
|
133
|
+
raw_type = str(raw_node.get("type", "unknown")).strip().lower()
|
|
134
|
+
if raw_type == "boost_capability":
|
|
135
|
+
return "capability"
|
|
136
|
+
|
|
137
|
+
source_type = str(manifest.get("type", "")).strip().lower()
|
|
138
|
+
if source_type == "project":
|
|
139
|
+
return "project"
|
|
140
|
+
|
|
141
|
+
if capability:
|
|
142
|
+
return "capability"
|
|
143
|
+
|
|
144
|
+
return "report"
|
|
145
|
+
|
|
146
|
+
|
|
147
|
+
def _section_for_kind(kind: str) -> str:
|
|
148
|
+
mapping = {
|
|
149
|
+
"agent": "agents",
|
|
150
|
+
"skill": "skills",
|
|
151
|
+
"prompt": "routing",
|
|
152
|
+
"policy": "policies",
|
|
153
|
+
"project": "projects",
|
|
154
|
+
"spec": "specs",
|
|
155
|
+
"report": "reports",
|
|
156
|
+
"capability": "capabilities",
|
|
157
|
+
}
|
|
158
|
+
return mapping.get(kind, "misc")
|
|
159
|
+
|
|
160
|
+
|
|
161
|
+
def _source_refs(boost: str) -> List[str]:
|
|
162
|
+
return [
|
|
163
|
+
f"repo-intake/generated/{boost}/capabilities/capability.json",
|
|
164
|
+
f"repo-intake/generated/{boost}/context-manifests/manifest.json",
|
|
165
|
+
]
|
|
166
|
+
|
|
167
|
+
|
|
168
|
+
def _tags(provider: str, domain: str, kind: str, engine: str, agent: str) -> List[str]:
|
|
169
|
+
values = [provider, domain, kind, engine, agent]
|
|
170
|
+
tags = []
|
|
171
|
+
for value in values:
|
|
172
|
+
normalized = str(value).strip().lower()
|
|
173
|
+
if normalized and normalized not in tags:
|
|
174
|
+
tags.append(normalized)
|
|
175
|
+
return tags
|
|
176
|
+
|
|
177
|
+
|
|
178
|
+
def _summary_for_node(
|
|
179
|
+
title: str,
|
|
180
|
+
kind: str,
|
|
181
|
+
domain: str,
|
|
182
|
+
provider: str,
|
|
183
|
+
capability: Dict[str, Any],
|
|
184
|
+
manifest: Dict[str, Any],
|
|
185
|
+
agent: str,
|
|
186
|
+
engine: str,
|
|
187
|
+
) -> str:
|
|
188
|
+
capability_name = str(capability.get("capability") or "").strip()
|
|
189
|
+
if kind == "capability":
|
|
190
|
+
base = f"{title} expone una capacidad del dominio {domain}"
|
|
191
|
+
if capability_name:
|
|
192
|
+
base += f" llamada {capability_name}"
|
|
193
|
+
if agent:
|
|
194
|
+
base += f", servida por el agente {agent}"
|
|
195
|
+
if engine:
|
|
196
|
+
base += f" sobre {engine}"
|
|
197
|
+
return base + "."
|
|
198
|
+
|
|
199
|
+
manifest_repo = str(manifest.get("repo") or title)
|
|
200
|
+
return f"{manifest_repo} se proyecta en AutoDocs como contenido de tipo {kind} del dominio {domain} a traves del proveedor {provider}."
|
|
201
|
+
|
|
202
|
+
|
|
203
|
+
def _slugify(value: str) -> str:
|
|
204
|
+
normalized = re.sub(r"[^a-zA-Z0-9]+", "-", value.strip().lower())
|
|
205
|
+
normalized = normalized.strip("-")
|
|
206
|
+
return normalized or "untitled"
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import hashlib
|
|
2
|
+
import json
|
|
3
|
+
from pathlib import Path
|
|
4
|
+
from typing import Any, Dict
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
class BaseWikiProvider:
|
|
8
|
+
provider_id = "base"
|
|
9
|
+
|
|
10
|
+
def __init__(self, generated_root: Path) -> None:
|
|
11
|
+
self.generated_root = generated_root
|
|
12
|
+
|
|
13
|
+
def gather_knowledge(self) -> Dict[str, Any]:
|
|
14
|
+
raise NotImplementedError
|
|
15
|
+
|
|
16
|
+
def _load_json_file(self, path: Path) -> Dict[str, Any]:
|
|
17
|
+
with path.open("r", encoding="utf-8") as handle:
|
|
18
|
+
parsed = json.load(handle)
|
|
19
|
+
if isinstance(parsed, dict):
|
|
20
|
+
return parsed
|
|
21
|
+
return {}
|
|
22
|
+
|
|
23
|
+
def _checksum(self, payload: Dict[str, Any]) -> str:
|
|
24
|
+
raw = json.dumps(payload, sort_keys=True, ensure_ascii=True).encode("utf-8")
|
|
25
|
+
return hashlib.sha256(raw).hexdigest()
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
from pathlib import Path
|
|
2
|
+
from typing import Any, Dict, List
|
|
3
|
+
|
|
4
|
+
from scripts.wiki.providers.base_provider import BaseWikiProvider
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
class CodeGraphProvider(BaseWikiProvider):
|
|
8
|
+
provider_id = "codegraph"
|
|
9
|
+
|
|
10
|
+
def __init__(self, generated_root: Path) -> None:
|
|
11
|
+
super().__init__(generated_root)
|
|
12
|
+
|
|
13
|
+
def gather_knowledge(self) -> Dict[str, Any]:
|
|
14
|
+
entities: List[Dict[str, Any]] = []
|
|
15
|
+
for boost_dir in self.generated_root.iterdir():
|
|
16
|
+
if not boost_dir.is_dir():
|
|
17
|
+
continue
|
|
18
|
+
|
|
19
|
+
capability_path = boost_dir / "capabilities" / "capability.json"
|
|
20
|
+
manifest_path = boost_dir / "context-manifests" / "manifest.json"
|
|
21
|
+
if not capability_path.exists() or not manifest_path.exists():
|
|
22
|
+
continue
|
|
23
|
+
|
|
24
|
+
capability = self._load_json_file(capability_path)
|
|
25
|
+
if str(capability.get("engine", "")).lower() != "codegraph":
|
|
26
|
+
continue
|
|
27
|
+
|
|
28
|
+
manifest = self._load_json_file(manifest_path)
|
|
29
|
+
payload = {
|
|
30
|
+
"boost": boost_dir.name,
|
|
31
|
+
"capability": capability,
|
|
32
|
+
"manifest": manifest,
|
|
33
|
+
}
|
|
34
|
+
relations = []
|
|
35
|
+
for dependency in capability.get("dependencies", []):
|
|
36
|
+
relations.append({"target": str(dependency), "type": "depends_on"})
|
|
37
|
+
|
|
38
|
+
entity_id = str(capability.get("repo", boost_dir.name))
|
|
39
|
+
entities.append(
|
|
40
|
+
{
|
|
41
|
+
"id": entity_id,
|
|
42
|
+
"type": "boost_capability",
|
|
43
|
+
"checksum": self._checksum(payload),
|
|
44
|
+
"raw_data": payload,
|
|
45
|
+
"relations": relations,
|
|
46
|
+
}
|
|
47
|
+
)
|
|
48
|
+
|
|
49
|
+
return {"provider_id": self.provider_id, "entities": entities}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
from pathlib import Path
|
|
2
|
+
from typing import Any, Dict, List
|
|
3
|
+
|
|
4
|
+
from scripts.wiki.providers.base_provider import BaseWikiProvider
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
class GraphifyProvider(BaseWikiProvider):
|
|
8
|
+
provider_id = "graphify"
|
|
9
|
+
|
|
10
|
+
def __init__(self, generated_root: Path) -> None:
|
|
11
|
+
super().__init__(generated_root)
|
|
12
|
+
|
|
13
|
+
def gather_knowledge(self) -> Dict[str, Any]:
|
|
14
|
+
entities: List[Dict[str, Any]] = []
|
|
15
|
+
for boost_dir in self.generated_root.iterdir():
|
|
16
|
+
if not boost_dir.is_dir():
|
|
17
|
+
continue
|
|
18
|
+
|
|
19
|
+
capability_path = boost_dir / "capabilities" / "capability.json"
|
|
20
|
+
manifest_path = boost_dir / "context-manifests" / "manifest.json"
|
|
21
|
+
if not capability_path.exists() or not manifest_path.exists():
|
|
22
|
+
continue
|
|
23
|
+
|
|
24
|
+
capability = self._load_json_file(capability_path)
|
|
25
|
+
if str(capability.get("engine", "")).lower() != "graphify":
|
|
26
|
+
continue
|
|
27
|
+
|
|
28
|
+
manifest = self._load_json_file(manifest_path)
|
|
29
|
+
payload = {
|
|
30
|
+
"boost": boost_dir.name,
|
|
31
|
+
"capability": capability,
|
|
32
|
+
"manifest": manifest,
|
|
33
|
+
}
|
|
34
|
+
relations = []
|
|
35
|
+
for dependency in capability.get("dependencies", []):
|
|
36
|
+
relations.append({"target": str(dependency), "type": "depends_on"})
|
|
37
|
+
|
|
38
|
+
entity_id = str(capability.get("repo", boost_dir.name))
|
|
39
|
+
entities.append(
|
|
40
|
+
{
|
|
41
|
+
"id": entity_id,
|
|
42
|
+
"type": "boost_capability",
|
|
43
|
+
"checksum": self._checksum(payload),
|
|
44
|
+
"raw_data": payload,
|
|
45
|
+
"relations": relations,
|
|
46
|
+
}
|
|
47
|
+
)
|
|
48
|
+
|
|
49
|
+
return {"provider_id": self.provider_id, "entities": entities}
|