From f8a9a7e0140132dbc2b2e1b6c8419e293c0781cc Mon Sep 17 00:00:00 2001 From: Snider Date: Thu, 30 Apr 2026 12:37:01 +0100 Subject: [PATCH 1/6] chore(mcp): restructure Go module under go/ + go.work + external/ submodules MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Lift Go module into go/ subtree for cross-language repo symmetry (matches core/api v0.12.0 shape). Module path stays dappco.re/go/mcp — consumers see no change. Adds go.work + external/ submodules for dev workspace mode; CI uses GOWORK=off (already set in .woodpecker.yml). --- .gitmodules | 24 +++++++++++++++++ CLAUDE.md | 26 ++++++++++++++----- cmd/core-mcp/main.go | 12 --------- composer.json | 8 +++--- external/go | 1 + external/io | 1 + external/log | 1 + external/process | 1 + external/rag | 1 + external/ws | 1 + go.work | 14 ++++++++++ go/AGENTS.md | 1 + go/CLAUDE.md | 1 + go/README.md | 1 + {cmd => go/cmd}/brain-seed/main.go | 0 {cmd => go/cmd}/mcpcmd/cmd_mcp.go | 0 .../cmd}/mcpcmd/cmd_mcp_example_test.go | 0 {cmd => go/cmd}/mcpcmd/cmd_mcp_test.go | 0 {cmd => go/cmd}/openbrain-mcp/README.md | 0 {cmd => go/cmd}/openbrain-mcp/main.go | 0 go/docs | 1 + go.mod => go/go.mod | 0 go.sum => go/go.sum | 0 .../mcp/agentic/compliance_helpers_test.go | 0 {pkg => go/pkg}/mcp/agentic/coreio_compat.go | 0 .../mcp/agentic/coreio_compat_example_test.go | 0 .../pkg}/mcp/agentic/coreio_compat_test.go | 0 {pkg => go/pkg}/mcp/agentic/dispatch.go | 0 .../pkg}/mcp/agentic/dispatch_example_test.go | 0 {pkg => go/pkg}/mcp/agentic/dispatch_test.go | 0 {pkg => go/pkg}/mcp/agentic/epic.go | 0 .../pkg}/mcp/agentic/epic_example_test.go | 0 {pkg => go/pkg}/mcp/agentic/epic_test.go | 0 {pkg => go/pkg}/mcp/agentic/ingest.go | 0 {pkg => go/pkg}/mcp/agentic/issue.go | 0 .../pkg}/mcp/agentic/issue_example_test.go | 0 {pkg => go/pkg}/mcp/agentic/issue_test.go | 0 {pkg => go/pkg}/mcp/agentic/mirror.go | 0 .../pkg}/mcp/agentic/mirror_example_test.go | 0 {pkg => go/pkg}/mcp/agentic/mirror_test.go | 0 {pkg => go/pkg}/mcp/agentic/plan.go | 0 .../pkg}/mcp/agentic/plan_example_test.go | 0 {pkg => go/pkg}/mcp/agentic/plan_test.go | 0 {pkg => go/pkg}/mcp/agentic/pr.go | 0 .../pkg}/mcp/agentic/pr_example_test.go | 0 {pkg => go/pkg}/mcp/agentic/pr_test.go | 0 {pkg => go/pkg}/mcp/agentic/prep.go | 0 .../pkg}/mcp/agentic/prep_example_test.go | 0 {pkg => go/pkg}/mcp/agentic/prep_test.go | 0 {pkg => go/pkg}/mcp/agentic/queue.go | 0 .../pkg}/mcp/agentic/queue_example_test.go | 0 {pkg => go/pkg}/mcp/agentic/queue_test.go | 0 {pkg => go/pkg}/mcp/agentic/repo_helpers.go | 0 {pkg => go/pkg}/mcp/agentic/resume.go | 0 .../pkg}/mcp/agentic/resume_example_test.go | 0 {pkg => go/pkg}/mcp/agentic/resume_test.go | 0 {pkg => go/pkg}/mcp/agentic/review_queue.go | 0 .../mcp/agentic/review_queue_example_test.go | 0 .../pkg}/mcp/agentic/review_queue_test.go | 0 {pkg => go/pkg}/mcp/agentic/scan.go | 0 .../pkg}/mcp/agentic/scan_example_test.go | 0 {pkg => go/pkg}/mcp/agentic/scan_test.go | 0 {pkg => go/pkg}/mcp/agentic/status.go | 0 .../pkg}/mcp/agentic/status_example_test.go | 0 {pkg => go/pkg}/mcp/agentic/status_test.go | 0 {pkg => go/pkg}/mcp/agentic/watch.go | 0 .../pkg}/mcp/agentic/watch_example_test.go | 0 {pkg => go/pkg}/mcp/agentic/watch_test.go | 0 {pkg => go/pkg}/mcp/agentic/write_atomic.go | 0 {pkg => go/pkg}/mcp/authz.go | 0 {pkg => go/pkg}/mcp/brain/brain.go | 0 .../pkg}/mcp/brain/brain_example_test.go | 0 {pkg => go/pkg}/mcp/brain/brain_test.go | 0 {pkg => go/pkg}/mcp/brain/bridge_events.go | 0 {pkg => go/pkg}/mcp/brain/client/client.go | 0 .../mcp/brain/client/client_example_test.go | 0 .../pkg}/mcp/brain/client/client_test.go | 0 .../brain/client/compliance_helpers_test.go | 0 .../pkg}/mcp/brain/client/coreio_compat.go | 0 .../client/coreio_compat_example_test.go | 0 .../mcp/brain/client/coreio_compat_test.go | 0 .../pkg}/mcp/brain/compliance_helpers_test.go | 0 {pkg => go/pkg}/mcp/brain/direct.go | 0 .../pkg}/mcp/brain/direct_example_test.go | 0 {pkg => go/pkg}/mcp/brain/direct_test.go | 0 {pkg => go/pkg}/mcp/brain/provider.go | 0 .../pkg}/mcp/brain/provider_example_test.go | 0 {pkg => go/pkg}/mcp/brain/provider_test.go | 0 {pkg => go/pkg}/mcp/brain/tools.go | 0 .../pkg}/mcp/brain/tools_example_test.go | 0 {pkg => go/pkg}/mcp/brain/tools_test.go | 0 {pkg => go/pkg}/mcp/bridge.go | 0 {pkg => go/pkg}/mcp/bridge_example_test.go | 0 {pkg => go/pkg}/mcp/bridge_test.go | 0 .../pkg}/mcp/compliance_helpers_test.go | 0 {pkg => go/pkg}/mcp/core_medium.go | 0 .../pkg}/mcp/core_medium_example_test.go | 0 {pkg => go/pkg}/mcp/core_medium_test.go | 0 {pkg => go/pkg}/mcp/ide/bridge.go | 0 .../pkg}/mcp/ide/bridge_example_test.go | 0 {pkg => go/pkg}/mcp/ide/bridge_test.go | 0 .../pkg}/mcp/ide/compliance_helpers_test.go | 0 {pkg => go/pkg}/mcp/ide/config.go | 0 .../pkg}/mcp/ide/config_example_test.go | 0 {pkg => go/pkg}/mcp/ide/config_test.go | 0 {pkg => go/pkg}/mcp/ide/ide.go | 0 {pkg => go/pkg}/mcp/ide/ide_example_test.go | 0 {pkg => go/pkg}/mcp/ide/ide_test.go | 0 {pkg => go/pkg}/mcp/ide/tools_build.go | 0 .../pkg}/mcp/ide/tools_build_example_test.go | 0 {pkg => go/pkg}/mcp/ide/tools_build_test.go | 0 {pkg => go/pkg}/mcp/ide/tools_chat.go | 0 .../pkg}/mcp/ide/tools_chat_example_test.go | 0 {pkg => go/pkg}/mcp/ide/tools_chat_test.go | 0 {pkg => go/pkg}/mcp/ide/tools_dashboard.go | 0 .../mcp/ide/tools_dashboard_example_test.go | 0 .../pkg}/mcp/ide/tools_dashboard_test.go | 0 {pkg => go/pkg}/mcp/ide/tools_test.go | 0 {pkg => go/pkg}/mcp/integration_test.go | 0 {pkg => go/pkg}/mcp/ipc.go | 0 {pkg => go/pkg}/mcp/ipc_test.go | 0 {pkg => go/pkg}/mcp/iter_test.go | 0 {pkg => go/pkg}/mcp/mcp.go | 0 {pkg => go/pkg}/mcp/mcp_example_test.go | 0 {pkg => go/pkg}/mcp/mcp_test.go | 0 {pkg => go/pkg}/mcp/notify.go | 0 {pkg => go/pkg}/mcp/notify_example_test.go | 0 {pkg => go/pkg}/mcp/notify_test.go | 0 {pkg => go/pkg}/mcp/process_notifications.go | 0 {pkg => go/pkg}/mcp/progress.go | 0 {pkg => go/pkg}/mcp/progress_example_test.go | 0 {pkg => go/pkg}/mcp/progress_test.go | 0 {pkg => go/pkg}/mcp/register.go | 0 {pkg => go/pkg}/mcp/register_example_test.go | 0 {pkg => go/pkg}/mcp/register_test.go | 0 {pkg => go/pkg}/mcp/registry.go | 0 {pkg => go/pkg}/mcp/registry_example_test.go | 0 {pkg => go/pkg}/mcp/registry_test.go | 0 {pkg => go/pkg}/mcp/result_helpers.go | 0 {pkg => go/pkg}/mcp/subsystem.go | 0 {pkg => go/pkg}/mcp/subsystem_example_test.go | 0 {pkg => go/pkg}/mcp/subsystem_test.go | 0 {pkg => go/pkg}/mcp/tools_metrics.go | 0 .../pkg}/mcp/tools_metrics_example_test.go | 0 {pkg => go/pkg}/mcp/tools_metrics_test.go | 0 {pkg => go/pkg}/mcp/tools_process.go | 0 {pkg => go/pkg}/mcp/tools_process_ci_test.go | 0 .../pkg}/mcp/tools_process_example_test.go | 0 {pkg => go/pkg}/mcp/tools_process_test.go | 0 {pkg => go/pkg}/mcp/tools_rag.go | 0 {pkg => go/pkg}/mcp/tools_rag_ci_test.go | 0 {pkg => go/pkg}/mcp/tools_rag_example_test.go | 0 {pkg => go/pkg}/mcp/tools_rag_test.go | 0 {pkg => go/pkg}/mcp/tools_webview_embed.go | 0 .../mcp/tools_webview_embed_example_test.go | 0 .../pkg}/mcp/tools_webview_embed_test.go | 0 {pkg => go/pkg}/mcp/tools_ws.go | 0 {pkg => go/pkg}/mcp/tools_ws_client.go | 0 .../pkg}/mcp/tools_ws_client_example_test.go | 0 {pkg => go/pkg}/mcp/tools_ws_client_test.go | 0 {pkg => go/pkg}/mcp/tools_ws_example_test.go | 0 {pkg => go/pkg}/mcp/tools_ws_test.go | 0 {pkg => go/pkg}/mcp/transformer.go | 0 {pkg => go/pkg}/mcp/transformer_anthropic.go | 0 .../mcp/transformer_anthropic_example_test.go | 0 .../pkg}/mcp/transformer_anthropic_test.go | 0 .../pkg}/mcp/transformer_example_test.go | 0 {pkg => go/pkg}/mcp/transformer_honeypot.go | 0 .../mcp/transformer_honeypot_example_test.go | 0 .../pkg}/mcp/transformer_honeypot_test.go | 0 {pkg => go/pkg}/mcp/transformer_openai.go | 0 .../mcp/transformer_openai_example_test.go | 0 .../pkg}/mcp/transformer_openai_test.go | 0 {pkg => go/pkg}/mcp/transformer_test.go | 0 {pkg => go/pkg}/mcp/transport_e2e_test.go | 0 {pkg => go/pkg}/mcp/transport_http.go | 0 .../pkg}/mcp/transport_http_example_test.go | 0 {pkg => go/pkg}/mcp/transport_http_test.go | 0 {pkg => go/pkg}/mcp/transport_stdio.go | 0 .../pkg}/mcp/transport_stdio_example_test.go | 0 {pkg => go/pkg}/mcp/transport_stdio_test.go | 0 {pkg => go/pkg}/mcp/transport_tcp.go | 0 .../pkg}/mcp/transport_tcp_example_test.go | 0 {pkg => go/pkg}/mcp/transport_tcp_test.go | 0 {pkg => go/pkg}/mcp/transport_unix.go | 0 .../pkg}/mcp/transport_unix_example_test.go | 0 {pkg => go/pkg}/mcp/transport_unix_test.go | 0 {tests => go/tests}/cli/mcp/Taskfile.yaml | 0 {src => php}/php/.editorconfig | 0 {src => php}/php/.env.example | 0 {src => php}/php/.forgejo/workflows/ci.yml | 0 .../php/.forgejo/workflows/release.yml | 0 {src => php}/php/.gemini/settings.json | 0 {src => php}/php/.github/FUNDING.yml | 0 .../php/.github/copilot-instructions.md | 0 {src => php}/php/.github/dependabot.yml | 0 .../php/.github/package-workflows/README.md | 0 .../php/.github/package-workflows/ci.yml | 0 .../php/.github/package-workflows/release.yml | 0 {src => php}/php/.github/workflows/ci.yml | 0 .../php/.github/workflows/release.yml | 0 {src => php}/php/.gitignore | 0 {src => php}/php/AGENTS.md | 0 {src => php}/php/FINDINGS.md | 0 {src => php}/php/GEMINI.md | 0 {src => php}/php/TODO.md | 0 .../php/app/Http/Controllers/.gitkeep | 0 {src => php}/php/app/Mod/.gitkeep | 0 {src => php}/php/app/Models/.gitkeep | 0 .../php/app/Providers/AppServiceProvider.php | 0 {src => php}/php/artisan | 0 {src => php}/php/bootstrap/app.php | 0 {src => php}/php/bootstrap/cache/.gitignore | 0 {src => php}/php/bootstrap/providers.php | 0 {src => php}/php/config/core.php | 0 {src => php}/php/database/factories/.gitkeep | 0 {src => php}/php/database/migrations/.gitkeep | 0 .../php/database/seeders/DatabaseSeeder.php | 0 {src => php}/php/docs/analytics.md | 0 {src => php}/php/docs/creating-mcp-tools.md | 0 {src => php}/php/docs/discovery-2026-02-21.md | 0 {src => php}/php/docs/index.md | 0 {src => php}/php/docs/query-database.md | 0 {src => php}/php/docs/quotas.md | 0 {src => php}/php/docs/security.md | 0 {src => php}/php/docs/sql-security.md | 0 {src => php}/php/docs/tools-reference.md | 0 {src => php}/php/docs/tools.md | 0 {src => php}/php/docs/workspace.md | 0 {src => php}/php/package.json | 0 {src => php}/php/phpunit.xml | 0 {src => php}/php/postcss.config.js | 0 {src => php}/php/public/.htaccess | 0 {src => php}/php/public/index.php | 0 {src => php}/php/public/robots.txt | 0 {src => php}/php/resources/css/app.css | 0 {src => php}/php/resources/js/app.js | 0 {src => php}/php/resources/js/bootstrap.js | 0 .../php/resources/views/welcome.blade.php | 0 {src => php}/php/routes/api.php | 0 {src => php}/php/routes/console.php | 0 {src => php}/php/routes/web.php | 0 {src => php}/php/src/Front/Mcp/Boot.php | 0 .../Front/Mcp/Contracts/McpToolHandler.php | 0 {src => php}/php/src/Front/Mcp/McpContext.php | 0 .../Front/View/Blade/layouts/mcp.blade.php | 0 {src => php}/php/src/Mcp/Boot.php | 0 .../Commands/CleanupToolCallLogsCommand.php | 0 .../Commands/McpAgentServerCommand.php | 0 .../Console/Commands/McpMonitorCommand.php | 0 .../Console/Commands/PruneMetricsCommand.php | 0 .../Commands/VerifyAuditLogCommand.php | 0 .../php/src/Mcp/Context/WorkspaceContext.php | 0 .../src/Mcp/Controllers/McpApiController.php | 0 {src => php}/php/src/Mcp/DTO/ToolStats.php | 0 .../Database/Seeders/SensitiveToolSeeder.php | 0 .../src/Mcp/Dependencies/DependencyType.php | 0 .../src/Mcp/Dependencies/HasDependencies.php | 0 .../src/Mcp/Dependencies/ToolDependency.php | 0 .../php/src/Mcp/Events/ToolExecuted.php | 0 .../Mcp/Exceptions/CircuitOpenException.php | 0 .../Exceptions/ForbiddenQueryException.php | 0 .../Exceptions/MissingDependencyException.php | 0 .../MissingWorkspaceContextException.php | 0 .../Mcp/Exceptions/QueryTimeoutException.php | 0 .../Exceptions/ResultSizeLimitException.php | 0 {src => php}/php/src/Mcp/Lang/en_GB/mcp.php | 0 .../src/Mcp/Listeners/RecordToolExecution.php | 0 .../php/src/Mcp/Middleware/CheckMcpQuota.php | 0 .../php/src/Mcp/Middleware/McpApiKeyAuth.php | 0 .../src/Mcp/Middleware/McpAuthenticate.php | 0 .../Middleware/ValidateToolDependencies.php | 0 .../Middleware/ValidateWorkspaceContext.php | 0 ...7_004936_create_mcp_api_requests_table.php | 0 ...6_000001_create_mcp_tool_metrics_table.php | 0 ...6_000002_create_mcp_usage_quotas_table.php | 0 ..._26_000003_create_mcp_audit_logs_table.php | 0 ..._000004_create_mcp_tool_versions_table.php | 0 .../php/src/Mcp/Models/McpApiRequest.php | 0 .../php/src/Mcp/Models/McpAuditLog.php | 0 .../php/src/Mcp/Models/McpSensitiveTool.php | 0 .../php/src/Mcp/Models/McpToolCall.php | 0 .../php/src/Mcp/Models/McpToolCallStat.php | 0 .../php/src/Mcp/Models/McpToolVersion.php | 0 .../php/src/Mcp/Models/McpUsageQuota.php | 0 .../php/src/Mcp/Models/ToolMetric.php | 0 .../php/src/Mcp/Resources/AppConfig.php | 0 .../php/src/Mcp/Resources/ContentResource.php | 0 .../php/src/Mcp/Resources/DatabaseSchema.php | 0 {src => php}/php/src/Mcp/Routes/admin.php | 0 .../src/Mcp/Services/AgentSessionService.php | 0 .../src/Mcp/Services/AgentToolRegistry.php | 0 .../php/src/Mcp/Services/AuditLogService.php | 0 .../php/src/Mcp/Services/CircuitBreaker.php | 0 .../php/src/Mcp/Services/DataRedactor.php | 0 .../php/src/Mcp/Services/McpHealthService.php | 0 .../src/Mcp/Services/McpMetricsService.php | 0 .../php/src/Mcp/Services/McpQuotaService.php | 0 .../src/Mcp/Services/McpWebhookDispatcher.php | 0 .../php/src/Mcp/Services/OpenApiGenerator.php | 0 .../src/Mcp/Services/QueryAuditService.php | 0 .../Mcp/Services/QueryExecutionService.php | 0 .../src/Mcp/Services/SqlQueryValidator.php | 0 .../src/Mcp/Services/ToolAnalyticsService.php | 0 .../Mcp/Services/ToolDependencyService.php | 0 .../php/src/Mcp/Services/ToolRateLimiter.php | 0 .../php/src/Mcp/Services/ToolRegistry.php | 0 .../src/Mcp/Services/ToolVersionService.php | 0 .../Mcp/Tests/Unit/McpQuotaServiceTest.php | 0 .../Mcp/Tests/Unit/QueryAuditServiceTest.php | 0 .../Tests/Unit/QueryExecutionServiceTest.php | 0 .../Tests/Unit/ToolAnalyticsServiceTest.php | 0 .../Tests/Unit/ToolDependencyServiceTest.php | 0 .../Mcp/Tests/Unit/ToolVersionServiceTest.php | 0 ...ValidateWorkspaceContextMiddlewareTest.php | 0 .../Unit/WorkspaceContextSecurityTest.php | 0 .../Mcp/Tests/UseCase/ApiKeyManagerBasic.php | 0 .../src/Mcp/Tools/Commerce/CreateCoupon.php | 0 .../Mcp/Tools/Commerce/GetBillingStatus.php | 0 .../src/Mcp/Tools/Commerce/ListInvoices.php | 0 .../src/Mcp/Tools/Commerce/UpgradePlan.php | 0 .../Concerns/RequiresWorkspaceContext.php | 0 .../Tools/Concerns/ValidatesDependencies.php | 0 .../php/src/Mcp/Tools/ContentTools.php | 0 .../php/src/Mcp/Tools/DescribeTable.php | 0 {src => php}/php/src/Mcp/Tools/GetStats.php | 0 {src => php}/php/src/Mcp/Tools/ListRoutes.php | 0 {src => php}/php/src/Mcp/Tools/ListSites.php | 0 {src => php}/php/src/Mcp/Tools/ListTables.php | 0 .../php/src/Mcp/Tools/QueryDatabase.php | 0 .../Blade/admin/analytics/dashboard.blade.php | 0 .../analytics/partials/stats-card.blade.php | 0 .../analytics/partials/tool-table.blade.php | 0 .../admin/analytics/tool-detail.blade.php | 0 .../Blade/admin/api-key-manager.blade.php | 0 .../Blade/admin/audit-log-viewer.blade.php | 0 .../View/Blade/admin/mcp-playground.blade.php | 0 .../Mcp/View/Blade/admin/playground.blade.php | 0 .../View/Blade/admin/quota-usage.blade.php | 0 .../View/Blade/admin/request-log.blade.php | 0 .../admin/tool-version-manager.blade.php | 0 .../Mcp/View/Modal/Admin/ApiKeyManager.php | 0 .../Mcp/View/Modal/Admin/AuditLogViewer.php | 0 .../Mcp/View/Modal/Admin/McpPlayground.php | 0 .../src/Mcp/View/Modal/Admin/Playground.php | 0 .../src/Mcp/View/Modal/Admin/QuotaUsage.php | 0 .../src/Mcp/View/Modal/Admin/RequestLog.php | 0 .../Modal/Admin/ToolAnalyticsDashboard.php | 0 .../View/Modal/Admin/ToolAnalyticsDetail.php | 0 .../View/Modal/Admin/ToolVersionManager.php | 0 {src => php}/php/src/Website/Mcp/Boot.php | 0 .../Mcp/Controllers/McpRegistryController.php | 0 .../php/src/Website/Mcp/Routes/web.php | 0 .../Mcp/View/Blade/web/analytics.blade.php | 0 .../Mcp/View/Blade/web/api-explorer.blade.php | 0 .../View/Blade/web/api-key-manager.blade.php | 0 .../Mcp/View/Blade/web/connect.blade.php | 0 .../Mcp/View/Blade/web/dashboard.blade.php | 0 .../Mcp/View/Blade/web/index.blade.php | 0 .../Website/Mcp/View/Blade/web/keys.blade.php | 0 .../Mcp/View/Blade/web/landing.blade.php | 0 .../Mcp/View/Blade/web/mcp-metrics.blade.php | 0 .../View/Blade/web/mcp-playground.blade.php | 0 .../Mcp/View/Blade/web/playground.blade.php | 0 .../Mcp/View/Blade/web/request-log.blade.php | 0 .../Website/Mcp/View/Blade/web/show.blade.php | 0 .../View/Blade/web/unified-search.blade.php | 0 .../Website/Mcp/View/Modal/ApiExplorer.php | 0 .../Website/Mcp/View/Modal/ApiKeyManager.php | 0 .../src/Website/Mcp/View/Modal/Dashboard.php | 0 .../src/Website/Mcp/View/Modal/McpMetrics.php | 0 .../Website/Mcp/View/Modal/McpPlayground.php | 0 .../src/Website/Mcp/View/Modal/Playground.php | 0 .../src/Website/Mcp/View/Modal/RequestLog.php | 0 .../Website/Mcp/View/Modal/UnifiedSearch.php | 0 {src => php}/php/storage/app/.gitignore | 0 .../php/storage/app/public/.gitignore | 0 {src => php}/php/storage/framework/.gitignore | 0 .../php/storage/framework/cache/.gitignore | 0 .../storage/framework/cache/data/.gitignore | 0 .../php/storage/framework/sessions/.gitignore | 0 .../php/storage/framework/testing/.gitignore | 0 .../php/storage/framework/views/.gitignore | 0 {src => php}/php/storage/logs/.gitignore | 0 {src => php}/php/tailwind.config.js | 0 {src => php}/php/tests/Feature/.gitkeep | 0 {src => php}/php/tests/Pest.php | 0 {src => php}/php/tests/TestCase.php | 0 {src => php}/php/tests/Unit/.gitkeep | 0 .../php/tests/Unit/DescribeTableTest.php | 0 .../php/tests/Unit/McpResourceListTest.php | 0 .../php/tests/Unit/SqlQueryValidatorTest.php | 0 {src => php}/php/vite.config.js | 0 393 files changed, 72 insertions(+), 22 deletions(-) create mode 100644 .gitmodules delete mode 100644 cmd/core-mcp/main.go create mode 160000 external/go create mode 160000 external/io create mode 160000 external/log create mode 160000 external/process create mode 160000 external/rag create mode 160000 external/ws create mode 100644 go.work create mode 120000 go/AGENTS.md create mode 120000 go/CLAUDE.md create mode 120000 go/README.md rename {cmd => go/cmd}/brain-seed/main.go (100%) rename {cmd => go/cmd}/mcpcmd/cmd_mcp.go (100%) rename {cmd => go/cmd}/mcpcmd/cmd_mcp_example_test.go (100%) rename {cmd => go/cmd}/mcpcmd/cmd_mcp_test.go (100%) rename {cmd => go/cmd}/openbrain-mcp/README.md (100%) rename {cmd => go/cmd}/openbrain-mcp/main.go (100%) create mode 120000 go/docs rename go.mod => go/go.mod (100%) rename go.sum => go/go.sum (100%) rename {pkg => go/pkg}/mcp/agentic/compliance_helpers_test.go (100%) rename {pkg => go/pkg}/mcp/agentic/coreio_compat.go (100%) rename {pkg => go/pkg}/mcp/agentic/coreio_compat_example_test.go (100%) rename {pkg => go/pkg}/mcp/agentic/coreio_compat_test.go (100%) rename {pkg => go/pkg}/mcp/agentic/dispatch.go (100%) rename {pkg => go/pkg}/mcp/agentic/dispatch_example_test.go (100%) rename {pkg => go/pkg}/mcp/agentic/dispatch_test.go (100%) rename {pkg => go/pkg}/mcp/agentic/epic.go (100%) rename {pkg => go/pkg}/mcp/agentic/epic_example_test.go (100%) rename {pkg => go/pkg}/mcp/agentic/epic_test.go (100%) rename {pkg => go/pkg}/mcp/agentic/ingest.go (100%) rename {pkg => go/pkg}/mcp/agentic/issue.go (100%) rename {pkg => go/pkg}/mcp/agentic/issue_example_test.go (100%) rename {pkg => go/pkg}/mcp/agentic/issue_test.go (100%) rename {pkg => go/pkg}/mcp/agentic/mirror.go (100%) rename {pkg => go/pkg}/mcp/agentic/mirror_example_test.go (100%) rename {pkg => go/pkg}/mcp/agentic/mirror_test.go (100%) rename {pkg => go/pkg}/mcp/agentic/plan.go (100%) rename {pkg => go/pkg}/mcp/agentic/plan_example_test.go (100%) rename {pkg => go/pkg}/mcp/agentic/plan_test.go (100%) rename {pkg => go/pkg}/mcp/agentic/pr.go (100%) rename {pkg => go/pkg}/mcp/agentic/pr_example_test.go (100%) rename {pkg => go/pkg}/mcp/agentic/pr_test.go (100%) rename {pkg => go/pkg}/mcp/agentic/prep.go (100%) rename {pkg => go/pkg}/mcp/agentic/prep_example_test.go (100%) rename {pkg => go/pkg}/mcp/agentic/prep_test.go (100%) rename {pkg => go/pkg}/mcp/agentic/queue.go (100%) rename {pkg => go/pkg}/mcp/agentic/queue_example_test.go (100%) rename {pkg => go/pkg}/mcp/agentic/queue_test.go (100%) rename {pkg => go/pkg}/mcp/agentic/repo_helpers.go (100%) rename {pkg => go/pkg}/mcp/agentic/resume.go (100%) rename {pkg => go/pkg}/mcp/agentic/resume_example_test.go (100%) rename {pkg => go/pkg}/mcp/agentic/resume_test.go (100%) rename {pkg => go/pkg}/mcp/agentic/review_queue.go (100%) rename {pkg => go/pkg}/mcp/agentic/review_queue_example_test.go (100%) rename {pkg => go/pkg}/mcp/agentic/review_queue_test.go (100%) rename {pkg => go/pkg}/mcp/agentic/scan.go (100%) rename {pkg => go/pkg}/mcp/agentic/scan_example_test.go (100%) rename {pkg => go/pkg}/mcp/agentic/scan_test.go (100%) rename {pkg => go/pkg}/mcp/agentic/status.go (100%) rename {pkg => go/pkg}/mcp/agentic/status_example_test.go (100%) rename {pkg => go/pkg}/mcp/agentic/status_test.go (100%) rename {pkg => go/pkg}/mcp/agentic/watch.go (100%) rename {pkg => go/pkg}/mcp/agentic/watch_example_test.go (100%) rename {pkg => go/pkg}/mcp/agentic/watch_test.go (100%) rename {pkg => go/pkg}/mcp/agentic/write_atomic.go (100%) rename {pkg => go/pkg}/mcp/authz.go (100%) rename {pkg => go/pkg}/mcp/brain/brain.go (100%) rename {pkg => go/pkg}/mcp/brain/brain_example_test.go (100%) rename {pkg => go/pkg}/mcp/brain/brain_test.go (100%) rename {pkg => go/pkg}/mcp/brain/bridge_events.go (100%) rename {pkg => go/pkg}/mcp/brain/client/client.go (100%) rename {pkg => go/pkg}/mcp/brain/client/client_example_test.go (100%) rename {pkg => go/pkg}/mcp/brain/client/client_test.go (100%) rename {pkg => go/pkg}/mcp/brain/client/compliance_helpers_test.go (100%) rename {pkg => go/pkg}/mcp/brain/client/coreio_compat.go (100%) rename {pkg => go/pkg}/mcp/brain/client/coreio_compat_example_test.go (100%) rename {pkg => go/pkg}/mcp/brain/client/coreio_compat_test.go (100%) rename {pkg => go/pkg}/mcp/brain/compliance_helpers_test.go (100%) rename {pkg => go/pkg}/mcp/brain/direct.go (100%) rename {pkg => go/pkg}/mcp/brain/direct_example_test.go (100%) rename {pkg => go/pkg}/mcp/brain/direct_test.go (100%) rename {pkg => go/pkg}/mcp/brain/provider.go (100%) rename {pkg => go/pkg}/mcp/brain/provider_example_test.go (100%) rename {pkg => go/pkg}/mcp/brain/provider_test.go (100%) rename {pkg => go/pkg}/mcp/brain/tools.go (100%) rename {pkg => go/pkg}/mcp/brain/tools_example_test.go (100%) rename {pkg => go/pkg}/mcp/brain/tools_test.go (100%) rename {pkg => go/pkg}/mcp/bridge.go (100%) rename {pkg => go/pkg}/mcp/bridge_example_test.go (100%) rename {pkg => go/pkg}/mcp/bridge_test.go (100%) rename {pkg => go/pkg}/mcp/compliance_helpers_test.go (100%) rename {pkg => go/pkg}/mcp/core_medium.go (100%) rename {pkg => go/pkg}/mcp/core_medium_example_test.go (100%) rename {pkg => go/pkg}/mcp/core_medium_test.go (100%) rename {pkg => go/pkg}/mcp/ide/bridge.go (100%) rename {pkg => go/pkg}/mcp/ide/bridge_example_test.go (100%) rename {pkg => go/pkg}/mcp/ide/bridge_test.go (100%) rename {pkg => go/pkg}/mcp/ide/compliance_helpers_test.go (100%) rename {pkg => go/pkg}/mcp/ide/config.go (100%) rename {pkg => go/pkg}/mcp/ide/config_example_test.go (100%) rename {pkg => go/pkg}/mcp/ide/config_test.go (100%) rename {pkg => go/pkg}/mcp/ide/ide.go (100%) rename {pkg => go/pkg}/mcp/ide/ide_example_test.go (100%) rename {pkg => go/pkg}/mcp/ide/ide_test.go (100%) rename {pkg => go/pkg}/mcp/ide/tools_build.go (100%) rename {pkg => go/pkg}/mcp/ide/tools_build_example_test.go (100%) rename {pkg => go/pkg}/mcp/ide/tools_build_test.go (100%) rename {pkg => go/pkg}/mcp/ide/tools_chat.go (100%) rename {pkg => go/pkg}/mcp/ide/tools_chat_example_test.go (100%) rename {pkg => go/pkg}/mcp/ide/tools_chat_test.go (100%) rename {pkg => go/pkg}/mcp/ide/tools_dashboard.go (100%) rename {pkg => go/pkg}/mcp/ide/tools_dashboard_example_test.go (100%) rename {pkg => go/pkg}/mcp/ide/tools_dashboard_test.go (100%) rename {pkg => go/pkg}/mcp/ide/tools_test.go (100%) rename {pkg => go/pkg}/mcp/integration_test.go (100%) rename {pkg => go/pkg}/mcp/ipc.go (100%) rename {pkg => go/pkg}/mcp/ipc_test.go (100%) rename {pkg => go/pkg}/mcp/iter_test.go (100%) rename {pkg => go/pkg}/mcp/mcp.go (100%) rename {pkg => go/pkg}/mcp/mcp_example_test.go (100%) rename {pkg => go/pkg}/mcp/mcp_test.go (100%) rename {pkg => go/pkg}/mcp/notify.go (100%) rename {pkg => go/pkg}/mcp/notify_example_test.go (100%) rename {pkg => go/pkg}/mcp/notify_test.go (100%) rename {pkg => go/pkg}/mcp/process_notifications.go (100%) rename {pkg => go/pkg}/mcp/progress.go (100%) rename {pkg => go/pkg}/mcp/progress_example_test.go (100%) rename {pkg => go/pkg}/mcp/progress_test.go (100%) rename {pkg => go/pkg}/mcp/register.go (100%) rename {pkg => go/pkg}/mcp/register_example_test.go (100%) rename {pkg => go/pkg}/mcp/register_test.go (100%) rename {pkg => go/pkg}/mcp/registry.go (100%) rename {pkg => go/pkg}/mcp/registry_example_test.go (100%) rename {pkg => go/pkg}/mcp/registry_test.go (100%) rename {pkg => go/pkg}/mcp/result_helpers.go (100%) rename {pkg => go/pkg}/mcp/subsystem.go (100%) rename {pkg => go/pkg}/mcp/subsystem_example_test.go (100%) rename {pkg => go/pkg}/mcp/subsystem_test.go (100%) rename {pkg => go/pkg}/mcp/tools_metrics.go (100%) rename {pkg => go/pkg}/mcp/tools_metrics_example_test.go (100%) rename {pkg => go/pkg}/mcp/tools_metrics_test.go (100%) rename {pkg => go/pkg}/mcp/tools_process.go (100%) rename {pkg => go/pkg}/mcp/tools_process_ci_test.go (100%) rename {pkg => go/pkg}/mcp/tools_process_example_test.go (100%) rename {pkg => go/pkg}/mcp/tools_process_test.go (100%) rename {pkg => go/pkg}/mcp/tools_rag.go (100%) rename {pkg => go/pkg}/mcp/tools_rag_ci_test.go (100%) rename {pkg => go/pkg}/mcp/tools_rag_example_test.go (100%) rename {pkg => go/pkg}/mcp/tools_rag_test.go (100%) rename {pkg => go/pkg}/mcp/tools_webview_embed.go (100%) rename {pkg => go/pkg}/mcp/tools_webview_embed_example_test.go (100%) rename {pkg => go/pkg}/mcp/tools_webview_embed_test.go (100%) rename {pkg => go/pkg}/mcp/tools_ws.go (100%) rename {pkg => go/pkg}/mcp/tools_ws_client.go (100%) rename {pkg => go/pkg}/mcp/tools_ws_client_example_test.go (100%) rename {pkg => go/pkg}/mcp/tools_ws_client_test.go (100%) rename {pkg => go/pkg}/mcp/tools_ws_example_test.go (100%) rename {pkg => go/pkg}/mcp/tools_ws_test.go (100%) rename {pkg => go/pkg}/mcp/transformer.go (100%) rename {pkg => go/pkg}/mcp/transformer_anthropic.go (100%) rename {pkg => go/pkg}/mcp/transformer_anthropic_example_test.go (100%) rename {pkg => go/pkg}/mcp/transformer_anthropic_test.go (100%) rename {pkg => go/pkg}/mcp/transformer_example_test.go (100%) rename {pkg => go/pkg}/mcp/transformer_honeypot.go (100%) rename {pkg => go/pkg}/mcp/transformer_honeypot_example_test.go (100%) rename {pkg => go/pkg}/mcp/transformer_honeypot_test.go (100%) rename {pkg => go/pkg}/mcp/transformer_openai.go (100%) rename {pkg => go/pkg}/mcp/transformer_openai_example_test.go (100%) rename {pkg => go/pkg}/mcp/transformer_openai_test.go (100%) rename {pkg => go/pkg}/mcp/transformer_test.go (100%) rename {pkg => go/pkg}/mcp/transport_e2e_test.go (100%) rename {pkg => go/pkg}/mcp/transport_http.go (100%) rename {pkg => go/pkg}/mcp/transport_http_example_test.go (100%) rename {pkg => go/pkg}/mcp/transport_http_test.go (100%) rename {pkg => go/pkg}/mcp/transport_stdio.go (100%) rename {pkg => go/pkg}/mcp/transport_stdio_example_test.go (100%) rename {pkg => go/pkg}/mcp/transport_stdio_test.go (100%) rename {pkg => go/pkg}/mcp/transport_tcp.go (100%) rename {pkg => go/pkg}/mcp/transport_tcp_example_test.go (100%) rename {pkg => go/pkg}/mcp/transport_tcp_test.go (100%) rename {pkg => go/pkg}/mcp/transport_unix.go (100%) rename {pkg => go/pkg}/mcp/transport_unix_example_test.go (100%) rename {pkg => go/pkg}/mcp/transport_unix_test.go (100%) rename {tests => go/tests}/cli/mcp/Taskfile.yaml (100%) rename {src => php}/php/.editorconfig (100%) rename {src => php}/php/.env.example (100%) rename {src => php}/php/.forgejo/workflows/ci.yml (100%) rename {src => php}/php/.forgejo/workflows/release.yml (100%) rename {src => php}/php/.gemini/settings.json (100%) rename {src => php}/php/.github/FUNDING.yml (100%) rename {src => php}/php/.github/copilot-instructions.md (100%) rename {src => php}/php/.github/dependabot.yml (100%) rename {src => php}/php/.github/package-workflows/README.md (100%) rename {src => php}/php/.github/package-workflows/ci.yml (100%) rename {src => php}/php/.github/package-workflows/release.yml (100%) rename {src => php}/php/.github/workflows/ci.yml (100%) rename {src => php}/php/.github/workflows/release.yml (100%) rename {src => php}/php/.gitignore (100%) rename {src => php}/php/AGENTS.md (100%) rename {src => php}/php/FINDINGS.md (100%) rename {src => php}/php/GEMINI.md (100%) rename {src => php}/php/TODO.md (100%) rename {src => php}/php/app/Http/Controllers/.gitkeep (100%) rename {src => php}/php/app/Mod/.gitkeep (100%) rename {src => php}/php/app/Models/.gitkeep (100%) rename {src => php}/php/app/Providers/AppServiceProvider.php (100%) rename {src => php}/php/artisan (100%) rename {src => php}/php/bootstrap/app.php (100%) rename {src => php}/php/bootstrap/cache/.gitignore (100%) rename {src => php}/php/bootstrap/providers.php (100%) rename {src => php}/php/config/core.php (100%) rename {src => php}/php/database/factories/.gitkeep (100%) rename {src => php}/php/database/migrations/.gitkeep (100%) rename {src => php}/php/database/seeders/DatabaseSeeder.php (100%) rename {src => php}/php/docs/analytics.md (100%) rename {src => php}/php/docs/creating-mcp-tools.md (100%) rename {src => php}/php/docs/discovery-2026-02-21.md (100%) rename {src => php}/php/docs/index.md (100%) rename {src => php}/php/docs/query-database.md (100%) rename {src => php}/php/docs/quotas.md (100%) rename {src => php}/php/docs/security.md (100%) rename {src => php}/php/docs/sql-security.md (100%) rename {src => php}/php/docs/tools-reference.md (100%) rename {src => php}/php/docs/tools.md (100%) rename {src => php}/php/docs/workspace.md (100%) rename {src => php}/php/package.json (100%) rename {src => php}/php/phpunit.xml (100%) rename {src => php}/php/postcss.config.js (100%) rename {src => php}/php/public/.htaccess (100%) rename {src => php}/php/public/index.php (100%) rename {src => php}/php/public/robots.txt (100%) rename {src => php}/php/resources/css/app.css (100%) rename {src => php}/php/resources/js/app.js (100%) rename {src => php}/php/resources/js/bootstrap.js (100%) rename {src => php}/php/resources/views/welcome.blade.php (100%) rename {src => php}/php/routes/api.php (100%) rename {src => php}/php/routes/console.php (100%) rename {src => php}/php/routes/web.php (100%) rename {src => php}/php/src/Front/Mcp/Boot.php (100%) rename {src => php}/php/src/Front/Mcp/Contracts/McpToolHandler.php (100%) rename {src => php}/php/src/Front/Mcp/McpContext.php (100%) rename {src => php}/php/src/Front/View/Blade/layouts/mcp.blade.php (100%) rename {src => php}/php/src/Mcp/Boot.php (100%) rename {src => php}/php/src/Mcp/Console/Commands/CleanupToolCallLogsCommand.php (100%) rename {src => php}/php/src/Mcp/Console/Commands/McpAgentServerCommand.php (100%) rename {src => php}/php/src/Mcp/Console/Commands/McpMonitorCommand.php (100%) rename {src => php}/php/src/Mcp/Console/Commands/PruneMetricsCommand.php (100%) rename {src => php}/php/src/Mcp/Console/Commands/VerifyAuditLogCommand.php (100%) rename {src => php}/php/src/Mcp/Context/WorkspaceContext.php (100%) rename {src => php}/php/src/Mcp/Controllers/McpApiController.php (100%) rename {src => php}/php/src/Mcp/DTO/ToolStats.php (100%) rename {src => php}/php/src/Mcp/Database/Seeders/SensitiveToolSeeder.php (100%) rename {src => php}/php/src/Mcp/Dependencies/DependencyType.php (100%) rename {src => php}/php/src/Mcp/Dependencies/HasDependencies.php (100%) rename {src => php}/php/src/Mcp/Dependencies/ToolDependency.php (100%) rename {src => php}/php/src/Mcp/Events/ToolExecuted.php (100%) rename {src => php}/php/src/Mcp/Exceptions/CircuitOpenException.php (100%) rename {src => php}/php/src/Mcp/Exceptions/ForbiddenQueryException.php (100%) rename {src => php}/php/src/Mcp/Exceptions/MissingDependencyException.php (100%) rename {src => php}/php/src/Mcp/Exceptions/MissingWorkspaceContextException.php (100%) rename {src => php}/php/src/Mcp/Exceptions/QueryTimeoutException.php (100%) rename {src => php}/php/src/Mcp/Exceptions/ResultSizeLimitException.php (100%) rename {src => php}/php/src/Mcp/Lang/en_GB/mcp.php (100%) rename {src => php}/php/src/Mcp/Listeners/RecordToolExecution.php (100%) rename {src => php}/php/src/Mcp/Middleware/CheckMcpQuota.php (100%) rename {src => php}/php/src/Mcp/Middleware/McpApiKeyAuth.php (100%) rename {src => php}/php/src/Mcp/Middleware/McpAuthenticate.php (100%) rename {src => php}/php/src/Mcp/Middleware/ValidateToolDependencies.php (100%) rename {src => php}/php/src/Mcp/Middleware/ValidateWorkspaceContext.php (100%) rename {src => php}/php/src/Mcp/Migrations/2026_01_07_004936_create_mcp_api_requests_table.php (100%) rename {src => php}/php/src/Mcp/Migrations/2026_01_26_000001_create_mcp_tool_metrics_table.php (100%) rename {src => php}/php/src/Mcp/Migrations/2026_01_26_000002_create_mcp_usage_quotas_table.php (100%) rename {src => php}/php/src/Mcp/Migrations/2026_01_26_000003_create_mcp_audit_logs_table.php (100%) rename {src => php}/php/src/Mcp/Migrations/2026_01_26_000004_create_mcp_tool_versions_table.php (100%) rename {src => php}/php/src/Mcp/Models/McpApiRequest.php (100%) rename {src => php}/php/src/Mcp/Models/McpAuditLog.php (100%) rename {src => php}/php/src/Mcp/Models/McpSensitiveTool.php (100%) rename {src => php}/php/src/Mcp/Models/McpToolCall.php (100%) rename {src => php}/php/src/Mcp/Models/McpToolCallStat.php (100%) rename {src => php}/php/src/Mcp/Models/McpToolVersion.php (100%) rename {src => php}/php/src/Mcp/Models/McpUsageQuota.php (100%) rename {src => php}/php/src/Mcp/Models/ToolMetric.php (100%) rename {src => php}/php/src/Mcp/Resources/AppConfig.php (100%) rename {src => php}/php/src/Mcp/Resources/ContentResource.php (100%) rename {src => php}/php/src/Mcp/Resources/DatabaseSchema.php (100%) rename {src => php}/php/src/Mcp/Routes/admin.php (100%) rename {src => php}/php/src/Mcp/Services/AgentSessionService.php (100%) rename {src => php}/php/src/Mcp/Services/AgentToolRegistry.php (100%) rename {src => php}/php/src/Mcp/Services/AuditLogService.php (100%) rename {src => php}/php/src/Mcp/Services/CircuitBreaker.php (100%) rename {src => php}/php/src/Mcp/Services/DataRedactor.php (100%) rename {src => php}/php/src/Mcp/Services/McpHealthService.php (100%) rename {src => php}/php/src/Mcp/Services/McpMetricsService.php (100%) rename {src => php}/php/src/Mcp/Services/McpQuotaService.php (100%) rename {src => php}/php/src/Mcp/Services/McpWebhookDispatcher.php (100%) rename {src => php}/php/src/Mcp/Services/OpenApiGenerator.php (100%) rename {src => php}/php/src/Mcp/Services/QueryAuditService.php (100%) rename {src => php}/php/src/Mcp/Services/QueryExecutionService.php (100%) rename {src => php}/php/src/Mcp/Services/SqlQueryValidator.php (100%) rename {src => php}/php/src/Mcp/Services/ToolAnalyticsService.php (100%) rename {src => php}/php/src/Mcp/Services/ToolDependencyService.php (100%) rename {src => php}/php/src/Mcp/Services/ToolRateLimiter.php (100%) rename {src => php}/php/src/Mcp/Services/ToolRegistry.php (100%) rename {src => php}/php/src/Mcp/Services/ToolVersionService.php (100%) rename {src => php}/php/src/Mcp/Tests/Unit/McpQuotaServiceTest.php (100%) rename {src => php}/php/src/Mcp/Tests/Unit/QueryAuditServiceTest.php (100%) rename {src => php}/php/src/Mcp/Tests/Unit/QueryExecutionServiceTest.php (100%) rename {src => php}/php/src/Mcp/Tests/Unit/ToolAnalyticsServiceTest.php (100%) rename {src => php}/php/src/Mcp/Tests/Unit/ToolDependencyServiceTest.php (100%) rename {src => php}/php/src/Mcp/Tests/Unit/ToolVersionServiceTest.php (100%) rename {src => php}/php/src/Mcp/Tests/Unit/ValidateWorkspaceContextMiddlewareTest.php (100%) rename {src => php}/php/src/Mcp/Tests/Unit/WorkspaceContextSecurityTest.php (100%) rename {src => php}/php/src/Mcp/Tests/UseCase/ApiKeyManagerBasic.php (100%) rename {src => php}/php/src/Mcp/Tools/Commerce/CreateCoupon.php (100%) rename {src => php}/php/src/Mcp/Tools/Commerce/GetBillingStatus.php (100%) rename {src => php}/php/src/Mcp/Tools/Commerce/ListInvoices.php (100%) rename {src => php}/php/src/Mcp/Tools/Commerce/UpgradePlan.php (100%) rename {src => php}/php/src/Mcp/Tools/Concerns/RequiresWorkspaceContext.php (100%) rename {src => php}/php/src/Mcp/Tools/Concerns/ValidatesDependencies.php (100%) rename {src => php}/php/src/Mcp/Tools/ContentTools.php (100%) rename {src => php}/php/src/Mcp/Tools/DescribeTable.php (100%) rename {src => php}/php/src/Mcp/Tools/GetStats.php (100%) rename {src => php}/php/src/Mcp/Tools/ListRoutes.php (100%) rename {src => php}/php/src/Mcp/Tools/ListSites.php (100%) rename {src => php}/php/src/Mcp/Tools/ListTables.php (100%) rename {src => php}/php/src/Mcp/Tools/QueryDatabase.php (100%) rename {src => php}/php/src/Mcp/View/Blade/admin/analytics/dashboard.blade.php (100%) rename {src => php}/php/src/Mcp/View/Blade/admin/analytics/partials/stats-card.blade.php (100%) rename {src => php}/php/src/Mcp/View/Blade/admin/analytics/partials/tool-table.blade.php (100%) rename {src => php}/php/src/Mcp/View/Blade/admin/analytics/tool-detail.blade.php (100%) rename {src => php}/php/src/Mcp/View/Blade/admin/api-key-manager.blade.php (100%) rename {src => php}/php/src/Mcp/View/Blade/admin/audit-log-viewer.blade.php (100%) rename {src => php}/php/src/Mcp/View/Blade/admin/mcp-playground.blade.php (100%) rename {src => php}/php/src/Mcp/View/Blade/admin/playground.blade.php (100%) rename {src => php}/php/src/Mcp/View/Blade/admin/quota-usage.blade.php (100%) rename {src => php}/php/src/Mcp/View/Blade/admin/request-log.blade.php (100%) rename {src => php}/php/src/Mcp/View/Blade/admin/tool-version-manager.blade.php (100%) rename {src => php}/php/src/Mcp/View/Modal/Admin/ApiKeyManager.php (100%) rename {src => php}/php/src/Mcp/View/Modal/Admin/AuditLogViewer.php (100%) rename {src => php}/php/src/Mcp/View/Modal/Admin/McpPlayground.php (100%) rename {src => php}/php/src/Mcp/View/Modal/Admin/Playground.php (100%) rename {src => php}/php/src/Mcp/View/Modal/Admin/QuotaUsage.php (100%) rename {src => php}/php/src/Mcp/View/Modal/Admin/RequestLog.php (100%) rename {src => php}/php/src/Mcp/View/Modal/Admin/ToolAnalyticsDashboard.php (100%) rename {src => php}/php/src/Mcp/View/Modal/Admin/ToolAnalyticsDetail.php (100%) rename {src => php}/php/src/Mcp/View/Modal/Admin/ToolVersionManager.php (100%) rename {src => php}/php/src/Website/Mcp/Boot.php (100%) rename {src => php}/php/src/Website/Mcp/Controllers/McpRegistryController.php (100%) rename {src => php}/php/src/Website/Mcp/Routes/web.php (100%) rename {src => php}/php/src/Website/Mcp/View/Blade/web/analytics.blade.php (100%) rename {src => php}/php/src/Website/Mcp/View/Blade/web/api-explorer.blade.php (100%) rename {src => php}/php/src/Website/Mcp/View/Blade/web/api-key-manager.blade.php (100%) rename {src => php}/php/src/Website/Mcp/View/Blade/web/connect.blade.php (100%) rename {src => php}/php/src/Website/Mcp/View/Blade/web/dashboard.blade.php (100%) rename {src => php}/php/src/Website/Mcp/View/Blade/web/index.blade.php (100%) rename {src => php}/php/src/Website/Mcp/View/Blade/web/keys.blade.php (100%) rename {src => php}/php/src/Website/Mcp/View/Blade/web/landing.blade.php (100%) rename {src => php}/php/src/Website/Mcp/View/Blade/web/mcp-metrics.blade.php (100%) rename {src => php}/php/src/Website/Mcp/View/Blade/web/mcp-playground.blade.php (100%) rename {src => php}/php/src/Website/Mcp/View/Blade/web/playground.blade.php (100%) rename {src => php}/php/src/Website/Mcp/View/Blade/web/request-log.blade.php (100%) rename {src => php}/php/src/Website/Mcp/View/Blade/web/show.blade.php (100%) rename {src => php}/php/src/Website/Mcp/View/Blade/web/unified-search.blade.php (100%) rename {src => php}/php/src/Website/Mcp/View/Modal/ApiExplorer.php (100%) rename {src => php}/php/src/Website/Mcp/View/Modal/ApiKeyManager.php (100%) rename {src => php}/php/src/Website/Mcp/View/Modal/Dashboard.php (100%) rename {src => php}/php/src/Website/Mcp/View/Modal/McpMetrics.php (100%) rename {src => php}/php/src/Website/Mcp/View/Modal/McpPlayground.php (100%) rename {src => php}/php/src/Website/Mcp/View/Modal/Playground.php (100%) rename {src => php}/php/src/Website/Mcp/View/Modal/RequestLog.php (100%) rename {src => php}/php/src/Website/Mcp/View/Modal/UnifiedSearch.php (100%) rename {src => php}/php/storage/app/.gitignore (100%) rename {src => php}/php/storage/app/public/.gitignore (100%) rename {src => php}/php/storage/framework/.gitignore (100%) rename {src => php}/php/storage/framework/cache/.gitignore (100%) rename {src => php}/php/storage/framework/cache/data/.gitignore (100%) rename {src => php}/php/storage/framework/sessions/.gitignore (100%) rename {src => php}/php/storage/framework/testing/.gitignore (100%) rename {src => php}/php/storage/framework/views/.gitignore (100%) rename {src => php}/php/storage/logs/.gitignore (100%) rename {src => php}/php/tailwind.config.js (100%) rename {src => php}/php/tests/Feature/.gitkeep (100%) rename {src => php}/php/tests/Pest.php (100%) rename {src => php}/php/tests/TestCase.php (100%) rename {src => php}/php/tests/Unit/.gitkeep (100%) rename {src => php}/php/tests/Unit/DescribeTableTest.php (100%) rename {src => php}/php/tests/Unit/McpResourceListTest.php (100%) rename {src => php}/php/tests/Unit/SqlQueryValidatorTest.php (100%) rename {src => php}/php/vite.config.js (100%) diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..63a8bad --- /dev/null +++ b/.gitmodules @@ -0,0 +1,24 @@ +[submodule "external/go"] + path = external/go + url = https://github.com/dappcore/go.git + branch = dev +[submodule "external/io"] + path = external/io + url = https://github.com/dappcore/go-io.git + branch = dev +[submodule "external/log"] + path = external/log + url = https://github.com/dappcore/go-log.git + branch = dev +[submodule "external/process"] + path = external/process + url = https://github.com/dappcore/go-process.git + branch = dev +[submodule "external/rag"] + path = external/rag + url = https://github.com/dappcore/go-rag.git + branch = dev +[submodule "external/ws"] + path = external/ws + url = https://github.com/dappcore/go-ws.git + branch = dev diff --git a/CLAUDE.md b/CLAUDE.md index a83a086..41775ec 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -6,21 +6,33 @@ Guidance for Claude Code and Codex when working with this repository. `forge.lthn.ai/core/mcp` — Model Context Protocol server with file operations, tool registration, notification broadcasting, and channel events. +Repo layout has become language-segmented: + +```text +core/mcp/ +├── go/ — Go module `dappco.re/go/mcp` +├── php/ — PHP Laravel package (formerly `src/`) +├── docs/ — shared docs +└── composer.json +``` + +The Go module is `core/mcp/go/`; the PHP package is `core/mcp/php/`. + Licence: EUPL-1.2 ## Build & Test ```bash -go test ./pkg/mcp/... # run all tests -go build ./pkg/mcp/... # verify compilation -go build ./cmd/core-mcp/ # build binary +(cd go && go test ./pkg/mcp/...) # run all tests +(cd go && go build ./pkg/mcp/...) # verify compilation +(cd go && go build ./cmd/core-mcp/) # build binary ``` Or via the Core CLI: ```bash -core go test -core go qa # fmt + vet + lint + test +(cd go && core go test) +(cd go && core go qa) # fmt + vet + lint + test ``` ## API Shape @@ -126,4 +138,6 @@ Selected by `Run()` in priority order: ## Go Workspace -Part of `~/Code/go.work`. Use `GOWORK=off` to test in isolation. +The Go stack in this repo is nested as `go/`: + +`cd go && GOWORK=off go test ./...` for isolated module verification. diff --git a/cmd/core-mcp/main.go b/cmd/core-mcp/main.go deleted file mode 100644 index b704cd5..0000000 --- a/cmd/core-mcp/main.go +++ /dev/null @@ -1,12 +0,0 @@ -package main - -import ( - core "dappco.re/go" - mcpcmd "dappco.re/go/mcp/cmd/mcpcmd" -) - -func main() { - c := core.New(core.WithService(core.CliRegister)) - mcpcmd.AddMCPCommands(c) - c.Run() -} diff --git a/composer.json b/composer.json index 7f9c2f0..72333f2 100644 --- a/composer.json +++ b/composer.json @@ -9,14 +9,14 @@ }, "autoload": { "psr-4": { - "Core\\Mcp\\": "src/php/src/Mcp/", - "Core\\Website\\Mcp\\": "src/php/src/Website/Mcp/", - "Core\\Front\\Mcp\\": "src/php/src/Front/Mcp/" + "Core\\Mcp\\": "php/src/Mcp/", + "Core\\Website\\Mcp\\": "php/src/Website/Mcp/", + "Core\\Front\\Mcp\\": "php/src/Front/Mcp/" } }, "autoload-dev": { "psr-4": { - "Core\\Mcp\\Tests\\": "src/php/tests/" + "Core\\Mcp\\Tests\\": "php/tests/" } }, "extra": { diff --git a/external/go b/external/go new file mode 160000 index 0000000..d661b70 --- /dev/null +++ b/external/go @@ -0,0 +1 @@ +Subproject commit d661b703e16183b3cbab101de189f688888a1174 diff --git a/external/io b/external/io new file mode 160000 index 0000000..789653d --- /dev/null +++ b/external/io @@ -0,0 +1 @@ +Subproject commit 789653dfc376383a3873993cdb875c8c717e4b05 diff --git a/external/log b/external/log new file mode 160000 index 0000000..df05298 --- /dev/null +++ b/external/log @@ -0,0 +1 @@ +Subproject commit df0529839b2ab786a6a3da374fa664867d5f9f09 diff --git a/external/process b/external/process new file mode 160000 index 0000000..a0ad5cb --- /dev/null +++ b/external/process @@ -0,0 +1 @@ +Subproject commit a0ad5cbdea96ba43e86bceb1fa8c0b07d0343b3f diff --git a/external/rag b/external/rag new file mode 160000 index 0000000..8253303 --- /dev/null +++ b/external/rag @@ -0,0 +1 @@ +Subproject commit 825330379dae0b6be1597ac8d92f8db2624038e2 diff --git a/external/ws b/external/ws new file mode 160000 index 0000000..c83f7a1 --- /dev/null +++ b/external/ws @@ -0,0 +1 @@ +Subproject commit c83f7a1d91c314543ac0d61d14a13b24877b8cd7 diff --git a/go.work b/go.work new file mode 100644 index 0000000..7942ff9 --- /dev/null +++ b/go.work @@ -0,0 +1,14 @@ +go 1.26.2 + +// Workspace mode for development: pulls fresh code from external/ submodules. +// CI uses GOWORK=off to fall back to go/go.mod tags (reproducible). + +use ( + ./go + ./external/go + ./external/io + ./external/log + ./external/process + ./external/rag + ./external/ws +) diff --git a/go/AGENTS.md b/go/AGENTS.md new file mode 120000 index 0000000..be77ac8 --- /dev/null +++ b/go/AGENTS.md @@ -0,0 +1 @@ +../AGENTS.md \ No newline at end of file diff --git a/go/CLAUDE.md b/go/CLAUDE.md new file mode 120000 index 0000000..949a29f --- /dev/null +++ b/go/CLAUDE.md @@ -0,0 +1 @@ +../CLAUDE.md \ No newline at end of file diff --git a/go/README.md b/go/README.md new file mode 120000 index 0000000..32d46ee --- /dev/null +++ b/go/README.md @@ -0,0 +1 @@ +../README.md \ No newline at end of file diff --git a/cmd/brain-seed/main.go b/go/cmd/brain-seed/main.go similarity index 100% rename from cmd/brain-seed/main.go rename to go/cmd/brain-seed/main.go diff --git a/cmd/mcpcmd/cmd_mcp.go b/go/cmd/mcpcmd/cmd_mcp.go similarity index 100% rename from cmd/mcpcmd/cmd_mcp.go rename to go/cmd/mcpcmd/cmd_mcp.go diff --git a/cmd/mcpcmd/cmd_mcp_example_test.go b/go/cmd/mcpcmd/cmd_mcp_example_test.go similarity index 100% rename from cmd/mcpcmd/cmd_mcp_example_test.go rename to go/cmd/mcpcmd/cmd_mcp_example_test.go diff --git a/cmd/mcpcmd/cmd_mcp_test.go b/go/cmd/mcpcmd/cmd_mcp_test.go similarity index 100% rename from cmd/mcpcmd/cmd_mcp_test.go rename to go/cmd/mcpcmd/cmd_mcp_test.go diff --git a/cmd/openbrain-mcp/README.md b/go/cmd/openbrain-mcp/README.md similarity index 100% rename from cmd/openbrain-mcp/README.md rename to go/cmd/openbrain-mcp/README.md diff --git a/cmd/openbrain-mcp/main.go b/go/cmd/openbrain-mcp/main.go similarity index 100% rename from cmd/openbrain-mcp/main.go rename to go/cmd/openbrain-mcp/main.go diff --git a/go/docs b/go/docs new file mode 120000 index 0000000..a9594bf --- /dev/null +++ b/go/docs @@ -0,0 +1 @@ +../docs \ No newline at end of file diff --git a/go.mod b/go/go.mod similarity index 100% rename from go.mod rename to go/go.mod diff --git a/go.sum b/go/go.sum similarity index 100% rename from go.sum rename to go/go.sum diff --git a/pkg/mcp/agentic/compliance_helpers_test.go b/go/pkg/mcp/agentic/compliance_helpers_test.go similarity index 100% rename from pkg/mcp/agentic/compliance_helpers_test.go rename to go/pkg/mcp/agentic/compliance_helpers_test.go diff --git a/pkg/mcp/agentic/coreio_compat.go b/go/pkg/mcp/agentic/coreio_compat.go similarity index 100% rename from pkg/mcp/agentic/coreio_compat.go rename to go/pkg/mcp/agentic/coreio_compat.go diff --git a/pkg/mcp/agentic/coreio_compat_example_test.go b/go/pkg/mcp/agentic/coreio_compat_example_test.go similarity index 100% rename from pkg/mcp/agentic/coreio_compat_example_test.go rename to go/pkg/mcp/agentic/coreio_compat_example_test.go diff --git a/pkg/mcp/agentic/coreio_compat_test.go b/go/pkg/mcp/agentic/coreio_compat_test.go similarity index 100% rename from pkg/mcp/agentic/coreio_compat_test.go rename to go/pkg/mcp/agentic/coreio_compat_test.go diff --git a/pkg/mcp/agentic/dispatch.go b/go/pkg/mcp/agentic/dispatch.go similarity index 100% rename from pkg/mcp/agentic/dispatch.go rename to go/pkg/mcp/agentic/dispatch.go diff --git a/pkg/mcp/agentic/dispatch_example_test.go b/go/pkg/mcp/agentic/dispatch_example_test.go similarity index 100% rename from pkg/mcp/agentic/dispatch_example_test.go rename to go/pkg/mcp/agentic/dispatch_example_test.go diff --git a/pkg/mcp/agentic/dispatch_test.go b/go/pkg/mcp/agentic/dispatch_test.go similarity index 100% rename from pkg/mcp/agentic/dispatch_test.go rename to go/pkg/mcp/agentic/dispatch_test.go diff --git a/pkg/mcp/agentic/epic.go b/go/pkg/mcp/agentic/epic.go similarity index 100% rename from pkg/mcp/agentic/epic.go rename to go/pkg/mcp/agentic/epic.go diff --git a/pkg/mcp/agentic/epic_example_test.go b/go/pkg/mcp/agentic/epic_example_test.go similarity index 100% rename from pkg/mcp/agentic/epic_example_test.go rename to go/pkg/mcp/agentic/epic_example_test.go diff --git a/pkg/mcp/agentic/epic_test.go b/go/pkg/mcp/agentic/epic_test.go similarity index 100% rename from pkg/mcp/agentic/epic_test.go rename to go/pkg/mcp/agentic/epic_test.go diff --git a/pkg/mcp/agentic/ingest.go b/go/pkg/mcp/agentic/ingest.go similarity index 100% rename from pkg/mcp/agentic/ingest.go rename to go/pkg/mcp/agentic/ingest.go diff --git a/pkg/mcp/agentic/issue.go b/go/pkg/mcp/agentic/issue.go similarity index 100% rename from pkg/mcp/agentic/issue.go rename to go/pkg/mcp/agentic/issue.go diff --git a/pkg/mcp/agentic/issue_example_test.go b/go/pkg/mcp/agentic/issue_example_test.go similarity index 100% rename from pkg/mcp/agentic/issue_example_test.go rename to go/pkg/mcp/agentic/issue_example_test.go diff --git a/pkg/mcp/agentic/issue_test.go b/go/pkg/mcp/agentic/issue_test.go similarity index 100% rename from pkg/mcp/agentic/issue_test.go rename to go/pkg/mcp/agentic/issue_test.go diff --git a/pkg/mcp/agentic/mirror.go b/go/pkg/mcp/agentic/mirror.go similarity index 100% rename from pkg/mcp/agentic/mirror.go rename to go/pkg/mcp/agentic/mirror.go diff --git a/pkg/mcp/agentic/mirror_example_test.go b/go/pkg/mcp/agentic/mirror_example_test.go similarity index 100% rename from pkg/mcp/agentic/mirror_example_test.go rename to go/pkg/mcp/agentic/mirror_example_test.go diff --git a/pkg/mcp/agentic/mirror_test.go b/go/pkg/mcp/agentic/mirror_test.go similarity index 100% rename from pkg/mcp/agentic/mirror_test.go rename to go/pkg/mcp/agentic/mirror_test.go diff --git a/pkg/mcp/agentic/plan.go b/go/pkg/mcp/agentic/plan.go similarity index 100% rename from pkg/mcp/agentic/plan.go rename to go/pkg/mcp/agentic/plan.go diff --git a/pkg/mcp/agentic/plan_example_test.go b/go/pkg/mcp/agentic/plan_example_test.go similarity index 100% rename from pkg/mcp/agentic/plan_example_test.go rename to go/pkg/mcp/agentic/plan_example_test.go diff --git a/pkg/mcp/agentic/plan_test.go b/go/pkg/mcp/agentic/plan_test.go similarity index 100% rename from pkg/mcp/agentic/plan_test.go rename to go/pkg/mcp/agentic/plan_test.go diff --git a/pkg/mcp/agentic/pr.go b/go/pkg/mcp/agentic/pr.go similarity index 100% rename from pkg/mcp/agentic/pr.go rename to go/pkg/mcp/agentic/pr.go diff --git a/pkg/mcp/agentic/pr_example_test.go b/go/pkg/mcp/agentic/pr_example_test.go similarity index 100% rename from pkg/mcp/agentic/pr_example_test.go rename to go/pkg/mcp/agentic/pr_example_test.go diff --git a/pkg/mcp/agentic/pr_test.go b/go/pkg/mcp/agentic/pr_test.go similarity index 100% rename from pkg/mcp/agentic/pr_test.go rename to go/pkg/mcp/agentic/pr_test.go diff --git a/pkg/mcp/agentic/prep.go b/go/pkg/mcp/agentic/prep.go similarity index 100% rename from pkg/mcp/agentic/prep.go rename to go/pkg/mcp/agentic/prep.go diff --git a/pkg/mcp/agentic/prep_example_test.go b/go/pkg/mcp/agentic/prep_example_test.go similarity index 100% rename from pkg/mcp/agentic/prep_example_test.go rename to go/pkg/mcp/agentic/prep_example_test.go diff --git a/pkg/mcp/agentic/prep_test.go b/go/pkg/mcp/agentic/prep_test.go similarity index 100% rename from pkg/mcp/agentic/prep_test.go rename to go/pkg/mcp/agentic/prep_test.go diff --git a/pkg/mcp/agentic/queue.go b/go/pkg/mcp/agentic/queue.go similarity index 100% rename from pkg/mcp/agentic/queue.go rename to go/pkg/mcp/agentic/queue.go diff --git a/pkg/mcp/agentic/queue_example_test.go b/go/pkg/mcp/agentic/queue_example_test.go similarity index 100% rename from pkg/mcp/agentic/queue_example_test.go rename to go/pkg/mcp/agentic/queue_example_test.go diff --git a/pkg/mcp/agentic/queue_test.go b/go/pkg/mcp/agentic/queue_test.go similarity index 100% rename from pkg/mcp/agentic/queue_test.go rename to go/pkg/mcp/agentic/queue_test.go diff --git a/pkg/mcp/agentic/repo_helpers.go b/go/pkg/mcp/agentic/repo_helpers.go similarity index 100% rename from pkg/mcp/agentic/repo_helpers.go rename to go/pkg/mcp/agentic/repo_helpers.go diff --git a/pkg/mcp/agentic/resume.go b/go/pkg/mcp/agentic/resume.go similarity index 100% rename from pkg/mcp/agentic/resume.go rename to go/pkg/mcp/agentic/resume.go diff --git a/pkg/mcp/agentic/resume_example_test.go b/go/pkg/mcp/agentic/resume_example_test.go similarity index 100% rename from pkg/mcp/agentic/resume_example_test.go rename to go/pkg/mcp/agentic/resume_example_test.go diff --git a/pkg/mcp/agentic/resume_test.go b/go/pkg/mcp/agentic/resume_test.go similarity index 100% rename from pkg/mcp/agentic/resume_test.go rename to go/pkg/mcp/agentic/resume_test.go diff --git a/pkg/mcp/agentic/review_queue.go b/go/pkg/mcp/agentic/review_queue.go similarity index 100% rename from pkg/mcp/agentic/review_queue.go rename to go/pkg/mcp/agentic/review_queue.go diff --git a/pkg/mcp/agentic/review_queue_example_test.go b/go/pkg/mcp/agentic/review_queue_example_test.go similarity index 100% rename from pkg/mcp/agentic/review_queue_example_test.go rename to go/pkg/mcp/agentic/review_queue_example_test.go diff --git a/pkg/mcp/agentic/review_queue_test.go b/go/pkg/mcp/agentic/review_queue_test.go similarity index 100% rename from pkg/mcp/agentic/review_queue_test.go rename to go/pkg/mcp/agentic/review_queue_test.go diff --git a/pkg/mcp/agentic/scan.go b/go/pkg/mcp/agentic/scan.go similarity index 100% rename from pkg/mcp/agentic/scan.go rename to go/pkg/mcp/agentic/scan.go diff --git a/pkg/mcp/agentic/scan_example_test.go b/go/pkg/mcp/agentic/scan_example_test.go similarity index 100% rename from pkg/mcp/agentic/scan_example_test.go rename to go/pkg/mcp/agentic/scan_example_test.go diff --git a/pkg/mcp/agentic/scan_test.go b/go/pkg/mcp/agentic/scan_test.go similarity index 100% rename from pkg/mcp/agentic/scan_test.go rename to go/pkg/mcp/agentic/scan_test.go diff --git a/pkg/mcp/agentic/status.go b/go/pkg/mcp/agentic/status.go similarity index 100% rename from pkg/mcp/agentic/status.go rename to go/pkg/mcp/agentic/status.go diff --git a/pkg/mcp/agentic/status_example_test.go b/go/pkg/mcp/agentic/status_example_test.go similarity index 100% rename from pkg/mcp/agentic/status_example_test.go rename to go/pkg/mcp/agentic/status_example_test.go diff --git a/pkg/mcp/agentic/status_test.go b/go/pkg/mcp/agentic/status_test.go similarity index 100% rename from pkg/mcp/agentic/status_test.go rename to go/pkg/mcp/agentic/status_test.go diff --git a/pkg/mcp/agentic/watch.go b/go/pkg/mcp/agentic/watch.go similarity index 100% rename from pkg/mcp/agentic/watch.go rename to go/pkg/mcp/agentic/watch.go diff --git a/pkg/mcp/agentic/watch_example_test.go b/go/pkg/mcp/agentic/watch_example_test.go similarity index 100% rename from pkg/mcp/agentic/watch_example_test.go rename to go/pkg/mcp/agentic/watch_example_test.go diff --git a/pkg/mcp/agentic/watch_test.go b/go/pkg/mcp/agentic/watch_test.go similarity index 100% rename from pkg/mcp/agentic/watch_test.go rename to go/pkg/mcp/agentic/watch_test.go diff --git a/pkg/mcp/agentic/write_atomic.go b/go/pkg/mcp/agentic/write_atomic.go similarity index 100% rename from pkg/mcp/agentic/write_atomic.go rename to go/pkg/mcp/agentic/write_atomic.go diff --git a/pkg/mcp/authz.go b/go/pkg/mcp/authz.go similarity index 100% rename from pkg/mcp/authz.go rename to go/pkg/mcp/authz.go diff --git a/pkg/mcp/brain/brain.go b/go/pkg/mcp/brain/brain.go similarity index 100% rename from pkg/mcp/brain/brain.go rename to go/pkg/mcp/brain/brain.go diff --git a/pkg/mcp/brain/brain_example_test.go b/go/pkg/mcp/brain/brain_example_test.go similarity index 100% rename from pkg/mcp/brain/brain_example_test.go rename to go/pkg/mcp/brain/brain_example_test.go diff --git a/pkg/mcp/brain/brain_test.go b/go/pkg/mcp/brain/brain_test.go similarity index 100% rename from pkg/mcp/brain/brain_test.go rename to go/pkg/mcp/brain/brain_test.go diff --git a/pkg/mcp/brain/bridge_events.go b/go/pkg/mcp/brain/bridge_events.go similarity index 100% rename from pkg/mcp/brain/bridge_events.go rename to go/pkg/mcp/brain/bridge_events.go diff --git a/pkg/mcp/brain/client/client.go b/go/pkg/mcp/brain/client/client.go similarity index 100% rename from pkg/mcp/brain/client/client.go rename to go/pkg/mcp/brain/client/client.go diff --git a/pkg/mcp/brain/client/client_example_test.go b/go/pkg/mcp/brain/client/client_example_test.go similarity index 100% rename from pkg/mcp/brain/client/client_example_test.go rename to go/pkg/mcp/brain/client/client_example_test.go diff --git a/pkg/mcp/brain/client/client_test.go b/go/pkg/mcp/brain/client/client_test.go similarity index 100% rename from pkg/mcp/brain/client/client_test.go rename to go/pkg/mcp/brain/client/client_test.go diff --git a/pkg/mcp/brain/client/compliance_helpers_test.go b/go/pkg/mcp/brain/client/compliance_helpers_test.go similarity index 100% rename from pkg/mcp/brain/client/compliance_helpers_test.go rename to go/pkg/mcp/brain/client/compliance_helpers_test.go diff --git a/pkg/mcp/brain/client/coreio_compat.go b/go/pkg/mcp/brain/client/coreio_compat.go similarity index 100% rename from pkg/mcp/brain/client/coreio_compat.go rename to go/pkg/mcp/brain/client/coreio_compat.go diff --git a/pkg/mcp/brain/client/coreio_compat_example_test.go b/go/pkg/mcp/brain/client/coreio_compat_example_test.go similarity index 100% rename from pkg/mcp/brain/client/coreio_compat_example_test.go rename to go/pkg/mcp/brain/client/coreio_compat_example_test.go diff --git a/pkg/mcp/brain/client/coreio_compat_test.go b/go/pkg/mcp/brain/client/coreio_compat_test.go similarity index 100% rename from pkg/mcp/brain/client/coreio_compat_test.go rename to go/pkg/mcp/brain/client/coreio_compat_test.go diff --git a/pkg/mcp/brain/compliance_helpers_test.go b/go/pkg/mcp/brain/compliance_helpers_test.go similarity index 100% rename from pkg/mcp/brain/compliance_helpers_test.go rename to go/pkg/mcp/brain/compliance_helpers_test.go diff --git a/pkg/mcp/brain/direct.go b/go/pkg/mcp/brain/direct.go similarity index 100% rename from pkg/mcp/brain/direct.go rename to go/pkg/mcp/brain/direct.go diff --git a/pkg/mcp/brain/direct_example_test.go b/go/pkg/mcp/brain/direct_example_test.go similarity index 100% rename from pkg/mcp/brain/direct_example_test.go rename to go/pkg/mcp/brain/direct_example_test.go diff --git a/pkg/mcp/brain/direct_test.go b/go/pkg/mcp/brain/direct_test.go similarity index 100% rename from pkg/mcp/brain/direct_test.go rename to go/pkg/mcp/brain/direct_test.go diff --git a/pkg/mcp/brain/provider.go b/go/pkg/mcp/brain/provider.go similarity index 100% rename from pkg/mcp/brain/provider.go rename to go/pkg/mcp/brain/provider.go diff --git a/pkg/mcp/brain/provider_example_test.go b/go/pkg/mcp/brain/provider_example_test.go similarity index 100% rename from pkg/mcp/brain/provider_example_test.go rename to go/pkg/mcp/brain/provider_example_test.go diff --git a/pkg/mcp/brain/provider_test.go b/go/pkg/mcp/brain/provider_test.go similarity index 100% rename from pkg/mcp/brain/provider_test.go rename to go/pkg/mcp/brain/provider_test.go diff --git a/pkg/mcp/brain/tools.go b/go/pkg/mcp/brain/tools.go similarity index 100% rename from pkg/mcp/brain/tools.go rename to go/pkg/mcp/brain/tools.go diff --git a/pkg/mcp/brain/tools_example_test.go b/go/pkg/mcp/brain/tools_example_test.go similarity index 100% rename from pkg/mcp/brain/tools_example_test.go rename to go/pkg/mcp/brain/tools_example_test.go diff --git a/pkg/mcp/brain/tools_test.go b/go/pkg/mcp/brain/tools_test.go similarity index 100% rename from pkg/mcp/brain/tools_test.go rename to go/pkg/mcp/brain/tools_test.go diff --git a/pkg/mcp/bridge.go b/go/pkg/mcp/bridge.go similarity index 100% rename from pkg/mcp/bridge.go rename to go/pkg/mcp/bridge.go diff --git a/pkg/mcp/bridge_example_test.go b/go/pkg/mcp/bridge_example_test.go similarity index 100% rename from pkg/mcp/bridge_example_test.go rename to go/pkg/mcp/bridge_example_test.go diff --git a/pkg/mcp/bridge_test.go b/go/pkg/mcp/bridge_test.go similarity index 100% rename from pkg/mcp/bridge_test.go rename to go/pkg/mcp/bridge_test.go diff --git a/pkg/mcp/compliance_helpers_test.go b/go/pkg/mcp/compliance_helpers_test.go similarity index 100% rename from pkg/mcp/compliance_helpers_test.go rename to go/pkg/mcp/compliance_helpers_test.go diff --git a/pkg/mcp/core_medium.go b/go/pkg/mcp/core_medium.go similarity index 100% rename from pkg/mcp/core_medium.go rename to go/pkg/mcp/core_medium.go diff --git a/pkg/mcp/core_medium_example_test.go b/go/pkg/mcp/core_medium_example_test.go similarity index 100% rename from pkg/mcp/core_medium_example_test.go rename to go/pkg/mcp/core_medium_example_test.go diff --git a/pkg/mcp/core_medium_test.go b/go/pkg/mcp/core_medium_test.go similarity index 100% rename from pkg/mcp/core_medium_test.go rename to go/pkg/mcp/core_medium_test.go diff --git a/pkg/mcp/ide/bridge.go b/go/pkg/mcp/ide/bridge.go similarity index 100% rename from pkg/mcp/ide/bridge.go rename to go/pkg/mcp/ide/bridge.go diff --git a/pkg/mcp/ide/bridge_example_test.go b/go/pkg/mcp/ide/bridge_example_test.go similarity index 100% rename from pkg/mcp/ide/bridge_example_test.go rename to go/pkg/mcp/ide/bridge_example_test.go diff --git a/pkg/mcp/ide/bridge_test.go b/go/pkg/mcp/ide/bridge_test.go similarity index 100% rename from pkg/mcp/ide/bridge_test.go rename to go/pkg/mcp/ide/bridge_test.go diff --git a/pkg/mcp/ide/compliance_helpers_test.go b/go/pkg/mcp/ide/compliance_helpers_test.go similarity index 100% rename from pkg/mcp/ide/compliance_helpers_test.go rename to go/pkg/mcp/ide/compliance_helpers_test.go diff --git a/pkg/mcp/ide/config.go b/go/pkg/mcp/ide/config.go similarity index 100% rename from pkg/mcp/ide/config.go rename to go/pkg/mcp/ide/config.go diff --git a/pkg/mcp/ide/config_example_test.go b/go/pkg/mcp/ide/config_example_test.go similarity index 100% rename from pkg/mcp/ide/config_example_test.go rename to go/pkg/mcp/ide/config_example_test.go diff --git a/pkg/mcp/ide/config_test.go b/go/pkg/mcp/ide/config_test.go similarity index 100% rename from pkg/mcp/ide/config_test.go rename to go/pkg/mcp/ide/config_test.go diff --git a/pkg/mcp/ide/ide.go b/go/pkg/mcp/ide/ide.go similarity index 100% rename from pkg/mcp/ide/ide.go rename to go/pkg/mcp/ide/ide.go diff --git a/pkg/mcp/ide/ide_example_test.go b/go/pkg/mcp/ide/ide_example_test.go similarity index 100% rename from pkg/mcp/ide/ide_example_test.go rename to go/pkg/mcp/ide/ide_example_test.go diff --git a/pkg/mcp/ide/ide_test.go b/go/pkg/mcp/ide/ide_test.go similarity index 100% rename from pkg/mcp/ide/ide_test.go rename to go/pkg/mcp/ide/ide_test.go diff --git a/pkg/mcp/ide/tools_build.go b/go/pkg/mcp/ide/tools_build.go similarity index 100% rename from pkg/mcp/ide/tools_build.go rename to go/pkg/mcp/ide/tools_build.go diff --git a/pkg/mcp/ide/tools_build_example_test.go b/go/pkg/mcp/ide/tools_build_example_test.go similarity index 100% rename from pkg/mcp/ide/tools_build_example_test.go rename to go/pkg/mcp/ide/tools_build_example_test.go diff --git a/pkg/mcp/ide/tools_build_test.go b/go/pkg/mcp/ide/tools_build_test.go similarity index 100% rename from pkg/mcp/ide/tools_build_test.go rename to go/pkg/mcp/ide/tools_build_test.go diff --git a/pkg/mcp/ide/tools_chat.go b/go/pkg/mcp/ide/tools_chat.go similarity index 100% rename from pkg/mcp/ide/tools_chat.go rename to go/pkg/mcp/ide/tools_chat.go diff --git a/pkg/mcp/ide/tools_chat_example_test.go b/go/pkg/mcp/ide/tools_chat_example_test.go similarity index 100% rename from pkg/mcp/ide/tools_chat_example_test.go rename to go/pkg/mcp/ide/tools_chat_example_test.go diff --git a/pkg/mcp/ide/tools_chat_test.go b/go/pkg/mcp/ide/tools_chat_test.go similarity index 100% rename from pkg/mcp/ide/tools_chat_test.go rename to go/pkg/mcp/ide/tools_chat_test.go diff --git a/pkg/mcp/ide/tools_dashboard.go b/go/pkg/mcp/ide/tools_dashboard.go similarity index 100% rename from pkg/mcp/ide/tools_dashboard.go rename to go/pkg/mcp/ide/tools_dashboard.go diff --git a/pkg/mcp/ide/tools_dashboard_example_test.go b/go/pkg/mcp/ide/tools_dashboard_example_test.go similarity index 100% rename from pkg/mcp/ide/tools_dashboard_example_test.go rename to go/pkg/mcp/ide/tools_dashboard_example_test.go diff --git a/pkg/mcp/ide/tools_dashboard_test.go b/go/pkg/mcp/ide/tools_dashboard_test.go similarity index 100% rename from pkg/mcp/ide/tools_dashboard_test.go rename to go/pkg/mcp/ide/tools_dashboard_test.go diff --git a/pkg/mcp/ide/tools_test.go b/go/pkg/mcp/ide/tools_test.go similarity index 100% rename from pkg/mcp/ide/tools_test.go rename to go/pkg/mcp/ide/tools_test.go diff --git a/pkg/mcp/integration_test.go b/go/pkg/mcp/integration_test.go similarity index 100% rename from pkg/mcp/integration_test.go rename to go/pkg/mcp/integration_test.go diff --git a/pkg/mcp/ipc.go b/go/pkg/mcp/ipc.go similarity index 100% rename from pkg/mcp/ipc.go rename to go/pkg/mcp/ipc.go diff --git a/pkg/mcp/ipc_test.go b/go/pkg/mcp/ipc_test.go similarity index 100% rename from pkg/mcp/ipc_test.go rename to go/pkg/mcp/ipc_test.go diff --git a/pkg/mcp/iter_test.go b/go/pkg/mcp/iter_test.go similarity index 100% rename from pkg/mcp/iter_test.go rename to go/pkg/mcp/iter_test.go diff --git a/pkg/mcp/mcp.go b/go/pkg/mcp/mcp.go similarity index 100% rename from pkg/mcp/mcp.go rename to go/pkg/mcp/mcp.go diff --git a/pkg/mcp/mcp_example_test.go b/go/pkg/mcp/mcp_example_test.go similarity index 100% rename from pkg/mcp/mcp_example_test.go rename to go/pkg/mcp/mcp_example_test.go diff --git a/pkg/mcp/mcp_test.go b/go/pkg/mcp/mcp_test.go similarity index 100% rename from pkg/mcp/mcp_test.go rename to go/pkg/mcp/mcp_test.go diff --git a/pkg/mcp/notify.go b/go/pkg/mcp/notify.go similarity index 100% rename from pkg/mcp/notify.go rename to go/pkg/mcp/notify.go diff --git a/pkg/mcp/notify_example_test.go b/go/pkg/mcp/notify_example_test.go similarity index 100% rename from pkg/mcp/notify_example_test.go rename to go/pkg/mcp/notify_example_test.go diff --git a/pkg/mcp/notify_test.go b/go/pkg/mcp/notify_test.go similarity index 100% rename from pkg/mcp/notify_test.go rename to go/pkg/mcp/notify_test.go diff --git a/pkg/mcp/process_notifications.go b/go/pkg/mcp/process_notifications.go similarity index 100% rename from pkg/mcp/process_notifications.go rename to go/pkg/mcp/process_notifications.go diff --git a/pkg/mcp/progress.go b/go/pkg/mcp/progress.go similarity index 100% rename from pkg/mcp/progress.go rename to go/pkg/mcp/progress.go diff --git a/pkg/mcp/progress_example_test.go b/go/pkg/mcp/progress_example_test.go similarity index 100% rename from pkg/mcp/progress_example_test.go rename to go/pkg/mcp/progress_example_test.go diff --git a/pkg/mcp/progress_test.go b/go/pkg/mcp/progress_test.go similarity index 100% rename from pkg/mcp/progress_test.go rename to go/pkg/mcp/progress_test.go diff --git a/pkg/mcp/register.go b/go/pkg/mcp/register.go similarity index 100% rename from pkg/mcp/register.go rename to go/pkg/mcp/register.go diff --git a/pkg/mcp/register_example_test.go b/go/pkg/mcp/register_example_test.go similarity index 100% rename from pkg/mcp/register_example_test.go rename to go/pkg/mcp/register_example_test.go diff --git a/pkg/mcp/register_test.go b/go/pkg/mcp/register_test.go similarity index 100% rename from pkg/mcp/register_test.go rename to go/pkg/mcp/register_test.go diff --git a/pkg/mcp/registry.go b/go/pkg/mcp/registry.go similarity index 100% rename from pkg/mcp/registry.go rename to go/pkg/mcp/registry.go diff --git a/pkg/mcp/registry_example_test.go b/go/pkg/mcp/registry_example_test.go similarity index 100% rename from pkg/mcp/registry_example_test.go rename to go/pkg/mcp/registry_example_test.go diff --git a/pkg/mcp/registry_test.go b/go/pkg/mcp/registry_test.go similarity index 100% rename from pkg/mcp/registry_test.go rename to go/pkg/mcp/registry_test.go diff --git a/pkg/mcp/result_helpers.go b/go/pkg/mcp/result_helpers.go similarity index 100% rename from pkg/mcp/result_helpers.go rename to go/pkg/mcp/result_helpers.go diff --git a/pkg/mcp/subsystem.go b/go/pkg/mcp/subsystem.go similarity index 100% rename from pkg/mcp/subsystem.go rename to go/pkg/mcp/subsystem.go diff --git a/pkg/mcp/subsystem_example_test.go b/go/pkg/mcp/subsystem_example_test.go similarity index 100% rename from pkg/mcp/subsystem_example_test.go rename to go/pkg/mcp/subsystem_example_test.go diff --git a/pkg/mcp/subsystem_test.go b/go/pkg/mcp/subsystem_test.go similarity index 100% rename from pkg/mcp/subsystem_test.go rename to go/pkg/mcp/subsystem_test.go diff --git a/pkg/mcp/tools_metrics.go b/go/pkg/mcp/tools_metrics.go similarity index 100% rename from pkg/mcp/tools_metrics.go rename to go/pkg/mcp/tools_metrics.go diff --git a/pkg/mcp/tools_metrics_example_test.go b/go/pkg/mcp/tools_metrics_example_test.go similarity index 100% rename from pkg/mcp/tools_metrics_example_test.go rename to go/pkg/mcp/tools_metrics_example_test.go diff --git a/pkg/mcp/tools_metrics_test.go b/go/pkg/mcp/tools_metrics_test.go similarity index 100% rename from pkg/mcp/tools_metrics_test.go rename to go/pkg/mcp/tools_metrics_test.go diff --git a/pkg/mcp/tools_process.go b/go/pkg/mcp/tools_process.go similarity index 100% rename from pkg/mcp/tools_process.go rename to go/pkg/mcp/tools_process.go diff --git a/pkg/mcp/tools_process_ci_test.go b/go/pkg/mcp/tools_process_ci_test.go similarity index 100% rename from pkg/mcp/tools_process_ci_test.go rename to go/pkg/mcp/tools_process_ci_test.go diff --git a/pkg/mcp/tools_process_example_test.go b/go/pkg/mcp/tools_process_example_test.go similarity index 100% rename from pkg/mcp/tools_process_example_test.go rename to go/pkg/mcp/tools_process_example_test.go diff --git a/pkg/mcp/tools_process_test.go b/go/pkg/mcp/tools_process_test.go similarity index 100% rename from pkg/mcp/tools_process_test.go rename to go/pkg/mcp/tools_process_test.go diff --git a/pkg/mcp/tools_rag.go b/go/pkg/mcp/tools_rag.go similarity index 100% rename from pkg/mcp/tools_rag.go rename to go/pkg/mcp/tools_rag.go diff --git a/pkg/mcp/tools_rag_ci_test.go b/go/pkg/mcp/tools_rag_ci_test.go similarity index 100% rename from pkg/mcp/tools_rag_ci_test.go rename to go/pkg/mcp/tools_rag_ci_test.go diff --git a/pkg/mcp/tools_rag_example_test.go b/go/pkg/mcp/tools_rag_example_test.go similarity index 100% rename from pkg/mcp/tools_rag_example_test.go rename to go/pkg/mcp/tools_rag_example_test.go diff --git a/pkg/mcp/tools_rag_test.go b/go/pkg/mcp/tools_rag_test.go similarity index 100% rename from pkg/mcp/tools_rag_test.go rename to go/pkg/mcp/tools_rag_test.go diff --git a/pkg/mcp/tools_webview_embed.go b/go/pkg/mcp/tools_webview_embed.go similarity index 100% rename from pkg/mcp/tools_webview_embed.go rename to go/pkg/mcp/tools_webview_embed.go diff --git a/pkg/mcp/tools_webview_embed_example_test.go b/go/pkg/mcp/tools_webview_embed_example_test.go similarity index 100% rename from pkg/mcp/tools_webview_embed_example_test.go rename to go/pkg/mcp/tools_webview_embed_example_test.go diff --git a/pkg/mcp/tools_webview_embed_test.go b/go/pkg/mcp/tools_webview_embed_test.go similarity index 100% rename from pkg/mcp/tools_webview_embed_test.go rename to go/pkg/mcp/tools_webview_embed_test.go diff --git a/pkg/mcp/tools_ws.go b/go/pkg/mcp/tools_ws.go similarity index 100% rename from pkg/mcp/tools_ws.go rename to go/pkg/mcp/tools_ws.go diff --git a/pkg/mcp/tools_ws_client.go b/go/pkg/mcp/tools_ws_client.go similarity index 100% rename from pkg/mcp/tools_ws_client.go rename to go/pkg/mcp/tools_ws_client.go diff --git a/pkg/mcp/tools_ws_client_example_test.go b/go/pkg/mcp/tools_ws_client_example_test.go similarity index 100% rename from pkg/mcp/tools_ws_client_example_test.go rename to go/pkg/mcp/tools_ws_client_example_test.go diff --git a/pkg/mcp/tools_ws_client_test.go b/go/pkg/mcp/tools_ws_client_test.go similarity index 100% rename from pkg/mcp/tools_ws_client_test.go rename to go/pkg/mcp/tools_ws_client_test.go diff --git a/pkg/mcp/tools_ws_example_test.go b/go/pkg/mcp/tools_ws_example_test.go similarity index 100% rename from pkg/mcp/tools_ws_example_test.go rename to go/pkg/mcp/tools_ws_example_test.go diff --git a/pkg/mcp/tools_ws_test.go b/go/pkg/mcp/tools_ws_test.go similarity index 100% rename from pkg/mcp/tools_ws_test.go rename to go/pkg/mcp/tools_ws_test.go diff --git a/pkg/mcp/transformer.go b/go/pkg/mcp/transformer.go similarity index 100% rename from pkg/mcp/transformer.go rename to go/pkg/mcp/transformer.go diff --git a/pkg/mcp/transformer_anthropic.go b/go/pkg/mcp/transformer_anthropic.go similarity index 100% rename from pkg/mcp/transformer_anthropic.go rename to go/pkg/mcp/transformer_anthropic.go diff --git a/pkg/mcp/transformer_anthropic_example_test.go b/go/pkg/mcp/transformer_anthropic_example_test.go similarity index 100% rename from pkg/mcp/transformer_anthropic_example_test.go rename to go/pkg/mcp/transformer_anthropic_example_test.go diff --git a/pkg/mcp/transformer_anthropic_test.go b/go/pkg/mcp/transformer_anthropic_test.go similarity index 100% rename from pkg/mcp/transformer_anthropic_test.go rename to go/pkg/mcp/transformer_anthropic_test.go diff --git a/pkg/mcp/transformer_example_test.go b/go/pkg/mcp/transformer_example_test.go similarity index 100% rename from pkg/mcp/transformer_example_test.go rename to go/pkg/mcp/transformer_example_test.go diff --git a/pkg/mcp/transformer_honeypot.go b/go/pkg/mcp/transformer_honeypot.go similarity index 100% rename from pkg/mcp/transformer_honeypot.go rename to go/pkg/mcp/transformer_honeypot.go diff --git a/pkg/mcp/transformer_honeypot_example_test.go b/go/pkg/mcp/transformer_honeypot_example_test.go similarity index 100% rename from pkg/mcp/transformer_honeypot_example_test.go rename to go/pkg/mcp/transformer_honeypot_example_test.go diff --git a/pkg/mcp/transformer_honeypot_test.go b/go/pkg/mcp/transformer_honeypot_test.go similarity index 100% rename from pkg/mcp/transformer_honeypot_test.go rename to go/pkg/mcp/transformer_honeypot_test.go diff --git a/pkg/mcp/transformer_openai.go b/go/pkg/mcp/transformer_openai.go similarity index 100% rename from pkg/mcp/transformer_openai.go rename to go/pkg/mcp/transformer_openai.go diff --git a/pkg/mcp/transformer_openai_example_test.go b/go/pkg/mcp/transformer_openai_example_test.go similarity index 100% rename from pkg/mcp/transformer_openai_example_test.go rename to go/pkg/mcp/transformer_openai_example_test.go diff --git a/pkg/mcp/transformer_openai_test.go b/go/pkg/mcp/transformer_openai_test.go similarity index 100% rename from pkg/mcp/transformer_openai_test.go rename to go/pkg/mcp/transformer_openai_test.go diff --git a/pkg/mcp/transformer_test.go b/go/pkg/mcp/transformer_test.go similarity index 100% rename from pkg/mcp/transformer_test.go rename to go/pkg/mcp/transformer_test.go diff --git a/pkg/mcp/transport_e2e_test.go b/go/pkg/mcp/transport_e2e_test.go similarity index 100% rename from pkg/mcp/transport_e2e_test.go rename to go/pkg/mcp/transport_e2e_test.go diff --git a/pkg/mcp/transport_http.go b/go/pkg/mcp/transport_http.go similarity index 100% rename from pkg/mcp/transport_http.go rename to go/pkg/mcp/transport_http.go diff --git a/pkg/mcp/transport_http_example_test.go b/go/pkg/mcp/transport_http_example_test.go similarity index 100% rename from pkg/mcp/transport_http_example_test.go rename to go/pkg/mcp/transport_http_example_test.go diff --git a/pkg/mcp/transport_http_test.go b/go/pkg/mcp/transport_http_test.go similarity index 100% rename from pkg/mcp/transport_http_test.go rename to go/pkg/mcp/transport_http_test.go diff --git a/pkg/mcp/transport_stdio.go b/go/pkg/mcp/transport_stdio.go similarity index 100% rename from pkg/mcp/transport_stdio.go rename to go/pkg/mcp/transport_stdio.go diff --git a/pkg/mcp/transport_stdio_example_test.go b/go/pkg/mcp/transport_stdio_example_test.go similarity index 100% rename from pkg/mcp/transport_stdio_example_test.go rename to go/pkg/mcp/transport_stdio_example_test.go diff --git a/pkg/mcp/transport_stdio_test.go b/go/pkg/mcp/transport_stdio_test.go similarity index 100% rename from pkg/mcp/transport_stdio_test.go rename to go/pkg/mcp/transport_stdio_test.go diff --git a/pkg/mcp/transport_tcp.go b/go/pkg/mcp/transport_tcp.go similarity index 100% rename from pkg/mcp/transport_tcp.go rename to go/pkg/mcp/transport_tcp.go diff --git a/pkg/mcp/transport_tcp_example_test.go b/go/pkg/mcp/transport_tcp_example_test.go similarity index 100% rename from pkg/mcp/transport_tcp_example_test.go rename to go/pkg/mcp/transport_tcp_example_test.go diff --git a/pkg/mcp/transport_tcp_test.go b/go/pkg/mcp/transport_tcp_test.go similarity index 100% rename from pkg/mcp/transport_tcp_test.go rename to go/pkg/mcp/transport_tcp_test.go diff --git a/pkg/mcp/transport_unix.go b/go/pkg/mcp/transport_unix.go similarity index 100% rename from pkg/mcp/transport_unix.go rename to go/pkg/mcp/transport_unix.go diff --git a/pkg/mcp/transport_unix_example_test.go b/go/pkg/mcp/transport_unix_example_test.go similarity index 100% rename from pkg/mcp/transport_unix_example_test.go rename to go/pkg/mcp/transport_unix_example_test.go diff --git a/pkg/mcp/transport_unix_test.go b/go/pkg/mcp/transport_unix_test.go similarity index 100% rename from pkg/mcp/transport_unix_test.go rename to go/pkg/mcp/transport_unix_test.go diff --git a/tests/cli/mcp/Taskfile.yaml b/go/tests/cli/mcp/Taskfile.yaml similarity index 100% rename from tests/cli/mcp/Taskfile.yaml rename to go/tests/cli/mcp/Taskfile.yaml diff --git a/src/php/.editorconfig b/php/php/.editorconfig similarity index 100% rename from src/php/.editorconfig rename to php/php/.editorconfig diff --git a/src/php/.env.example b/php/php/.env.example similarity index 100% rename from src/php/.env.example rename to php/php/.env.example diff --git a/src/php/.forgejo/workflows/ci.yml b/php/php/.forgejo/workflows/ci.yml similarity index 100% rename from src/php/.forgejo/workflows/ci.yml rename to php/php/.forgejo/workflows/ci.yml diff --git a/src/php/.forgejo/workflows/release.yml b/php/php/.forgejo/workflows/release.yml similarity index 100% rename from src/php/.forgejo/workflows/release.yml rename to php/php/.forgejo/workflows/release.yml diff --git a/src/php/.gemini/settings.json b/php/php/.gemini/settings.json similarity index 100% rename from src/php/.gemini/settings.json rename to php/php/.gemini/settings.json diff --git a/src/php/.github/FUNDING.yml b/php/php/.github/FUNDING.yml similarity index 100% rename from src/php/.github/FUNDING.yml rename to php/php/.github/FUNDING.yml diff --git a/src/php/.github/copilot-instructions.md b/php/php/.github/copilot-instructions.md similarity index 100% rename from src/php/.github/copilot-instructions.md rename to php/php/.github/copilot-instructions.md diff --git a/src/php/.github/dependabot.yml b/php/php/.github/dependabot.yml similarity index 100% rename from src/php/.github/dependabot.yml rename to php/php/.github/dependabot.yml diff --git a/src/php/.github/package-workflows/README.md b/php/php/.github/package-workflows/README.md similarity index 100% rename from src/php/.github/package-workflows/README.md rename to php/php/.github/package-workflows/README.md diff --git a/src/php/.github/package-workflows/ci.yml b/php/php/.github/package-workflows/ci.yml similarity index 100% rename from src/php/.github/package-workflows/ci.yml rename to php/php/.github/package-workflows/ci.yml diff --git a/src/php/.github/package-workflows/release.yml b/php/php/.github/package-workflows/release.yml similarity index 100% rename from src/php/.github/package-workflows/release.yml rename to php/php/.github/package-workflows/release.yml diff --git a/src/php/.github/workflows/ci.yml b/php/php/.github/workflows/ci.yml similarity index 100% rename from src/php/.github/workflows/ci.yml rename to php/php/.github/workflows/ci.yml diff --git a/src/php/.github/workflows/release.yml b/php/php/.github/workflows/release.yml similarity index 100% rename from src/php/.github/workflows/release.yml rename to php/php/.github/workflows/release.yml diff --git a/src/php/.gitignore b/php/php/.gitignore similarity index 100% rename from src/php/.gitignore rename to php/php/.gitignore diff --git a/src/php/AGENTS.md b/php/php/AGENTS.md similarity index 100% rename from src/php/AGENTS.md rename to php/php/AGENTS.md diff --git a/src/php/FINDINGS.md b/php/php/FINDINGS.md similarity index 100% rename from src/php/FINDINGS.md rename to php/php/FINDINGS.md diff --git a/src/php/GEMINI.md b/php/php/GEMINI.md similarity index 100% rename from src/php/GEMINI.md rename to php/php/GEMINI.md diff --git a/src/php/TODO.md b/php/php/TODO.md similarity index 100% rename from src/php/TODO.md rename to php/php/TODO.md diff --git a/src/php/app/Http/Controllers/.gitkeep b/php/php/app/Http/Controllers/.gitkeep similarity index 100% rename from src/php/app/Http/Controllers/.gitkeep rename to php/php/app/Http/Controllers/.gitkeep diff --git a/src/php/app/Mod/.gitkeep b/php/php/app/Mod/.gitkeep similarity index 100% rename from src/php/app/Mod/.gitkeep rename to php/php/app/Mod/.gitkeep diff --git a/src/php/app/Models/.gitkeep b/php/php/app/Models/.gitkeep similarity index 100% rename from src/php/app/Models/.gitkeep rename to php/php/app/Models/.gitkeep diff --git a/src/php/app/Providers/AppServiceProvider.php b/php/php/app/Providers/AppServiceProvider.php similarity index 100% rename from src/php/app/Providers/AppServiceProvider.php rename to php/php/app/Providers/AppServiceProvider.php diff --git a/src/php/artisan b/php/php/artisan similarity index 100% rename from src/php/artisan rename to php/php/artisan diff --git a/src/php/bootstrap/app.php b/php/php/bootstrap/app.php similarity index 100% rename from src/php/bootstrap/app.php rename to php/php/bootstrap/app.php diff --git a/src/php/bootstrap/cache/.gitignore b/php/php/bootstrap/cache/.gitignore similarity index 100% rename from src/php/bootstrap/cache/.gitignore rename to php/php/bootstrap/cache/.gitignore diff --git a/src/php/bootstrap/providers.php b/php/php/bootstrap/providers.php similarity index 100% rename from src/php/bootstrap/providers.php rename to php/php/bootstrap/providers.php diff --git a/src/php/config/core.php b/php/php/config/core.php similarity index 100% rename from src/php/config/core.php rename to php/php/config/core.php diff --git a/src/php/database/factories/.gitkeep b/php/php/database/factories/.gitkeep similarity index 100% rename from src/php/database/factories/.gitkeep rename to php/php/database/factories/.gitkeep diff --git a/src/php/database/migrations/.gitkeep b/php/php/database/migrations/.gitkeep similarity index 100% rename from src/php/database/migrations/.gitkeep rename to php/php/database/migrations/.gitkeep diff --git a/src/php/database/seeders/DatabaseSeeder.php b/php/php/database/seeders/DatabaseSeeder.php similarity index 100% rename from src/php/database/seeders/DatabaseSeeder.php rename to php/php/database/seeders/DatabaseSeeder.php diff --git a/src/php/docs/analytics.md b/php/php/docs/analytics.md similarity index 100% rename from src/php/docs/analytics.md rename to php/php/docs/analytics.md diff --git a/src/php/docs/creating-mcp-tools.md b/php/php/docs/creating-mcp-tools.md similarity index 100% rename from src/php/docs/creating-mcp-tools.md rename to php/php/docs/creating-mcp-tools.md diff --git a/src/php/docs/discovery-2026-02-21.md b/php/php/docs/discovery-2026-02-21.md similarity index 100% rename from src/php/docs/discovery-2026-02-21.md rename to php/php/docs/discovery-2026-02-21.md diff --git a/src/php/docs/index.md b/php/php/docs/index.md similarity index 100% rename from src/php/docs/index.md rename to php/php/docs/index.md diff --git a/src/php/docs/query-database.md b/php/php/docs/query-database.md similarity index 100% rename from src/php/docs/query-database.md rename to php/php/docs/query-database.md diff --git a/src/php/docs/quotas.md b/php/php/docs/quotas.md similarity index 100% rename from src/php/docs/quotas.md rename to php/php/docs/quotas.md diff --git a/src/php/docs/security.md b/php/php/docs/security.md similarity index 100% rename from src/php/docs/security.md rename to php/php/docs/security.md diff --git a/src/php/docs/sql-security.md b/php/php/docs/sql-security.md similarity index 100% rename from src/php/docs/sql-security.md rename to php/php/docs/sql-security.md diff --git a/src/php/docs/tools-reference.md b/php/php/docs/tools-reference.md similarity index 100% rename from src/php/docs/tools-reference.md rename to php/php/docs/tools-reference.md diff --git a/src/php/docs/tools.md b/php/php/docs/tools.md similarity index 100% rename from src/php/docs/tools.md rename to php/php/docs/tools.md diff --git a/src/php/docs/workspace.md b/php/php/docs/workspace.md similarity index 100% rename from src/php/docs/workspace.md rename to php/php/docs/workspace.md diff --git a/src/php/package.json b/php/php/package.json similarity index 100% rename from src/php/package.json rename to php/php/package.json diff --git a/src/php/phpunit.xml b/php/php/phpunit.xml similarity index 100% rename from src/php/phpunit.xml rename to php/php/phpunit.xml diff --git a/src/php/postcss.config.js b/php/php/postcss.config.js similarity index 100% rename from src/php/postcss.config.js rename to php/php/postcss.config.js diff --git a/src/php/public/.htaccess b/php/php/public/.htaccess similarity index 100% rename from src/php/public/.htaccess rename to php/php/public/.htaccess diff --git a/src/php/public/index.php b/php/php/public/index.php similarity index 100% rename from src/php/public/index.php rename to php/php/public/index.php diff --git a/src/php/public/robots.txt b/php/php/public/robots.txt similarity index 100% rename from src/php/public/robots.txt rename to php/php/public/robots.txt diff --git a/src/php/resources/css/app.css b/php/php/resources/css/app.css similarity index 100% rename from src/php/resources/css/app.css rename to php/php/resources/css/app.css diff --git a/src/php/resources/js/app.js b/php/php/resources/js/app.js similarity index 100% rename from src/php/resources/js/app.js rename to php/php/resources/js/app.js diff --git a/src/php/resources/js/bootstrap.js b/php/php/resources/js/bootstrap.js similarity index 100% rename from src/php/resources/js/bootstrap.js rename to php/php/resources/js/bootstrap.js diff --git a/src/php/resources/views/welcome.blade.php b/php/php/resources/views/welcome.blade.php similarity index 100% rename from src/php/resources/views/welcome.blade.php rename to php/php/resources/views/welcome.blade.php diff --git a/src/php/routes/api.php b/php/php/routes/api.php similarity index 100% rename from src/php/routes/api.php rename to php/php/routes/api.php diff --git a/src/php/routes/console.php b/php/php/routes/console.php similarity index 100% rename from src/php/routes/console.php rename to php/php/routes/console.php diff --git a/src/php/routes/web.php b/php/php/routes/web.php similarity index 100% rename from src/php/routes/web.php rename to php/php/routes/web.php diff --git a/src/php/src/Front/Mcp/Boot.php b/php/php/src/Front/Mcp/Boot.php similarity index 100% rename from src/php/src/Front/Mcp/Boot.php rename to php/php/src/Front/Mcp/Boot.php diff --git a/src/php/src/Front/Mcp/Contracts/McpToolHandler.php b/php/php/src/Front/Mcp/Contracts/McpToolHandler.php similarity index 100% rename from src/php/src/Front/Mcp/Contracts/McpToolHandler.php rename to php/php/src/Front/Mcp/Contracts/McpToolHandler.php diff --git a/src/php/src/Front/Mcp/McpContext.php b/php/php/src/Front/Mcp/McpContext.php similarity index 100% rename from src/php/src/Front/Mcp/McpContext.php rename to php/php/src/Front/Mcp/McpContext.php diff --git a/src/php/src/Front/View/Blade/layouts/mcp.blade.php b/php/php/src/Front/View/Blade/layouts/mcp.blade.php similarity index 100% rename from src/php/src/Front/View/Blade/layouts/mcp.blade.php rename to php/php/src/Front/View/Blade/layouts/mcp.blade.php diff --git a/src/php/src/Mcp/Boot.php b/php/php/src/Mcp/Boot.php similarity index 100% rename from src/php/src/Mcp/Boot.php rename to php/php/src/Mcp/Boot.php diff --git a/src/php/src/Mcp/Console/Commands/CleanupToolCallLogsCommand.php b/php/php/src/Mcp/Console/Commands/CleanupToolCallLogsCommand.php similarity index 100% rename from src/php/src/Mcp/Console/Commands/CleanupToolCallLogsCommand.php rename to php/php/src/Mcp/Console/Commands/CleanupToolCallLogsCommand.php diff --git a/src/php/src/Mcp/Console/Commands/McpAgentServerCommand.php b/php/php/src/Mcp/Console/Commands/McpAgentServerCommand.php similarity index 100% rename from src/php/src/Mcp/Console/Commands/McpAgentServerCommand.php rename to php/php/src/Mcp/Console/Commands/McpAgentServerCommand.php diff --git a/src/php/src/Mcp/Console/Commands/McpMonitorCommand.php b/php/php/src/Mcp/Console/Commands/McpMonitorCommand.php similarity index 100% rename from src/php/src/Mcp/Console/Commands/McpMonitorCommand.php rename to php/php/src/Mcp/Console/Commands/McpMonitorCommand.php diff --git a/src/php/src/Mcp/Console/Commands/PruneMetricsCommand.php b/php/php/src/Mcp/Console/Commands/PruneMetricsCommand.php similarity index 100% rename from src/php/src/Mcp/Console/Commands/PruneMetricsCommand.php rename to php/php/src/Mcp/Console/Commands/PruneMetricsCommand.php diff --git a/src/php/src/Mcp/Console/Commands/VerifyAuditLogCommand.php b/php/php/src/Mcp/Console/Commands/VerifyAuditLogCommand.php similarity index 100% rename from src/php/src/Mcp/Console/Commands/VerifyAuditLogCommand.php rename to php/php/src/Mcp/Console/Commands/VerifyAuditLogCommand.php diff --git a/src/php/src/Mcp/Context/WorkspaceContext.php b/php/php/src/Mcp/Context/WorkspaceContext.php similarity index 100% rename from src/php/src/Mcp/Context/WorkspaceContext.php rename to php/php/src/Mcp/Context/WorkspaceContext.php diff --git a/src/php/src/Mcp/Controllers/McpApiController.php b/php/php/src/Mcp/Controllers/McpApiController.php similarity index 100% rename from src/php/src/Mcp/Controllers/McpApiController.php rename to php/php/src/Mcp/Controllers/McpApiController.php diff --git a/src/php/src/Mcp/DTO/ToolStats.php b/php/php/src/Mcp/DTO/ToolStats.php similarity index 100% rename from src/php/src/Mcp/DTO/ToolStats.php rename to php/php/src/Mcp/DTO/ToolStats.php diff --git a/src/php/src/Mcp/Database/Seeders/SensitiveToolSeeder.php b/php/php/src/Mcp/Database/Seeders/SensitiveToolSeeder.php similarity index 100% rename from src/php/src/Mcp/Database/Seeders/SensitiveToolSeeder.php rename to php/php/src/Mcp/Database/Seeders/SensitiveToolSeeder.php diff --git a/src/php/src/Mcp/Dependencies/DependencyType.php b/php/php/src/Mcp/Dependencies/DependencyType.php similarity index 100% rename from src/php/src/Mcp/Dependencies/DependencyType.php rename to php/php/src/Mcp/Dependencies/DependencyType.php diff --git a/src/php/src/Mcp/Dependencies/HasDependencies.php b/php/php/src/Mcp/Dependencies/HasDependencies.php similarity index 100% rename from src/php/src/Mcp/Dependencies/HasDependencies.php rename to php/php/src/Mcp/Dependencies/HasDependencies.php diff --git a/src/php/src/Mcp/Dependencies/ToolDependency.php b/php/php/src/Mcp/Dependencies/ToolDependency.php similarity index 100% rename from src/php/src/Mcp/Dependencies/ToolDependency.php rename to php/php/src/Mcp/Dependencies/ToolDependency.php diff --git a/src/php/src/Mcp/Events/ToolExecuted.php b/php/php/src/Mcp/Events/ToolExecuted.php similarity index 100% rename from src/php/src/Mcp/Events/ToolExecuted.php rename to php/php/src/Mcp/Events/ToolExecuted.php diff --git a/src/php/src/Mcp/Exceptions/CircuitOpenException.php b/php/php/src/Mcp/Exceptions/CircuitOpenException.php similarity index 100% rename from src/php/src/Mcp/Exceptions/CircuitOpenException.php rename to php/php/src/Mcp/Exceptions/CircuitOpenException.php diff --git a/src/php/src/Mcp/Exceptions/ForbiddenQueryException.php b/php/php/src/Mcp/Exceptions/ForbiddenQueryException.php similarity index 100% rename from src/php/src/Mcp/Exceptions/ForbiddenQueryException.php rename to php/php/src/Mcp/Exceptions/ForbiddenQueryException.php diff --git a/src/php/src/Mcp/Exceptions/MissingDependencyException.php b/php/php/src/Mcp/Exceptions/MissingDependencyException.php similarity index 100% rename from src/php/src/Mcp/Exceptions/MissingDependencyException.php rename to php/php/src/Mcp/Exceptions/MissingDependencyException.php diff --git a/src/php/src/Mcp/Exceptions/MissingWorkspaceContextException.php b/php/php/src/Mcp/Exceptions/MissingWorkspaceContextException.php similarity index 100% rename from src/php/src/Mcp/Exceptions/MissingWorkspaceContextException.php rename to php/php/src/Mcp/Exceptions/MissingWorkspaceContextException.php diff --git a/src/php/src/Mcp/Exceptions/QueryTimeoutException.php b/php/php/src/Mcp/Exceptions/QueryTimeoutException.php similarity index 100% rename from src/php/src/Mcp/Exceptions/QueryTimeoutException.php rename to php/php/src/Mcp/Exceptions/QueryTimeoutException.php diff --git a/src/php/src/Mcp/Exceptions/ResultSizeLimitException.php b/php/php/src/Mcp/Exceptions/ResultSizeLimitException.php similarity index 100% rename from src/php/src/Mcp/Exceptions/ResultSizeLimitException.php rename to php/php/src/Mcp/Exceptions/ResultSizeLimitException.php diff --git a/src/php/src/Mcp/Lang/en_GB/mcp.php b/php/php/src/Mcp/Lang/en_GB/mcp.php similarity index 100% rename from src/php/src/Mcp/Lang/en_GB/mcp.php rename to php/php/src/Mcp/Lang/en_GB/mcp.php diff --git a/src/php/src/Mcp/Listeners/RecordToolExecution.php b/php/php/src/Mcp/Listeners/RecordToolExecution.php similarity index 100% rename from src/php/src/Mcp/Listeners/RecordToolExecution.php rename to php/php/src/Mcp/Listeners/RecordToolExecution.php diff --git a/src/php/src/Mcp/Middleware/CheckMcpQuota.php b/php/php/src/Mcp/Middleware/CheckMcpQuota.php similarity index 100% rename from src/php/src/Mcp/Middleware/CheckMcpQuota.php rename to php/php/src/Mcp/Middleware/CheckMcpQuota.php diff --git a/src/php/src/Mcp/Middleware/McpApiKeyAuth.php b/php/php/src/Mcp/Middleware/McpApiKeyAuth.php similarity index 100% rename from src/php/src/Mcp/Middleware/McpApiKeyAuth.php rename to php/php/src/Mcp/Middleware/McpApiKeyAuth.php diff --git a/src/php/src/Mcp/Middleware/McpAuthenticate.php b/php/php/src/Mcp/Middleware/McpAuthenticate.php similarity index 100% rename from src/php/src/Mcp/Middleware/McpAuthenticate.php rename to php/php/src/Mcp/Middleware/McpAuthenticate.php diff --git a/src/php/src/Mcp/Middleware/ValidateToolDependencies.php b/php/php/src/Mcp/Middleware/ValidateToolDependencies.php similarity index 100% rename from src/php/src/Mcp/Middleware/ValidateToolDependencies.php rename to php/php/src/Mcp/Middleware/ValidateToolDependencies.php diff --git a/src/php/src/Mcp/Middleware/ValidateWorkspaceContext.php b/php/php/src/Mcp/Middleware/ValidateWorkspaceContext.php similarity index 100% rename from src/php/src/Mcp/Middleware/ValidateWorkspaceContext.php rename to php/php/src/Mcp/Middleware/ValidateWorkspaceContext.php diff --git a/src/php/src/Mcp/Migrations/2026_01_07_004936_create_mcp_api_requests_table.php b/php/php/src/Mcp/Migrations/2026_01_07_004936_create_mcp_api_requests_table.php similarity index 100% rename from src/php/src/Mcp/Migrations/2026_01_07_004936_create_mcp_api_requests_table.php rename to php/php/src/Mcp/Migrations/2026_01_07_004936_create_mcp_api_requests_table.php diff --git a/src/php/src/Mcp/Migrations/2026_01_26_000001_create_mcp_tool_metrics_table.php b/php/php/src/Mcp/Migrations/2026_01_26_000001_create_mcp_tool_metrics_table.php similarity index 100% rename from src/php/src/Mcp/Migrations/2026_01_26_000001_create_mcp_tool_metrics_table.php rename to php/php/src/Mcp/Migrations/2026_01_26_000001_create_mcp_tool_metrics_table.php diff --git a/src/php/src/Mcp/Migrations/2026_01_26_000002_create_mcp_usage_quotas_table.php b/php/php/src/Mcp/Migrations/2026_01_26_000002_create_mcp_usage_quotas_table.php similarity index 100% rename from src/php/src/Mcp/Migrations/2026_01_26_000002_create_mcp_usage_quotas_table.php rename to php/php/src/Mcp/Migrations/2026_01_26_000002_create_mcp_usage_quotas_table.php diff --git a/src/php/src/Mcp/Migrations/2026_01_26_000003_create_mcp_audit_logs_table.php b/php/php/src/Mcp/Migrations/2026_01_26_000003_create_mcp_audit_logs_table.php similarity index 100% rename from src/php/src/Mcp/Migrations/2026_01_26_000003_create_mcp_audit_logs_table.php rename to php/php/src/Mcp/Migrations/2026_01_26_000003_create_mcp_audit_logs_table.php diff --git a/src/php/src/Mcp/Migrations/2026_01_26_000004_create_mcp_tool_versions_table.php b/php/php/src/Mcp/Migrations/2026_01_26_000004_create_mcp_tool_versions_table.php similarity index 100% rename from src/php/src/Mcp/Migrations/2026_01_26_000004_create_mcp_tool_versions_table.php rename to php/php/src/Mcp/Migrations/2026_01_26_000004_create_mcp_tool_versions_table.php diff --git a/src/php/src/Mcp/Models/McpApiRequest.php b/php/php/src/Mcp/Models/McpApiRequest.php similarity index 100% rename from src/php/src/Mcp/Models/McpApiRequest.php rename to php/php/src/Mcp/Models/McpApiRequest.php diff --git a/src/php/src/Mcp/Models/McpAuditLog.php b/php/php/src/Mcp/Models/McpAuditLog.php similarity index 100% rename from src/php/src/Mcp/Models/McpAuditLog.php rename to php/php/src/Mcp/Models/McpAuditLog.php diff --git a/src/php/src/Mcp/Models/McpSensitiveTool.php b/php/php/src/Mcp/Models/McpSensitiveTool.php similarity index 100% rename from src/php/src/Mcp/Models/McpSensitiveTool.php rename to php/php/src/Mcp/Models/McpSensitiveTool.php diff --git a/src/php/src/Mcp/Models/McpToolCall.php b/php/php/src/Mcp/Models/McpToolCall.php similarity index 100% rename from src/php/src/Mcp/Models/McpToolCall.php rename to php/php/src/Mcp/Models/McpToolCall.php diff --git a/src/php/src/Mcp/Models/McpToolCallStat.php b/php/php/src/Mcp/Models/McpToolCallStat.php similarity index 100% rename from src/php/src/Mcp/Models/McpToolCallStat.php rename to php/php/src/Mcp/Models/McpToolCallStat.php diff --git a/src/php/src/Mcp/Models/McpToolVersion.php b/php/php/src/Mcp/Models/McpToolVersion.php similarity index 100% rename from src/php/src/Mcp/Models/McpToolVersion.php rename to php/php/src/Mcp/Models/McpToolVersion.php diff --git a/src/php/src/Mcp/Models/McpUsageQuota.php b/php/php/src/Mcp/Models/McpUsageQuota.php similarity index 100% rename from src/php/src/Mcp/Models/McpUsageQuota.php rename to php/php/src/Mcp/Models/McpUsageQuota.php diff --git a/src/php/src/Mcp/Models/ToolMetric.php b/php/php/src/Mcp/Models/ToolMetric.php similarity index 100% rename from src/php/src/Mcp/Models/ToolMetric.php rename to php/php/src/Mcp/Models/ToolMetric.php diff --git a/src/php/src/Mcp/Resources/AppConfig.php b/php/php/src/Mcp/Resources/AppConfig.php similarity index 100% rename from src/php/src/Mcp/Resources/AppConfig.php rename to php/php/src/Mcp/Resources/AppConfig.php diff --git a/src/php/src/Mcp/Resources/ContentResource.php b/php/php/src/Mcp/Resources/ContentResource.php similarity index 100% rename from src/php/src/Mcp/Resources/ContentResource.php rename to php/php/src/Mcp/Resources/ContentResource.php diff --git a/src/php/src/Mcp/Resources/DatabaseSchema.php b/php/php/src/Mcp/Resources/DatabaseSchema.php similarity index 100% rename from src/php/src/Mcp/Resources/DatabaseSchema.php rename to php/php/src/Mcp/Resources/DatabaseSchema.php diff --git a/src/php/src/Mcp/Routes/admin.php b/php/php/src/Mcp/Routes/admin.php similarity index 100% rename from src/php/src/Mcp/Routes/admin.php rename to php/php/src/Mcp/Routes/admin.php diff --git a/src/php/src/Mcp/Services/AgentSessionService.php b/php/php/src/Mcp/Services/AgentSessionService.php similarity index 100% rename from src/php/src/Mcp/Services/AgentSessionService.php rename to php/php/src/Mcp/Services/AgentSessionService.php diff --git a/src/php/src/Mcp/Services/AgentToolRegistry.php b/php/php/src/Mcp/Services/AgentToolRegistry.php similarity index 100% rename from src/php/src/Mcp/Services/AgentToolRegistry.php rename to php/php/src/Mcp/Services/AgentToolRegistry.php diff --git a/src/php/src/Mcp/Services/AuditLogService.php b/php/php/src/Mcp/Services/AuditLogService.php similarity index 100% rename from src/php/src/Mcp/Services/AuditLogService.php rename to php/php/src/Mcp/Services/AuditLogService.php diff --git a/src/php/src/Mcp/Services/CircuitBreaker.php b/php/php/src/Mcp/Services/CircuitBreaker.php similarity index 100% rename from src/php/src/Mcp/Services/CircuitBreaker.php rename to php/php/src/Mcp/Services/CircuitBreaker.php diff --git a/src/php/src/Mcp/Services/DataRedactor.php b/php/php/src/Mcp/Services/DataRedactor.php similarity index 100% rename from src/php/src/Mcp/Services/DataRedactor.php rename to php/php/src/Mcp/Services/DataRedactor.php diff --git a/src/php/src/Mcp/Services/McpHealthService.php b/php/php/src/Mcp/Services/McpHealthService.php similarity index 100% rename from src/php/src/Mcp/Services/McpHealthService.php rename to php/php/src/Mcp/Services/McpHealthService.php diff --git a/src/php/src/Mcp/Services/McpMetricsService.php b/php/php/src/Mcp/Services/McpMetricsService.php similarity index 100% rename from src/php/src/Mcp/Services/McpMetricsService.php rename to php/php/src/Mcp/Services/McpMetricsService.php diff --git a/src/php/src/Mcp/Services/McpQuotaService.php b/php/php/src/Mcp/Services/McpQuotaService.php similarity index 100% rename from src/php/src/Mcp/Services/McpQuotaService.php rename to php/php/src/Mcp/Services/McpQuotaService.php diff --git a/src/php/src/Mcp/Services/McpWebhookDispatcher.php b/php/php/src/Mcp/Services/McpWebhookDispatcher.php similarity index 100% rename from src/php/src/Mcp/Services/McpWebhookDispatcher.php rename to php/php/src/Mcp/Services/McpWebhookDispatcher.php diff --git a/src/php/src/Mcp/Services/OpenApiGenerator.php b/php/php/src/Mcp/Services/OpenApiGenerator.php similarity index 100% rename from src/php/src/Mcp/Services/OpenApiGenerator.php rename to php/php/src/Mcp/Services/OpenApiGenerator.php diff --git a/src/php/src/Mcp/Services/QueryAuditService.php b/php/php/src/Mcp/Services/QueryAuditService.php similarity index 100% rename from src/php/src/Mcp/Services/QueryAuditService.php rename to php/php/src/Mcp/Services/QueryAuditService.php diff --git a/src/php/src/Mcp/Services/QueryExecutionService.php b/php/php/src/Mcp/Services/QueryExecutionService.php similarity index 100% rename from src/php/src/Mcp/Services/QueryExecutionService.php rename to php/php/src/Mcp/Services/QueryExecutionService.php diff --git a/src/php/src/Mcp/Services/SqlQueryValidator.php b/php/php/src/Mcp/Services/SqlQueryValidator.php similarity index 100% rename from src/php/src/Mcp/Services/SqlQueryValidator.php rename to php/php/src/Mcp/Services/SqlQueryValidator.php diff --git a/src/php/src/Mcp/Services/ToolAnalyticsService.php b/php/php/src/Mcp/Services/ToolAnalyticsService.php similarity index 100% rename from src/php/src/Mcp/Services/ToolAnalyticsService.php rename to php/php/src/Mcp/Services/ToolAnalyticsService.php diff --git a/src/php/src/Mcp/Services/ToolDependencyService.php b/php/php/src/Mcp/Services/ToolDependencyService.php similarity index 100% rename from src/php/src/Mcp/Services/ToolDependencyService.php rename to php/php/src/Mcp/Services/ToolDependencyService.php diff --git a/src/php/src/Mcp/Services/ToolRateLimiter.php b/php/php/src/Mcp/Services/ToolRateLimiter.php similarity index 100% rename from src/php/src/Mcp/Services/ToolRateLimiter.php rename to php/php/src/Mcp/Services/ToolRateLimiter.php diff --git a/src/php/src/Mcp/Services/ToolRegistry.php b/php/php/src/Mcp/Services/ToolRegistry.php similarity index 100% rename from src/php/src/Mcp/Services/ToolRegistry.php rename to php/php/src/Mcp/Services/ToolRegistry.php diff --git a/src/php/src/Mcp/Services/ToolVersionService.php b/php/php/src/Mcp/Services/ToolVersionService.php similarity index 100% rename from src/php/src/Mcp/Services/ToolVersionService.php rename to php/php/src/Mcp/Services/ToolVersionService.php diff --git a/src/php/src/Mcp/Tests/Unit/McpQuotaServiceTest.php b/php/php/src/Mcp/Tests/Unit/McpQuotaServiceTest.php similarity index 100% rename from src/php/src/Mcp/Tests/Unit/McpQuotaServiceTest.php rename to php/php/src/Mcp/Tests/Unit/McpQuotaServiceTest.php diff --git a/src/php/src/Mcp/Tests/Unit/QueryAuditServiceTest.php b/php/php/src/Mcp/Tests/Unit/QueryAuditServiceTest.php similarity index 100% rename from src/php/src/Mcp/Tests/Unit/QueryAuditServiceTest.php rename to php/php/src/Mcp/Tests/Unit/QueryAuditServiceTest.php diff --git a/src/php/src/Mcp/Tests/Unit/QueryExecutionServiceTest.php b/php/php/src/Mcp/Tests/Unit/QueryExecutionServiceTest.php similarity index 100% rename from src/php/src/Mcp/Tests/Unit/QueryExecutionServiceTest.php rename to php/php/src/Mcp/Tests/Unit/QueryExecutionServiceTest.php diff --git a/src/php/src/Mcp/Tests/Unit/ToolAnalyticsServiceTest.php b/php/php/src/Mcp/Tests/Unit/ToolAnalyticsServiceTest.php similarity index 100% rename from src/php/src/Mcp/Tests/Unit/ToolAnalyticsServiceTest.php rename to php/php/src/Mcp/Tests/Unit/ToolAnalyticsServiceTest.php diff --git a/src/php/src/Mcp/Tests/Unit/ToolDependencyServiceTest.php b/php/php/src/Mcp/Tests/Unit/ToolDependencyServiceTest.php similarity index 100% rename from src/php/src/Mcp/Tests/Unit/ToolDependencyServiceTest.php rename to php/php/src/Mcp/Tests/Unit/ToolDependencyServiceTest.php diff --git a/src/php/src/Mcp/Tests/Unit/ToolVersionServiceTest.php b/php/php/src/Mcp/Tests/Unit/ToolVersionServiceTest.php similarity index 100% rename from src/php/src/Mcp/Tests/Unit/ToolVersionServiceTest.php rename to php/php/src/Mcp/Tests/Unit/ToolVersionServiceTest.php diff --git a/src/php/src/Mcp/Tests/Unit/ValidateWorkspaceContextMiddlewareTest.php b/php/php/src/Mcp/Tests/Unit/ValidateWorkspaceContextMiddlewareTest.php similarity index 100% rename from src/php/src/Mcp/Tests/Unit/ValidateWorkspaceContextMiddlewareTest.php rename to php/php/src/Mcp/Tests/Unit/ValidateWorkspaceContextMiddlewareTest.php diff --git a/src/php/src/Mcp/Tests/Unit/WorkspaceContextSecurityTest.php b/php/php/src/Mcp/Tests/Unit/WorkspaceContextSecurityTest.php similarity index 100% rename from src/php/src/Mcp/Tests/Unit/WorkspaceContextSecurityTest.php rename to php/php/src/Mcp/Tests/Unit/WorkspaceContextSecurityTest.php diff --git a/src/php/src/Mcp/Tests/UseCase/ApiKeyManagerBasic.php b/php/php/src/Mcp/Tests/UseCase/ApiKeyManagerBasic.php similarity index 100% rename from src/php/src/Mcp/Tests/UseCase/ApiKeyManagerBasic.php rename to php/php/src/Mcp/Tests/UseCase/ApiKeyManagerBasic.php diff --git a/src/php/src/Mcp/Tools/Commerce/CreateCoupon.php b/php/php/src/Mcp/Tools/Commerce/CreateCoupon.php similarity index 100% rename from src/php/src/Mcp/Tools/Commerce/CreateCoupon.php rename to php/php/src/Mcp/Tools/Commerce/CreateCoupon.php diff --git a/src/php/src/Mcp/Tools/Commerce/GetBillingStatus.php b/php/php/src/Mcp/Tools/Commerce/GetBillingStatus.php similarity index 100% rename from src/php/src/Mcp/Tools/Commerce/GetBillingStatus.php rename to php/php/src/Mcp/Tools/Commerce/GetBillingStatus.php diff --git a/src/php/src/Mcp/Tools/Commerce/ListInvoices.php b/php/php/src/Mcp/Tools/Commerce/ListInvoices.php similarity index 100% rename from src/php/src/Mcp/Tools/Commerce/ListInvoices.php rename to php/php/src/Mcp/Tools/Commerce/ListInvoices.php diff --git a/src/php/src/Mcp/Tools/Commerce/UpgradePlan.php b/php/php/src/Mcp/Tools/Commerce/UpgradePlan.php similarity index 100% rename from src/php/src/Mcp/Tools/Commerce/UpgradePlan.php rename to php/php/src/Mcp/Tools/Commerce/UpgradePlan.php diff --git a/src/php/src/Mcp/Tools/Concerns/RequiresWorkspaceContext.php b/php/php/src/Mcp/Tools/Concerns/RequiresWorkspaceContext.php similarity index 100% rename from src/php/src/Mcp/Tools/Concerns/RequiresWorkspaceContext.php rename to php/php/src/Mcp/Tools/Concerns/RequiresWorkspaceContext.php diff --git a/src/php/src/Mcp/Tools/Concerns/ValidatesDependencies.php b/php/php/src/Mcp/Tools/Concerns/ValidatesDependencies.php similarity index 100% rename from src/php/src/Mcp/Tools/Concerns/ValidatesDependencies.php rename to php/php/src/Mcp/Tools/Concerns/ValidatesDependencies.php diff --git a/src/php/src/Mcp/Tools/ContentTools.php b/php/php/src/Mcp/Tools/ContentTools.php similarity index 100% rename from src/php/src/Mcp/Tools/ContentTools.php rename to php/php/src/Mcp/Tools/ContentTools.php diff --git a/src/php/src/Mcp/Tools/DescribeTable.php b/php/php/src/Mcp/Tools/DescribeTable.php similarity index 100% rename from src/php/src/Mcp/Tools/DescribeTable.php rename to php/php/src/Mcp/Tools/DescribeTable.php diff --git a/src/php/src/Mcp/Tools/GetStats.php b/php/php/src/Mcp/Tools/GetStats.php similarity index 100% rename from src/php/src/Mcp/Tools/GetStats.php rename to php/php/src/Mcp/Tools/GetStats.php diff --git a/src/php/src/Mcp/Tools/ListRoutes.php b/php/php/src/Mcp/Tools/ListRoutes.php similarity index 100% rename from src/php/src/Mcp/Tools/ListRoutes.php rename to php/php/src/Mcp/Tools/ListRoutes.php diff --git a/src/php/src/Mcp/Tools/ListSites.php b/php/php/src/Mcp/Tools/ListSites.php similarity index 100% rename from src/php/src/Mcp/Tools/ListSites.php rename to php/php/src/Mcp/Tools/ListSites.php diff --git a/src/php/src/Mcp/Tools/ListTables.php b/php/php/src/Mcp/Tools/ListTables.php similarity index 100% rename from src/php/src/Mcp/Tools/ListTables.php rename to php/php/src/Mcp/Tools/ListTables.php diff --git a/src/php/src/Mcp/Tools/QueryDatabase.php b/php/php/src/Mcp/Tools/QueryDatabase.php similarity index 100% rename from src/php/src/Mcp/Tools/QueryDatabase.php rename to php/php/src/Mcp/Tools/QueryDatabase.php diff --git a/src/php/src/Mcp/View/Blade/admin/analytics/dashboard.blade.php b/php/php/src/Mcp/View/Blade/admin/analytics/dashboard.blade.php similarity index 100% rename from src/php/src/Mcp/View/Blade/admin/analytics/dashboard.blade.php rename to php/php/src/Mcp/View/Blade/admin/analytics/dashboard.blade.php diff --git a/src/php/src/Mcp/View/Blade/admin/analytics/partials/stats-card.blade.php b/php/php/src/Mcp/View/Blade/admin/analytics/partials/stats-card.blade.php similarity index 100% rename from src/php/src/Mcp/View/Blade/admin/analytics/partials/stats-card.blade.php rename to php/php/src/Mcp/View/Blade/admin/analytics/partials/stats-card.blade.php diff --git a/src/php/src/Mcp/View/Blade/admin/analytics/partials/tool-table.blade.php b/php/php/src/Mcp/View/Blade/admin/analytics/partials/tool-table.blade.php similarity index 100% rename from src/php/src/Mcp/View/Blade/admin/analytics/partials/tool-table.blade.php rename to php/php/src/Mcp/View/Blade/admin/analytics/partials/tool-table.blade.php diff --git a/src/php/src/Mcp/View/Blade/admin/analytics/tool-detail.blade.php b/php/php/src/Mcp/View/Blade/admin/analytics/tool-detail.blade.php similarity index 100% rename from src/php/src/Mcp/View/Blade/admin/analytics/tool-detail.blade.php rename to php/php/src/Mcp/View/Blade/admin/analytics/tool-detail.blade.php diff --git a/src/php/src/Mcp/View/Blade/admin/api-key-manager.blade.php b/php/php/src/Mcp/View/Blade/admin/api-key-manager.blade.php similarity index 100% rename from src/php/src/Mcp/View/Blade/admin/api-key-manager.blade.php rename to php/php/src/Mcp/View/Blade/admin/api-key-manager.blade.php diff --git a/src/php/src/Mcp/View/Blade/admin/audit-log-viewer.blade.php b/php/php/src/Mcp/View/Blade/admin/audit-log-viewer.blade.php similarity index 100% rename from src/php/src/Mcp/View/Blade/admin/audit-log-viewer.blade.php rename to php/php/src/Mcp/View/Blade/admin/audit-log-viewer.blade.php diff --git a/src/php/src/Mcp/View/Blade/admin/mcp-playground.blade.php b/php/php/src/Mcp/View/Blade/admin/mcp-playground.blade.php similarity index 100% rename from src/php/src/Mcp/View/Blade/admin/mcp-playground.blade.php rename to php/php/src/Mcp/View/Blade/admin/mcp-playground.blade.php diff --git a/src/php/src/Mcp/View/Blade/admin/playground.blade.php b/php/php/src/Mcp/View/Blade/admin/playground.blade.php similarity index 100% rename from src/php/src/Mcp/View/Blade/admin/playground.blade.php rename to php/php/src/Mcp/View/Blade/admin/playground.blade.php diff --git a/src/php/src/Mcp/View/Blade/admin/quota-usage.blade.php b/php/php/src/Mcp/View/Blade/admin/quota-usage.blade.php similarity index 100% rename from src/php/src/Mcp/View/Blade/admin/quota-usage.blade.php rename to php/php/src/Mcp/View/Blade/admin/quota-usage.blade.php diff --git a/src/php/src/Mcp/View/Blade/admin/request-log.blade.php b/php/php/src/Mcp/View/Blade/admin/request-log.blade.php similarity index 100% rename from src/php/src/Mcp/View/Blade/admin/request-log.blade.php rename to php/php/src/Mcp/View/Blade/admin/request-log.blade.php diff --git a/src/php/src/Mcp/View/Blade/admin/tool-version-manager.blade.php b/php/php/src/Mcp/View/Blade/admin/tool-version-manager.blade.php similarity index 100% rename from src/php/src/Mcp/View/Blade/admin/tool-version-manager.blade.php rename to php/php/src/Mcp/View/Blade/admin/tool-version-manager.blade.php diff --git a/src/php/src/Mcp/View/Modal/Admin/ApiKeyManager.php b/php/php/src/Mcp/View/Modal/Admin/ApiKeyManager.php similarity index 100% rename from src/php/src/Mcp/View/Modal/Admin/ApiKeyManager.php rename to php/php/src/Mcp/View/Modal/Admin/ApiKeyManager.php diff --git a/src/php/src/Mcp/View/Modal/Admin/AuditLogViewer.php b/php/php/src/Mcp/View/Modal/Admin/AuditLogViewer.php similarity index 100% rename from src/php/src/Mcp/View/Modal/Admin/AuditLogViewer.php rename to php/php/src/Mcp/View/Modal/Admin/AuditLogViewer.php diff --git a/src/php/src/Mcp/View/Modal/Admin/McpPlayground.php b/php/php/src/Mcp/View/Modal/Admin/McpPlayground.php similarity index 100% rename from src/php/src/Mcp/View/Modal/Admin/McpPlayground.php rename to php/php/src/Mcp/View/Modal/Admin/McpPlayground.php diff --git a/src/php/src/Mcp/View/Modal/Admin/Playground.php b/php/php/src/Mcp/View/Modal/Admin/Playground.php similarity index 100% rename from src/php/src/Mcp/View/Modal/Admin/Playground.php rename to php/php/src/Mcp/View/Modal/Admin/Playground.php diff --git a/src/php/src/Mcp/View/Modal/Admin/QuotaUsage.php b/php/php/src/Mcp/View/Modal/Admin/QuotaUsage.php similarity index 100% rename from src/php/src/Mcp/View/Modal/Admin/QuotaUsage.php rename to php/php/src/Mcp/View/Modal/Admin/QuotaUsage.php diff --git a/src/php/src/Mcp/View/Modal/Admin/RequestLog.php b/php/php/src/Mcp/View/Modal/Admin/RequestLog.php similarity index 100% rename from src/php/src/Mcp/View/Modal/Admin/RequestLog.php rename to php/php/src/Mcp/View/Modal/Admin/RequestLog.php diff --git a/src/php/src/Mcp/View/Modal/Admin/ToolAnalyticsDashboard.php b/php/php/src/Mcp/View/Modal/Admin/ToolAnalyticsDashboard.php similarity index 100% rename from src/php/src/Mcp/View/Modal/Admin/ToolAnalyticsDashboard.php rename to php/php/src/Mcp/View/Modal/Admin/ToolAnalyticsDashboard.php diff --git a/src/php/src/Mcp/View/Modal/Admin/ToolAnalyticsDetail.php b/php/php/src/Mcp/View/Modal/Admin/ToolAnalyticsDetail.php similarity index 100% rename from src/php/src/Mcp/View/Modal/Admin/ToolAnalyticsDetail.php rename to php/php/src/Mcp/View/Modal/Admin/ToolAnalyticsDetail.php diff --git a/src/php/src/Mcp/View/Modal/Admin/ToolVersionManager.php b/php/php/src/Mcp/View/Modal/Admin/ToolVersionManager.php similarity index 100% rename from src/php/src/Mcp/View/Modal/Admin/ToolVersionManager.php rename to php/php/src/Mcp/View/Modal/Admin/ToolVersionManager.php diff --git a/src/php/src/Website/Mcp/Boot.php b/php/php/src/Website/Mcp/Boot.php similarity index 100% rename from src/php/src/Website/Mcp/Boot.php rename to php/php/src/Website/Mcp/Boot.php diff --git a/src/php/src/Website/Mcp/Controllers/McpRegistryController.php b/php/php/src/Website/Mcp/Controllers/McpRegistryController.php similarity index 100% rename from src/php/src/Website/Mcp/Controllers/McpRegistryController.php rename to php/php/src/Website/Mcp/Controllers/McpRegistryController.php diff --git a/src/php/src/Website/Mcp/Routes/web.php b/php/php/src/Website/Mcp/Routes/web.php similarity index 100% rename from src/php/src/Website/Mcp/Routes/web.php rename to php/php/src/Website/Mcp/Routes/web.php diff --git a/src/php/src/Website/Mcp/View/Blade/web/analytics.blade.php b/php/php/src/Website/Mcp/View/Blade/web/analytics.blade.php similarity index 100% rename from src/php/src/Website/Mcp/View/Blade/web/analytics.blade.php rename to php/php/src/Website/Mcp/View/Blade/web/analytics.blade.php diff --git a/src/php/src/Website/Mcp/View/Blade/web/api-explorer.blade.php b/php/php/src/Website/Mcp/View/Blade/web/api-explorer.blade.php similarity index 100% rename from src/php/src/Website/Mcp/View/Blade/web/api-explorer.blade.php rename to php/php/src/Website/Mcp/View/Blade/web/api-explorer.blade.php diff --git a/src/php/src/Website/Mcp/View/Blade/web/api-key-manager.blade.php b/php/php/src/Website/Mcp/View/Blade/web/api-key-manager.blade.php similarity index 100% rename from src/php/src/Website/Mcp/View/Blade/web/api-key-manager.blade.php rename to php/php/src/Website/Mcp/View/Blade/web/api-key-manager.blade.php diff --git a/src/php/src/Website/Mcp/View/Blade/web/connect.blade.php b/php/php/src/Website/Mcp/View/Blade/web/connect.blade.php similarity index 100% rename from src/php/src/Website/Mcp/View/Blade/web/connect.blade.php rename to php/php/src/Website/Mcp/View/Blade/web/connect.blade.php diff --git a/src/php/src/Website/Mcp/View/Blade/web/dashboard.blade.php b/php/php/src/Website/Mcp/View/Blade/web/dashboard.blade.php similarity index 100% rename from src/php/src/Website/Mcp/View/Blade/web/dashboard.blade.php rename to php/php/src/Website/Mcp/View/Blade/web/dashboard.blade.php diff --git a/src/php/src/Website/Mcp/View/Blade/web/index.blade.php b/php/php/src/Website/Mcp/View/Blade/web/index.blade.php similarity index 100% rename from src/php/src/Website/Mcp/View/Blade/web/index.blade.php rename to php/php/src/Website/Mcp/View/Blade/web/index.blade.php diff --git a/src/php/src/Website/Mcp/View/Blade/web/keys.blade.php b/php/php/src/Website/Mcp/View/Blade/web/keys.blade.php similarity index 100% rename from src/php/src/Website/Mcp/View/Blade/web/keys.blade.php rename to php/php/src/Website/Mcp/View/Blade/web/keys.blade.php diff --git a/src/php/src/Website/Mcp/View/Blade/web/landing.blade.php b/php/php/src/Website/Mcp/View/Blade/web/landing.blade.php similarity index 100% rename from src/php/src/Website/Mcp/View/Blade/web/landing.blade.php rename to php/php/src/Website/Mcp/View/Blade/web/landing.blade.php diff --git a/src/php/src/Website/Mcp/View/Blade/web/mcp-metrics.blade.php b/php/php/src/Website/Mcp/View/Blade/web/mcp-metrics.blade.php similarity index 100% rename from src/php/src/Website/Mcp/View/Blade/web/mcp-metrics.blade.php rename to php/php/src/Website/Mcp/View/Blade/web/mcp-metrics.blade.php diff --git a/src/php/src/Website/Mcp/View/Blade/web/mcp-playground.blade.php b/php/php/src/Website/Mcp/View/Blade/web/mcp-playground.blade.php similarity index 100% rename from src/php/src/Website/Mcp/View/Blade/web/mcp-playground.blade.php rename to php/php/src/Website/Mcp/View/Blade/web/mcp-playground.blade.php diff --git a/src/php/src/Website/Mcp/View/Blade/web/playground.blade.php b/php/php/src/Website/Mcp/View/Blade/web/playground.blade.php similarity index 100% rename from src/php/src/Website/Mcp/View/Blade/web/playground.blade.php rename to php/php/src/Website/Mcp/View/Blade/web/playground.blade.php diff --git a/src/php/src/Website/Mcp/View/Blade/web/request-log.blade.php b/php/php/src/Website/Mcp/View/Blade/web/request-log.blade.php similarity index 100% rename from src/php/src/Website/Mcp/View/Blade/web/request-log.blade.php rename to php/php/src/Website/Mcp/View/Blade/web/request-log.blade.php diff --git a/src/php/src/Website/Mcp/View/Blade/web/show.blade.php b/php/php/src/Website/Mcp/View/Blade/web/show.blade.php similarity index 100% rename from src/php/src/Website/Mcp/View/Blade/web/show.blade.php rename to php/php/src/Website/Mcp/View/Blade/web/show.blade.php diff --git a/src/php/src/Website/Mcp/View/Blade/web/unified-search.blade.php b/php/php/src/Website/Mcp/View/Blade/web/unified-search.blade.php similarity index 100% rename from src/php/src/Website/Mcp/View/Blade/web/unified-search.blade.php rename to php/php/src/Website/Mcp/View/Blade/web/unified-search.blade.php diff --git a/src/php/src/Website/Mcp/View/Modal/ApiExplorer.php b/php/php/src/Website/Mcp/View/Modal/ApiExplorer.php similarity index 100% rename from src/php/src/Website/Mcp/View/Modal/ApiExplorer.php rename to php/php/src/Website/Mcp/View/Modal/ApiExplorer.php diff --git a/src/php/src/Website/Mcp/View/Modal/ApiKeyManager.php b/php/php/src/Website/Mcp/View/Modal/ApiKeyManager.php similarity index 100% rename from src/php/src/Website/Mcp/View/Modal/ApiKeyManager.php rename to php/php/src/Website/Mcp/View/Modal/ApiKeyManager.php diff --git a/src/php/src/Website/Mcp/View/Modal/Dashboard.php b/php/php/src/Website/Mcp/View/Modal/Dashboard.php similarity index 100% rename from src/php/src/Website/Mcp/View/Modal/Dashboard.php rename to php/php/src/Website/Mcp/View/Modal/Dashboard.php diff --git a/src/php/src/Website/Mcp/View/Modal/McpMetrics.php b/php/php/src/Website/Mcp/View/Modal/McpMetrics.php similarity index 100% rename from src/php/src/Website/Mcp/View/Modal/McpMetrics.php rename to php/php/src/Website/Mcp/View/Modal/McpMetrics.php diff --git a/src/php/src/Website/Mcp/View/Modal/McpPlayground.php b/php/php/src/Website/Mcp/View/Modal/McpPlayground.php similarity index 100% rename from src/php/src/Website/Mcp/View/Modal/McpPlayground.php rename to php/php/src/Website/Mcp/View/Modal/McpPlayground.php diff --git a/src/php/src/Website/Mcp/View/Modal/Playground.php b/php/php/src/Website/Mcp/View/Modal/Playground.php similarity index 100% rename from src/php/src/Website/Mcp/View/Modal/Playground.php rename to php/php/src/Website/Mcp/View/Modal/Playground.php diff --git a/src/php/src/Website/Mcp/View/Modal/RequestLog.php b/php/php/src/Website/Mcp/View/Modal/RequestLog.php similarity index 100% rename from src/php/src/Website/Mcp/View/Modal/RequestLog.php rename to php/php/src/Website/Mcp/View/Modal/RequestLog.php diff --git a/src/php/src/Website/Mcp/View/Modal/UnifiedSearch.php b/php/php/src/Website/Mcp/View/Modal/UnifiedSearch.php similarity index 100% rename from src/php/src/Website/Mcp/View/Modal/UnifiedSearch.php rename to php/php/src/Website/Mcp/View/Modal/UnifiedSearch.php diff --git a/src/php/storage/app/.gitignore b/php/php/storage/app/.gitignore similarity index 100% rename from src/php/storage/app/.gitignore rename to php/php/storage/app/.gitignore diff --git a/src/php/storage/app/public/.gitignore b/php/php/storage/app/public/.gitignore similarity index 100% rename from src/php/storage/app/public/.gitignore rename to php/php/storage/app/public/.gitignore diff --git a/src/php/storage/framework/.gitignore b/php/php/storage/framework/.gitignore similarity index 100% rename from src/php/storage/framework/.gitignore rename to php/php/storage/framework/.gitignore diff --git a/src/php/storage/framework/cache/.gitignore b/php/php/storage/framework/cache/.gitignore similarity index 100% rename from src/php/storage/framework/cache/.gitignore rename to php/php/storage/framework/cache/.gitignore diff --git a/src/php/storage/framework/cache/data/.gitignore b/php/php/storage/framework/cache/data/.gitignore similarity index 100% rename from src/php/storage/framework/cache/data/.gitignore rename to php/php/storage/framework/cache/data/.gitignore diff --git a/src/php/storage/framework/sessions/.gitignore b/php/php/storage/framework/sessions/.gitignore similarity index 100% rename from src/php/storage/framework/sessions/.gitignore rename to php/php/storage/framework/sessions/.gitignore diff --git a/src/php/storage/framework/testing/.gitignore b/php/php/storage/framework/testing/.gitignore similarity index 100% rename from src/php/storage/framework/testing/.gitignore rename to php/php/storage/framework/testing/.gitignore diff --git a/src/php/storage/framework/views/.gitignore b/php/php/storage/framework/views/.gitignore similarity index 100% rename from src/php/storage/framework/views/.gitignore rename to php/php/storage/framework/views/.gitignore diff --git a/src/php/storage/logs/.gitignore b/php/php/storage/logs/.gitignore similarity index 100% rename from src/php/storage/logs/.gitignore rename to php/php/storage/logs/.gitignore diff --git a/src/php/tailwind.config.js b/php/php/tailwind.config.js similarity index 100% rename from src/php/tailwind.config.js rename to php/php/tailwind.config.js diff --git a/src/php/tests/Feature/.gitkeep b/php/php/tests/Feature/.gitkeep similarity index 100% rename from src/php/tests/Feature/.gitkeep rename to php/php/tests/Feature/.gitkeep diff --git a/src/php/tests/Pest.php b/php/php/tests/Pest.php similarity index 100% rename from src/php/tests/Pest.php rename to php/php/tests/Pest.php diff --git a/src/php/tests/TestCase.php b/php/php/tests/TestCase.php similarity index 100% rename from src/php/tests/TestCase.php rename to php/php/tests/TestCase.php diff --git a/src/php/tests/Unit/.gitkeep b/php/php/tests/Unit/.gitkeep similarity index 100% rename from src/php/tests/Unit/.gitkeep rename to php/php/tests/Unit/.gitkeep diff --git a/src/php/tests/Unit/DescribeTableTest.php b/php/php/tests/Unit/DescribeTableTest.php similarity index 100% rename from src/php/tests/Unit/DescribeTableTest.php rename to php/php/tests/Unit/DescribeTableTest.php diff --git a/src/php/tests/Unit/McpResourceListTest.php b/php/php/tests/Unit/McpResourceListTest.php similarity index 100% rename from src/php/tests/Unit/McpResourceListTest.php rename to php/php/tests/Unit/McpResourceListTest.php diff --git a/src/php/tests/Unit/SqlQueryValidatorTest.php b/php/php/tests/Unit/SqlQueryValidatorTest.php similarity index 100% rename from src/php/tests/Unit/SqlQueryValidatorTest.php rename to php/php/tests/Unit/SqlQueryValidatorTest.php diff --git a/src/php/vite.config.js b/php/php/vite.config.js similarity index 100% rename from src/php/vite.config.js rename to php/php/vite.config.js From d4ad96aaffaf42f1ef51419dd3a3e78571a60fda Mon Sep 17 00:00:00 2001 From: Snider Date: Thu, 30 Apr 2026 12:38:19 +0100 Subject: [PATCH 2/6] =?UTF-8?q?fix(mcp):=20flatten=20php/php=20=E2=86=92?= =?UTF-8?q?=20php?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The src→php rename in v0.11.0 produced php/php/ because src/ contained php/, so `mv src php` left the inner php intact. Composer psr-4 paths in composer.json point at php/src/* (single-level), so the double-nesting silently broke autoload until composer dump-autoload was run. Flattens to the expected php/src/, php/tests/ etc. shape. --- php/{php => }/AGENTS.md | 0 php/{php => }/FINDINGS.md | 0 php/{php => }/GEMINI.md | 0 php/{php => }/TODO.md | 0 php/{php => }/app/Http/Controllers/.gitkeep | 0 php/{php => }/app/Mod/.gitkeep | 0 php/{php => }/app/Models/.gitkeep | 0 php/{php => }/app/Providers/AppServiceProvider.php | 0 php/{php => }/artisan | 0 php/{php => }/bootstrap/app.php | 0 php/{php => }/bootstrap/cache/.gitignore | 0 php/{php => }/bootstrap/providers.php | 0 php/{php => }/config/core.php | 0 php/{php => }/database/factories/.gitkeep | 0 php/{php => }/database/migrations/.gitkeep | 0 php/{php => }/database/seeders/DatabaseSeeder.php | 0 php/{php => }/docs/analytics.md | 0 php/{php => }/docs/creating-mcp-tools.md | 0 php/{php => }/docs/discovery-2026-02-21.md | 0 php/{php => }/docs/index.md | 0 php/{php => }/docs/query-database.md | 0 php/{php => }/docs/quotas.md | 0 php/{php => }/docs/security.md | 0 php/{php => }/docs/sql-security.md | 0 php/{php => }/docs/tools-reference.md | 0 php/{php => }/docs/tools.md | 0 php/{php => }/docs/workspace.md | 0 php/{php => }/package.json | 0 php/{php => }/phpunit.xml | 0 php/{php => }/postcss.config.js | 0 php/{php => }/public/.htaccess | 0 php/{php => }/public/index.php | 0 php/{php => }/public/robots.txt | 0 php/{php => }/resources/css/app.css | 0 php/{php => }/resources/js/app.js | 0 php/{php => }/resources/js/bootstrap.js | 0 php/{php => }/resources/views/welcome.blade.php | 0 php/{php => }/routes/api.php | 0 php/{php => }/routes/console.php | 0 php/{php => }/routes/web.php | 0 php/{php => }/src/Front/Mcp/Boot.php | 0 php/{php => }/src/Front/Mcp/Contracts/McpToolHandler.php | 0 php/{php => }/src/Front/Mcp/McpContext.php | 0 php/{php => }/src/Front/View/Blade/layouts/mcp.blade.php | 0 php/{php => }/src/Mcp/Boot.php | 0 .../src/Mcp/Console/Commands/CleanupToolCallLogsCommand.php | 0 php/{php => }/src/Mcp/Console/Commands/McpAgentServerCommand.php | 0 php/{php => }/src/Mcp/Console/Commands/McpMonitorCommand.php | 0 php/{php => }/src/Mcp/Console/Commands/PruneMetricsCommand.php | 0 php/{php => }/src/Mcp/Console/Commands/VerifyAuditLogCommand.php | 0 php/{php => }/src/Mcp/Context/WorkspaceContext.php | 0 php/{php => }/src/Mcp/Controllers/McpApiController.php | 0 php/{php => }/src/Mcp/DTO/ToolStats.php | 0 php/{php => }/src/Mcp/Database/Seeders/SensitiveToolSeeder.php | 0 php/{php => }/src/Mcp/Dependencies/DependencyType.php | 0 php/{php => }/src/Mcp/Dependencies/HasDependencies.php | 0 php/{php => }/src/Mcp/Dependencies/ToolDependency.php | 0 php/{php => }/src/Mcp/Events/ToolExecuted.php | 0 php/{php => }/src/Mcp/Exceptions/CircuitOpenException.php | 0 php/{php => }/src/Mcp/Exceptions/ForbiddenQueryException.php | 0 php/{php => }/src/Mcp/Exceptions/MissingDependencyException.php | 0 .../src/Mcp/Exceptions/MissingWorkspaceContextException.php | 0 php/{php => }/src/Mcp/Exceptions/QueryTimeoutException.php | 0 php/{php => }/src/Mcp/Exceptions/ResultSizeLimitException.php | 0 php/{php => }/src/Mcp/Lang/en_GB/mcp.php | 0 php/{php => }/src/Mcp/Listeners/RecordToolExecution.php | 0 php/{php => }/src/Mcp/Middleware/CheckMcpQuota.php | 0 php/{php => }/src/Mcp/Middleware/McpApiKeyAuth.php | 0 php/{php => }/src/Mcp/Middleware/McpAuthenticate.php | 0 php/{php => }/src/Mcp/Middleware/ValidateToolDependencies.php | 0 php/{php => }/src/Mcp/Middleware/ValidateWorkspaceContext.php | 0 .../2026_01_07_004936_create_mcp_api_requests_table.php | 0 .../2026_01_26_000001_create_mcp_tool_metrics_table.php | 0 .../2026_01_26_000002_create_mcp_usage_quotas_table.php | 0 .../Migrations/2026_01_26_000003_create_mcp_audit_logs_table.php | 0 .../2026_01_26_000004_create_mcp_tool_versions_table.php | 0 php/{php => }/src/Mcp/Models/McpApiRequest.php | 0 php/{php => }/src/Mcp/Models/McpAuditLog.php | 0 php/{php => }/src/Mcp/Models/McpSensitiveTool.php | 0 php/{php => }/src/Mcp/Models/McpToolCall.php | 0 php/{php => }/src/Mcp/Models/McpToolCallStat.php | 0 php/{php => }/src/Mcp/Models/McpToolVersion.php | 0 php/{php => }/src/Mcp/Models/McpUsageQuota.php | 0 php/{php => }/src/Mcp/Models/ToolMetric.php | 0 php/{php => }/src/Mcp/Resources/AppConfig.php | 0 php/{php => }/src/Mcp/Resources/ContentResource.php | 0 php/{php => }/src/Mcp/Resources/DatabaseSchema.php | 0 php/{php => }/src/Mcp/Routes/admin.php | 0 php/{php => }/src/Mcp/Services/AgentSessionService.php | 0 php/{php => }/src/Mcp/Services/AgentToolRegistry.php | 0 php/{php => }/src/Mcp/Services/AuditLogService.php | 0 php/{php => }/src/Mcp/Services/CircuitBreaker.php | 0 php/{php => }/src/Mcp/Services/DataRedactor.php | 0 php/{php => }/src/Mcp/Services/McpHealthService.php | 0 php/{php => }/src/Mcp/Services/McpMetricsService.php | 0 php/{php => }/src/Mcp/Services/McpQuotaService.php | 0 php/{php => }/src/Mcp/Services/McpWebhookDispatcher.php | 0 php/{php => }/src/Mcp/Services/OpenApiGenerator.php | 0 php/{php => }/src/Mcp/Services/QueryAuditService.php | 0 php/{php => }/src/Mcp/Services/QueryExecutionService.php | 0 php/{php => }/src/Mcp/Services/SqlQueryValidator.php | 0 php/{php => }/src/Mcp/Services/ToolAnalyticsService.php | 0 php/{php => }/src/Mcp/Services/ToolDependencyService.php | 0 php/{php => }/src/Mcp/Services/ToolRateLimiter.php | 0 php/{php => }/src/Mcp/Services/ToolRegistry.php | 0 php/{php => }/src/Mcp/Services/ToolVersionService.php | 0 php/{php => }/src/Mcp/Tests/Unit/McpQuotaServiceTest.php | 0 php/{php => }/src/Mcp/Tests/Unit/QueryAuditServiceTest.php | 0 php/{php => }/src/Mcp/Tests/Unit/QueryExecutionServiceTest.php | 0 php/{php => }/src/Mcp/Tests/Unit/ToolAnalyticsServiceTest.php | 0 php/{php => }/src/Mcp/Tests/Unit/ToolDependencyServiceTest.php | 0 php/{php => }/src/Mcp/Tests/Unit/ToolVersionServiceTest.php | 0 .../src/Mcp/Tests/Unit/ValidateWorkspaceContextMiddlewareTest.php | 0 php/{php => }/src/Mcp/Tests/Unit/WorkspaceContextSecurityTest.php | 0 php/{php => }/src/Mcp/Tests/UseCase/ApiKeyManagerBasic.php | 0 php/{php => }/src/Mcp/Tools/Commerce/CreateCoupon.php | 0 php/{php => }/src/Mcp/Tools/Commerce/GetBillingStatus.php | 0 php/{php => }/src/Mcp/Tools/Commerce/ListInvoices.php | 0 php/{php => }/src/Mcp/Tools/Commerce/UpgradePlan.php | 0 php/{php => }/src/Mcp/Tools/Concerns/RequiresWorkspaceContext.php | 0 php/{php => }/src/Mcp/Tools/Concerns/ValidatesDependencies.php | 0 php/{php => }/src/Mcp/Tools/ContentTools.php | 0 php/{php => }/src/Mcp/Tools/DescribeTable.php | 0 php/{php => }/src/Mcp/Tools/GetStats.php | 0 php/{php => }/src/Mcp/Tools/ListRoutes.php | 0 php/{php => }/src/Mcp/Tools/ListSites.php | 0 php/{php => }/src/Mcp/Tools/ListTables.php | 0 php/{php => }/src/Mcp/Tools/QueryDatabase.php | 0 .../src/Mcp/View/Blade/admin/analytics/dashboard.blade.php | 0 .../Mcp/View/Blade/admin/analytics/partials/stats-card.blade.php | 0 .../Mcp/View/Blade/admin/analytics/partials/tool-table.blade.php | 0 .../src/Mcp/View/Blade/admin/analytics/tool-detail.blade.php | 0 php/{php => }/src/Mcp/View/Blade/admin/api-key-manager.blade.php | 0 php/{php => }/src/Mcp/View/Blade/admin/audit-log-viewer.blade.php | 0 php/{php => }/src/Mcp/View/Blade/admin/mcp-playground.blade.php | 0 php/{php => }/src/Mcp/View/Blade/admin/playground.blade.php | 0 php/{php => }/src/Mcp/View/Blade/admin/quota-usage.blade.php | 0 php/{php => }/src/Mcp/View/Blade/admin/request-log.blade.php | 0 .../src/Mcp/View/Blade/admin/tool-version-manager.blade.php | 0 php/{php => }/src/Mcp/View/Modal/Admin/ApiKeyManager.php | 0 php/{php => }/src/Mcp/View/Modal/Admin/AuditLogViewer.php | 0 php/{php => }/src/Mcp/View/Modal/Admin/McpPlayground.php | 0 php/{php => }/src/Mcp/View/Modal/Admin/Playground.php | 0 php/{php => }/src/Mcp/View/Modal/Admin/QuotaUsage.php | 0 php/{php => }/src/Mcp/View/Modal/Admin/RequestLog.php | 0 php/{php => }/src/Mcp/View/Modal/Admin/ToolAnalyticsDashboard.php | 0 php/{php => }/src/Mcp/View/Modal/Admin/ToolAnalyticsDetail.php | 0 php/{php => }/src/Mcp/View/Modal/Admin/ToolVersionManager.php | 0 php/{php => }/src/Website/Mcp/Boot.php | 0 .../src/Website/Mcp/Controllers/McpRegistryController.php | 0 php/{php => }/src/Website/Mcp/Routes/web.php | 0 php/{php => }/src/Website/Mcp/View/Blade/web/analytics.blade.php | 0 .../src/Website/Mcp/View/Blade/web/api-explorer.blade.php | 0 .../src/Website/Mcp/View/Blade/web/api-key-manager.blade.php | 0 php/{php => }/src/Website/Mcp/View/Blade/web/connect.blade.php | 0 php/{php => }/src/Website/Mcp/View/Blade/web/dashboard.blade.php | 0 php/{php => }/src/Website/Mcp/View/Blade/web/index.blade.php | 0 php/{php => }/src/Website/Mcp/View/Blade/web/keys.blade.php | 0 php/{php => }/src/Website/Mcp/View/Blade/web/landing.blade.php | 0 .../src/Website/Mcp/View/Blade/web/mcp-metrics.blade.php | 0 .../src/Website/Mcp/View/Blade/web/mcp-playground.blade.php | 0 php/{php => }/src/Website/Mcp/View/Blade/web/playground.blade.php | 0 .../src/Website/Mcp/View/Blade/web/request-log.blade.php | 0 php/{php => }/src/Website/Mcp/View/Blade/web/show.blade.php | 0 .../src/Website/Mcp/View/Blade/web/unified-search.blade.php | 0 php/{php => }/src/Website/Mcp/View/Modal/ApiExplorer.php | 0 php/{php => }/src/Website/Mcp/View/Modal/ApiKeyManager.php | 0 php/{php => }/src/Website/Mcp/View/Modal/Dashboard.php | 0 php/{php => }/src/Website/Mcp/View/Modal/McpMetrics.php | 0 php/{php => }/src/Website/Mcp/View/Modal/McpPlayground.php | 0 php/{php => }/src/Website/Mcp/View/Modal/Playground.php | 0 php/{php => }/src/Website/Mcp/View/Modal/RequestLog.php | 0 php/{php => }/src/Website/Mcp/View/Modal/UnifiedSearch.php | 0 php/{php => }/storage/app/.gitignore | 0 php/{php => }/storage/app/public/.gitignore | 0 php/{php => }/storage/framework/.gitignore | 0 php/{php => }/storage/framework/cache/.gitignore | 0 php/{php => }/storage/framework/cache/data/.gitignore | 0 php/{php => }/storage/framework/sessions/.gitignore | 0 php/{php => }/storage/framework/testing/.gitignore | 0 php/{php => }/storage/framework/views/.gitignore | 0 php/{php => }/storage/logs/.gitignore | 0 php/{php => }/tailwind.config.js | 0 php/{php => }/tests/Feature/.gitkeep | 0 php/{php => }/tests/Pest.php | 0 php/{php => }/tests/TestCase.php | 0 php/{php => }/tests/Unit/.gitkeep | 0 php/{php => }/tests/Unit/DescribeTableTest.php | 0 php/{php => }/tests/Unit/McpResourceListTest.php | 0 php/{php => }/tests/Unit/SqlQueryValidatorTest.php | 0 php/{php => }/vite.config.js | 0 191 files changed, 0 insertions(+), 0 deletions(-) rename php/{php => }/AGENTS.md (100%) rename php/{php => }/FINDINGS.md (100%) rename php/{php => }/GEMINI.md (100%) rename php/{php => }/TODO.md (100%) rename php/{php => }/app/Http/Controllers/.gitkeep (100%) rename php/{php => }/app/Mod/.gitkeep (100%) rename php/{php => }/app/Models/.gitkeep (100%) rename php/{php => }/app/Providers/AppServiceProvider.php (100%) rename php/{php => }/artisan (100%) rename php/{php => }/bootstrap/app.php (100%) rename php/{php => }/bootstrap/cache/.gitignore (100%) rename php/{php => }/bootstrap/providers.php (100%) rename php/{php => }/config/core.php (100%) rename php/{php => }/database/factories/.gitkeep (100%) rename php/{php => }/database/migrations/.gitkeep (100%) rename php/{php => }/database/seeders/DatabaseSeeder.php (100%) rename php/{php => }/docs/analytics.md (100%) rename php/{php => }/docs/creating-mcp-tools.md (100%) rename php/{php => }/docs/discovery-2026-02-21.md (100%) rename php/{php => }/docs/index.md (100%) rename php/{php => }/docs/query-database.md (100%) rename php/{php => }/docs/quotas.md (100%) rename php/{php => }/docs/security.md (100%) rename php/{php => }/docs/sql-security.md (100%) rename php/{php => }/docs/tools-reference.md (100%) rename php/{php => }/docs/tools.md (100%) rename php/{php => }/docs/workspace.md (100%) rename php/{php => }/package.json (100%) rename php/{php => }/phpunit.xml (100%) rename php/{php => }/postcss.config.js (100%) rename php/{php => }/public/.htaccess (100%) rename php/{php => }/public/index.php (100%) rename php/{php => }/public/robots.txt (100%) rename php/{php => }/resources/css/app.css (100%) rename php/{php => }/resources/js/app.js (100%) rename php/{php => }/resources/js/bootstrap.js (100%) rename php/{php => }/resources/views/welcome.blade.php (100%) rename php/{php => }/routes/api.php (100%) rename php/{php => }/routes/console.php (100%) rename php/{php => }/routes/web.php (100%) rename php/{php => }/src/Front/Mcp/Boot.php (100%) rename php/{php => }/src/Front/Mcp/Contracts/McpToolHandler.php (100%) rename php/{php => }/src/Front/Mcp/McpContext.php (100%) rename php/{php => }/src/Front/View/Blade/layouts/mcp.blade.php (100%) rename php/{php => }/src/Mcp/Boot.php (100%) rename php/{php => }/src/Mcp/Console/Commands/CleanupToolCallLogsCommand.php (100%) rename php/{php => }/src/Mcp/Console/Commands/McpAgentServerCommand.php (100%) rename php/{php => }/src/Mcp/Console/Commands/McpMonitorCommand.php (100%) rename php/{php => }/src/Mcp/Console/Commands/PruneMetricsCommand.php (100%) rename php/{php => }/src/Mcp/Console/Commands/VerifyAuditLogCommand.php (100%) rename php/{php => }/src/Mcp/Context/WorkspaceContext.php (100%) rename php/{php => }/src/Mcp/Controllers/McpApiController.php (100%) rename php/{php => }/src/Mcp/DTO/ToolStats.php (100%) rename php/{php => }/src/Mcp/Database/Seeders/SensitiveToolSeeder.php (100%) rename php/{php => }/src/Mcp/Dependencies/DependencyType.php (100%) rename php/{php => }/src/Mcp/Dependencies/HasDependencies.php (100%) rename php/{php => }/src/Mcp/Dependencies/ToolDependency.php (100%) rename php/{php => }/src/Mcp/Events/ToolExecuted.php (100%) rename php/{php => }/src/Mcp/Exceptions/CircuitOpenException.php (100%) rename php/{php => }/src/Mcp/Exceptions/ForbiddenQueryException.php (100%) rename php/{php => }/src/Mcp/Exceptions/MissingDependencyException.php (100%) rename php/{php => }/src/Mcp/Exceptions/MissingWorkspaceContextException.php (100%) rename php/{php => }/src/Mcp/Exceptions/QueryTimeoutException.php (100%) rename php/{php => }/src/Mcp/Exceptions/ResultSizeLimitException.php (100%) rename php/{php => }/src/Mcp/Lang/en_GB/mcp.php (100%) rename php/{php => }/src/Mcp/Listeners/RecordToolExecution.php (100%) rename php/{php => }/src/Mcp/Middleware/CheckMcpQuota.php (100%) rename php/{php => }/src/Mcp/Middleware/McpApiKeyAuth.php (100%) rename php/{php => }/src/Mcp/Middleware/McpAuthenticate.php (100%) rename php/{php => }/src/Mcp/Middleware/ValidateToolDependencies.php (100%) rename php/{php => }/src/Mcp/Middleware/ValidateWorkspaceContext.php (100%) rename php/{php => }/src/Mcp/Migrations/2026_01_07_004936_create_mcp_api_requests_table.php (100%) rename php/{php => }/src/Mcp/Migrations/2026_01_26_000001_create_mcp_tool_metrics_table.php (100%) rename php/{php => }/src/Mcp/Migrations/2026_01_26_000002_create_mcp_usage_quotas_table.php (100%) rename php/{php => }/src/Mcp/Migrations/2026_01_26_000003_create_mcp_audit_logs_table.php (100%) rename php/{php => }/src/Mcp/Migrations/2026_01_26_000004_create_mcp_tool_versions_table.php (100%) rename php/{php => }/src/Mcp/Models/McpApiRequest.php (100%) rename php/{php => }/src/Mcp/Models/McpAuditLog.php (100%) rename php/{php => }/src/Mcp/Models/McpSensitiveTool.php (100%) rename php/{php => }/src/Mcp/Models/McpToolCall.php (100%) rename php/{php => }/src/Mcp/Models/McpToolCallStat.php (100%) rename php/{php => }/src/Mcp/Models/McpToolVersion.php (100%) rename php/{php => }/src/Mcp/Models/McpUsageQuota.php (100%) rename php/{php => }/src/Mcp/Models/ToolMetric.php (100%) rename php/{php => }/src/Mcp/Resources/AppConfig.php (100%) rename php/{php => }/src/Mcp/Resources/ContentResource.php (100%) rename php/{php => }/src/Mcp/Resources/DatabaseSchema.php (100%) rename php/{php => }/src/Mcp/Routes/admin.php (100%) rename php/{php => }/src/Mcp/Services/AgentSessionService.php (100%) rename php/{php => }/src/Mcp/Services/AgentToolRegistry.php (100%) rename php/{php => }/src/Mcp/Services/AuditLogService.php (100%) rename php/{php => }/src/Mcp/Services/CircuitBreaker.php (100%) rename php/{php => }/src/Mcp/Services/DataRedactor.php (100%) rename php/{php => }/src/Mcp/Services/McpHealthService.php (100%) rename php/{php => }/src/Mcp/Services/McpMetricsService.php (100%) rename php/{php => }/src/Mcp/Services/McpQuotaService.php (100%) rename php/{php => }/src/Mcp/Services/McpWebhookDispatcher.php (100%) rename php/{php => }/src/Mcp/Services/OpenApiGenerator.php (100%) rename php/{php => }/src/Mcp/Services/QueryAuditService.php (100%) rename php/{php => }/src/Mcp/Services/QueryExecutionService.php (100%) rename php/{php => }/src/Mcp/Services/SqlQueryValidator.php (100%) rename php/{php => }/src/Mcp/Services/ToolAnalyticsService.php (100%) rename php/{php => }/src/Mcp/Services/ToolDependencyService.php (100%) rename php/{php => }/src/Mcp/Services/ToolRateLimiter.php (100%) rename php/{php => }/src/Mcp/Services/ToolRegistry.php (100%) rename php/{php => }/src/Mcp/Services/ToolVersionService.php (100%) rename php/{php => }/src/Mcp/Tests/Unit/McpQuotaServiceTest.php (100%) rename php/{php => }/src/Mcp/Tests/Unit/QueryAuditServiceTest.php (100%) rename php/{php => }/src/Mcp/Tests/Unit/QueryExecutionServiceTest.php (100%) rename php/{php => }/src/Mcp/Tests/Unit/ToolAnalyticsServiceTest.php (100%) rename php/{php => }/src/Mcp/Tests/Unit/ToolDependencyServiceTest.php (100%) rename php/{php => }/src/Mcp/Tests/Unit/ToolVersionServiceTest.php (100%) rename php/{php => }/src/Mcp/Tests/Unit/ValidateWorkspaceContextMiddlewareTest.php (100%) rename php/{php => }/src/Mcp/Tests/Unit/WorkspaceContextSecurityTest.php (100%) rename php/{php => }/src/Mcp/Tests/UseCase/ApiKeyManagerBasic.php (100%) rename php/{php => }/src/Mcp/Tools/Commerce/CreateCoupon.php (100%) rename php/{php => }/src/Mcp/Tools/Commerce/GetBillingStatus.php (100%) rename php/{php => }/src/Mcp/Tools/Commerce/ListInvoices.php (100%) rename php/{php => }/src/Mcp/Tools/Commerce/UpgradePlan.php (100%) rename php/{php => }/src/Mcp/Tools/Concerns/RequiresWorkspaceContext.php (100%) rename php/{php => }/src/Mcp/Tools/Concerns/ValidatesDependencies.php (100%) rename php/{php => }/src/Mcp/Tools/ContentTools.php (100%) rename php/{php => }/src/Mcp/Tools/DescribeTable.php (100%) rename php/{php => }/src/Mcp/Tools/GetStats.php (100%) rename php/{php => }/src/Mcp/Tools/ListRoutes.php (100%) rename php/{php => }/src/Mcp/Tools/ListSites.php (100%) rename php/{php => }/src/Mcp/Tools/ListTables.php (100%) rename php/{php => }/src/Mcp/Tools/QueryDatabase.php (100%) rename php/{php => }/src/Mcp/View/Blade/admin/analytics/dashboard.blade.php (100%) rename php/{php => }/src/Mcp/View/Blade/admin/analytics/partials/stats-card.blade.php (100%) rename php/{php => }/src/Mcp/View/Blade/admin/analytics/partials/tool-table.blade.php (100%) rename php/{php => }/src/Mcp/View/Blade/admin/analytics/tool-detail.blade.php (100%) rename php/{php => }/src/Mcp/View/Blade/admin/api-key-manager.blade.php (100%) rename php/{php => }/src/Mcp/View/Blade/admin/audit-log-viewer.blade.php (100%) rename php/{php => }/src/Mcp/View/Blade/admin/mcp-playground.blade.php (100%) rename php/{php => }/src/Mcp/View/Blade/admin/playground.blade.php (100%) rename php/{php => }/src/Mcp/View/Blade/admin/quota-usage.blade.php (100%) rename php/{php => }/src/Mcp/View/Blade/admin/request-log.blade.php (100%) rename php/{php => }/src/Mcp/View/Blade/admin/tool-version-manager.blade.php (100%) rename php/{php => }/src/Mcp/View/Modal/Admin/ApiKeyManager.php (100%) rename php/{php => }/src/Mcp/View/Modal/Admin/AuditLogViewer.php (100%) rename php/{php => }/src/Mcp/View/Modal/Admin/McpPlayground.php (100%) rename php/{php => }/src/Mcp/View/Modal/Admin/Playground.php (100%) rename php/{php => }/src/Mcp/View/Modal/Admin/QuotaUsage.php (100%) rename php/{php => }/src/Mcp/View/Modal/Admin/RequestLog.php (100%) rename php/{php => }/src/Mcp/View/Modal/Admin/ToolAnalyticsDashboard.php (100%) rename php/{php => }/src/Mcp/View/Modal/Admin/ToolAnalyticsDetail.php (100%) rename php/{php => }/src/Mcp/View/Modal/Admin/ToolVersionManager.php (100%) rename php/{php => }/src/Website/Mcp/Boot.php (100%) rename php/{php => }/src/Website/Mcp/Controllers/McpRegistryController.php (100%) rename php/{php => }/src/Website/Mcp/Routes/web.php (100%) rename php/{php => }/src/Website/Mcp/View/Blade/web/analytics.blade.php (100%) rename php/{php => }/src/Website/Mcp/View/Blade/web/api-explorer.blade.php (100%) rename php/{php => }/src/Website/Mcp/View/Blade/web/api-key-manager.blade.php (100%) rename php/{php => }/src/Website/Mcp/View/Blade/web/connect.blade.php (100%) rename php/{php => }/src/Website/Mcp/View/Blade/web/dashboard.blade.php (100%) rename php/{php => }/src/Website/Mcp/View/Blade/web/index.blade.php (100%) rename php/{php => }/src/Website/Mcp/View/Blade/web/keys.blade.php (100%) rename php/{php => }/src/Website/Mcp/View/Blade/web/landing.blade.php (100%) rename php/{php => }/src/Website/Mcp/View/Blade/web/mcp-metrics.blade.php (100%) rename php/{php => }/src/Website/Mcp/View/Blade/web/mcp-playground.blade.php (100%) rename php/{php => }/src/Website/Mcp/View/Blade/web/playground.blade.php (100%) rename php/{php => }/src/Website/Mcp/View/Blade/web/request-log.blade.php (100%) rename php/{php => }/src/Website/Mcp/View/Blade/web/show.blade.php (100%) rename php/{php => }/src/Website/Mcp/View/Blade/web/unified-search.blade.php (100%) rename php/{php => }/src/Website/Mcp/View/Modal/ApiExplorer.php (100%) rename php/{php => }/src/Website/Mcp/View/Modal/ApiKeyManager.php (100%) rename php/{php => }/src/Website/Mcp/View/Modal/Dashboard.php (100%) rename php/{php => }/src/Website/Mcp/View/Modal/McpMetrics.php (100%) rename php/{php => }/src/Website/Mcp/View/Modal/McpPlayground.php (100%) rename php/{php => }/src/Website/Mcp/View/Modal/Playground.php (100%) rename php/{php => }/src/Website/Mcp/View/Modal/RequestLog.php (100%) rename php/{php => }/src/Website/Mcp/View/Modal/UnifiedSearch.php (100%) rename php/{php => }/storage/app/.gitignore (100%) rename php/{php => }/storage/app/public/.gitignore (100%) rename php/{php => }/storage/framework/.gitignore (100%) rename php/{php => }/storage/framework/cache/.gitignore (100%) rename php/{php => }/storage/framework/cache/data/.gitignore (100%) rename php/{php => }/storage/framework/sessions/.gitignore (100%) rename php/{php => }/storage/framework/testing/.gitignore (100%) rename php/{php => }/storage/framework/views/.gitignore (100%) rename php/{php => }/storage/logs/.gitignore (100%) rename php/{php => }/tailwind.config.js (100%) rename php/{php => }/tests/Feature/.gitkeep (100%) rename php/{php => }/tests/Pest.php (100%) rename php/{php => }/tests/TestCase.php (100%) rename php/{php => }/tests/Unit/.gitkeep (100%) rename php/{php => }/tests/Unit/DescribeTableTest.php (100%) rename php/{php => }/tests/Unit/McpResourceListTest.php (100%) rename php/{php => }/tests/Unit/SqlQueryValidatorTest.php (100%) rename php/{php => }/vite.config.js (100%) diff --git a/php/php/AGENTS.md b/php/AGENTS.md similarity index 100% rename from php/php/AGENTS.md rename to php/AGENTS.md diff --git a/php/php/FINDINGS.md b/php/FINDINGS.md similarity index 100% rename from php/php/FINDINGS.md rename to php/FINDINGS.md diff --git a/php/php/GEMINI.md b/php/GEMINI.md similarity index 100% rename from php/php/GEMINI.md rename to php/GEMINI.md diff --git a/php/php/TODO.md b/php/TODO.md similarity index 100% rename from php/php/TODO.md rename to php/TODO.md diff --git a/php/php/app/Http/Controllers/.gitkeep b/php/app/Http/Controllers/.gitkeep similarity index 100% rename from php/php/app/Http/Controllers/.gitkeep rename to php/app/Http/Controllers/.gitkeep diff --git a/php/php/app/Mod/.gitkeep b/php/app/Mod/.gitkeep similarity index 100% rename from php/php/app/Mod/.gitkeep rename to php/app/Mod/.gitkeep diff --git a/php/php/app/Models/.gitkeep b/php/app/Models/.gitkeep similarity index 100% rename from php/php/app/Models/.gitkeep rename to php/app/Models/.gitkeep diff --git a/php/php/app/Providers/AppServiceProvider.php b/php/app/Providers/AppServiceProvider.php similarity index 100% rename from php/php/app/Providers/AppServiceProvider.php rename to php/app/Providers/AppServiceProvider.php diff --git a/php/php/artisan b/php/artisan similarity index 100% rename from php/php/artisan rename to php/artisan diff --git a/php/php/bootstrap/app.php b/php/bootstrap/app.php similarity index 100% rename from php/php/bootstrap/app.php rename to php/bootstrap/app.php diff --git a/php/php/bootstrap/cache/.gitignore b/php/bootstrap/cache/.gitignore similarity index 100% rename from php/php/bootstrap/cache/.gitignore rename to php/bootstrap/cache/.gitignore diff --git a/php/php/bootstrap/providers.php b/php/bootstrap/providers.php similarity index 100% rename from php/php/bootstrap/providers.php rename to php/bootstrap/providers.php diff --git a/php/php/config/core.php b/php/config/core.php similarity index 100% rename from php/php/config/core.php rename to php/config/core.php diff --git a/php/php/database/factories/.gitkeep b/php/database/factories/.gitkeep similarity index 100% rename from php/php/database/factories/.gitkeep rename to php/database/factories/.gitkeep diff --git a/php/php/database/migrations/.gitkeep b/php/database/migrations/.gitkeep similarity index 100% rename from php/php/database/migrations/.gitkeep rename to php/database/migrations/.gitkeep diff --git a/php/php/database/seeders/DatabaseSeeder.php b/php/database/seeders/DatabaseSeeder.php similarity index 100% rename from php/php/database/seeders/DatabaseSeeder.php rename to php/database/seeders/DatabaseSeeder.php diff --git a/php/php/docs/analytics.md b/php/docs/analytics.md similarity index 100% rename from php/php/docs/analytics.md rename to php/docs/analytics.md diff --git a/php/php/docs/creating-mcp-tools.md b/php/docs/creating-mcp-tools.md similarity index 100% rename from php/php/docs/creating-mcp-tools.md rename to php/docs/creating-mcp-tools.md diff --git a/php/php/docs/discovery-2026-02-21.md b/php/docs/discovery-2026-02-21.md similarity index 100% rename from php/php/docs/discovery-2026-02-21.md rename to php/docs/discovery-2026-02-21.md diff --git a/php/php/docs/index.md b/php/docs/index.md similarity index 100% rename from php/php/docs/index.md rename to php/docs/index.md diff --git a/php/php/docs/query-database.md b/php/docs/query-database.md similarity index 100% rename from php/php/docs/query-database.md rename to php/docs/query-database.md diff --git a/php/php/docs/quotas.md b/php/docs/quotas.md similarity index 100% rename from php/php/docs/quotas.md rename to php/docs/quotas.md diff --git a/php/php/docs/security.md b/php/docs/security.md similarity index 100% rename from php/php/docs/security.md rename to php/docs/security.md diff --git a/php/php/docs/sql-security.md b/php/docs/sql-security.md similarity index 100% rename from php/php/docs/sql-security.md rename to php/docs/sql-security.md diff --git a/php/php/docs/tools-reference.md b/php/docs/tools-reference.md similarity index 100% rename from php/php/docs/tools-reference.md rename to php/docs/tools-reference.md diff --git a/php/php/docs/tools.md b/php/docs/tools.md similarity index 100% rename from php/php/docs/tools.md rename to php/docs/tools.md diff --git a/php/php/docs/workspace.md b/php/docs/workspace.md similarity index 100% rename from php/php/docs/workspace.md rename to php/docs/workspace.md diff --git a/php/php/package.json b/php/package.json similarity index 100% rename from php/php/package.json rename to php/package.json diff --git a/php/php/phpunit.xml b/php/phpunit.xml similarity index 100% rename from php/php/phpunit.xml rename to php/phpunit.xml diff --git a/php/php/postcss.config.js b/php/postcss.config.js similarity index 100% rename from php/php/postcss.config.js rename to php/postcss.config.js diff --git a/php/php/public/.htaccess b/php/public/.htaccess similarity index 100% rename from php/php/public/.htaccess rename to php/public/.htaccess diff --git a/php/php/public/index.php b/php/public/index.php similarity index 100% rename from php/php/public/index.php rename to php/public/index.php diff --git a/php/php/public/robots.txt b/php/public/robots.txt similarity index 100% rename from php/php/public/robots.txt rename to php/public/robots.txt diff --git a/php/php/resources/css/app.css b/php/resources/css/app.css similarity index 100% rename from php/php/resources/css/app.css rename to php/resources/css/app.css diff --git a/php/php/resources/js/app.js b/php/resources/js/app.js similarity index 100% rename from php/php/resources/js/app.js rename to php/resources/js/app.js diff --git a/php/php/resources/js/bootstrap.js b/php/resources/js/bootstrap.js similarity index 100% rename from php/php/resources/js/bootstrap.js rename to php/resources/js/bootstrap.js diff --git a/php/php/resources/views/welcome.blade.php b/php/resources/views/welcome.blade.php similarity index 100% rename from php/php/resources/views/welcome.blade.php rename to php/resources/views/welcome.blade.php diff --git a/php/php/routes/api.php b/php/routes/api.php similarity index 100% rename from php/php/routes/api.php rename to php/routes/api.php diff --git a/php/php/routes/console.php b/php/routes/console.php similarity index 100% rename from php/php/routes/console.php rename to php/routes/console.php diff --git a/php/php/routes/web.php b/php/routes/web.php similarity index 100% rename from php/php/routes/web.php rename to php/routes/web.php diff --git a/php/php/src/Front/Mcp/Boot.php b/php/src/Front/Mcp/Boot.php similarity index 100% rename from php/php/src/Front/Mcp/Boot.php rename to php/src/Front/Mcp/Boot.php diff --git a/php/php/src/Front/Mcp/Contracts/McpToolHandler.php b/php/src/Front/Mcp/Contracts/McpToolHandler.php similarity index 100% rename from php/php/src/Front/Mcp/Contracts/McpToolHandler.php rename to php/src/Front/Mcp/Contracts/McpToolHandler.php diff --git a/php/php/src/Front/Mcp/McpContext.php b/php/src/Front/Mcp/McpContext.php similarity index 100% rename from php/php/src/Front/Mcp/McpContext.php rename to php/src/Front/Mcp/McpContext.php diff --git a/php/php/src/Front/View/Blade/layouts/mcp.blade.php b/php/src/Front/View/Blade/layouts/mcp.blade.php similarity index 100% rename from php/php/src/Front/View/Blade/layouts/mcp.blade.php rename to php/src/Front/View/Blade/layouts/mcp.blade.php diff --git a/php/php/src/Mcp/Boot.php b/php/src/Mcp/Boot.php similarity index 100% rename from php/php/src/Mcp/Boot.php rename to php/src/Mcp/Boot.php diff --git a/php/php/src/Mcp/Console/Commands/CleanupToolCallLogsCommand.php b/php/src/Mcp/Console/Commands/CleanupToolCallLogsCommand.php similarity index 100% rename from php/php/src/Mcp/Console/Commands/CleanupToolCallLogsCommand.php rename to php/src/Mcp/Console/Commands/CleanupToolCallLogsCommand.php diff --git a/php/php/src/Mcp/Console/Commands/McpAgentServerCommand.php b/php/src/Mcp/Console/Commands/McpAgentServerCommand.php similarity index 100% rename from php/php/src/Mcp/Console/Commands/McpAgentServerCommand.php rename to php/src/Mcp/Console/Commands/McpAgentServerCommand.php diff --git a/php/php/src/Mcp/Console/Commands/McpMonitorCommand.php b/php/src/Mcp/Console/Commands/McpMonitorCommand.php similarity index 100% rename from php/php/src/Mcp/Console/Commands/McpMonitorCommand.php rename to php/src/Mcp/Console/Commands/McpMonitorCommand.php diff --git a/php/php/src/Mcp/Console/Commands/PruneMetricsCommand.php b/php/src/Mcp/Console/Commands/PruneMetricsCommand.php similarity index 100% rename from php/php/src/Mcp/Console/Commands/PruneMetricsCommand.php rename to php/src/Mcp/Console/Commands/PruneMetricsCommand.php diff --git a/php/php/src/Mcp/Console/Commands/VerifyAuditLogCommand.php b/php/src/Mcp/Console/Commands/VerifyAuditLogCommand.php similarity index 100% rename from php/php/src/Mcp/Console/Commands/VerifyAuditLogCommand.php rename to php/src/Mcp/Console/Commands/VerifyAuditLogCommand.php diff --git a/php/php/src/Mcp/Context/WorkspaceContext.php b/php/src/Mcp/Context/WorkspaceContext.php similarity index 100% rename from php/php/src/Mcp/Context/WorkspaceContext.php rename to php/src/Mcp/Context/WorkspaceContext.php diff --git a/php/php/src/Mcp/Controllers/McpApiController.php b/php/src/Mcp/Controllers/McpApiController.php similarity index 100% rename from php/php/src/Mcp/Controllers/McpApiController.php rename to php/src/Mcp/Controllers/McpApiController.php diff --git a/php/php/src/Mcp/DTO/ToolStats.php b/php/src/Mcp/DTO/ToolStats.php similarity index 100% rename from php/php/src/Mcp/DTO/ToolStats.php rename to php/src/Mcp/DTO/ToolStats.php diff --git a/php/php/src/Mcp/Database/Seeders/SensitiveToolSeeder.php b/php/src/Mcp/Database/Seeders/SensitiveToolSeeder.php similarity index 100% rename from php/php/src/Mcp/Database/Seeders/SensitiveToolSeeder.php rename to php/src/Mcp/Database/Seeders/SensitiveToolSeeder.php diff --git a/php/php/src/Mcp/Dependencies/DependencyType.php b/php/src/Mcp/Dependencies/DependencyType.php similarity index 100% rename from php/php/src/Mcp/Dependencies/DependencyType.php rename to php/src/Mcp/Dependencies/DependencyType.php diff --git a/php/php/src/Mcp/Dependencies/HasDependencies.php b/php/src/Mcp/Dependencies/HasDependencies.php similarity index 100% rename from php/php/src/Mcp/Dependencies/HasDependencies.php rename to php/src/Mcp/Dependencies/HasDependencies.php diff --git a/php/php/src/Mcp/Dependencies/ToolDependency.php b/php/src/Mcp/Dependencies/ToolDependency.php similarity index 100% rename from php/php/src/Mcp/Dependencies/ToolDependency.php rename to php/src/Mcp/Dependencies/ToolDependency.php diff --git a/php/php/src/Mcp/Events/ToolExecuted.php b/php/src/Mcp/Events/ToolExecuted.php similarity index 100% rename from php/php/src/Mcp/Events/ToolExecuted.php rename to php/src/Mcp/Events/ToolExecuted.php diff --git a/php/php/src/Mcp/Exceptions/CircuitOpenException.php b/php/src/Mcp/Exceptions/CircuitOpenException.php similarity index 100% rename from php/php/src/Mcp/Exceptions/CircuitOpenException.php rename to php/src/Mcp/Exceptions/CircuitOpenException.php diff --git a/php/php/src/Mcp/Exceptions/ForbiddenQueryException.php b/php/src/Mcp/Exceptions/ForbiddenQueryException.php similarity index 100% rename from php/php/src/Mcp/Exceptions/ForbiddenQueryException.php rename to php/src/Mcp/Exceptions/ForbiddenQueryException.php diff --git a/php/php/src/Mcp/Exceptions/MissingDependencyException.php b/php/src/Mcp/Exceptions/MissingDependencyException.php similarity index 100% rename from php/php/src/Mcp/Exceptions/MissingDependencyException.php rename to php/src/Mcp/Exceptions/MissingDependencyException.php diff --git a/php/php/src/Mcp/Exceptions/MissingWorkspaceContextException.php b/php/src/Mcp/Exceptions/MissingWorkspaceContextException.php similarity index 100% rename from php/php/src/Mcp/Exceptions/MissingWorkspaceContextException.php rename to php/src/Mcp/Exceptions/MissingWorkspaceContextException.php diff --git a/php/php/src/Mcp/Exceptions/QueryTimeoutException.php b/php/src/Mcp/Exceptions/QueryTimeoutException.php similarity index 100% rename from php/php/src/Mcp/Exceptions/QueryTimeoutException.php rename to php/src/Mcp/Exceptions/QueryTimeoutException.php diff --git a/php/php/src/Mcp/Exceptions/ResultSizeLimitException.php b/php/src/Mcp/Exceptions/ResultSizeLimitException.php similarity index 100% rename from php/php/src/Mcp/Exceptions/ResultSizeLimitException.php rename to php/src/Mcp/Exceptions/ResultSizeLimitException.php diff --git a/php/php/src/Mcp/Lang/en_GB/mcp.php b/php/src/Mcp/Lang/en_GB/mcp.php similarity index 100% rename from php/php/src/Mcp/Lang/en_GB/mcp.php rename to php/src/Mcp/Lang/en_GB/mcp.php diff --git a/php/php/src/Mcp/Listeners/RecordToolExecution.php b/php/src/Mcp/Listeners/RecordToolExecution.php similarity index 100% rename from php/php/src/Mcp/Listeners/RecordToolExecution.php rename to php/src/Mcp/Listeners/RecordToolExecution.php diff --git a/php/php/src/Mcp/Middleware/CheckMcpQuota.php b/php/src/Mcp/Middleware/CheckMcpQuota.php similarity index 100% rename from php/php/src/Mcp/Middleware/CheckMcpQuota.php rename to php/src/Mcp/Middleware/CheckMcpQuota.php diff --git a/php/php/src/Mcp/Middleware/McpApiKeyAuth.php b/php/src/Mcp/Middleware/McpApiKeyAuth.php similarity index 100% rename from php/php/src/Mcp/Middleware/McpApiKeyAuth.php rename to php/src/Mcp/Middleware/McpApiKeyAuth.php diff --git a/php/php/src/Mcp/Middleware/McpAuthenticate.php b/php/src/Mcp/Middleware/McpAuthenticate.php similarity index 100% rename from php/php/src/Mcp/Middleware/McpAuthenticate.php rename to php/src/Mcp/Middleware/McpAuthenticate.php diff --git a/php/php/src/Mcp/Middleware/ValidateToolDependencies.php b/php/src/Mcp/Middleware/ValidateToolDependencies.php similarity index 100% rename from php/php/src/Mcp/Middleware/ValidateToolDependencies.php rename to php/src/Mcp/Middleware/ValidateToolDependencies.php diff --git a/php/php/src/Mcp/Middleware/ValidateWorkspaceContext.php b/php/src/Mcp/Middleware/ValidateWorkspaceContext.php similarity index 100% rename from php/php/src/Mcp/Middleware/ValidateWorkspaceContext.php rename to php/src/Mcp/Middleware/ValidateWorkspaceContext.php diff --git a/php/php/src/Mcp/Migrations/2026_01_07_004936_create_mcp_api_requests_table.php b/php/src/Mcp/Migrations/2026_01_07_004936_create_mcp_api_requests_table.php similarity index 100% rename from php/php/src/Mcp/Migrations/2026_01_07_004936_create_mcp_api_requests_table.php rename to php/src/Mcp/Migrations/2026_01_07_004936_create_mcp_api_requests_table.php diff --git a/php/php/src/Mcp/Migrations/2026_01_26_000001_create_mcp_tool_metrics_table.php b/php/src/Mcp/Migrations/2026_01_26_000001_create_mcp_tool_metrics_table.php similarity index 100% rename from php/php/src/Mcp/Migrations/2026_01_26_000001_create_mcp_tool_metrics_table.php rename to php/src/Mcp/Migrations/2026_01_26_000001_create_mcp_tool_metrics_table.php diff --git a/php/php/src/Mcp/Migrations/2026_01_26_000002_create_mcp_usage_quotas_table.php b/php/src/Mcp/Migrations/2026_01_26_000002_create_mcp_usage_quotas_table.php similarity index 100% rename from php/php/src/Mcp/Migrations/2026_01_26_000002_create_mcp_usage_quotas_table.php rename to php/src/Mcp/Migrations/2026_01_26_000002_create_mcp_usage_quotas_table.php diff --git a/php/php/src/Mcp/Migrations/2026_01_26_000003_create_mcp_audit_logs_table.php b/php/src/Mcp/Migrations/2026_01_26_000003_create_mcp_audit_logs_table.php similarity index 100% rename from php/php/src/Mcp/Migrations/2026_01_26_000003_create_mcp_audit_logs_table.php rename to php/src/Mcp/Migrations/2026_01_26_000003_create_mcp_audit_logs_table.php diff --git a/php/php/src/Mcp/Migrations/2026_01_26_000004_create_mcp_tool_versions_table.php b/php/src/Mcp/Migrations/2026_01_26_000004_create_mcp_tool_versions_table.php similarity index 100% rename from php/php/src/Mcp/Migrations/2026_01_26_000004_create_mcp_tool_versions_table.php rename to php/src/Mcp/Migrations/2026_01_26_000004_create_mcp_tool_versions_table.php diff --git a/php/php/src/Mcp/Models/McpApiRequest.php b/php/src/Mcp/Models/McpApiRequest.php similarity index 100% rename from php/php/src/Mcp/Models/McpApiRequest.php rename to php/src/Mcp/Models/McpApiRequest.php diff --git a/php/php/src/Mcp/Models/McpAuditLog.php b/php/src/Mcp/Models/McpAuditLog.php similarity index 100% rename from php/php/src/Mcp/Models/McpAuditLog.php rename to php/src/Mcp/Models/McpAuditLog.php diff --git a/php/php/src/Mcp/Models/McpSensitiveTool.php b/php/src/Mcp/Models/McpSensitiveTool.php similarity index 100% rename from php/php/src/Mcp/Models/McpSensitiveTool.php rename to php/src/Mcp/Models/McpSensitiveTool.php diff --git a/php/php/src/Mcp/Models/McpToolCall.php b/php/src/Mcp/Models/McpToolCall.php similarity index 100% rename from php/php/src/Mcp/Models/McpToolCall.php rename to php/src/Mcp/Models/McpToolCall.php diff --git a/php/php/src/Mcp/Models/McpToolCallStat.php b/php/src/Mcp/Models/McpToolCallStat.php similarity index 100% rename from php/php/src/Mcp/Models/McpToolCallStat.php rename to php/src/Mcp/Models/McpToolCallStat.php diff --git a/php/php/src/Mcp/Models/McpToolVersion.php b/php/src/Mcp/Models/McpToolVersion.php similarity index 100% rename from php/php/src/Mcp/Models/McpToolVersion.php rename to php/src/Mcp/Models/McpToolVersion.php diff --git a/php/php/src/Mcp/Models/McpUsageQuota.php b/php/src/Mcp/Models/McpUsageQuota.php similarity index 100% rename from php/php/src/Mcp/Models/McpUsageQuota.php rename to php/src/Mcp/Models/McpUsageQuota.php diff --git a/php/php/src/Mcp/Models/ToolMetric.php b/php/src/Mcp/Models/ToolMetric.php similarity index 100% rename from php/php/src/Mcp/Models/ToolMetric.php rename to php/src/Mcp/Models/ToolMetric.php diff --git a/php/php/src/Mcp/Resources/AppConfig.php b/php/src/Mcp/Resources/AppConfig.php similarity index 100% rename from php/php/src/Mcp/Resources/AppConfig.php rename to php/src/Mcp/Resources/AppConfig.php diff --git a/php/php/src/Mcp/Resources/ContentResource.php b/php/src/Mcp/Resources/ContentResource.php similarity index 100% rename from php/php/src/Mcp/Resources/ContentResource.php rename to php/src/Mcp/Resources/ContentResource.php diff --git a/php/php/src/Mcp/Resources/DatabaseSchema.php b/php/src/Mcp/Resources/DatabaseSchema.php similarity index 100% rename from php/php/src/Mcp/Resources/DatabaseSchema.php rename to php/src/Mcp/Resources/DatabaseSchema.php diff --git a/php/php/src/Mcp/Routes/admin.php b/php/src/Mcp/Routes/admin.php similarity index 100% rename from php/php/src/Mcp/Routes/admin.php rename to php/src/Mcp/Routes/admin.php diff --git a/php/php/src/Mcp/Services/AgentSessionService.php b/php/src/Mcp/Services/AgentSessionService.php similarity index 100% rename from php/php/src/Mcp/Services/AgentSessionService.php rename to php/src/Mcp/Services/AgentSessionService.php diff --git a/php/php/src/Mcp/Services/AgentToolRegistry.php b/php/src/Mcp/Services/AgentToolRegistry.php similarity index 100% rename from php/php/src/Mcp/Services/AgentToolRegistry.php rename to php/src/Mcp/Services/AgentToolRegistry.php diff --git a/php/php/src/Mcp/Services/AuditLogService.php b/php/src/Mcp/Services/AuditLogService.php similarity index 100% rename from php/php/src/Mcp/Services/AuditLogService.php rename to php/src/Mcp/Services/AuditLogService.php diff --git a/php/php/src/Mcp/Services/CircuitBreaker.php b/php/src/Mcp/Services/CircuitBreaker.php similarity index 100% rename from php/php/src/Mcp/Services/CircuitBreaker.php rename to php/src/Mcp/Services/CircuitBreaker.php diff --git a/php/php/src/Mcp/Services/DataRedactor.php b/php/src/Mcp/Services/DataRedactor.php similarity index 100% rename from php/php/src/Mcp/Services/DataRedactor.php rename to php/src/Mcp/Services/DataRedactor.php diff --git a/php/php/src/Mcp/Services/McpHealthService.php b/php/src/Mcp/Services/McpHealthService.php similarity index 100% rename from php/php/src/Mcp/Services/McpHealthService.php rename to php/src/Mcp/Services/McpHealthService.php diff --git a/php/php/src/Mcp/Services/McpMetricsService.php b/php/src/Mcp/Services/McpMetricsService.php similarity index 100% rename from php/php/src/Mcp/Services/McpMetricsService.php rename to php/src/Mcp/Services/McpMetricsService.php diff --git a/php/php/src/Mcp/Services/McpQuotaService.php b/php/src/Mcp/Services/McpQuotaService.php similarity index 100% rename from php/php/src/Mcp/Services/McpQuotaService.php rename to php/src/Mcp/Services/McpQuotaService.php diff --git a/php/php/src/Mcp/Services/McpWebhookDispatcher.php b/php/src/Mcp/Services/McpWebhookDispatcher.php similarity index 100% rename from php/php/src/Mcp/Services/McpWebhookDispatcher.php rename to php/src/Mcp/Services/McpWebhookDispatcher.php diff --git a/php/php/src/Mcp/Services/OpenApiGenerator.php b/php/src/Mcp/Services/OpenApiGenerator.php similarity index 100% rename from php/php/src/Mcp/Services/OpenApiGenerator.php rename to php/src/Mcp/Services/OpenApiGenerator.php diff --git a/php/php/src/Mcp/Services/QueryAuditService.php b/php/src/Mcp/Services/QueryAuditService.php similarity index 100% rename from php/php/src/Mcp/Services/QueryAuditService.php rename to php/src/Mcp/Services/QueryAuditService.php diff --git a/php/php/src/Mcp/Services/QueryExecutionService.php b/php/src/Mcp/Services/QueryExecutionService.php similarity index 100% rename from php/php/src/Mcp/Services/QueryExecutionService.php rename to php/src/Mcp/Services/QueryExecutionService.php diff --git a/php/php/src/Mcp/Services/SqlQueryValidator.php b/php/src/Mcp/Services/SqlQueryValidator.php similarity index 100% rename from php/php/src/Mcp/Services/SqlQueryValidator.php rename to php/src/Mcp/Services/SqlQueryValidator.php diff --git a/php/php/src/Mcp/Services/ToolAnalyticsService.php b/php/src/Mcp/Services/ToolAnalyticsService.php similarity index 100% rename from php/php/src/Mcp/Services/ToolAnalyticsService.php rename to php/src/Mcp/Services/ToolAnalyticsService.php diff --git a/php/php/src/Mcp/Services/ToolDependencyService.php b/php/src/Mcp/Services/ToolDependencyService.php similarity index 100% rename from php/php/src/Mcp/Services/ToolDependencyService.php rename to php/src/Mcp/Services/ToolDependencyService.php diff --git a/php/php/src/Mcp/Services/ToolRateLimiter.php b/php/src/Mcp/Services/ToolRateLimiter.php similarity index 100% rename from php/php/src/Mcp/Services/ToolRateLimiter.php rename to php/src/Mcp/Services/ToolRateLimiter.php diff --git a/php/php/src/Mcp/Services/ToolRegistry.php b/php/src/Mcp/Services/ToolRegistry.php similarity index 100% rename from php/php/src/Mcp/Services/ToolRegistry.php rename to php/src/Mcp/Services/ToolRegistry.php diff --git a/php/php/src/Mcp/Services/ToolVersionService.php b/php/src/Mcp/Services/ToolVersionService.php similarity index 100% rename from php/php/src/Mcp/Services/ToolVersionService.php rename to php/src/Mcp/Services/ToolVersionService.php diff --git a/php/php/src/Mcp/Tests/Unit/McpQuotaServiceTest.php b/php/src/Mcp/Tests/Unit/McpQuotaServiceTest.php similarity index 100% rename from php/php/src/Mcp/Tests/Unit/McpQuotaServiceTest.php rename to php/src/Mcp/Tests/Unit/McpQuotaServiceTest.php diff --git a/php/php/src/Mcp/Tests/Unit/QueryAuditServiceTest.php b/php/src/Mcp/Tests/Unit/QueryAuditServiceTest.php similarity index 100% rename from php/php/src/Mcp/Tests/Unit/QueryAuditServiceTest.php rename to php/src/Mcp/Tests/Unit/QueryAuditServiceTest.php diff --git a/php/php/src/Mcp/Tests/Unit/QueryExecutionServiceTest.php b/php/src/Mcp/Tests/Unit/QueryExecutionServiceTest.php similarity index 100% rename from php/php/src/Mcp/Tests/Unit/QueryExecutionServiceTest.php rename to php/src/Mcp/Tests/Unit/QueryExecutionServiceTest.php diff --git a/php/php/src/Mcp/Tests/Unit/ToolAnalyticsServiceTest.php b/php/src/Mcp/Tests/Unit/ToolAnalyticsServiceTest.php similarity index 100% rename from php/php/src/Mcp/Tests/Unit/ToolAnalyticsServiceTest.php rename to php/src/Mcp/Tests/Unit/ToolAnalyticsServiceTest.php diff --git a/php/php/src/Mcp/Tests/Unit/ToolDependencyServiceTest.php b/php/src/Mcp/Tests/Unit/ToolDependencyServiceTest.php similarity index 100% rename from php/php/src/Mcp/Tests/Unit/ToolDependencyServiceTest.php rename to php/src/Mcp/Tests/Unit/ToolDependencyServiceTest.php diff --git a/php/php/src/Mcp/Tests/Unit/ToolVersionServiceTest.php b/php/src/Mcp/Tests/Unit/ToolVersionServiceTest.php similarity index 100% rename from php/php/src/Mcp/Tests/Unit/ToolVersionServiceTest.php rename to php/src/Mcp/Tests/Unit/ToolVersionServiceTest.php diff --git a/php/php/src/Mcp/Tests/Unit/ValidateWorkspaceContextMiddlewareTest.php b/php/src/Mcp/Tests/Unit/ValidateWorkspaceContextMiddlewareTest.php similarity index 100% rename from php/php/src/Mcp/Tests/Unit/ValidateWorkspaceContextMiddlewareTest.php rename to php/src/Mcp/Tests/Unit/ValidateWorkspaceContextMiddlewareTest.php diff --git a/php/php/src/Mcp/Tests/Unit/WorkspaceContextSecurityTest.php b/php/src/Mcp/Tests/Unit/WorkspaceContextSecurityTest.php similarity index 100% rename from php/php/src/Mcp/Tests/Unit/WorkspaceContextSecurityTest.php rename to php/src/Mcp/Tests/Unit/WorkspaceContextSecurityTest.php diff --git a/php/php/src/Mcp/Tests/UseCase/ApiKeyManagerBasic.php b/php/src/Mcp/Tests/UseCase/ApiKeyManagerBasic.php similarity index 100% rename from php/php/src/Mcp/Tests/UseCase/ApiKeyManagerBasic.php rename to php/src/Mcp/Tests/UseCase/ApiKeyManagerBasic.php diff --git a/php/php/src/Mcp/Tools/Commerce/CreateCoupon.php b/php/src/Mcp/Tools/Commerce/CreateCoupon.php similarity index 100% rename from php/php/src/Mcp/Tools/Commerce/CreateCoupon.php rename to php/src/Mcp/Tools/Commerce/CreateCoupon.php diff --git a/php/php/src/Mcp/Tools/Commerce/GetBillingStatus.php b/php/src/Mcp/Tools/Commerce/GetBillingStatus.php similarity index 100% rename from php/php/src/Mcp/Tools/Commerce/GetBillingStatus.php rename to php/src/Mcp/Tools/Commerce/GetBillingStatus.php diff --git a/php/php/src/Mcp/Tools/Commerce/ListInvoices.php b/php/src/Mcp/Tools/Commerce/ListInvoices.php similarity index 100% rename from php/php/src/Mcp/Tools/Commerce/ListInvoices.php rename to php/src/Mcp/Tools/Commerce/ListInvoices.php diff --git a/php/php/src/Mcp/Tools/Commerce/UpgradePlan.php b/php/src/Mcp/Tools/Commerce/UpgradePlan.php similarity index 100% rename from php/php/src/Mcp/Tools/Commerce/UpgradePlan.php rename to php/src/Mcp/Tools/Commerce/UpgradePlan.php diff --git a/php/php/src/Mcp/Tools/Concerns/RequiresWorkspaceContext.php b/php/src/Mcp/Tools/Concerns/RequiresWorkspaceContext.php similarity index 100% rename from php/php/src/Mcp/Tools/Concerns/RequiresWorkspaceContext.php rename to php/src/Mcp/Tools/Concerns/RequiresWorkspaceContext.php diff --git a/php/php/src/Mcp/Tools/Concerns/ValidatesDependencies.php b/php/src/Mcp/Tools/Concerns/ValidatesDependencies.php similarity index 100% rename from php/php/src/Mcp/Tools/Concerns/ValidatesDependencies.php rename to php/src/Mcp/Tools/Concerns/ValidatesDependencies.php diff --git a/php/php/src/Mcp/Tools/ContentTools.php b/php/src/Mcp/Tools/ContentTools.php similarity index 100% rename from php/php/src/Mcp/Tools/ContentTools.php rename to php/src/Mcp/Tools/ContentTools.php diff --git a/php/php/src/Mcp/Tools/DescribeTable.php b/php/src/Mcp/Tools/DescribeTable.php similarity index 100% rename from php/php/src/Mcp/Tools/DescribeTable.php rename to php/src/Mcp/Tools/DescribeTable.php diff --git a/php/php/src/Mcp/Tools/GetStats.php b/php/src/Mcp/Tools/GetStats.php similarity index 100% rename from php/php/src/Mcp/Tools/GetStats.php rename to php/src/Mcp/Tools/GetStats.php diff --git a/php/php/src/Mcp/Tools/ListRoutes.php b/php/src/Mcp/Tools/ListRoutes.php similarity index 100% rename from php/php/src/Mcp/Tools/ListRoutes.php rename to php/src/Mcp/Tools/ListRoutes.php diff --git a/php/php/src/Mcp/Tools/ListSites.php b/php/src/Mcp/Tools/ListSites.php similarity index 100% rename from php/php/src/Mcp/Tools/ListSites.php rename to php/src/Mcp/Tools/ListSites.php diff --git a/php/php/src/Mcp/Tools/ListTables.php b/php/src/Mcp/Tools/ListTables.php similarity index 100% rename from php/php/src/Mcp/Tools/ListTables.php rename to php/src/Mcp/Tools/ListTables.php diff --git a/php/php/src/Mcp/Tools/QueryDatabase.php b/php/src/Mcp/Tools/QueryDatabase.php similarity index 100% rename from php/php/src/Mcp/Tools/QueryDatabase.php rename to php/src/Mcp/Tools/QueryDatabase.php diff --git a/php/php/src/Mcp/View/Blade/admin/analytics/dashboard.blade.php b/php/src/Mcp/View/Blade/admin/analytics/dashboard.blade.php similarity index 100% rename from php/php/src/Mcp/View/Blade/admin/analytics/dashboard.blade.php rename to php/src/Mcp/View/Blade/admin/analytics/dashboard.blade.php diff --git a/php/php/src/Mcp/View/Blade/admin/analytics/partials/stats-card.blade.php b/php/src/Mcp/View/Blade/admin/analytics/partials/stats-card.blade.php similarity index 100% rename from php/php/src/Mcp/View/Blade/admin/analytics/partials/stats-card.blade.php rename to php/src/Mcp/View/Blade/admin/analytics/partials/stats-card.blade.php diff --git a/php/php/src/Mcp/View/Blade/admin/analytics/partials/tool-table.blade.php b/php/src/Mcp/View/Blade/admin/analytics/partials/tool-table.blade.php similarity index 100% rename from php/php/src/Mcp/View/Blade/admin/analytics/partials/tool-table.blade.php rename to php/src/Mcp/View/Blade/admin/analytics/partials/tool-table.blade.php diff --git a/php/php/src/Mcp/View/Blade/admin/analytics/tool-detail.blade.php b/php/src/Mcp/View/Blade/admin/analytics/tool-detail.blade.php similarity index 100% rename from php/php/src/Mcp/View/Blade/admin/analytics/tool-detail.blade.php rename to php/src/Mcp/View/Blade/admin/analytics/tool-detail.blade.php diff --git a/php/php/src/Mcp/View/Blade/admin/api-key-manager.blade.php b/php/src/Mcp/View/Blade/admin/api-key-manager.blade.php similarity index 100% rename from php/php/src/Mcp/View/Blade/admin/api-key-manager.blade.php rename to php/src/Mcp/View/Blade/admin/api-key-manager.blade.php diff --git a/php/php/src/Mcp/View/Blade/admin/audit-log-viewer.blade.php b/php/src/Mcp/View/Blade/admin/audit-log-viewer.blade.php similarity index 100% rename from php/php/src/Mcp/View/Blade/admin/audit-log-viewer.blade.php rename to php/src/Mcp/View/Blade/admin/audit-log-viewer.blade.php diff --git a/php/php/src/Mcp/View/Blade/admin/mcp-playground.blade.php b/php/src/Mcp/View/Blade/admin/mcp-playground.blade.php similarity index 100% rename from php/php/src/Mcp/View/Blade/admin/mcp-playground.blade.php rename to php/src/Mcp/View/Blade/admin/mcp-playground.blade.php diff --git a/php/php/src/Mcp/View/Blade/admin/playground.blade.php b/php/src/Mcp/View/Blade/admin/playground.blade.php similarity index 100% rename from php/php/src/Mcp/View/Blade/admin/playground.blade.php rename to php/src/Mcp/View/Blade/admin/playground.blade.php diff --git a/php/php/src/Mcp/View/Blade/admin/quota-usage.blade.php b/php/src/Mcp/View/Blade/admin/quota-usage.blade.php similarity index 100% rename from php/php/src/Mcp/View/Blade/admin/quota-usage.blade.php rename to php/src/Mcp/View/Blade/admin/quota-usage.blade.php diff --git a/php/php/src/Mcp/View/Blade/admin/request-log.blade.php b/php/src/Mcp/View/Blade/admin/request-log.blade.php similarity index 100% rename from php/php/src/Mcp/View/Blade/admin/request-log.blade.php rename to php/src/Mcp/View/Blade/admin/request-log.blade.php diff --git a/php/php/src/Mcp/View/Blade/admin/tool-version-manager.blade.php b/php/src/Mcp/View/Blade/admin/tool-version-manager.blade.php similarity index 100% rename from php/php/src/Mcp/View/Blade/admin/tool-version-manager.blade.php rename to php/src/Mcp/View/Blade/admin/tool-version-manager.blade.php diff --git a/php/php/src/Mcp/View/Modal/Admin/ApiKeyManager.php b/php/src/Mcp/View/Modal/Admin/ApiKeyManager.php similarity index 100% rename from php/php/src/Mcp/View/Modal/Admin/ApiKeyManager.php rename to php/src/Mcp/View/Modal/Admin/ApiKeyManager.php diff --git a/php/php/src/Mcp/View/Modal/Admin/AuditLogViewer.php b/php/src/Mcp/View/Modal/Admin/AuditLogViewer.php similarity index 100% rename from php/php/src/Mcp/View/Modal/Admin/AuditLogViewer.php rename to php/src/Mcp/View/Modal/Admin/AuditLogViewer.php diff --git a/php/php/src/Mcp/View/Modal/Admin/McpPlayground.php b/php/src/Mcp/View/Modal/Admin/McpPlayground.php similarity index 100% rename from php/php/src/Mcp/View/Modal/Admin/McpPlayground.php rename to php/src/Mcp/View/Modal/Admin/McpPlayground.php diff --git a/php/php/src/Mcp/View/Modal/Admin/Playground.php b/php/src/Mcp/View/Modal/Admin/Playground.php similarity index 100% rename from php/php/src/Mcp/View/Modal/Admin/Playground.php rename to php/src/Mcp/View/Modal/Admin/Playground.php diff --git a/php/php/src/Mcp/View/Modal/Admin/QuotaUsage.php b/php/src/Mcp/View/Modal/Admin/QuotaUsage.php similarity index 100% rename from php/php/src/Mcp/View/Modal/Admin/QuotaUsage.php rename to php/src/Mcp/View/Modal/Admin/QuotaUsage.php diff --git a/php/php/src/Mcp/View/Modal/Admin/RequestLog.php b/php/src/Mcp/View/Modal/Admin/RequestLog.php similarity index 100% rename from php/php/src/Mcp/View/Modal/Admin/RequestLog.php rename to php/src/Mcp/View/Modal/Admin/RequestLog.php diff --git a/php/php/src/Mcp/View/Modal/Admin/ToolAnalyticsDashboard.php b/php/src/Mcp/View/Modal/Admin/ToolAnalyticsDashboard.php similarity index 100% rename from php/php/src/Mcp/View/Modal/Admin/ToolAnalyticsDashboard.php rename to php/src/Mcp/View/Modal/Admin/ToolAnalyticsDashboard.php diff --git a/php/php/src/Mcp/View/Modal/Admin/ToolAnalyticsDetail.php b/php/src/Mcp/View/Modal/Admin/ToolAnalyticsDetail.php similarity index 100% rename from php/php/src/Mcp/View/Modal/Admin/ToolAnalyticsDetail.php rename to php/src/Mcp/View/Modal/Admin/ToolAnalyticsDetail.php diff --git a/php/php/src/Mcp/View/Modal/Admin/ToolVersionManager.php b/php/src/Mcp/View/Modal/Admin/ToolVersionManager.php similarity index 100% rename from php/php/src/Mcp/View/Modal/Admin/ToolVersionManager.php rename to php/src/Mcp/View/Modal/Admin/ToolVersionManager.php diff --git a/php/php/src/Website/Mcp/Boot.php b/php/src/Website/Mcp/Boot.php similarity index 100% rename from php/php/src/Website/Mcp/Boot.php rename to php/src/Website/Mcp/Boot.php diff --git a/php/php/src/Website/Mcp/Controllers/McpRegistryController.php b/php/src/Website/Mcp/Controllers/McpRegistryController.php similarity index 100% rename from php/php/src/Website/Mcp/Controllers/McpRegistryController.php rename to php/src/Website/Mcp/Controllers/McpRegistryController.php diff --git a/php/php/src/Website/Mcp/Routes/web.php b/php/src/Website/Mcp/Routes/web.php similarity index 100% rename from php/php/src/Website/Mcp/Routes/web.php rename to php/src/Website/Mcp/Routes/web.php diff --git a/php/php/src/Website/Mcp/View/Blade/web/analytics.blade.php b/php/src/Website/Mcp/View/Blade/web/analytics.blade.php similarity index 100% rename from php/php/src/Website/Mcp/View/Blade/web/analytics.blade.php rename to php/src/Website/Mcp/View/Blade/web/analytics.blade.php diff --git a/php/php/src/Website/Mcp/View/Blade/web/api-explorer.blade.php b/php/src/Website/Mcp/View/Blade/web/api-explorer.blade.php similarity index 100% rename from php/php/src/Website/Mcp/View/Blade/web/api-explorer.blade.php rename to php/src/Website/Mcp/View/Blade/web/api-explorer.blade.php diff --git a/php/php/src/Website/Mcp/View/Blade/web/api-key-manager.blade.php b/php/src/Website/Mcp/View/Blade/web/api-key-manager.blade.php similarity index 100% rename from php/php/src/Website/Mcp/View/Blade/web/api-key-manager.blade.php rename to php/src/Website/Mcp/View/Blade/web/api-key-manager.blade.php diff --git a/php/php/src/Website/Mcp/View/Blade/web/connect.blade.php b/php/src/Website/Mcp/View/Blade/web/connect.blade.php similarity index 100% rename from php/php/src/Website/Mcp/View/Blade/web/connect.blade.php rename to php/src/Website/Mcp/View/Blade/web/connect.blade.php diff --git a/php/php/src/Website/Mcp/View/Blade/web/dashboard.blade.php b/php/src/Website/Mcp/View/Blade/web/dashboard.blade.php similarity index 100% rename from php/php/src/Website/Mcp/View/Blade/web/dashboard.blade.php rename to php/src/Website/Mcp/View/Blade/web/dashboard.blade.php diff --git a/php/php/src/Website/Mcp/View/Blade/web/index.blade.php b/php/src/Website/Mcp/View/Blade/web/index.blade.php similarity index 100% rename from php/php/src/Website/Mcp/View/Blade/web/index.blade.php rename to php/src/Website/Mcp/View/Blade/web/index.blade.php diff --git a/php/php/src/Website/Mcp/View/Blade/web/keys.blade.php b/php/src/Website/Mcp/View/Blade/web/keys.blade.php similarity index 100% rename from php/php/src/Website/Mcp/View/Blade/web/keys.blade.php rename to php/src/Website/Mcp/View/Blade/web/keys.blade.php diff --git a/php/php/src/Website/Mcp/View/Blade/web/landing.blade.php b/php/src/Website/Mcp/View/Blade/web/landing.blade.php similarity index 100% rename from php/php/src/Website/Mcp/View/Blade/web/landing.blade.php rename to php/src/Website/Mcp/View/Blade/web/landing.blade.php diff --git a/php/php/src/Website/Mcp/View/Blade/web/mcp-metrics.blade.php b/php/src/Website/Mcp/View/Blade/web/mcp-metrics.blade.php similarity index 100% rename from php/php/src/Website/Mcp/View/Blade/web/mcp-metrics.blade.php rename to php/src/Website/Mcp/View/Blade/web/mcp-metrics.blade.php diff --git a/php/php/src/Website/Mcp/View/Blade/web/mcp-playground.blade.php b/php/src/Website/Mcp/View/Blade/web/mcp-playground.blade.php similarity index 100% rename from php/php/src/Website/Mcp/View/Blade/web/mcp-playground.blade.php rename to php/src/Website/Mcp/View/Blade/web/mcp-playground.blade.php diff --git a/php/php/src/Website/Mcp/View/Blade/web/playground.blade.php b/php/src/Website/Mcp/View/Blade/web/playground.blade.php similarity index 100% rename from php/php/src/Website/Mcp/View/Blade/web/playground.blade.php rename to php/src/Website/Mcp/View/Blade/web/playground.blade.php diff --git a/php/php/src/Website/Mcp/View/Blade/web/request-log.blade.php b/php/src/Website/Mcp/View/Blade/web/request-log.blade.php similarity index 100% rename from php/php/src/Website/Mcp/View/Blade/web/request-log.blade.php rename to php/src/Website/Mcp/View/Blade/web/request-log.blade.php diff --git a/php/php/src/Website/Mcp/View/Blade/web/show.blade.php b/php/src/Website/Mcp/View/Blade/web/show.blade.php similarity index 100% rename from php/php/src/Website/Mcp/View/Blade/web/show.blade.php rename to php/src/Website/Mcp/View/Blade/web/show.blade.php diff --git a/php/php/src/Website/Mcp/View/Blade/web/unified-search.blade.php b/php/src/Website/Mcp/View/Blade/web/unified-search.blade.php similarity index 100% rename from php/php/src/Website/Mcp/View/Blade/web/unified-search.blade.php rename to php/src/Website/Mcp/View/Blade/web/unified-search.blade.php diff --git a/php/php/src/Website/Mcp/View/Modal/ApiExplorer.php b/php/src/Website/Mcp/View/Modal/ApiExplorer.php similarity index 100% rename from php/php/src/Website/Mcp/View/Modal/ApiExplorer.php rename to php/src/Website/Mcp/View/Modal/ApiExplorer.php diff --git a/php/php/src/Website/Mcp/View/Modal/ApiKeyManager.php b/php/src/Website/Mcp/View/Modal/ApiKeyManager.php similarity index 100% rename from php/php/src/Website/Mcp/View/Modal/ApiKeyManager.php rename to php/src/Website/Mcp/View/Modal/ApiKeyManager.php diff --git a/php/php/src/Website/Mcp/View/Modal/Dashboard.php b/php/src/Website/Mcp/View/Modal/Dashboard.php similarity index 100% rename from php/php/src/Website/Mcp/View/Modal/Dashboard.php rename to php/src/Website/Mcp/View/Modal/Dashboard.php diff --git a/php/php/src/Website/Mcp/View/Modal/McpMetrics.php b/php/src/Website/Mcp/View/Modal/McpMetrics.php similarity index 100% rename from php/php/src/Website/Mcp/View/Modal/McpMetrics.php rename to php/src/Website/Mcp/View/Modal/McpMetrics.php diff --git a/php/php/src/Website/Mcp/View/Modal/McpPlayground.php b/php/src/Website/Mcp/View/Modal/McpPlayground.php similarity index 100% rename from php/php/src/Website/Mcp/View/Modal/McpPlayground.php rename to php/src/Website/Mcp/View/Modal/McpPlayground.php diff --git a/php/php/src/Website/Mcp/View/Modal/Playground.php b/php/src/Website/Mcp/View/Modal/Playground.php similarity index 100% rename from php/php/src/Website/Mcp/View/Modal/Playground.php rename to php/src/Website/Mcp/View/Modal/Playground.php diff --git a/php/php/src/Website/Mcp/View/Modal/RequestLog.php b/php/src/Website/Mcp/View/Modal/RequestLog.php similarity index 100% rename from php/php/src/Website/Mcp/View/Modal/RequestLog.php rename to php/src/Website/Mcp/View/Modal/RequestLog.php diff --git a/php/php/src/Website/Mcp/View/Modal/UnifiedSearch.php b/php/src/Website/Mcp/View/Modal/UnifiedSearch.php similarity index 100% rename from php/php/src/Website/Mcp/View/Modal/UnifiedSearch.php rename to php/src/Website/Mcp/View/Modal/UnifiedSearch.php diff --git a/php/php/storage/app/.gitignore b/php/storage/app/.gitignore similarity index 100% rename from php/php/storage/app/.gitignore rename to php/storage/app/.gitignore diff --git a/php/php/storage/app/public/.gitignore b/php/storage/app/public/.gitignore similarity index 100% rename from php/php/storage/app/public/.gitignore rename to php/storage/app/public/.gitignore diff --git a/php/php/storage/framework/.gitignore b/php/storage/framework/.gitignore similarity index 100% rename from php/php/storage/framework/.gitignore rename to php/storage/framework/.gitignore diff --git a/php/php/storage/framework/cache/.gitignore b/php/storage/framework/cache/.gitignore similarity index 100% rename from php/php/storage/framework/cache/.gitignore rename to php/storage/framework/cache/.gitignore diff --git a/php/php/storage/framework/cache/data/.gitignore b/php/storage/framework/cache/data/.gitignore similarity index 100% rename from php/php/storage/framework/cache/data/.gitignore rename to php/storage/framework/cache/data/.gitignore diff --git a/php/php/storage/framework/sessions/.gitignore b/php/storage/framework/sessions/.gitignore similarity index 100% rename from php/php/storage/framework/sessions/.gitignore rename to php/storage/framework/sessions/.gitignore diff --git a/php/php/storage/framework/testing/.gitignore b/php/storage/framework/testing/.gitignore similarity index 100% rename from php/php/storage/framework/testing/.gitignore rename to php/storage/framework/testing/.gitignore diff --git a/php/php/storage/framework/views/.gitignore b/php/storage/framework/views/.gitignore similarity index 100% rename from php/php/storage/framework/views/.gitignore rename to php/storage/framework/views/.gitignore diff --git a/php/php/storage/logs/.gitignore b/php/storage/logs/.gitignore similarity index 100% rename from php/php/storage/logs/.gitignore rename to php/storage/logs/.gitignore diff --git a/php/php/tailwind.config.js b/php/tailwind.config.js similarity index 100% rename from php/php/tailwind.config.js rename to php/tailwind.config.js diff --git a/php/php/tests/Feature/.gitkeep b/php/tests/Feature/.gitkeep similarity index 100% rename from php/php/tests/Feature/.gitkeep rename to php/tests/Feature/.gitkeep diff --git a/php/php/tests/Pest.php b/php/tests/Pest.php similarity index 100% rename from php/php/tests/Pest.php rename to php/tests/Pest.php diff --git a/php/php/tests/TestCase.php b/php/tests/TestCase.php similarity index 100% rename from php/php/tests/TestCase.php rename to php/tests/TestCase.php diff --git a/php/php/tests/Unit/.gitkeep b/php/tests/Unit/.gitkeep similarity index 100% rename from php/php/tests/Unit/.gitkeep rename to php/tests/Unit/.gitkeep diff --git a/php/php/tests/Unit/DescribeTableTest.php b/php/tests/Unit/DescribeTableTest.php similarity index 100% rename from php/php/tests/Unit/DescribeTableTest.php rename to php/tests/Unit/DescribeTableTest.php diff --git a/php/php/tests/Unit/McpResourceListTest.php b/php/tests/Unit/McpResourceListTest.php similarity index 100% rename from php/php/tests/Unit/McpResourceListTest.php rename to php/tests/Unit/McpResourceListTest.php diff --git a/php/php/tests/Unit/SqlQueryValidatorTest.php b/php/tests/Unit/SqlQueryValidatorTest.php similarity index 100% rename from php/php/tests/Unit/SqlQueryValidatorTest.php rename to php/tests/Unit/SqlQueryValidatorTest.php diff --git a/php/php/vite.config.js b/php/vite.config.js similarity index 100% rename from php/php/vite.config.js rename to php/vite.config.js From 9ea5b1b251040ae10c598bbc99fdc43a5a014796 Mon Sep 17 00:00:00 2001 From: Snider Date: Thu, 30 Apr 2026 12:38:44 +0100 Subject: [PATCH 3/6] fix(mcp): also flatten the dotfiles (.editorconfig, .env.example, .forgejo, .gemini, .github, .gitignore) that the v0.12.0 flatten missed --- php/{php => }/.editorconfig | 0 php/{php => }/.env.example | 0 php/{php => }/.forgejo/workflows/ci.yml | 0 php/{php => }/.forgejo/workflows/release.yml | 0 php/{php => }/.gemini/settings.json | 0 php/{php => }/.github/FUNDING.yml | 0 php/{php => }/.github/copilot-instructions.md | 0 php/{php => }/.github/dependabot.yml | 0 php/{php => }/.github/package-workflows/README.md | 0 php/{php => }/.github/package-workflows/ci.yml | 0 php/{php => }/.github/package-workflows/release.yml | 0 php/{php => }/.github/workflows/ci.yml | 0 php/{php => }/.github/workflows/release.yml | 0 php/{php => }/.gitignore | 0 14 files changed, 0 insertions(+), 0 deletions(-) rename php/{php => }/.editorconfig (100%) rename php/{php => }/.env.example (100%) rename php/{php => }/.forgejo/workflows/ci.yml (100%) rename php/{php => }/.forgejo/workflows/release.yml (100%) rename php/{php => }/.gemini/settings.json (100%) rename php/{php => }/.github/FUNDING.yml (100%) rename php/{php => }/.github/copilot-instructions.md (100%) rename php/{php => }/.github/dependabot.yml (100%) rename php/{php => }/.github/package-workflows/README.md (100%) rename php/{php => }/.github/package-workflows/ci.yml (100%) rename php/{php => }/.github/package-workflows/release.yml (100%) rename php/{php => }/.github/workflows/ci.yml (100%) rename php/{php => }/.github/workflows/release.yml (100%) rename php/{php => }/.gitignore (100%) diff --git a/php/php/.editorconfig b/php/.editorconfig similarity index 100% rename from php/php/.editorconfig rename to php/.editorconfig diff --git a/php/php/.env.example b/php/.env.example similarity index 100% rename from php/php/.env.example rename to php/.env.example diff --git a/php/php/.forgejo/workflows/ci.yml b/php/.forgejo/workflows/ci.yml similarity index 100% rename from php/php/.forgejo/workflows/ci.yml rename to php/.forgejo/workflows/ci.yml diff --git a/php/php/.forgejo/workflows/release.yml b/php/.forgejo/workflows/release.yml similarity index 100% rename from php/php/.forgejo/workflows/release.yml rename to php/.forgejo/workflows/release.yml diff --git a/php/php/.gemini/settings.json b/php/.gemini/settings.json similarity index 100% rename from php/php/.gemini/settings.json rename to php/.gemini/settings.json diff --git a/php/php/.github/FUNDING.yml b/php/.github/FUNDING.yml similarity index 100% rename from php/php/.github/FUNDING.yml rename to php/.github/FUNDING.yml diff --git a/php/php/.github/copilot-instructions.md b/php/.github/copilot-instructions.md similarity index 100% rename from php/php/.github/copilot-instructions.md rename to php/.github/copilot-instructions.md diff --git a/php/php/.github/dependabot.yml b/php/.github/dependabot.yml similarity index 100% rename from php/php/.github/dependabot.yml rename to php/.github/dependabot.yml diff --git a/php/php/.github/package-workflows/README.md b/php/.github/package-workflows/README.md similarity index 100% rename from php/php/.github/package-workflows/README.md rename to php/.github/package-workflows/README.md diff --git a/php/php/.github/package-workflows/ci.yml b/php/.github/package-workflows/ci.yml similarity index 100% rename from php/php/.github/package-workflows/ci.yml rename to php/.github/package-workflows/ci.yml diff --git a/php/php/.github/package-workflows/release.yml b/php/.github/package-workflows/release.yml similarity index 100% rename from php/php/.github/package-workflows/release.yml rename to php/.github/package-workflows/release.yml diff --git a/php/php/.github/workflows/ci.yml b/php/.github/workflows/ci.yml similarity index 100% rename from php/php/.github/workflows/ci.yml rename to php/.github/workflows/ci.yml diff --git a/php/php/.github/workflows/release.yml b/php/.github/workflows/release.yml similarity index 100% rename from php/php/.github/workflows/release.yml rename to php/.github/workflows/release.yml diff --git a/php/php/.gitignore b/php/.gitignore similarity index 100% rename from php/php/.gitignore rename to php/.gitignore From 21a70d1f4e80fe5a33738c98519bcc196703ac90 Mon Sep 17 00:00:00 2001 From: Snider Date: Thu, 30 Apr 2026 13:11:48 +0100 Subject: [PATCH 4/6] =?UTF-8?q?ci:=20woodpecker=20pipeline=20(Go)=20?= =?UTF-8?q?=E2=80=94=20golangci-lint/go-test=20+=20sonar.lthn.sh?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .woodpecker.yml | 37 +++++++++++++++++++++++++++++++++++++ sonar-project.properties | 8 ++++++++ 2 files changed, 45 insertions(+) create mode 100644 .woodpecker.yml create mode 100644 sonar-project.properties diff --git a/.woodpecker.yml b/.woodpecker.yml new file mode 100644 index 0000000..60358ee --- /dev/null +++ b/.woodpecker.yml @@ -0,0 +1,37 @@ +# Woodpecker CI pipeline. +# Server: ci.lthn.sh. Lint + sonar in parallel, both depend only on clone. +# sonar_token is admin-scoped on the Woodpecker server. + +when: + - event: push + branch: [dev, main] + +steps: + - name: golangci-lint + image: golangci/golangci-lint:latest-alpine + depends_on: [] + environment: + GOFLAGS: -buildvcs=false + GOWORK: "off" + commands: + - cd go && golangci-lint run --timeout=5m ./... + + - name: go-test + image: golang:1.26-alpine + depends_on: [] + environment: + GOFLAGS: -buildvcs=false + GOWORK: "off" + CGO_ENABLED: "1" + commands: + - apk add --no-cache git build-base + - cd go && go test -race -coverprofile=coverage.out -covermode=atomic -count=1 ./... + - name: sonar + image: sonarsource/sonar-scanner-cli:latest + depends_on: [go-test] + environment: + SONAR_HOST_URL: https://sonar.lthn.sh + SONAR_TOKEN: + from_secret: sonar_token + commands: + - sonar-scanner diff --git a/sonar-project.properties b/sonar-project.properties new file mode 100644 index 0000000..685ce14 --- /dev/null +++ b/sonar-project.properties @@ -0,0 +1,8 @@ +sonar.projectKey=core_mcp +sonar.projectName=core/mcp +sonar.sources=. +sonar.exclusions=**/vendor/**,**/third_party/**,**/.tmp/**,**/gomodcache/**,**/node_modules/**,**/dist/**,**/build/**,**/*_test.go,**/*.test.ts,**/*.test.js,**/*.spec.ts,**/*.spec.js +sonar.tests=. +sonar.test.inclusions=**/*_test.go,**/*.test.ts,**/*.test.js,**/*.spec.ts,**/*.spec.js +sonar.test.exclusions=**/vendor/**,**/third_party/**,**/.tmp/**,**/gomodcache/**,**/node_modules/**,**/dist/**,**/build/** +sonar.go.coverage.reportPaths=go/coverage.out From 0260ef97a251fb30f4e85678857f53180f55dda1 Mon Sep 17 00:00:00 2001 From: Snider Date: Thu, 30 Apr 2026 13:23:56 +0100 Subject: [PATCH 5/6] ci: trigger first pipeline From 214afbce29849220c4158d091466a6de29abc090 Mon Sep 17 00:00:00 2001 From: Snider Date: Thu, 30 Apr 2026 15:25:23 +0100 Subject: [PATCH 6/6] ci(public): add github actions workflow + README badge block Mirrors api shape: .github/workflows/ci.yml runs test+coverage (Codecov), golangci-lint --tests=false, and sonarcloud-scan-action to dappcore_mcp. README gets the badge block (CI / quality gate / cov / security / maintainability / reliability / smells / NCLOC / pkg.go.dev / license). GOPROXY=direct GOSUMDB=off env in workflow to dodge the proxy.golang.org stale-zip pattern that broke api's first run. Internal Woodpecker pipeline at ci.lthn.sh continues unchanged. --- .github/workflows/ci.yml | 80 +++++++++++++++++++++++++++++++++------- README.md | 18 ++++++++- 2 files changed, 84 insertions(+), 14 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index a1515b3..567342d 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -2,25 +2,79 @@ name: CI on: push: - branches: [main] + branches: [dev, main] + pull_request: + branches: [dev, main] + +permissions: + contents: read + +env: + GOFLAGS: -buildvcs=false + GOWORK: "off" + GOPROXY: "direct" + GOSUMDB: "off" jobs: test: + name: Test + Coverage runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 - - - uses: actions/setup-go@v5 + - uses: actions/checkout@v5 with: - go-version-file: go.mod - - - name: Run tests with coverage - run: | - go test -coverprofile=coverage.out ./pkg/mcp/... - sed -i 's|forge.lthn.ai/core/mcp/||g' coverage.out - - - name: Upload to Codecov + fetch-depth: 0 + - uses: actions/setup-go@v6 + with: + go-version: '1.26' + - name: Test with coverage + working-directory: go + run: go test -race -coverprofile=coverage.out -covermode=atomic -count=1 ./... + - name: Upload coverage to Codecov uses: codecov/codecov-action@v5 with: - files: coverage.out token: ${{ secrets.CODECOV_TOKEN }} + files: go/coverage.out + flags: unittests + fail_ci_if_error: false + + lint: + name: golangci-lint + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v5 + - uses: actions/setup-go@v6 + with: + go-version: '1.26' + - uses: golangci/golangci-lint-action@v9 + with: + version: latest + working-directory: go + args: --timeout=5m --tests=false + + sonarcloud: + name: SonarCloud + runs-on: ubuntu-latest + needs: test + steps: + - uses: actions/checkout@v5 + with: + fetch-depth: 0 + - uses: actions/setup-go@v6 + with: + go-version: '1.26' + - name: Test for coverage + working-directory: go + run: go test -coverprofile=coverage.out -covermode=atomic -count=1 ./... + - name: SonarCloud Scan + uses: SonarSource/sonarqube-scan-action@v6 + env: + SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} + with: + args: > + -Dsonar.organization=dappcore + -Dsonar.projectKey=dappcore_mcp + -Dsonar.sources=go + -Dsonar.exclusions=**/vendor/**,**/third_party/**,**/.tmp/**,**/*_test.go + -Dsonar.tests=go + -Dsonar.test.inclusions=**/*_test.go + -Dsonar.go.coverage.reportPaths=go/coverage.out diff --git a/README.md b/README.md index 6e311d0..51df0e2 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,19 @@ + + # mcp -Model Context Protocol — Go MCP server + Laravel MCP package \ No newline at end of file +> MCP server framework — Go runtime + PHP package; tool/resource/prompt registry + +[![CI](https://github.com/dappcore/mcp/actions/workflows/ci.yml/badge.svg?branch=dev)](https://github.com/dappcore/mcp/actions/workflows/ci.yml) +[![Quality Gate](https://sonarcloud.io/api/project_badges/measure?project=dappcore_mcp&metric=alert_status)](https://sonarcloud.io/dashboard?id=dappcore_mcp) +[![Coverage](https://codecov.io/gh/dappcore/mcp/branch/dev/graph/badge.svg)](https://codecov.io/gh/dappcore/mcp) +[![Security Rating](https://sonarcloud.io/api/project_badges/measure?project=dappcore_mcp&metric=security_rating)](https://sonarcloud.io/dashboard?id=dappcore_mcp) +[![Maintainability Rating](https://sonarcloud.io/api/project_badges/measure?project=dappcore_mcp&metric=sqale_rating)](https://sonarcloud.io/dashboard?id=dappcore_mcp) +[![Reliability Rating](https://sonarcloud.io/api/project_badges/measure?project=dappcore_mcp&metric=reliability_rating)](https://sonarcloud.io/dashboard?id=dappcore_mcp) +[![Code Smells](https://sonarcloud.io/api/project_badges/measure?project=dappcore_mcp&metric=code_smells)](https://sonarcloud.io/dashboard?id=dappcore_mcp) +[![Lines of Code](https://sonarcloud.io/api/project_badges/measure?project=dappcore_mcp&metric=ncloc)](https://sonarcloud.io/dashboard?id=dappcore_mcp) +[![Go Reference](https://pkg.go.dev/badge/dappco.re/go/mcp.svg)](https://pkg.go.dev/dappco.re/go/mcp) +[![License: EUPL-1.2](https://img.shields.io/badge/License-EUPL--1.2-blue.svg)](https://eupl.eu/1.2/en/) + + +Model Context Protocol — Go MCP server + Laravel MCP package