atabey-mcp 0.0.23 → 0.0.26
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +5 -5
- package/bin/cli.js +1 -1
- package/dashboard/index.html +15 -0
- package/dashboard/package.json +29 -0
- package/dashboard/src/App.tsx +352 -0
- package/dashboard/src/components/AdapterSkillsPanel.tsx +100 -0
- package/dashboard/src/components/AgentMonitor.tsx +90 -0
- package/dashboard/src/components/ApprovalCenter.tsx +74 -0
- package/dashboard/src/components/CompliancePanel.tsx +72 -0
- package/dashboard/src/components/DisciplinePanel.tsx +148 -0
- package/dashboard/src/components/ErrorTracker.tsx +97 -0
- package/dashboard/src/components/FinOpsPanel.tsx +236 -0
- package/dashboard/src/components/HermesBrokerView.tsx +59 -0
- package/dashboard/src/components/HermesStats.tsx +108 -0
- package/dashboard/src/components/LicensePanel.tsx +199 -0
- package/dashboard/src/components/LogViewer.tsx +87 -0
- package/dashboard/src/components/LoopDetectorPanel.tsx +203 -0
- package/dashboard/src/components/MCPSetupPanel.tsx +423 -0
- package/dashboard/src/components/MemoryInsights.tsx +107 -0
- package/dashboard/src/components/PlanViewer.tsx +95 -0
- package/dashboard/src/components/PrivacyPanel.tsx +276 -0
- package/dashboard/src/components/QualityPanel.tsx +98 -0
- package/dashboard/src/components/TelemetryPanel.tsx +197 -0
- package/dashboard/src/components/TokenEconomyPanel.tsx +285 -0
- package/dashboard/src/hooks/useApi.ts +39 -0
- package/dashboard/src/hooks/useWS.ts +47 -0
- package/dashboard/src/main.tsx +22 -0
- package/dashboard/src/styles.ts +908 -0
- package/dashboard/tsconfig.json +20 -0
- package/dashboard/vite.config.ts +25 -0
- package/dist/atabey/src/cli/utils/pkg.js +1 -0
- package/dist/atabey/src/cli/utils/pkg.js.map +1 -1
- package/dist/atabey/src/modules/agents/registry/manager.js +1 -1
- package/dist/atabey/src/modules/agents/registry/security.js +1 -1
- package/dist/atabey/src/modules/agents/registry/security.js.map +1 -1
- package/dist/atabey/src/modules/engines/agent-executor.js +82 -47
- package/dist/atabey/src/modules/engines/agent-executor.js.map +1 -1
- package/dist/atabey/src/modules/engines/agent-loop.d.ts +5 -2
- package/dist/atabey/src/modules/engines/agent-loop.js +39 -13
- package/dist/atabey/src/modules/engines/agent-loop.js.map +1 -1
- package/dist/atabey/src/modules/engines/routing-engine.d.ts +3 -0
- package/dist/atabey/src/modules/engines/routing-engine.js +14 -4
- package/dist/atabey/src/modules/engines/routing-engine.js.map +1 -1
- package/dist/atabey/src/modules/memory/core.js +1 -1
- package/dist/atabey/src/modules/memory/core.js.map +1 -1
- package/dist/atabey/src/shared/storage.d.ts +8 -0
- package/dist/atabey/src/shared/storage.js +51 -40
- package/dist/atabey/src/shared/storage.js.map +1 -1
- package/dist/atabey-mcp/src/mcp/index.js +27 -11
- package/dist/atabey-mcp/src/mcp/index.js.map +1 -1
- package/dist/atabey-mcp/src/mcp/middleware/governance.js +34 -0
- package/dist/atabey-mcp/src/mcp/middleware/governance.js.map +1 -1
- package/dist/atabey-mcp/src/mcp/routes/api-governance.js +34 -0
- package/dist/atabey-mcp/src/mcp/routes/api-governance.js.map +1 -1
- package/dist/atabey-mcp/src/mcp/routes/index.js +24 -13
- package/dist/atabey-mcp/src/mcp/routes/index.js.map +1 -1
- package/dist/atabey-mcp/src/mcp/tools/control_plane/locking.js +52 -50
- package/dist/atabey-mcp/src/mcp/tools/control_plane/locking.js.map +1 -1
- package/dist/atabey-mcp/src/mcp/tools/file_system/batch_surgical_edit.js +3 -2
- package/dist/atabey-mcp/src/mcp/tools/file_system/batch_surgical_edit.js.map +1 -1
- package/dist/atabey-mcp/src/mcp/tools/file_system/patch_file.js +2 -1
- package/dist/atabey-mcp/src/mcp/tools/file_system/patch_file.js.map +1 -1
- package/dist/atabey-mcp/src/mcp/tools/file_system/replace_text.js +4 -2
- package/dist/atabey-mcp/src/mcp/tools/file_system/replace_text.js.map +1 -1
- package/dist/atabey-mcp/src/mcp/tools/file_system/write_file.js +7 -3
- package/dist/atabey-mcp/src/mcp/tools/file_system/write_file.js.map +1 -1
- package/dist/atabey-mcp/src/mcp/tools/schemas.d.ts +12 -12
- package/dist/atabey-mcp/src/mcp/tools/shell/run_command.js +57 -51
- package/dist/atabey-mcp/src/mcp/tools/shell/run_command.js.map +1 -1
- package/dist/atabey-mcp/src/mcp/utils/auth.d.ts +49 -22
- package/dist/atabey-mcp/src/mcp/utils/auth.js +220 -78
- package/dist/atabey-mcp/src/mcp/utils/auth.js.map +1 -1
- package/dist/atabey-mcp/src/mcp/utils/auto-rollback.js +114 -5
- package/dist/atabey-mcp/src/mcp/utils/auto-rollback.js.map +1 -1
- package/dist/atabey-mcp/src/mcp/utils/compliance-bootstrap.js +57 -1
- package/dist/atabey-mcp/src/mcp/utils/compliance-bootstrap.js.map +1 -1
- package/dist/atabey-mcp/src/mcp/utils/discipline.js +92 -10
- package/dist/atabey-mcp/src/mcp/utils/discipline.js.map +1 -1
- package/dist/atabey-mcp/src/mcp/utils/file-lock-guard.d.ts +13 -0
- package/dist/atabey-mcp/src/mcp/utils/file-lock-guard.js +47 -0
- package/dist/atabey-mcp/src/mcp/utils/file-lock-guard.js.map +1 -0
- package/dist/atabey-mcp/src/mcp/utils/framework-config.d.ts +26 -0
- package/dist/atabey-mcp/src/mcp/utils/framework-config.js +70 -0
- package/dist/atabey-mcp/src/mcp/utils/framework-config.js.map +1 -1
- package/dist/atabey-mcp/src/mcp/utils/human-in-loop.js +59 -3
- package/dist/atabey-mcp/src/mcp/utils/human-in-loop.js.map +1 -1
- package/dist/atabey-mcp/src/mcp/utils/loop-detector.d.ts +1 -0
- package/dist/atabey-mcp/src/mcp/utils/loop-detector.js +64 -9
- package/dist/atabey-mcp/src/mcp/utils/loop-detector.js.map +1 -1
- package/dist/atabey-mcp/src/mcp/utils/metrics.d.ts +10 -1
- package/dist/atabey-mcp/src/mcp/utils/metrics.js +17 -2
- package/dist/atabey-mcp/src/mcp/utils/metrics.js.map +1 -1
- package/dist/atabey-mcp/src/mcp/utils/orchestrator-bootstrap.js +1 -1
- package/dist/atabey-mcp/src/mcp/utils/orchestrator-bootstrap.js.map +1 -1
- package/dist/atabey-mcp/src/mcp/utils/policy-gate.d.ts +23 -0
- package/dist/atabey-mcp/src/mcp/utils/policy-gate.js +40 -0
- package/dist/atabey-mcp/src/mcp/utils/policy-gate.js.map +1 -0
- package/dist/atabey-mcp/src/mcp/utils/prompt-injection.js +10 -4
- package/dist/atabey-mcp/src/mcp/utils/prompt-injection.js.map +1 -1
- package/dist/atabey-mcp/src/mcp/utils/security-state.d.ts +59 -0
- package/dist/atabey-mcp/src/mcp/utils/security-state.js +59 -0
- package/dist/atabey-mcp/src/mcp/utils/security-state.js.map +1 -0
- package/dist/atabey-mcp/src/shared/storage.d.ts +83 -0
- package/dist/atabey-mcp/src/shared/storage.js +275 -23
- package/dist/atabey-mcp/src/shared/storage.js.map +1 -1
- package/dist/dashboard/assets/{index-DEzcOfjO.js → index-D4PE1jZ_.js} +2 -2
- package/dist/dashboard/index.html +1 -1
- package/dist/mcp/constants.d.ts +5 -0
- package/dist/mcp/constants.js +6 -0
- package/dist/mcp/constants.js.map +1 -0
- package/dist/mcp/index.d.ts +2 -0
- package/dist/mcp/index.js +322 -0
- package/dist/mcp/index.js.map +1 -0
- package/dist/mcp/middleware/governance.d.ts +15 -0
- package/dist/mcp/middleware/governance.js +328 -0
- package/dist/mcp/middleware/governance.js.map +1 -0
- package/dist/mcp/resources/index.d.ts +10 -0
- package/dist/mcp/resources/index.js +59 -0
- package/dist/mcp/resources/index.js.map +1 -0
- package/dist/mcp/routes/api-agents.d.ts +3 -0
- package/dist/mcp/routes/api-agents.js +97 -0
- package/dist/mcp/routes/api-agents.js.map +1 -0
- package/dist/mcp/routes/api-common.d.ts +3 -0
- package/dist/mcp/routes/api-common.js +63 -0
- package/dist/mcp/routes/api-common.js.map +1 -0
- package/dist/mcp/routes/api-config.d.ts +3 -0
- package/dist/mcp/routes/api-config.js +639 -0
- package/dist/mcp/routes/api-config.js.map +1 -0
- package/dist/mcp/routes/api-governance.d.ts +3 -0
- package/dist/mcp/routes/api-governance.js +271 -0
- package/dist/mcp/routes/api-governance.js.map +1 -0
- package/dist/mcp/routes/api-orchestrator.d.ts +3 -0
- package/dist/mcp/routes/api-orchestrator.js +145 -0
- package/dist/mcp/routes/api-orchestrator.js.map +1 -0
- package/dist/mcp/routes/api-workspace.d.ts +3 -0
- package/dist/mcp/routes/api-workspace.js +274 -0
- package/dist/mcp/routes/api-workspace.js.map +1 -0
- package/dist/mcp/routes/index.d.ts +26 -0
- package/dist/mcp/routes/index.js +153 -0
- package/dist/mcp/routes/index.js.map +1 -0
- package/dist/mcp/routes/types.d.ts +18 -0
- package/dist/mcp/routes/types.js +23 -0
- package/dist/mcp/routes/types.js.map +1 -0
- package/dist/mcp/tools/compliance/mask_pii.d.ts +17 -0
- package/dist/mcp/tools/compliance/mask_pii.js +56 -0
- package/dist/mcp/tools/compliance/mask_pii.js.map +1 -0
- package/dist/mcp/tools/control_plane/locking.d.ts +9 -0
- package/dist/mcp/tools/control_plane/locking.js +85 -0
- package/dist/mcp/tools/control_plane/locking.js.map +1 -0
- package/dist/mcp/tools/control_plane/registry.d.ts +6 -0
- package/dist/mcp/tools/control_plane/registry.js +84 -0
- package/dist/mcp/tools/control_plane/registry.js.map +1 -0
- package/dist/mcp/tools/definitions.d.ts +7 -0
- package/dist/mcp/tools/definitions.js +216 -0
- package/dist/mcp/tools/definitions.js.map +1 -0
- package/dist/mcp/tools/file_system/batch_surgical_edit.d.ts +5 -0
- package/dist/mcp/tools/file_system/batch_surgical_edit.js +65 -0
- package/dist/mcp/tools/file_system/batch_surgical_edit.js.map +1 -0
- package/dist/mcp/tools/file_system/compress.d.ts +2 -0
- package/dist/mcp/tools/file_system/compress.js +123 -0
- package/dist/mcp/tools/file_system/compress.js.map +1 -0
- package/dist/mcp/tools/file_system/decompress.d.ts +2 -0
- package/dist/mcp/tools/file_system/decompress.js +143 -0
- package/dist/mcp/tools/file_system/decompress.js.map +1 -0
- package/dist/mcp/tools/file_system/patch_file.d.ts +2 -0
- package/dist/mcp/tools/file_system/patch_file.js +35 -0
- package/dist/mcp/tools/file_system/patch_file.js.map +1 -0
- package/dist/mcp/tools/file_system/read_file.d.ts +2 -0
- package/dist/mcp/tools/file_system/read_file.js +57 -0
- package/dist/mcp/tools/file_system/read_file.js.map +1 -0
- package/dist/mcp/tools/file_system/replace_text.d.ts +2 -0
- package/dist/mcp/tools/file_system/replace_text.js +51 -0
- package/dist/mcp/tools/file_system/replace_text.js.map +1 -0
- package/dist/mcp/tools/file_system/write_file.d.ts +2 -0
- package/dist/mcp/tools/file_system/write_file.js +56 -0
- package/dist/mcp/tools/file_system/write_file.js.map +1 -0
- package/dist/mcp/tools/framework/audit_deps.d.ts +6 -0
- package/dist/mcp/tools/framework/audit_deps.js +42 -0
- package/dist/mcp/tools/framework/audit_deps.js.map +1 -0
- package/dist/mcp/tools/framework/get_status.d.ts +2 -0
- package/dist/mcp/tools/framework/get_status.js +6 -0
- package/dist/mcp/tools/framework/get_status.js.map +1 -0
- package/dist/mcp/tools/framework/orchestrate.d.ts +2 -0
- package/dist/mcp/tools/framework/orchestrate.js +13 -0
- package/dist/mcp/tools/framework/orchestrate.js.map +1 -0
- package/dist/mcp/tools/framework/run_tests.d.ts +5 -0
- package/dist/mcp/tools/framework/run_tests.js +53 -0
- package/dist/mcp/tools/framework/run_tests.js.map +1 -0
- package/dist/mcp/tools/framework/submit_plan.d.ts +11 -0
- package/dist/mcp/tools/framework/submit_plan.js +14 -0
- package/dist/mcp/tools/framework/submit_plan.js.map +1 -0
- package/dist/mcp/tools/framework/update_contract_hash.d.ts +2 -0
- package/dist/mcp/tools/framework/update_contract_hash.js +6 -0
- package/dist/mcp/tools/framework/update_contract_hash.js.map +1 -0
- package/dist/mcp/tools/framework/update_memory.d.ts +2 -0
- package/dist/mcp/tools/framework/update_memory.js +9 -0
- package/dist/mcp/tools/framework/update_memory.js.map +1 -0
- package/dist/mcp/tools/index.d.ts +6 -0
- package/dist/mcp/tools/index.js +135 -0
- package/dist/mcp/tools/index.js.map +1 -0
- package/dist/mcp/tools/memory/delete_knowledge.d.ts +8 -0
- package/dist/mcp/tools/memory/delete_knowledge.js +29 -0
- package/dist/mcp/tools/memory/delete_knowledge.js.map +1 -0
- package/dist/mcp/tools/memory/get_insights.d.ts +6 -0
- package/dist/mcp/tools/memory/get_insights.js +23 -0
- package/dist/mcp/tools/memory/get_insights.js.map +1 -0
- package/dist/mcp/tools/memory/read_memory.d.ts +6 -0
- package/dist/mcp/tools/memory/read_memory.js +29 -0
- package/dist/mcp/tools/memory/read_memory.js.map +1 -0
- package/dist/mcp/tools/memory/search_knowledge.d.ts +8 -0
- package/dist/mcp/tools/memory/search_knowledge.js +49 -0
- package/dist/mcp/tools/memory/search_knowledge.js.map +1 -0
- package/dist/mcp/tools/memory/store_knowledge.d.ts +10 -0
- package/dist/mcp/tools/memory/store_knowledge.js +31 -0
- package/dist/mcp/tools/memory/store_knowledge.js.map +1 -0
- package/dist/mcp/tools/messaging/approve_operation.d.ts +24 -0
- package/dist/mcp/tools/messaging/approve_operation.js +81 -0
- package/dist/mcp/tools/messaging/approve_operation.js.map +1 -0
- package/dist/mcp/tools/messaging/ask_human.d.ts +21 -0
- package/dist/mcp/tools/messaging/ask_human.js +100 -0
- package/dist/mcp/tools/messaging/ask_human.js.map +1 -0
- package/dist/mcp/tools/messaging/log_action.d.ts +2 -0
- package/dist/mcp/tools/messaging/log_action.js +23 -0
- package/dist/mcp/tools/messaging/log_action.js.map +1 -0
- package/dist/mcp/tools/messaging/send_message.d.ts +2 -0
- package/dist/mcp/tools/messaging/send_message.js +111 -0
- package/dist/mcp/tools/messaging/send_message.js.map +1 -0
- package/dist/mcp/tools/network/http_proxy.d.ts +9 -0
- package/dist/mcp/tools/network/http_proxy.js +166 -0
- package/dist/mcp/tools/network/http_proxy.js.map +1 -0
- package/dist/mcp/tools/observability/check_ports.d.ts +6 -0
- package/dist/mcp/tools/observability/check_ports.js +43 -0
- package/dist/mcp/tools/observability/check_ports.js.map +1 -0
- package/dist/mcp/tools/observability/get_health.d.ts +5 -0
- package/dist/mcp/tools/observability/get_health.js +20 -0
- package/dist/mcp/tools/observability/get_health.js.map +1 -0
- package/dist/mcp/tools/quality/analyze_code_quality.d.ts +11 -0
- package/dist/mcp/tools/quality/analyze_code_quality.js +115 -0
- package/dist/mcp/tools/quality/analyze_code_quality.js.map +1 -0
- package/dist/mcp/tools/quality/check_architecture_compliance.d.ts +11 -0
- package/dist/mcp/tools/quality/check_architecture_compliance.js +135 -0
- package/dist/mcp/tools/quality/check_architecture_compliance.js.map +1 -0
- package/dist/mcp/tools/quality/check_lint.d.ts +5 -0
- package/dist/mcp/tools/quality/check_lint.js +31 -0
- package/dist/mcp/tools/quality/check_lint.js.map +1 -0
- package/dist/mcp/tools/schemas.d.ts +482 -0
- package/dist/mcp/tools/schemas.js +198 -0
- package/dist/mcp/tools/schemas.js.map +1 -0
- package/dist/mcp/tools/search/get_gaps.d.ts +6 -0
- package/dist/mcp/tools/search/get_gaps.js +49 -0
- package/dist/mcp/tools/search/get_gaps.js.map +1 -0
- package/dist/mcp/tools/search/get_map.d.ts +6 -0
- package/dist/mcp/tools/search/get_map.js +44 -0
- package/dist/mcp/tools/search/get_map.js.map +1 -0
- package/dist/mcp/tools/search/grep_search.d.ts +5 -0
- package/dist/mcp/tools/search/grep_search.js +86 -0
- package/dist/mcp/tools/search/grep_search.js.map +1 -0
- package/dist/mcp/tools/search/list_dir.d.ts +5 -0
- package/dist/mcp/tools/search/list_dir.js +32 -0
- package/dist/mcp/tools/search/list_dir.js.map +1 -0
- package/dist/mcp/tools/shell/run_command.d.ts +2 -0
- package/dist/mcp/tools/shell/run_command.js +224 -0
- package/dist/mcp/tools/shell/run_command.js.map +1 -0
- package/dist/mcp/tools/types.d.ts +28 -0
- package/dist/mcp/tools/types.js +3 -0
- package/dist/mcp/tools/types.js.map +1 -0
- package/dist/mcp/utils/auth.d.ts +40 -0
- package/dist/mcp/utils/auth.js +154 -0
- package/dist/mcp/utils/auth.js.map +1 -0
- package/dist/mcp/utils/auto-rollback.d.ts +71 -0
- package/dist/mcp/utils/auto-rollback.js +375 -0
- package/dist/mcp/utils/auto-rollback.js.map +1 -0
- package/dist/mcp/utils/cli.d.ts +16 -0
- package/dist/mcp/utils/cli.js +60 -0
- package/dist/mcp/utils/cli.js.map +1 -0
- package/dist/mcp/utils/client-config.d.ts +56 -0
- package/dist/mcp/utils/client-config.js +181 -0
- package/dist/mcp/utils/client-config.js.map +1 -0
- package/dist/mcp/utils/compliance-bootstrap.d.ts +8 -0
- package/dist/mcp/utils/compliance-bootstrap.js +46 -0
- package/dist/mcp/utils/compliance-bootstrap.js.map +1 -0
- package/dist/mcp/utils/compliance.d.ts +21 -0
- package/dist/mcp/utils/compliance.js +333 -0
- package/dist/mcp/utils/compliance.js.map +1 -0
- package/dist/mcp/utils/consent.d.ts +25 -0
- package/dist/mcp/utils/consent.js +60 -0
- package/dist/mcp/utils/consent.js.map +1 -0
- package/dist/mcp/utils/context-optimizer.d.ts +110 -0
- package/dist/mcp/utils/context-optimizer.js +391 -0
- package/dist/mcp/utils/context-optimizer.js.map +1 -0
- package/dist/mcp/utils/discipline.d.ts +69 -0
- package/dist/mcp/utils/discipline.js +317 -0
- package/dist/mcp/utils/discipline.js.map +1 -0
- package/dist/mcp/utils/errors.d.ts +46 -0
- package/dist/mcp/utils/errors.js +69 -0
- package/dist/mcp/utils/errors.js.map +1 -0
- package/dist/mcp/utils/finops.d.ts +139 -0
- package/dist/mcp/utils/finops.js +324 -0
- package/dist/mcp/utils/finops.js.map +1 -0
- package/dist/mcp/utils/framework-config.d.ts +27 -0
- package/dist/mcp/utils/framework-config.js +81 -0
- package/dist/mcp/utils/framework-config.js.map +1 -0
- package/dist/mcp/utils/fs.d.ts +19 -0
- package/dist/mcp/utils/fs.js +48 -0
- package/dist/mcp/utils/fs.js.map +1 -0
- package/dist/mcp/utils/human-in-loop.d.ts +130 -0
- package/dist/mcp/utils/human-in-loop.js +382 -0
- package/dist/mcp/utils/human-in-loop.js.map +1 -0
- package/dist/mcp/utils/license-scanner.d.ts +71 -0
- package/dist/mcp/utils/license-scanner.js +284 -0
- package/dist/mcp/utils/license-scanner.js.map +1 -0
- package/dist/mcp/utils/loop-detector.d.ts +106 -0
- package/dist/mcp/utils/loop-detector.js +413 -0
- package/dist/mcp/utils/loop-detector.js.map +1 -0
- package/dist/mcp/utils/memory.d.ts +3 -0
- package/dist/mcp/utils/memory.js +75 -0
- package/dist/mcp/utils/memory.js.map +1 -0
- package/dist/mcp/utils/metrics.d.ts +39 -0
- package/dist/mcp/utils/metrics.js +72 -0
- package/dist/mcp/utils/metrics.js.map +1 -0
- package/dist/mcp/utils/orchestrator-bootstrap.d.ts +14 -0
- package/dist/mcp/utils/orchestrator-bootstrap.js +101 -0
- package/dist/mcp/utils/orchestrator-bootstrap.js.map +1 -0
- package/dist/mcp/utils/permissions.d.ts +76 -0
- package/dist/mcp/utils/permissions.js +208 -0
- package/dist/mcp/utils/permissions.js.map +1 -0
- package/dist/mcp/utils/prompt-injection.d.ts +20 -0
- package/dist/mcp/utils/prompt-injection.js +70 -0
- package/dist/mcp/utils/prompt-injection.js.map +1 -0
- package/dist/mcp/utils/quality.d.ts +19 -0
- package/dist/mcp/utils/quality.js +125 -0
- package/dist/mcp/utils/quality.js.map +1 -0
- package/dist/mcp/utils/rules-engine.d.ts +78 -0
- package/dist/mcp/utils/rules-engine.js +232 -0
- package/dist/mcp/utils/rules-engine.js.map +1 -0
- package/dist/mcp/utils/security.d.ts +10 -0
- package/dist/mcp/utils/security.js +61 -0
- package/dist/mcp/utils/security.js.map +1 -0
- package/dist/mcp/utils/silent-router.d.ts +49 -0
- package/dist/mcp/utils/silent-router.js +155 -0
- package/dist/mcp/utils/silent-router.js.map +1 -0
- package/dist/mcp/utils/storage.d.ts +61 -0
- package/dist/mcp/utils/storage.js +400 -0
- package/dist/mcp/utils/storage.js.map +1 -0
- package/dist/mcp/utils/telemetry-streamer.d.ts +133 -0
- package/dist/mcp/utils/telemetry-streamer.js +397 -0
- package/dist/mcp/utils/telemetry-streamer.js.map +1 -0
- package/dist/mcp/utils/types.d.ts +27 -0
- package/dist/mcp/utils/types.js +17 -0
- package/dist/mcp/utils/types.js.map +1 -0
- package/dist/mcp/utils/web-config.d.ts +31 -0
- package/dist/mcp/utils/web-config.js +89 -0
- package/dist/mcp/utils/web-config.js.map +1 -0
- package/dist/mcp/utils/workspace.d.ts +98 -0
- package/dist/mcp/utils/workspace.js +201 -0
- package/dist/mcp/utils/workspace.js.map +1 -0
- package/dist/mcp/utils/zod-to-mcp.d.ts +10 -0
- package/dist/mcp/utils/zod-to-mcp.js +80 -0
- package/dist/mcp/utils/zod-to-mcp.js.map +1 -0
- package/dist/shared/audit.d.ts +1 -0
- package/dist/shared/audit.js +2 -0
- package/dist/shared/audit.js.map +1 -0
- package/dist/shared/constants.d.ts +1 -0
- package/dist/shared/constants.js +2 -0
- package/dist/shared/constants.js.map +1 -0
- package/dist/shared/errors.d.ts +1 -0
- package/dist/shared/errors.js +2 -0
- package/dist/shared/errors.js.map +1 -0
- package/dist/shared/fs.d.ts +1 -0
- package/dist/shared/fs.js +2 -0
- package/dist/shared/fs.js.map +1 -0
- package/dist/shared/lock.d.ts +1 -0
- package/dist/shared/lock.js +2 -0
- package/dist/shared/lock.js.map +1 -0
- package/dist/shared/logger.d.ts +1 -0
- package/dist/shared/logger.js +2 -0
- package/dist/shared/logger.js.map +1 -0
- package/dist/shared/pii.d.ts +1 -0
- package/dist/shared/pii.js +2 -0
- package/dist/shared/pii.js.map +1 -0
- package/dist/shared/retention.d.ts +1 -0
- package/dist/shared/retention.js +2 -0
- package/dist/shared/retention.js.map +1 -0
- package/dist/shared/src/audit-chain.d.ts +51 -0
- package/dist/shared/src/audit-chain.js +85 -0
- package/dist/shared/src/audit-chain.js.map +1 -0
- package/dist/shared/src/audit.d.ts +8 -0
- package/dist/shared/src/audit.js +82 -18
- package/dist/shared/src/audit.js.map +1 -1
- package/dist/shared/src/file-lock.d.ts +85 -0
- package/dist/shared/src/file-lock.js +246 -0
- package/dist/shared/src/file-lock.js.map +1 -0
- package/dist/shared/src/index.d.ts +9 -0
- package/dist/shared/src/index.js +9 -0
- package/dist/shared/src/index.js.map +1 -1
- package/dist/shared/src/job-queue.d.ts +53 -0
- package/dist/shared/src/job-queue.js +127 -0
- package/dist/shared/src/job-queue.js.map +1 -0
- package/dist/shared/src/policy-gate.d.ts +42 -0
- package/dist/shared/src/policy-gate.js +148 -0
- package/dist/shared/src/policy-gate.js.map +1 -0
- package/dist/shared/src/resilience.d.ts +84 -0
- package/dist/shared/src/resilience.js +217 -0
- package/dist/shared/src/resilience.js.map +1 -0
- package/dist/shared/src/sandbox-fs.d.ts +28 -0
- package/dist/shared/src/sandbox-fs.js +148 -0
- package/dist/shared/src/sandbox-fs.js.map +1 -0
- package/dist/shared/src/sandbox-runtime.d.ts +85 -0
- package/dist/shared/src/sandbox-runtime.js +250 -0
- package/dist/shared/src/sandbox-runtime.js.map +1 -0
- package/dist/shared/src/sandbox.d.ts +54 -0
- package/dist/shared/src/sandbox.js +179 -0
- package/dist/shared/src/sandbox.js.map +1 -0
- package/dist/shared/src/worker-pool.d.ts +52 -0
- package/dist/shared/src/worker-pool.js +210 -0
- package/dist/shared/src/worker-pool.js.map +1 -0
- package/dist/shared/src/worker-thread.d.ts +21 -0
- package/dist/shared/src/worker-thread.js +67 -0
- package/dist/shared/src/worker-thread.js.map +1 -0
- package/dist/shared/storage.d.ts +238 -0
- package/dist/shared/storage.js +500 -0
- package/dist/shared/storage.js.map +1 -0
- package/dist/shared/string.d.ts +1 -0
- package/dist/shared/string.js +2 -0
- package/dist/shared/string.js.map +1 -0
- package/dist/shared/types.d.ts +1 -0
- package/dist/shared/types.js +2 -0
- package/dist/shared/types.js.map +1 -0
- package/dist/src/mcp/constants.d.ts +5 -0
- package/dist/src/mcp/constants.js +6 -0
- package/dist/src/mcp/constants.js.map +1 -0
- package/dist/src/mcp/index.d.ts +2 -0
- package/dist/src/mcp/index.js +322 -0
- package/dist/src/mcp/index.js.map +1 -0
- package/dist/src/mcp/middleware/governance.d.ts +15 -0
- package/dist/src/mcp/middleware/governance.js +328 -0
- package/dist/src/mcp/middleware/governance.js.map +1 -0
- package/dist/src/mcp/resources/index.d.ts +10 -0
- package/dist/src/mcp/resources/index.js +59 -0
- package/dist/src/mcp/resources/index.js.map +1 -0
- package/dist/src/mcp/routes/api-agents.d.ts +3 -0
- package/dist/src/mcp/routes/api-agents.js +97 -0
- package/dist/src/mcp/routes/api-agents.js.map +1 -0
- package/dist/src/mcp/routes/api-common.d.ts +3 -0
- package/dist/src/mcp/routes/api-common.js +63 -0
- package/dist/src/mcp/routes/api-common.js.map +1 -0
- package/dist/src/mcp/routes/api-config.d.ts +3 -0
- package/dist/src/mcp/routes/api-config.js +639 -0
- package/dist/src/mcp/routes/api-config.js.map +1 -0
- package/dist/src/mcp/routes/api-governance.d.ts +3 -0
- package/dist/src/mcp/routes/api-governance.js +271 -0
- package/dist/src/mcp/routes/api-governance.js.map +1 -0
- package/dist/src/mcp/routes/api-orchestrator.d.ts +3 -0
- package/dist/src/mcp/routes/api-orchestrator.js +145 -0
- package/dist/src/mcp/routes/api-orchestrator.js.map +1 -0
- package/dist/src/mcp/routes/api-workspace.d.ts +3 -0
- package/dist/src/mcp/routes/api-workspace.js +274 -0
- package/dist/src/mcp/routes/api-workspace.js.map +1 -0
- package/dist/src/mcp/routes/index.d.ts +26 -0
- package/dist/src/mcp/routes/index.js +153 -0
- package/dist/src/mcp/routes/index.js.map +1 -0
- package/dist/src/mcp/routes/types.d.ts +18 -0
- package/dist/src/mcp/routes/types.js +23 -0
- package/dist/src/mcp/routes/types.js.map +1 -0
- package/dist/src/mcp/tools/compliance/mask_pii.d.ts +17 -0
- package/dist/src/mcp/tools/compliance/mask_pii.js +56 -0
- package/dist/src/mcp/tools/compliance/mask_pii.js.map +1 -0
- package/dist/src/mcp/tools/control_plane/locking.d.ts +9 -0
- package/dist/src/mcp/tools/control_plane/locking.js +85 -0
- package/dist/src/mcp/tools/control_plane/locking.js.map +1 -0
- package/dist/src/mcp/tools/control_plane/registry.d.ts +6 -0
- package/dist/src/mcp/tools/control_plane/registry.js +84 -0
- package/dist/src/mcp/tools/control_plane/registry.js.map +1 -0
- package/dist/src/mcp/tools/definitions.d.ts +7 -0
- package/dist/src/mcp/tools/definitions.js +216 -0
- package/dist/src/mcp/tools/definitions.js.map +1 -0
- package/dist/src/mcp/tools/file_system/batch_surgical_edit.d.ts +5 -0
- package/dist/src/mcp/tools/file_system/batch_surgical_edit.js +65 -0
- package/dist/src/mcp/tools/file_system/batch_surgical_edit.js.map +1 -0
- package/dist/src/mcp/tools/file_system/compress.d.ts +2 -0
- package/dist/src/mcp/tools/file_system/compress.js +123 -0
- package/dist/src/mcp/tools/file_system/compress.js.map +1 -0
- package/dist/src/mcp/tools/file_system/decompress.d.ts +2 -0
- package/dist/src/mcp/tools/file_system/decompress.js +143 -0
- package/dist/src/mcp/tools/file_system/decompress.js.map +1 -0
- package/dist/src/mcp/tools/file_system/patch_file.d.ts +2 -0
- package/dist/src/mcp/tools/file_system/patch_file.js +35 -0
- package/dist/src/mcp/tools/file_system/patch_file.js.map +1 -0
- package/dist/src/mcp/tools/file_system/read_file.d.ts +2 -0
- package/dist/src/mcp/tools/file_system/read_file.js +57 -0
- package/dist/src/mcp/tools/file_system/read_file.js.map +1 -0
- package/dist/src/mcp/tools/file_system/replace_text.d.ts +2 -0
- package/dist/src/mcp/tools/file_system/replace_text.js +51 -0
- package/dist/src/mcp/tools/file_system/replace_text.js.map +1 -0
- package/dist/src/mcp/tools/file_system/write_file.d.ts +2 -0
- package/dist/src/mcp/tools/file_system/write_file.js +56 -0
- package/dist/src/mcp/tools/file_system/write_file.js.map +1 -0
- package/dist/src/mcp/tools/framework/audit_deps.d.ts +6 -0
- package/dist/src/mcp/tools/framework/audit_deps.js +42 -0
- package/dist/src/mcp/tools/framework/audit_deps.js.map +1 -0
- package/dist/src/mcp/tools/framework/get_status.d.ts +2 -0
- package/dist/src/mcp/tools/framework/get_status.js +6 -0
- package/dist/src/mcp/tools/framework/get_status.js.map +1 -0
- package/dist/src/mcp/tools/framework/orchestrate.d.ts +2 -0
- package/dist/src/mcp/tools/framework/orchestrate.js +13 -0
- package/dist/src/mcp/tools/framework/orchestrate.js.map +1 -0
- package/dist/src/mcp/tools/framework/run_tests.d.ts +5 -0
- package/dist/src/mcp/tools/framework/run_tests.js +53 -0
- package/dist/src/mcp/tools/framework/run_tests.js.map +1 -0
- package/dist/src/mcp/tools/framework/submit_plan.d.ts +11 -0
- package/dist/src/mcp/tools/framework/submit_plan.js +14 -0
- package/dist/src/mcp/tools/framework/submit_plan.js.map +1 -0
- package/dist/src/mcp/tools/framework/update_contract_hash.d.ts +2 -0
- package/dist/src/mcp/tools/framework/update_contract_hash.js +6 -0
- package/dist/src/mcp/tools/framework/update_contract_hash.js.map +1 -0
- package/dist/src/mcp/tools/framework/update_memory.d.ts +2 -0
- package/dist/src/mcp/tools/framework/update_memory.js +9 -0
- package/dist/src/mcp/tools/framework/update_memory.js.map +1 -0
- package/dist/src/mcp/tools/index.d.ts +6 -0
- package/dist/src/mcp/tools/index.js +135 -0
- package/dist/src/mcp/tools/index.js.map +1 -0
- package/dist/src/mcp/tools/memory/delete_knowledge.d.ts +8 -0
- package/dist/src/mcp/tools/memory/delete_knowledge.js +29 -0
- package/dist/src/mcp/tools/memory/delete_knowledge.js.map +1 -0
- package/dist/src/mcp/tools/memory/get_insights.d.ts +6 -0
- package/dist/src/mcp/tools/memory/get_insights.js +23 -0
- package/dist/src/mcp/tools/memory/get_insights.js.map +1 -0
- package/dist/src/mcp/tools/memory/read_memory.d.ts +6 -0
- package/dist/src/mcp/tools/memory/read_memory.js +29 -0
- package/dist/src/mcp/tools/memory/read_memory.js.map +1 -0
- package/dist/src/mcp/tools/memory/search_knowledge.d.ts +8 -0
- package/dist/src/mcp/tools/memory/search_knowledge.js +49 -0
- package/dist/src/mcp/tools/memory/search_knowledge.js.map +1 -0
- package/dist/src/mcp/tools/memory/store_knowledge.d.ts +10 -0
- package/dist/src/mcp/tools/memory/store_knowledge.js +31 -0
- package/dist/src/mcp/tools/memory/store_knowledge.js.map +1 -0
- package/dist/src/mcp/tools/messaging/approve_operation.d.ts +24 -0
- package/dist/src/mcp/tools/messaging/approve_operation.js +81 -0
- package/dist/src/mcp/tools/messaging/approve_operation.js.map +1 -0
- package/dist/src/mcp/tools/messaging/ask_human.d.ts +21 -0
- package/dist/src/mcp/tools/messaging/ask_human.js +100 -0
- package/dist/src/mcp/tools/messaging/ask_human.js.map +1 -0
- package/dist/src/mcp/tools/messaging/log_action.d.ts +2 -0
- package/dist/src/mcp/tools/messaging/log_action.js +23 -0
- package/dist/src/mcp/tools/messaging/log_action.js.map +1 -0
- package/dist/src/mcp/tools/messaging/send_message.d.ts +2 -0
- package/dist/src/mcp/tools/messaging/send_message.js +111 -0
- package/dist/src/mcp/tools/messaging/send_message.js.map +1 -0
- package/dist/src/mcp/tools/network/http_proxy.d.ts +9 -0
- package/dist/src/mcp/tools/network/http_proxy.js +166 -0
- package/dist/src/mcp/tools/network/http_proxy.js.map +1 -0
- package/dist/src/mcp/tools/observability/check_ports.d.ts +6 -0
- package/dist/src/mcp/tools/observability/check_ports.js +43 -0
- package/dist/src/mcp/tools/observability/check_ports.js.map +1 -0
- package/dist/src/mcp/tools/observability/get_health.d.ts +5 -0
- package/dist/src/mcp/tools/observability/get_health.js +20 -0
- package/dist/src/mcp/tools/observability/get_health.js.map +1 -0
- package/dist/src/mcp/tools/quality/analyze_code_quality.d.ts +11 -0
- package/dist/src/mcp/tools/quality/analyze_code_quality.js +115 -0
- package/dist/src/mcp/tools/quality/analyze_code_quality.js.map +1 -0
- package/dist/src/mcp/tools/quality/check_architecture_compliance.d.ts +11 -0
- package/dist/src/mcp/tools/quality/check_architecture_compliance.js +135 -0
- package/dist/src/mcp/tools/quality/check_architecture_compliance.js.map +1 -0
- package/dist/src/mcp/tools/quality/check_lint.d.ts +5 -0
- package/dist/src/mcp/tools/quality/check_lint.js +31 -0
- package/dist/src/mcp/tools/quality/check_lint.js.map +1 -0
- package/dist/src/mcp/tools/schemas.d.ts +482 -0
- package/dist/src/mcp/tools/schemas.js +198 -0
- package/dist/src/mcp/tools/schemas.js.map +1 -0
- package/dist/src/mcp/tools/search/get_gaps.d.ts +6 -0
- package/dist/src/mcp/tools/search/get_gaps.js +49 -0
- package/dist/src/mcp/tools/search/get_gaps.js.map +1 -0
- package/dist/src/mcp/tools/search/get_map.d.ts +6 -0
- package/dist/src/mcp/tools/search/get_map.js +44 -0
- package/dist/src/mcp/tools/search/get_map.js.map +1 -0
- package/dist/src/mcp/tools/search/grep_search.d.ts +5 -0
- package/dist/src/mcp/tools/search/grep_search.js +86 -0
- package/dist/src/mcp/tools/search/grep_search.js.map +1 -0
- package/dist/src/mcp/tools/search/list_dir.d.ts +5 -0
- package/dist/src/mcp/tools/search/list_dir.js +32 -0
- package/dist/src/mcp/tools/search/list_dir.js.map +1 -0
- package/dist/src/mcp/tools/shell/run_command.d.ts +2 -0
- package/dist/src/mcp/tools/shell/run_command.js +224 -0
- package/dist/src/mcp/tools/shell/run_command.js.map +1 -0
- package/dist/src/mcp/tools/types.d.ts +28 -0
- package/dist/src/mcp/tools/types.js +3 -0
- package/dist/src/mcp/tools/types.js.map +1 -0
- package/dist/src/mcp/utils/auth.d.ts +40 -0
- package/dist/src/mcp/utils/auth.js +154 -0
- package/dist/src/mcp/utils/auth.js.map +1 -0
- package/dist/src/mcp/utils/auto-rollback.d.ts +71 -0
- package/dist/src/mcp/utils/auto-rollback.js +375 -0
- package/dist/src/mcp/utils/auto-rollback.js.map +1 -0
- package/dist/src/mcp/utils/cli.d.ts +16 -0
- package/dist/src/mcp/utils/cli.js +60 -0
- package/dist/src/mcp/utils/cli.js.map +1 -0
- package/dist/src/mcp/utils/client-config.d.ts +56 -0
- package/dist/src/mcp/utils/client-config.js +181 -0
- package/dist/src/mcp/utils/client-config.js.map +1 -0
- package/dist/src/mcp/utils/compliance-bootstrap.d.ts +8 -0
- package/dist/src/mcp/utils/compliance-bootstrap.js +46 -0
- package/dist/src/mcp/utils/compliance-bootstrap.js.map +1 -0
- package/dist/src/mcp/utils/compliance.d.ts +21 -0
- package/dist/src/mcp/utils/compliance.js +333 -0
- package/dist/src/mcp/utils/compliance.js.map +1 -0
- package/dist/src/mcp/utils/consent.d.ts +25 -0
- package/dist/src/mcp/utils/consent.js +60 -0
- package/dist/src/mcp/utils/consent.js.map +1 -0
- package/dist/src/mcp/utils/context-optimizer.d.ts +110 -0
- package/dist/src/mcp/utils/context-optimizer.js +391 -0
- package/dist/src/mcp/utils/context-optimizer.js.map +1 -0
- package/dist/src/mcp/utils/discipline.d.ts +69 -0
- package/dist/src/mcp/utils/discipline.js +257 -0
- package/dist/src/mcp/utils/discipline.js.map +1 -0
- package/dist/src/mcp/utils/errors.d.ts +46 -0
- package/dist/src/mcp/utils/errors.js +69 -0
- package/dist/src/mcp/utils/errors.js.map +1 -0
- package/dist/src/mcp/utils/finops.d.ts +139 -0
- package/dist/src/mcp/utils/finops.js +324 -0
- package/dist/src/mcp/utils/finops.js.map +1 -0
- package/dist/src/mcp/utils/framework-config.d.ts +27 -0
- package/dist/src/mcp/utils/framework-config.js +81 -0
- package/dist/src/mcp/utils/framework-config.js.map +1 -0
- package/dist/src/mcp/utils/fs.d.ts +19 -0
- package/dist/src/mcp/utils/fs.js +48 -0
- package/dist/src/mcp/utils/fs.js.map +1 -0
- package/dist/src/mcp/utils/human-in-loop.d.ts +130 -0
- package/dist/src/mcp/utils/human-in-loop.js +326 -0
- package/dist/src/mcp/utils/human-in-loop.js.map +1 -0
- package/dist/src/mcp/utils/license-scanner.d.ts +71 -0
- package/dist/src/mcp/utils/license-scanner.js +284 -0
- package/dist/src/mcp/utils/license-scanner.js.map +1 -0
- package/dist/src/mcp/utils/loop-detector.d.ts +106 -0
- package/dist/src/mcp/utils/loop-detector.js +413 -0
- package/dist/src/mcp/utils/loop-detector.js.map +1 -0
- package/dist/src/mcp/utils/memory.d.ts +3 -0
- package/dist/src/mcp/utils/memory.js +75 -0
- package/dist/src/mcp/utils/memory.js.map +1 -0
- package/dist/src/mcp/utils/metrics.d.ts +39 -0
- package/dist/src/mcp/utils/metrics.js +72 -0
- package/dist/src/mcp/utils/metrics.js.map +1 -0
- package/dist/src/mcp/utils/orchestrator-bootstrap.d.ts +14 -0
- package/dist/src/mcp/utils/orchestrator-bootstrap.js +98 -0
- package/dist/src/mcp/utils/orchestrator-bootstrap.js.map +1 -0
- package/dist/src/mcp/utils/permissions.d.ts +76 -0
- package/dist/src/mcp/utils/permissions.js +208 -0
- package/dist/src/mcp/utils/permissions.js.map +1 -0
- package/dist/src/mcp/utils/prompt-injection.d.ts +20 -0
- package/dist/src/mcp/utils/prompt-injection.js +70 -0
- package/dist/src/mcp/utils/prompt-injection.js.map +1 -0
- package/dist/src/mcp/utils/quality.d.ts +19 -0
- package/dist/src/mcp/utils/quality.js +125 -0
- package/dist/src/mcp/utils/quality.js.map +1 -0
- package/dist/src/mcp/utils/rules-engine.d.ts +78 -0
- package/dist/src/mcp/utils/rules-engine.js +232 -0
- package/dist/src/mcp/utils/rules-engine.js.map +1 -0
- package/dist/src/mcp/utils/security.d.ts +10 -0
- package/dist/src/mcp/utils/security.js +61 -0
- package/dist/src/mcp/utils/security.js.map +1 -0
- package/dist/src/mcp/utils/silent-router.d.ts +49 -0
- package/dist/src/mcp/utils/silent-router.js +155 -0
- package/dist/src/mcp/utils/silent-router.js.map +1 -0
- package/dist/src/mcp/utils/storage.d.ts +61 -0
- package/dist/src/mcp/utils/storage.js +400 -0
- package/dist/src/mcp/utils/storage.js.map +1 -0
- package/dist/src/mcp/utils/telemetry-streamer.d.ts +133 -0
- package/dist/src/mcp/utils/telemetry-streamer.js +397 -0
- package/dist/src/mcp/utils/telemetry-streamer.js.map +1 -0
- package/dist/src/mcp/utils/types.d.ts +27 -0
- package/dist/src/mcp/utils/types.js +17 -0
- package/dist/src/mcp/utils/types.js.map +1 -0
- package/dist/src/mcp/utils/web-config.d.ts +31 -0
- package/dist/src/mcp/utils/web-config.js +89 -0
- package/dist/src/mcp/utils/web-config.js.map +1 -0
- package/dist/src/mcp/utils/workspace.d.ts +98 -0
- package/dist/src/mcp/utils/workspace.js +201 -0
- package/dist/src/mcp/utils/workspace.js.map +1 -0
- package/dist/src/mcp/utils/zod-to-mcp.d.ts +10 -0
- package/dist/src/mcp/utils/zod-to-mcp.js +80 -0
- package/dist/src/mcp/utils/zod-to-mcp.js.map +1 -0
- package/dist/src/shared/audit.d.ts +1 -0
- package/dist/src/shared/audit.js +2 -0
- package/dist/src/shared/audit.js.map +1 -0
- package/dist/src/shared/constants.d.ts +1 -0
- package/dist/src/shared/constants.js +2 -0
- package/dist/src/shared/constants.js.map +1 -0
- package/dist/src/shared/errors.d.ts +1 -0
- package/dist/src/shared/errors.js +2 -0
- package/dist/src/shared/errors.js.map +1 -0
- package/dist/src/shared/fs.d.ts +1 -0
- package/dist/src/shared/fs.js +2 -0
- package/dist/src/shared/fs.js.map +1 -0
- package/dist/src/shared/lock.d.ts +1 -0
- package/dist/src/shared/lock.js +2 -0
- package/dist/src/shared/lock.js.map +1 -0
- package/dist/src/shared/logger.d.ts +1 -0
- package/dist/src/shared/logger.js +2 -0
- package/dist/src/shared/logger.js.map +1 -0
- package/dist/src/shared/pii.d.ts +1 -0
- package/dist/src/shared/pii.js +2 -0
- package/dist/src/shared/pii.js.map +1 -0
- package/dist/src/shared/retention.d.ts +1 -0
- package/dist/src/shared/retention.js +2 -0
- package/dist/src/shared/retention.js.map +1 -0
- package/dist/src/shared/storage.d.ts +176 -0
- package/dist/src/shared/storage.js +346 -0
- package/dist/src/shared/storage.js.map +1 -0
- package/dist/src/shared/string.d.ts +1 -0
- package/dist/src/shared/string.js +2 -0
- package/dist/src/shared/string.js.map +1 -0
- package/dist/src/shared/types.d.ts +1 -0
- package/dist/src/shared/types.js +2 -0
- package/dist/src/shared/types.js.map +1 -0
- package/package.json +7 -10
package/README.md
CHANGED
|
@@ -4,9 +4,9 @@
|
|
|
4
4
|
[](https://www.npmjs.com/package/atabey-mcp)
|
|
5
5
|
[](https://www.gnu.org/licenses/agpl-3.0)
|
|
6
6
|
[](https://modelcontextprotocol.io)
|
|
7
|
-
[](https://github.com/ysf-bkr/atabey)
|
|
8
8
|
|
|
9
|
-
**Atabey MCP** is the MCP (Model Context Protocol) server component of the Agent Atabey framework. It provides
|
|
9
|
+
**Atabey MCP** is the MCP (Model Context Protocol) server component of the Agent Atabey framework. It provides 39 MCP tools, a multi-layer governance pipeline (validation, PII masking, discipline, loop detection, FinOps, CRUD governance, risk gating, and more), vector memory, risk engine, loop detection, FinOps budget management, auto-rollback, prompt injection protection, and a real-time WebSocket dashboard.
|
|
10
10
|
|
|
11
11
|
---
|
|
12
12
|
|
|
@@ -14,10 +14,10 @@
|
|
|
14
14
|
|
|
15
15
|
| Capability | Description |
|
|
16
16
|
|-----------|-------------|
|
|
17
|
-
| **MCP Tools** |
|
|
17
|
+
| **MCP Tools** | 39 tools across 8 categories: file system, search, messaging, governance, memory, quality, network, orchestration |
|
|
18
18
|
| **Governance Pipeline** | Multi-layer pre/post execution validation: PII masking, risk gate, discipline, loop detection, FinOps, license scan, CRUD governance, and more |
|
|
19
19
|
| **Memory** | Vector memory with TF-IDF/OpenAI embeddings, project memory, knowledge base |
|
|
20
|
-
| **Dashboard** | Real-time WebSocket dashboard with
|
|
20
|
+
| **Dashboard** | Real-time WebSocket dashboard with extensive live modules (Agent, Hermes, Approvals, Quality, Compliance, FinOps, Privacy, Loop Detection, etc.) |
|
|
21
21
|
| **Auth** | Bearer token authentication for HTTP/SSE mode |
|
|
22
22
|
| **Multi-Transport** | Stdio (per-developer) + HTTP/SSE (team server) |
|
|
23
23
|
|
|
@@ -42,7 +42,7 @@ MCP_TRANSPORT=http MCP_PORT=5858 atabey-mcp
|
|
|
42
42
|
|
|
43
43
|
---
|
|
44
44
|
|
|
45
|
-
## 🛠️
|
|
45
|
+
## 🛠️ 39 MCP Tools
|
|
46
46
|
|
|
47
47
|
### File System (6)
|
|
48
48
|
| Tool | Description |
|
package/bin/cli.js
CHANGED
|
@@ -66,8 +66,8 @@ if (nodeMajor < 18) {
|
|
|
66
66
|
|
|
67
67
|
// ─── Start MCP Server ─────────────────────────────────────────────
|
|
68
68
|
const candidates = [
|
|
69
|
-
join(__dirname, "../dist/mcp/index.js"),
|
|
70
69
|
join(__dirname, "../dist/atabey-mcp/src/mcp/index.js"),
|
|
70
|
+
join(__dirname, "../dist/mcp/index.js"),
|
|
71
71
|
];
|
|
72
72
|
|
|
73
73
|
let serverPath = "";
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="UTF-8" />
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
6
|
+
<title>Hermes Control Center | Agent Atabey</title>
|
|
7
|
+
<link rel="preconnect" href="https://fonts.googleapis.com" />
|
|
8
|
+
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
|
|
9
|
+
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500&display=swap" rel="stylesheet" />
|
|
10
|
+
</head>
|
|
11
|
+
<body>
|
|
12
|
+
<div id="root"></div>
|
|
13
|
+
<script type="module" src="/src/main.tsx"></script>
|
|
14
|
+
</body>
|
|
15
|
+
</html>
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@atabey/dashboard-ui",
|
|
3
|
+
"version": "0.0.26",
|
|
4
|
+
"private": false,
|
|
5
|
+
"publishConfig": {
|
|
6
|
+
"access": "public"
|
|
7
|
+
},
|
|
8
|
+
"type": "module",
|
|
9
|
+
"scripts": {
|
|
10
|
+
"dev": "vite",
|
|
11
|
+
"build": "vite build",
|
|
12
|
+
"preview": "vite preview",
|
|
13
|
+
"test": "node -e \"process.exit(0)\""
|
|
14
|
+
},
|
|
15
|
+
"dependencies": {
|
|
16
|
+
"react": "^19.0.0",
|
|
17
|
+
"react-dom": "^19.0.0",
|
|
18
|
+
"lucide-react": "^0.471.0",
|
|
19
|
+
"framer-motion": "^12.0.0",
|
|
20
|
+
"@tanstack/react-query": "^5.64.0"
|
|
21
|
+
},
|
|
22
|
+
"devDependencies": {
|
|
23
|
+
"@types/react": "^19.0.0",
|
|
24
|
+
"@types/react-dom": "^19.0.0",
|
|
25
|
+
"@vitejs/plugin-react": "^4.3.4",
|
|
26
|
+
"vite": "^6.0.7",
|
|
27
|
+
"typescript": "^5.9.3"
|
|
28
|
+
}
|
|
29
|
+
}
|
|
@@ -0,0 +1,352 @@
|
|
|
1
|
+
import {
|
|
2
|
+
Activity,
|
|
3
|
+
AlertTriangle,
|
|
4
|
+
Ban,
|
|
5
|
+
BarChart3,
|
|
6
|
+
BookOpen,
|
|
7
|
+
Bot,
|
|
8
|
+
Brain,
|
|
9
|
+
CheckCircle,
|
|
10
|
+
Cpu,
|
|
11
|
+
DollarSign,
|
|
12
|
+
ExternalLink,
|
|
13
|
+
GitBranch,
|
|
14
|
+
Github,
|
|
15
|
+
LayoutDashboard,
|
|
16
|
+
Lock,
|
|
17
|
+
Menu,
|
|
18
|
+
MessageSquare,
|
|
19
|
+
Moon,
|
|
20
|
+
Plug,
|
|
21
|
+
ScrollText,
|
|
22
|
+
Server,
|
|
23
|
+
ShieldCheck,
|
|
24
|
+
Sun,
|
|
25
|
+
Unlock,
|
|
26
|
+
Wifi,
|
|
27
|
+
X,
|
|
28
|
+
} from "lucide-react";
|
|
29
|
+
import { useEffect, useState } from "react";
|
|
30
|
+
import { AdapterSkillsPanel } from "./components/AdapterSkillsPanel";
|
|
31
|
+
import { AgentMonitor } from "./components/AgentMonitor";
|
|
32
|
+
import { ApprovalCenter } from "./components/ApprovalCenter";
|
|
33
|
+
import { CompliancePanel } from "./components/CompliancePanel";
|
|
34
|
+
import { DisciplinePanel } from "./components/DisciplinePanel";
|
|
35
|
+
import { ErrorTracker } from "./components/ErrorTracker";
|
|
36
|
+
import { FinOpsPanel } from "./components/FinOpsPanel";
|
|
37
|
+
import { HermesBrokerView } from "./components/HermesBrokerView";
|
|
38
|
+
import { HermesStats } from "./components/HermesStats";
|
|
39
|
+
import { LicensePanel } from "./components/LicensePanel";
|
|
40
|
+
import { LogViewer } from "./components/LogViewer";
|
|
41
|
+
import { LoopDetectorPanel } from "./components/LoopDetectorPanel";
|
|
42
|
+
import { MCPSetupPanel } from "./components/MCPSetupPanel";
|
|
43
|
+
import { MemoryInsights } from "./components/MemoryInsights";
|
|
44
|
+
import { PlanViewer } from "./components/PlanViewer";
|
|
45
|
+
import { PrivacyPanel } from "./components/PrivacyPanel";
|
|
46
|
+
import { QualityPanel } from "./components/QualityPanel";
|
|
47
|
+
import { TelemetryPanel } from "./components/TelemetryPanel";
|
|
48
|
+
import { TokenEconomyPanel } from "./components/TokenEconomyPanel";
|
|
49
|
+
import { useApi } from "./hooks/useApi";
|
|
50
|
+
import { useWS } from "./hooks/useWS";
|
|
51
|
+
import { css } from "./styles";
|
|
52
|
+
|
|
53
|
+
interface AgentInfo {
|
|
54
|
+
name: string;
|
|
55
|
+
state: string;
|
|
56
|
+
task: string;
|
|
57
|
+
last_updated: string;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
interface HermesStatsInfo {
|
|
61
|
+
total: number;
|
|
62
|
+
pending: number;
|
|
63
|
+
byCategory: Record<string, number>;
|
|
64
|
+
byStatus: Record<string, number>;
|
|
65
|
+
lastMessage: unknown;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
interface ApprovalInfo {
|
|
69
|
+
id: string;
|
|
70
|
+
traceId: string;
|
|
71
|
+
description: string;
|
|
72
|
+
status: string;
|
|
73
|
+
timestamp: string;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
interface ComplianceInfo {
|
|
77
|
+
summary: {
|
|
78
|
+
totalFiles: number;
|
|
79
|
+
totalViolations: number;
|
|
80
|
+
byType: Record<string, number>;
|
|
81
|
+
};
|
|
82
|
+
violations: unknown[];
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
const TABS = [
|
|
86
|
+
{ id: "dashboard", label: "Overview", Component: null, desc: "Governance Overview", icon: LayoutDashboard },
|
|
87
|
+
{ id: "agents", label: "Specialists", Component: AgentMonitor, desc: "13 Governed Specialists", icon: Bot },
|
|
88
|
+
{ id: "hermes", label: "Hermes", Component: HermesStats, desc: "Message Queue Stats", icon: BarChart3 },
|
|
89
|
+
{ id: "messages", label: "Audit Trail", Component: HermesBrokerView, desc: "Hermes Message Queue", icon: MessageSquare },
|
|
90
|
+
{ id: "approvals", label: "HITL Gates", Component: ApprovalCenter, desc: "Human-in-the-Loop Gates", icon: ShieldCheck },
|
|
91
|
+
{ id: "tasks", label: "Tasks", Component: PlanViewer, desc: "Task Planning & DAG", icon: GitBranch },
|
|
92
|
+
{ id: "logs", label: "Execution", Component: LogViewer, desc: "Specialist Execution Logs", icon: ScrollText },
|
|
93
|
+
{ id: "quality", label: "Quality", Component: QualityPanel, desc: "Code Quality Analysis", icon: Activity },
|
|
94
|
+
{ id: "errors", label: "Exceptions", Component: ErrorTracker, desc: "Policy & Audit Exceptions", icon: AlertTriangle },
|
|
95
|
+
{ id: "memory", label: "Memory", Component: MemoryInsights, desc: "Vector Memory Search", icon: Brain },
|
|
96
|
+
{ id: "compliance", label: "Compliance", Component: CompliancePanel, desc: "Quality Gate Status", icon: CheckCircle },
|
|
97
|
+
{ id: "finops", label: "FinOps", Component: FinOpsPanel, desc: "Budget & Cost Management", icon: DollarSign },
|
|
98
|
+
{ id: "loop", label: "Loop Detector", Component: LoopDetectorPanel, desc: "Loop Prevention & Cooldowns", icon: Ban },
|
|
99
|
+
{ id: "license", label: "License", Component: LicensePanel, desc: "SPDX & Copyleft Scanner", icon: BookOpen },
|
|
100
|
+
{ id: "telemetry", label: "Telemetry", Component: TelemetryPanel, desc: "Edge-to-Cloud Streaming", icon: Wifi },
|
|
101
|
+
{ id: "privacy", label: "GDPR / KVKK", Component: PrivacyPanel, desc: "GDPR & KVKK Compliance", icon: ShieldCheck },
|
|
102
|
+
{ id: "discipline", label: "Discipline", Component: DisciplinePanel, desc: "AI Discipline & Rules", icon: Ban },
|
|
103
|
+
{ id: "mcp", label: "MCP Setup", Component: MCPSetupPanel, desc: "MCP Configuration", icon: Server },
|
|
104
|
+
{ id: "adapters", label: "Adapters", Component: AdapterSkillsPanel, desc: "Adapter-Skill Mapping", icon: Plug },
|
|
105
|
+
{ id: "tokens", label: "Token Econ", Component: TokenEconomyPanel, desc: "Token Economy & Cost", icon: Cpu },
|
|
106
|
+
];
|
|
107
|
+
|
|
108
|
+
const TAB_ICONS: Record<string, typeof Bot> = {};
|
|
109
|
+
TABS.forEach(t => { TAB_ICONS[t.id] = t.icon; });
|
|
110
|
+
|
|
111
|
+
interface DashboardOverviewProps {
|
|
112
|
+
onNavigate: (tabId: string) => void;
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
const ALL_AGENT_NAMES = [
|
|
116
|
+
"manager", "security", "architect", "backend", "frontend", "quality",
|
|
117
|
+
"database", "analyst", "mobile", "native", "devops", "explorer", "git"
|
|
118
|
+
];
|
|
119
|
+
|
|
120
|
+
function DashboardOverview({ onNavigate }: DashboardOverviewProps) {
|
|
121
|
+
const { data: agents } = useApi<AgentInfo[]>("/agents", 5000);
|
|
122
|
+
const { data: queueStats } = useApi<HermesStatsInfo>("/hermes/stats", 5000);
|
|
123
|
+
const { data: approvals } = useApi<ApprovalInfo[]>("/approvals", 5000);
|
|
124
|
+
const { data: compliance } = useApi<ComplianceInfo>("/compliance?path=src", 10000);
|
|
125
|
+
|
|
126
|
+
const activeAgentsCount = Array.isArray(agents) ? agents.filter(a => a.state !== "READY" && a.state !== "Idle").length : 0;
|
|
127
|
+
const totalAgentsCount = ALL_AGENT_NAMES.length;
|
|
128
|
+
const pendingMessages = queueStats?.pending ?? 0;
|
|
129
|
+
const pendingApprovalsCount = Array.isArray(approvals) ? approvals.filter(a => a.status === "PENDING").length : 0;
|
|
130
|
+
const totalViolations = compliance?.summary?.totalViolations ?? 0;
|
|
131
|
+
|
|
132
|
+
const { data: privacyStats } = useApi<{ stats: { total: number; byAction: Record<string, number>; byCategory: Record<string, number> } }>("/audit", 10000);
|
|
133
|
+
const piiMaskedCount = privacyStats?.stats?.byAction?.["MASK_PII"] || privacyStats?.stats?.byAction?.["PII_MASKED"] || 0;
|
|
134
|
+
const piiDetectedCount = privacyStats?.stats?.byAction?.["PII_DETECTED"] || 0;
|
|
135
|
+
const restrictedCount = privacyStats?.stats?.byCategory?.["RESTRICTED"] || 0;
|
|
136
|
+
|
|
137
|
+
const { data: metricsData } = useApi<{ totalToolCalls: number; totalEstimatedTokens: number; totalEstimatedCost: number }>("/metrics", 10000);
|
|
138
|
+
const totalToolCalls = metricsData?.totalToolCalls ?? 0;
|
|
139
|
+
const totalEstimatedTokens = metricsData?.totalEstimatedTokens ?? 0;
|
|
140
|
+
const totalEstimatedCost = metricsData?.totalEstimatedCost ?? 0;
|
|
141
|
+
|
|
142
|
+
const { data: mcpSessions } = useApi<{ total: number }>("/mcp/sessions", 10000);
|
|
143
|
+
const activeSessions = mcpSessions?.total ?? 0;
|
|
144
|
+
|
|
145
|
+
// Discipline stats
|
|
146
|
+
const { data: disciplineData } = useApi<Record<string, { violations: number; totalCalls: number; inCooldown: boolean }>>("/discipline", 10000);
|
|
147
|
+
const totalViolationsCount = Object.values(disciplineData || {}).reduce((s: number, v: Record<string, unknown>) => s + ((v.violations as number) || 0), 0);
|
|
148
|
+
const inCooldown = Object.values(disciplineData || {}).some((v: Record<string, unknown>) => v.inCooldown);
|
|
149
|
+
|
|
150
|
+
return (
|
|
151
|
+
<div className="dashboard-overview animate-fade-in">
|
|
152
|
+
<div className="hero-banner">
|
|
153
|
+
<div className="hero-title-group">
|
|
154
|
+
<h1>Governance Plane</h1>
|
|
155
|
+
<p style={{ marginTop: "0.25rem", fontSize: "0.85rem", opacity: 0.8 }}>
|
|
156
|
+
Governance Engine: <span style={{ color: "var(--color-success)", fontWeight: 600 }}>Active</span> | Policy Target: <span style={{ color: "var(--color-highlight)", fontWeight: 600 }}>Phase 0 Enforced</span>
|
|
157
|
+
</p>
|
|
158
|
+
</div>
|
|
159
|
+
<div className="hero-meta">
|
|
160
|
+
<span className="hero-badge">v0.0.23</span>
|
|
161
|
+
</div>
|
|
162
|
+
</div>
|
|
163
|
+
|
|
164
|
+
<div style={{ marginBottom: "1.5rem" }}>
|
|
165
|
+
<h3 style={{ fontSize: "0.8rem", textTransform: "uppercase", color: "var(--color-text-secondary)", letterSpacing: "0.08em", marginBottom: "0.75rem", borderLeft: "3px solid var(--color-accent-primary)", paddingLeft: "8px", fontWeight: 700 }}>
|
|
166
|
+
Active Session & Specialist Status
|
|
167
|
+
</h3>
|
|
168
|
+
<div className="quick-stats-grid">
|
|
169
|
+
<div className="stat-card clickable" onClick={() => onNavigate("agents")}>
|
|
170
|
+
<div className="stat-card-header"><Bot size={18} className="stat-icon" /><span className="stat-title">Specialists</span></div>
|
|
171
|
+
<div className="stat-card-value">{activeAgentsCount} / {totalAgentsCount}</div>
|
|
172
|
+
<div className="stat-card-desc">Governed specialist nodes active</div>
|
|
173
|
+
</div>
|
|
174
|
+
|
|
175
|
+
<div className="stat-card clickable" onClick={() => onNavigate("hermes")}>
|
|
176
|
+
<div className="stat-card-header"><BarChart3 size={18} className="stat-icon" /><span className="stat-title">Hermes Queue</span></div>
|
|
177
|
+
<div className="stat-card-value">{pendingMessages}</div>
|
|
178
|
+
<div className="stat-card-desc">Pending messages in transit</div>
|
|
179
|
+
</div>
|
|
180
|
+
|
|
181
|
+
<div className="stat-card clickable" onClick={() => onNavigate("approvals")} style={{
|
|
182
|
+
borderColor: pendingApprovalsCount > 0 ? "var(--color-accent-primary)" : undefined,
|
|
183
|
+
background: pendingApprovalsCount > 0 ? "var(--color-accent-glow)" : undefined
|
|
184
|
+
}}>
|
|
185
|
+
<div className="stat-card-header"><ShieldCheck size={18} className="stat-icon" /><span className="stat-title">HITL Gates</span></div>
|
|
186
|
+
<div className="stat-card-value" style={{ color: pendingApprovalsCount > 0 ? "var(--color-accent-primary)" : undefined }}>{pendingApprovalsCount}</div>
|
|
187
|
+
<div className="stat-card-desc">{pendingApprovalsCount > 0 ? "Manual overrides pending" : "All gates clear"}</div>
|
|
188
|
+
</div>
|
|
189
|
+
|
|
190
|
+
<div className="stat-card clickable" onClick={() => onNavigate("mcp")}>
|
|
191
|
+
<div className="stat-card-header"><Server size={18} style={{ color: "var(--color-accent-primary)" }} /><span className="stat-title">MCP Server</span></div>
|
|
192
|
+
<div className="stat-card-value" style={{ color: "var(--color-accent-primary)", fontSize: "1.1rem" }}>{activeSessions > 0 ? `${activeSessions} session(s)` : "Ready"}</div>
|
|
193
|
+
<div className="stat-card-desc">{activeSessions > 0 ? "AI clients connected" : "Waiting for AI clients"}</div>
|
|
194
|
+
</div>
|
|
195
|
+
</div>
|
|
196
|
+
</div>
|
|
197
|
+
|
|
198
|
+
<div style={{ marginBottom: "2rem" }}>
|
|
199
|
+
<h3 style={{ fontSize: "0.8rem", textTransform: "uppercase", color: "var(--color-text-secondary)", letterSpacing: "0.08em", marginBottom: "0.75rem", borderLeft: "3px solid var(--color-accent-primary)", paddingLeft: "8px", fontWeight: 700 }}>
|
|
200
|
+
AI Policy & Governance Gates
|
|
201
|
+
</h3>
|
|
202
|
+
<div className="quick-stats-grid">
|
|
203
|
+
<div className="stat-card clickable" onClick={() => onNavigate("compliance")}>
|
|
204
|
+
<div className="stat-card-header"><CheckCircle size={18} className="stat-icon" /><span className="stat-title">Gate Auditing</span></div>
|
|
205
|
+
<div className="stat-card-value" style={{ color: totalViolations > 0 ? "var(--color-warning)" : undefined }}>{totalViolations}</div>
|
|
206
|
+
<div className="stat-card-desc">Quality Gate violations</div>
|
|
207
|
+
</div>
|
|
208
|
+
|
|
209
|
+
<div className="stat-card clickable" onClick={() => onNavigate("privacy")} style={{ borderColor: piiDetectedCount > 0 ? "var(--color-accent-primary)" : undefined }}>
|
|
210
|
+
<div className="stat-card-header"><ShieldCheck size={18} style={{ color: "var(--color-accent-primary)" }} /><span className="stat-title">GDPR / KVKK</span></div>
|
|
211
|
+
<div className="stat-card-value" style={{ color: "var(--color-accent-primary)", fontSize: "1.1rem" }}>{piiMaskedCount > 0 ? `${piiMaskedCount} masked` : "Active"}</div>
|
|
212
|
+
<div className="stat-card-desc">{piiDetectedCount > 0 ? `${piiDetectedCount} PII · ${restrictedCount} restricted` : "PII masking active"}</div>
|
|
213
|
+
</div>
|
|
214
|
+
|
|
215
|
+
<div className="stat-card clickable" onClick={() => onNavigate("discipline")} style={{ borderColor: inCooldown ? "var(--color-warning)" : undefined }}>
|
|
216
|
+
<div className="stat-card-header"><Ban size={18} style={{ color: totalViolationsCount > 0 ? "var(--color-error)" : "var(--color-success)" }} /><span className="stat-title">Discipline</span></div>
|
|
217
|
+
<div className="stat-card-value" style={{ color: totalViolationsCount > 0 ? "var(--color-error)" : "var(--color-success)", fontSize: "1.1rem" }}>
|
|
218
|
+
{totalViolationsCount > 0 ? `${totalViolationsCount} violations` : "All Clean"}
|
|
219
|
+
</div>
|
|
220
|
+
<div className="stat-card-desc">{inCooldown ? "Agent(s) in cooldown" : "All agents compliant"}</div>
|
|
221
|
+
</div>
|
|
222
|
+
|
|
223
|
+
<div className="stat-card clickable" onClick={() => onNavigate("tokens")} style={{ borderColor: totalEstimatedCost > 0.1 ? "var(--color-warning)" : undefined }}>
|
|
224
|
+
<div className="stat-card-header"><Cpu size={18} style={{ color: "var(--color-accent-muted)" }} /><span className="stat-title">Token Economy</span></div>
|
|
225
|
+
<div className="stat-card-value" style={{ color: "var(--color-accent-muted)", fontSize: "1.1rem" }}>{totalToolCalls > 0 ? `${totalToolCalls} calls` : "Active"}</div>
|
|
226
|
+
<div className="stat-card-desc">{totalEstimatedTokens > 0 ? `${(totalEstimatedTokens / 1000).toFixed(1)}K tokens · ~$${totalEstimatedCost.toFixed(2)}` : "Tracking tool call metrics"}</div>
|
|
227
|
+
</div>
|
|
228
|
+
</div>
|
|
229
|
+
</div>
|
|
230
|
+
|
|
231
|
+
<div className="overview-sections-layout">
|
|
232
|
+
<div className="overview-left-column">
|
|
233
|
+
<AgentMonitor />
|
|
234
|
+
<ApprovalCenter />
|
|
235
|
+
</div>
|
|
236
|
+
<div className="overview-right-column">
|
|
237
|
+
<HermesStats />
|
|
238
|
+
<LogViewer />
|
|
239
|
+
</div>
|
|
240
|
+
</div>
|
|
241
|
+
</div>
|
|
242
|
+
);
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
export default function App() {
|
|
246
|
+
const [activeTab, setActiveTab] = useState("dashboard");
|
|
247
|
+
const [sidebarOpen, setSidebarOpen] = useState(false);
|
|
248
|
+
const [theme, setTheme] = useState<"dark" | "light">(() => {
|
|
249
|
+
const saved = localStorage.getItem("atabey-theme");
|
|
250
|
+
return (saved as "dark" | "light") || "dark";
|
|
251
|
+
});
|
|
252
|
+
const [authToken, setAuthTokenState] = useState(() => localStorage.getItem("atabey-auth-token") || "");
|
|
253
|
+
const saveAuthToken = (val: string) => {
|
|
254
|
+
localStorage.setItem("atabey-auth-token", val);
|
|
255
|
+
setAuthTokenState(val);
|
|
256
|
+
};
|
|
257
|
+
const wsConnected = useWS();
|
|
258
|
+
|
|
259
|
+
useEffect(() => {
|
|
260
|
+
document.documentElement.classList.remove("theme-dark", "theme-light");
|
|
261
|
+
document.documentElement.classList.add(`theme-${theme}`);
|
|
262
|
+
}, [theme]);
|
|
263
|
+
|
|
264
|
+
const toggleTheme = () => {
|
|
265
|
+
const next = theme === "dark" ? "light" : "dark";
|
|
266
|
+
setTheme(next);
|
|
267
|
+
localStorage.setItem("atabey-theme", next);
|
|
268
|
+
};
|
|
269
|
+
|
|
270
|
+
const activeTabObj = TABS.find(t => t.id === activeTab) || TABS[0];
|
|
271
|
+
const ActiveComponent = activeTabObj.Component;
|
|
272
|
+
|
|
273
|
+
return (
|
|
274
|
+
<>
|
|
275
|
+
<style>{css}</style>
|
|
276
|
+
<div className={`sidebar-overlay ${sidebarOpen ? "open" : ""}`} onClick={() => setSidebarOpen(false)} />
|
|
277
|
+
<div className="app-shell">
|
|
278
|
+
<aside className={`sidebar ${sidebarOpen ? "open" : ""}`}>
|
|
279
|
+
<div className="sidebar-header"><span className="sidebar-logo">[ATABEY]</span></div>
|
|
280
|
+
<nav className="sidebar-nav">
|
|
281
|
+
{TABS.map(t => {
|
|
282
|
+
const Icon = t.icon;
|
|
283
|
+
return (
|
|
284
|
+
<button key={t.id} className={`sidebar-btn ${activeTab === t.id ? "active" : ""}`} onClick={() => { setActiveTab(t.id); setSidebarOpen(false); }} title={t.desc}>
|
|
285
|
+
<Icon /><span className="sidebar-label">{t.label}</span>
|
|
286
|
+
</button>
|
|
287
|
+
);
|
|
288
|
+
})}
|
|
289
|
+
</nav>
|
|
290
|
+
<div className="sidebar-footer">
|
|
291
|
+
<div className="ws-indicator">
|
|
292
|
+
<span className="ws-dot" style={{ background: wsConnected ? "var(--color-success)" : "var(--color-error)", boxShadow: wsConnected ? "0 0 6px var(--color-success)" : "none" }} />
|
|
293
|
+
{wsConnected ? "WS Live" : "WS Offline"}
|
|
294
|
+
</div>
|
|
295
|
+
<div style={{ marginTop: 6, opacity: 0.6 }}>Atabey Governance Engine v0.0.23</div>
|
|
296
|
+
</div>
|
|
297
|
+
</aside>
|
|
298
|
+
<div className="main-area">
|
|
299
|
+
<header className="main-header">
|
|
300
|
+
<div className="main-header-left">
|
|
301
|
+
<button className="menu-toggle" onClick={() => setSidebarOpen(!sidebarOpen)}>
|
|
302
|
+
{sidebarOpen ? <X /> : <Menu />}
|
|
303
|
+
</button>
|
|
304
|
+
<span style={{ display: "flex", alignItems: "center", gap: "0.5rem", fontWeight: 500, fontSize: "0.95rem" }}>
|
|
305
|
+
<span style={{ opacity: 0.85 }}>Hermes Control Center</span>
|
|
306
|
+
<span style={{ opacity: 0.4 }}>/</span>
|
|
307
|
+
<span style={{ color: "var(--color-accent-primary)", fontWeight: 600 }}>{activeTabObj.label}</span>
|
|
308
|
+
</span>
|
|
309
|
+
</div>
|
|
310
|
+
<div className="main-header-right">
|
|
311
|
+
<div className="auth-token-input-wrapper" style={{ position: "relative" }}>
|
|
312
|
+
{authToken ? (
|
|
313
|
+
<Lock size={12} style={{ position: "absolute", left: "6px", top: "50%", transform: "translateY(-50%)", color: "var(--color-success)" }} />
|
|
314
|
+
) : (
|
|
315
|
+
<Unlock size={12} style={{ position: "absolute", left: "6px", top: "50%", transform: "translateY(-50%)", color: "var(--color-text-muted)" }} />
|
|
316
|
+
)}
|
|
317
|
+
<input
|
|
318
|
+
type="password"
|
|
319
|
+
placeholder="MCP Token..."
|
|
320
|
+
className="auth-token-input"
|
|
321
|
+
value={authToken}
|
|
322
|
+
onChange={(e) => saveAuthToken(e.target.value)}
|
|
323
|
+
title="Enter MCP_AUTH_TOKEN if configured"
|
|
324
|
+
/>
|
|
325
|
+
</div>
|
|
326
|
+
<button className="theme-toggle-btn" onClick={toggleTheme} title={`Switch to ${theme === "dark" ? "light" : "dark"} mode`} style={{ marginRight: "0.5rem" }}>
|
|
327
|
+
{theme === "dark" ? <Sun size={16} /> : <Moon size={16} />}
|
|
328
|
+
</button>
|
|
329
|
+
<span className="badge">{TABS.length - 1} modules</span>
|
|
330
|
+
<a href="/api/health" target="_blank" rel="noopener noreferrer" style={{ color: "var(--color-accent-primary)", display: "flex", alignItems: "center", gap: 4 }}>
|
|
331
|
+
<ExternalLink size={14} /> API
|
|
332
|
+
</a>
|
|
333
|
+
<a href="https://github.com/ysf-bkr/atabey" target="_blank" rel="noopener noreferrer" style={{ color: "var(--color-accent-primary)", display: "flex", alignItems: "center", gap: 4 }}>
|
|
334
|
+
<Github size={14} /> GitHub
|
|
335
|
+
</a>
|
|
336
|
+
</div>
|
|
337
|
+
</header>
|
|
338
|
+
<main className="main-content">
|
|
339
|
+
{activeTab === "dashboard" ? (
|
|
340
|
+
<DashboardOverview onNavigate={(tabId) => setActiveTab(tabId)} />
|
|
341
|
+
) : (
|
|
342
|
+
<div className="focused-view animate-fade-in">
|
|
343
|
+
{ActiveComponent && <ActiveComponent />}
|
|
344
|
+
</div>
|
|
345
|
+
)}
|
|
346
|
+
</main>
|
|
347
|
+
<footer className="main-footer">{TABS.length - 1} Modules Live · Port {window.location.port || "5858"}</footer>
|
|
348
|
+
</div>
|
|
349
|
+
</div>
|
|
350
|
+
</>
|
|
351
|
+
);
|
|
352
|
+
}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import { useEffect, useState } from "react";
|
|
2
|
+
import {
|
|
3
|
+
Plug,
|
|
4
|
+
Cpu,
|
|
5
|
+
Wrench,
|
|
6
|
+
Folder,
|
|
7
|
+
Edit,
|
|
8
|
+
RefreshCw,
|
|
9
|
+
Lock,
|
|
10
|
+
Check,
|
|
11
|
+
Search,
|
|
12
|
+
Brain
|
|
13
|
+
} from "lucide-react";
|
|
14
|
+
|
|
15
|
+
interface AdapterSkillSummary {
|
|
16
|
+
id: string;
|
|
17
|
+
skillCount: number;
|
|
18
|
+
toolsCount: number;
|
|
19
|
+
skills: string[];
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
export function AdapterSkillsPanel() {
|
|
23
|
+
const [adapters, setAdapters] = useState<AdapterSkillSummary[]>([]);
|
|
24
|
+
const [loading, setLoading] = useState(true);
|
|
25
|
+
|
|
26
|
+
useEffect(() => {
|
|
27
|
+
const fetchAdapters = () => {
|
|
28
|
+
fetch("/api/adapters/skills")
|
|
29
|
+
.then(r => r.json())
|
|
30
|
+
.then(d => {
|
|
31
|
+
if (d.success) setAdapters(d.data);
|
|
32
|
+
setLoading(false);
|
|
33
|
+
})
|
|
34
|
+
.catch(() => setLoading(false));
|
|
35
|
+
};
|
|
36
|
+
fetchAdapters();
|
|
37
|
+
const interval = setInterval(fetchAdapters, 15000);
|
|
38
|
+
return () => clearInterval(interval);
|
|
39
|
+
}, []);
|
|
40
|
+
|
|
41
|
+
const SKILL_ICONS: Record<string, React.ComponentType<{ size?: number; style?: React.CSSProperties }>> = {
|
|
42
|
+
file_system: Folder,
|
|
43
|
+
editing: Edit,
|
|
44
|
+
orchestration: RefreshCw,
|
|
45
|
+
governance: Lock,
|
|
46
|
+
quality: Check,
|
|
47
|
+
search: Search,
|
|
48
|
+
memory: Brain,
|
|
49
|
+
};
|
|
50
|
+
|
|
51
|
+
return (
|
|
52
|
+
<div className="card">
|
|
53
|
+
<div className="card-header">
|
|
54
|
+
<h2>
|
|
55
|
+
<Plug size={20} style={{ display: "inline-block", verticalAlign: "middle", marginRight: 8 }} />
|
|
56
|
+
Adapter Skills
|
|
57
|
+
</h2>
|
|
58
|
+
{!loading && <span className="badge">{adapters.length} adapters</span>}
|
|
59
|
+
</div>
|
|
60
|
+
|
|
61
|
+
{loading && <div className="empty-state">Loading adapter skills...</div>}
|
|
62
|
+
|
|
63
|
+
{!loading && (
|
|
64
|
+
<div className="adapter-list">
|
|
65
|
+
{adapters.map(adapter => {
|
|
66
|
+
return (
|
|
67
|
+
<div key={adapter.id} className="adapter-item">
|
|
68
|
+
<div className="adapter-header">
|
|
69
|
+
<span className="adapter-name">
|
|
70
|
+
<Cpu size={14} style={{ display: "inline-block", verticalAlign: "middle", marginRight: 6 }} />
|
|
71
|
+
{adapter.id}
|
|
72
|
+
</span>
|
|
73
|
+
<span className="adapter-meta">
|
|
74
|
+
<Wrench size={12} style={{ display: "inline-block", verticalAlign: "middle", marginRight: 4 }} />
|
|
75
|
+
{adapter.toolsCount} tools · {adapter.skillCount} skills
|
|
76
|
+
</span>
|
|
77
|
+
</div>
|
|
78
|
+
<div className="adapter-skills-grid">
|
|
79
|
+
{adapter.skills.map(skill => {
|
|
80
|
+
const IconComp = SKILL_ICONS[skill];
|
|
81
|
+
return (
|
|
82
|
+
<span key={skill} className="skill-badge" style={{ display: "inline-flex", alignItems: "center", gap: "4px" }}>
|
|
83
|
+
{IconComp ? (
|
|
84
|
+
<IconComp size={12} />
|
|
85
|
+
) : (
|
|
86
|
+
<span style={{ fontSize: "10px" }}>•</span>
|
|
87
|
+
)}
|
|
88
|
+
{skill.replace(/_/g, " ")}
|
|
89
|
+
</span>
|
|
90
|
+
);
|
|
91
|
+
})}
|
|
92
|
+
</div>
|
|
93
|
+
</div>
|
|
94
|
+
);
|
|
95
|
+
})}
|
|
96
|
+
</div>
|
|
97
|
+
)}
|
|
98
|
+
</div>
|
|
99
|
+
);
|
|
100
|
+
}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import { Bot, ChevronDown, ChevronUp } from "lucide-react";
|
|
2
|
+
import { useState } from "react";
|
|
3
|
+
import { useApi } from "../hooks/useApi";
|
|
4
|
+
import { useWS } from "../hooks/useWS";
|
|
5
|
+
|
|
6
|
+
interface Agent {
|
|
7
|
+
name: string; state: string; task: string; last_updated: string;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
const ALL_AGENT_NAMES = [
|
|
11
|
+
"manager",
|
|
12
|
+
"security",
|
|
13
|
+
"architect",
|
|
14
|
+
"backend",
|
|
15
|
+
"frontend",
|
|
16
|
+
"quality",
|
|
17
|
+
"database",
|
|
18
|
+
"analyst",
|
|
19
|
+
"mobile",
|
|
20
|
+
"native",
|
|
21
|
+
"devops",
|
|
22
|
+
"explorer",
|
|
23
|
+
"git"
|
|
24
|
+
];
|
|
25
|
+
|
|
26
|
+
export function AgentMonitor() {
|
|
27
|
+
const { data: initial, loading, error } = useApi<Agent[]>("/agents", 5000);
|
|
28
|
+
const [agents, setAgents] = useState<Agent[]>([]);
|
|
29
|
+
const [expanded, setExpanded] = useState<string | null>(null);
|
|
30
|
+
|
|
31
|
+
useWS({ handlers: { agent_update: (d) => {
|
|
32
|
+
const u = d as unknown as Agent;
|
|
33
|
+
if (u.name) setAgents(prev => {
|
|
34
|
+
const cleanName = u.name.replace("@", "");
|
|
35
|
+
const exists = prev.some(a => a.name.replace("@", "") === cleanName);
|
|
36
|
+
if (exists) {
|
|
37
|
+
return prev.map(a => a.name.replace("@", "") === cleanName ? { ...a, ...u } : a);
|
|
38
|
+
}
|
|
39
|
+
return [...prev, u];
|
|
40
|
+
});
|
|
41
|
+
}}});
|
|
42
|
+
|
|
43
|
+
const rawList = agents.length ? agents : (Array.isArray(initial) ? initial : []);
|
|
44
|
+
if (Array.isArray(initial) && agents.length === 0 && initial.length > 0) setAgents(initial);
|
|
45
|
+
|
|
46
|
+
// Merge database state with the full list of 13 corporate agents
|
|
47
|
+
const list = ALL_AGENT_NAMES.map(name => {
|
|
48
|
+
const existing = rawList.find(a => a.name.replace("@", "") === name);
|
|
49
|
+
if (existing) {
|
|
50
|
+
return {
|
|
51
|
+
...existing,
|
|
52
|
+
name: name
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
return {
|
|
56
|
+
name: name,
|
|
57
|
+
state: "READY",
|
|
58
|
+
task: "Idle",
|
|
59
|
+
last_updated: new Date().toISOString()
|
|
60
|
+
};
|
|
61
|
+
});
|
|
62
|
+
|
|
63
|
+
if (loading && !rawList.length) return <div className="card"><div className="card-header"><h2><Bot size={20} /> Governed Specialist Monitor</h2></div><div className="empty-state">Loading specialists...</div></div>;
|
|
64
|
+
if (error && !rawList.length) return <div className="card"><div className="card-header"><h2><Bot size={20} /> Governed Specialist Monitor</h2></div><div className="error">Error: {error}</div></div>;
|
|
65
|
+
|
|
66
|
+
return <div className="card">
|
|
67
|
+
<div className="card-header">
|
|
68
|
+
<h2><Bot size={20} /> Specialist Monitor</h2>
|
|
69
|
+
<span className="badge">{list.length} specialists</span>
|
|
70
|
+
</div>
|
|
71
|
+
<div className="agent-list-container">
|
|
72
|
+
<div className="agent-grid">
|
|
73
|
+
{list.map(a => {
|
|
74
|
+
const open = expanded === a.name;
|
|
75
|
+
const statusClass = a.state.toLowerCase();
|
|
76
|
+
return <div key={a.name} className={`agent-card ${open ? "expanded" : ""}`} onClick={() => setExpanded(open ? null : a.name)}>
|
|
77
|
+
<div className="agent-header">
|
|
78
|
+
<span className={`agent-dot ${statusClass}`} />
|
|
79
|
+
<span className="agent-name">@{a.name}</span>
|
|
80
|
+
<span className={`agent-state ${statusClass}`}>{a.state}</span>
|
|
81
|
+
{open ? <ChevronUp size={14} className="text-muted" /> : <ChevronDown size={14} className="text-muted" />}
|
|
82
|
+
</div>
|
|
83
|
+
<div className="detail-row"><span className="detail-label">Task:</span><span className="detail-value">{a.task || "Idle"}</span></div>
|
|
84
|
+
{open && <div className="detail-row"><span className="detail-label">Updated:</span><span className="detail-value">{new Date(a.last_updated).toLocaleString()}</span></div>}
|
|
85
|
+
</div>;
|
|
86
|
+
})}
|
|
87
|
+
</div>
|
|
88
|
+
</div>
|
|
89
|
+
</div>;
|
|
90
|
+
}
|